首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用biopython仅下载部分genbank文件

使用biopython仅下载部分genbank文件
EN

Stack Overflow用户
提问于 2016-07-27 21:13:25
回答 1查看 385关注 0票数 1

我刚接触Biopython,在解析genbank文件时遇到了性能问题。

我必须解析很多gb文件,从中我有登录号。在解析之后,我只想检查文件的分类法和器官。现在,我有这样的代码:

代码语言:javascript
复制
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

为了查找我拥有的分类法:

代码语言:javascript
复制
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文件的这一部分,我的脚本会快得多,但我还没有弄清楚这是否可能。

有没有人知道这是否可以做到,如果可以,如何做到?提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2016-07-28 07:14:10

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

代码语言:javascript
复制
gb_acc1 = Entrez.efetch(db='nuccore', id=access1, rettype='gb', retmode='xml', seq_start=1, seq_stop=1)

也许您甚至不需要存储整个GenBank文件,只需要存储一个字典,其中ID作为键,分类法和器官作为值?

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

https://stackoverflow.com/questions/38614031

复制
相关文章

相似问题

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