2014-05-08 187 views
1

因此,我正在编写一个脚本来运行爆炸查询,此时我对变量进行了硬编码(只是为了确保它们没有被搞乱) 。这是:Biopython blastn命令不能在脚本中工作,但从命令行运行

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

+0

您有任何名为refseq_rna的数据库吗? –

+0

是的,是的,该命令将工作在我写的python脚本之外。 – Fooldj

回答

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(),你是从蟒蛇执行命令。这里发生了什么,你会得到一个新的输出,覆盖test.txt文件中现有的东西。您可以通过删除现有的test.txt文件来检查这一点,并从python shell中再次运行上述两个命令。由于命令成功运行且不会生成任何输出或错误,因此命令成功运行后,stdout和stderr都会获得空字符串。希望解释有助于理解这里发生的事情。如果它不工作,请尝试使用os.system执行它:

>>> import os 
>>> os.system(str(blastCLine)) 
+0

我应该已经更清楚了,它不会覆盖test.txt中的内容。就像它甚至不执行blast搜索一样,即使这个命令在其他地方工作。 – Fooldj

+0

我在编辑我的答案:) –

+0

它工作?如果是的话,请注意它,以便将来帮助其他人解决同样的问题。干杯! –

相关问题