Source code for velocyto.molitem

from typing import *
import velocyto as vcy
import numpy as np
from collections import defaultdict


[docs]def dictionary_union(d1: DefaultDict[Any, List], d2: DefaultDict[Any, List]) -> DefaultDict[Any, List]: """Set union (|) operation on default dicitonary Arguments --------- d1: defaultdict First default dict d2: defaultdict Second default dict Returns ------- A dictionary with the key the set union of the keys. If same key is present the entry will be combined using __add__ """ keys_set = set(d1) | set(d2)
return defaultdict(list, {k: d1[k] + d2[k] for k in keys_set})
[docs]def dictionary_intersect(d1: DefaultDict[Any, List], d2: DefaultDict[Any, List]) -> DefaultDict[Any, List]: """Set intersection (&) operation on default dicitonary Arguments --------- d1: defaultdict First default dict d2: defaultdict Second default dict Returns ------- A dictionary with the key the set intersection of the keys. If same key is present the entry will be combined using __add__ """ keys_set = set(d1) & set(d2)
return defaultdict(list, ((k, d1[k] + d2[k]) for k in keys_set))
[docs]class Molitem: """Object that represents a molecule in the counting pipeline""" __slots__ = ["mappings_record"] # , "final_report"] def __init__(self) -> None: self.mappings_record: DefaultDict[vcy.TranscriptModel, List[vcy.SegmentMatch]] = None # self.final_report: Tuple[int, int, int, int, int, int] = None
[docs] def add_mappings_record(self, mappings_record: DefaultDict[vcy.TranscriptModel, List[vcy.SegmentMatch]]) -> None: if self.mappings_record is None: self.mappings_record = mappings_record else:
self.mappings_record = dictionary_intersect(self.mappings_record, mappings_record)