如何让 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)
我想要一个 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)