コード例 #1
0
ファイル: test_graph.py プロジェクト: yniknafs/taco
def test_unreachable():
    G = Graph()
    G.add_path((Graph.SOURCE,) + tuple(range(10)) + (Graph.SINK,))
    assert len(G.get_unreachable_nodes()) == 0
    # unreachable from sink
    G.add_path((2, 20, 21))
    unreachable = set(G.nodes[x] for x in G.get_unreachable_nodes())
    assert unreachable == set([20, 21])
    # unreachable from source
    G.add_path((33, 32, 31, 9))
    unreachable = set(G.nodes[x] for x in G.get_unreachable_nodes())
    assert unreachable == set([20, 21, 33, 32, 31])
コード例 #2
0
ファイル: test_graph.py プロジェクト: Rainkikiki/taco
def test_remove_node():
    G = Graph()
    G.add_path((Graph.SOURCE, 10, 20, 30, 40, Graph.SINK))
    G.add_path((Graph.SOURCE, 10, 30, 40, Graph.SINK))
    G.add_path((Graph.SOURCE, 10, Graph.SINK))
    assert len(G) == 4
    assert len(G.preds[G.node_id_map[20]]) == 1
    assert len(G.preds[G.node_id_map[30]]) == 2
    node_id = G.node_id_map[10]
    G.remove_node_id(G.node_id_map[10])
    assert 10 not in G.node_id_map
    assert G.nodes[node_id] == Graph.EMPTY
    assert len(G) == 3
    assert len(G.preds[G.node_id_map[20]]) == 0
    assert len(G.preds[G.node_id_map[30]]) == 1
コード例 #3
0
ファイル: test_graph.py プロジェクト: Rainkikiki/taco
def test_add_paths():
    G = Graph()
    G.add_path((Graph.SOURCE, 10, 20, 30, 40, Graph.SINK))
    G.add_path((Graph.SOURCE, 10, 30, 40, Graph.SINK))
    G.add_path((Graph.SOURCE, 10, Graph.SINK))
    assert len(G.preds[Graph.SOURCE_ID]) == 0
    assert len(G.succs[Graph.SINK_ID]) == 0
    assert sorted(G.nodes[x] for x in G.succs[Graph.SOURCE_ID]) == [10]
    assert sorted(G.nodes[x] for x in G.preds[Graph.SINK_ID]) == [10, 40]
コード例 #4
0
ファイル: test_graph.py プロジェクト: yniknafs/taco
def test_remove_node():
    G = Graph()
    G.add_path((Graph.SOURCE, 10, 20, 30, 40, Graph.SINK))
    G.add_path((Graph.SOURCE, 10, 30, 40, Graph.SINK))
    G.add_path((Graph.SOURCE, 10, Graph.SINK))
    assert len(G) == 4
    assert len(G.preds[G.node_id_map[20]]) == 1
    assert len(G.preds[G.node_id_map[30]]) == 2
    node_id = G.node_id_map[10]
    G.remove_node_id(G.node_id_map[10])
    assert 10 not in G.node_id_map
    assert G.nodes[node_id] == Graph.EMPTY
    assert len(G) == 3
    assert len(G.preds[G.node_id_map[20]]) == 0
    assert len(G.preds[G.node_id_map[30]]) == 1
コード例 #5
0
ファイル: test_graph.py プロジェクト: yniknafs/taco
def test_add_paths():
    G = Graph()
    G.add_path((Graph.SOURCE, 10, 20, 30, 40, Graph.SINK))
    G.add_path((Graph.SOURCE, 10, 30, 40, Graph.SINK))
    G.add_path((Graph.SOURCE, 10, Graph.SINK))
    assert len(G.preds[Graph.SOURCE_ID]) == 0
    assert len(G.succs[Graph.SINK_ID]) == 0
    assert sorted(G.nodes[x] for x in G.succs[Graph.SOURCE_ID]) == [10]
    assert sorted(G.nodes[x] for x in G.preds[Graph.SINK_ID]) == [10, 40]
コード例 #6
0
ファイル: test_graph.py プロジェクト: Rainkikiki/taco
def test_topological_sort():
    G = Graph()
    G.add_path((G.SOURCE, 10, 20, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, G.SINK))
    G.add_path((G.SOURCE, 20, G.SINK))
    assert G.is_topological_sort(G.topological_sort())
    t_dict, locus = read_single_locus('noc2l_locus.gtf')
    for sgraph in locus.create_splice_graphs():
        pgf = PathGraphFactory(sgraph)
        G = pgf.create(k=1)
        assert G.is_topological_sort(G.topological_sort())
        assert G.is_topological_sort(G.topological_sort_dfs())
コード例 #7
0
ファイル: test_graph.py プロジェクト: Rainkikiki/taco
def test_is_topological_sort():
    G = Graph()
    G.add_path((G.SOURCE, 10, 20, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, G.SINK))
    G.add_path((G.SOURCE, 20, G.SINK))

    toposort = (G.SOURCE, 10, 30, 20, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert not G.is_topological_sort(order)
    toposort = (G.SOURCE, 20, 10, 30, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert not G.is_topological_sort(order)
    toposort = (G.SOURCE, 10, 20, 30, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert G.is_topological_sort(order)

    G = Graph()
    G.add_path((G.SOURCE, 10, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, 20, 40, G.SINK))

    toposort = (G.SOURCE, 10, 20, 30, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert G.is_topological_sort(order)
    toposort = (G.SOURCE, 10, 30, 20, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert G.is_topological_sort(order)
コード例 #8
0
ファイル: test_graph.py プロジェクト: Rainkikiki/taco
def test_is_valid():
    G = Graph()
    assert not G.is_valid()
    G.add_path((Graph.SOURCE, ) + tuple(range(10)) + (Graph.SINK, ))
    assert G.is_valid()
    G.remove_node_id(G.node_id_map[5])
    assert not G.is_valid()
    G.remove_unreachable_nodes()
    assert not G.is_valid()
コード例 #9
0
ファイル: test_graph.py プロジェクト: Rainkikiki/taco
def test_unreachable():
    G = Graph()
    G.add_path((Graph.SOURCE, ) + tuple(range(10)) + (Graph.SINK, ))
    assert len(G.get_unreachable_nodes()) == 0
    # unreachable from sink
    G.add_path((2, 20, 21))
    unreachable = set(G.nodes[x] for x in G.get_unreachable_nodes())
    assert unreachable == set([20, 21])
    # unreachable from source
    G.add_path((33, 32, 31, 9))
    unreachable = set(G.nodes[x] for x in G.get_unreachable_nodes())
    assert unreachable == set([20, 21, 33, 32, 31])
コード例 #10
0
ファイル: test_graph.py プロジェクト: yniknafs/taco
def test_topological_sort():
    G = Graph()
    G.add_path((G.SOURCE, 10, 20, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, G.SINK))
    G.add_path((G.SOURCE, 20, G.SINK))
    assert G.is_topological_sort(G.topological_sort())
    t_dict, locus = read_single_locus('noc2l_locus.gtf')
    for sgraph in locus.create_splice_graphs():
        pgf = PathGraphFactory(sgraph)
        G = pgf.create(k=1)
        assert G.is_topological_sort(G.topological_sort())
        assert G.is_topological_sort(G.topological_sort_dfs())
コード例 #11
0
ファイル: test_graph.py プロジェクト: yniknafs/taco
def test_is_topological_sort():
    G = Graph()
    G.add_path((G.SOURCE, 10, 20, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, G.SINK))
    G.add_path((G.SOURCE, 20, G.SINK))

    toposort = (G.SOURCE, 10, 30, 20, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert not G.is_topological_sort(order)
    toposort = (G.SOURCE, 20, 10, 30, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert not G.is_topological_sort(order)
    toposort = (G.SOURCE, 10, 20, 30, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert G.is_topological_sort(order)

    G = Graph()
    G.add_path((G.SOURCE, 10, 30, 40, G.SINK))
    G.add_path((G.SOURCE, 10, 20, 40, G.SINK))

    toposort = (G.SOURCE, 10, 20, 30, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert G.is_topological_sort(order)
    toposort = (G.SOURCE, 10, 30, 20, 40, G.SINK)
    order = (G.node_id_map[x] for x in toposort)
    assert G.is_topological_sort(order)
コード例 #12
0
ファイル: test_graph.py プロジェクト: yniknafs/taco
def test_is_valid():
    G = Graph()
    assert not G.is_valid()
    G.add_path((Graph.SOURCE,) + tuple(range(10)) + (Graph.SINK,))
    assert G.is_valid()
    G.remove_node_id(G.node_id_map[5])
    assert not G.is_valid()
    G.remove_unreachable_nodes()
    assert not G.is_valid()