Switch to side-by-side view

--- a
+++ b/singlecellmultiomics/modularDemultiplexer/demultiplexModules/scartrace.py
@@ -0,0 +1,91 @@
+from singlecellmultiomics.modularDemultiplexer.baseDemultiplexMethods import UmiBarcodeDemuxMethod, NonMultiplexable
+
+# ScarTrace
+
+
+class ScartraceR1(UmiBarcodeDemuxMethod):
+    def __init__(self, barcodeFileParser, **kwargs):
+        self.barcodeFileAlias = 'scartrace'
+        UmiBarcodeDemuxMethod.__init__(
+            self,
+            umiRead=0,
+            umiStart=0,
+            umiLength=0,
+            barcodeRead=0,
+            barcodeStart=0,
+            barcodeLength=8,
+            barcodeFileAlias=self.barcodeFileAlias,
+            barcodeFileParser=barcodeFileParser,
+            **kwargs)
+        self.shortName = 'SCARC8R1'
+        self.longName = 'Scartrace, CB: 8bp'
+        self.description = '384 well format. Scar amplicon demultiplexing, cell barcode in read 1'
+        self.autoDetectable = True
+
+
+
+
+class ScartraceR2(UmiBarcodeDemuxMethod):
+    def __init__(self, barcodeFileParser, **kwargs):
+        self.barcodeFileAlias = 'scartrace'
+        UmiBarcodeDemuxMethod.__init__(
+            self,
+            umiRead=0,
+            umiStart=0,
+            umiLength=0,
+            barcodeRead=1,
+            barcodeStart=0,
+            barcodeLength=8,
+            barcodeFileAlias=self.barcodeFileAlias,
+            barcodeFileParser=barcodeFileParser,
+            **kwargs)
+        self.shortName = 'SCARC8R2'
+        self.longName = 'Scartrace, CB: 8bp'
+        self.description = '384 well format. Scar amplicon demultiplexing, cell barcode in read 2'
+        self.autoDetectable = True
+
+    def demultiplex(self, records, **kwargs):
+
+        if kwargs.get(
+                'probe') and not records[0].sequence.startswith('CCTTGAACTTCTGGTTGTAG'):
+            raise NonMultiplexable
+
+        taggedRecords = UmiBarcodeDemuxMethod.demultiplex(
+                self, records, **kwargs)
+        return taggedRecords
+
+
+
+class ScartraceR2RP4(UmiBarcodeDemuxMethod):
+    def __init__(self, barcodeFileParser, **kwargs):
+        self.barcodeFileAlias = 'scartrace'
+        UmiBarcodeDemuxMethod.__init__(
+            self,
+            umiRead=0,
+            umiStart=0,
+            umiLength=0,
+            barcodeRead=1,
+            barcodeStart=0,
+            barcodeLength=8,
+            barcodeFileAlias=self.barcodeFileAlias,
+            barcodeFileParser=barcodeFileParser,
+
+            random_primer_end=False,
+            random_primer_read=0,
+            random_primer_length=4,
+
+            **kwargs)
+        self.shortName = 'SCARC8R2R4'
+        self.longName = 'Scartrace, CB: 8bp, with 4bp random sequence in read 1'
+        self.description = '384 well format. Scar amplicon demultiplexing, cell barcode in read , 4bp random sequence in R1'
+        self.autoDetectable = True
+
+    def demultiplex(self, records, **kwargs):
+
+        if kwargs.get(
+                'probe') and not records[0].sequence[4:].startswith('CCTTGAACTTCTGGTTGTAG'):
+            raise NonMultiplexable
+
+        taggedRecords = UmiBarcodeDemuxMethod.demultiplex(
+                self, records, **kwargs)
+        return taggedRecords