Source code for velocyto.segment_match

from typing import *
import velocyto as vcy


[docs]class SegmentMatch: __slots__ = ["segment", "feature", "is_spliced"] def __init__(self, segment: Tuple[int, int], feature: vcy.Feature, is_spliced: bool=False) -> None: self.segment = segment self.feature = feature self.is_spliced = is_spliced # this is really BAM_CREF_SKIP @property def maps_to_intron(self) -> bool: return self.feature.kind == 105 # ord("i") @property def maps_to_exon(self) -> bool: return self.feature.kind == 101 # ord("e") @property def skip_makes_sense(self) -> bool: """If the SKIP in the segment matches some extremity of the feature and therefore can be interpreted as a splice event """ if not self.is_spliced: return True # NOTE: maybe here I should raise an error because the property is not supposed to be called else: if abs(self.feature.start - self.segment[0]) <= vcy.SPLIC_INACUR or abs(self.feature.end - self.segment[1]) <= vcy.SPLIC_INACUR: return True else: return False def __repr__(self) -> str: txt = "<SegmentMatch " if self.maps_to_intron: txt += 'intron ' if self.maps_to_exon: txt += 'exon ' if self.is_spliced: txt += "spliced" txt += f"\nSegmentPosition:{self.segment[0]}-{self.segment[1]} ({self.segment[1]-self.segment[0]+1}bp)" txt += f"\n{self.feature}\n>" return txt