我想要一个 PyMOL 脚本来自动绘制给定结构的键,例如在所有钯原子之间,或在所有钯和硫原子之间。
我可以通过bond
命令手动执行此操作,但需要知道原子的标识符:
bond id 3, id 4
bond id 2, id 6
...
- 如何一次创建所有所需的键?
- 如果仅创建键,如果原子之间的距离在特定的截止半径内,这也是有帮助的。
我想要一个 PyMOL 脚本来自动绘制给定结构的键,例如在所有钯原子之间,或在所有钯和硫原子之间。
我可以通过bond
命令手动执行此操作,但需要知道原子的标识符:
bond id 3, id 4
bond id 2, id 6
...
在爬取PyMol 邮件列表后,我设法连接了所有原子。例如
bond (elem pd), (elem pd)
绘制所有 Pd 原子之间的键。
现在到截止半径:
bond (elem pd), (elem s) within 2.5 of (elem pd)
在任何 Pd 原子的 2.5 范围内绘制所有 Pd 原子和所有 S 原子之间的键。这导致具有非常长的键的怪异结构。
我认为有必要对这两种选择之一进行迭代,以仅在所需的截止半径内产生债券。
相反,我使用了 pymol 的find_pairs函数(这只是 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])
我遇到了同样的问题。
如果将索引附加到名称,则可以使用以下语法:
(elem P) within 2.5 of (name Ru1)
(elem P) within 2.5 of (name Ru2)