Пример #1
0
 def update_gene_columns(df, allele_name, gene_name):
     for index, row in df.iterrows():
         for gene in ['v', 'j']:
             if NumpyHelper.is_nan_or_empty(
                     row[f"{gene}_{allele_name}"]
             ) and not NumpyHelper.is_nan_or_empty(
                     row[f"{gene}_{gene_name}"]):
                 df[f"{gene}_{allele_name}"][index] = row[
                     f"{gene}_{gene_name}"]
Пример #2
0
 def get_counts(self):
     counts = self.get_attribute("counts")
     if counts is not None:
         counts = np.array([
             int(count) if not NumpyHelper.is_nan_or_empty(count) else None
             for count in counts
         ])
     return counts
Пример #3
0
    def _make_sequence_object(self, row, load_implants: bool = False):

        fields = row.dtype.names

        implants = []
        if load_implants:
            keys = [
                key for key in row.dtype.names if key not in Repertoire.FIELDS
            ]
            for key in keys:
                value_dict = row[key]
                if value_dict:
                    try:
                        implants.append(
                            ImplantAnnotation(**ast.literal_eval(value_dict)))
                    except (SyntaxError, ValueError, TypeError) as e:
                        pass

        seq = ReceptorSequence(
            amino_acid_sequence=row["sequence_aas"]
            if "sequence_aas" in fields else None,
            nucleotide_sequence=row["sequences"]
            if "sequences" in fields else None,
            identifier=row["sequence_identifiers"]
            if "sequence_identifiers" in fields else None,
            metadata=SequenceMetadata(
                v_gene=row["v_genes"] if "v_genes" in fields else None,
                j_gene=row["j_genes"] if "j_genes" in fields else None,
                v_subgroup=row["v_subgroups"]
                if "v_subgroups" in fields else None,
                j_subgroup=row["j_subgroups"]
                if "j_subgroups" in fields else None,
                v_allele=row["v_alleles"] if "v_alleles" in fields else None,
                j_allele=row["j_alleles"] if "j_alleles" in fields else None,
                chain=row["chains"] if "chains" in fields else None,
                count=row["counts"] if "counts" in fields
                and not NumpyHelper.is_nan_or_empty(row['counts']) else None,
                region_type=row["region_types"]
                if "region_types" in fields else None,
                frame_type=row["frame_types"]
                if "frame_types" in fields else "IN",
                cell_id=row["cell_ids"] if "cell_ids" in fields else None,
                custom_params={
                    key: row[key] if key in fields else None
                    for key in set(self.fields) - set(Repertoire.FIELDS)
                }),
            annotation=SequenceAnnotation(implants=implants))

        return seq