Почему скрипт pymol (pml), сгенерированный python, неправильно работает в PyMoL?

Я написал скрипт на Python, который принимает исходный результат и выводит его в виде скрипта pml (серия команд PyMoL). Когда я запускаю файл в pymol, некоторые команды запускаются, но командная строка возвращает «Неверный выбор» Selector-Errors.

Например. Скрипт возвращает текстовые строки, такие как:

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, команда работает отлично, делает выбор и создает объект.

Любая помощь будет принята с благодарностью.


person Lyk    schedule 07.08.2017    source источник


Ответы (1)


Похоже, что ответом на эту проблему является включение async=0 в вызов fetch, заставляющий командную строку ждать возврата от этой команды перед выполнением второй команды, т. е. она пыталась выбрать объекты до их существования.

Например,

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

Теперь это работает, как задумано. Опубликую, если что-то еще сломается при автоматическом запуске полного PML.

Классическая, "как только прибегаешь к спрашиванию на ТАК разбираешься", ситуация.

person Lyk    schedule 07.08.2017