Switch to unified view

a b/singlecellmultiomics/modularDemultiplexer/demultiplexModules/BULK_ILLUMINA.py
1
from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import UmiBarcodeDemuxMethod
2
from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import DemultiplexingStrategy
3
from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import NonMultiplexable
4
from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import TaggedRecord
5
from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import TagDefinitions
6
import singlecellmultiomics.barcodeFileParser.barcodeFileParser as barcodeFileParser
7
8
9
class IlluminaBaseDemultiplexer(DemultiplexingStrategy):
10
11
    def __init__(
12
            self,
13
            indexFileParser,
14
            indexFileAlias='illumina_merged_ThruPlex48S_RP',
15
            **kwargs):
16
        self.barcodeFileParser = None
17
        DemultiplexingStrategy.__init__(self)
18
        self.indexFileParser = indexFileParser
19
20
        self.illuminaIndicesAlias = indexFileAlias
21
        self.shortName = 'ILLU'
22
        self.longName = 'IlluminaDemux'
23
        self.autoDetectable = False
24
        self.description = 'Demultiplex as a bulk sample'
25
        self.barcodeSummary = 'Bulk, no cell barcodes'
26
        self.indexSummary = f'sequencing indices: {indexFileAlias}'
27
28
    def demultiplex(self, records, library=None, reason=None, **kwargs):
29
        global TagDefinitions
30
31
        try:
32
            return [
33
                TaggedRecord(
34
                    rawRecord=record,
35
                    tagDefinitions=TagDefinitions,
36
                    indexFileParser=self.indexFileParser,
37
                    indexFileAlias=self.illuminaIndicesAlias,
38
                    library=library,
39
                    reason=reason) for record in records]
40
            #[TaggedRecord(rawRecord=record,tagDefinitions=TagDefinitions,indexFileParser=self.indexFileParser, indexFileAlias=self.illuminaIndicesAlias, library=library).asFastq(record.sequence, record.plus, record.qual) for record in records]
41
        except NonMultiplexable:
42
            raise
43
        except Exception as e:
44
            raise