我刚刚开始使用Biopython,我正在尝试使用qblast()
功能执行远程BLAST操作。一切似乎都正常,但我无法检索必要的输出结果。当从NCBI网页执行BLAST时,我可以看到"功能"每个命中的字段,表示分配给查询核苷酸序列的给定命中受试者的基因。但是,在从qblast
解析输出XML文件时,我看不到与此对应的字段。我已经直接从BLAST输出中导出了XML文件,并且它也在那里丢失了。
是否可能完全从此输出文件中丢失这样一个关键信息?是否有其他方法可以访问此信息,或者我是否只能通过以文本形式解析输出文件来访问它?
答案 0 :(得分:0)
假设您拥有从qblast()
获得的XML:
from Bio.Blast import NCBIXML
xml = NCBIXML.parse(your_xml_handler)
for blast in xml:
for hit in blast.alignments:
# Each hit is a Blast.Record.Alignment
# http://biopython.org/DIST/docs/api/Bio.Blast.Record.Alignment-class.html
# Here you can obtain the hit id
# Something like "gi|588481781|gb|KF958277.1|"
id = hit.hit_id
for hsp in hit.hsps:
# Here you have access to each HSP
# http://biopython.org/DIST/docs/api/Bio.Blast.Record.HSP-class.html
start = hsp.sbjct_start
end = hsp.sbjct_end
使用id,start和end,您可以查询数据库以获取基因信息。这就是它在WebBlast(可能)中的完成方式,但它们提供了"功能"的快捷方式。