Esempio n. 1
0
    def test_3DEC_UmiBarcodeDemuxMethod_matching_barcode(self):

        barcode_folder = pkg_resources.resource_filename('singlecellmultiomics','modularDemultiplexer/barcodes/')
        barcode_parser = BarcodeParser(barcode_folder)

        r1 = FastqRecord(
          '@Cluster_s_1_1101_1000',
          'ATCACACACTATAGTCATTCAGGAGCAGGTTCTTCAGGTTCCCTGTAGTTGTGTGGTTTTGAGTGAGTTTTTTAAT',
          '+',
          'AAAAA#EEEEEEEEEEEAEEEEEEEAEEEEEEEEEEEEEEEEEE/EEEEEEEEEEEE/EEEEEEEEEEEEEEEEEE'
        )
        r2 = FastqRecord(
          '@Cluster_s_1_1101_1002',
          'ACCCCAGATCAACGTTGGACNTCNNCNTTNTNCTCNGCACCNNNNCNNNCTTATNCNNNANNNNNNNNNNTNNGN',
          '+',
          '6AAAAEEAEE/AEEEEEEEE#EE##<#6E#A#EEE#EAEEA####A###EE6EE#E###E##########E##A#'
        )
        demux = UmiBarcodeDemuxMethod(umiRead=0,
            umiStart=0,
            umiLength=3,
            barcodeRead=0,
            barcodeStart=3,
            barcodeLength=8,
            barcodeFileParser=barcode_parser,
            barcodeFileAlias='maya_384NLA',
            indexFileParser=None,
            indexFileAlias='illumina_merged_ThruPlex48S_RP',
            random_primer_read=None,
            random_primer_length=6)

        demultiplexed_record = demux.demultiplex([r1,r2])
        # The barcode sequence is ACACACTA (first barcode)
        self.assertEqual( demultiplexed_record[0].tags['BC'], 'ACACACTA')
        self.assertEqual( demultiplexed_record[0].tags['bi'], 1)
Esempio n. 2
0
    def demultiplex(self, records, **kwargs):

        if kwargs.get('probe') and records[0].sequence[self.barcodeLength +
                                                       self.umiLength] != 'T':
            raise NonMultiplexable

        # add first 2 bases as ligation tag:
        ligation_start = self.barcodeLength + self.umiLength
        ligation_end = ligation_start + 2
        ligation_sequence = records[0].sequence[ligation_start:ligation_end]
        ligation_qualities = records[0].qual[ligation_start:ligation_end]

        taggedRecords = UmiBarcodeDemuxMethod.demultiplex(
            self, records, **kwargs)

        taggedRecords[0].addTagByTag('lh',
                                     ligation_sequence,
                                     isPhred=False,
                                     make_safe=False)
        taggedRecords[0].addTagByTag('lq',
                                     ligation_qualities,
                                     isPhred=True,
                                     make_safe=False)
        taggedRecords[1].addTagByTag('lh',
                                     ligation_sequence,
                                     isPhred=False,
                                     make_safe=False)
        taggedRecords[1].addTagByTag('lq',
                                     ligation_qualities,
                                     isPhred=True,
                                     make_safe=False)
        #taggedRecords[0].sequence = taggedRecords[0].sequence[1:]
        #taggedRecords[0].qualities = taggedRecords[0].qualities[1:]
        return taggedRecords
    def demultiplex(self, records, **kwargs):
        if kwargs.get('probe') and records[0].sequence[self.barcodeLength + \
                      self.umiLength: self.barcodeLength + self.umiLength + 4] != 'CATG':
            raise NonMultiplexable

        taggedRecords = UmiBarcodeDemuxMethod.demultiplex(
            self, records, **kwargs)
        return taggedRecords
Esempio n. 4
0
    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