예제 #1
0
    def test_load_tree(self):
        # test to load a given tree-file
        tree = LoadTree(test_data('phylogeny.tre'))

        taxa = sorted(["Beijing", "Changsha", "Chengdu", "Fuzhou", "Guangzhou",
                       "Guiyang", "Haerbin", "Haikou", "Hangzhou", "Hefei",
                       "Huhehaote", "Jian\u2019ou", "Jinan", "Kunming",
                       "Lanzhou",
                       "Meixian", "Nanchang", "Nanjing", "Nanning", "Pingyao",
                       "Qingdao", "Shanghai", "Shantou", "Shexian", "Suzhou",
                       "Taibei", "Taiyuan", "Taoyuan", "Tianjin", "Tunxi",
                       "Wenzhou", "Wuhan", "Wulumuqi", "Xi\u2019an", "Xiamen",
                       "Xianggang", "Xiangtan", "Xining", "Yinchuan",
                       "Zhengzhou"])

        for a, b in zip(sorted(tree.taxa), taxa):
            assert a == b

        tree = LoadTree("((((((((Taiyuan,Pingyao,Huhehaote),"
                        "((((Xi’an,Xining,Zhengzhou),(Lanzhou,Yinchuan,"
                        "Wulumuqi)),"
                        "(((Tianjin,Jinan),Qingdao),Beijing,Haerbin)),"
                        "(((Guiyang,Kunming),Chengdu,Wuhan),(Nanjing,Hefei)))),"
                        "(Xiangtan,Changsha)),Nanchang),(Shexian,Tunxi)),"
                        "((Shanghai,Suzhou,Hangzhou),Wenzhou)),"
                        "(((Xianggang,Guangzhou),Nanning),(Meixian,Taoyuan))),"
                        "((((Xiamen,Taibei),Shantou,Haikou),Fuzhou),Jian’ou));")

        for a, b in zip(sorted(tree.taxa), taxa):
            assert a == b
예제 #2
0
파일: tree.py 프로젝트: tjade273/lingpy
    def __init__(self, tree, **keywords):

        # this is an absolutely nasty hack, but it helps us to maintain
        # lingpy-specific aspects of cogent's trees and allows us to include
        # them in our documentation
        if type(tree) == str:
            if tree[-4:] not in ['.nwk', '.txt']:
                tmp = LoadTree(treestring=tree)
            else:
                tmp = LoadTree(tree)
        else:
            if type(tree) == list:
                tmp = LoadTree(treestring=random_tree(tree, **keywords))
            else:
                tmp = LoadTree(tree)

        for key, val in tmp.__dict__.items():
            self.__dict__[key] = val

        self._edge_len = len(self.getNodeNames()) - 1
예제 #3
0
    def __init__(self, tree, **keywords):

        # this is an absolutely nasty hack, but it helps us to maintain
        # lingpy-specific aspects of cogent's trees and allows us to include
        # them in our documentation
        if type(tree) == str:
            if not os.path.isfile(tree):
                tmp = LoadTree(treestring=tree)
            else:
                tmp = LoadTree(tree)
        else:
            if type(tree) == list:
                tmp = LoadTree(treestring=random_tree(tree, **keywords))
            else:  # pragma: no cover
                # last ditch attempt to try load
                tmp = LoadTree(tree)

        for key, val in tmp.__dict__.items():
            self.__dict__[key] = val

        self._edge_len = len(self.getNodeNames()) - 1
예제 #4
0
    def test_more_trees(self):

        tree = LoadTree('((a:1,b:1):2,(c:3,d:4):5);')
        tree2 = LoadTree('((a,b),(c,d));')
        assert tree.sameShape(tree)
        tree.tipToTipDistances()
        tree.getMaxTipTipDistance()
        tree.maxTipTipDistance()
        tree.getSubTree(['a','b','c'])
        assert tree.compareName(tree2) == 0 
        assert tree.compareName(tree) == 0
        assert tree.compareName('(a,b),(c,d));') != 0

        tree.descendantArray()
        tree.nameUnnamedNodes()
        tree.makeTreeArray()
        tree.getNewickRecursive(with_distances=True, semicolon=False,
                escape_name=False)

        assert 'a' in tree.getNodesDict()
        assert 'b' in tree.taxa
        assert tree.getDistances()['a', 'b'] == 2
        assert tree.getMaxTipTipDistance()[0] == 12
        assert tree.maxTipTipDistance()[0] == 12


        ntree = tree.copyRecursive()
        ntree2 = tree2.copy()
        assert ntree.sameShape(ntree2)
        assert 'a' in tree.getNodeNames()

        assert_raises(TreeParseError, LoadTree, '(a,b;');
        assert_raises(TreeParseError, LoadTree, treestring="(a,b'");
        assert_raises(TreeParseError, LoadTree, treestring="(a,'b'");
        assert_raises(TreeParseError, LoadTree, treestring="(a,'b'\n");
        assert_raises(TreeParseError, LoadTree, treestring="(a,'b-c'");
        assert_raises(TreeParseError, LoadTree, "(a,b),('c_d',e);")
        new_tree = LoadTree("((a,b),('',e));")
        new_tree.nameUnnamedNodes()
예제 #5
0
def test_load_tree(test_data):
    # test to load a given tree-file
    tree = LoadTree(str(test_data / 'phylogeny.tre'))
    assert tree.compareByPartitions(tree) == 0
    taxa = sorted([
        "Beijing", "Changsha", "Chengdu", "Fuzhou", "Guangzhou", "Guiyang",
        "Haerbin", "Haikou", "Hangzhou", "Hefei", "Huhehaote", "Jian\u2019ou",
        "Jinan", "Kunming", "Lanzhou", "Meixian", "Nanchang", "Nanjing",
        "Nanning", "Pingyao", "Qingdao", "Shanghai", "Shantou", "Shexian",
        "Suzhou", "Taibei", "Taiyuan", "Taoyuan", "Tianjin", "Tunxi",
        "Wenzhou", "Wuhan", "Wulumuqi", "Xi\u2019an", "Xiamen", "Xianggang",
        "Xiangtan", "Xining", "Yinchuan", "Zhengzhou"
    ])
    assert len(tree.getConnectingEdges('Beijing', 'Xiangtan')) == 8
    for a, b in zip(sorted(tree.taxa), taxa):
        assert a == b
    tree.removeNode('Beijing')
    tree.prune()

    tree = LoadTree(tip_names=['Beijing', 'Changsha'])
    assert len(tree.taxa) == 2

    tree = LoadTree("((((((((Taiyuan,Pingyao,Huhehaote),"
                    "((((Xi’an,Xining,Zhengzhou),(Lanzhou,Yinchuan,"
                    "Wulumuqi)),"
                    "(((Tianjin,Jinan),Qingdao),Beijing,Haerbin)),"
                    "(((Guiyang,Kunming),Chengdu,Wuhan),(Nanjing,Hefei)))),"
                    "(Xiangtan,Changsha)),Nanchang),(Shexian,Tunxi)),"
                    "((Shanghai,Suzhou,Hangzhou),Wenzhou)),"
                    "(((Xianggang,Guangzhou),Nanning),(Meixian,Taoyuan))),"
                    "((((Xiamen,Taibei),Shantou,Haikou),Fuzhou),Jian’ou));")

    for a, b in zip(sorted(tree.taxa), taxa):
        assert a == b