Example #1
0
 def test_bad_create_args(self):
     with self.assertRaisesRegexp(ValueError,
                                  'multiple ones were found on 1'):
         fasta.InMemoryFastaReader([
             ('1', 10, 'AC'),
             ('1', 20, 'AC'),
         ])
Example #2
0
 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)))
Example #4
0
  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])
Example #5
0
  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)
Example #8
0
def dummy_reference_reader():
  return fasta.InMemoryFastaReader(chromosomes=[
      ('1', 0, 'AACCGGTTACGTTCGATTTTAAAACCCCGGGG'),
      ('2', 0, 'GCAGTGACGTAGCGATGACGTAGACGCTTACG'),
  ])
Example #9
0
 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))