Python ete3 - 有没有办法拉伸系统发育树的分支?

耶尔

我试图阅读一棵系统​​发育树并将其分支拉伸成比原来更大或更小,但我没有找到方法。拉伸需要在树本身上 - 而不是在其可视化上。

例如,以下代码读取一棵树并呈现它:

from ete3 import Tree

t = Tree("(2azaa:0.1871453443,1dz0a:0.1944528747,   (((1joi:0.1917345578,1nwpa:0.206793251):0.2050584423,"
     "(1jzga:0.3027313573,1rkra:0.2710518895):0.08148637118):0.06756061176,(1cuoa:0.2959705289,"
     "((1qhqa:0.585997308,1gy1a:2.509606787):0.1590837051,(1kdj:0.9427371887,"
     "((1iuz:0.1918780006,7pcy:0.2035503755):0.1750205426,((2plt:0.2727097306,(2b3ia:0.6259053315,"
     "(((1bawa:0.3036227494,1nin:0.5134587308):0.1375675558,((2raca:0.4617882857,1id2a:0.3274320042):0.7764884063,"
     "(1pmy:0.7017063073,(1bqk:0.2214168026,(1adwa:0.4171298259,1paz:0.4214910379):0.08599165577):0.2074622534):0.9354371144):0.4486761297)"
     ":0.1105387947,(1m9wa:0.4551681561,1bxva:0.3931722476):0.06879588421):0.1131812572):0.4242876607):0.1447393581,"
     "(1plb:0.2176281022,(1byoa:0.2314554253,(9pcy:0.2456728049,(1ag6:0.1776514893,1plc:0.318467746):0.02728470893)"
     ":0.07383541027):0.1260361833):0.2659408726):0.05013755844):0.2637791318):1.001560925):1.018869112):0.4609302267):0.1807238866);")

t.show()

以下链接讨论了如何使用该库,但我没有找到我要找的内容:

http://etetoolkit.org/docs/latest/tutorial/tutorial_trees.html

任何人都可以帮忙吗?

编辑:如果有其他 Python 库可以做到这一点,我很想听听它是哪个以及如何完成的。

Edit2:我知道在 R 中有一个名为“ape”的库,然后可以非常简单地做到这一点……也许使用它的人知道某些 python 库中的并行操作?

耶尔

很长一段时间后,我找到了一个解决方案:据我所知,系统发育 python 库中没有内置函数来拉伸树。这很奇怪,我希望我是错的。

然而,一旦你理解了它们的数据结构,就有一种简单的方法来做到这一点:你需要做的就是遍历树中的所有边并将它们乘以所需的因子。根据您使用的库,这是以不同的方式完成的。以下是如何使用 dendropy 和 ete3 将树拉伸两倍大小的两个示例:

from ete3 import Tree
import dendropy as dp

original_tree = "(2azaa:0.1871453443,1dz0a:0.1944528747,(((1joi:0.1917345578,1nwpa:0.206793251):0.2050584423,"\
     "(1jzga:0.3027313573,1rkra:0.2710518895):0.08148637118):0.06756061176,(1cuoa:0.2959705289,"\
     "((1qhqa:0.585997308,1gy1a:2.509606787):0.1590837051,(1kdj:0.9427371887,"\
     "((1iuz:0.1918780006,7pcy:0.2035503755):0.1750205426,((2plt:0.2727097306,(2b3ia:0.6259053315,"\
     "(((1bawa:0.3036227494,1nin:0.5134587308):0.1375675558,((2raca:0.4617882857,1id2a:0.3274320042):0.7764884063,"\
     "(1pmy:0.7017063073,(1bqk:0.2214168026,(1adwa:0.4171298259,1paz:0.4214910379):0.08599165577):0.2074622534):0.9354371144):0.4486761297)"\
     ":0.1105387947,(1m9wa:0.4551681561,1bxva:0.3931722476):0.06879588421):0.1131812572):0.4242876607):0.1447393581,"\
     "(1plb:0.2176281022,(1byoa:0.2314554253,(9pcy:0.2456728049,(1ag6:0.1776514893,1plc:0.318467746):0.02728470893)"\
     ":0.07383541027):0.1260361833):0.2659408726):0.05013755844):0.2637791318):1.001560925):1.018869112):0.4609302267):0.1807238866);"

#dendropy test
print("These are the dendropy results:")
t1 = dp.Tree.get_from_string(original_tree,"newick")
t2 = dp.Tree.get_from_string(original_tree,"newick")
for edge in t2.levelorder_edge_iter():
    if(edge.length == None):
        continue
    edge.length *=2
print(t1)
print(t2)

#ete3 test
print("These are the ete3 results:")
t3 = Tree(original_tree)
t4 = Tree(original_tree)
for node in t4.iter_descendants():
    node.dist*=2
print(t3.write())
print(t4.write())

我们可以从这个案例中学到的另一个教训——在搜索内置函数之前,总是对你使用的数据结构做功课......

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python / ete3:将最密切相关的叶子定位到系统树中的特定物种

来自分类Dev

如何给“ ete3”树上的叶子着色?(Python 3)

来自分类Dev

如何使用ete3同时显示多棵树?

来自分类Dev

使用python 3.x如何在不写入文件的情况下将Tree对象从ete3传递给DendroPy

来自分类Dev

有没有办法拉出python libtorrent模块的完整下载路径?

来自分类Dev

有没有办法在相同的conda环境中安装python 3和python 2?

来自分类Dev

有没有办法在python 3上安装MySQL-python?

来自分类Dev

有没有办法在带有 Python3 的 Window 上使用 ROS?

来自分类Dev

有没有办法在Python字典中附加第3个值?

来自分类Dev

有没有办法以编程方式清除Python 3中跨平台的终端?

来自分类Dev

有没有办法在 Python 3 中快速打印和输出结果

来自分类Dev

Django:有没有办法让客户端在本地渲染 Python 3 函数?

来自分类Dev

有没有办法使此代码更可怕?Python 3

来自分类Dev

有没有办法在python 3中设置int的限制

来自分类Dev

有没有办法拉出发生短路的布尔值的 Python 列表的索引?

来自分类Dev

有没有办法在 ape/phytools 中手动调整系统发育的颜色渐变边界?

来自分类Dev

有没有办法使用 Python3 (WITHOUT Dataflow) 从 Datastore 命名空间中删除所有实体?

来自分类Dev

有没有办法拉伸父div?

来自分类Dev

有没有办法两次从boto3 python lambda函数调用“ s3.Object()”

来自分类Dev

有没有办法在python中轻松处理json树数据

来自分类Dev

有没有办法在Python中覆盖现有(系统)类上的方法?

来自分类Dev

Python / sqlite3:有没有办法制作数据库架构图?

来自分类Dev

有没有办法在Python3中将列表分组为子列表?

来自分类Dev

有没有办法将击键发送到Python3中的特定应用程序?

来自分类Dev

有没有办法用Python 3替换数组中的变量?为我的硬件制作战舰游戏

来自分类Dev

有没有办法我可以返回数据并提供其他参数,python3 @click

来自分类Dev

Python3:有没有办法像python2一样使用telnetlib,而没有ascii编码和b前缀?

来自分类Dev

有没有办法让我新安装的 Python 3 识别我在使用 Python 2 时安装的所有库?

来自分类Dev

有没有办法使用 SWIG C++ 创建一个 python 模块,它可以在 Python2 和 Python3 中导入

Related 相关文章

  1. 1

    Python / ete3:将最密切相关的叶子定位到系统树中的特定物种

  2. 2

    如何给“ ete3”树上的叶子着色?(Python 3)

  3. 3

    如何使用ete3同时显示多棵树?

  4. 4

    使用python 3.x如何在不写入文件的情况下将Tree对象从ete3传递给DendroPy

  5. 5

    有没有办法拉出python libtorrent模块的完整下载路径?

  6. 6

    有没有办法在相同的conda环境中安装python 3和python 2?

  7. 7

    有没有办法在python 3上安装MySQL-python?

  8. 8

    有没有办法在带有 Python3 的 Window 上使用 ROS?

  9. 9

    有没有办法在Python字典中附加第3个值?

  10. 10

    有没有办法以编程方式清除Python 3中跨平台的终端?

  11. 11

    有没有办法在 Python 3 中快速打印和输出结果

  12. 12

    Django:有没有办法让客户端在本地渲染 Python 3 函数?

  13. 13

    有没有办法使此代码更可怕?Python 3

  14. 14

    有没有办法在python 3中设置int的限制

  15. 15

    有没有办法拉出发生短路的布尔值的 Python 列表的索引?

  16. 16

    有没有办法在 ape/phytools 中手动调整系统发育的颜色渐变边界?

  17. 17

    有没有办法使用 Python3 (WITHOUT Dataflow) 从 Datastore 命名空间中删除所有实体?

  18. 18

    有没有办法拉伸父div?

  19. 19

    有没有办法两次从boto3 python lambda函数调用“ s3.Object()”

  20. 20

    有没有办法在python中轻松处理json树数据

  21. 21

    有没有办法在Python中覆盖现有(系统)类上的方法?

  22. 22

    Python / sqlite3:有没有办法制作数据库架构图?

  23. 23

    有没有办法在Python3中将列表分组为子列表?

  24. 24

    有没有办法将击键发送到Python3中的特定应用程序?

  25. 25

    有没有办法用Python 3替换数组中的变量?为我的硬件制作战舰游戏

  26. 26

    有没有办法我可以返回数据并提供其他参数,python3 @click

  27. 27

    Python3:有没有办法像python2一样使用telnetlib,而没有ascii编码和b前缀?

  28. 28

    有没有办法让我新安装的 Python 3 识别我在使用 Python 2 时安装的所有库?

  29. 29

    有没有办法使用 SWIG C++ 创建一个 python 模块,它可以在 Python2 和 Python3 中导入

热门标签

归档