コード例 #1
0
 def test_sort_iterators(self):
     iter1 = [{'chrom': '1', 'pos': 1}, {'chrom': '1', 'pos': 5},
              {'chrom': '1', 'pos': 7}, {'chrom': '1', 'pos': 10},
              {'chrom': '2', 'pos': 11}, {'chrom': '2', 'pos': 12}]
     iter1 = PeekableIterator(iter(iter1))
     iter2 = [{'chrom': '1', 'pos': 0}, {'chrom': '1', 'pos': 3},
              {'chrom': '1', 'pos': 6}, {'chrom': '2', 'pos': 5},
              {'chrom': '2', 'pos': 11}, {'chrom': '2', 'pos': 13}]
     iter2 = PeekableIterator(iter(iter2))
     expected = [{'chrom': '1', 'pos': 0}, {'chrom': '1', 'pos': 1},
                 {'chrom': '1', 'pos': 3}, {'chrom': '1', 'pos': 5},
                 {'chrom': '1', 'pos': 6}, {'chrom': '1', 'pos': 7},
                 {'chrom': '1', 'pos': 10}, {'chrom': '2', 'pos': 5},
                 {'chrom': '2', 'pos': 11}, {'chrom': '2', 'pos': 11},
                 {'chrom': '2', 'pos': 12}, {'chrom': '2', 'pos': 13}]
     for x, y in zip(_sort_iterators(iter1, iter2), expected):
         assert x == y
コード例 #2
0
    def test_peekable_iter(self):
        iterator = iter(['a', 'b', 'c', 'd', 'e', 'f'])
        iterator = PeekableIterator(iterator)
        assert 'a' == iterator.peek()
        assert 'b' == iterator.peek()
        assert 'a' == next(iterator)
        assert 'c' == iterator.peek()
        iterator.reset_peek()
        assert 'b' == iterator.peek()
        assert 'b' == next(iterator)

        iterator = iter(['a', 'b', 'c', 'd', 'e', 'f'])
        iterator = PeekableIterator(iterator)
        iterator.peek()
        iterator.peek()
        iterator.peek()
        iterator.reset_peek()
        assert 'a' == iterator.peek()
        iterator = iter(['a', 'b', 'c', 'd', 'e', 'f'])
        iterator = PeekableIterator(iterator)
        iterator.peek()
        iterator.peek()
        iterator.peek()
        iterator.peek()
        iterator.peek()
        iterator.peek()

        try:
            iterator.peek()
            self.fail('stopIteration expected')
        except StopIteration:
            pass
        assert 'a' == next(iterator)

        iterator = iter(['a', 'b', 'c', 'd', 'e', 'f'])
        iterator = PeekableIterator(iterator)
        assert 'a' == iterator.peek()
        assert 'a' == next(iterator)
        assert 'b' == iterator.peek()
コード例 #3
0
    def test_peekable_iter(self):
        iterator = iter(['a', 'b', 'c', 'd', 'e', 'f'])
        iterator = PeekableIterator(iterator)
        assert 'a' == iterator.peek()
        assert 'b' == iterator.peek()
        assert 'a' == next(iterator)
        assert 'c' == iterator.peek()
        iterator.reset_peek()
        assert 'b' == iterator.peek()
        assert 'b' == next(iterator)

        iterator = iter(['a', 'b', 'c', 'd', 'e', 'f'])
        iterator = PeekableIterator(iterator)
        iterator.peek()
        iterator.peek()
        iterator.peek()
        iterator.reset_peek()
        assert 'a' == iterator.peek()
        iterator = iter(['a', 'b', 'c', 'd', 'e', 'f'])
        iterator = PeekableIterator(iterator)
        iterator.peek()
        iterator.peek()
        iterator.peek()
        iterator.peek()
        iterator.peek()
        iterator.peek()

        try:
            iterator.peek()
            self.fail('stopIteration expected')
        except StopIteration:
            pass
        assert 'a' == next(iterator)

        iterator = iter(['a', 'b', 'c', 'd', 'e', 'f'])
        iterator = PeekableIterator(iterator)
        assert 'a' == iterator.peek()
        assert 'a' == next(iterator)
        assert 'b' == iterator.peek()
コード例 #4
0
ファイル: merge.py プロジェクト: JoseBlanca/variation
def _group_overlaping_vars(variations_1, variations_2,
                           ignore_2_or_more_overlaps=False,
                           check_ref_match=True):

    if isinstance(variations_1, list) and isinstance(variations_2, list):
        # This is intented only for testing and debugin
        snps_1 = PeekableIterator(iter(variations_1))
        snps_2 = PeekableIterator(iter(variations_2))
    else:
        snps_1 = PeekableIterator(_iterate_vars(variations_1))
        snps_2 = PeekableIterator(_iterate_vars(variations_2))

    while True:
        sorted_vars = _sort_iterators(snps_1, snps_2)
        region = _get_overlapping_region(sorted_vars)
        snps_1.reset_peek()
        snps_2.reset_peek()

        snps1_in_region = _get_vars_in_region(snps_1, region)
        snps2_in_region = _get_vars_in_region(snps_2, region)
        snps_1.reset_peek()
        snps_2.reset_peek()
        if not snps1_in_region and not snps2_in_region:
            break
        yield (snps1_in_region, snps2_in_region)
コード例 #5
0
def _group_overlaping_vars(variations_1,
                           variations_2,
                           ignore_2_or_more_overlaps=False,
                           check_ref_match=True):

    if isinstance(variations_1, list) and isinstance(variations_2, list):
        # This is intented only for testing and debugin
        snps_1 = PeekableIterator(iter(variations_1))
        snps_2 = PeekableIterator(iter(variations_2))
    else:
        snps_1 = PeekableIterator(_iterate_vars(variations_1))
        snps_2 = PeekableIterator(_iterate_vars(variations_2))

    while True:
        sorted_vars = _sort_iterators(snps_1, snps_2)
        region = _get_overlapping_region(sorted_vars)
        snps_1.reset_peek()
        snps_2.reset_peek()

        snps1_in_region = _get_vars_in_region(snps_1, region)
        snps2_in_region = _get_vars_in_region(snps_2, region)
        snps_1.reset_peek()
        snps_2.reset_peek()
        if not snps1_in_region and not snps2_in_region:
            break
        yield (snps1_in_region, snps2_in_region)