Ejemplo n.º 1
0
    def test_with_reverse_and_forward_link_returns_one_base_each(self, kmer):
        # given
        b = LinksBuilder()
        b.with_link_for_kmer('F 1 1 A', 'AAA')
        b.with_link_for_kmer('R 1 1 A', 'AAA')
        links = b.build()

        # when
        walker = LinkWalker.from_links(links).load_kmer(kmer)

        # then
        assert ['A'] == list(walker.next_junction_bases())
Ejemplo n.º 2
0
    def test_raises_when_base_that_does_not_exist_is_chosen(self):
        # given
        b = LinksBuilder()
        b.with_link_for_kmer('F 1 1 A', 'AAA')
        links = b.build()

        # when
        walker = LinkWalker.from_links(links).load_kmer('AAA')

        # then
        with pytest.raises(KeyError):
            walker.choose_branch('C')
Ejemplo n.º 3
0
    def test_with_single_link_returns_each_junctions_base(self):
        # given
        b = LinksBuilder()
        b.with_link_for_kmer('F 3 1 ACT', 'AAA')
        links = b.build()

        # when
        walker = LinkWalker.from_links(links).load_kmer('AAA')

        # then
        assert ['A'] == list(walker.next_junction_bases())
        assert ['C'] == list(walker.choose_branch('A').next_junction_bases())
        assert ['T'] == list(walker.choose_branch('C').next_junction_bases())
        assert [] == list(walker.choose_branch('T').next_junction_bases())
Ejemplo n.º 4
0
    def test_with_single_link_returns_one_base(self, is_lexlo):
        # given
        b = LinksBuilder()
        b.with_link_for_kmer('F 3 1 ACC', 'AAA')

        # when
        links = b.build()

        # then
        junctions = list(
            links.body['AAA'].get_link_junctions_in_kmer_orientation(is_lexlo))
        if is_lexlo:
            assert ['ACC'] == junctions
        else:
            assert [] == junctions
Ejemplo n.º 5
0
    def test_with_two_reverse_and_forward_links_returns_two_bases_each(self):
        # given
        b = LinksBuilder()
        b.with_link_for_kmer('F 1 1 A', 'AAA')
        b.with_link_for_kmer('F 1 1 C', 'AAA')
        b.with_link_for_kmer('R 1 1 G', 'AAA')
        b.with_link_for_kmer('R 1 1 T', 'AAA')

        links = b.build()

        # when
        walker = LinkWalker.from_links(links)

        # then
        assert ['A',
                'C'] == list(walker.load_kmer('AAA').next_junction_bases())
        assert ['G', 'T'] == list(
            walker.clear().load_kmer('TTT').next_junction_bases())
Ejemplo n.º 6
0
    def test_with_single_reverse_link_returns_one_base(self, kmer):
        # given
        b = LinksBuilder()
        b.with_link_for_kmer('R 3 1 GTT', 'AAA')
        links = b.build()

        # when
        walker = LinkWalker.from_links(links).load_kmer(kmer)

        # then
        if kmer == 'TTT':
            assert 1 == walker.n_junctions
            assert ['G'] == list(walker.next_junction_bases())
            walker.choose_branch('G')
            assert 1 == walker.n_junctions
            walker.choose_branch('T')
            assert 1 == walker.n_junctions
            walker.choose_branch('T')
            assert 0 == walker.n_junctions
        else:
            assert 0 == walker.n_junctions
            assert [] == list(walker.next_junction_bases())