如何让 PyMOL 在控制台/脚本中绘制原子之间的键?

How to make PyMOL draw bonds between atoms in console / script?

我想要一个 PyMOL 脚本来自动绘制给定结构的键,例如在所有钯原子之间,或在所有钯和硫原子之间。

我可以通过 bond 命令手动执行此操作,但需要知道原子的标识符:

bond id 3, id 4
bond id 2, id 6
...

爬取 PyMol mailinglist 后,我成功连接了所有原子。例如

bond (elem pd), (elem pd)

在所有 Pd 原子之间绘制 bonds


现在到截止半径:

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

所有 Pd 原子 所有 Pd 原子的 2.5 范围内的所有 S 原子之间建立键。这导致具有非常长键的奇怪结构。[​​=17=]

我认为有必要 iterate 超过两种选择之一以仅在所需的截止半径内产生债券。

相反,我使用 find_pairs function of pymol (this is API only and thus has to be used in a python script).

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])

我遇到了同样的问题。

如果将索引附加到名称,则可以使用以下语法:

(elem P) within 2.5 of (name Ru1)
(elem P) within 2.5 of (name Ru2)