diff --git a/micall/core/remap.py b/micall/core/remap.py index 4f8e45092..0b9dc88ea 100644 --- a/micall/core/remap.py +++ b/micall/core/remap.py @@ -372,7 +372,10 @@ def counts_to_conseqs(refmap, seeds=None): else: conseq += seed[pos-1] elif most_common == '-': - deletion += '-' + if seed is None: + deletion += '-' + else: + conseq += seed[pos-1] else: if deletion: if len(deletion) % 3 != 0: diff --git a/micall/tests/remap_test.py b/micall/tests/remap_test.py index 2b95b4cf1..44a9b5d82 100644 --- a/micall/tests/remap_test.py +++ b/micall/tests/remap_test.py @@ -392,6 +392,34 @@ def testSeedsWithLowQuality(self): self.assertDictEqual(expected_conseqs, conseqs) + def testSeedsWithPartialDeletion(self): + samIO = StringIO( + "@SQ\tSN:test\n" + "test1\t99\ttest\t4\t44\t1M1D1M\t=\t10\t3\tTT\tJJ\n" + ) + seeds = {'test': 'ACATTTGGGCAC'} + expected_conseqs = {'test': 'ACATTTGGGCAC'} + + conseqs = remap.sam_to_conseqs(samIO, + seeds=seeds, + quality_cutoff=32) + + self.assertDictEqual(expected_conseqs, conseqs) + + def testSeedsWithCodonDeletion(self): + samIO = 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(samIO, + seeds=seeds, + quality_cutoff=32) + + self.assertDictEqual(expected_conseqs, conseqs) + def testDebugReports(self): samIO = StringIO( "@SQ\tSN:test\n"