1

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

我想确保这些树植根于同一个根或外群。

据我所知,在 ete2 中,一个只能设置根,但无法找到根并将另一棵树的根放在同一棵树上。

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

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

所以在 t1 中,树根植于以 b 和 c 结尾的外群。我想在同一个组中获得这个外组和 root t2。

有谁知道是否有可能确保树木的根系相同?或者另一个包是否包含这种方法?

4

1 回答 1

1

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
于 2014-03-31T14:44:47.943 回答