Source code for immuneML.data_model.receptor.receptor_sequence.SequenceMetadata

# quality: gold
from immuneML.data_model.receptor.RegionType import RegionType
from immuneML.data_model.receptor.receptor_sequence.Chain import Chain
from immuneML.data_model.receptor.receptor_sequence.SequenceFrameType import SequenceFrameType


[docs]class SequenceMetadata: """ class modeling the existing knowledge about a receptor_sequence, should be stored according to IMGT gene nomenclature (human can be found `here <http://www.imgt.org/IMGTrepertoire/index.php?section=LocusGenes&repertoire=genetable&species=human&group=TRBV>`_): - v subgroup - v gene - v allele - j subgroup - j gene - j allele - chain - count - region_type (e.g. IMGT_CDR3, IMGT_CDR1, FULL_SEQUENCE) - frame_type (e.g. IN, OUT, STOP) - sample - custom params (dictionary with custom sequence information) """ def __init__(self, v_subgroup: str = None, v_gene: str = None, v_allele: str = None, j_subgroup: str = None, j_gene: str = None, j_allele: str = None, chain=None, count: int = None, frame_type: str = SequenceFrameType.IN.name, region_type: str = None, cell_id: str = None, custom_params: dict = None): self.v_subgroup = v_subgroup self.v_gene = v_gene self.v_allele = v_allele self.j_subgroup = j_subgroup self.j_gene = j_gene self.j_allele = j_allele self.chain = Chain.get_chain(chain) if chain and isinstance(chain, str) else chain if isinstance(chain, Chain) else None self.count = int(float(count)) if isinstance(count, str) else count self.frame_type = SequenceFrameType(frame_type) if frame_type and isinstance(frame_type, str) and frame_type != 'nan' else frame_type if isinstance(frame_type, SequenceFrameType) else None self.region_type = RegionType(region_type) if region_type and isinstance(region_type, str) and region_type != 'nan' else region_type if isinstance(region_type, RegionType) else None self.cell_id = cell_id self.custom_params = custom_params if custom_params is not None else {}
[docs] def get_attribute(self, name: str): """Returns the attribute value if attribute is present either directly or in custom_params, otherwise returns None""" if hasattr(self, name): return getattr(self, name) elif name in self.custom_params: return self.custom_params[name] else: return None