Example #1
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)
Example #2
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)
Example #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()
Example #4
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()