Почему сценарий 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
команда работает отлично, делает выбор и создает объект.
Любая помощь будет принята с благодарностью.
1 ответ
Похоже, что ответом на эту проблему является включение async=0 в вызов выборки, заставляющий командную строку ждать возврата от этой команды перед выполнением второй команды, то есть он пытался выбрать объекты до того, как они существуют.
Например,
fetch 3MPF, async=0
create 3MPFB63,3MPF and c. B and i. 63-68
delete 3MPF
align 3MPFB63, ref
Теперь это работает как задумано. Будет отправлять обратно, если внизу что-то еще сломается, когда полный PML запускается автоматически.
Классическая, "как только вы обращаетесь к ТАК, чтобы выяснить это", ситуация.