我试图从列表中的不同序列中获得结果,下面是我的代码:
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记录。
***** RECORD ****0
sequence: gi|27436767|gb|AF274855.3| Homo sapiens chromosome X clone RP11-366F6 map q28, complete sequence
E-value: 0.197898任何帮助都将不胜感激。
发布于 2013-12-26 19:44:43
well....your代码是正确的!...but,你在搜索不存在的数据.问题是,如果br.alignments是空的,就不可能有输出.(第一个条目的情况就是这样)
>>> br.alignments
[]看看这段片段:
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,您可以尝试相同的代码片段,其结果将是以下输出:
>>> 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";一行
我希望这能帮上忙
https://stackoverflow.com/questions/20789266
复制相似问题