首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python3.x如何将Tree对象从ete3传递给DendroPy而无需写入文件

使用python3.x如何将Tree对象从ete3传递给DendroPy而无需写入文件
EN

Stack Overflow用户
提问于 2016-06-02 13:43:19
回答 1查看 233关注 0票数 2

我正在使用python中的ete3包根据我用随机模型生成的数据构建系统发育树,它运行得很好。我以前已经将这些树写成newick格式,然后使用另一个脚本,连同Dendropy包,来读取这些树并对它们进行一些分析。这两个脚本都运行良好。

现在,我正在尝试进行大量的此类数据处理,并希望编写一个脚本,在其中跳过文件编写。这两个方法都称为Tree,所以我通过导入树状方法来解决这个问题,比如:

代码语言:javascript
复制
from dendropy import Tree as DTree

ete3方法如下:

代码语言:javascript
复制
from ete3 import Tree

似乎没什么问题。

我的问题是如何将对象从一个包传递到另一个包。我有一个循环,首先使用ete3方法构建树对象,我称之为t‘。然后,我的计划是使用ete3中的ete3方法将树状图传递给Dendropy,使用'get‘方法并跳过实际的外部文件位,如下所示:

代码语言:javascript
复制
treePass = t.write(format = 1)
DendroTree = DTree.get(treePass, schema = 'newick')

但这就产生了错误:

代码语言:javascript
复制
    DendroTree = DTree.get(treePass)
TypeError: get() takes 1 positional argument but 2 were given

任何想法都欢迎。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-02 14:00:36

DTree.get()只以self作为实际参数,rest是通过关键字给出的。这基本上意味着不能将treePass作为参数传递给DTree.get()。

我没有使用这两个库,但是我找到了一种将数据导入到树状树这里的方法。

代码语言:javascript
复制
tree = DTree.get(data="((A,B),(C,D));",schema="newick")

这意味着您必须以这种格式从ete3获取树。对于一棵树来说,这似乎并不罕见,因此,在看了更多之后,这里似乎支持ete3格式,您可以阅读这里。我想是9号。

所以最后我会试试这个:

代码语言:javascript
复制
from dendropy import Tree as DTree
from ete3 import Tree

#do your Tree generation magic here
DendroTree = DTree.get(data=t.write(format = 9),schema = 'newick')

编辑:

随着我阅读的越来越多,我认为任何格式都应该被读取,所以基本上,您需要添加到示例中的所有内容都是data这里:DendroTree = DTree.get(data=treePass, schema = 'newick')

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37593662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档