【问题标题】:Biopython blastn command not working in script, but works from command lineBiopython blastn 命令在脚本中不起作用,但在命令行中起作用
【发布时间】:2014-05-10 02:37:59
【问题描述】:

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

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

【问题讨论】:

  • 您有任何名为 refseq_rna 的数据库吗?
  • 是的,该命令将在我编写的 python 脚本之外运行。

标签: python-2.7 biopython blast


【解决方案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))

【讨论】:

  • 我应该更清楚一点,它不会覆盖 test.txt 中的内容。就好像它甚至不执行爆炸搜索,即使该命令在其他任何地方都有效。
  • 成功了吗?如果是,请点赞,以帮助其他人在未来解决相同的问题。干杯!
  • 在我再获得 2 个声望之前我无法投票,但这样确实奏效了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 2014-05-23
  • 2013-10-04
  • 1970-01-01
相关资源
最近更新 更多