2017-08-07 1135 views
0

我已经写了一个python脚本,它接受一个上游结果并将其输出为一个pml脚本(一系列PyMoL命令)。当我在pymol中运行文件时,一些命令运行,但命令行返回'无效选择'选择器错误。为什么python生成的pymol(pml)脚本在PyMoL中不能正确运行?

例如,该脚本返回文本行如:

fetch 3MPF 
create 3MPFB63,3MPF and c. B and i. 63-68 
remove 3MPF 
align 3MPFB63, ref 

当脚本在PYMOL运行它说:

PyMOL>fetch 3MPF 
please wait ... 
PyMOL>create 3MPFB63,3MPF and c. B and i. 63-68 
Selector-Error: Invalid selection name "3MPF". 
(3MPF and c. B and i. 63-68)<-- 
PyMOL>remove 3MPF 
Selector-Error: Invalid selection name "3MPF". 
(3MPF)<-- 
PyMOL>align 3MPFB63, ref 
Selector-Error: Invalid selection name "3MPFB63". 
3MPFB63<-- 

但是,如果从错误的命令单独运行,也就是复制和粘贴代码段create 3MPFB63,3MPF and c. B and i. 63-68该命令运行良好,并进行选择并创建对象。

任何帮助将不胜感激。

回答

0

看起来好像这个问题的答案是在fetch调用中包含async = 0,迫使命令行在执行第二个命令之前等待该命令的返回,即它试图在选择对象之前他们存在。

例如,

fetch 3MPF, async=0 
create 3MPFB63,3MPF and c. B and i. 63-68 
delete 3MPF 
align 3MPFB63, ref 

这就是现在按预期工作。如果在完成PML自动运行时还有其他事情会中断,则会回发。

经典,“只要你求助于你就明白了”的情况。

相关问题