使用biopython仅下载genbank文件的一部分

时间:2016-07-27 13:13:25

标签: python parsing biopython genbank

我是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

这(整个脚本)工作正常。我的问题是我正在下载整个gb文件(有时是巨大的)只是为了研究这两个特征:细胞器和分类。如果我只能下载gb文件的这一部分,我的脚本会快得多,但我还没弄清楚这是否可行。

有人知道是否可以这样做,如果可以,怎么做?非常感谢提前

1 个答案:

答案 0 :(得分:1)

您可以使用seq_start and seq_stop截断序列,然后像以前一样解析它,例如

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

也许您甚至不需要存储整个GenBank文件,只需要将ID作为密钥和分类以及细胞器作为值的字典?