2

Python で ete3 パッケージを使用して、確率モデルで生成したデータから系統樹を構築していますが、うまく機能します。以前にこれらのツリーを newick 形式で作成し、Dendropy パッケージで別のスクリプトを使用して、これらのツリーを読み取り、分析を行いました。これらのスクリプトは両方とも正常に動作します。

私は現在、この種のデータ処理を大量に実行しようとしており、ファイルの書き込みをスキップする単一のスクリプトを作成したいと考えています。どちらのメソッドも Tree と呼ばれるので、次のように dendropy メソッドをインポートすることでこれを回避しました。

from dendropy import Tree as DTree

そして、次のようなete3メソッド:

from ete3 import Tree

これは大丈夫だと思われます。

私が持っている質問は、あるパッケージから別のパッケージにオブジェクトを渡す方法です。最初に ete3 メソッドを使用してツリー オブジェクトを構築するループがあり、それを 't' と呼びます。私の計画では、ete3 で Tree.write メソッドを使用して、次のように「get」メソッドを使用し、実際の出力ファイル ビットをスキップして、ツリー オブジェクトを Dendropy に渡すことでした。

treePass = t.write(format = 1)
DendroTree = DTree.get(treePass, schema = 'newick')

しかし、これはエラーを与えます:

    DendroTree = DTree.get(treePass)
TypeError: get() takes 1 positional argument but 2 were given

どんな考えでも大歓迎です。

4

1 に答える 1

4

DTree.get()は実引数としてのみ取りself、残りはキーワードで指定します。これは基本的に、treePass を DTree.get() に引数として渡すことができないことを意味します。

私はこれらのライブラリのいずれも使用していませんが、ここでデンドロピー ツリーにデータをインポートする方法を見つけました。

tree = DTree.get(data="((A,B),(C,D));",schema="newick")

つまり、この形式で ete3 からツリーを取得する必要があります。ツリーとしては珍しいことではないようです。そのため、もう少し調べてみると、ete3 でサポートされている形式があるようです。これについては、こちらを参照してください。9番だと思います。

だから最後に私はこれを試してみます:

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')

于 2016-06-02T14:00:36.730 に答える