1

所以我正在编写一个脚本来运行一个爆炸查询,此时我对变量进行了硬编码(只是为了确保它们没有被弄乱)。这是:

blastCLine = NcbiblastnCommandline(query="temp.fasta", db="refseq_rna", outfmt=5, out="test.txt", evalue=0.05)
stdt, stdr = blastCLine()
print stdt
print stdr

我什么也没得到,输出文件是空白的,没有错误或任何东西。如果我在命令行上使用来自 blastCLine 的 blast 命令,它就可以工作。如果我在 python 环境中使用上面的代码,它可以工作。只是不在我的脚本中工作。

我一直在谷歌搜索并查看大量示例。据我所知,它应该可以工作。我尝试将其更改为 blastx,并且使用 cmd="blastn" 也无济于事。有什么建议么?

4

1 回答 1

1

在这一行中,您正在生成带有参数的 BLAST 命令。如果你打印 blastCLine,你会看到 BLAST 命令:

>>> blastCLine = NcbiblastnCommandline(query="temp.fasta", db="refseq_rna", outfmt=5, out="test.txt", evalue=0.05)
>>> print blastCLine
blastn -out test.txt -outfmt 5 -query /home/mamun/temp.fasta -db refseq_rna -evalue 0.05

现在,stdt, stdr = blastCLine()您正在从 python 执行命令。这里会发生什么,你会得到一个新的输出,它会覆盖 test.txt 文件中的现有内容。您可以通过删除现有的 test.txt 文件并从 python shell 再次运行上述两个命令来检查这一点。由于命令成功运行并且它不会生成任何输出或错误,因此在命令成功运行后 stdout 和 stderr 都会得到空字符串。希望,解释有助于理解这里发生了什么。如果它甚至不起作用,请尝试使用 os.system 执行它:

>>> import os
>>> os.system(str(blastCLine))
于 2014-05-09T06:35:24.410 回答