Biopython blastn命令不能在脚本中工作,但可以从命令行工作

时间:2014-05-08 23:51:51

标签: python-2.7 biopython blast

所以我正在写一个脚本来运行一个blast查询,我在这一点上硬编码变量(只是为了确保它们不会搞砸)。这是:

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"无济于事。 有什么建议吗?

1 个答案:

答案 0 :(得分: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))