|
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 |