所以我正在写一个脚本来运行一个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"无济于事。 有什么建议吗?
答案 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))