2017-08-07 35 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自動運行時還有其他事情會中斷,則會回發。

經典,「只要你求助於你就明白了」的情況。

相關問題