我试图使用BioPython运行PAML并运行以下代码:

from Bio.Phylo.PAML import codeml
cml = codeml.Codeml(alignment = "lysin.phy", tree = "lysin.trees", out_file = "results.out")
cml.read_ctl_file("codeml.ctl")
results=cml.run()

然而,cml.run()将进入睡眠状态,并且永远不会结束。当我取消时,返回的消息是:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/bioinfo/anaconda3/lib/python3.5/site-packages/biopython-1.66-py3.5-linux-x86_64.egg/Bio/Phylo/PAML/codeml.py", line 186, in run
Paml.run(self, ctl_file, verbose, command)
File "/home/bioinfo/anaconda3/lib/python3.5/site-packages/biopython-1.66-py3.5-linux-x86_64.egg/Bio/Phylo/PAML/_paml.py", line 145, in run
stdout=subprocess.PIPE)
File "/home/bioinfo/anaconda3/lib/python3.5/subprocess.py", line 562, in call
return p.wait(timeout=timeout)
File "/home/bioinfo/anaconda3/lib/python3.5/subprocess.py", line 1651, in wait
(pid, sts) = self._try_wait(0)
File "/home/bioinfo/anaconda3/lib/python3.5/subprocess.py", line 1601, in _try_wait
(pid, sts) = os.waitpid(self.pid, wait_flags)
KeyboardInterrupt

有谁能帮我找出错误在哪里吗。我使用的对齐文件和树文件位于PAML示例文件夹中。

最佳答案

我也有同样的问题,下面的调整奏效了。我不知道为什么,现在也没时间搞清楚,但如果有人能解释,我会很高兴的。基本上,顺序是很重要的,否则参数会被设置回空值[您可以通过cml.print_options()来验证它]。

cml = codeml.Codeml()
cml.read_ctl_file("ctl_file_path")
cml.tree = "full_tree_path"
cml.alignment = "full_alignment_path"
cml.out_file = "full_out_path"
cml.working_dir = "full_dir_path"

cml.run()

在以下情况下它不起作用:
设置其他选项后读取了ctl文件
使用构造函数codeml.codeml()设置了选项
未设置工作目录(尽管提供了所有文件的完整路径)
我还在conda中运行python。

关于python - BioPython的codeml永远不会完成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34453624/

10-13 07:31