def test_bad_create_args(self): with self.assertRaisesRegexp(ValueError, 'multiple ones were found on 1'): fasta.InMemoryFastaReader([ ('1', 10, 'AC'), ('1', 20, 'AC'), ])
def test_query_edge_cases(self): reader = fasta.InMemoryFastaReader([('1', 0, 'ACGT')]) # Check that we can query the first base correctly. self.assertEqual(reader.query(ranges.make_range('1', 0, 1)), 'A') # Check that we can query the last base correctly. self.assertEqual(reader.query(ranges.make_range('1', 3, 4)), 'T') # Check that we can query the entire sequence correctly. self.assertEqual(reader.query(ranges.make_range('1', 0, 4)), 'ACGT')
def test_select_windows_returns_empty_list_when_no_reads(self): self.assertEqual([], window_selector.select_windows( self.config, ref_reader=fasta.InMemoryFastaReader([('chr1', 0, 'A' * 500)]), reads=[], region=ranges.make_range('chr1', 1, 100)))
def setUpClass(cls): cls.fasta_reader = fasta.IndexedFastaReader( test_utils.genomics_core_testdata('test.fasta')) cls.in_mem = fasta.InMemoryFastaReader( [(contig.name, 0, cls.fasta_reader.query( ranges.make_range(contig.name, 0, contig.n_bases))) for contig in cls.fasta_reader.header.contigs])
def test_non_zero_start_query(self): bases = 'ACGTAACCGGTT' for start in range(len(bases)): reader = fasta.InMemoryFastaReader([('1', start, bases[start:])]) self.assertEqual(reader.header.contigs[0].name, '1') self.assertEqual(reader.header.contigs[0].n_bases, len(bases)) # Check that our query operation works as expected with a start position. for end in range(start, len(bases)): self.assertEqual(reader.query(ranges.make_range('1', start, end)), bases[start:end])
def test_select_windows(self): # Simple end-to-end test of the high-level select_windows function. We give # it a few reads with a single candidate at 100 and we expect a window back # centered at 100. reads = [ test_utils.make_read('AGA', start=99, cigar='3M', quals=[64] * 3), test_utils.make_read('AGA', start=99, cigar='3M', quals=[63] * 3), test_utils.make_read('AGA', start=99, cigar='3M', quals=[62] * 3), ] chrom = reads[0].alignment.position.reference_name ref_reader = fasta.InMemoryFastaReader([(chrom, 0, 'A' * 300)]) region = ranges.make_range(chrom, 0, 200) self.assertEqual( window_selector.select_windows(self.config, ref_reader, reads, region), [ranges.make_range(chrom, 96, 104)])
def assertCandidatesFromReadsEquals(self, reads, expected, start=None, end=None, ref=None): chrom = reads[0].alignment.position.reference_name start = 0 if start is None else start end = 20 if end is None else end region = ranges.make_range(chrom, start, end) if ref is None: ref = 'A' * (ranges.length(region) + 512) ref_reader = fasta.InMemoryFastaReader([(chrom, 0, ref)]) if isinstance(expected, type) and issubclass(expected, Exception): with self.assertRaises(expected): window_selector._candidates_from_reads(self.config, ref_reader, reads, region) else: actual = window_selector._candidates_from_reads( self.config, ref_reader, reads, region) self.assertEqual(actual, expected)
def dummy_reference_reader(): return fasta.InMemoryFastaReader(chromosomes=[ ('1', 0, 'AACCGGTTACGTTCGATTTTAAAACCCCGGGG'), ('2', 0, 'GCAGTGACGTAGCGATGACGTAGACGCTTACG'), ])
def test_bad_query_with_start(self, start, end): reader = fasta.InMemoryFastaReader([('1', 10, 'ACGT')]) with self.assertRaises(ValueError): reader.query(ranges.make_range('1', start, end))