首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for循环从blast下载结果

使用for循环从blast下载结果
EN

Stack Overflow用户
提问于 2013-12-26 18:16:56
回答 1查看 296关注 0票数 0

我试图从列表中的不同序列中获得结果,下面是我的代码:

代码语言:javascript
复制
from Bio.Blast import NCBIXML

from Bio.Blast import NCBIWWW

lst=['TGCCCCGAAAATGAACTCAGTAAAGAATGACAGTTTCGCAAGACCCGTTGCTTTTTCAGTGCTAGCTAGCTGACTGATCGTAGCTGACGTAGTCTAGCTAGC','ATCGATCGTACTACGTAGCTGATCGTAGCTAGCTAGCTGATCGTAGCTATCGTACGTAGCTGATCGATCGTAGCTGACTGACGTACGTAGCTGATCGTAGCTAGCTAGCTAGCTGATCGATC']

eq="Homo sapiens[Organism]"


for i in range(0,2):

    rslt  = NCBIWWW.qblast("blastn", "nr", lst[i],entrez_query=eq)
    rcrds = NCBIXML.parse(rslt)
    br = rcrds.next()
    for alignment in br.alignments:
        for hsp in alignment.hsps:
            if hsp.expect < 2:

                print "***** RECORD ****"+str(i)
                print "sequence:", alignment.title
                print "E-value:", hsp.expect

输出只提供lsts的第二项和str(i)=0的blast记录。

代码语言:javascript
复制
***** RECORD ****0
sequence: gi|27436767|gb|AF274855.3| Homo sapiens chromosome X clone RP11-366F6 map q28, complete sequence

E-value: 0.197898

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-26 19:44:43

well....your代码是正确的!...but,你在搜索不存在的数据.问题是,如果br.alignments是空的,就不可能有输出.(第一个条目的情况就是这样)

代码语言:javascript
复制
>>> br.alignments
[]

看看这段片段:

代码语言:javascript
复制
from Bio.Blast import NCBIXML
from Bio.Blast import NCBIWWW

lst=['TGCCCCGAAAATGAACTCAGTAAAGAATGACAGTTTCGCAAGACCCGTTGCTTTTTCAGTGCTAGCTAGCTGACTGATCGTAGCTGACGTAGTCTAGCTAGC','ATCGATCGTACTACGTAGCTGATCGTAGCTAGCTAGCTGATCGTAGCTATCGTACGTAGCTGATCGATCGTAGCTGACTGACGTACGTAGCTGATCGTAGCTAGCTAGCTAGCTGATCGATC']
eq="Homo sapiens[Organism]"
# download with lst[1]
print "download start"
rslt  = NCBIWWW.qblast("blastn", "nr", lst[1],entrez_query=eq)
print "download end"
print "parsing start"
rcrds = NCBIXML.parse(rslt)
print "parsing end"
br = rcrds.next()
print "br.alignments"
print br.alignments

对于lst,您可以尝试相同的代码片段,其结果将是以下输出:

代码语言:javascript
复制
>>> br.alignments
[<Bio.Blast.Record.Alignment object at 0x02ACCF90>, <Bio.Blast.Record.Alignment object at 0x02ACCE50>, <Bio.Blast.Record.Alignment object at 0x02ACCCF0>, <Bio.Blast.Record.Alignment object at 0x02ACCE10>, <Bio.Blast.Record.Alignment object at 0x02ACCCD0>, <Bio.Blast.Record.Alignment object at 0x02ACCBF0>, <Bio.Blast.Record.Alignment object at 0x02ACCD70>, <Bio.Blast.Record.Alignment object at 0x02ACC930>, <Bio.Blast.Record.Alignment object at 0x02ACC9B0>, <Bio.Blast.Record.Alignment object at 0x02ACCA90>, <Bio.Blast.Record.Alignment object at 0x02ACCAD0>, <Bio.Blast.Record.Alignment object at 0x02ACCB90>, <Bio.Blast.Record.Alignment object at 0x02ACC850>, <Bio.Blast.Record.Alignment object at 0x02ACC970>]

因此,的简短版本是:输出只为str(i)=0提供blast记录,因为对于i=1,没有数据!如果要查看i=0的所有条目,则必须删除"hsp.expect < 2";一行

我希望这能帮上忙

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

https://stackoverflow.com/questions/20789266

复制
相关文章

相似问题

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