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

Python 使用for循环从blast下载结果,python,bioinformatics,biopython,Python,Bioinformatics,Biopython,我试图从列表中的不同序列中获得结果,因此下面是我的代码: from Bio.Blast import NCBIXML from Bio.Blast import NCBIWWW lst=['TGCCCCGAAAATGAACTCAGTAAAGAATGACAGTTTCGCAAGACCCGTTGCTTTTTCAGTGCTAGCTAGCTGACTGATCGTAGCTGACGTAGTCTAGCTAGC','ATCGATCGTACTACGTAGCTGATCGTAGCTAGCTAGCTGATCGTAGCT

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

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

任何帮助都将不胜感激。

嗯……您的代码是正确的!。。。但您正在搜索不存在的数据。。。 问题是,如果br.alignments为空,则可能没有输出…(secont lst条目就是这种情况)

看看这个剪下来的:

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[0]进行相同的剪切,结果将是以下输出:

>>> 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>]
>>br.对齐
[, , , , , , , ]
因此短版本是: 输出仅提供str(i)=0的爆炸记录,因为i=1没有数据! 如果要查看i=0的所有条目,必须删除行“hsp.expect<2”


我希望这能有所帮助

我以前单独做过,但结果是我没有按照相同的顺序做。我现在可以自杀,因为这个小小的错误花费了我的时间,让我崩溃,因为我确信我的代码是正确的:)非常感谢你的时间:)总是有这些小事情。。。。这花费了永恒的时间:)哈哈:)不客气请将问题标记为“已回答”
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
>>> 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>]