我有一个工作代码,它在ncbi服务器上执行BLAST,然后以xml格式返回序列。它正在工作,但我想避免制作新文件并直接在终端上打印BLAST结果。这是一个很好的解决方案吗?我粘贴在我的代码下面,这是有效的,但它正在创建一个新文件。
result_handle = NCBIWWW.qblast(
"blastx",
"nr",
sequences,
entrez_query = organism)
save_file = open("BLAST.xml", "w")
save_file.write(result_handle.read())
save_file.close()
result_handle.close()
result = open("BLAST.xml", "r")
records = NCBIXML.parse(result)
for i, record in enumerate(records):
if record.alignments == []:
print ("There is no BLAST result")
else:
for align in record.alignments:
print (align.hit_id)
break
我想做这样的事情:
result = result_handle.read()
record = NCBIXML.parse(result)
for i, record in enumerate(record):
但它没有用。
提前谢谢你!
答案 0 :(得分:0)
我的信念是解决方案应该比你希望的更简单:
result_handle = NCBIWWW.qblast("blastx", "nr", sequences, entrez_query=organism)
records = NCBIXML.parse(result_handle)
for i, record in enumerate(records):
if record.alignments:
for align in record.alignments:
print(align.hit_id)
else:
print("There is no BLAST result for", i)
NCBIWWW.qblast()
的结果是StringIO
输入流的句柄,您可以直接将其传递给NCBIXML.parse()
。