예제 #1
0
def test_newick__add_support__multiple_trees__partially_different_topologies():
    main_tree  =  Newick.from_string("(((A,B),C),D);")
    bootstraps = [Newick.from_string("(((C,D),A),B);"),
                  Newick.from_string("(((A,D),B),C);")]
    expected   =  Newick.from_string("(((A,B)1,C)2,D);")
    result     = main_tree.add_support(bootstraps)
    assert_equal(expected, result)
예제 #2
0
def test_newick__add_support__multiple_trees__two_cladees():
    main_tree  =  Newick.from_string("((A,B),(C,(D,E)));")
    bootstraps = [Newick.from_string("((((C,E),D),A),B);"),
                  Newick.from_string("(((A,(C,D)),B),E);")]
    expected   =  Newick.from_string("((A,B)1,(C,(D,E)0)1);")
    result     = main_tree.add_support(bootstraps)
    assert_equal(expected, result)
예제 #3
0
 def _do_test_formatting(fmt, expected):
     main_tree  =  Newick.from_string("(((A,B),C),D);")
     bootstraps = [Newick.from_string("(((C,D),A),B);"),
                   Newick.from_string("(((C,B),A),D);"),
                   Newick.from_string("(((A,D),B),C);")]
     expected   =  Newick.from_string(expected)
     result     = main_tree.add_support(bootstraps, fmt)
     assert_equal(expected, result)
예제 #4
0
def test_newick__add_support__multiple_trees__two_cladees():
    main_tree = Newick.from_string("((A,B),(C,(D,E)));")
    bootstraps = [
        Newick.from_string("((((C,E),D),A),B);"),
        Newick.from_string("(((A,(C,D)),B),E);")
    ]
    expected = Newick.from_string("((A,B)1,(C,(D,E)0)1);")
    result = main_tree.add_support(bootstraps)
    assert_equal(expected, result)
예제 #5
0
def test_newick__add_support__multiple_trees__partially_different_topologies():
    main_tree = Newick.from_string("(((A,B),C),D);")
    bootstraps = [
        Newick.from_string("(((C,D),A),B);"),
        Newick.from_string("(((A,D),B),C);")
    ]
    expected = Newick.from_string("(((A,B)1,C)2,D);")
    result = main_tree.add_support(bootstraps)
    assert_equal(expected, result)
예제 #6
0
 def _do_test_formatting(fmt, expected):
     main_tree = Newick.from_string("(((A,B),C),D);")
     bootstraps = [
         Newick.from_string("(((C,D),A),B);"),
         Newick.from_string("(((C,B),A),D);"),
         Newick.from_string("(((A,D),B),C);")
     ]
     expected = Newick.from_string(expected)
     result = main_tree.add_support(bootstraps, fmt)
     assert_equal(expected, result)
예제 #7
0
def test_newick__parse__subnode__two_taxa():
    child_node_1 = Newick(name="A")
    child_node_2a = Newick(name="B")
    child_node_2b = Newick(name="C")
    child_node_2 = Newick(children=[child_node_2a, child_node_2b])
    top_node = Newick(children=[child_node_1, child_node_2])
    assert_equal(Newick.from_string("(A,(B,C));"), top_node)
예제 #8
0
def test_newick__parse__subnode__two_taxa():
    child_node_1  = Newick(name = "A")
    child_node_2a = Newick(name = "B")
    child_node_2b = Newick(name = "C")
    child_node_2  = Newick(children = [child_node_2a, child_node_2b])
    top_node   = Newick(children = [child_node_1, child_node_2])
    assert_equal(Newick.from_string("(A,(B,C));"), top_node)
예제 #9
0
파일: newick.py 프로젝트: CarlesV/paleomix
def _read_tree_files(filenames):
    trees = []
    for filename in filenames:
        with open(filename) as handle:
            for line in handle:
                trees.append(Newick.from_string(line))
    return trees
예제 #10
0
def test_newick__wikipedia_example_8():
    # a tree rooted on a leaf node (rare)
    taxa_b = Newick(length = "0.2", name = "B")
    taxa_c = Newick(length = "0.3", name = "C")
    taxa_d = Newick(length = "0.4", name = "D")
    node_e = Newick(length = "0.5", name = "E", children = [taxa_c, taxa_d])
    node_f = Newick(length = "0.1", name = "F", children = [taxa_b, node_e])
    node_a = Newick(name = "A", children = [node_f])
    assert_equal(Newick.from_string("((B:0.2,(C:0.3,D:0.4)E:0.5)F:0.1)A;"), node_a)
예제 #11
0
def test_newick__wikipedia_example_3():
    # all nodes are named
    taxa_d = Newick(name = "D")
    taxa_c = Newick(name = "C")
    taxa_sub = Newick(children = [taxa_c, taxa_d], name = "E")
    taxa_b = Newick(name = "B")
    taxa_a = Newick(name = "A")
    top_node = Newick(children = [taxa_a, taxa_b, taxa_sub], name = "F")
    assert_equal(Newick.from_string("(A,B,(C,D)E)F;"), top_node)
예제 #12
0
def test_newick__wikipedia_example_6():
    # distances and leaf names (popular)
    taxa_d = Newick(length = "0.4", name = "D")
    taxa_c = Newick(length = "0.3", name = "C")
    taxa_sub = Newick(children = [taxa_c, taxa_d], length = "0.5")
    taxa_b = Newick(length = "0.2", name = "B")
    taxa_a = Newick(length = "0.1", name = "A")
    top_node = Newick(children = [taxa_a, taxa_b, taxa_sub])
    assert_equal(Newick.from_string("(A:0.1,B:0.2,(C:0.3,D:0.4):0.5);"), top_node)
예제 #13
0
def test_newick__wikipedia_example_5():
    # all have a distance to parent
    taxa_d = Newick(length = "0.4")
    taxa_c = Newick(length = "0.3")
    taxa_sub = Newick(children = [taxa_c, taxa_d], length = "0.5")
    taxa_b = Newick(length = "0.2")
    taxa_a = Newick(length = "0.1")
    top_node = Newick(children = [taxa_a, taxa_b, taxa_sub], length = "0.0")
    assert_equal(Newick.from_string("(:0.1,:0.2,(:0.3,:0.4):0.5):0.0;"), top_node)
예제 #14
0
def test_newick__wikipedia_example_7():
    # distances and all names
    taxa_d = Newick(length = "0.4", name = "D")
    taxa_c = Newick(length = "0.3", name = "C")
    taxa_sub = Newick(children = [taxa_c, taxa_d], length = "0.5", name = "E")
    taxa_b = Newick(length = "0.2", name = "B")
    taxa_a = Newick(length = "0.1", name = "A")
    top_node = Newick(children = [taxa_a, taxa_b, taxa_sub], name = "F")
    assert_equal(Newick.from_string("(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F;"), top_node)
예제 #15
0
def test_newick__wikipedia_example_3():
    # all nodes are named
    taxa_d = Newick(name="D")
    taxa_c = Newick(name="C")
    taxa_sub = Newick(children=[taxa_c, taxa_d], name="E")
    taxa_b = Newick(name="B")
    taxa_a = Newick(name="A")
    top_node = Newick(children=[taxa_a, taxa_b, taxa_sub], name="F")
    assert_equal(Newick.from_string("(A,B,(C,D)E)F;"), top_node)
예제 #16
0
def test_newick__wikipedia_example_2():
    # leaf nodes are named
    taxa_d = Newick(name="D")
    taxa_c = Newick(name="C")
    taxa_sub = Newick(children=[taxa_c, taxa_d])
    taxa_b = Newick(name="B")
    taxa_a = Newick(name="A")
    top_node = Newick(children=[taxa_a, taxa_b, taxa_sub])
    assert_equal(Newick.from_string("(A,B,(C,D));"), top_node)
예제 #17
0
def test_newick__wikipedia_example_4():
    # all but root node have a distance to parent
    taxa_d = Newick(length="0.4")
    taxa_c = Newick(length="0.3")
    taxa_sub = Newick(children=[taxa_c, taxa_d], length="0.5")
    taxa_b = Newick(length="0.2")
    taxa_a = Newick(length="0.1")
    top_node = Newick(children=[taxa_a, taxa_b, taxa_sub])
    assert_equal(Newick.from_string("(:0.1,:0.2,(:0.3,:0.4):0.5);"), top_node)
예제 #18
0
def test_newick__wikipedia_example_2():
    # leaf nodes are named
    taxa_d = Newick(name = "D")
    taxa_c = Newick(name = "C")
    taxa_sub = Newick(children = [taxa_c, taxa_d])
    taxa_b = Newick(name = "B")
    taxa_a = Newick(name = "A")
    top_node = Newick(children = [taxa_a, taxa_b, taxa_sub])
    assert_equal(Newick.from_string("(A,B,(C,D));"), top_node)
예제 #19
0
def test_newick__wikipedia_example_8():
    # a tree rooted on a leaf node (rare)
    taxa_b = Newick(length="0.2", name="B")
    taxa_c = Newick(length="0.3", name="C")
    taxa_d = Newick(length="0.4", name="D")
    node_e = Newick(length="0.5", name="E", children=[taxa_c, taxa_d])
    node_f = Newick(length="0.1", name="F", children=[taxa_b, node_e])
    node_a = Newick(name="A", children=[node_f])
    assert_equal(Newick.from_string("((B:0.2,(C:0.3,D:0.4)E:0.5)F:0.1)A;"),
                 node_a)
예제 #20
0
def test_newick__wikipedia_example_6():
    # distances and leaf names (popular)
    taxa_d = Newick(length="0.4", name="D")
    taxa_c = Newick(length="0.3", name="C")
    taxa_sub = Newick(children=[taxa_c, taxa_d], length="0.5")
    taxa_b = Newick(length="0.2", name="B")
    taxa_a = Newick(length="0.1", name="A")
    top_node = Newick(children=[taxa_a, taxa_b, taxa_sub])
    assert_equal(Newick.from_string("(A:0.1,B:0.2,(C:0.3,D:0.4):0.5);"),
                 top_node)
예제 #21
0
def test_newick__wikipedia_example_7():
    # distances and all names
    taxa_d = Newick(length="0.4", name="D")
    taxa_c = Newick(length="0.3", name="C")
    taxa_sub = Newick(children=[taxa_c, taxa_d], length="0.5", name="E")
    taxa_b = Newick(length="0.2", name="B")
    taxa_a = Newick(length="0.1", name="A")
    top_node = Newick(children=[taxa_a, taxa_b, taxa_sub], name="F")
    assert_equal(Newick.from_string("(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F;"),
                 top_node)
예제 #22
0
def test_newick__reroot_on_midpoint__nested_clades():
    source = Newick.from_string("((A:2,(B:2,C:3):4):1,(D:1,E:0.5):2);")
    rerooted = source.reroot_on_midpoint()
    expected = Newick.from_string("(((D:1,E:0.5):3.0,A:2):1.5,(B:2,C:3):2.5);")
    assert_equal(expected, rerooted)
예제 #23
0
def test_newick__parse__ignore_whitespace():
    assert_equal(Newick.from_string("(A,B);"), Newick.from_string("(A, B);"))
예제 #24
0
def test_newick__parse__two_taxa():
    child_node_1 = Newick(name = "A")
    child_node_2 = Newick(name = "Bc")
    top_node   = Newick(children = [child_node_1, child_node_2])
    assert_equal(Newick.from_string("(A,Bc);"), top_node)
예제 #25
0
def test_newick__parse__three_taxa():
    child_node_1 = Newick(name="A")
    child_node_2 = Newick(name="Bc")
    child_node_3 = Newick(name="DeF")
    top_node = Newick(children=[child_node_1, child_node_2, child_node_3])
    assert_equal(Newick.from_string("(A,Bc,DeF);"), top_node)
예제 #26
0
def test_newick__add_support__single_identical_tree__different_rooting():
    main_tree  =  Newick.from_string("(((A,B),C),D);")
    bootstraps = [Newick.from_string("(((C,D),B),A);")]
    expected   =  Newick.from_string("(((A,B)1,C)1,D);")
    result     = main_tree.add_support(bootstraps)
    assert_equal(expected, result)
예제 #27
0
 def _test_invalid_branch_lengths(newick):
     source   = Newick.from_string(newick)
     assert_raises(GraphError, source.reroot_on_midpoint)
예제 #28
0
def test_newick__reroot_on_midpoint__nested_clades():
    source   = Newick.from_string("((A:2,(B:2,C:3):4):1,(D:1,E:0.5):2);")
    rerooted = source.reroot_on_midpoint()
    expected = Newick.from_string("(((D:1,E:0.5):3.0,A:2):1.5,(B:2,C:3):2.5);")
    assert_equal(expected, rerooted)
예제 #29
0
def test_newick__add_support__unique_names_required():
    main_tree = Newick.from_string("(((A,B),C),A);")
    bootstraps = [Newick.from_string("(((A,B),C),A);")]
    assert_raises(NewickError, main_tree.add_support, bootstraps)
예제 #30
0
def test_newick__parse__minimal_newick__name_only():
    top_node = Newick(name="A")
    assert_equal(Newick.from_string("A;"), top_node)
예제 #31
0
def test_newick__parse__single_taxa():
    child_node = Newick(name="Ab")
    top_node = Newick(children=[child_node])
    assert_equal(Newick.from_string("(Ab);"), top_node)
예제 #32
0
def test_newick__reroot_on_midpoint__two_clades():
    source = Newick.from_string("((A:7,B:2):1,(C:1,D:0.5):2);")
    rerooted = source.reroot_on_midpoint()
    expected = Newick.from_string("(((C:1,D:0.5):3.0,B:2):1.5,A:5.5);")
    assert_equal(expected, rerooted)
예제 #33
0
def test_newick__parse__ignore_whitespace():
    assert_equal(Newick.from_string("(A,B);"), Newick.from_string("(A, B);"))
예제 #34
0
def test_newick__add_support__single_identical_tree__different_rooting():
    main_tree = Newick.from_string("(((A,B),C),D);")
    bootstraps = [Newick.from_string("(((C,D),B),A);")]
    expected = Newick.from_string("(((A,B)1,C)1,D);")
    result = main_tree.add_support(bootstraps)
    assert_equal(expected, result)
예제 #35
0
def test_newick__reroot_on_midpoint__two_clades():
    source   = Newick.from_string("((A:7,B:2):1,(C:1,D:0.5):2);")
    rerooted = source.reroot_on_midpoint()
    expected = Newick.from_string("(((C:1,D:0.5):3.0,B:2):1.5,A:5.5);")
    assert_equal(expected, rerooted)
예제 #36
0
def test_newick__reroot_on_midpoint__single_node():
    source = Newick.from_string("(A:3.0);")
    expected = Newick.from_string("(A:3.0);")
    assert_equal(expected, source.reroot_on_midpoint())
예제 #37
0
def test_newick__reroot_on_midpoint__reroot_on_internal_node():
    source   = Newick.from_string("((A:5.0,B:1.0)C:2.0,D:3.0);")
    rerooted = source.reroot_on_midpoint()
    expected = Newick.from_string("(A:5.0,B:1.0,D:5.0)C;")
    assert_equal(expected, rerooted)
예제 #38
0
def test_newick__reroot_on_taxa__no_non_root_taxa():
    source = Newick.from_string("((B,C),((D,E),A));")
    assert_raises(ValueError, source.reroot_on_taxa, ("A", "B", "C", "D", "E"))
예제 #39
0
def test_newick__add_support__no_trees():
    main_tree  =  Newick.from_string("(((A,B),C),D);")
    expected   =  Newick.from_string("(((A,B)0,C)0,D);")
    result     = main_tree.add_support([])
    assert_equal(expected, result)
예제 #40
0
def test_newick__parse__minimal_newick__name_only():
    top_node = Newick(name = "A")
    assert_equal(Newick.from_string("A;"), top_node)
예제 #41
0
def test_newick__reroot_on_midpoint__two_nodes():
    source = Newick.from_string("(A:3.0,B:8.0);")
    rerooted = source.reroot_on_midpoint()
    expected = Newick.from_string("(A:5.5,B:5.5);")
    assert_equal(expected, rerooted)
예제 #42
0
def test_newick__parse__two_taxa():
    child_node_1 = Newick(name="A")
    child_node_2 = Newick(name="Bc")
    top_node = Newick(children=[child_node_1, child_node_2])
    assert_equal(Newick.from_string("(A,Bc);"), top_node)
예제 #43
0
def test_newick__add_support__differing_leaf_names():
    main_tree  =  Newick.from_string("(((A,B),C),D);")
    bootstraps = [Newick.from_string("(((C,E),B),A);")]
    assert_raises(NewickError, main_tree.add_support, bootstraps)
예제 #44
0
 def _newick_str_input_equals_output(nwk_str):
     nodes  = Newick.from_string(nwk_str)
     result = str(nodes)
     assert_equal(result, nwk_str)
예제 #45
0
def test_newick__add_support__unique_names_required():
    main_tree  =  Newick.from_string("(((A,B),C),A);")
    bootstraps = [Newick.from_string("(((A,B),C),A);")]
    assert_raises(NewickError, main_tree.add_support, bootstraps)
예제 #46
0
def test_newick__reroot_on_taxa__multiple_taxa__paraphylogeny():
    source = Newick.from_string("((B,C),((D,E),A));")
    expected = Newick.from_string("(((B,C),A),(D,E));")
    assert_equal(expected, source.reroot_on_taxa(("A", "C")))
예제 #47
0
def test_newick__parse__single_taxa():
    child_node = Newick(name = "Ab")
    top_node   = Newick(children = [child_node])
    assert_equal(Newick.from_string("(Ab);"), top_node)
예제 #48
0
def test_newick__reroot_on_taxa__unknown_taxa():
    source = Newick.from_string("((B,C),((D,E),A));")
    assert_raises(ValueError, source.reroot_on_taxa, ("A", "Z"))
예제 #49
0
def test_newick__parse__three_taxa():
    child_node_1 = Newick(name = "A")
    child_node_2 = Newick(name = "Bc")
    child_node_3 = Newick(name = "DeF")
    top_node   = Newick(children = [child_node_1, child_node_2, child_node_3])
    assert_equal(Newick.from_string("(A,Bc,DeF);"), top_node)
예제 #50
0
def test_newick__reroot_on_midpoint__reroot_on_internal_node():
    source = Newick.from_string("((A:5.0,B:1.0)C:2.0,D:3.0);")
    rerooted = source.reroot_on_midpoint()
    expected = Newick.from_string("(A:5.0,B:1.0,D:5.0)C;")
    assert_equal(expected, rerooted)
예제 #51
0
def test_newick__reroot_on_taxa__unknown_taxa():
    source = Newick.from_string("((B,C),((D,E),A));")
    assert_raises(ValueError, source.reroot_on_taxa, ("A", "Z"))
예제 #52
0
def test_newick__add_support__differing_leaf_names():
    main_tree = Newick.from_string("(((A,B),C),D);")
    bootstraps = [Newick.from_string("(((C,E),B),A);")]
    assert_raises(NewickError, main_tree.add_support, bootstraps)
예제 #53
0
def test_newick__reroot_on_taxa__no_non_root_taxa():
    source = Newick.from_string("((B,C),((D,E),A));")
    assert_raises(ValueError, source.reroot_on_taxa, ("A", "B", "C", "D", "E"))
예제 #54
0
 def _test_invalid_branch_lengths(newick):
     source = Newick.from_string(newick)
     assert_raises(GraphError, source.reroot_on_midpoint)
예제 #55
0
def test_newick__reroot_on_midpoint__single_node():
    source   = Newick.from_string("(A:3.0);")
    expected = Newick.from_string("(A:3.0);")
    assert_equal(expected, source.reroot_on_midpoint())
예제 #56
0
def test_newick__reroot_on_midpoint__two_nodes():
    source   = Newick.from_string("(A:3.0,B:8.0);")
    rerooted = source.reroot_on_midpoint()
    expected = Newick.from_string("(A:5.5,B:5.5);")
    assert_equal(expected, rerooted)
예제 #57
0
 def _newick_str_input_equals_output(nwk_str):
     nodes = Newick.from_string(nwk_str)
     result = str(nodes)
     assert_equal(result, nwk_str)
예제 #58
0
def test_newick__add_support__no_trees():
    main_tree = Newick.from_string("(((A,B),C),D);")
    expected = Newick.from_string("(((A,B)0,C)0,D);")
    result = main_tree.add_support([])
    assert_equal(expected, result)
예제 #59
0
def test_newick__reroot_on_taxa__multiple_taxa__paraphylogeny():
    source   = Newick.from_string("((B,C),((D,E),A));")
    expected = Newick.from_string("(((B,C),A),(D,E));")
    assert_equal(expected, source.reroot_on_taxa(("A", "C")))
예제 #60
0
def test_newick__reroot_on_taxa__multiple_taxa__clade():
    source = Newick.from_string("((A,(B,C)),(D,E));")
    expected = Newick.from_string("(((D,E),A),(B,C));")
    assert_equal(expected, source.reroot_on_taxa(("B", "C")))