python 进化树_Python ete3有没有一种方法来扩展系统进化树的分支?

过了很长时间,我找到了一个解决办法:

据我所知,在PhylogenticPython库中没有内置函数来扩展树。这很奇怪,我希望我错了。在

然而,一旦你了解了它们的数据结构,就有了一种简单的方法:你只需要遍历树的所有边,然后将它们乘以所需的因子。这是不同的,这取决于您使用的库。

以下是两个示例,如何使用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())

从这个例子中我们可以学到的另一个教训-在搜索内置函数之前,一定要对所使用的数据结构做功课。。。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值