def test_should_call_variants_with_touching_and_unsorted_regions(self):
     self.calls_variants_in_bed_region(
         "ACGCCCCCTGCAAAAAAAAAA", ["......T...T.........."],
         expected_variant_stubs=[(6, "CCTGC", "TCTGT")],
         bed_regions=[Interval(7, 12),
                      Interval(2, 7),
                      Interval(4, 5)])
Exemplo n.º 2
0
    def test_should_return_reads_that_overlap_both_intervals_twice(self):
        all_reads = [
            make_read(0, 2),
            make_read(1, 3),
        ]

        iterator = BAMRegionIterator((read for read in all_reads))

        self.assertEqual(all_reads[0:1], list(iterator(Interval(0, 1))))
        self.assertEqual(all_reads[0:2], list(iterator(Interval(1, 2))))
Exemplo n.º 3
0
    def test_should_not_miss_any_reads_between_regions(self):
        all_reads = [
            make_read(0, 1),
            make_read(1, 2),
            make_read(2, 3),
            make_read(3, 4),
            make_read(4, 5),
            make_read(5, 6),
        ]

        iterator = BAMRegionIterator((read for read in all_reads))

        self.assertEqual(all_reads[0:2], list(iterator(Interval(0, 2))))
        self.assertEqual(all_reads[2:3], list(iterator(Interval(2, 3))))
Exemplo n.º 4
0
    def test_should_return_two_sets_of_values_for_intervals_in_correct_order(self):
        all_reads = [
            make_read(0, 1),
            make_read(1, 2),
            make_read(2, 3),
            make_read(3, 4),
            make_read(4, 5),
            make_read(5, 6),
        ]

        iterator = BAMRegionIterator((read for read in all_reads))

        self.assertEqual(all_reads[0:2], list(iterator(Interval(0, 2))))
        self.assertEqual(all_reads[3:5], list(iterator(Interval(3, 5))))
Exemplo n.º 5
0
    def test_should_fail_for_regions_in_incorrect_order(self):
        all_reads = [
            make_read(0, 1),
            make_read(1, 2),
            make_read(2, 3),
            make_read(3, 4),
            make_read(4, 5),
            make_read(5, 6),
        ]

        iterator = BAMRegionIterator((read for read in all_reads))

        self.assertEqual(all_reads[3:5], list(iterator(Interval(3, 5))))
        with self.assertRaises(Exception):
            print((iterator(Interval(0, 2))))
 def test_should_call_variants_when_whole_read_within_region_with_compressed_bed_file(
         self):
     self.calls_variants_in_bed_region(
         "ACGCCCCCTGCAAAAAAAAAA",
         [".T...................", "...........C........."],
         [".T...................", "...........C........."],
         bed_regions=[Interval(0, 12)],
         compress=True)
 def test_should_call_only_variant_that_is_within_region(self):
     self.calls_variants_in_bed_region(
         "AAAAAAAAACGCCCCCTGCAAAAAAAAAA",
         [".........T...................", "..................T.........."],
         [
             ".........T...................",
             ".............................",
         ],
         bed_regions=[Interval(8, 15)],
     )
Exemplo n.º 8
0
    def test_should_return_nothing_if_interval_does_not_overlap_any_reads(self):
        all_reads = [
            make_read(0, 1),
            make_read(1, 2),
            make_read(2, 3),
            make_read(3, 4),
        ]

        iterator = BAMRegionIterator((read for read in all_reads))

        actual_results = list(iterator(Interval(4, 6)))
        self.assertEqual([], actual_results)
Exemplo n.º 9
0
    def test_should_only_return_reads_with_end_overlapping_interval(self):
        all_reads = [
            make_read(0, 1),
            make_read(1, 2),
            make_read(2, 3),
            make_read(3, 4),
        ]

        iterator = BAMRegionIterator((read for read in all_reads))

        actual_results = list(iterator(Interval(2, 4)))
        self.assertEqual(all_reads[2:4], actual_results)
Exemplo n.º 10
0
    def test_should_return_all_reads_if_entire_fetch_region_requested(self):
        all_reads = [
            make_read(0, 1),
            make_read(1, 2),
            make_read(2, 3),
            make_read(3, 4),
        ]

        iterator = BAMRegionIterator((read for read in all_reads))

        actual_results = list(iterator(Interval(0, 4)))
        self.assertEqual(all_reads, actual_results)
Exemplo n.º 11
0
    def test_should_return_overlapping_reads_from_middle_of_query_region(self):
        all_reads = [
            make_read(0, 1),
            make_read(1, 2),
            make_read(2, 3),
            make_read(3, 4),
            make_read(4, 5),
            make_read(5, 6),
        ]

        iterator = BAMRegionIterator((read for read in all_reads))

        actual_results = list(iterator(Interval(2, 4)))
        self.assertEqual(all_reads[2:4], actual_results)
Exemplo n.º 12
0
 def __init__(self, fetch_iterator):
     IntervalRegionIterator.__init__(
         self, fetch_iterator, lambda read: Interval(read.pos, read.aend))