python 将两棵树放在同一个根节点上

标签 python tree etetoolkit

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

我想确保这些树都 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/

相关文章:

haskell - 如何在 Haskell 中找到包含二叉树中最小元素的节点?

c - 二叉搜索树,节点删除崩溃

python - ete2如果一个节点是一对坐标怎么操作

python - 将 hcluster 生成的 ndarray 转换为 Newick 字符串以用于 ete2 包

c - 如何解析整个 2-3 树?

python - 如何将变量文件名传递给 python ete?

python - 如何计算由端点和弧上点给出的两条弧的交点?

python - Pycharm 没有加载找到我的静态文件

python - Keras/Tensorflow 计算批处理的mean_iou

python - 如何从另一个函数创建顶级模块函数?