選択範囲の文法と演算子

https://pymolwiki.org/index.php/Selection_Algebra からの和訳です。

PyMOLのSelection文法を使うことで識別子(identifier)やプロパティに基づいてPyMOL内に表示されている原子を選択することができます。多くのPyMOLコマンド (color, show など) では、存在する原子の一部に対してのみ操作を適用するために、原子選択の引数を与えることが可能です。例えば

PyMOL>show spheres, solvent and chain A

これによって、「chain Aかつ溶媒のみ」(solvent and chain A)を「sphere表示にする(show spheres)」という操作を与えることができます。

Selectionは、論理演算子(true/falseのブール型変数、and, or, and notなど)と組み合わせることで、より精密に包括的に行うことができます。ブール型のandは指定されたプロパティの両方(またはすべて)を持つ項目のみを選択し、orはそれらのどちらか(またはいずれか)を持つ項目を選択します。

選択演算子/修飾子テーブル

選択演算子と修飾子を以下に示します。ダミー変数s1s2は, chain ahydro.といった選択式を表します。

選択演算子 エイリアス 説明
全般
all * PyMOLに現在ロードされているすべての原子
none 空のselectionを生成
enabled 有効化されたオブジェクトの原子
Named selections
sele 名前付きの選択範囲またはオブジェクト "sele"、ただし他の演算子の名前と競合しない場合に限る
%sele 名前付き選択範囲またはオブジェクト"sele"
曖昧さを避けるために推奨
?sele 名前付き選択範囲またはオブジェクト "sele", ただし、名前付き選択範囲またはオブジェクト "sele" が存在しない場合は空の選択範囲になります
論理式
not S1 ! 選択範囲を反転させます。
S1 and S2 & プロパティS1とS2の両方に含まれる原子
S1 or S2 | プロパティS1またはS2のいずれかに含まれる原子
S1 S2 暗黙的に上記のorを指定します
S1 and (S2 or S3) ()を使うことで評価順を制御できます
first S1 プロパティS1を持つ最初の原子(1原子のみ選択)
last S1 プロパティS1を持つ最後の原子(1原子のみ選択)
識別子(Identifier)
model 1ubq m. オブジェクト"1ubq"由来の原子
chain C c. チェイン識別子"C"由来の原子
segi S s. セグメント識別子"S"由来の原子 (mmCIF形式の場合はlabel_asym_idを基準に判定します)
resn ALA r. 残基名が "ALA"である原子
resi 100-200 i. 残基番号が100から200の間になっている残基の原子
name CA n. 原子名が "CA" となっている原子
alt A Alternate locationが "A"である原子
index 123 idx. PyMOL内部のオブジェクト内原子インデックスが123に該当する原子 (sortで変更可能)
id 123 PDBファイル内のIDカラムの数字が123の原子
rank 123 ロード時のオブジェクトごとの原子インデックスが123に該当する原子 (retain_orderを参照)
pepseq ACDEF ps. アミノ酸の一文字表記で"ACDEF"となっている部分の配列を選択 (FindSeqも参照)
label "Hello World" "Hello World"とラベルされている原子 (PyMOL 1.9から実装)
識別子のマッチング
S1 in S2 S1 の原子のうち,name, resi, resn, chain, segi がすべて S2 の原子と一致する原子
S1 like S2 S1の原子で、名前とresiの識別子がS2の原子と一致するもの
エンティティ(Entity)の拡張
重要:"by-"演算子の優先順位は弱いため、(byres S1 or S2)は実際には(byres (S1 or S2)と同じであり、((byres S1) or S2)と同じではありません。)
byobject S1 S1の範囲を拡張してオブジェクト単位で選択します
bysegi S1 bs. S1の範囲を拡張してセグメント単位で選択します
bychain S1 bc. S1の範囲を拡張してチェイン単位で選択します
byres S1 br. S1の範囲を拡張して残基単位で選択します
bycalpha S1 bca. S1に少なくとも1個の原子を有する残基のCα原子
bymolecule S1 bm. S1の範囲を拡張して分子単位で選択します。bondで結合されている範囲を「分子」とみなします
byfragment S1 bf.
byring S1 S1に少なくとも1つの原子を有するサイズ7以下のすべての環 (PyMOL 1.8.2で実装)
bycell S1 選択範囲をunit cellに拡張する
Bond expansion
bound_to S1 bto. S1に直接結合している原子(S1を含む)
neighbor S1 nbr. S1に直接結合している原子(S1は含まない)
S1 extend 3 xt. S1の範囲をS1に結合している原子から3結合分だけ広げる
距離基準 (Proximity)
S1 within 12.3 of S2 w. S2中の任意の原子から12.3 Å以内に存在するS1の原子
S1 around 12.3 a. S1の全原子の中心から12.3 Å以内の中心を持つ原子
S1 expand 12.3 x. S1の全原子の中心から12.3 Å以内の原子にまでS1範囲を拡張
S1 gap 1.2 VDW半径がS1のVDW半径から1.2 Å以上離れている原子
S1 near_to 12.3 of S2 nto. withinと同じだが、S2は選択範囲から外れる (なのでS1 and S2 around 12.3に同じ)
S1 beyond 12.3 of S2 be. S2から12.3 Å以上離れているS1の原子
属性基準 (Properties)
partial_charge < 1.2 pc. (部分電荷のパラメータがロードした構造データに含まれている場合のみ)partial_chargeの値が1.2以下の原子
formal_charge = 1 fc.
b < 100.0 B-factoが100.0より小さい原子
q < 1.0 Occupancyが1.0より小さい原子
ss H+S 二次構造がH (helix)またはS (sheet)となっている原子
elem C e. 原子種がC (炭素)の原子
p.foo = 12
p.foo < 12.3
p.foo in 12+34
stereo R キラル化合物でR/S不斉中心のうちRという情報が入っている原子(Incentive PyMOL 1.4-1.8のみ)
Flags
bonded 1つ以上の結合を持つ原子
protected
fixed fxd.
restrained rst.
masked msk.
flag 25 f.
化学的な分類基準(chemical class)
organic org. ポリマー(タンパク質または核酸)でない有機化合物(例: リガンドや緩衝液)
inorganic ino. ポリマーでない無機化合物・イオン
solvent sol. 水分子
polymer pol. ポリマー、タンパク質または核酸
polymer.protein タンパク質 (New in PyMOL 2.1)
polymer.nucleic 核酸 (New in PyMOL 2.1)
guide タンパク質のCAと核酸のC4*/C4'
hetatm PDBのHETATMレコードに入っている原子
hydrogens h. 水素原子
backbone bb. ポリマーの主鎖・バックボーン原子 (new in PyMOL 1.6.1)
sidechain sc. ポリマーの側鎖原子 (new in PyMOL 1.6.1)
metals 金属原子 (new in PyMOL 1.6.1)
donors don. 水素結合でドナーとなる原子
acceptors acc. 水素結合でアクセプターとなる原子
表示形式基準(Style)
visible v. 何らかの表示形式で表示されているenabled状態のオブジェクトに含まれる原子
rep cartoon Cartoon表示となっている原子
color blue 原子のカラーリングが (color indexで)blueになっている原子
cartoon_color blue Atoms with atom-level cartoon_color setting (by color index)
ribbon_color blue Atoms with atom-level ribbon_color setting (by color index)
非分子(Non molecular)
center sceneの中央においてある仮想の原子
origin 回転中心においてある仮想の原子
座標基準 (Coordinates)
state 123 Atoms with coordinates in state 123
present pr. Atoms with coordinates in the current state
x < 12.3 Atoms with model-space x coordinate less than 12.3
y < 12.3 Atoms with model-space y coordinate less than 12.3
z > 12.3 Atoms with model-space z coordinate greater than 12.3
Atom Typing
text_type TT tt. Auto-assigned in Incentive PyMOL 1.4-1.8)
numeric_type 123 nt.

距離演算子の比較

2原子の距離を基準に選択する上で類似した演算子がいくつかあります。以下の表ではどのように異なるかを詳しく示します。

文法 1: s1 operator X of s2 文法 2: s1 and (s2 operator X)

距離演算子 距離がX以上か以下か どこから測定するか s2を含むか 文法 備考
near_to ≤ X center 含まない 1 aroundと等価
within ≤ X center s1に該当する場合 1
beyond > X center 含まない 1
gap > X center+vdw 含まない 2
around ≤ X center 含まない 2 near_toと等価
expand ≤ X center 常に含む 2

入力について

  • 名前とキーワードは ignore_case が設定されていない限り大文字小文字を区別しない。
  • 名前とキーワードは、曖昧でない接頭辞に省略することが可能。

おすすめ設定大文字小文字を区別して、省略されていない選択式で書きます。そうすることで、実行時の設定や将来の言語の変更 (新しいキーワードの追加など) に対して記述が堅牢になります。

実用例

Logicalな選択範囲は組み合わせることができます。例えば以下のようにしてチェインAの一部であり、残基番号125ではない原子を選択することができます。

# チェインAの一部であり、残基番号125ではない原子を選択。
select chain A and (not resi 125)

以下に様々な選択範囲の結合例を示します。

# 以下の2つの選択は等価です。
# チェインAにあるCβ、Cγ1、Cγ2原子を選択
select (name CB or name CG1 or name CG2) and chain A
select name CB+CG1+CG2 and chain A

# 5 Å以内の全ての残基、または有機低分子を選択。
select br. all within 5 of organic

# ヘリックス構造部分を選択
select ss 'H'

# lineで表示されているものを選択
select rep lines

# 水の3Å以内で、B因子が20以下の残基をすべて選択。
select br. b<20 & (all within 3 of resn HOH)

# すべての青色になっているものを選択
select color blue

# 最初のArg残基を選択
select first resn ARG

# 1fooのセグメントGのチェインXの残基444のCα炭素を選択
select 1foo/G/X/444/CA
# 上に同じ
select 1foo and segi G and c. X and i. 444 and n. CA

# 残基番号23にCα炭素が存在するオブジェクトをまるごと選択
select bo. i. 23 and n. CA

# チェインCが存在している分子を選択
select bm. c. C

算術演算の群の結果と同様に、論理演算の群はどの演算が最初に実行されるかによって異なります。ユーザーの想定している順序で操作が実行されるようにするには、括弧を使用します。

byres ((chain A or (chain B and (not resi 125))) around 5)

PyMOL は、論理的な選択範囲を一番内側の括弧から外に展開します。