選択範囲の文法と演算子
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
はそれらのどちらか(またはいずれか)を持つ項目を選択します。
選択演算子/修飾子テーブル
選択演算子と修飾子を以下に示します。ダミー変数s1
とs2
は, chain a
やhydro.
といった選択式を表します。
選択演算子 | エイリアス | 説明 |
---|---|---|
全般 | ||
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 は、論理的な選択範囲を一番内側の括弧から外に展開します。