1

私は Biopython を初めて使用し、genbank ファイルを解析するときにパフォーマンスの問題があります。

多くの gb ファイルを解析する必要があり、そこからアクセッション番号を取得しています。解析後は、ファイルの分類とオルガネラのみを調べたいと思います。今、私はこのコードを持っています:

from Bio import SeqIO
from Bio import Entrez
gb_acc1 = Entrez.efetch(db='nucleotide', id=access1, rettype='gb', retmode='text')   #Where access1 contents the accession number
rec = SeqIO.read(gb_acc1, 'genbank')
cache[access1] = rec   #where cache is just a dictionary where saving the gb files already downloaded
feat = cache[access1].features[0]   
if 'organelle' in feat.qualifiers.keys(): #And the code goes on

私が持っている分類法を探すために:

gi_h = Entrez.efetch(db='nucleotide', id=access, rettype='gb', retmode='text')
    gi_rec = SeqIO.read(gi_h, 'genbank')
    cache[access]=gi_rec
    if cache[access].annotations['taxonomy'][1] == 'Fungi':
                                fungi += 1 #And the code goes on

これ (スクリプト全体) は正常に動作します。私の問題は、オルガネラと分類学の 2 つの機能を調べるためだけに、gb ファイル全体 (場合によっては巨大になることもあります) をダウンロードしていることです。gb ファイルのこの部分だけをダウンロードできれば、スクリプトははるかに高速になりますが、これが可能かどうかはわかりません。

これができるかどうか誰かが知っていますか?もしそうなら、どうやって? 事前にどうもありがとう

4

1 に答える 1

1

seq_start と seq_stopを使用してシーケンスを切り捨て、前と同じように解析できます。

gb_acc1 = Entrez.efetch(db='nuccore', id=access1, rettype='gb', retmode='xml', seq_start=1, seq_stop=1)

おそらく、GenBank ファイル全体を保存する必要はなく、ID をキーとして分類法とオルガネラを値として持つ辞書だけを保存する必要があるでしょうか?

于 2016-07-27T23:14:10.110 に答える