Blast而不使用biopython创建任何文件

时间:2017-01-10 11:14:36

标签: python xml file biopython blast

我有一个工作代码,它在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):

但它没有用。

提前谢谢你!

1 个答案:

答案 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()