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