Source code for flyqma.annotation.labelers

import numpy as np


[docs]class AttributeLabeler: """ Assigns label to cell measurement data based on an existing attribute. Attributes: label (str) - name of label field to be added attribute (str) - existing cell attribute used to determine labels labeler (vectorized func) - callable that maps attribute values to labels """ def __init__(self, label, attribute, labels): """ Instantiate labeler. Args: label (str) - name of label attribute to be added attribute (str) - existing cell attribute used to determine labels labels (dict) - {attribute value: label value} pairs """ # store label and attribute field names self.label = label self.attribute = attribute # vectorize labeling function self.labeler = np.vectorize(labels.get) def __call__(self, data): """ Assign labels by adding <label> field to cell measurement data. Args: data (pd.DataFrame) - cells measurement data with <attribute> field """ return self.assign_labels(data)
[docs] def assign_labels(self, data): """ Assign labels by adding <label> field to cell measurement data. Args: data (pd.DataFrame) - cells measurement data with <attribute> field """ data[self.label] = self.labeler(data[self.attribute])
[docs]class CelltypeLabeler(AttributeLabeler): """ Assigns <celltype> to cell measurement data based on <genotype> attribute. Attributes: label (str) - name of label field to be added attribute (str) - existing cell attribute used to determine labels labeler (vectorized func) - callable that maps attribute values to labels """ def __init__(self, label='celltype', attribute='genotype', labels=None): """ Instantiate celltype labeler. Args: label (str) - name of label attribute to be added attribute (str) - existing cell attribute used to determine labels labels (dict) - {genotype value: label} pairs """ # use default genotype labels if labels is None: labels = {0:'m', 1:'h', 2:'w', -1:'none'} super().__init__(label, attribute, labels)