def test_realign_read(self, read_seq, target_seq, expected_align_start, expected_cigar, comment): """Test Aligner.test_align_read_to_target().""" read = aligner.Read( test_utils.make_read( read_seq, chrom='ref', start=0, cigar=[(len(read_seq), 'M')], quals=[64] * len(read_seq), name='read')) align_reads = self.make_test_aligner(ref_seq=target_seq) align_reads.set_targets([target_seq]) align_reads.realign_read(read) if expected_align_start: self.assertEqual(align_reads.targets[0], read.target, comment) self.assertEqual(expected_align_start, read.target_offset + read.alignment.target_begin, comment) self.assertEqual(expected_cigar, read.alignment.cigar, comment) else: self.assertIsNone(read.target, comment) self.assertIsNone(read.target_offset, comment) self.assertIsNone(read.alignment, comment)
def test_sw_start_offsets(self): """Test Aligner._sw_start_offsets().""" k = 3 read = aligner.Read( test_utils.make_read( 'AaGAt', start=0, cigar=[(5, 'M')], quals=[64] * 5, name='read_1')) read.set_read_kmers(k) target = aligner.Target('TgATCAGATAAG') target.build_target_index(k) self.assertEqual([-1, 4, 9], aligner._sw_start_offsets(target.kmer_index, read.kmers))