我写了一个程序来计算两棵树之间的距离。
树木已经扎根。

我想确保这些树都植根于同一根或外组。

据我所知,在ete2中,一个树只能设置根目录,而不能找到该树的根目录,而将另一棵树放在同一棵树上。

我想在一棵树中找到根,并在另一棵树中设置相同的根。因此,树木以相同的方式生根。

#>>> print t1
#
#         /-aaaaaaaaad
#      /-|
#   /-|   \-aaaaaaaaae
#  |  |
#--|   \-aaaaaaaaaa
#  |
#  |   /-aaaaaaaaab
#   \-|
#      \-aaaaaaaaac
#>>> print t2
#
#      /-aaaaaaaaaa
#   /-|
#  |  |   /-aaaaaaaaab
#  |   \-|
#--|      \-aaaaaaaaac
#  |
#  |   /-aaaaaaaaad
#   \-|
#      \-aaaaaaaaae
#


因此,在t1中,树的根源是以b和c结尾的外群。我想让这个outgroup和root t2在同一组上。

有谁知道是否有可能确保树木植根相同?还是其他软件包中包含这种方法?

最佳答案

etetoolkit提供用于根植树的set_outgroup方法。如果只想在两棵树中具有相同的根以进行拓扑比较,则最简单的方法是选择与两棵树中的根相同的提示名称。

from ete2 import Tree
# generate 2 random trees
t1 = Tree()
t2 = Tree()
t1.populate(5)
t2.populate(5)
# root both to the same tip name
root = t1.get_leaf_names()[0]
t1.set_outgroup(root)
t2.set_outgroup(root)

print t1
print t2
#
#  /-aaaaaaaaaa
#-|
# |   /-aaaaaaaaab
#  \-|
#    |   /-aaaaaaaaac
#     \-|
#       |   /-aaaaaaaaad
#        \-|
#           \-aaaaaaaaae
#
#  /-aaaaaaaaaa
# |
#-|      /-aaaaaaaaad
# |   /-|
# |  |   \-aaaaaaaaae
#  \-|
#    |   /-aaaaaaaaab
#     \-|
#        \-aaaaaaaaac

关于python - python在同一根节点上根两棵树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22756518/

10-13 02:22