Как заставить PyMOL рисовать связи между атомами в консоли/скрипте?

Я хочу, чтобы скрипт PyMOL автоматически рисовал облигации для данной структуры, например. между всеми атомами палладия или между всеми атомами палладия и серы.

Я могу сделать это вручную командой bond, но нужно знать идентификаторы атомов:

bond id 3, id 4
bond id 2, id 6
...
  • Как создать сразу все нужные облигации?
  • Было бы также полезно, если бы связь создавалась только тогда, когда расстояние между атомами находится в пределах определенного радиуса отсечки.

person tmartin    schedule 20.05.2015    source источник


Ответы (1)


После сканирования списка рассылки PyMol мне удалось соединить все атомы. например

bond (elem pd), (elem pd)

рисует связи между всеми атомами Pd.


Теперь о радиусе отсечки:

bond (elem pd), (elem s) within 2.5 of (elem pd)

создает связи между всеми атомами Pd и всеми атомами S в пределах 2,5 от любого атома Pd. Это приводит к запутанной структуре с очень длинными связями.

Я думаю, что необходимо повторить один из обоих вариантов, чтобы получить облигации в пределах только желаемый радиус отсечки.

Вместо этого я использую функцию find_pairs pymol (это только API, поэтому для использования в скрипте Python).

from pymol import cmd, stored

pd_s_bonds = cmd.find_pairs('n. pd', 'n. s', cutoff=2.5)
for pair in pd_s_bonds:
    cmd.bond('index %s' % pair[0][6], 'index %s' % pair[1][7])
person tmartin    schedule 28.05.2015