我编写了一个程序来计算两棵树之间的距离。 树已经生根了。
我想确保这些树都 Root 于相同的根或外群。
据我所知,在ete2中,只能设置根,但无法找到根,也无法在同一棵树上为另一棵树建立根。
我想在一棵树中找到根,并在另一棵树中设置相同的根。所以树木以同样的方式生根。
#>>> print t1
#
# /-aaaaaaaaad
# /-|
# /-| \-aaaaaaaaae
# | |
#--| \-aaaaaaaaaa
# |
# | /-aaaaaaaaab
# \-|
# \-aaaaaaaaac
#>>> print t2
#
# /-aaaaaaaaaa
# /-|
# | | /-aaaaaaaaab
# | \-|
#--| \-aaaaaaaaac
# |
# | /-aaaaaaaaad
# \-|
# \-aaaaaaaaae
#
因此,在 t1 中,树的根植于以 b 和 c 结尾的外群。我想让这个外群和根 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 将两棵树放在同一个根节点上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22756518/