Source code for singlecellmultiomics.modularDemultiplexer.demultiplexModules.Hexamer

from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import DemultiplexingStrategy
from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import NonMultiplexable
from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import TaggedRecord
from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import TagDefinitions


# ask buys or annaa about it

[docs]class HexamerBaseDemultiplexer(DemultiplexingStrategy): def __init__( self, indexFileParser, illuminaIndicesAlias='illumina_merged_iPCR_RP', **kwargs): self.barcodeFileParser = None DemultiplexingStrategy.__init__(self) self.indexFileParser = indexFileParser self.illuminaIndicesAlias = illuminaIndicesAlias self.shortName = 'HEX' self.longName = 'HexamersDemux' self.autoDetectable = False self.hexLength = 6 self.description = 'Demultiplex as a bulk sample and add hexamer H0..H3 tags' self.barcodeSummary = 'Bulk, no cell barcodes' self.indexSummary = f'sequencing indices: {illuminaIndicesAlias}'
[docs] def demultiplex(self, records, library=None, **kwargs): global TagDefinitions try: h0 = records[0].sequence[:self.hexLength] h1 = records[0].qual[:self.hexLength] if len(records) > 1: h2 = records[1].sequence[:self.hexLength] h3 = records[1].qual[:self.hexLength] trs = [] for record in records: t = TaggedRecord( rawRecord=record, tagDefinitions=TagDefinitions, indexFileParser=self.indexFileParser, indexFileAlias=self.illuminaIndicesAlias, library=library) t.addTagByTag('H0', h0, isPhred=False) t.addTagByTag('H1', h1, isPhred=True) if len(records) > 1: t.addTagByTag('H2', h2, isPhred=False) t.addTagByTag('H3', h3, isPhred=True) trs.append( t.asFastq( record.sequence, record.plus, record.qual)) return trs except NonMultiplexable: raise except Exception as e: print(e)