我写了一个程序来计算两棵树之间的距离。
树木已经扎根。
我想确保这些树都植根于同一根或外组。
据我所知,在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/