示例#1
0
    def testDebugReportsOnReverseRead(self):
        samIO = StringIO.StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t1\t44\t3M3I2M\t=\t1\t8\tACTGGGAG\tJJJJJJJJ\n"
            "test1\t147\ttest\t5\t44\t8M\t=\t1\t-8\tGACCCAAC\tJJJJJIJJ\n"
            "test1\t99\ttest\t1\t44\t3M3I2M\t=\t1\t12\tATTGGGAG\tJJJJJJJJ\n"
            "test1\t147\ttest\t5\t44\t8M\t=\t1\t-12\tGACCCAAC\tJJJJJHJJ\n")
        reports = {('test', 10): None}
        expected_reports = {('test', 10): 'H{A: 2}, I{A: 1}'}

        remap.sam_to_conseqs(samIO, debug_reports=reports)

        self.assertDictEqual(expected_reports, reports)
示例#2
0
    def testDebugReports(self):
        samIO = StringIO.StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t1\t44\t3M3I9M\t=\t1\t12\tACTGGGAGACCCAAC\tJIJJJJJJJJJJJJJ\n"
            "test1\t147\ttest\t1\t44\t3M3I9M\t=\t1\t-12\tACTGGGAGACCCAAC\tJIJJJJJJJJJJJJJ\n"
            "test1\t99\ttest\t1\t44\t3M3I9M\t=\t1\t12\tATTGGGAGACCCAAC\tJHJJJJJJJJJJJJJ\n"
            "test1\t147\ttest\t1\t44\t3M3I9M\t=\t1\t-12\tATTGGGAGACCCAAC\tJHJJJJJJJJJJJJJ\n"
        )
        reports = {('test', 2): None}
        expected_reports = {('test', 2): 'H{C: 1, T: 1}, I{C: 1}'}

        remap.sam_to_conseqs(samIO, debug_reports=reports)

        self.assertDictEqual(expected_reports, reports)
示例#3
0
    def testDebugReports(self):
        sam_file = StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t1\t44\t3M3I9M\t=\t1\t12\tACTGGGAGACCCAAC\tJIJJJJJJJJJJJJJ\n"
            "test1\t147\ttest\t1\t44\t3M3I9M\t=\t1\t-12\tACTGGGAGACCCAAC\tJIJJJJJJJJJJJJJ\n"
            "test1\t99\ttest\t1\t44\t3M3I9M\t=\t1\t12\tATTGGGAGACCCAAC\tJHJJJJJJJJJJJJJ\n"
            "test1\t147\ttest\t1\t44\t3M3I9M\t=\t1\t-12\tATTGGGAGACCCAAC\tJHJJJJJJJJJJJJJ\n"
        )
        reports = {('test', 2): None}
        expected_reports = {('test', 2): 'H{C: 1, T: 1}, I{C: 1}'}

        remap.sam_to_conseqs(sam_file, debug_reports=reports)

        self.assertDictEqual(expected_reports, reports)
示例#4
0
    def testDebugReportsOnReverseRead(self):
        sam_file = StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t1\t44\t3M3I2M\t=\t1\t8\tACTGGGAG\tJJJJJJJJ\n"
            "test1\t147\ttest\t5\t44\t8M\t=\t1\t-8\tGACCCAAC\tJJJJJIJJ\n"
            "test1\t99\ttest\t1\t44\t3M3I2M\t=\t1\t12\tATTGGGAG\tJJJJJJJJ\n"
            "test1\t147\ttest\t5\t44\t8M\t=\t1\t-12\tGACCCAAC\tJJJJJHJJ\n"
        )
        reports = {('test', 10): None}
        expected_reports = {('test', 10): 'H{A: 2}, I{A: 1}'}

        remap.sam_to_conseqs(sam_file, debug_reports=reports)

        self.assertDictEqual(expected_reports, reports)
示例#5
0
 def testReverseLeftOfForward(self):
     sam_file = StringIO("@SQ\tSN:test\n"
                         "test1\t99\ttest\t2\t44\t1M\t=\t1\t1\tC\tJ\n"
                         "test1\t147\ttest\t1\t44\t1M\t=\t2\t-1\tA\tJ\n")
     expected_conseqs = {'test': 'AC'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#6
0
 def testDeletion(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n")
     expected_conseqs = {'test': 'ACAGGG'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#7
0
 def testHeaderFields(self):
     samIO = StringIO.StringIO(
         "@SQ\tOF:other field: ignored\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACA\tJJJ\n")
     expected_conseqs = {'test': 'ACA'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#8
0
    def testSeedsBothConverged(self):
        """ Both references are now closer to the other seed than the start.

        Don't drop both. Keep test because it has more reads.
        """
        # SAM:qname, flag, rname, pos, mapq, cigar, rnext, pnext, tlen, seq, qual
        sam_file = StringIO(
            "@SQ\tSN:test\tSN:other\tSN:unrelated\n"
            "test1\t99\ttest\t1\t44\t8M\t=\t1\t10\tAAGCCGTA\tJJJJJJJJJJ\n"
            "test2\t99\ttest\t1\t44\t8M\t=\t1\t10\tAAGCCGTA\tJJJJJJJJJJ\n"
            "other1\t99\tother\t1\t44\t8M\t=\t1\t10\tATGAAGTA\tJJJJJJJJJJ\n"
            "unrelated1\t99\tunrelated\t1\t44\t9M\t=\t1\t10\tGGGTTTGGG\tJJJJJJJJJ\n"
        )
        seeds = {
            'test': 'ATGAAGTA',
            'other': 'AAGCCGAA',
            'unrelated': 'GGGTTTGGG'
        }
        expected_conseqs = {'test': 'AAGCCGTA', 'unrelated': 'GGGTTTGGG'}
        expected_distances = {
            'test': dict(seed_dist=3, other_dist=1, other_seed='other'),
            'other': dict(seed_dist=5, other_dist=0, other_seed='test'),
            'unrelated': dict(seed_dist=0, other_dist=7, other_seed='test')
        }
        distances = {}

        conseqs = remap.sam_to_conseqs(sam_file,
                                       seeds=seeds,
                                       original_seeds=seeds,
                                       is_filtered=True,
                                       distance_report=distances)

        self.maxDiff = 1000
        self.assertEqual(expected_distances, distances)
        self.assertEqual(expected_conseqs, conseqs)
示例#9
0
 def testDeletionWithFrameShift(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M1D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n")
     expected_conseqs = {'test': 'ACA-GGG'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#10
0
 def testSoftClip(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3S5M1S\t=\t1\t9\tACAGGGAGA\tJJJJJJJJJ\n")
     expected_conseqs = {'test': 'GGGAG'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#11
0
 def testSimpleInsertion(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3I3M\t=\t1\t9\tACAGGGAGA\tJJJJJJJJJ\n")
     expected_conseqs = {'test': 'ACAGGGAGA'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#12
0
    def testSeedsConverged(self):
        # SAM:qname, flag, rname, pos, mapq, cigar, rnext, pnext, tlen, seq, qual
        samIO = StringIO.StringIO(
            "@SQ\tSN:test\tSN:other\tSN:wayoff\n"
            "test1\t99\ttest\t1\t44\t10M\t=\t1\t10\tATGAGGAGTA\tJJJJJJJJJJJJ\n"
            "other1\t99\tother\t1\t44\t10M\t=\t1\t10\tATGACCAGTA\tJJJJJJJJJJJJ\n"
            "wayoff1\t99\twayoff\t1\t44\t10M\t=\t1\t10\tATGAGGGTAC\tJJJJJJJJJJJJ\n"
        )
        seeds = {'test': 'ATGAAGTA', 'other': 'AAGCCGAA', 'wayoff': 'TCATGTAC'}
        expected_conseqs = {'test': 'ATGAGGAGTA'}
        expected_distances = {
            'test': dict(seed_dist=2, other_dist=5, other_seed='other'),
            'other': dict(seed_dist=4, other_dist=2, other_seed='test'),
            'wayoff': dict(seed_dist=4, other_dist=3, other_seed='test')
        }
        distances = {}

        conseqs = remap.sam_to_conseqs(samIO,
                                       seeds=seeds,
                                       is_filtered=True,
                                       distance_report=distances)

        self.maxDiff = 1000
        self.assertEqual(expected_conseqs, conseqs)
        self.assertEqual(expected_distances, distances)
示例#13
0
 def testLowQualityAtEnd(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACG\tJJ/\n")
     expected_conseqs = {'test': 'ACN'}
     conseqs = remap.sam_to_conseqs(samIO, quality_cutoff=32)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#14
0
 def testUnknownReferenceName(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:testX\n"
         "test1\t99\ttestY\t1\t44\t12M\t=\t1\t3\tACA\tJJJ\n")
     expected_conseqs = {}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#15
0
    def testSeedsConverged(self):
        # SAM:qname, flag, rname, pos, mapq, cigar, rnext, pnext, tlen, seq, qual
        sam_file = StringIO(
            "@SQ\tSN:test\tSN:other\tSN:wayoff\n"
            "test1\t99\ttest\t1\t44\t10M\t=\t1\t10\tATGAGGAGTA\tJJJJJJJJJJJJ\n"
            "other1\t99\tother\t1\t44\t10M\t=\t1\t10\tATGACCAGTA\tJJJJJJJJJJJJ\n"
            "wayoff1\t99\twayoff\t1\t44\t10M\t=\t1\t10\tATGAGGGTAC\tJJJJJJJJJJJJ\n"
        )
        seeds = {'test': 'ATGAAGTA',
                 'other': 'AAGCCGAA',
                 'wayoff': 'TCATGTAC'}
        expected_conseqs = {'test': 'ATGAGGAGTA'}
        expected_distances = {'test': dict(seed_dist=2,
                                           other_dist=5,
                                           other_seed='other'),
                              'other': dict(seed_dist=4,
                                            other_dist=2,
                                            other_seed='test'),
                              'wayoff': dict(seed_dist=4,
                                             other_dist=3,
                                             other_seed='test')}
        distances = {}

        conseqs = remap.sam_to_conseqs(sam_file,
                                       seeds=seeds,
                                       original_seeds=seeds,
                                       is_filtered=True,
                                       distance_report=distances)

        self.maxDiff = 1000
        self.assertEqual(expected_conseqs, conseqs)
        self.assertEqual(expected_distances, distances)
示例#16
0
 def testInsertionAfterLowQuality(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3I3M\t=\t1\t9\tACAGGGAGA\tJJ/JJJJJJ\n")
     expected_conseqs = {'test': 'ACNAGA'}
     conseqs = remap.sam_to_conseqs(samIO, quality_cutoff=32)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#17
0
 def testMaxConsensus(self):
     sam_file = StringIO("@SQ\tSN:test\n"
                         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACA\tJJJ\n"
                         "test2\t147\ttest\t1\t44\t3M\t=\t1\t-3\tACA\tJJJ\n"
                         "test3\t99\ttest\t1\t44\t3M\t=\t1\t3\tTCA\tJJJ\n")
     expected_conseqs = {'test': 'ACA'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#18
0
 def testLowQualityAtEnd(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACG\tJJ/\n"
     )
     expected_conseqs = {'test': 'ACN'}
     conseqs = remap.sam_to_conseqs(sam_file, quality_cutoff=32)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#19
0
 def testOffset(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t147\ttest\t4\t44\t12M\t=\t3\t-12\tACAAGACCCAAC\tJJJJJJJJJJJJ\n"
     )
     expected_conseqs = {'test': 'NNNACAAGACCCAAC'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#20
0
 def testBigDeletionWithFrameShift(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M4D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACA----GGG'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#21
0
 def testLowQualityForward(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t3\t3\tATA\tJJA\n"
         "test1\t147\ttest\t3\t44\t3M\t=\t1\t-3\tGCC\tJJJ\n")
     expected_conseqs = {'test': 'ATGCC'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#22
0
 def testInsertionAfterLowQuality(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3I3M\t=\t1\t9\tACAGGGAGA\tJJ/JJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACNAGA'}
     conseqs = remap.sam_to_conseqs(sam_file, quality_cutoff=32)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#23
0
 def testSimpleInsertion(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3I3M\t=\t1\t9\tACAGGGAGA\tJJJJJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACAGGGAGA'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#24
0
 def testSoftClip(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3S5M1S\t=\t1\t9\tACAGGGAGA\tJJJJJJJJJ\n"
     )
     expected_conseqs = {'test': 'GGGAG'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#25
0
 def testExtraFields(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACA\tJJJ\tAS:i:236\tNM:i:12\n"
     )
     expected_conseqs = {'test': 'ACA'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#26
0
 def testOffset(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t147\ttest\t4\t44\t12M\t=\t3\t-12\tACAAGACCCAAC\tJJJJJJJJJJJJ\n"
     )
     expected_conseqs = {'test': 'NNNACAAGACCCAAC'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#27
0
 def testExtraFields(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACA\tJJJ\tAS:i:236\tNM:i:12\n"
     )
     expected_conseqs = {'test': 'ACA'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#28
0
 def testTie(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tGCA\tJJJ\n"
         "test2\t147\ttest\t1\t44\t3M\t=\t1\t-3\tTCA\tJJJ\n")
     expected_conseqs = {'test': 'GCA'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#29
0
 def testUnknownReferenceName(self):
     sam_file = StringIO(
         "@SQ\tSN:testX\n"
         "test1\t99\ttestY\t1\t44\t12M\t=\t1\t3\tACA\tJJJ\n"
     )
     expected_conseqs = {}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#30
0
 def testHeaderFields(self):
     sam_file = StringIO(
         "@SQ\tOF:other field: ignored\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACA\tJJJ\n"
     )
     expected_conseqs = {'test': 'ACA'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#31
0
 def testDeletion(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACAGGG'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#32
0
 def testLowQuality(self):
     # Note that we ignore the overlapped portion of the reverse read,
     # even if it has higher quality.
     sam_file = StringIO("@SQ\tSN:test\n"
                         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACG\tJ/J\n")
     expected_conseqs = {'test': 'ANG'}
     conseqs = remap.sam_to_conseqs(sam_file, quality_cutoff=32)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#33
0
 def testInsertionAndOffset(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3I3M\t=\t1\t9\tACAGGGAGA\tJJJJJJJJJJJJ\n"
         "test2\t99\ttest\t5\t44\t5M\t=\t1\t5\tGACCC\tJJJJJ\n")
     expected_conseqs = {'test': 'ACAGGGAGACCC'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#34
0
 def testLowQualityForward(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t3\t3\tATA\tJJA\n"
         "test1\t147\ttest\t3\t44\t3M\t=\t1\t-3\tGCC\tJJJ\n"
     )
     expected_conseqs = {'test': 'ATGCC'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#35
0
 def testTie(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tGCA\tJJJ\n"
         "test2\t147\ttest\t1\t44\t3M\t=\t1\t-3\tTCA\tJJJ\n"
     )
     expected_conseqs = {'test': 'GCA'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#36
0
    def testSeedsNeedSomeReads(self):
        sam_file = StringIO("@SQ\tSN:test\n"
                            "test1\t99\ttest\t4\t44\t3M\t=\t10\t3\tTAT\tJJJ\n")
        seeds = {'test': 'ACATTTGGGCAC', 'other': 'TATGCACCC'}
        expected_conseqs = {'test': 'ACATATGGGCAC'}

        conseqs = remap.sam_to_conseqs(sam_file, seeds=seeds)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#37
0
 def testSimple(self):
     # SAM:qname, flag, rname, pos, mapq, cigar, rnext, pnext, tlen, seq, qual
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t12M\t=\t1\t12\tACAAGACCCAAC\tJJJJJJJJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACAAGACCCAAC'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#38
0
 def testInsertionAndOffset(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3I3M\t=\t1\t9\tACAGGGAGA\tJJJJJJJJJJJJ\n"
         "test2\t99\ttest\t5\t44\t5M\t=\t1\t5\tGACCC\tJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACAGGGAGACCC'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#39
0
 def testComplexInsertion(self):
     # Insertions are ignored if not a multiple of three
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M1I3M2I6M\t=\t1\t12\tACAGAGAGGCCCAAC\tJJJJJJJJJJJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACAAGACCCAAC'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#40
0
 def testReverseLeftOfForward(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t2\t44\t1M\t=\t1\t1\tC\tJ\n"
         "test1\t147\ttest\t1\t44\t1M\t=\t2\t-1\tA\tJ\n"
     )
     expected_conseqs = {'test': 'AC'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#41
0
    def testAllLowQuality(self):
        # SAM:qname, flag, rname, pos, mapq, cigar, rnext, pnext, tlen, seq, qual
        sam_file = StringIO("@SQ\tSN:test\n"
                            "test1\t147\ttest\t1\t24\t1M\t=\t1\t-1\tT\t#\n")
        expected_conseqs = {}

        conseqs = remap.sam_to_conseqs(sam_file, quality_cutoff=32)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#42
0
 def testPairMapsToTwoReferences(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:testX\n"
         "@SQ\tSN:testY\n"
         "test1\t99\ttestX\t1\t44\t3M\t=\t1\t3\tACG\tJJJ\n"
         "test1\t147\ttestY\t1\t44\t3M\t=\t1\t-3\tACG\tJJJ\n")
     expected_conseqs = {}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#43
0
 def testHeaders(self):
     samIO = StringIO.StringIO(
         "@SH\tsome header\n"
         "@MHI\tmost headers are ignored, except SQ for sequence reference\n"
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACA\tJJJ\n")
     expected_conseqs = {'test': 'ACA'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#44
0
 def testDeletionInSomeReads(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n"
         "test2\t99\ttest\t1\t44\t3M3D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n"
         "test3\t99\ttest\t1\t44\t9M\t=\t3\t9\tACATTTGGG\tJJJJJJJJJ\n")
     expected_conseqs = {'test': 'ACATTTGGG'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#45
0
 def testComplexInsertion(self):
     # Insertions are ignored if not a multiple of three
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M1I3M2I6M\t=\t1\t12\tACAGAGAGGCCCAAC\tJJJJJJJJJJJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACAAGACCCAAC'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#46
0
 def testSimple(self):
     # SAM:qname, flag, rname, pos, mapq, cigar, rnext, pnext, tlen, seq, qual
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t12M\t=\t1\t12\tACAAGACCCAAC\tJJJJJJJJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACAAGACCCAAC'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#47
0
    def testSeedsWithLowQuality(self):
        samIO = StringIO.StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t4\t44\t3M\t=\t10\t3\tTAT\tJJ/\n")
        seeds = {'test': 'ACATTTGGGCAC'}
        expected_conseqs = {'test': 'ACATATGGGCAC'}

        conseqs = remap.sam_to_conseqs(samIO, seeds=seeds, quality_cutoff=32)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#48
0
 def testMaxConsensus(self):
     samIO = StringIO.StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACA\tJJJ\n"
         "test2\t147\ttest\t1\t44\t3M\t=\t1\t-3\tACA\tJJJ\n"
         "test3\t99\ttest\t1\t44\t3M\t=\t1\t3\tTCA\tJJJ\n"
     )
     expected_conseqs = {'test': 'ACA'}
     conseqs = remap.sam_to_conseqs(samIO)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#49
0
 def testHeaders(self):
     sam_file = StringIO(
         "@SH\tsome header\n"
         "@MHI\tmost headers are ignored, except SQ for sequence reference\n"
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACA\tJJJ\n"
     )
     expected_conseqs = {'test': 'ACA'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#50
0
 def testLowQuality(self):
     # Note that we ignore the overlapped portion of the reverse read,
     # even if it has higher quality.
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M\t=\t1\t3\tACG\tJ/J\n"
     )
     expected_conseqs = {'test': 'ANG'}
     conseqs = remap.sam_to_conseqs(sam_file, quality_cutoff=32)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#51
0
 def testDeletionInSomeReads(self):
     sam_file = StringIO(
         "@SQ\tSN:test\n"
         "test1\t99\ttest\t1\t44\t3M3D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n"
         "test2\t99\ttest\t1\t44\t3M3D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n"
         "test3\t99\ttest\t1\t44\t9M\t=\t3\t9\tACATTTGGG\tJJJJJJJJJ\n"
     )
     expected_conseqs = {'test': 'ACATTTGGG'}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#52
0
 def testPairMapsToTwoReferences(self):
     sam_file = StringIO(
         "@SQ\tSN:testX\n"
         "@SQ\tSN:testY\n"
         "test1\t99\ttestX\t1\t44\t3M\t=\t1\t3\tACG\tJJJ\n"
         "test1\t147\ttestY\t1\t44\t3M\t=\t1\t-3\tACG\tJJJ\n"
     )
     expected_conseqs = {}
     conseqs = remap.sam_to_conseqs(sam_file)
     self.assertDictEqual(expected_conseqs, conseqs)
示例#53
0
    def testLowQualityAndDeletion(self):
        samIO = StringIO.StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t1\t44\t3M3D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n"
            "test2\t99\ttest\t1\t44\t9M\t=\t3\t9\tACATTTGGG\tJJJ///JJJ\n")
        expected_conseqs = {'test': 'ACANNNGGG'}

        conseqs = remap.sam_to_conseqs(samIO, quality_cutoff=32)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#54
0
    def testNothingMapped(self):
        samIO = StringIO.StringIO("@SQ\tSN:test\tSN:other\n")
        seeds = {'test': 'ATGAAGTACTCTCT', 'other': 'AAGCCGAAGTGTGT'}
        expected_conseqs = {}

        conseqs = remap.sam_to_conseqs(samIO,
                                       seeds=seeds,
                                       is_filtered=True,
                                       filter_coverage=2)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#55
0
    def testAllLowQuality(self):
        # SAM:qname, flag, rname, pos, mapq, cigar, rnext, pnext, tlen, seq, qual
        sam_file = StringIO(
            "@SQ\tSN:test\n"
            "test1\t147\ttest\t1\t24\t1M\t=\t1\t-1\tT\t#\n"
        )
        expected_conseqs = {}

        conseqs = remap.sam_to_conseqs(sam_file, quality_cutoff=32)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#56
0
    def testLowQualityAndDeletion(self):
        sam_file = StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t1\t44\t3M3D3M\t=\t3\t6\tACAGGG\tJJJJJJ\n"
            "test2\t99\ttest\t1\t44\t9M\t=\t3\t9\tACATTTGGG\tJJJ///JJJ\n"
        )
        expected_conseqs = {'test': 'ACANNNGGG'}

        conseqs = remap.sam_to_conseqs(sam_file, quality_cutoff=32)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#57
0
    def testSeedsNeedSomeReads(self):
        sam_file = StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t4\t44\t3M\t=\t10\t3\tTAT\tJJJ\n"
        )
        seeds = {'test': 'ACATTTGGGCAC',
                 'other': 'TATGCACCC'}
        expected_conseqs = {'test': 'ACATATGGGCAC'}

        conseqs = remap.sam_to_conseqs(sam_file, seeds=seeds)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#58
0
    def testSeeds(self):
        samIO = StringIO.StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t4\t44\t3M\t=\t10\t3\tTAT\tJJJ\n"
            "test2\t99\ttest\t10\t44\t3M\t=\t4\t-3\tCAC\tJJJ\n"
        )
        seeds = {'test': 'ACATTTGGGCAC'}
        expected_conseqs = {'test': 'ACATATGGGCAC'}

        conseqs = remap.sam_to_conseqs(samIO, seeds=seeds)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#59
0
    def testSeedsWithLowQuality(self):
        sam_file = StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t4\t44\t3M\t=\t10\t3\tTAT\tJJ/\n"
        )
        seeds = {'test': 'ACATTTGGGCAC'}
        expected_conseqs = {'test': 'ACATATGGGCAC'}

        conseqs = remap.sam_to_conseqs(sam_file,
                                       seeds=seeds,
                                       quality_cutoff=32)

        self.assertDictEqual(expected_conseqs, conseqs)
示例#60
0
    def testSeedsWithCodonDeletion(self):
        sam_file = StringIO(
            "@SQ\tSN:test\n"
            "test1\t99\ttest\t1\t44\t3M3D3M\t=\t10\t6\tACAGGG\tJJJJJJ\n"
        )
        seeds = {'test': 'ACATTTGGGCAC'}
        expected_conseqs = {'test': 'ACATTTGGGCAC'}

        conseqs = remap.sam_to_conseqs(sam_file,
                                       seeds=seeds,
                                       quality_cutoff=32)

        self.assertDictEqual(expected_conseqs, conseqs)