PyMOL Tutorial
PyMOLの機能をまとめた本です。 (c) 2024 YoshitakaMo All Rights Reserved.
はじめてPyMOLを使う方へ
- インストール方法については7.1 インストール方法を御覧ください。
- PyMOLを使った分子の表示方法のやり方をまとめて知りたい場合は第1章-pymolチュートリアル-アルカリホスファターゼの構造を見るから順次御覧ください。
- マウスの使い方を学びたい場合は以下のページからどうぞ。
- PyMOL上部メニューの詳細を知りたい方は第3章 External GUIの使い方を参考にしてください。
Change log
2022年 5月 3日 5.2 APBSプラグインを使った表面電荷表示を更新。
2021年12月13日 6.4 pLDDTカラーリングプラグインを追加。
2021年12月11日 5.3 動画の作成方法を追加。
2021年 5月 9日 Pythonからpymolモジュールをimportして使うを追加。
2021年 1月 5日 3.5 Displayを順次追加。
2020年 5月11日 3.4 Movieを追加。
2020年 5月 5日 5.6 PyMOL上でのpythonスクリプトの実行を追加。
2020年 5月 3日 1.7 タンパク質の疎水性・親水性残基の分布を確認するを追加。
2020年 5月 2日 1.8 タンパク質の位置依存的なアミノ酸保存度の違いを理解するを追加。
2020年 4月12日 Appendix 3 選択範囲の文法と演算子を追加。
2019年12月7日 2.3.3 色の設定を追加。
...
2019年 3月30日 作成開始。
Contribution
このtutorialはmdbookで運用しています.
第1章 PyMOLチュートリアル: アルカリホスファターゼの構造を見る
目的
酵素などのタンパク質は、それぞれ固有のアミノ酸配列をもち、それが固有の立体構造に折れたたまります。これにより、アミノ酸配列上では離れていた残基同士が接近し、それらが協同して他の分子と相互作用したり化学反応を触媒したりすることができるようになります。タンパク質を含む生体分子が機能を果たすためには、その立体構造が本質的に重要です。生体分子は、ナノメートル(\( 10^{-9}\ \rm{m} \))オーダーの微小なものですが、X線結晶構造解析法やNMR法、最近ではクライオ電子顕微鏡などの手法を用いて、その立体構造(分子を構成している各原子の\( xyz \)座標)を決定することができます。それらの構造データは、公共の立体構造データベースに蓄積され、誰もが自由かつ無料で利用できるようになっています。コンピュータを用いると、これらの立体構造データにインターネットを介してアクセスし、さらに分子グラフィックスソフトウェアを用いてその構造を表示することが可能となります。
人間の肉眼では見えない生体分子をこのようにコンピュータ上で可視化することで、その機能に対する理解をいっそう深めることができます。ここでは練習として、加水分解酵素「アルカリホスファターゼ」のアミノ酸配列や立体構造に関するデータをデータベースから取得し、タンパク質の配列-構造-機能の関係を理解してみます。アルカリホスファターゼは、我々の健康診断の時に肝臓の機能を測る指標(ALP)として、生活に関わっているタンパク質です。
それでは早速やっていきましょう。
Protein Data Bank (PDB)にアクセスする
お使いのパソコンにインストールされているウェブブラウザ(Edge, Safari, Google Chrome, Firefoxなど)の検索エンジンに、「PDB」と入れて検索すると、RCSB PDBのホームページが表示されます。
画面右上のボックスに「alkaline phosphatase」と入力し,ボックス右のGoボタンを押します。
メニュー左側に現れている「Refinements」の「ORGANISM」に表示されている「Escherichia coli」をクリックして▶ボタンをクリックします。これで大腸菌由来の「alkaline phosphatase」に検索を絞り込むことができます。
表示された結果の中から「1ALK」を探してクリックします。
PDBの各エントリには、このように4文字の記号(PDB ID)が付けられています。なお、PDBのIDがあらかじめわかっている場合はテキストボックスにPDB IDを入れてGoボタンを押すことでも目的の構造のページに移動することができます。これによって、1ALKエントリの内容が表示されます。
最初のページには、このエントリのタイトル、登録日、由来する生物種や立体構造のグラフィックスなどが表示されています。さらに画面上方のタブをクリックすると、このタンパク質に関するさまざまなデータにアクセスできます。現在表示されているのは「Structure Summary」タブの内容です。
このStructure Summaryのタブのページで、以下のデータに注目してみましょう。
「Macromolecules」にはこのエントリのタンパク質の簡単な説明が記載されています。検索条件で指定したとおり、大腸菌(Escherichia coli)のアルカリホスファターゼであり、さらに分子量が94687.01であること、 449残基のアルカリホスファターゼ分子がA、 Bの2本のチェイン(鎖)として含まれていることなどがわかります。
「Small Molecules」にはこのエントリに含まれるタンパク質以外の低分子化合物や金属などの情報が記載されています。リン酸塩(PO4)、亜鉛イオン(ZN)、マグネシウムイオン(MG)が結合していることがわかります。このアルカリホスファターゼは、本来リン酸エステル化合物を加水分解する酵素であり、リン酸塩はこの酵素の阻害剤として結合している無機リン酸です。
PDBデータのダウンロード
PDBの構造情報ファイルをダウンロードし、その中身を確認してみましょう。
分子の立体構造データの実体は、その分子を構成している各原子の\( xyz \)座標データの集まりです。PDB ID: 1ALKのStructure Summaryのタブに戻って右上のDisplay Filesを左クリックし、さらにPDB Formatを左クリックすると、開かれたタブの中にPDBデータの中身が表示されます。
最初にHEADER
レコードやREMARK
レコード、SEQRES
レコードなどのヘッダ部があり、下方のATOM
(あるいはHETATM
)レコードに分子を構成する各原子の\( xyz \)座標などが並んでいます。ヘッダ部には、この分子が由来する生物種や文献情報、構造決定方法に関する情報、アミノ酸配列、単量体か多量体か、構造中に含まれる金属や補酵素の情報などが書かれており、先程まで見ていたPDB ID: 1ALKのウェブページ上ではこれらの情報がわかりやすく整形されて表示されています。座標データは、20種類の標準アミノ酸はATOM
レコードに、それ以外の基質や金属、修飾アミノ酸などはHETATM
レコードに記述されています。1ALKのATOM/HETATM
レコードに、タンパク質のAチェイン、 Bチェイン、続いて亜鉛(ZN
)、マグネシウム(MG
)、リン酸(PO4
)、水分子(HOH
)の座標データが並んでいることを確認してみましょう。
HEADER: PDB IDやタンパク質の種類,データ登録年月日
TITLE: このデータを得た研究内容の簡単な説明
SOURCE: その分子の由来(遺伝子名,生物種など)
AUTHOR: 著者名
JRNL: 立体構造が発表された文献情報
REMARK: X線結晶解析の解像度やその他のコメントなど
SEQRES: アミノ酸・塩基配列
HET: 標準アミノ酸・塩基以外の金属原子,基質などの情報
HELIX/SHEET/TURN: 2次構造情報
SSBOND: ジスルフィド(S-S)結合
ATOM: 原子座標など
HETATM: アミノ酸やヌクレオチド以外の原子(金属,基質化合物など)の座標など
TER: チェイン(chain, 鎖)の終わり
END: エントリの終わり
なお、構造ファイルのデータフォーマットは、これまで伝統的に用いられてきたPDB formatに代わって、2019年7月1日からはPDBx/mmCIF formatが標準形式として採用されることになっています。このファイル形式は、人間にはわかりにくいがコンピュータで処理しやすい形式になっています。余裕があればこのフォーマットも新規タブで開いてみましょう。
では、大腸菌のアルカリホスファターゼの立体構造データをダウンロードして、手元のコンピュータの中で可視化し、実際の立体構造を見てみましょう。このための可視化ソフトウェアとして、ここでは無料で利用でき、かつ多くの種類のコンピュータ上で動作することができるPyMOLを利用します。
再びRCSB PDBの1ALKのページに戻って、画面右上のDownload Filesを左クリックし、メニューの中のPDB Formatを右クリックして対象をファイルに保存を選択します。
ここで、ファイル名を1alk.pdb
とします。PDBファイルがダウンロード
のフォルダにダウンロードされるので、そこからデスクトップ
にファイルを移動させます。
PyMOLの起動
それではPyMOLを起動してみましょう。起動の仕方は、お使いのパソコン・macによってやり方が変わります。もしまだPyMOLをインストールしていない場合は、インストール方法を参照してください。
Windows 10の場合
(調査中です)
macOS (バイナリ版)の場合
初心者向けです。バイナリ版をインストールした場合、Finderから[アプリケーション]を選択して中にあるPyMOLをダブルクリックすることで起動できます。
macOS(オープンソース版の場合)
ターミナル操作に習熟した上級者向けです。オープンソース版はHomebrewを使うことでインストールできます。(参考:インストール方法)
インストールに完了した後、[アプリケーション]→[ユーティリティ]→[ターミナル]を選択して、pymol
と打てば起動します。実用上は pymol > /dev/null 2>&1 &
とコマンドを打つ方が便利かもしれません。
Linuxの場合
インストール完了後、ターミナルから pymol
と打つことで起動します。
大腸菌由来アルカリホスファターゼのグラフィック表示
PyMOLを起動した後、画面左上にあるFile
メニューからOpen...
を選び、先程デスクトップに移動させた1alk.pdb
ファイルを選択します。すると、PyMOL画面の中にPDB ID: 1ALKの大腸菌由来アルカリホスファターゼが表示されます。
このチュートリアルではPyMOLのGUI機能を駆使して、アルカリホスファターゼの2次構造の配置(フォールド)や、リン酸付近の原子・残基の配置などを調べてみます。必要に応じて第2章 PyMOLのGUIの使い方のマウス操作 とMouse Mode: 3-Button Viewing を読みます。マウスで分子をドラッグすることで、分子の回転、平行移動、拡大縮小などが行うことができます。
PyMOLでは、まずマウス(またはselect
コマンド)で原子やアミノ酸を選択(select) し、続いて選択した範囲に対する 操作(Action) を指定します。選択された部分はピンクのマーカーで強調されるので、今何が「選択」されているかに常に注意します。また、操作のやり直しはできないので、操作を間違えた場合にはその都度それを上書きする形で表示をやり直します。
チェインごとの色分け
このアルカリホスファターゼがホモ2量体であることをわかりやすく表示するために、Aチェインを緑色(デフォルト)、Bチェインを水色(cyan)で表示してみます。PyMOL右下の画面にSEQ
という小さなボタンがあるので、ここを押すと、タンパク質が表示されている画面の上にアミノ酸配列が現れます(参考: 配列の表示について )。
今表示されたアミノ酸配列の上で、マウスを使ってチェインBをすべて選択します。次に、色の設定を参考にしてチェインBを水色に変更します(参考:色の設定 )。
動画バージョンです
※ PyMOLの画面上に存在する入力欄PyMOL>
の所(中段上と一番下の2ヶ所に存在しますが、どちらに入力してもOK)で上や下の矢印キーを押すと、それまでに入力したコマンドを再び呼び出すことができます。また左右の矢印キーを使って、以前使ったコマンドを自由に編集できます。同じコマンドを何度も入力するのは面倒なので、上下左右の矢印キーを上手に使いましょう。
二次構造ごとの色分け
この大腸菌アルカリホスファターゼを、今度は二次構造による色分けを使って表示してみます(参考: 色の設定について )。
オブジェクトパネルにおける1ALK
のCのところをクリックし、Colorのメニューのところで、[by ss]にマウスを重ねます。色分けの種類はデフォルトで3種類用意されており、どれを使っても問題ありませんが、ここでは一番上の例(ヘリックス:赤; シート:黄; ループ:緑)のカラーリングで表示してみます。
このように表示されるはずです。
ここで、大腸菌アルカリホスファターゼの立体構造のCATHによる分類は、"Alpha Beta 3-Layer(aba) Sandwich"とされています。Cartoon表示で見る角度を調節して、このタンパク質の立体構造がCATHの分類通りにAlpha Betaの3層構造を形成していることを確認してみましょう。
画像の保存
画面に映されているタンパク質を画像ファイルとして保存します。ただし、そのまま保存しようとすると背景が黒のままとなってしまいます。
これを白背景で出力します。上部のDisplay > Backgroundメニューから、Whiteを選択します。
この設定の後、PyMOL画面の右上に存在するDraw/Rayボタンを押し、Draw (fast)
またはRay (slow)
ボタンを押すと、きれいな画像となって表示されます。
問題がなければ、Save Image to File
ボタンを押し、ファイル名を設定して保存しましょう。ちなみに、transparent background
にチェックを入れると背景透過画像を生成することができます(ただしRay (slow)
を適用した場合のみ)。背景透過処理を行うとレポートやスライドの上で扱いやすくなるので、ぜひ利用しましょう。
その他の詳しい項目については2.7 画像の保存を参照してください。
セッションファイルへの保存
ここまでの作業内容をセッションファイルに保存します。セッションファイルとは、現在のPyMOLの画面の状態をそのまま保存しておくファイルのことです。画面上部にあるFileメニューからSave session as…
を選んで名前を指定して保存します(kadai1.pse
など、わかりやすい名前をつけましょう)。(参考:セッションの保存 )。
保存したセッションファイルはFile > Openメニューから読み込むことができます。
すでにタンパク質を他に表示させている状態でセッションファイルを読み込もうとすると下図のようなメッセージが現れますが、今開いている画面と別のPyMOL画面でタンパク質を表示させたい場合は、一番下のOpen in new PyMOL Window
を選択することをおすすめします。
※ (上級者向け)上述のPyMOL>
の入力欄にコマンドを入力することでも可能です。デスクトップ上に保存したい場合は、cd ~/Desktop
としてWorking Directoryをデスクトップに設定した後、save kadai1.pse
とすることでセッションファイルを保存できます。
リガンド結合部位への注目
ここから、タンパク質内のリン酸や金属が結合している部分に注目してみます。まず、全体構造の中のどこに結合しているかを確認してみます。
- PyMOL内で配列を表示させます。
- 表示された配列のところで、Chain Aの
ZN
2つとMG
,PO4
をすべて選択します。 - 次に、オブジェクトパネルにおいてその選択範囲
(sele)
についてStickとSpheresで表示させてみます(→分子構造の表示形式のON/OFF)。
デフォルト設定では、sphere表示で表されるボールがかなり大きくなっているので、ここではいったん小さくしてみます。これはPyMOL >
のところにコマンドを打つことで設定できます。
set sphere_scale, 0.4
これで球が小さく表示されました。
ここで、表示をチェインA(A鎖)だけにし、Bチェインはhideで隠します(→分子構造の表示形式のON/OFF)。リン酸や金属は各チェインに1組ずつ結合していることがわかります。
チェインAのリン酸(PO4
)が画面の中心にくるよう設定してみます。これはこのPO4
を選択した上で右クリックを押してメニューを表示させ、center
を選択することでできます。
参考:マウス操作と各モードにおける操作一覧
マウス操作で、画面を拡大して見やすくしておきます。
タンパク質のCartoon表示をオフにします(→分子構造の表示形式のON/OFF)。
チェインAのリン酸から4.6 Å以内にある水分子以外のアミノ酸残基を表示させます。チェインAのリン酸PO4
だけが選択された状態で以下のコマンドを打ちます。
select byres resn * within 4.6 of sele
show sticks, sele
ここで、byres
は「残基単位での選択」を意味する設定であり、とある残基が1原子でもリン酸から4.6 Åの距離以内に存在するのであれば、その残基をすべて選択するようにしています。その後、2行目のコマンドで選択した範囲をsticks
で表示させます(オブジェクトパネルでも可能)
Zn,Mgは原子種ごとの色分け(→色の設定)にします。
リン酸付近にどのようなアミノ酸種が分布しているかを確認するために、先程の選択範囲(sele)
について、ラベルの設定でlabel
-> residues
を選択します。
PyMOL画面を回転させて、どのアミノ酸がこのリガンド結合部位に存在しているかをすべてメモします。目視で行っても構いませんが、ここではPyMOLがPythonプログラミングで動いているということを利用して、以下のコマンドを入力して確認してみましょう。
コマンド入力欄に以下のコマンドを順次入れていきます(コピー&ペースト可能)。
# チェインAのリン酸を選択する(残基名がPO4でかつchain Aのものをselectする)
select resn PO4 and chain A
# 現在の選択範囲から4.6Å以内にある分子を、残基単位(byres)ですべて選択する
select byres resn * within 4.6 of sele
# ここで空の配列であるreslistを作成しておく(初期化)
reslist = []
# pymolのiterateコマンドを用いて、選択範囲(sele)に存在するCα炭素(name CA)について
# (residue_id, residue_name)のタプルをreslistに繰り返し加えていく
iterate sele and name CA, reslist.append((resi, resn))
# reslistを表示する
print(reslist)
ここまでうまく入力されていれば、最後に以下のように結果が表示されるはずです。
PyMOL> print(reslist)
[('51', 'ASP'), ('101', 'ASP'), ('102', 'SER'), ('153', 'ASP'), ('166', 'ARG'), ('327', 'ASP'), ('331', 'HIS'), ('369', 'ASP'), ('370', 'HIS'), ('412', 'HIS')]
これはpythonで言うところの、リスト型変数reslist
の中にタプル型で(残基番号, 3文字残基名)の組が入っている形になっています。
これをよく生物学の表示で使われるようなMET-1, ASP-2のような表示に変換したい場合は、pythonのprint文を知識を使って例えば以下のようにpythonプログラムを書けばうまく出力することができます。ただし、PyMOLのコマンドラインでpythonプログラムを書く場合はpython
とpython end
というブロックの間に挟む必要があります。(参考: https://pymolwiki.org/index.php/Python )
python
# リスト内のタプルをi, jに代入するfor loop
for i, j in reslist:
# print&format文法を使って"{residue_name}-{residue_id}"の順番で表示する
print("{0}-{1}".format(j, i))
python end
すると、以下のように表示されます。
PyMOL>python end
ASP-51
ASP-101
SER-102
ASP-153
ARG-166
ASP-327
HIS-331
ASP-369
HIS-370
HIS-412
こうすれば目視でやるより書き漏らしがなくて済みますね。
終わったら、再び現在までの作業内容をセッションファイルに保存しておきます。ファイル名はたとえば1alk_active_site.pse
などとしておくと分かりやすくて良いでしょう。
ヒトアルカリホスファターゼとの構造比較
ヒトアルカリホスファターゼも立体構造が解かれ、PDBに登録されている(PDB ID: 1EW2)。大腸菌アルカリホスファターゼとの類似点・相違点を調べてみよう。
ヒトアルカリホスファターゼと大腸菌アルカリホスファターゼのアミノ酸一致度は30%弱である。つまり平均すると10箇所のうち7箇所以上はアミノ酸が異なっていることになります。では、ヒトアルカリホスファターゼは大腸菌アルカリホスファターゼとまったく異なるやり方でリン酸エステル化合物の加水分解を行っているのだろうか?それとも似た反応機構をもっているのでしょうか。立体構造の観点から調べてみましょう。
ヒトアルカリホスファターゼの構造ファイルのダウンロード
まず大腸菌のときと同様に、RCSB PDBから1EW2のPDBファイルをダウンロードします(参考:分子構造のロード)。次に、すでに1ALKの構造を開いているPyMOLの中で、この1EW2の構造ファイルをロードします。しかし、ここで1ALKのときと違いChain Aしか表示されていないことに気付くでしょう。1EW2も1ALKと同様にBiological unitはホモダイマーですが、この構造ファイルには結晶の対称性を考慮してチェイン1本分の座標しか入っていない状態になっています。このような場合はPyMOLの機能を使って、結晶の対称性からもう1本のチェインの座標データを生成することができます。
Biological unitを考慮した分子構造のロードのページを参考に、1EW2の構造を2量体でロードします。1EW2の各チェインは1ew2_0001
, 1ew2_0002
と表示されることになります。ここで、わかりやすくするために大腸菌のアルカリホスファターゼを緑色に、今開いたヒトアルカリホスファターゼの2量体を水色で表示させておきます。
2つのアルカリホスファターゼの構造の重ね合わせ
では、大腸菌とヒトのアルカリホスファターゼの構造をそれぞれ重ね合わせることで比較してみましょう。ここではPyMOLのsuper
という重ね合わせ用のコマンドを使います。
今、画面には1alk
と1ew2_0001
, 1ew2_0002
のオブジェクトが存在しているはずです。ここで、1alk
オブジェクトを1ew2_0001
オブジェクトに重ね合わせることを以下のコマンドで行います(※1ew2_0001
を1alk
に、ではないことに注意)。このコマンドは
super 1alk, 1ew2_0001
です。これを行うと、
図のように大腸菌ホスファターゼとヒトアルカリホスファターゼを重ねることができます(図では背景をグレーにしています)。また、画面上部のPyMOLコンソール画面には2つの構造のRMSD値が表示されます。
PyMOL>super 1alk, 1ew2_0001
MatchAlign: aligning residues (898 vs 479)...
MatchAlign: score 740.851
ExecutiveAlign: 1947 atoms aligned.
ExecutiveRMS: 83 atoms rejected during cycle 1 (RMSD=4.31).
ExecutiveRMS: 135 atoms rejected during cycle 2 (RMSD=2.64).
ExecutiveRMS: 187 atoms rejected during cycle 3 (RMSD=2.03).
ExecutiveRMS: 135 atoms rejected during cycle 4 (RMSD=1.39).
ExecutiveRMS: 87 atoms rejected during cycle 5 (RMSD=1.03).
Executive: RMSD = 0.864 (1320 to 1320 atoms)
この結果、0.864 Åというとても小さなRMSD値が得られました。これはこの2つの構造の差が小さいことを表しています。
タンパク質の疎水性・親水性残基の分布を確認する
タンパク質を構成しているアミノ酸は通常20種類ですが、その20種類のアミノ酸を化学的な性質に基づいて親水性・疎水性で分類することがあります。この親水性とは水に対して親和性が高いという意味で、疎水性は反対に親和性が低いということを意味します。特に、水素結合を形成しやすい側鎖を持つアミノ酸は親水性アミノ酸と呼ばれ、そうでないものは疎水性アミノ酸と呼ばれます。
親水性アミノ酸は以下のアミノ酸が該当します。pH 7.0の中性溶液中で持つ電荷についても示します。
- 酸性アミノ酸(負電荷を持つ)
- アスパラギン酸(Asp, D)
- グルタミン酸(Glu, E)
- 塩基性アミノ酸(正電荷を持つ)
- リジン(Lys, K)
- アルギニン(Arg, R)
- 中性アミノ酸
- スレオニン(Thr, T)
- セリン(Ser, S)
- アスパラギン(Asn, N)
- グルタミン(Gln, Q)
- ヒスチジン(His, H)
また、これらの親水性度・疎水性度を数値化した研究も存在しています(J. Mol. Biol. 179:125-142 (1984))。これによれば、
アミノ酸 | 疎水性度 |
---|---|
Ala | 0.620 |
Arg | -2.530 |
Asn | -0.780 |
Asp | -0.900 |
Cys | 0.290 |
Gln | -0.850 |
Glu | -0.740 |
Gly | 0.480 |
His | -0.400 |
Ile | 1.380 |
Leu | 1.060 |
Lys | -1.500 |
Met | 0.640 |
Phe | 1.190 |
Pro | 0.120 |
Ser | -0.180 |
Thr | -0.050 |
Trp | 0.810 |
Tyr | 0.260 |
Val | 1.080 |
となっています(値が高いほど疎水性、低いほど親水性)。
一方で、これまで見てきたようにタンパク質はある1つの決まった形を取るように折りたたまっています。このとき親水性・疎水性アミノ酸はタンパク質構造上でどのように分布しているかを、PyMOLに表示した大腸菌アルカリホスファターゼを例にとって確認してみましょう。
まずあらためて大腸菌アルカリホスファターゼ(PDB ID: 1ALK)をロードし直しておきます。
続いて、この構造を上の表で登場したアミノ酸の親水性・疎水性基準に従って、アミノ酸の側鎖を色分けしてみます。親水性のアミノ酸(表で0以下の値を持つアミノ酸)をすべて水色に、疎水性アミノ酸をすべてオレンジ色に塗ってみます。このとき、すべてのアミノ酸をマウスで選ぶのは大変なので、PyMOLのコマンドラインを活用します。
PyMOLソフトウェアのPyMOL>
と書かれている欄にまずselect hydrophobic,(resn ala+cys+gly+val+ile+leu+phe+pro+met+trp+tyr)
と入れてEnterキーを入力すると、疎水性アミノ酸たちがhydrophobic
という名前の選択範囲が保存されます。この後、この選択範囲をオレンジ色にするためにcolor orange, hydrophobic
というコマンドを入力します。同様にして、すべての親水性アミノ酸をhydrophilic
という名前の選択範囲として登録しておき、これをシアン色に色付けします。最後に、これらのアミノ酸残基の体積を強調するためにSphere表示にしてみます。
以上のコマンドは
# 疎水性残基をhydrophobicという名前の選択範囲として保存
select hydrophobic,(resn ala+cys+gly+val+ile+leu+phe+pro+met+trp+tyr)
# 選択範囲hydrophobicをorange色にする
color orange,hydrophobic
# 親水性残基をhydrophobicという名前の選択範囲として保存
select hydrophilic,(resn arg+asn+asp+gln+glu+his+lys+ser+thr)
# 選択範囲hydrophilicをcyan色にする
color cyan, hydrophilic
# すべての残基をsphere表示にする
show spheres, all
と打っていくことで達成されます。
このように色付けをしてみると、大腸菌アルカリホスファターゼの表面には親水性の残基が比較的多く分布していることがわかります。
ここで、PyMOLのマウス機能の1つであるSlabを使ってタンパク質の中を覗いてみます。Slabはマウスのホイールを回転させて行います(Macbookなどに付属しているタッチパッドで行う場合は、タッチパッドに2本指を置いて上下に動かします)
すると、アルカリホスファターゼのタンパク質構造の内部には疎水性アミノ酸がとても密に詰まっていることがわかると思います。その一方で、表面にはやはり親水性アミノ酸が分布していることから、タンパク質構造の外側には親水性アミノ酸が、内側には疎水性アミノ酸がそれぞれ分布していることがわかります。
このことはアルカリホスファターゼに限らず他の多くのタンパク質についても一般に成立します。ただこのアミノ酸の分布は親水性・疎水性アミノ酸の性質からすると当然のことを言っているに過ぎないと思われるかもしれません。しかしながら、これらの大きな疎水性アミノ酸のかたまり、通称疎水性コアは、タンパク質構造を安定に保つために重要な役割を果たしています。
水溶液中で安定に存在できる球状タンパク質は、疎水性アミノ酸が周囲の水分子と反発することによって親水性アミノ酸を外側へ、疎水性アミノ酸は内側へ集中させることから生まれる疎水性相互作用によって構造を形成していくことが知られています。そしてこの疎水性コアは疎水性アミノ酸同士の側鎖が密にパッキングすることによって文字通り隙間なく形成されており、これによってタンパク質全体の構造の安定性を大きく伸ばすことに貢献しています。タンパク質構造で注目されがちなのは親水性アミノ酸がよく用いられ外側に露出している活性部位(大腸菌アルカリホスファターゼで言うところのSer102, Arg166周辺)なのですが、こうした構造の成り立ちに関わるアミノ酸の分布のことも重要であることを覚えておくと、タンパク質構造についての理解がより深まると思います。
補足ですが、タンパク質アミノ酸を疎水性・親水性に応じて色分けを行うための拡張コマンドとしてcolor_h
, color_h2
が存在します(https://pymolwiki.org/index.php/Color_h)。color_h
, color_h2
コマンドの使い方はPyMOL上でのpythonスクリプトの実行を参考にしてみてください。
タンパク質の位置依存的なアミノ酸保存度の違いを理解する
これまで見てきたように、タンパク質の内部は疎水性アミノ酸で充填されており、外側には水に溶けやすい親水性残基を露出することで水溶液中に存在しているというのがタンパク質の構築原理でした。一方、タンパク質は構造を保つだけでなく、リガンドを結合したり、化学反応を触媒したりする機能を持つことが生体内で特に重要です。言い換えれば、タンパク質は限られた20種類のアミノ酸をうまく使い分けることで、内部構造を保ちつつ、そして機能も発現させなければならないという二面性を持っています。
しかし、タンパク質を使って生きている生物というものは不思議なもので、すでにヒトと大腸菌のアルカリホスファターゼで見てきた通り、同じ機能を持つタンパク質であっても、それを構成しているアミノ酸配列を調べてみると、配列間の相同性が2〜3割しかないということもよく見られます。これは一体どういうことでしょうか?
以上のことを、アルカリホスファターゼについて確認してみましょう。まずは、PDBsum (https://www.ebi.ac.uk/thornton-srv/databases/cgi-bin/pdbsum/GetPage.pl?pdbcode=index.html) というデータベースに登録されているデータを用います。PDBsumはPDBに登録された生体分子の構造データを加工したデータベースの1つで、配列・構造情報・リガンド結合・文献情報などをわかりやすくまとめてあります。ここのトップページのフォームに、調べたいPDBデータのIDを入れてFindボタンを押します。
すると、PDB ID: 1ALKについてのページに移ります。このトップページには構造の図とともに、タンパク質の分類・リガンド情報・化学反応・一次文献情報・この構造を引用している論文一覧……などが表示されています。
さらに、上部にあるタブをクリックすることで、さらに他の詳細な情報を表示させることができます。ここではProteinタブをクリックしてみましょう。
Proteins タブ、ページ左側にあるMotifsメニューのSecondary structure, Residue conservationをクリックすると(上図の赤丸部分)、アミノ酸の生物種間での保存度が1つずつカラーリングされているページが現れます。
この1文字表記のアミノ酸配列を見てみると、青〜緑〜黄〜赤までのカラーリングがなされていることに気づくと思います。このカラーリングはこの大腸菌アルカリホスファターゼの類縁配列上で、そのアミノ酸の位置がどれほど保存されているかを表しています(ページ下部に説明が書かれてあります)。言い換えれば、大腸菌アルカリホスファターゼについて他の類縁配列とのマルチプルシーケンスアライメントを作成してみたとき、ある位置のアミノ酸の種類が他の類縁配列上でも同じであればその位置のアミノ酸の保存度は高く、逆に他の類縁配列上でバラバラな様子が観測されていればその位置のアミノ酸の保存度は低くなります。例えば、この大腸菌アルカリホスファターゼのcatalytic residueであるSer102, Arg166のアミノ酸の保存度は最も高い9で示されています。この他にも、PDB SITE records(※なにかのリガンドが結合しているアミノ酸につくレコード)のマークが付いているアミノ酸はいずれも高い保存度を示していることが見て取れます。しかし、大腸菌アルカリホスファターゼのアミノ酸配列全体を見渡してみると、他にも保存度が高いところがあるのが伺えますし、逆に保存度が低いアミノ酸はなぜ低くなっているのか、という疑問も残ります。
そこでこの疑問を考察するために、これからこの保存度の情報をPyMOLで表示させた大腸菌アルカリホスファターゼ構造の上に表示させてみます。
先程のResidue Conservationのページの下の方を見ると、この保存度はConsurf-DBというデータベースに保存されてあります(https://consurfdb.tau.ac.il/ )。このページにアクセスして、大腸菌アルカリホスファターゼのPDB IDとChain IDを以下の画像のように入力してみましょう。
すると、まもなくPDB: 1ALKについての保存度情報についてのページに遷移します。ここで、下の方にあるHigh Resolution Figuresのところから、PyMOLの方のマークをクリックして、PyMOLのセッションファイル(consurf_pymol_session.pse
)をダウンロードします。
このダウンロードしてきたファイルをPyMOLで開いてみましょう。
ここで、保存度のカラーリングはChain Aのみに行われており、Chain Bについては情報が存在していないためグレー表示となっていることに注意してください。
このダウンロードしてきた構造をPyMOL上で様々な角度から眺めていると、タンパク質構造の内側は保存度が高く、外側は保存度が小さいことに気付かれると思います。これは偶然ではなく、前項のタンパク質の疎水性親水性残基の分布を確認するで確認した通り、タンパク質構造の内部は疎水性アミノ酸によって隙間なく密にしておくことで、タンパク質構造を安定に支えておく必要があるからです。つまり、内部を支えるアミノ酸が不用意に別のアミノ酸に変化してしまうと構造を支えられなくなって機能を保てなくなってしまいます。また構造の外側に位置するアミノ酸であっても、活性残基、およびその周辺の残基は特に保存されていることがわかります。これはもちろんタンパク質の機能を直接担う責任重大なアミノ酸だから、と考えることができます。反対に、外側に露出しているアミノ酸はある程度どのアミノ酸を使ってもタンパク質構造全体の安定性という観点からすると大きな問題ではないため、アミノ酸の保存度が低くても機能に支障が出ないというわけです。
タンパク質はその機能を失わず、かつ構造を安定に保つという最低限の目的さえ果たせれば、そのアミノ酸配列はある程度自由に構成することができます。アルカリホスファターゼの例で言えば、リン酸モノエステル化合物を加水分解するという機能を損なわず、かつタンパク質全体の構造が壊れなければ、そのアミノ酸配列はある程度許容されることになり、長い進化の課程で大腸菌やヒトのものといった様々なバリエーションが生まれていったと考えることができます。
アルカリホスファターゼの加水分解酵素としての働き
最後に、アルカリホスファターゼが「ホスファターゼ」の名前通りにリン酸モノエステル加水分解酵素として化学的にどう働いているかを観察してみましょう。
アルカリホスファターゼ(ALP)は以下の反応式のように、p-ニトロフェニルリン酸を加水分解してp-ニトロフェノール(黄色く発色する)を生成することができます。
この反応の様子をPyMOLで見てみましょう。
このリンクに1alk_reaction.pse
という名前のPyMOLセッションファイルを置いています。これをダウンロードしてダブルクリック、またはFile -> Openからこのファイルを開いてみましょう。このセッションファイルにはアルカリホスファターゼの単量体とともに、今まで無機リン酸が入っていた箇所にp-ニトロフェニルリン酸(残基名:NPH)の構造が見えるはずです。
PyMOL Internal GUIの右下には▶ボタンがあります。この▶ボタンを押すとタンパク質とp-ニトロフェニルリン酸が少しずつ動き、化学反応を起こしている様子が可視化されて見えるはずです。
このような動いている様子が見られるのは、このセッションファイルにはあらかじめ149フレーム分の構造データを入れたオブジェクトが含まれているからです。ほとんどすべてのRCSB PDBからダウンロードしてきた結晶構造のデータは静止しているために1フレーム分のデータしかありませんが、NMRで構造決定されたデータですと、タンパク質の「動き」が収録されているものもあります(例としてPDB ID: 1G03)。
このセッションファイルには、dist01
からdist11
までの距離オブジェクトも含まれています。この距離オブジェクトはマウス操作の原子ピッキング(PkAt)機能を用いることで作成することができます。距離を測定したい2点の原子の上でそれぞれCtrlキーを押しながらマウスのホイールクリックを行い、コマンドでdist
と入力することで距離オブジェクトを生成することができます。
目的
酵素などのタンパク質は、それぞれ固有のアミノ酸配列をもち、それが固有の立体構造に折れたたまります。これにより、アミノ酸配列上では離れていた残基同士が接近し、それらが協同して他の分子と相互作用したり化学反応を触媒したりすることができるようになります。タンパク質を含む生体分子が機能を果たすためには、その立体構造が本質的に重要です。生体分子は、ナノメートル(\( 10^{-9}\ \rm{m} \))オーダーの微小なものですが、X線結晶構造解析法やNMR法、最近ではクライオ電子顕微鏡などの手法を用いて、その立体構造(分子を構成している各原子の\( xyz \)座標)を決定することができます。それらの構造データは、公共の立体構造データベースに蓄積され、誰もが自由かつ無料で利用できるようになっています。コンピュータを用いると、これらの立体構造データにインターネットを介してアクセスし、さらに分子グラフィックスソフトウェアを用いてその構造を表示することが可能となります。
人間の肉眼では見えない生体分子をこのようにコンピュータ上で可視化することで、その機能に対する理解をいっそう深めることができます。ここでは練習として、加水分解酵素「アルカリホスファターゼ」のアミノ酸配列や立体構造に関するデータをデータベースから取得し、タンパク質の配列-構造-機能の関係を理解してみます。アルカリホスファターゼは、我々の健康診断の時に肝臓の機能を測る指標(ALP)として、生活に関わっているタンパク質です。
それでは早速やっていきましょう。
Protein Data Bank (PDB)にアクセスする
お使いのパソコンにインストールされているウェブブラウザ(Edge, Safari, Google Chrome, Firefoxなど)の検索エンジンに、「PDB」と入れて検索すると、RCSB PDBのホームページが表示されます。
画面右上のボックスに「alkaline phosphatase」と入力し,ボックス右のGoボタンを押します。
メニュー左側に現れている「Refinements」の「ORGANISM」に表示されている「Escherichia coli」をクリックして▶ボタンをクリックします。これで大腸菌由来の「alkaline phosphatase」に検索を絞り込むことができます。
表示された結果の中から「1ALK」を探してクリックします。
PDBの各エントリには、このように4文字の記号(PDB ID)が付けられています。なお、PDBのIDがあらかじめわかっている場合はテキストボックスにPDB IDを入れてGoボタンを押すことでも目的の構造のページに移動することができます。これによって、1ALKエントリの内容が表示されます。
最初のページには、このエントリのタイトル、登録日、由来する生物種や立体構造のグラフィックスなどが表示されています。さらに画面上方のタブをクリックすると、このタンパク質に関するさまざまなデータにアクセスできます。現在表示されているのは「Structure Summary」タブの内容です。
このStructure Summaryのタブのページで、以下のデータに注目してみましょう。
「Macromolecules」にはこのエントリのタンパク質の簡単な説明が記載されています。検索条件で指定したとおり、大腸菌(Escherichia coli)のアルカリホスファターゼであり、さらに分子量が94687.01であること、 449残基のアルカリホスファターゼ分子がA、 Bの2本のチェイン(鎖)として含まれていることなどがわかります。
「Small Molecules」にはこのエントリに含まれるタンパク質以外の低分子化合物や金属などの情報が記載されています。リン酸塩(PO4)、亜鉛イオン(ZN)、マグネシウムイオン(MG)が結合していることがわかります。このアルカリホスファターゼは、本来リン酸エステル化合物を加水分解する酵素であり、リン酸塩はこの酵素の阻害剤として結合している無機リン酸です。
PDBデータのダウンロード
PDBの構造情報ファイルをダウンロードし、その中身を確認してみましょう。
分子の立体構造データの実体は、その分子を構成している各原子の\( xyz \)座標データの集まりです。PDB ID: 1ALKのStructure Summaryのタブに戻って右上のDisplay Filesを左クリックし、さらにPDB Formatを左クリックすると、開かれたタブの中にPDBデータの中身が表示されます。
最初にHEADER
レコードやREMARK
レコード、SEQRES
レコードなどのヘッダ部があり、下方のATOM
(あるいはHETATM
)レコードに分子を構成する各原子の\( xyz \)座標などが並んでいます。ヘッダ部には、この分子が由来する生物種や文献情報、構造決定方法に関する情報、アミノ酸配列、単量体か多量体か、構造中に含まれる金属や補酵素の情報などが書かれており、先程まで見ていたPDB ID: 1ALKのウェブページ上ではこれらの情報がわかりやすく整形されて表示されています。座標データは、20種類の標準アミノ酸はATOM
レコードに、それ以外の基質や金属、修飾アミノ酸などはHETATM
レコードに記述されています。1ALKのATOM/HETATM
レコードに、タンパク質のAチェイン、 Bチェイン、続いて亜鉛(ZN
)、マグネシウム(MG
)、リン酸(PO4
)、水分子(HOH
)の座標データが並んでいることを確認してみましょう。
HEADER: PDB IDやタンパク質の種類,データ登録年月日
TITLE: このデータを得た研究内容の簡単な説明
SOURCE: その分子の由来(遺伝子名,生物種など)
AUTHOR: 著者名
JRNL: 立体構造が発表された文献情報
REMARK: X線結晶解析の解像度やその他のコメントなど
SEQRES: アミノ酸・塩基配列
HET: 標準アミノ酸・塩基以外の金属原子,基質などの情報
HELIX/SHEET/TURN: 2次構造情報
SSBOND: ジスルフィド(S-S)結合
ATOM: 原子座標など
HETATM: アミノ酸やヌクレオチド以外の原子(金属,基質化合物など)の座標など
TER: チェイン(chain, 鎖)の終わり
END: エントリの終わり
なお、構造ファイルのデータフォーマットは、これまで伝統的に用いられてきたPDB formatに代わって、2019年7月1日からはPDBx/mmCIF formatが標準形式として採用されることになっています。このファイル形式は、人間にはわかりにくいがコンピュータで処理しやすい形式になっています。余裕があればこのフォーマットも新規タブで開いてみましょう。
では、大腸菌のアルカリホスファターゼの立体構造データをダウンロードして、手元のコンピュータの中で可視化し、実際の立体構造を見てみましょう。このための可視化ソフトウェアとして、ここでは無料で利用でき、かつ多くの種類のコンピュータ上で動作することができるPyMOLを利用します。
再びRCSB PDBの1ALKのページに戻って、画面右上のDownload Filesを左クリックし、メニューの中のPDB Formatを右クリックして対象をファイルに保存を選択します。
ここで、ファイル名を1alk.pdb
とします。PDBファイルがダウンロード
のフォルダにダウンロードされるので、そこからデスクトップ
にファイルを移動させます。
PyMOLの起動
それではPyMOLを起動してみましょう。起動の仕方は、お使いのパソコン・macによってやり方が変わります。もしまだPyMOLをインストールしていない場合は、インストール方法を参照してください。
Windows 10の場合
(調査中です)
macOS (バイナリ版)の場合
初心者向けです。バイナリ版をインストールした場合、Finderから[アプリケーション]を選択して中にあるPyMOLをダブルクリックすることで起動できます。
macOS(オープンソース版の場合)
ターミナル操作に習熟した上級者向けです。オープンソース版はHomebrewを使うことでインストールできます。(参考:インストール方法)
インストールに完了した後、[アプリケーション]→[ユーティリティ]→[ターミナル]を選択して、pymol
と打てば起動します。実用上は pymol > /dev/null 2>&1 &
とコマンドを打つ方が便利かもしれません。
Linuxの場合
インストール完了後、ターミナルから pymol
と打つことで起動します。
大腸菌由来アルカリホスファターゼのグラフィック表示
PyMOLを起動した後、画面左上にあるFile
メニューからOpen...
を選び、先程デスクトップに移動させた1alk.pdb
ファイルを選択します。すると、PyMOL画面の中にPDB ID: 1ALKの大腸菌由来アルカリホスファターゼが表示されます。
このチュートリアルではPyMOLのGUI機能を駆使して、アルカリホスファターゼの2次構造の配置(フォールド)や、リン酸付近の原子・残基の配置などを調べてみます。必要に応じて第2章 PyMOLのGUIの使い方のマウス操作 とMouse Mode: 3-Button Viewing を読みます。マウスで分子をドラッグすることで、分子の回転、平行移動、拡大縮小などが行うことができます。
PyMOLでは、まずマウス(またはselect
コマンド)で原子やアミノ酸を選択(select) し、続いて選択した範囲に対する 操作(Action) を指定します。選択された部分はピンクのマーカーで強調されるので、今何が「選択」されているかに常に注意します。また、操作のやり直しはできないので、操作を間違えた場合にはその都度それを上書きする形で表示をやり直します。
チェインごとの色分け
このアルカリホスファターゼがホモ2量体であることをわかりやすく表示するために、Aチェインを緑色(デフォルト)、Bチェインを水色(cyan)で表示してみます。PyMOL右下の画面にSEQ
という小さなボタンがあるので、ここを押すと、タンパク質が表示されている画面の上にアミノ酸配列が現れます(参考: 配列の表示について )。
今表示されたアミノ酸配列の上で、マウスを使ってチェインBをすべて選択します。次に、色の設定を参考にしてチェインBを水色に変更します(参考:色の設定 )。
動画バージョンです
※ PyMOLの画面上に存在する入力欄PyMOL>
の所(中段上と一番下の2ヶ所に存在しますが、どちらに入力してもOK)で上や下の矢印キーを押すと、それまでに入力したコマンドを再び呼び出すことができます。また左右の矢印キーを使って、以前使ったコマンドを自由に編集できます。同じコマンドを何度も入力するのは面倒なので、上下左右の矢印キーを上手に使いましょう。
二次構造ごとの色分け
この大腸菌アルカリホスファターゼを、今度は二次構造による色分けを使って表示してみます(参考: 色の設定について )。
オブジェクトパネルにおける1ALK
のCのところをクリックし、Colorのメニューのところで、[by ss]にマウスを重ねます。色分けの種類はデフォルトで3種類用意されており、どれを使っても問題ありませんが、ここでは一番上の例(ヘリックス:赤; シート:黄; ループ:緑)のカラーリングで表示してみます。
このように表示されるはずです。
ここで、大腸菌アルカリホスファターゼの立体構造のCATHによる分類は、"Alpha Beta 3-Layer(aba) Sandwich"とされています。Cartoon表示で見る角度を調節して、このタンパク質の立体構造がCATHの分類通りにAlpha Betaの3層構造を形成していることを確認してみましょう。
画像の保存
画面に映されているタンパク質を画像ファイルとして保存します。ただし、そのまま保存しようとすると背景が黒のままとなってしまいます。
これを白背景で出力します。上部のDisplay > Backgroundメニューから、Whiteを選択します。
この設定の後、PyMOL画面の右上に存在するDraw/Rayボタンを押し、Draw (fast)
またはRay (slow)
ボタンを押すと、きれいな画像となって表示されます。
問題がなければ、Save Image to File
ボタンを押し、ファイル名を設定して保存しましょう。ちなみに、transparent background
にチェックを入れると背景透過画像を生成することができます(ただしRay (slow)
を適用した場合のみ)。背景透過処理を行うとレポートやスライドの上で扱いやすくなるので、ぜひ利用しましょう。
その他の詳しい項目については2.7 画像の保存を参照してください。
セッションファイルへの保存
ここまでの作業内容をセッションファイルに保存します。セッションファイルとは、現在のPyMOLの画面の状態をそのまま保存しておくファイルのことです。画面上部にあるFileメニューからSave session as…
を選んで名前を指定して保存します(kadai1.pse
など、わかりやすい名前をつけましょう)。(参考:セッションの保存 )。
保存したセッションファイルはFile > Openメニューから読み込むことができます。
すでにタンパク質を他に表示させている状態でセッションファイルを読み込もうとすると下図のようなメッセージが現れますが、今開いている画面と別のPyMOL画面でタンパク質を表示させたい場合は、一番下のOpen in new PyMOL Window
を選択することをおすすめします。
※ (上級者向け)上述のPyMOL>
の入力欄にコマンドを入力することでも可能です。デスクトップ上に保存したい場合は、cd ~/Desktop
としてWorking Directoryをデスクトップに設定した後、save kadai1.pse
とすることでセッションファイルを保存できます。
リガンド結合部位への注目
ここから、タンパク質内のリン酸や金属が結合している部分に注目してみます。まず、全体構造の中のどこに結合しているかを確認してみます。
- PyMOL内で配列を表示させます。
- 表示された配列のところで、Chain Aの
ZN
2つとMG
,PO4
をすべて選択します。 - 次に、オブジェクトパネルにおいてその選択範囲
(sele)
についてStickとSpheresで表示させてみます(→分子構造の表示形式のON/OFF)。
デフォルト設定では、sphere表示で表されるボールがかなり大きくなっているので、ここではいったん小さくしてみます。これはPyMOL >
のところにコマンドを打つことで設定できます。
set sphere_scale, 0.4
これで球が小さく表示されました。
ここで、表示をチェインA(A鎖)だけにし、Bチェインはhideで隠します(→分子構造の表示形式のON/OFF)。リン酸や金属は各チェインに1組ずつ結合していることがわかります。
チェインAのリン酸(PO4
)が画面の中心にくるよう設定してみます。これはこのPO4
を選択した上で右クリックを押してメニューを表示させ、center
を選択することでできます。
参考:マウス操作と各モードにおける操作一覧
マウス操作で、画面を拡大して見やすくしておきます。
タンパク質のCartoon表示をオフにします(→分子構造の表示形式のON/OFF)。
チェインAのリン酸から4.6 Å以内にある水分子以外のアミノ酸残基を表示させます。チェインAのリン酸PO4
だけが選択された状態で以下のコマンドを打ちます。
select byres resn * within 4.6 of sele
show sticks, sele
ここで、byres
は「残基単位での選択」を意味する設定であり、とある残基が1原子でもリン酸から4.6 Åの距離以内に存在するのであれば、その残基をすべて選択するようにしています。その後、2行目のコマンドで選択した範囲をsticks
で表示させます(オブジェクトパネルでも可能)
Zn,Mgは原子種ごとの色分け(→色の設定)にします。
リン酸付近にどのようなアミノ酸種が分布しているかを確認するために、先程の選択範囲(sele)
について、ラベルの設定でlabel
-> residues
を選択します。
PyMOL画面を回転させて、どのアミノ酸がこのリガンド結合部位に存在しているかをすべてメモします。目視で行っても構いませんが、ここではPyMOLがPythonプログラミングで動いているということを利用して、以下のコマンドを入力して確認してみましょう。
コマンド入力欄に以下のコマンドを順次入れていきます(コピー&ペースト可能)。
# チェインAのリン酸を選択する(残基名がPO4でかつchain Aのものをselectする)
select resn PO4 and chain A
# 現在の選択範囲から4.6Å以内にある分子を、残基単位(byres)ですべて選択する
select byres resn * within 4.6 of sele
# ここで空の配列であるreslistを作成しておく(初期化)
reslist = []
# pymolのiterateコマンドを用いて、選択範囲(sele)に存在するCα炭素(name CA)について
# (residue_id, residue_name)のタプルをreslistに繰り返し加えていく
iterate sele and name CA, reslist.append((resi, resn))
# reslistを表示する
print(reslist)
ここまでうまく入力されていれば、最後に以下のように結果が表示されるはずです。
PyMOL> print(reslist)
[('51', 'ASP'), ('101', 'ASP'), ('102', 'SER'), ('153', 'ASP'), ('166', 'ARG'), ('327', 'ASP'), ('331', 'HIS'), ('369', 'ASP'), ('370', 'HIS'), ('412', 'HIS')]
これはpythonで言うところの、リスト型変数reslist
の中にタプル型で(残基番号, 3文字残基名)の組が入っている形になっています。
これをよく生物学の表示で使われるようなMET-1, ASP-2のような表示に変換したい場合は、pythonのprint文を知識を使って例えば以下のようにpythonプログラムを書けばうまく出力することができます。ただし、PyMOLのコマンドラインでpythonプログラムを書く場合はpython
とpython end
というブロックの間に挟む必要があります。(参考: https://pymolwiki.org/index.php/Python )
python
# リスト内のタプルをi, jに代入するfor loop
for i, j in reslist:
# print&format文法を使って"{residue_name}-{residue_id}"の順番で表示する
print("{0}-{1}".format(j, i))
python end
すると、以下のように表示されます。
PyMOL>python end
ASP-51
ASP-101
SER-102
ASP-153
ARG-166
ASP-327
HIS-331
ASP-369
HIS-370
HIS-412
こうすれば目視でやるより書き漏らしがなくて済みますね。
終わったら、再び現在までの作業内容をセッションファイルに保存しておきます。ファイル名はたとえば1alk_active_site.pse
などとしておくと分かりやすくて良いでしょう。
チェインごとの色分け
このアルカリホスファターゼがホモ2量体であることをわかりやすく表示するために、Aチェインを緑色(デフォルト)、Bチェインを水色(cyan)で表示してみます。PyMOL右下の画面にSEQ
という小さなボタンがあるので、ここを押すと、タンパク質が表示されている画面の上にアミノ酸配列が現れます(参考: 配列の表示について )。
今表示されたアミノ酸配列の上で、マウスを使ってチェインBをすべて選択します。次に、色の設定を参考にしてチェインBを水色に変更します(参考:色の設定 )。
動画バージョンです
※ PyMOLの画面上に存在する入力欄PyMOL>
の所(中段上と一番下の2ヶ所に存在しますが、どちらに入力してもOK)で上や下の矢印キーを押すと、それまでに入力したコマンドを再び呼び出すことができます。また左右の矢印キーを使って、以前使ったコマンドを自由に編集できます。同じコマンドを何度も入力するのは面倒なので、上下左右の矢印キーを上手に使いましょう。
二次構造ごとの色分け
この大腸菌アルカリホスファターゼを、今度は二次構造による色分けを使って表示してみます(参考: 色の設定について )。
オブジェクトパネルにおける1ALK
のCのところをクリックし、Colorのメニューのところで、[by ss]にマウスを重ねます。色分けの種類はデフォルトで3種類用意されており、どれを使っても問題ありませんが、ここでは一番上の例(ヘリックス:赤; シート:黄; ループ:緑)のカラーリングで表示してみます。
このように表示されるはずです。
ここで、大腸菌アルカリホスファターゼの立体構造のCATHによる分類は、"Alpha Beta 3-Layer(aba) Sandwich"とされています。Cartoon表示で見る角度を調節して、このタンパク質の立体構造がCATHの分類通りにAlpha Betaの3層構造を形成していることを確認してみましょう。
画像の保存
画面に映されているタンパク質を画像ファイルとして保存します。ただし、そのまま保存しようとすると背景が黒のままとなってしまいます。
これを白背景で出力します。上部のDisplay > Backgroundメニューから、Whiteを選択します。
この設定の後、PyMOL画面の右上に存在するDraw/Rayボタンを押し、Draw (fast)
またはRay (slow)
ボタンを押すと、きれいな画像となって表示されます。
問題がなければ、Save Image to File
ボタンを押し、ファイル名を設定して保存しましょう。ちなみに、transparent background
にチェックを入れると背景透過画像を生成することができます(ただしRay (slow)
を適用した場合のみ)。背景透過処理を行うとレポートやスライドの上で扱いやすくなるので、ぜひ利用しましょう。
その他の詳しい項目については2.7 画像の保存を参照してください。
セッションファイルへの保存
ここまでの作業内容をセッションファイルに保存します。セッションファイルとは、現在のPyMOLの画面の状態をそのまま保存しておくファイルのことです。画面上部にあるFileメニューからSave session as…
を選んで名前を指定して保存します(kadai1.pse
など、わかりやすい名前をつけましょう)。(参考:セッションの保存 )。
保存したセッションファイルはFile > Openメニューから読み込むことができます。
すでにタンパク質を他に表示させている状態でセッションファイルを読み込もうとすると下図のようなメッセージが現れますが、今開いている画面と別のPyMOL画面でタンパク質を表示させたい場合は、一番下のOpen in new PyMOL Window
を選択することをおすすめします。
※ (上級者向け)上述のPyMOL>
の入力欄にコマンドを入力することでも可能です。デスクトップ上に保存したい場合は、cd ~/Desktop
としてWorking Directoryをデスクトップに設定した後、save kadai1.pse
とすることでセッションファイルを保存できます。
リガンド結合部位への注目
ここから、タンパク質内のリン酸や金属が結合している部分に注目してみます。まず、全体構造の中のどこに結合しているかを確認してみます。
- PyMOL内で配列を表示させます。
- 表示された配列のところで、Chain Aの
ZN
2つとMG
,PO4
をすべて選択します。 - 次に、オブジェクトパネルにおいてその選択範囲
(sele)
についてStickとSpheresで表示させてみます(→分子構造の表示形式のON/OFF)。
デフォルト設定では、sphere表示で表されるボールがかなり大きくなっているので、ここではいったん小さくしてみます。これはPyMOL >
のところにコマンドを打つことで設定できます。
set sphere_scale, 0.4
これで球が小さく表示されました。
ここで、表示をチェインA(A鎖)だけにし、Bチェインはhideで隠します(→分子構造の表示形式のON/OFF)。リン酸や金属は各チェインに1組ずつ結合していることがわかります。
チェインAのリン酸(PO4
)が画面の中心にくるよう設定してみます。これはこのPO4
を選択した上で右クリックを押してメニューを表示させ、center
を選択することでできます。
参考:マウス操作と各モードにおける操作一覧
マウス操作で、画面を拡大して見やすくしておきます。
タンパク質のCartoon表示をオフにします(→分子構造の表示形式のON/OFF)。
チェインAのリン酸から4.6 Å以内にある水分子以外のアミノ酸残基を表示させます。チェインAのリン酸PO4
だけが選択された状態で以下のコマンドを打ちます。
select byres resn * within 4.6 of sele
show sticks, sele
ここで、byres
は「残基単位での選択」を意味する設定であり、とある残基が1原子でもリン酸から4.6 Åの距離以内に存在するのであれば、その残基をすべて選択するようにしています。その後、2行目のコマンドで選択した範囲をsticks
で表示させます(オブジェクトパネルでも可能)
Zn,Mgは原子種ごとの色分け(→色の設定)にします。
リン酸付近にどのようなアミノ酸種が分布しているかを確認するために、先程の選択範囲(sele)
について、ラベルの設定でlabel
-> residues
を選択します。
PyMOL画面を回転させて、どのアミノ酸がこのリガンド結合部位に存在しているかをすべてメモします。目視で行っても構いませんが、ここではPyMOLがPythonプログラミングで動いているということを利用して、以下のコマンドを入力して確認してみましょう。
コマンド入力欄に以下のコマンドを順次入れていきます(コピー&ペースト可能)。
# チェインAのリン酸を選択する(残基名がPO4でかつchain Aのものをselectする)
select resn PO4 and chain A
# 現在の選択範囲から4.6Å以内にある分子を、残基単位(byres)ですべて選択する
select byres resn * within 4.6 of sele
# ここで空の配列であるreslistを作成しておく(初期化)
reslist = []
# pymolのiterateコマンドを用いて、選択範囲(sele)に存在するCα炭素(name CA)について
# (residue_id, residue_name)のタプルをreslistに繰り返し加えていく
iterate sele and name CA, reslist.append((resi, resn))
# reslistを表示する
print(reslist)
ここまでうまく入力されていれば、最後に以下のように結果が表示されるはずです。
PyMOL> print(reslist)
[('51', 'ASP'), ('101', 'ASP'), ('102', 'SER'), ('153', 'ASP'), ('166', 'ARG'), ('327', 'ASP'), ('331', 'HIS'), ('369', 'ASP'), ('370', 'HIS'), ('412', 'HIS')]
これはpythonで言うところの、リスト型変数reslist
の中にタプル型で(残基番号, 3文字残基名)の組が入っている形になっています。
これをよく生物学の表示で使われるようなMET-1, ASP-2のような表示に変換したい場合は、pythonのprint文を知識を使って例えば以下のようにpythonプログラムを書けばうまく出力することができます。ただし、PyMOLのコマンドラインでpythonプログラムを書く場合はpython
とpython end
というブロックの間に挟む必要があります。(参考: https://pymolwiki.org/index.php/Python )
python
# リスト内のタプルをi, jに代入するfor loop
for i, j in reslist:
# print&format文法を使って"{residue_name}-{residue_id}"の順番で表示する
print("{0}-{1}".format(j, i))
python end
すると、以下のように表示されます。
PyMOL>python end
ASP-51
ASP-101
SER-102
ASP-153
ARG-166
ASP-327
HIS-331
ASP-369
HIS-370
HIS-412
こうすれば目視でやるより書き漏らしがなくて済みますね。
終わったら、再び現在までの作業内容をセッションファイルに保存しておきます。ファイル名はたとえば1alk_active_site.pse
などとしておくと分かりやすくて良いでしょう。
ヒトアルカリホスファターゼとの構造比較
ヒトアルカリホスファターゼも立体構造が解かれ、PDBに登録されている(PDB ID: 1EW2)。大腸菌アルカリホスファターゼとの類似点・相違点を調べてみよう。
ヒトアルカリホスファターゼと大腸菌アルカリホスファターゼのアミノ酸一致度は30%弱である。つまり平均すると10箇所のうち7箇所以上はアミノ酸が異なっていることになります。では、ヒトアルカリホスファターゼは大腸菌アルカリホスファターゼとまったく異なるやり方でリン酸エステル化合物の加水分解を行っているのだろうか?それとも似た反応機構をもっているのでしょうか。立体構造の観点から調べてみましょう。
ヒトアルカリホスファターゼの構造ファイルのダウンロード
まず大腸菌のときと同様に、RCSB PDBから1EW2のPDBファイルをダウンロードします(参考:分子構造のロード)。次に、すでに1ALKの構造を開いているPyMOLの中で、この1EW2の構造ファイルをロードします。しかし、ここで1ALKのときと違いChain Aしか表示されていないことに気付くでしょう。1EW2も1ALKと同様にBiological unitはホモダイマーですが、この構造ファイルには結晶の対称性を考慮してチェイン1本分の座標しか入っていない状態になっています。このような場合はPyMOLの機能を使って、結晶の対称性からもう1本のチェインの座標データを生成することができます。
Biological unitを考慮した分子構造のロードのページを参考に、1EW2の構造を2量体でロードします。1EW2の各チェインは1ew2_0001
, 1ew2_0002
と表示されることになります。ここで、わかりやすくするために大腸菌のアルカリホスファターゼを緑色に、今開いたヒトアルカリホスファターゼの2量体を水色で表示させておきます。
2つのアルカリホスファターゼの構造の重ね合わせ
では、大腸菌とヒトのアルカリホスファターゼの構造をそれぞれ重ね合わせることで比較してみましょう。ここではPyMOLのsuper
という重ね合わせ用のコマンドを使います。
今、画面には1alk
と1ew2_0001
, 1ew2_0002
のオブジェクトが存在しているはずです。ここで、1alk
オブジェクトを1ew2_0001
オブジェクトに重ね合わせることを以下のコマンドで行います(※1ew2_0001
を1alk
に、ではないことに注意)。このコマンドは
super 1alk, 1ew2_0001
です。これを行うと、
図のように大腸菌ホスファターゼとヒトアルカリホスファターゼを重ねることができます(図では背景をグレーにしています)。また、画面上部のPyMOLコンソール画面には2つの構造のRMSD値が表示されます。
PyMOL>super 1alk, 1ew2_0001
MatchAlign: aligning residues (898 vs 479)...
MatchAlign: score 740.851
ExecutiveAlign: 1947 atoms aligned.
ExecutiveRMS: 83 atoms rejected during cycle 1 (RMSD=4.31).
ExecutiveRMS: 135 atoms rejected during cycle 2 (RMSD=2.64).
ExecutiveRMS: 187 atoms rejected during cycle 3 (RMSD=2.03).
ExecutiveRMS: 135 atoms rejected during cycle 4 (RMSD=1.39).
ExecutiveRMS: 87 atoms rejected during cycle 5 (RMSD=1.03).
Executive: RMSD = 0.864 (1320 to 1320 atoms)
この結果、0.864 Åというとても小さなRMSD値が得られました。これはこの2つの構造の差が小さいことを表しています。
タンパク質の疎水性・親水性残基の分布を確認する
タンパク質を構成しているアミノ酸は通常20種類ですが、その20種類のアミノ酸を化学的な性質に基づいて親水性・疎水性で分類することがあります。この親水性とは水に対して親和性が高いという意味で、疎水性は反対に親和性が低いということを意味します。特に、水素結合を形成しやすい側鎖を持つアミノ酸は親水性アミノ酸と呼ばれ、そうでないものは疎水性アミノ酸と呼ばれます。
親水性アミノ酸は以下のアミノ酸が該当します。pH 7.0の中性溶液中で持つ電荷についても示します。
- 酸性アミノ酸(負電荷を持つ)
- アスパラギン酸(Asp, D)
- グルタミン酸(Glu, E)
- 塩基性アミノ酸(正電荷を持つ)
- リジン(Lys, K)
- アルギニン(Arg, R)
- 中性アミノ酸
- スレオニン(Thr, T)
- セリン(Ser, S)
- アスパラギン(Asn, N)
- グルタミン(Gln, Q)
- ヒスチジン(His, H)
また、これらの親水性度・疎水性度を数値化した研究も存在しています(J. Mol. Biol. 179:125-142 (1984))。これによれば、
アミノ酸 | 疎水性度 |
---|---|
Ala | 0.620 |
Arg | -2.530 |
Asn | -0.780 |
Asp | -0.900 |
Cys | 0.290 |
Gln | -0.850 |
Glu | -0.740 |
Gly | 0.480 |
His | -0.400 |
Ile | 1.380 |
Leu | 1.060 |
Lys | -1.500 |
Met | 0.640 |
Phe | 1.190 |
Pro | 0.120 |
Ser | -0.180 |
Thr | -0.050 |
Trp | 0.810 |
Tyr | 0.260 |
Val | 1.080 |
となっています(値が高いほど疎水性、低いほど親水性)。
一方で、これまで見てきたようにタンパク質はある1つの決まった形を取るように折りたたまっています。このとき親水性・疎水性アミノ酸はタンパク質構造上でどのように分布しているかを、PyMOLに表示した大腸菌アルカリホスファターゼを例にとって確認してみましょう。
まずあらためて大腸菌アルカリホスファターゼ(PDB ID: 1ALK)をロードし直しておきます。
続いて、この構造を上の表で登場したアミノ酸の親水性・疎水性基準に従って、アミノ酸の側鎖を色分けしてみます。親水性のアミノ酸(表で0以下の値を持つアミノ酸)をすべて水色に、疎水性アミノ酸をすべてオレンジ色に塗ってみます。このとき、すべてのアミノ酸をマウスで選ぶのは大変なので、PyMOLのコマンドラインを活用します。
PyMOLソフトウェアのPyMOL>
と書かれている欄にまずselect hydrophobic,(resn ala+cys+gly+val+ile+leu+phe+pro+met+trp+tyr)
と入れてEnterキーを入力すると、疎水性アミノ酸たちがhydrophobic
という名前の選択範囲が保存されます。この後、この選択範囲をオレンジ色にするためにcolor orange, hydrophobic
というコマンドを入力します。同様にして、すべての親水性アミノ酸をhydrophilic
という名前の選択範囲として登録しておき、これをシアン色に色付けします。最後に、これらのアミノ酸残基の体積を強調するためにSphere表示にしてみます。
以上のコマンドは
# 疎水性残基をhydrophobicという名前の選択範囲として保存
select hydrophobic,(resn ala+cys+gly+val+ile+leu+phe+pro+met+trp+tyr)
# 選択範囲hydrophobicをorange色にする
color orange,hydrophobic
# 親水性残基をhydrophobicという名前の選択範囲として保存
select hydrophilic,(resn arg+asn+asp+gln+glu+his+lys+ser+thr)
# 選択範囲hydrophilicをcyan色にする
color cyan, hydrophilic
# すべての残基をsphere表示にする
show spheres, all
と打っていくことで達成されます。
このように色付けをしてみると、大腸菌アルカリホスファターゼの表面には親水性の残基が比較的多く分布していることがわかります。
ここで、PyMOLのマウス機能の1つであるSlabを使ってタンパク質の中を覗いてみます。Slabはマウスのホイールを回転させて行います(Macbookなどに付属しているタッチパッドで行う場合は、タッチパッドに2本指を置いて上下に動かします)
すると、アルカリホスファターゼのタンパク質構造の内部には疎水性アミノ酸がとても密に詰まっていることがわかると思います。その一方で、表面にはやはり親水性アミノ酸が分布していることから、タンパク質構造の外側には親水性アミノ酸が、内側には疎水性アミノ酸がそれぞれ分布していることがわかります。
このことはアルカリホスファターゼに限らず他の多くのタンパク質についても一般に成立します。ただこのアミノ酸の分布は親水性・疎水性アミノ酸の性質からすると当然のことを言っているに過ぎないと思われるかもしれません。しかしながら、これらの大きな疎水性アミノ酸のかたまり、通称疎水性コアは、タンパク質構造を安定に保つために重要な役割を果たしています。
水溶液中で安定に存在できる球状タンパク質は、疎水性アミノ酸が周囲の水分子と反発することによって親水性アミノ酸を外側へ、疎水性アミノ酸は内側へ集中させることから生まれる疎水性相互作用によって構造を形成していくことが知られています。そしてこの疎水性コアは疎水性アミノ酸同士の側鎖が密にパッキングすることによって文字通り隙間なく形成されており、これによってタンパク質全体の構造の安定性を大きく伸ばすことに貢献しています。タンパク質構造で注目されがちなのは親水性アミノ酸がよく用いられ外側に露出している活性部位(大腸菌アルカリホスファターゼで言うところのSer102, Arg166周辺)なのですが、こうした構造の成り立ちに関わるアミノ酸の分布のことも重要であることを覚えておくと、タンパク質構造についての理解がより深まると思います。
補足ですが、タンパク質アミノ酸を疎水性・親水性に応じて色分けを行うための拡張コマンドとしてcolor_h
, color_h2
が存在します(https://pymolwiki.org/index.php/Color_h)。color_h
, color_h2
コマンドの使い方はPyMOL上でのpythonスクリプトの実行を参考にしてみてください。
タンパク質の位置依存的なアミノ酸保存度の違いを理解する
これまで見てきたように、タンパク質の内部は疎水性アミノ酸で充填されており、外側には水に溶けやすい親水性残基を露出することで水溶液中に存在しているというのがタンパク質の構築原理でした。一方、タンパク質は構造を保つだけでなく、リガンドを結合したり、化学反応を触媒したりする機能を持つことが生体内で特に重要です。言い換えれば、タンパク質は限られた20種類のアミノ酸をうまく使い分けることで、内部構造を保ちつつ、そして機能も発現させなければならないという二面性を持っています。
しかし、タンパク質を使って生きている生物というものは不思議なもので、すでにヒトと大腸菌のアルカリホスファターゼで見てきた通り、同じ機能を持つタンパク質であっても、それを構成しているアミノ酸配列を調べてみると、配列間の相同性が2〜3割しかないということもよく見られます。これは一体どういうことでしょうか?
以上のことを、アルカリホスファターゼについて確認してみましょう。まずは、PDBsum (https://www.ebi.ac.uk/thornton-srv/databases/cgi-bin/pdbsum/GetPage.pl?pdbcode=index.html) というデータベースに登録されているデータを用います。PDBsumはPDBに登録された生体分子の構造データを加工したデータベースの1つで、配列・構造情報・リガンド結合・文献情報などをわかりやすくまとめてあります。ここのトップページのフォームに、調べたいPDBデータのIDを入れてFindボタンを押します。
すると、PDB ID: 1ALKについてのページに移ります。このトップページには構造の図とともに、タンパク質の分類・リガンド情報・化学反応・一次文献情報・この構造を引用している論文一覧……などが表示されています。
さらに、上部にあるタブをクリックすることで、さらに他の詳細な情報を表示させることができます。ここではProteinタブをクリックしてみましょう。
Proteins タブ、ページ左側にあるMotifsメニューのSecondary structure, Residue conservationをクリックすると(上図の赤丸部分)、アミノ酸の生物種間での保存度が1つずつカラーリングされているページが現れます。
この1文字表記のアミノ酸配列を見てみると、青〜緑〜黄〜赤までのカラーリングがなされていることに気づくと思います。このカラーリングはこの大腸菌アルカリホスファターゼの類縁配列上で、そのアミノ酸の位置がどれほど保存されているかを表しています(ページ下部に説明が書かれてあります)。言い換えれば、大腸菌アルカリホスファターゼについて他の類縁配列とのマルチプルシーケンスアライメントを作成してみたとき、ある位置のアミノ酸の種類が他の類縁配列上でも同じであればその位置のアミノ酸の保存度は高く、逆に他の類縁配列上でバラバラな様子が観測されていればその位置のアミノ酸の保存度は低くなります。例えば、この大腸菌アルカリホスファターゼのcatalytic residueであるSer102, Arg166のアミノ酸の保存度は最も高い9で示されています。この他にも、PDB SITE records(※なにかのリガンドが結合しているアミノ酸につくレコード)のマークが付いているアミノ酸はいずれも高い保存度を示していることが見て取れます。しかし、大腸菌アルカリホスファターゼのアミノ酸配列全体を見渡してみると、他にも保存度が高いところがあるのが伺えますし、逆に保存度が低いアミノ酸はなぜ低くなっているのか、という疑問も残ります。
そこでこの疑問を考察するために、これからこの保存度の情報をPyMOLで表示させた大腸菌アルカリホスファターゼ構造の上に表示させてみます。
先程のResidue Conservationのページの下の方を見ると、この保存度はConsurf-DBというデータベースに保存されてあります(https://consurfdb.tau.ac.il/ )。このページにアクセスして、大腸菌アルカリホスファターゼのPDB IDとChain IDを以下の画像のように入力してみましょう。
すると、まもなくPDB: 1ALKについての保存度情報についてのページに遷移します。ここで、下の方にあるHigh Resolution Figuresのところから、PyMOLの方のマークをクリックして、PyMOLのセッションファイル(consurf_pymol_session.pse
)をダウンロードします。
このダウンロードしてきたファイルをPyMOLで開いてみましょう。
ここで、保存度のカラーリングはChain Aのみに行われており、Chain Bについては情報が存在していないためグレー表示となっていることに注意してください。
このダウンロードしてきた構造をPyMOL上で様々な角度から眺めていると、タンパク質構造の内側は保存度が高く、外側は保存度が小さいことに気付かれると思います。これは偶然ではなく、前項のタンパク質の疎水性親水性残基の分布を確認するで確認した通り、タンパク質構造の内部は疎水性アミノ酸によって隙間なく密にしておくことで、タンパク質構造を安定に支えておく必要があるからです。つまり、内部を支えるアミノ酸が不用意に別のアミノ酸に変化してしまうと構造を支えられなくなって機能を保てなくなってしまいます。また構造の外側に位置するアミノ酸であっても、活性残基、およびその周辺の残基は特に保存されていることがわかります。これはもちろんタンパク質の機能を直接担う責任重大なアミノ酸だから、と考えることができます。反対に、外側に露出しているアミノ酸はある程度どのアミノ酸を使ってもタンパク質構造全体の安定性という観点からすると大きな問題ではないため、アミノ酸の保存度が低くても機能に支障が出ないというわけです。
タンパク質はその機能を失わず、かつ構造を安定に保つという最低限の目的さえ果たせれば、そのアミノ酸配列はある程度自由に構成することができます。アルカリホスファターゼの例で言えば、リン酸モノエステル化合物を加水分解するという機能を損なわず、かつタンパク質全体の構造が壊れなければ、そのアミノ酸配列はある程度許容されることになり、長い進化の課程で大腸菌やヒトのものといった様々なバリエーションが生まれていったと考えることができます。
アルカリホスファターゼの加水分解酵素としての働き
最後に、アルカリホスファターゼが「ホスファターゼ」の名前通りにリン酸モノエステル加水分解酵素として化学的にどう働いているかを観察してみましょう。
アルカリホスファターゼ(ALP)は以下の反応式のように、p-ニトロフェニルリン酸を加水分解してp-ニトロフェノール(黄色く発色する)を生成することができます。
この反応の様子をPyMOLで見てみましょう。
このリンクに1alk_reaction.pse
という名前のPyMOLセッションファイルを置いています。これをダウンロードしてダブルクリック、またはFile -> Openからこのファイルを開いてみましょう。このセッションファイルにはアルカリホスファターゼの単量体とともに、今まで無機リン酸が入っていた箇所にp-ニトロフェニルリン酸(残基名:NPH)の構造が見えるはずです。
PyMOL Internal GUIの右下には▶ボタンがあります。この▶ボタンを押すとタンパク質とp-ニトロフェニルリン酸が少しずつ動き、化学反応を起こしている様子が可視化されて見えるはずです。
このような動いている様子が見られるのは、このセッションファイルにはあらかじめ149フレーム分の構造データを入れたオブジェクトが含まれているからです。ほとんどすべてのRCSB PDBからダウンロードしてきた結晶構造のデータは静止しているために1フレーム分のデータしかありませんが、NMRで構造決定されたデータですと、タンパク質の「動き」が収録されているものもあります(例としてPDB ID: 1G03)。
このセッションファイルには、dist01
からdist11
までの距離オブジェクトも含まれています。この距離オブジェクトはマウス操作の原子ピッキング(PkAt)機能を用いることで作成することができます。距離を測定したい2点の原子の上でそれぞれCtrlキーを押しながらマウスのホイールクリックを行い、コマンドでdist
と入力することで距離オブジェクトを生成することができます。
第2章 Internal GUIの使い方
GUIによる基本的な操作方法
GUIとはGraphical User Interfaceのことで、マウスを使ってタンパク質オブジェクトを操作したり、設定を変更したりできるユーザーインターフェースのことです。またPyMOLにはInternal GUIとExternal GUIと呼ばれるメニューが存在し、マウスのクリックを使った直感的な操作が行えるようになっています。
分子構造のロード
構造ファイルのロード
メニュー左上の[File]から、[Open...]を選び、PyMOLに表示させたい構造ファイルを選択します。ここでは、先程ダウンロードした 1alk.cif
ファイルを例として、ダブルクリックして表示させてみます。
すると、画面に1ALKのアルカリフォスファターゼの構造が表示されました。はじめは黒背景に緑のタンパク質がオブジェクトが浮かんでいると思いますが、ここで続けて、メニューの[Display]から[Background]->[White]を選択すると、白背景にすることができます。
サポートしている構造ファイル形式
PyMOLが読み込むことのできる構造ファイルフォーマットはたくさんありますが、まず以下の2つのファイル形式を覚えましょう。
- pdbフォーマット
- ファイル名の最後に
.pdb
(拡張子)がついているのが目印です。PDBが設立された当初から使われているファイルフォーマットで、PyMOLの表示に使う座標情報だけでなく、結晶学(NMR)的情報(B-factor、 空間群、単位格子定数…)、 構造的特徴(2次構造、SS結合… )、実験情報(解像度、回折実験情報、精密化条件、結晶化条件… )、生物学的情報(蛋白質名、種名、生物学的単位、EC番号… )、化学的情報(化合物の名称や構造…)、文献情報などが記載されており、慣れれば人間でも読みやすく、必要最低限の情報が記述されています。しかし、時代が下るとともにこのフォーマットでは限界や不便な点が指摘されるようになりました。特に、近年は結晶解析だけでなくクライオ電子顕微鏡などの技術の発達により、巨大タンパク質の構造決定が次々と報告されるようになりましたが、従来のPDBフォーマットの最も大きな問題点の1つには100,000原子以上からなる構造、または多数のアミノ酸鎖(63チェイン以上)から構成される複合体の構造情報の記述をほとんど想定していなかったことがあります。このため、後述のmmCIF形式の利用が推奨されるようになりました。
- ファイル名の最後に
- mmCIFフォーマット
- ファイル名の最後に
.cif
がついているのが目印です。元来、mmCIFファイルフォーマットは国際結晶学連合が低分子用に定めていたCIF(Crystallographic Information File)形式を高分子(macromolecular)に拡張したものです。pdbフォーマットでは1ファイル内に記述することができなかった、100,000原子数以上または63チェイン以上の構造記述が可能になっています。例えばPDB: 3J3QのHIV-1 capsidは超巨大分子であり、従来のPDBフォーマットでは配布されていません。2014年にPDBの標準フォーマットとなり、2019年7月1日からは、PDBに登録する際にmmCIF形式での構造情報登録を義務付けられるようになりました。 このmmCIF形式がこれからのスタンダードとなっていくことは間違いありません。ファイルの中身はpdbフォーマットの内容の上位互換となっており、最近の構造可視化ソフトウェアはすべてこれに対応するよう調整をしています。
- ファイル名の最後に
他のファイル形式として、以下のものがあります。多くの場合、ファイル名末尾についている拡張子で見分けることが可能です。詳細な記述文法については、ここでは本題ではないので省略します。
- 生体高分子系・電子密度情報
-
CCP4フォーマット: 拡張子は
.ccp4
,.map
,.mrc
。電子密度マップ。 -
PDBMLフォーマット: 拡張子は
.xml
,.pdbml
。コンピュータ間でのデータのやり取りや管理が簡単になるように設計されたXMLファイルフォーマットをPDB用に特化させたものです。RCSB PDBでも配布されており、mmCIF形式とほぼ同一の情報が書き込まれています。ファイルサイズがmmCIFに比べて大きいことや、中身を見ても人間には読みにくい文法になっていますが、各プログラム言語が持っているXMLパーサ(構文解析器)にかけることでデータ構造の複合体に変換することが容易なため、インフォマティクスの専門家からは好まれるファイル形式です。 -
MMTFフォーマット: 拡張子は
.mmtf
。Macromolecular Transmission Formatの略称で、2016年頃から活発になり始めた新しいPDBファイル形式です。https://mmtf.rcsb.org/ によればMMTFの大きな特長はバイナリ化されていることであり、mmCIFフォーマットの1/3以下へのファイル縮小、そして最高で400倍以上の高速な読み込みが可能となっています。PyMOL 2.2.0以降でMMTFファイルフォーマットの読み込み・書き出しができるようになったようですが、まだ書き出しあたりには不十分なところもあります。これはViral Capsid(PDB: 3J3Q)のような超巨大タンパク質の表示にとても便利です。 -
MacroModelフォーマット: 拡張子は
.mmod
,.mmd
。Schrödinger社のMacroModelやMaestroで使われているファイルフォーマット。
-
- 小分子化合物系
- MOLフォーマット: 拡張子は
.mol
。MDL Information Systems社が開発した、化学構造式を記述する標準フォーマットの1つです。詳細はCTFile formatというガイドに記載されています。 - MOL Structure Data Fileフォーマット: 拡張子は
.sdf
。上記MOL形式を改良し、複数の構造式を1ファイルに記述でき、さらに様々な付加情報を追記することができるようになっています。 - SYBYL MOL2フォーマット: 拡張子は
.mol2
。Tripos(現Certara)が開発した、SYBYLと呼ばれるケモインフォマティクスのソフトウェアで使われていたファイルフォーマットです。タンパク質などの巨大分子でもこのファイル形式で書くことが可能です。詳細はSYBYL MOL2 formatというガイドに記載されています。 - XYZフォーマット: 拡張子は
.xyz
。単純に原子の種類と原子の\( xyz \)座標を記述するファイル形式です。http://openbabel.org/wiki/XYZ_(format) に説明があります。
- MOLフォーマット: 拡張子は
以下の拡張子は、表のように別のファイル拡張子として認識されます。
入力拡張子 | 認識されるファイル拡張子 |
---|---|
ent , p5m | pdb |
mmd , out , dat | mmod |
map , mrc | ccp4 |
cc2 | cc1 |
sd | sdf |
rst7 | rst |
o , dsn6 , omap | brix |
ph4 | moe |
spi | spider |
pym , pyc | py |
p1m , pim | pml |
xml | pdbml |
Biological Unitを考慮した分子構造のロード
タンパク質は1本のアミノ酸ポリペプチド鎖が折り畳まって存在しているのがほとんどですが、タンパク質の種類によっては、多量体の形で初めて安定に存在し機能しうるものもあります。Biological Unit(Biological Assemblyとも呼ばれる)とは、実際に生物の中で機能している構造の状態のことを指します。詳しくはPDBjのウェブサイトの「非対称単位と生物学的単位について」も参照してください。
例としてPDB ID: 1ALK
(大腸菌由来アルカリフォスファターゼ)とPDB ID: 1EW2
(ヒト由来アルカリフォスファターゼ)を比較してみましょう。各構造ファイルを取り扱うRCSB PDBのウェブサイト( https://www.rcsb.org/structure/1ALK と https://www.rcsb.org/structure/1EW2 )のStructure Summaryタブで画面左の方には、タンパク質の構造とともに、Global SymmetryとGlobal Stoichiometryの情報が書かれています。
Global StoichiometryにはHomo 2-mer - A2
という情報が記されています。論文で調べてみても、このタンパク質がそれぞれホモ2量体として生物中で機能していることが示されています。しかしそれぞれのファイルをPyMOLで単純に開いてみますと、1ALKの方にはA chain、B chainの構造が含まれていますが、1EW2の方ではA chainしか含まれていません。これは、PDBに登録されている原子座標のデータには、必要最小限の「非対称単位」(assymmetric unit)のみ含まれているから です。
そこで、場合によっては2量体の状態でタンパク質構造を表示してみたいということがあると思います。PyMOL 1.8からはこのBiological Unitを考慮した構造のロードが簡単に行えるようになりましたので、それを1EW2
ファイルに対してやってみます。以下の画像のように、[File]->[Get PDB...]を選び、続くウィンドウの画面でIDとAssembly情報を入力します。
これにより、1EW2の構造がホモ2量体構造で表示されました。
このチェインを別々に扱うためには、右側のオブジェクトパネルから1EW2A
のAボタンをクリックし、[state] -> [split]を開いてクリックします。
すると、1EW2A_0001
, 1EW2A_0002
というオブジェクトが新たに生成されます。ここまでくれば1EW2A
オブジェクトは不要ですので、最後に1EW2A
のAボタンから[delete object]を押せば完了です。
以上がBiological Unitを考慮した分子構造のロード操作ですが、これは一例であり、他にも同等の操作を達成する方法があります。コマンドラインで上記の操作を達成するには
set assembly, 1
fetch 1ew2
split_states 1ew2
delete 1ew2
でOKです。タイピングが早ければこちらの方が素早くできるでしょう。set assembly, 1
に相当する設定変更は、上部メニューの[Setting] -> [mmCIF File Loading] -> [Load Assembly (Biological Unit)]にチェックを入れることでも可能です。
配列の表示
分子構造をロードしたら、ここでPyMOL画面の右下に注目してみます。ここには様々な記号や文字が並んでいますが、ここのSボタンを押してみましょう。
このSボタンを押すと、画面に分子の配列情報が現れます。もう一度Sボタンを押すと文字列が隠れます。
ここに表示される配列の文字列は、タンパク質の場合にはA, C, Dなどアミノ酸の1文字表記、核酸構造の場合にはDA, DT, DG, DCで2文字表記となっています。RNAの場合には1文字表記ですが、タンパク質の場合と異なり、各文字にスペースが挿入されて表示されます。リガンドやその他のについては3文字表記で表されることが多いです。これらの表記は、ロードする構造ファイル内の記述に依存してします。
配列の表示・非表示は、上部メニューの[Display]→[Sequence]にチェックを入れたり外したりすることでも行うことができます。
以下に、配列表示ウィンドウ上でのマウス操作を方法を記します。macOSの場合はCtrlはCmdキーになります。
- 左クリック+ドラッグ
- 分子の一部を選択した状態にできます。選択した箇所にはハイライトが付きます。タンパク質の場合は残基ごと、核酸の場合は塩基ごと、それ以外の場合は1分子ごとに選択します。
- Shift+左クリック
- 上記の選択範囲を拡張・縮小することができます。クリックボタンを押し続ける必要はありません。
- Ctrl+Shift+左クリック
- 選択範囲を拡張・縮小しつつ、視点を選択範囲にセンタリングしてくれます。
- ホイールクリック
- クリックした箇所に視点をセンタリングします。
- Ctrl+ホイールクリック
- クリックした箇所に視点を大きくズームします。
- Ctrl+ホイールクリック+Shift+ドラッグ
- Shift+ドラッグで選んだ選択範囲に向かって視点を大きくズームします。
- 右クリック
- 選択されていない箇所で右クリックをすると、その位置に存在する配列を選択し、それについての設定変更メニューを表示します。
- すでに選択されている箇所で右クリックをすると、選択範囲に対する設定変更メニューを表示します。
オブジェクトパネル
PyMOL画面の右側には、ロードしている分子構造について様々な操作を行えるパネルが表示されています。
画像の例ではall
と1alk
が表示されています。また、画面上の分子構造をクリックし選択すると、(sele)
という表示も追加されます。このパネルに表示されている文字のことをオブジェクトと呼びます。その右についているA, S, H, L, Cという文字のボタンには、対応するオブジェクトについての表示設定変更・編集を行うためのメニューがたくさん格納されています。それぞれの文字が表す大まかな意味は以下の通り。
- Action(A)
- 視点の移動や分子についての編集、一括設定変更、構造のアラインや名前変更など、オブジェクト全体に関わる様々な設定を行うためのメニューが格納されています。
- Show (S)
- 分子構造の表示形式をONにするためのメニューが格納されています。
- Hide (H)
- 分子構造の表示形式をOFFにするためのメニューが格納されています。
- Label (L)
- 分子構造のすぐそばに表示する文字ラベルを追加するためのメニューが格納されています。
- Color (C)
- 分子構造の色変更を行うためのメニューが格納されています。
分子構造の表示形式のON/OFF (Show and Hide)
タンパク質の構造情報をロードしたとき、デフォルト設定では、20種類のアミノ酸についてはCartoon表示形式と呼ばれる漫画風な表現形式になっています。このCartoon表示形式では、αヘリックスを形成している部分については大きな螺旋で描かれ、βストランド(βシート)を形成している部分については、進行方向に向かって矢印が伸びる表現で描かれています。
タンパク質を構成するアミノ酸を1つ1つ強調して見てみたい場合には、Cartoon, Line, Stick, Ribbon, Sphere, Dot, Surface, Mesh 表示などの、他の表示形式をONにするという操作を行います。この表示形式の設定は、各オブジェクト構造について個別に行います。例えば、先程ロードした1alkのタンパク質オブジェクトについて他の表示形式をONにしたい場合は、図のように、1alkのSマーク部分(図の赤四角部分のボタン) をクリックします。反対に、OFFにしたい場合はHマーク部分(図の青四角部分のボタン) を押し、各表示形式を選択することでOFFになります。
各表示形式のサンプルを以下に示します。
-
Cartoon表示
- タンパク質やDNA・RNAを表示するときにおすすめです。タンパク質の場合はαヘリックスやβシートが先述のように螺旋や矢印で示されます。DNA/RNAが存在する場合には、各塩基の概形や5'末端→3'末端のつながりが強調して表示されます。
-
Line表示
- 各原子間の結合が細い線で表示されます。上の図では、左にLine表示だけをONにしたものを、右にCartoon表示形式をLine表示とともにONにした場合を右図に示しています(以降、見やすくするためにCartoon表示をONにした上で、他の表示形式を載せます)。
- 各原子は構造情報ファイルの座標のATOMまたはHETATMレコードに書かれている座標情報(\( x, y, z \)の3次元ベクトル)をもとにプロットされ、各原子座標の距離が一定以内にあれば、自動的にその近い2点が直線で結ばれて表示される仕様となっていることに気をつけてください。
-
Stick表示
- 各原子間の結合がLine表示よりも太いStickで表示されます。Stickは円筒状に表現されます。
-
Ribbon表示
- タンパク質または核酸の鎖部分のみを単純な線で表現する形式です。
-
Sphere表示
- 各原子を大きな球体で表現します。Line, Stick表示と異なり、各原子間は直線で結ばれません。
-
Dot表示
- Sphere表示の表面を点で表現したような形式です。
-
Surface表示
- 各原子の表面を滑らかに描画する形式です。分子の大きさによっては、レンダリングに少し時間がかかります。
-
Mesh表示
- Surface表示と似ていますが、表面の描画を網掛けで表現します。
ラベルの設定(Label)
ラベルを利用することで、分子の周辺に文字を表示させることができます。活性部位周辺に存在する残基の名前と番号を表示させるだけでなく、任意の文字列を表示させることができます。
分子構造の表示形式のON/OFF (Show and Hide)のときと同様に、オブジェクトパネルから各オブジェクトに対して個別にラベルの設定を行うことができます。特に、選択範囲(sele)
に対して表示させることが多いでしょう。
ラベルの設定変更はGUIの上部メニューから、Setting -> Labelのところにあり、ラベルの表示サイズやフォント指定、色の指定などが可能です。下記のサンプルではフォントサイズを28にしてあります。
ラベルの位置変更は3-Button Editing Modeにしてから、ラベルの上でCtrl(macOSの場合はCommand)を押しながら左クリックでドラッグさせることで任意の位置に移動させることができます。下の例ではASP-101を右に移動させています。
clear
すでに表示されているそのオブジェクトについてのラベル表示を消去します。消去するのではなく表示を一時的に場合は、Hideメニューからlabelを選択しましょう。
residues
選択されたオブジェクトについて、アミノ酸と残基番号の情報を(アミノ酸3文字表記)-(残基番号)
の形で表示します(例:MET-1)。Cα原子の上に表示される設定になっています。
residues (one letter)
選択されたオブジェクトについて、アミノ酸と残基番号の情報を(アミノ酸1文字表記)(残基番号)
の形で表示します(例:M1)。Cα原子の上に表示される設定になっています。
chains
選択されたオブジェクトのN末端とC末端の番号を持つ残基(リガンドが存在する場合、それも含む)のそばにchain <chain ID>
の形で表示します(例: chain A)。
segments
すでに使用が廃止されたsegment identifierの情報を、chainsと同様に表示します。詳しくはAppendix: 用語#セグメントを参照してください。今となってはあまり使うことはないと思います。
atom name
原子名の名前でラベルを作成します。.pdb
形式ファイルの場合、ATOM
, HETATM
レコードの13-16列目に含まれる文字列がatom nameとして定義されており、この文字列を返します。
タンパク質アミノ酸やDNA, RNAの場合は命名規則があるため、慣れてしまえばatom nameの意味を理解しやすいと思います。13-14列目には右詰めで原子名を表します。例えば鉄原子は13-14列目を使ってFEの文字が入っていますが、炭素原子は14列目にCの文字を入れ、13列目は空白となっています。しかし、水素原子の場合は13-16列目の4文字分を最大限使って記述する場合があり、この場合は13列目から記入することになっています。
以下ではよく登場するatom nameの一例です。
atom name | 意味 |
---|---|
CA | 主鎖のα位の炭素 |
N | 主鎖のN末端側窒素原子 |
C | 主鎖のC末端側炭素原子 |
O | 主鎖のC末端側酸素原子 |
CB | 側鎖のβ位の炭素 |
CG | 側鎖のγ位の炭素 |
CD | 側鎖のδ位の炭素 |
CE | 側鎖のε位の炭素 |
CZ | 側鎖のζ位の炭素(チロシンなど) |
OH | 側鎖のη位の炭素(チロシンなど) |
主鎖に近い原子の個数順にβ→γ→δ→ε→ζ→ηと付ける命名規則があります。複数原子が存在するようなアミノ酸(ヒスチジン)などはND1, CD1, CE2, NE2というふうに番号をつけて区別します。
element symbol
原子名を表記します。
residue name
3文字表記の残基名を表記します。.pdb
ファイル形式におけるATOM
, HETATM
レコードの18-20列目の文字列を返します。存在しない場合は空白になります(以下同様)。
one letter code
1文字表記の残基名を表記します。
residue identifier
残基のresidue IDを表記します。.pdb
ファイル形式におけるATOM
, HETATM
レコードの23-26列目の文字列を返します。
chain identifier
残基のChain IDを表記します。.pdb
ファイル形式におけるATOM
, HETATM
レコードの22列目の文字列を返します。
segment identifier
残基のSegment IDを表記します。詳しくはAppendix: 用語#セグメントを参照してください。
b-factor
各原子の温度因子(b-factor; temperature facotr)を表記します。.pdb
ファイル形式における61-66列目の文字列を返します。
occupancy
各原子の重み因子を表記します。.pdb
ファイル形式における55-60列目の文字列を返します。結晶中では基本的に構造は繰り返しになるため、どの場所を見ても同じ座標がループしている事が多く、この値は1.00
であることが多いのですが、時々その繰り返し構造単位の中に、1より大きなn通りの配座を持っていることがあります。このとき、ここには0~1の小数値が入ります。例としては PDB: 1A6MのGLN-8が0.57
, 0.43
の値を持つ2通りの配座を持ち、同様にTYR-151も0.50
, 0.50
で2通りの配座を持っています。この場合、PyMOLの表示上でも2通りの残基配座が見えます。画像はPDB: 1A6MのGLN-8の例を示しています。
vdw radius
各原子のファンデルワールス半径の値(Å)を表記します。基本的には原子の種類によって固定の値です。
Other properties
formal charge
各残基についてシステムで定義されている電荷を表記します。例としてLys, Arg残基の場合は+1
を、Glu, Asp残基の場合には-1
を表示します。
partial charge
各原子について計算された部分電荷(partial charge)を表記します。これは通常のpdb
, mmCIF
といった構造ファイルには含まれていないため、0.00
と表示されてしまいますが、pqr
やmol2
ファイル形式をロードしたときに真価を発揮します。
タンパク質構造の場合は構造ファイルをいったんロードした後、APBSプラグインを使った表面電荷表示の手順に従って処理を進めます。このときにオブジェクトパネルにrun01
->prepared01
というオブジェクトが生成されるので、prepared01
オブジェクトのラベル設定でpartial chargeを選択すると図のように部分電荷が表示されるようになります。
より正確に言えば、これはPDB2PQRというソフトウェアによって分子動力学シミュレーションソフトウェアAMBERが配布している力場AmberFFに基づいて指定されており、各アミノ酸の原子ごとに固有の値を指定してくれます。
実態としてはPQRファイルの記述様式にのっとり、x, y, z座標の次にくるchargeの値を表記しています。
mol2形式の場合でも対応しています。
GaussianやGAMESSなどの量子化学計算ソフトウェアで計算した部分電荷を図にして見てみたいときに特に有効です。
elec. radius
partial chargeのときと同様に、PQRファイルのオブジェクトの場合に効果を発揮します。PQRファイル内のx, y, z座標, chargeの次にくるradiusの値を表記しています。vdw radiusとは異なります。
text type, numeric type
PyMOL 2.0以降は廃止されているらしく、使われていないようです(詳細不明)
stereochemistry
PyMOL 2.2から実装されました。schrodingerのソフトまたはrdkitモジュールのインストールが求められるようです。不斉炭素原子の部分にラベルを置いてくれる機能?
atom identifiers
rank
rankを表記します。rankとは構造ファイルの上から順にATOM
, HETATM
レコードを取得したときの通し番号のことであり、これのみ0始まりとなっています。
“rank” selects atoms based on their position in the source file, starting with zero as the first number.
ID
IDを表記します。IDとは構造ファイルから忠実に取得したATOM IDのことであり、pdb
ファイルフォーマットで言えば7-11列目に存在する番号のことを指します。この値は整数値でなければなりません。
“id” selects atoms based on the atom identifier number from the source file, which must be a integer.
index
Indexを表記します。indexはrankと似ていますが、順に表示するのとは異なり、PyMOL内部で番号を順に振り直したのがindexです。例えばある1つのアミノ酸残基があったとき、その残基の中で登場する原子の順番をどのように入れ替えても、index表記ではN→CA→C→O→CB→……の順に若い数字を付けていきます。
“index” selects atoms based on their internal PyMOL object atom indices starting with one as the first number.
色の設定(Color)
色の設定の仕方は自由です、センスの見せ所です……とは言うものの、実はタンパク質の構造を毎日見るであろう構造生物学専門の研究者にとっては、ある暗黙の了解があります。それらを踏まえた上で、PyMOLのカラーリング機能を紹介していきましょう。
色設定の暗黙の了解
以下のルールだけは遵守しましょう。
- 常に酸素原子は赤色, 窒素原子は青色, 硫黄原子はオリーブ(olive)色で表示する。
- 存在する場合、水素原子は白色で表示。
- よって炭素原子は、上記以外の色を使う。
メチオニン残基の表示の例(炭素原子はgreen)
PyMOLには、酸素・窒素・窒素・水素原子を上記の色ルールで描画してくれるメニュー("by element")が存在しますので、これを使うことを強く推奨します。
正確には、PyMOLでは酸素原子はカラーコードで#FF7C7C (255, 76, 76) [1.0, 0.3, 0.3], 窒素原子は#3333FF (51,51,255) [0.2, 0.2, 1.0], 硫黄原子は#E7C640 (231, 198, 64) [0.9, 0.775, 0.25]がデフォルトで割り当てられているため、用意されているカラーパレットを使う限りにはこれらの色と完全にかぶることはないのですが、それでもこれらに近い色を使うと紛らわしいので、使用は控えましょう。また、以下で見るように、用意されているカラーパレットの中にはすべての原子を同一で塗るものもあるので、どうしてもそれらの色を使いたい場合は、そのカラーパレットを選択した後に"by element"メニューの一番上のカラーリング(通称"color by hetetoatom")を選択してあげましょう。
by element
メニューを開いていただけると一目瞭然、C(炭素)の色だけが変わっており、H, N, O, S, 他にも様々な原子について、「暗黙の了解」の色で固定されています。反対に炭素原子の色を自由に選べることで、多量体タンパク質や大きな複合体に対しても自由に色を塗り分けられることができます。基本的には、このカラーパレットから選びましょう。
見落としがちですが、下の方にあるset 2〜set 6にも、様々な色が用意されています。set 6のみ水素原子の色が白色でないものが用意されていますが、あまり使うことはないでしょう。
一番上のメニューではCが表示されておらず、HNOSと書かれていますが、これは炭素以外の原子の色を既定色に変更するというとても便利なカラーパレットです("color by heteroatom")。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
util.cnc 1alk # color by heteroatom
by chain
by chain (elem C | */CA, | 無印)
`1つの生体分子オブジェクト内に複数のchainが存在している場合、各chainごとに異なる色で塗り分けてくれます。
elem C
の場合、チェイン内の全炭素原子に対して色の変更を行い、他の種類の原子には色の変更を行いません。*/CA
の場合、主鎖のCα原子のみ色の変更を行い、残りの原子には色の変更を行いません。無印
は全原子に対して色の変更を行います。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
util.color_chains("(1alk and elem C)") # elem C
util.color_chains("(1alk and name CA)") # */CA
util.color_chains("(1alk)") # 無印
chainbows
各chainについて、N末端(5'末端)からC末端(3'末端)にかけて青色から赤色のきれいなグラデーションができるように色を塗り分けてくれます。タンパク質の場合、この配色ならば、表示された色からアミノ酸配列の位置と構造上での位置の対応関係を把握しやすいため、この配色になっている論文を見たことがある方も多いでしょう。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# どちらでもOK
util.chainbow 1alk
util.chainbow("(1alk)")
by segi (elem C | 無印)
segment identifierによる色分けを行います。
あまり詳しく調べていないのですが、segment identifierは現在仕様が廃止されつつあるのと、カラーリングが赤・青なので、あまり使うことはないでしょう。
by ss (By Secondary Structure)
タンパク質の二次構造(ヘリックス・シート・ループ)構造を基準に色分けしてくれます。自由に選びましょう。
コマンドで行う場合で、ヘリックスを赤、シートを黄、それ以外を緑に塗りたいときは、以下のように打てばOKです。
color red, ss h
color yellow, ss s
color green, ss l+''
または、
util.cbss("1alk","red","yellow","green") # オブジェクト1alkについて行いたい場合
by rep (By Representation)
表示形式(representation)ごとに色分けを表示させることができます。これ以外の他のメニューからの色変更は、全表示形式が一括で色変更されてしまうので、うまく使い分けましょう。例えば、by chainで緑・青に色分けをした後に[show]→[surface]としてsurface表示をした状態ですと、
という表示になりますが(コマンドでset transparency, 0.5
とし、Surface表示の透明度を変更しています。)、続いて[by rep]→[surface]→[grays]→[white]とすると
このようにSurface表示だけ白くすることができます。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# どちらでもOK
set surface_color, white, 1alk
cmd.set("surface_color", "white", '1alk', quiet=0)
quiet=1
とすると処理終了時にメッセージがログ欄に表示されなくなります(プログラミング用)。surface_color
の部分をline
やcartoon
などに変更すればその表示形式に関わる色のみ変更できます。
spectrum
rainbow (elem C | */CA, | 無印)
オブジェクト全体を虹色表示してくれます。[by chain]の[chainbow]と違い、chainごとに虹色グラデーションをつけてくれるわけではないことに注意してください。elem C
, */CA
, 無印
の意味は上と同様です。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# elemCの場合。どちらでもOK。
spectrum count, selection=1alk and elem C
cmd.spectrum("count",selection="(1alk)&elem C")
# */CAの場合
spectrum count, selection=1alk&*/CA
cmd.spectrum("count",selection="(1alk)&*/CA")
# 無印
spectrum count, selection=1alk, byres=1
cmd.spectrum("count",selection="1alk",byres=1)
b-factors (無印 | */CA)
結晶構造解析法で構造決定された構造ファイルの場合、b-factor(温度因子) という値が各原子に対して割り当てられています。簡単に言えば、この値は その原子のゆらぎやすさ を表しており、概して分子内部に存在している原子ほど値が小さく、外側に存在する原子ほど大きくなっています。この色表示ではb-factorの値が小さいほど青色に、大きいほど赤色になるよう表示されます。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# 無印の場合。どちらでもOK。
spectrum b, selection=1alk, quiet=0
cmd.spectrum("b", selection=("1alk"), quiet=0)
# */CAの場合。どちらでもOK。
spectrum b, selection=1alk&*/CA, quiet=0
cmd.spectrum("b", selection="((1alk)&*/CA)", quiet=0)
表示形式のプリセットの中には、b-factorごとに色と太さを変えてくれるオプションもあります。
area (molecular | solvent)
残基あたりのsurface area(表面積)を計算し、それに応じた値でグラデーション色付けをしてくれます。
プログラムの仕様上はget_area
コマンドを走らせて、その値に応じた色付けを行っているようです。しかし、solventの方も含めて、かなり雑な計算なのでまったく厳密ではないようです(参考:https://pymolwiki.org/index.php/Get_Area)。Solvent accessbile surface areaを計算したい場合は、別の厳密なソフトウェアで計算した値を使うことを推奨します。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# molecularの場合(デフォルト)。
util.color_by_area("1alk","molecular")
# solventの場合
util.color_by_area("1alk","solvent")
auto (elem C | all | by obj (elem C) | by obj)
自動で色付けをしてくれます。複数の生体分子オブジェクトがPyMOL上で開かれている場合に有効です。上2つは、押すたびに色が入れ替わっていきます。緑→シアン→黄→紫……の順に入れ替わります。
下2つのby obj
がついているものはロードされている生体分子オブジェクトの上から順に色を緑→シアン→黄→紫……の順で塗り分けてくれます。特に、all
を選択してby obj
を押せば一発で見慣れた色分けになってくれるので便利です。
コマンド入力はこちら(全オブジェクトについて行う場合)
cmd.color("auto","(all) and elem C")
cmd.color("auto","all")
util.color_objs("(all and elem C)",_self=cmd)
util.color_objs("(all)",_self=cmd)
auto以下に存在する色分けメニューについて
autoメニューの下には様々なカラーパレットがあります。自由に選択して好きな色を選びましょう。全表示形式(line, stick, surface...)について同一の色を適用します。
コマンド入力はこちら(オブジェクト1alk
について赤色で塗る場合)
# PyMOL 2.3時代まで
util.color_deep("red", '1alk', 0)
# PyMOL 2.4以降(予定)
color_deep red, 1alk
マウス操作
PyMOLを含む分子描画ソフトウェアの最も重要なユーザーインターフェースがマウス操作です。何はともあれ、PyMOLを使うのであればこれを先に読んでマスターしておきましょう。
PyMOLのマウス操作は、外部デバイスとしてのホイール付きマウスを前提に設計されており、左クリックボタン、右クリックボタンとホイールクリックボタンの3ボタンをすべて使うことがデフォルト設定となっています。しかし、1人1台のノートパソコンを持つことも珍しくなった現在では外部のマウスを接続して使わずに、備え付けのタッチパッドを使って操作することが多くなりました。タッチパッドはPyMOLの求める3ボタン式になっていないことが多く、ホイールボタンが存在していないためPyMOLのユーザーは不便に感じることがあると思います。こうした状況に対応するべく、PyMOLには実は2ボタンモードと1ボタンモードが用意されています。これらのモードの説明を交えつつ、PyMOLのマウス操作について詳しく述べていきます。
操作モード
PyMOLには3ボタンモード、2ボタンモード、1ボタンモードが用意されています。これらのモードは下記のようにさらに細かいモードに分かれます。
- 3ボタンモード
- 3 Button Viewing Mode(初期設定)
- 3 Button Editing Mode
- 3 Button Motions Mode
- 3 Button Lights Mode
- 3 Button All Mode
- 2ボタンモード
- 2 Button Viewing Mode
- 2 Button Editing Mode
- 1ボタンモード
- 1 Button Viewing Mode
3ボタンモードはホイールボタン付きマウスを利用している場合に最も効果を発揮します。2ボタンモードはタッチパッドのみの環境で、Macbookなどを含むノートパソコンではこの設定にしておくことを推奨します。ここで、それぞれのボタンモードの中にViewing, Editingモードなどが存在していることも覚えておきましょう。これらのモード間ではクリック時の操作が異なります。基本的に、表示した分子を観察する場合はViewingモードを、分子の座標に変更を加える場合にはEditingモードを利用します。
各モードがどのようなマウス操作に対応しているかを理解する前に、まずはPyMOL画面の右下のこの部分に着目します。
この赤い四角の部分の一番上にはMouse Mode 3-Button Viewingと書かれています。これは3 Button Viewing Modeと同じ意味です。ここで、赤い四角の範囲のどこかをクリックすると
Mouse Modeが3-Button Editingという表示になりました。これは3 Button Editing Modeに切り替わったことを表しています。また、青い四角の部分も、Picking Atoms (and Joints) に変化しました。最初のうちは、このViewing ModeとEditing Modeの2つについて理解しておけば十分だと思います。Lights ModeとAll Modeについては慣れてきたら試してみましょう。2つのモードは上記の赤い四角の部分を押すことで入れ替えることができます。
この画面についてもう少し詳しく見ていきます。ここにはクリックするマウスボタン(L, M, R, Wheel)と補助キーとの組み合わせ(Shift, Ctrl, Ctrl+Shift...)を組み合わせることで、様々なマウス操作が行えることが英語で書かれています(macOSの場合、CtrlはCommand ⌘ キーです)。最上段は対応するキーを押しながらマウスを動かす操作を表しています。例えば、3-Button Viewing Modeにおいては左クリックを押しながらマウスを動かすことで回転操作(Rota)、ミドルクリック(ホイール)を押しながらマウスを動かすことで並進操作(Move)が行えます。ここの表記は簡単なものですが、もし忘れてしまってもここに着目すれば、操作を思い出すことができるでしょう。
各モードにおける操作一覧
各操作の詳細は次項で示します。macOSではCtrlキーはCommandキー(⌘キー)になります。
3 Button Viewing Mode
左ボタン | ホイールボタン | 右ボタン | ホイールスクロール | |
---|---|---|---|---|
ボタンを押しながらドラッグ | 回転(Rota) | 並進(Move) | ズームイン・アウト(MovZ) | スラビング(Slab) |
shiftキー | 選択範囲に追加(+Box) | 選択範囲から除去(-Box) | クリッピング(Clip) | スラブの移動(MovS) |
Ctrlキー | 並進(Move) | 原子ピッキング(PkAt) | 1原子ピッキング(Pk1) | スラブに対する視点の移動(MvSZ) |
Ctrl+Shiftキー | 選択(sele) | Origin指定(Orig) | クリッピング(Clip) | ズームイン・アウト(MovZ) |
シングルクリック | 選択範囲追加・除去(+/-) | センタリング(Cent) | メニュー表示(Menu) | |
ダブルクリック | メニュー表示(Menu) | - | 原子ピッキング(PkAt) |
3 Button Editing Mode
左ボタン | ホイールボタン | 右ボタン | ホイールスクロール | |
---|---|---|---|---|
ボタンを押しながらドラッグ | 回転(Rota) | 並進(Move) | ズームイン・アウト(MovZ) | スラビング(Slab) |
shiftキー | オブジェクトの回転(RotO) | XY軸方向への移動(MovO) | Z軸方向への移動(MvOZ) | スラブの移動(MovS) |
Ctrlキー | 原子の移動(MovA) | 選択範囲追加・除去(+/-) | 二面角をピッキング(PkTB) | スラブに対する視点の移動(MvSZ) |
Ctrl+Shiftキー | Z軸方向への移動(MvAZ) | Origin指定(Orig) | クリッピング(Clip) | ズームイン・アウト(MovZ) |
シングルクリック | 原子ピッキング(PkAt) | センタリング(Cent) | メニュー表示(Menu) | |
ダブルクリック | 原子の移動(MovA) | ドラッグモード(DrgM) | 二面角をピッキング(PkTB) |
2 Button Viewing Mode
左ボタン | ホイールボタン | 右ボタン | ホイールスクロール | |
---|---|---|---|---|
ボタンを押しながらドラッグ | 回転(Rota) | -- | ズームイン・アウト(MovZ) | -- |
shiftキー | 1原子ピッキング(Pk1) | -- | クリッピング(Clip) | -- |
Ctrlキー | 並進(Move) | -- | 原子ピッキング(PkAt) | -- |
Ctrl+Shiftキー | 選択(sele) | -- | センタリング(Cent) | -- |
シングルクリック | 原子ピッキング(PkAt) | -- | メニュー表示(Menu) | |
ダブルクリック | メニュー表示(Menu) | -- | センタリング(Cent) |
操作の詳細
回転 (Rota)
マウスの左ボタンを押しながらマウスを動かす(ドラッグ) すると、表示されている分子を回転させることができます。
並進 (Move)
マウスのホイールボタンを押しながらドラッグ すると、表示されている分子を視点に対して平行に移動させることができます。
ズームイン・アウト (MovZ)
マウスの右ボタンを押しながらマウスを前後にドラッグ、またはCtrlとShiftキーを押しながらマウスのホイールを上下 させると、分子構造を拡大・縮小することができます。
選択 (+/-)
表示されているオブジェクトの原子の上でマウスの左ボタンを押す と、四角のマークが付きます。
この四角マークは、現在選択されている原子の範囲を示しています。この左クリックによる選択はクリックするたびに選択範囲に追加され、もう一度押すと選択範囲から外されます。
選択範囲に追加/除去 (+Box/-Box)
選択範囲の追加または除去を行います。+Box(Shiftを押しながらマウスの左クリック&ドラッグ) では画面上に黒い四角が現れ、ボタンを離すと、その四角で囲まれた部分が選択範囲に追加されます。反対に、-Box(Shiftを押しながらマウスのホイールクリック&ドラッグ) では四角で囲んだ範囲を選択範囲から除去することができます。同様の操作を繰り返すことも可能です。
センタリング (Cent)
表示されているオブジェクトの原子の上でマウスのホイールボタンを押す と、その原子が画面中央に来るように視点が移動します。また、回転操作の中心もその点に移動します。
Origin指定 (Orig)
表示されているオブジェクトの原子の上でCtrlとShiftを押しながらマウスのホイールボタンを押す と、その原子を回転中心の原点(origin)に指定することができます。上記センタリングのときと異なり、視点は移動しません。
メニュー表示 (Menu)
マウスの左ボタンをダブルクリック または 右ボタンをクリック で、メニューを開きます。メニュー内容はクリックした位置によって内容が変化します。
何もない箇所でクリックすると[Main Pop-Up]メニューが表示されます。
オブジェクトの上でクリックすると、クリックした場所に存在する原子についての設定変更を行うメニューが表示されます。
原子ピッキング(PkAt/Pk1)
オブジェクト上の原子の上でCtrlボタンを押しながらホイールクリック、またはマウス右ボタンのダブルクリックを行うと、その原子をピッキングした状態になります(PkAt)。
このピッキング状態は先述の選択範囲とは異なる選択形式で、図のような球体のマーカーが付きます。このピッキングは画面上に同時に4原子まで選択することができ、各ピッキングマーカーは図のように二重、三重、四重の球体マーカーで示されます。
Ctrlボタンを押しながら右クリック (Pk1) の場合では、上の操作と異なり、1つめの原子ピッキングのみを行います。ピッキングされた原子が2つ、3つ、4つになると、自動でそのピッキングされた原子についての距離(distance)、角度(angle)、二面角(dihedral) を表示してくれます。
クリッピング(Clip)
Viewing ModeでShiftとマウスの右ボタン(またはCtrl+Shift+マウス右ボタン)を押しながらマウスを上下左右に動かす と、分子の内部を覗けたり霧をかけたりすることができます。分子内部の一部の領域を強調した画像を取りたいときに作ります。
この機能は2枚のクリッピング平面(Clipping plane) によって調節しています。マウスの上下の動きは前面のクリッピング平面(front clipping plane)の位置を、左右の動きは背面のクリッピング平面(rear clipping plane)の位置を調節できます
図解
画面上にはこの2枚のClipping Planeの間に存在する領域だけが表示されます。
マウスを画面下に移動させるとfront clipping planeは視点から見て奥へ移動し、分子の内部が見えるようになります。反対に、マウスを上へ移動させると、front clipping planeは手前に移動します。
マウスを左に移動させるとrear clipping planeが視点から見て奥へ移動します。反対に手前に移動させると、rear clipping planeが手前に移動し、分子の奥側が霧がかかって徐々に見えなくなります。
霧は画面上部のメニューの[Display]→[Depth Cue(Fogging)]のチェックでON/OFFを選択できます(デフォルトはONです)。
スラビング(Slab)
スラブとは英語で厚板、平板という名詞、または「平板にする」という動詞です。PyMOLにおいてスラブ(Slab、Visible Slabとも)とは、上述の2枚のクリッピング平面の間に挟まれた可視化領域のことを指します。
Viewing Modeでマウスホイールを回転させる ことで、スラブの厚さを調節することができます。クリッピングとともに、分子構造の内部領域をみたい時に有用です。
画面上部メニューの[Display]→[Clip]には[8 Angstroam Slab]を始めとして30 Åまでの厚さのスラブを選ぶことができます。[Nothing]を選択した場合には、全原子が含まれるように自動的にスラブの厚みを調節します。
スラブの移動(MovS)
Viewing ModeでShiftを押しながらマウスホイールを回転させる と、スラブ領域を、その厚みを保ったまま手前・奥に移動させることができます。効果を実感したい場合は、例として[8 Angstroam Slab]設定をした直後に使ってみるとわかりやすいでしょう。
スラブに対する視点の移動(MvSZ)
Viewing ModeでCtrlを押しながらマウスホイールを回転させる と、スラブ平面に対して視点を移動させることができます。視点がスラブ内部に入ることもできます。
Editing Mode専用コマンド
以下ではEditing Modeで扱う操作方法について記述します。Editing Modeはオブジェクト・原子の座標自体に変更を加えることが多いため、このモードで操作するときは注意が必要です。もし誤って座標を動かしてしまった場合、数回であればCtrl-zでUndo(もとに戻す)ことが可能です。
オブジェクトの回転(RotO)・XY軸方向への移動(MovO)・Z軸方向への移動(MvOZ)
EditingモードでShiftキーとマウスの左ボタン・ホイールボタン・右ボタンを押しながらマウスを移動させることで、オブジェクトの座標に対しそれぞれ回転・XY軸への並進・Z軸へ移動操作を行うことができます。特に、複数のオブジェクトが存在する場合に効果がわかりやすいです。以下の例では緑色と青色で別々のオブジェクトとした上で、青色オブジェクトに対して操作を適用しています。
原子の移動(MovA)・Z軸方向への移動(MvAZ)
EditingモードでCtrlキーとマウスの左ボタンを押しながらマウスを移動させることで、マウスカーソル上に存在する原子の座標を移動させることができます。Ctrl+Shiftキーとマウスの左ボタンを押しながらだとZ軸方向への移動が行えます。下の例では、オレンジ色の原子(リン酸イオンPO4のリン原子)について操作を適用しています。
フラグメントの回転(RotF)・移動(MovF)・Z軸方向への移動(MvFZ)
Editingモードで特定の原子を左クリックすると原子がピックされた状態になります。このとき操作メニューが変化して、MovF, MvFZが現れるようになります。RotF(Shift+左クリック)とMovF(Shift+ホイールクリック)はピックされた原子と結合している原子のまとまり(フラグメント)を回転させたり、平行移動させたりすることができます。この操作は必ず選択されたフラグメントの上でShiftキーとクリック入力を行う必要があります。
MvFZ(Shift+右クリックしながら上下にドラッグ)はピックされたフラグメントを手前または奥に移動させることができます。
二面角をピッキング(PkTB)
Editingモードで描画されている結合に対してCtrlキーとマウスの右ボタンを押しながら移動させることで、結合の二面角を変更することができます。
2原子を結ぶ結合線上のうち、それぞれの原子に近い位置で操作を実行することで、それぞれ回転される対象が異なることに注意します。 図において、結合線の左半分にマウスカーソルを置いた状態で操作を適用した場合はこの残基の先端のみが回転します。
しかし、結合線の右半分にカーソルを置いた状態で操作を適用すると、タンパク質の方が回転します。
分子構造をドラッグモードにする(DrgM)
Editingモードでホイールボタンをダブルクリックすると、オブジェクト内のひとつながりの分子構造(Molecule)について"drag"状態にします。このドラッグモードではこれまでのカメラ操作のような感覚で分子の座標を変更することが可能になります。
このドラッグモードにするとオブジェクトパネルの下側に専用のメニューが現れます。PDB: 1alkの場合で図の右側の構造についてこの操作を実行すると、Mgイオンを除いた右半分のChainだけが選択された状態になります。これは上述のひとつながりの分子構造に対してのみ適用されるからです。
さらに、このドラッグモードではShiftキーを押しながらのマウス操作方法がRotD, MovD, MvDZに変化します。このDはDraggedを表しており、ドラッグモードとなっている選択範囲のみに対してそれぞれ回転操作・XY軸方向への移動・Z軸方向への移動を行うことができます。
セッションの保存
セッションとは、一連のインタラクティブ操作のことを指します(コンピュータ用語)。PyMOLにおいては、開いてから現在に至るまでの作業記録、と考えることができます。つまり、セッションの保存を利用すると作業状態をファイルに保存しておくことができ、あとでその状態を復元することができます。この機能を利用すれば、論文の図を作成している最中に様々な設定を試すことができたり、PyMOLの画面の状態を他の人に表示して確認してもらうということも可能になります。
やり方は簡単で、上部メニューの[File]から[Save Session As...]を選び、ファイル名を指定してSaveボタンを押して保存するだけです。
Sessionのファイル形式にはpse形式とpsw形式の2つがあります。基本的にはpseファイル形式の方で保存する方がよいでしょう。pswファイルで保存した場合は、そのファイルを開くときに全画面表示が標準になります。例えばデスクトップにfoo.pse
というファイル名で保存したい場合は以下のように入力して[save]ボタンを押します。
こうして保存されたセッションファイルを再度PyMOLからロードすれば、元の作業状態に戻すことができます。
※ 一度セッションを保存しておけば、以降は[Save Session]ボタンを押すことで同名のセッションファイルに上書きしてくれます。
構造ファイルのエクスポート
ロードされている構造ファイルの全部または一部を書き出して保存することができます。
上部メニューの[File]から[Export Molecule...]を選ぶと、保存メニューが現れます。
Selectionの部分はエクスポートする構造オブジェクトの範囲を示しています。enabledは現在オブジェクトパネルで表示をONにしている構造オブジェクトすべてを表します。右のプルダウンメニューには他にもall(ロードしている全構造オブジェクト)や個別の構造ファイルのオブジェクト名が含まれています。
Stateは1つのオブジェクトに複数の構造状態を持っている場合に、どの状態を保存するかを表しています。デフォルトは -1 (current) で、現在画面に表示されている状態のものを保存します。
対応している出力ファイル形式
デフォルトではPDBx/mmCIF (*.cif, *.cif.gz)
となっていますが、他にも画像のような様々なファイル形式に出力することができます。
保存メニューには他にも様々なオプションがあります。
Generic Options
Original atom order (according to "rank")
構造オブジェクトの保存時に、ATOM行の並び順を元のファイルの入力通りに並べるかどうかを設定します。例として元のファイルが
ATOM 1 CH3 ACE A 1 33.160 24.100 12.400 1.00 0.00
ATOM 2 HH31 ACE A 1 32.860 24.830 11.650 1.00 0.00
ATOM 3 HH32 ACE A 1 33.800 23.390 11.880 1.00 0.00
ATOM 4 HH33 ACE A 1 32.250 23.650 12.770 1.00 0.00
ATOM 5 C ACE A 1 33.910 24.800 13.510 1.00 0.00
ATOM 6 O ACE A 1 33.760 24.560 14.700 1.00 0.00
だったとしたとき、設定がOFFであればこの並び順は
ATOM 1 C ACE A 1 33.910 24.800 13.510 1.00 0.00 C
ATOM 2 O ACE A 1 33.760 24.560 14.700 1.00 0.00 O
ATOM 3 CH3 ACE A 1 33.160 24.100 12.400 1.00 0.00 C
ATOM 4 HH31 ACE A 1 32.860 24.830 11.650 1.00 0.00 H
ATOM 5 HH32 ACE A 1 33.800 23.390 11.880 1.00 0.00 H
ATOM 6 HH33 ACE A 1 32.250 23.650 12.770 1.00 0.00 H
という順に書き出されます。この並びはatom identifier
順になっています。一方、設定がONであればこの並び順は
ATOM 1 CH3 ACE A 1 33.160 24.100 12.400 1.00 0.00 C
ATOM 2 HH31 ACE A 1 32.860 24.830 11.650 1.00 0.00 H
ATOM 3 HH32 ACE A 1 33.800 23.390 11.880 1.00 0.00 H
ATOM 4 HH33 ACE A 1 32.250 23.650 12.770 1.00 0.00 H
ATOM 5 C ACE A 1 33.910 24.800 13.510 1.00 0.00 C
ATOM 6 O ACE A 1 33.760 24.560 14.700 1.00 0.00 O
のように、元のファイルの原子順に書き出されて保存されます。
コマンドラインでは set retain_order, [0,1]
で同様の設定を指定できます(0で無効、1で有効)。
参考: https://pymolwiki.org/index.php/Retain_order
PDB Options
これらのオプションは従来使われていたpdb
ファイル形式で出力するときのみ対応します。
Write multiple bonds as duplicate CONECT records
CONECTレコードを複数作成することで原子間の結合次数の情報をエンコードし、ファイルに書き出します。デフォルトではOFFです。ver. 1.6.1から実装されました。
コマンドラインでは set pdb_conect_nodup, [0,1]
で無視して保存するかどうかを指定できます(0で書き出す、1で書き出さない)。
Write CONECT records for all bonds
すべての原子間の結合の組み合わせ情報をCONECTレコードに書き出します。デフォルトではOFFです。
コマンドラインでは set pdb_conect_all, [0,1]
で同様の設定を指定できます(0で無効、1で有効)。
参考: https://pymolwiki.org/index.php/Pdb_conect_all
Write segment identifier (segi) column
segment identifierを書き出すかどうかを指定します。デフォルトではONです。segment identifierとはPDB formatにおいて73-76番目のカラムを利用した識別子のことです。かつて、同一chain IDにありながらある種の原子のグループごとに分けて記述したい場合に用いられましたが、今はChain IDで分けるのが主流となっています。segment identifierは現在廃止された仕様ですが、PyMOLやChimera, CHARMMなど一部のプログラムは未だにこれを利用することができます。
コマンドラインでは set ignore_pdb_segi, [0,1]
で無視して保存するかどうかを指定できます(0で書き出す、1で書き出さない)。
Retain atom ids
構造データのエクスポート時に、原子のIDを1から順になるようリナンバリングするかどうかを指定します。デフォルトではOFFです。
コマンドラインでは set pdb_retain_ids, [0,1]
で同様の設定を指定できます(0で無効、1で有効)。
参考: https://pymolwiki.org/index.php/Pdb_retain_ids
Write HEADER for every object
このオプションを指定すると、保存時に選択された各オブジェクトがHEADERレコード〜ENDレコードで区切られながら1ファイル中にまとめて書き出されます。こうして書き出されたファイルはマルチエントリPDBファイルとなり、PyMOLでこのファイルをロードしようとすると、各エントリごとに異なるオブジェクトとして表示されるようになります。
対称性情報が含まれている場合、CRYST1レコードも記述されます。
内部処理的にはpdb形式でmultisave
コマンドを使った保存方法に直接対応しています。
参考: https://pymolwiki.org/index.php/Multisave
Multi-File
現在PyMOL上で複数表示されているオブジェクトを、複数ファイルに分けてエクスポートしたいときに使うオプションです。さらに、各オブジェクトが2以上のStateを持っている場合(例として、PDB ID:1G03などのNMR構造ファイル、またはMDトラジェクトリをロードしたオブジェクトなど)は、さらにそれらを分割して保存することができます。
デフォルトではone single fileが選択されています。
one single file
保存したい対象オブジェクト(上部Selection
のところで設定)を1つのファイルにまとめて保存します。保存される対象のStateはメニュー上部のState
で変更できます。
one file per object
複数のオブジェクトが表示されている場合に、各オブジェクトごとにファイルを分割して出力します。デフォルトの出力ファイル名はオブジェクト名に相当する{name}
が設定されます。
one file per object-state
各オブジェクトに複数のstateが存在する場合、上の設定と同様に、{name}_{state}
の名前で出力します。
Prompt for every file にチェックが入っている場合は、保存対象ごとにファイル名の指定画面が現れます。例えば、1つのstateを持つAと、20つのstateを持つBのオブジェクトがある場合に one file per object-stateを選択すると、21回画面がポップアップすることになります。
画像の保存
PyMOLで表示されている画像を保存することができます。上部メニューの[File]から[Export Image As...] → [PNG]を選ぶと、保存メニューが現れます。
デフォルトでは"capture current display"と表示されています。
この設定で下にある"Save PNG image as..."を押すと、保存先を指定するメニューが表示され、名前を入れて保存することができます(画像はいずれもbg_color white
で白背景にした場合で表示しています)。
これでとりあえず上のような画像を保存することができましたが、他にも様々なメニューがあるので、状況によって使い分けると良いでしょう。まずは、"capture current display"のプルダウンメニューの部分を押すと、
計4つのメニューがあることがわかります。まず"draw antialiased OpenGL image"とすると、描画にアンチエイリアスがかかります(※なおmacOSの場合、現状OpenGL周りの処理にバグがあるためWARNINGSのメッセージが出ています。)
続いて"ray trace with opaque background"とすると、ray traceをかけてオブジェクト全体に陰影をつけながら表示することができます。
最後に、"ray trace with transparent background"では、ray traceによる陰影と背景の透過処理が行われます(下の画像例では市松模様になっていますが、実際に出力される画像ではきちんと背景が透明になっています)。
特に最後のオプションで背景を透明化したものは、スライドに画像を載せるときなどで利用することが多いため、覚えておくと良いでしょう。
また、保存時のパネルには"To render a sized antialiased image, use the Draw/Ray panel in the upper right."というメッセージが表示されていますが、これはPyMOLのGUI部分の右上にあるメニューのことを指しています。
これをクリックすると設定メニューが表示されます。
先述のメニューでは出力される縦と横の画像サイズは指定できませんでしたが、先にここのメニューで縦(Height)と横(Width)の値を目的の値に変更しておけば指定することができます。
Unitsはcm
またはinch
を設定できます。また、DPIはdot per inchのことであり、この値が大きいほど画像の解像度が上がる一方、ファイルサイズは大きくなります。論文誌によっては300 DPIを求められる場合がありますので、発表用のものは300
にしておくと良いでしょう。
transparent background ("Ray" only) では、先述の背景の透明化処理の有効・無効を設定できます。
出力は"Draw (fast)"と"Ray (slow)"とありますが、これは先述の"draw antialiased OpenGL image"と"ray trace ~"にそれぞれ対応しています。
コマンドラインで行う場合は、各オプションが以下のコマンドに対応しています。
オプション | コマンド |
---|---|
capture current display | png foo.png, 0, 0, -1, ray=0 |
draw antialiased OpenGL image | draw 0, 0 ; png foo.png, 0, 0, -1, ray=0 |
ray trace with opaque background | set opaque_background, 1; png foo.png, 0, 0, -1, ray=1 |
ray trace with transparent background | set opaque_background, 0; png foo.png, 0, 0, -1, ray=1 |
分子構造のロード
構造ファイルのロード
メニュー左上の[File]から、[Open...]を選び、PyMOLに表示させたい構造ファイルを選択します。ここでは、先程ダウンロードした 1alk.cif
ファイルを例として、ダブルクリックして表示させてみます。
すると、画面に1ALKのアルカリフォスファターゼの構造が表示されました。はじめは黒背景に緑のタンパク質がオブジェクトが浮かんでいると思いますが、ここで続けて、メニューの[Display]から[Background]->[White]を選択すると、白背景にすることができます。
サポートしている構造ファイル形式
PyMOLが読み込むことのできる構造ファイルフォーマットはたくさんありますが、まず以下の2つのファイル形式を覚えましょう。
- pdbフォーマット
- ファイル名の最後に
.pdb
(拡張子)がついているのが目印です。PDBが設立された当初から使われているファイルフォーマットで、PyMOLの表示に使う座標情報だけでなく、結晶学(NMR)的情報(B-factor、 空間群、単位格子定数…)、 構造的特徴(2次構造、SS結合… )、実験情報(解像度、回折実験情報、精密化条件、結晶化条件… )、生物学的情報(蛋白質名、種名、生物学的単位、EC番号… )、化学的情報(化合物の名称や構造…)、文献情報などが記載されており、慣れれば人間でも読みやすく、必要最低限の情報が記述されています。しかし、時代が下るとともにこのフォーマットでは限界や不便な点が指摘されるようになりました。特に、近年は結晶解析だけでなくクライオ電子顕微鏡などの技術の発達により、巨大タンパク質の構造決定が次々と報告されるようになりましたが、従来のPDBフォーマットの最も大きな問題点の1つには100,000原子以上からなる構造、または多数のアミノ酸鎖(63チェイン以上)から構成される複合体の構造情報の記述をほとんど想定していなかったことがあります。このため、後述のmmCIF形式の利用が推奨されるようになりました。
- ファイル名の最後に
- mmCIFフォーマット
- ファイル名の最後に
.cif
がついているのが目印です。元来、mmCIFファイルフォーマットは国際結晶学連合が低分子用に定めていたCIF(Crystallographic Information File)形式を高分子(macromolecular)に拡張したものです。pdbフォーマットでは1ファイル内に記述することができなかった、100,000原子数以上または63チェイン以上の構造記述が可能になっています。例えばPDB: 3J3QのHIV-1 capsidは超巨大分子であり、従来のPDBフォーマットでは配布されていません。2014年にPDBの標準フォーマットとなり、2019年7月1日からは、PDBに登録する際にmmCIF形式での構造情報登録を義務付けられるようになりました。 このmmCIF形式がこれからのスタンダードとなっていくことは間違いありません。ファイルの中身はpdbフォーマットの内容の上位互換となっており、最近の構造可視化ソフトウェアはすべてこれに対応するよう調整をしています。
- ファイル名の最後に
他のファイル形式として、以下のものがあります。多くの場合、ファイル名末尾についている拡張子で見分けることが可能です。詳細な記述文法については、ここでは本題ではないので省略します。
- 生体高分子系・電子密度情報
-
CCP4フォーマット: 拡張子は
.ccp4
,.map
,.mrc
。電子密度マップ。 -
PDBMLフォーマット: 拡張子は
.xml
,.pdbml
。コンピュータ間でのデータのやり取りや管理が簡単になるように設計されたXMLファイルフォーマットをPDB用に特化させたものです。RCSB PDBでも配布されており、mmCIF形式とほぼ同一の情報が書き込まれています。ファイルサイズがmmCIFに比べて大きいことや、中身を見ても人間には読みにくい文法になっていますが、各プログラム言語が持っているXMLパーサ(構文解析器)にかけることでデータ構造の複合体に変換することが容易なため、インフォマティクスの専門家からは好まれるファイル形式です。 -
MMTFフォーマット: 拡張子は
.mmtf
。Macromolecular Transmission Formatの略称で、2016年頃から活発になり始めた新しいPDBファイル形式です。https://mmtf.rcsb.org/ によればMMTFの大きな特長はバイナリ化されていることであり、mmCIFフォーマットの1/3以下へのファイル縮小、そして最高で400倍以上の高速な読み込みが可能となっています。PyMOL 2.2.0以降でMMTFファイルフォーマットの読み込み・書き出しができるようになったようですが、まだ書き出しあたりには不十分なところもあります。これはViral Capsid(PDB: 3J3Q)のような超巨大タンパク質の表示にとても便利です。 -
MacroModelフォーマット: 拡張子は
.mmod
,.mmd
。Schrödinger社のMacroModelやMaestroで使われているファイルフォーマット。
-
- 小分子化合物系
- MOLフォーマット: 拡張子は
.mol
。MDL Information Systems社が開発した、化学構造式を記述する標準フォーマットの1つです。詳細はCTFile formatというガイドに記載されています。 - MOL Structure Data Fileフォーマット: 拡張子は
.sdf
。上記MOL形式を改良し、複数の構造式を1ファイルに記述でき、さらに様々な付加情報を追記することができるようになっています。 - SYBYL MOL2フォーマット: 拡張子は
.mol2
。Tripos(現Certara)が開発した、SYBYLと呼ばれるケモインフォマティクスのソフトウェアで使われていたファイルフォーマットです。タンパク質などの巨大分子でもこのファイル形式で書くことが可能です。詳細はSYBYL MOL2 formatというガイドに記載されています。 - XYZフォーマット: 拡張子は
.xyz
。単純に原子の種類と原子の\( xyz \)座標を記述するファイル形式です。http://openbabel.org/wiki/XYZ_(format) に説明があります。
- MOLフォーマット: 拡張子は
以下の拡張子は、表のように別のファイル拡張子として認識されます。
入力拡張子 | 認識されるファイル拡張子 |
---|---|
ent , p5m | pdb |
mmd , out , dat | mmod |
map , mrc | ccp4 |
cc2 | cc1 |
sd | sdf |
rst7 | rst |
o , dsn6 , omap | brix |
ph4 | moe |
spi | spider |
pym , pyc | py |
p1m , pim | pml |
xml | pdbml |
Biological Unitを考慮した分子構造のロード
タンパク質は1本のアミノ酸ポリペプチド鎖が折り畳まって存在しているのがほとんどですが、タンパク質の種類によっては、多量体の形で初めて安定に存在し機能しうるものもあります。Biological Unit(Biological Assemblyとも呼ばれる)とは、実際に生物の中で機能している構造の状態のことを指します。詳しくはPDBjのウェブサイトの「非対称単位と生物学的単位について」も参照してください。
例としてPDB ID: 1ALK
(大腸菌由来アルカリフォスファターゼ)とPDB ID: 1EW2
(ヒト由来アルカリフォスファターゼ)を比較してみましょう。各構造ファイルを取り扱うRCSB PDBのウェブサイト( https://www.rcsb.org/structure/1ALK と https://www.rcsb.org/structure/1EW2 )のStructure Summaryタブで画面左の方には、タンパク質の構造とともに、Global SymmetryとGlobal Stoichiometryの情報が書かれています。
Global StoichiometryにはHomo 2-mer - A2
という情報が記されています。論文で調べてみても、このタンパク質がそれぞれホモ2量体として生物中で機能していることが示されています。しかしそれぞれのファイルをPyMOLで単純に開いてみますと、1ALKの方にはA chain、B chainの構造が含まれていますが、1EW2の方ではA chainしか含まれていません。これは、PDBに登録されている原子座標のデータには、必要最小限の「非対称単位」(assymmetric unit)のみ含まれているから です。
そこで、場合によっては2量体の状態でタンパク質構造を表示してみたいということがあると思います。PyMOL 1.8からはこのBiological Unitを考慮した構造のロードが簡単に行えるようになりましたので、それを1EW2
ファイルに対してやってみます。以下の画像のように、[File]->[Get PDB...]を選び、続くウィンドウの画面でIDとAssembly情報を入力します。
これにより、1EW2の構造がホモ2量体構造で表示されました。
このチェインを別々に扱うためには、右側のオブジェクトパネルから1EW2A
のAボタンをクリックし、[state] -> [split]を開いてクリックします。
すると、1EW2A_0001
, 1EW2A_0002
というオブジェクトが新たに生成されます。ここまでくれば1EW2A
オブジェクトは不要ですので、最後に1EW2A
のAボタンから[delete object]を押せば完了です。
以上がBiological Unitを考慮した分子構造のロード操作ですが、これは一例であり、他にも同等の操作を達成する方法があります。コマンドラインで上記の操作を達成するには
set assembly, 1
fetch 1ew2
split_states 1ew2
delete 1ew2
でOKです。タイピングが早ければこちらの方が素早くできるでしょう。set assembly, 1
に相当する設定変更は、上部メニューの[Setting] -> [mmCIF File Loading] -> [Load Assembly (Biological Unit)]にチェックを入れることでも可能です。
構造ファイルのロード
メニュー左上の[File]から、[Open...]を選び、PyMOLに表示させたい構造ファイルを選択します。ここでは、先程ダウンロードした 1alk.cif
ファイルを例として、ダブルクリックして表示させてみます。
すると、画面に1ALKのアルカリフォスファターゼの構造が表示されました。はじめは黒背景に緑のタンパク質がオブジェクトが浮かんでいると思いますが、ここで続けて、メニューの[Display]から[Background]->[White]を選択すると、白背景にすることができます。
サポートしている構造ファイル形式
PyMOLが読み込むことのできる構造ファイルフォーマットはたくさんありますが、まず以下の2つのファイル形式を覚えましょう。
- pdbフォーマット
- ファイル名の最後に
.pdb
(拡張子)がついているのが目印です。PDBが設立された当初から使われているファイルフォーマットで、PyMOLの表示に使う座標情報だけでなく、結晶学(NMR)的情報(B-factor、 空間群、単位格子定数…)、 構造的特徴(2次構造、SS結合… )、実験情報(解像度、回折実験情報、精密化条件、結晶化条件… )、生物学的情報(蛋白質名、種名、生物学的単位、EC番号… )、化学的情報(化合物の名称や構造…)、文献情報などが記載されており、慣れれば人間でも読みやすく、必要最低限の情報が記述されています。しかし、時代が下るとともにこのフォーマットでは限界や不便な点が指摘されるようになりました。特に、近年は結晶解析だけでなくクライオ電子顕微鏡などの技術の発達により、巨大タンパク質の構造決定が次々と報告されるようになりましたが、従来のPDBフォーマットの最も大きな問題点の1つには100,000原子以上からなる構造、または多数のアミノ酸鎖(63チェイン以上)から構成される複合体の構造情報の記述をほとんど想定していなかったことがあります。このため、後述のmmCIF形式の利用が推奨されるようになりました。
- ファイル名の最後に
- mmCIFフォーマット
- ファイル名の最後に
.cif
がついているのが目印です。元来、mmCIFファイルフォーマットは国際結晶学連合が低分子用に定めていたCIF(Crystallographic Information File)形式を高分子(macromolecular)に拡張したものです。pdbフォーマットでは1ファイル内に記述することができなかった、100,000原子数以上または63チェイン以上の構造記述が可能になっています。例えばPDB: 3J3QのHIV-1 capsidは超巨大分子であり、従来のPDBフォーマットでは配布されていません。2014年にPDBの標準フォーマットとなり、2019年7月1日からは、PDBに登録する際にmmCIF形式での構造情報登録を義務付けられるようになりました。 このmmCIF形式がこれからのスタンダードとなっていくことは間違いありません。ファイルの中身はpdbフォーマットの内容の上位互換となっており、最近の構造可視化ソフトウェアはすべてこれに対応するよう調整をしています。
- ファイル名の最後に
他のファイル形式として、以下のものがあります。多くの場合、ファイル名末尾についている拡張子で見分けることが可能です。詳細な記述文法については、ここでは本題ではないので省略します。
- 生体高分子系・電子密度情報
-
CCP4フォーマット: 拡張子は
.ccp4
,.map
,.mrc
。電子密度マップ。 -
PDBMLフォーマット: 拡張子は
.xml
,.pdbml
。コンピュータ間でのデータのやり取りや管理が簡単になるように設計されたXMLファイルフォーマットをPDB用に特化させたものです。RCSB PDBでも配布されており、mmCIF形式とほぼ同一の情報が書き込まれています。ファイルサイズがmmCIFに比べて大きいことや、中身を見ても人間には読みにくい文法になっていますが、各プログラム言語が持っているXMLパーサ(構文解析器)にかけることでデータ構造の複合体に変換することが容易なため、インフォマティクスの専門家からは好まれるファイル形式です。 -
MMTFフォーマット: 拡張子は
.mmtf
。Macromolecular Transmission Formatの略称で、2016年頃から活発になり始めた新しいPDBファイル形式です。https://mmtf.rcsb.org/ によればMMTFの大きな特長はバイナリ化されていることであり、mmCIFフォーマットの1/3以下へのファイル縮小、そして最高で400倍以上の高速な読み込みが可能となっています。PyMOL 2.2.0以降でMMTFファイルフォーマットの読み込み・書き出しができるようになったようですが、まだ書き出しあたりには不十分なところもあります。これはViral Capsid(PDB: 3J3Q)のような超巨大タンパク質の表示にとても便利です。 -
MacroModelフォーマット: 拡張子は
.mmod
,.mmd
。Schrödinger社のMacroModelやMaestroで使われているファイルフォーマット。
-
- 小分子化合物系
- MOLフォーマット: 拡張子は
.mol
。MDL Information Systems社が開発した、化学構造式を記述する標準フォーマットの1つです。詳細はCTFile formatというガイドに記載されています。 - MOL Structure Data Fileフォーマット: 拡張子は
.sdf
。上記MOL形式を改良し、複数の構造式を1ファイルに記述でき、さらに様々な付加情報を追記することができるようになっています。 - SYBYL MOL2フォーマット: 拡張子は
.mol2
。Tripos(現Certara)が開発した、SYBYLと呼ばれるケモインフォマティクスのソフトウェアで使われていたファイルフォーマットです。タンパク質などの巨大分子でもこのファイル形式で書くことが可能です。詳細はSYBYL MOL2 formatというガイドに記載されています。 - XYZフォーマット: 拡張子は
.xyz
。単純に原子の種類と原子の\( xyz \)座標を記述するファイル形式です。http://openbabel.org/wiki/XYZ_(format) に説明があります。
- MOLフォーマット: 拡張子は
以下の拡張子は、表のように別のファイル拡張子として認識されます。
入力拡張子 | 認識されるファイル拡張子 |
---|---|
ent , p5m | pdb |
mmd , out , dat | mmod |
map , mrc | ccp4 |
cc2 | cc1 |
sd | sdf |
rst7 | rst |
o , dsn6 , omap | brix |
ph4 | moe |
spi | spider |
pym , pyc | py |
p1m , pim | pml |
xml | pdbml |
Biological Unitを考慮した分子構造のロード
タンパク質は1本のアミノ酸ポリペプチド鎖が折り畳まって存在しているのがほとんどですが、タンパク質の種類によっては、多量体の形で初めて安定に存在し機能しうるものもあります。Biological Unit(Biological Assemblyとも呼ばれる)とは、実際に生物の中で機能している構造の状態のことを指します。詳しくはPDBjのウェブサイトの「非対称単位と生物学的単位について」も参照してください。
例としてPDB ID: 1ALK
(大腸菌由来アルカリフォスファターゼ)とPDB ID: 1EW2
(ヒト由来アルカリフォスファターゼ)を比較してみましょう。各構造ファイルを取り扱うRCSB PDBのウェブサイト( https://www.rcsb.org/structure/1ALK と https://www.rcsb.org/structure/1EW2 )のStructure Summaryタブで画面左の方には、タンパク質の構造とともに、Global SymmetryとGlobal Stoichiometryの情報が書かれています。
Global StoichiometryにはHomo 2-mer - A2
という情報が記されています。論文で調べてみても、このタンパク質がそれぞれホモ2量体として生物中で機能していることが示されています。しかしそれぞれのファイルをPyMOLで単純に開いてみますと、1ALKの方にはA chain、B chainの構造が含まれていますが、1EW2の方ではA chainしか含まれていません。これは、PDBに登録されている原子座標のデータには、必要最小限の「非対称単位」(assymmetric unit)のみ含まれているから です。
そこで、場合によっては2量体の状態でタンパク質構造を表示してみたいということがあると思います。PyMOL 1.8からはこのBiological Unitを考慮した構造のロードが簡単に行えるようになりましたので、それを1EW2
ファイルに対してやってみます。以下の画像のように、[File]->[Get PDB...]を選び、続くウィンドウの画面でIDとAssembly情報を入力します。
これにより、1EW2の構造がホモ2量体構造で表示されました。
このチェインを別々に扱うためには、右側のオブジェクトパネルから1EW2A
のAボタンをクリックし、[state] -> [split]を開いてクリックします。
すると、1EW2A_0001
, 1EW2A_0002
というオブジェクトが新たに生成されます。ここまでくれば1EW2A
オブジェクトは不要ですので、最後に1EW2A
のAボタンから[delete object]を押せば完了です。
以上がBiological Unitを考慮した分子構造のロード操作ですが、これは一例であり、他にも同等の操作を達成する方法があります。コマンドラインで上記の操作を達成するには
set assembly, 1
fetch 1ew2
split_states 1ew2
delete 1ew2
でOKです。タイピングが早ければこちらの方が素早くできるでしょう。set assembly, 1
に相当する設定変更は、上部メニューの[Setting] -> [mmCIF File Loading] -> [Load Assembly (Biological Unit)]にチェックを入れることでも可能です。
配列の表示
分子構造をロードしたら、ここでPyMOL画面の右下に注目してみます。ここには様々な記号や文字が並んでいますが、ここのSボタンを押してみましょう。
このSボタンを押すと、画面に分子の配列情報が現れます。もう一度Sボタンを押すと文字列が隠れます。
ここに表示される配列の文字列は、タンパク質の場合にはA, C, Dなどアミノ酸の1文字表記、核酸構造の場合にはDA, DT, DG, DCで2文字表記となっています。RNAの場合には1文字表記ですが、タンパク質の場合と異なり、各文字にスペースが挿入されて表示されます。リガンドやその他のについては3文字表記で表されることが多いです。これらの表記は、ロードする構造ファイル内の記述に依存してします。
配列の表示・非表示は、上部メニューの[Display]→[Sequence]にチェックを入れたり外したりすることでも行うことができます。
以下に、配列表示ウィンドウ上でのマウス操作を方法を記します。macOSの場合はCtrlはCmdキーになります。
- 左クリック+ドラッグ
- 分子の一部を選択した状態にできます。選択した箇所にはハイライトが付きます。タンパク質の場合は残基ごと、核酸の場合は塩基ごと、それ以外の場合は1分子ごとに選択します。
- Shift+左クリック
- 上記の選択範囲を拡張・縮小することができます。クリックボタンを押し続ける必要はありません。
- Ctrl+Shift+左クリック
- 選択範囲を拡張・縮小しつつ、視点を選択範囲にセンタリングしてくれます。
- ホイールクリック
- クリックした箇所に視点をセンタリングします。
- Ctrl+ホイールクリック
- クリックした箇所に視点を大きくズームします。
- Ctrl+ホイールクリック+Shift+ドラッグ
- Shift+ドラッグで選んだ選択範囲に向かって視点を大きくズームします。
- 右クリック
- 選択されていない箇所で右クリックをすると、その位置に存在する配列を選択し、それについての設定変更メニューを表示します。
- すでに選択されている箇所で右クリックをすると、選択範囲に対する設定変更メニューを表示します。
オブジェクトパネル
PyMOL画面の右側には、ロードしている分子構造について様々な操作を行えるパネルが表示されています。
画像の例ではall
と1alk
が表示されています。また、画面上の分子構造をクリックし選択すると、(sele)
という表示も追加されます。このパネルに表示されている文字のことをオブジェクトと呼びます。その右についているA, S, H, L, Cという文字のボタンには、対応するオブジェクトについての表示設定変更・編集を行うためのメニューがたくさん格納されています。それぞれの文字が表す大まかな意味は以下の通り。
- Action(A)
- 視点の移動や分子についての編集、一括設定変更、構造のアラインや名前変更など、オブジェクト全体に関わる様々な設定を行うためのメニューが格納されています。
- Show (S)
- 分子構造の表示形式をONにするためのメニューが格納されています。
- Hide (H)
- 分子構造の表示形式をOFFにするためのメニューが格納されています。
- Label (L)
- 分子構造のすぐそばに表示する文字ラベルを追加するためのメニューが格納されています。
- Color (C)
- 分子構造の色変更を行うためのメニューが格納されています。
分子構造の表示形式のON/OFF (Show and Hide)
タンパク質の構造情報をロードしたとき、デフォルト設定では、20種類のアミノ酸についてはCartoon表示形式と呼ばれる漫画風な表現形式になっています。このCartoon表示形式では、αヘリックスを形成している部分については大きな螺旋で描かれ、βストランド(βシート)を形成している部分については、進行方向に向かって矢印が伸びる表現で描かれています。
タンパク質を構成するアミノ酸を1つ1つ強調して見てみたい場合には、Cartoon, Line, Stick, Ribbon, Sphere, Dot, Surface, Mesh 表示などの、他の表示形式をONにするという操作を行います。この表示形式の設定は、各オブジェクト構造について個別に行います。例えば、先程ロードした1alkのタンパク質オブジェクトについて他の表示形式をONにしたい場合は、図のように、1alkのSマーク部分(図の赤四角部分のボタン) をクリックします。反対に、OFFにしたい場合はHマーク部分(図の青四角部分のボタン) を押し、各表示形式を選択することでOFFになります。
各表示形式のサンプルを以下に示します。
-
Cartoon表示
- タンパク質やDNA・RNAを表示するときにおすすめです。タンパク質の場合はαヘリックスやβシートが先述のように螺旋や矢印で示されます。DNA/RNAが存在する場合には、各塩基の概形や5'末端→3'末端のつながりが強調して表示されます。
-
Line表示
- 各原子間の結合が細い線で表示されます。上の図では、左にLine表示だけをONにしたものを、右にCartoon表示形式をLine表示とともにONにした場合を右図に示しています(以降、見やすくするためにCartoon表示をONにした上で、他の表示形式を載せます)。
- 各原子は構造情報ファイルの座標のATOMまたはHETATMレコードに書かれている座標情報(\( x, y, z \)の3次元ベクトル)をもとにプロットされ、各原子座標の距離が一定以内にあれば、自動的にその近い2点が直線で結ばれて表示される仕様となっていることに気をつけてください。
-
Stick表示
- 各原子間の結合がLine表示よりも太いStickで表示されます。Stickは円筒状に表現されます。
-
Ribbon表示
- タンパク質または核酸の鎖部分のみを単純な線で表現する形式です。
-
Sphere表示
- 各原子を大きな球体で表現します。Line, Stick表示と異なり、各原子間は直線で結ばれません。
-
Dot表示
- Sphere表示の表面を点で表現したような形式です。
-
Surface表示
- 各原子の表面を滑らかに描画する形式です。分子の大きさによっては、レンダリングに少し時間がかかります。
-
Mesh表示
- Surface表示と似ていますが、表面の描画を網掛けで表現します。
ラベルの設定(Label)
ラベルを利用することで、分子の周辺に文字を表示させることができます。活性部位周辺に存在する残基の名前と番号を表示させるだけでなく、任意の文字列を表示させることができます。
分子構造の表示形式のON/OFF (Show and Hide)のときと同様に、オブジェクトパネルから各オブジェクトに対して個別にラベルの設定を行うことができます。特に、選択範囲(sele)
に対して表示させることが多いでしょう。
ラベルの設定変更はGUIの上部メニューから、Setting -> Labelのところにあり、ラベルの表示サイズやフォント指定、色の指定などが可能です。下記のサンプルではフォントサイズを28にしてあります。
ラベルの位置変更は3-Button Editing Modeにしてから、ラベルの上でCtrl(macOSの場合はCommand)を押しながら左クリックでドラッグさせることで任意の位置に移動させることができます。下の例ではASP-101を右に移動させています。
clear
すでに表示されているそのオブジェクトについてのラベル表示を消去します。消去するのではなく表示を一時的に場合は、Hideメニューからlabelを選択しましょう。
residues
選択されたオブジェクトについて、アミノ酸と残基番号の情報を(アミノ酸3文字表記)-(残基番号)
の形で表示します(例:MET-1)。Cα原子の上に表示される設定になっています。
residues (one letter)
選択されたオブジェクトについて、アミノ酸と残基番号の情報を(アミノ酸1文字表記)(残基番号)
の形で表示します(例:M1)。Cα原子の上に表示される設定になっています。
chains
選択されたオブジェクトのN末端とC末端の番号を持つ残基(リガンドが存在する場合、それも含む)のそばにchain <chain ID>
の形で表示します(例: chain A)。
segments
すでに使用が廃止されたsegment identifierの情報を、chainsと同様に表示します。詳しくはAppendix: 用語#セグメントを参照してください。今となってはあまり使うことはないと思います。
atom name
原子名の名前でラベルを作成します。.pdb
形式ファイルの場合、ATOM
, HETATM
レコードの13-16列目に含まれる文字列がatom nameとして定義されており、この文字列を返します。
タンパク質アミノ酸やDNA, RNAの場合は命名規則があるため、慣れてしまえばatom nameの意味を理解しやすいと思います。13-14列目には右詰めで原子名を表します。例えば鉄原子は13-14列目を使ってFEの文字が入っていますが、炭素原子は14列目にCの文字を入れ、13列目は空白となっています。しかし、水素原子の場合は13-16列目の4文字分を最大限使って記述する場合があり、この場合は13列目から記入することになっています。
以下ではよく登場するatom nameの一例です。
atom name | 意味 |
---|---|
CA | 主鎖のα位の炭素 |
N | 主鎖のN末端側窒素原子 |
C | 主鎖のC末端側炭素原子 |
O | 主鎖のC末端側酸素原子 |
CB | 側鎖のβ位の炭素 |
CG | 側鎖のγ位の炭素 |
CD | 側鎖のδ位の炭素 |
CE | 側鎖のε位の炭素 |
CZ | 側鎖のζ位の炭素(チロシンなど) |
OH | 側鎖のη位の炭素(チロシンなど) |
主鎖に近い原子の個数順にβ→γ→δ→ε→ζ→ηと付ける命名規則があります。複数原子が存在するようなアミノ酸(ヒスチジン)などはND1, CD1, CE2, NE2というふうに番号をつけて区別します。
element symbol
原子名を表記します。
residue name
3文字表記の残基名を表記します。.pdb
ファイル形式におけるATOM
, HETATM
レコードの18-20列目の文字列を返します。存在しない場合は空白になります(以下同様)。
one letter code
1文字表記の残基名を表記します。
residue identifier
残基のresidue IDを表記します。.pdb
ファイル形式におけるATOM
, HETATM
レコードの23-26列目の文字列を返します。
chain identifier
残基のChain IDを表記します。.pdb
ファイル形式におけるATOM
, HETATM
レコードの22列目の文字列を返します。
segment identifier
残基のSegment IDを表記します。詳しくはAppendix: 用語#セグメントを参照してください。
b-factor
各原子の温度因子(b-factor; temperature facotr)を表記します。.pdb
ファイル形式における61-66列目の文字列を返します。
occupancy
各原子の重み因子を表記します。.pdb
ファイル形式における55-60列目の文字列を返します。結晶中では基本的に構造は繰り返しになるため、どの場所を見ても同じ座標がループしている事が多く、この値は1.00
であることが多いのですが、時々その繰り返し構造単位の中に、1より大きなn通りの配座を持っていることがあります。このとき、ここには0~1の小数値が入ります。例としては PDB: 1A6MのGLN-8が0.57
, 0.43
の値を持つ2通りの配座を持ち、同様にTYR-151も0.50
, 0.50
で2通りの配座を持っています。この場合、PyMOLの表示上でも2通りの残基配座が見えます。画像はPDB: 1A6MのGLN-8の例を示しています。
vdw radius
各原子のファンデルワールス半径の値(Å)を表記します。基本的には原子の種類によって固定の値です。
Other properties
formal charge
各残基についてシステムで定義されている電荷を表記します。例としてLys, Arg残基の場合は+1
を、Glu, Asp残基の場合には-1
を表示します。
partial charge
各原子について計算された部分電荷(partial charge)を表記します。これは通常のpdb
, mmCIF
といった構造ファイルには含まれていないため、0.00
と表示されてしまいますが、pqr
やmol2
ファイル形式をロードしたときに真価を発揮します。
タンパク質構造の場合は構造ファイルをいったんロードした後、APBSプラグインを使った表面電荷表示の手順に従って処理を進めます。このときにオブジェクトパネルにrun01
->prepared01
というオブジェクトが生成されるので、prepared01
オブジェクトのラベル設定でpartial chargeを選択すると図のように部分電荷が表示されるようになります。
より正確に言えば、これはPDB2PQRというソフトウェアによって分子動力学シミュレーションソフトウェアAMBERが配布している力場AmberFFに基づいて指定されており、各アミノ酸の原子ごとに固有の値を指定してくれます。
実態としてはPQRファイルの記述様式にのっとり、x, y, z座標の次にくるchargeの値を表記しています。
mol2形式の場合でも対応しています。
GaussianやGAMESSなどの量子化学計算ソフトウェアで計算した部分電荷を図にして見てみたいときに特に有効です。
elec. radius
partial chargeのときと同様に、PQRファイルのオブジェクトの場合に効果を発揮します。PQRファイル内のx, y, z座標, chargeの次にくるradiusの値を表記しています。vdw radiusとは異なります。
text type, numeric type
PyMOL 2.0以降は廃止されているらしく、使われていないようです(詳細不明)
stereochemistry
PyMOL 2.2から実装されました。schrodingerのソフトまたはrdkitモジュールのインストールが求められるようです。不斉炭素原子の部分にラベルを置いてくれる機能?
atom identifiers
rank
rankを表記します。rankとは構造ファイルの上から順にATOM
, HETATM
レコードを取得したときの通し番号のことであり、これのみ0始まりとなっています。
“rank” selects atoms based on their position in the source file, starting with zero as the first number.
ID
IDを表記します。IDとは構造ファイルから忠実に取得したATOM IDのことであり、pdb
ファイルフォーマットで言えば7-11列目に存在する番号のことを指します。この値は整数値でなければなりません。
“id” selects atoms based on the atom identifier number from the source file, which must be a integer.
index
Indexを表記します。indexはrankと似ていますが、順に表示するのとは異なり、PyMOL内部で番号を順に振り直したのがindexです。例えばある1つのアミノ酸残基があったとき、その残基の中で登場する原子の順番をどのように入れ替えても、index表記ではN→CA→C→O→CB→……の順に若い数字を付けていきます。
“index” selects atoms based on their internal PyMOL object atom indices starting with one as the first number.
色の設定(Color)
色の設定の仕方は自由です、センスの見せ所です……とは言うものの、実はタンパク質の構造を毎日見るであろう構造生物学専門の研究者にとっては、ある暗黙の了解があります。それらを踏まえた上で、PyMOLのカラーリング機能を紹介していきましょう。
色設定の暗黙の了解
以下のルールだけは遵守しましょう。
- 常に酸素原子は赤色, 窒素原子は青色, 硫黄原子はオリーブ(olive)色で表示する。
- 存在する場合、水素原子は白色で表示。
- よって炭素原子は、上記以外の色を使う。
メチオニン残基の表示の例(炭素原子はgreen)
PyMOLには、酸素・窒素・窒素・水素原子を上記の色ルールで描画してくれるメニュー("by element")が存在しますので、これを使うことを強く推奨します。
正確には、PyMOLでは酸素原子はカラーコードで#FF7C7C (255, 76, 76) [1.0, 0.3, 0.3], 窒素原子は#3333FF (51,51,255) [0.2, 0.2, 1.0], 硫黄原子は#E7C640 (231, 198, 64) [0.9, 0.775, 0.25]がデフォルトで割り当てられているため、用意されているカラーパレットを使う限りにはこれらの色と完全にかぶることはないのですが、それでもこれらに近い色を使うと紛らわしいので、使用は控えましょう。また、以下で見るように、用意されているカラーパレットの中にはすべての原子を同一で塗るものもあるので、どうしてもそれらの色を使いたい場合は、そのカラーパレットを選択した後に"by element"メニューの一番上のカラーリング(通称"color by hetetoatom")を選択してあげましょう。
by element
メニューを開いていただけると一目瞭然、C(炭素)の色だけが変わっており、H, N, O, S, 他にも様々な原子について、「暗黙の了解」の色で固定されています。反対に炭素原子の色を自由に選べることで、多量体タンパク質や大きな複合体に対しても自由に色を塗り分けられることができます。基本的には、このカラーパレットから選びましょう。
見落としがちですが、下の方にあるset 2〜set 6にも、様々な色が用意されています。set 6のみ水素原子の色が白色でないものが用意されていますが、あまり使うことはないでしょう。
一番上のメニューではCが表示されておらず、HNOSと書かれていますが、これは炭素以外の原子の色を既定色に変更するというとても便利なカラーパレットです("color by heteroatom")。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
util.cnc 1alk # color by heteroatom
by chain
by chain (elem C | */CA, | 無印)
`1つの生体分子オブジェクト内に複数のchainが存在している場合、各chainごとに異なる色で塗り分けてくれます。
elem C
の場合、チェイン内の全炭素原子に対して色の変更を行い、他の種類の原子には色の変更を行いません。*/CA
の場合、主鎖のCα原子のみ色の変更を行い、残りの原子には色の変更を行いません。無印
は全原子に対して色の変更を行います。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
util.color_chains("(1alk and elem C)") # elem C
util.color_chains("(1alk and name CA)") # */CA
util.color_chains("(1alk)") # 無印
chainbows
各chainについて、N末端(5'末端)からC末端(3'末端)にかけて青色から赤色のきれいなグラデーションができるように色を塗り分けてくれます。タンパク質の場合、この配色ならば、表示された色からアミノ酸配列の位置と構造上での位置の対応関係を把握しやすいため、この配色になっている論文を見たことがある方も多いでしょう。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# どちらでもOK
util.chainbow 1alk
util.chainbow("(1alk)")
by segi (elem C | 無印)
segment identifierによる色分けを行います。
あまり詳しく調べていないのですが、segment identifierは現在仕様が廃止されつつあるのと、カラーリングが赤・青なので、あまり使うことはないでしょう。
by ss (By Secondary Structure)
タンパク質の二次構造(ヘリックス・シート・ループ)構造を基準に色分けしてくれます。自由に選びましょう。
コマンドで行う場合で、ヘリックスを赤、シートを黄、それ以外を緑に塗りたいときは、以下のように打てばOKです。
color red, ss h
color yellow, ss s
color green, ss l+''
または、
util.cbss("1alk","red","yellow","green") # オブジェクト1alkについて行いたい場合
by rep (By Representation)
表示形式(representation)ごとに色分けを表示させることができます。これ以外の他のメニューからの色変更は、全表示形式が一括で色変更されてしまうので、うまく使い分けましょう。例えば、by chainで緑・青に色分けをした後に[show]→[surface]としてsurface表示をした状態ですと、
という表示になりますが(コマンドでset transparency, 0.5
とし、Surface表示の透明度を変更しています。)、続いて[by rep]→[surface]→[grays]→[white]とすると
このようにSurface表示だけ白くすることができます。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# どちらでもOK
set surface_color, white, 1alk
cmd.set("surface_color", "white", '1alk', quiet=0)
quiet=1
とすると処理終了時にメッセージがログ欄に表示されなくなります(プログラミング用)。surface_color
の部分をline
やcartoon
などに変更すればその表示形式に関わる色のみ変更できます。
spectrum
rainbow (elem C | */CA, | 無印)
オブジェクト全体を虹色表示してくれます。[by chain]の[chainbow]と違い、chainごとに虹色グラデーションをつけてくれるわけではないことに注意してください。elem C
, */CA
, 無印
の意味は上と同様です。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# elemCの場合。どちらでもOK。
spectrum count, selection=1alk and elem C
cmd.spectrum("count",selection="(1alk)&elem C")
# */CAの場合
spectrum count, selection=1alk&*/CA
cmd.spectrum("count",selection="(1alk)&*/CA")
# 無印
spectrum count, selection=1alk, byres=1
cmd.spectrum("count",selection="1alk",byres=1)
b-factors (無印 | */CA)
結晶構造解析法で構造決定された構造ファイルの場合、b-factor(温度因子) という値が各原子に対して割り当てられています。簡単に言えば、この値は その原子のゆらぎやすさ を表しており、概して分子内部に存在している原子ほど値が小さく、外側に存在する原子ほど大きくなっています。この色表示ではb-factorの値が小さいほど青色に、大きいほど赤色になるよう表示されます。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# 無印の場合。どちらでもOK。
spectrum b, selection=1alk, quiet=0
cmd.spectrum("b", selection=("1alk"), quiet=0)
# */CAの場合。どちらでもOK。
spectrum b, selection=1alk&*/CA, quiet=0
cmd.spectrum("b", selection="((1alk)&*/CA)", quiet=0)
表示形式のプリセットの中には、b-factorごとに色と太さを変えてくれるオプションもあります。
area (molecular | solvent)
残基あたりのsurface area(表面積)を計算し、それに応じた値でグラデーション色付けをしてくれます。
プログラムの仕様上はget_area
コマンドを走らせて、その値に応じた色付けを行っているようです。しかし、solventの方も含めて、かなり雑な計算なのでまったく厳密ではないようです(参考:https://pymolwiki.org/index.php/Get_Area)。Solvent accessbile surface areaを計算したい場合は、別の厳密なソフトウェアで計算した値を使うことを推奨します。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# molecularの場合(デフォルト)。
util.color_by_area("1alk","molecular")
# solventの場合
util.color_by_area("1alk","solvent")
auto (elem C | all | by obj (elem C) | by obj)
自動で色付けをしてくれます。複数の生体分子オブジェクトがPyMOL上で開かれている場合に有効です。上2つは、押すたびに色が入れ替わっていきます。緑→シアン→黄→紫……の順に入れ替わります。
下2つのby obj
がついているものはロードされている生体分子オブジェクトの上から順に色を緑→シアン→黄→紫……の順で塗り分けてくれます。特に、all
を選択してby obj
を押せば一発で見慣れた色分けになってくれるので便利です。
コマンド入力はこちら(全オブジェクトについて行う場合)
cmd.color("auto","(all) and elem C")
cmd.color("auto","all")
util.color_objs("(all and elem C)",_self=cmd)
util.color_objs("(all)",_self=cmd)
auto以下に存在する色分けメニューについて
autoメニューの下には様々なカラーパレットがあります。自由に選択して好きな色を選びましょう。全表示形式(line, stick, surface...)について同一の色を適用します。
コマンド入力はこちら(オブジェクト1alk
について赤色で塗る場合)
# PyMOL 2.3時代まで
util.color_deep("red", '1alk', 0)
# PyMOL 2.4以降(予定)
color_deep red, 1alk
分子構造の表示形式のON/OFF (Show and Hide)
タンパク質の構造情報をロードしたとき、デフォルト設定では、20種類のアミノ酸についてはCartoon表示形式と呼ばれる漫画風な表現形式になっています。このCartoon表示形式では、αヘリックスを形成している部分については大きな螺旋で描かれ、βストランド(βシート)を形成している部分については、進行方向に向かって矢印が伸びる表現で描かれています。
タンパク質を構成するアミノ酸を1つ1つ強調して見てみたい場合には、Cartoon, Line, Stick, Ribbon, Sphere, Dot, Surface, Mesh 表示などの、他の表示形式をONにするという操作を行います。この表示形式の設定は、各オブジェクト構造について個別に行います。例えば、先程ロードした1alkのタンパク質オブジェクトについて他の表示形式をONにしたい場合は、図のように、1alkのSマーク部分(図の赤四角部分のボタン) をクリックします。反対に、OFFにしたい場合はHマーク部分(図の青四角部分のボタン) を押し、各表示形式を選択することでOFFになります。
各表示形式のサンプルを以下に示します。
-
Cartoon表示
- タンパク質やDNA・RNAを表示するときにおすすめです。タンパク質の場合はαヘリックスやβシートが先述のように螺旋や矢印で示されます。DNA/RNAが存在する場合には、各塩基の概形や5'末端→3'末端のつながりが強調して表示されます。
-
Line表示
- 各原子間の結合が細い線で表示されます。上の図では、左にLine表示だけをONにしたものを、右にCartoon表示形式をLine表示とともにONにした場合を右図に示しています(以降、見やすくするためにCartoon表示をONにした上で、他の表示形式を載せます)。
- 各原子は構造情報ファイルの座標のATOMまたはHETATMレコードに書かれている座標情報(\( x, y, z \)の3次元ベクトル)をもとにプロットされ、各原子座標の距離が一定以内にあれば、自動的にその近い2点が直線で結ばれて表示される仕様となっていることに気をつけてください。
-
Stick表示
- 各原子間の結合がLine表示よりも太いStickで表示されます。Stickは円筒状に表現されます。
-
Ribbon表示
- タンパク質または核酸の鎖部分のみを単純な線で表現する形式です。
-
Sphere表示
- 各原子を大きな球体で表現します。Line, Stick表示と異なり、各原子間は直線で結ばれません。
-
Dot表示
- Sphere表示の表面を点で表現したような形式です。
-
Surface表示
- 各原子の表面を滑らかに描画する形式です。分子の大きさによっては、レンダリングに少し時間がかかります。
-
Mesh表示
- Surface表示と似ていますが、表面の描画を網掛けで表現します。
ラベルの設定(Label)
ラベルを利用することで、分子の周辺に文字を表示させることができます。活性部位周辺に存在する残基の名前と番号を表示させるだけでなく、任意の文字列を表示させることができます。
分子構造の表示形式のON/OFF (Show and Hide)のときと同様に、オブジェクトパネルから各オブジェクトに対して個別にラベルの設定を行うことができます。特に、選択範囲(sele)
に対して表示させることが多いでしょう。
ラベルの設定変更はGUIの上部メニューから、Setting -> Labelのところにあり、ラベルの表示サイズやフォント指定、色の指定などが可能です。下記のサンプルではフォントサイズを28にしてあります。
ラベルの位置変更は3-Button Editing Modeにしてから、ラベルの上でCtrl(macOSの場合はCommand)を押しながら左クリックでドラッグさせることで任意の位置に移動させることができます。下の例ではASP-101を右に移動させています。
clear
すでに表示されているそのオブジェクトについてのラベル表示を消去します。消去するのではなく表示を一時的に場合は、Hideメニューからlabelを選択しましょう。
residues
選択されたオブジェクトについて、アミノ酸と残基番号の情報を(アミノ酸3文字表記)-(残基番号)
の形で表示します(例:MET-1)。Cα原子の上に表示される設定になっています。
residues (one letter)
選択されたオブジェクトについて、アミノ酸と残基番号の情報を(アミノ酸1文字表記)(残基番号)
の形で表示します(例:M1)。Cα原子の上に表示される設定になっています。
chains
選択されたオブジェクトのN末端とC末端の番号を持つ残基(リガンドが存在する場合、それも含む)のそばにchain <chain ID>
の形で表示します(例: chain A)。
segments
すでに使用が廃止されたsegment identifierの情報を、chainsと同様に表示します。詳しくはAppendix: 用語#セグメントを参照してください。今となってはあまり使うことはないと思います。
atom name
原子名の名前でラベルを作成します。.pdb
形式ファイルの場合、ATOM
, HETATM
レコードの13-16列目に含まれる文字列がatom nameとして定義されており、この文字列を返します。
タンパク質アミノ酸やDNA, RNAの場合は命名規則があるため、慣れてしまえばatom nameの意味を理解しやすいと思います。13-14列目には右詰めで原子名を表します。例えば鉄原子は13-14列目を使ってFEの文字が入っていますが、炭素原子は14列目にCの文字を入れ、13列目は空白となっています。しかし、水素原子の場合は13-16列目の4文字分を最大限使って記述する場合があり、この場合は13列目から記入することになっています。
以下ではよく登場するatom nameの一例です。
atom name | 意味 |
---|---|
CA | 主鎖のα位の炭素 |
N | 主鎖のN末端側窒素原子 |
C | 主鎖のC末端側炭素原子 |
O | 主鎖のC末端側酸素原子 |
CB | 側鎖のβ位の炭素 |
CG | 側鎖のγ位の炭素 |
CD | 側鎖のδ位の炭素 |
CE | 側鎖のε位の炭素 |
CZ | 側鎖のζ位の炭素(チロシンなど) |
OH | 側鎖のη位の炭素(チロシンなど) |
主鎖に近い原子の個数順にβ→γ→δ→ε→ζ→ηと付ける命名規則があります。複数原子が存在するようなアミノ酸(ヒスチジン)などはND1, CD1, CE2, NE2というふうに番号をつけて区別します。
element symbol
原子名を表記します。
residue name
3文字表記の残基名を表記します。.pdb
ファイル形式におけるATOM
, HETATM
レコードの18-20列目の文字列を返します。存在しない場合は空白になります(以下同様)。
one letter code
1文字表記の残基名を表記します。
residue identifier
残基のresidue IDを表記します。.pdb
ファイル形式におけるATOM
, HETATM
レコードの23-26列目の文字列を返します。
chain identifier
残基のChain IDを表記します。.pdb
ファイル形式におけるATOM
, HETATM
レコードの22列目の文字列を返します。
segment identifier
残基のSegment IDを表記します。詳しくはAppendix: 用語#セグメントを参照してください。
b-factor
各原子の温度因子(b-factor; temperature facotr)を表記します。.pdb
ファイル形式における61-66列目の文字列を返します。
occupancy
各原子の重み因子を表記します。.pdb
ファイル形式における55-60列目の文字列を返します。結晶中では基本的に構造は繰り返しになるため、どの場所を見ても同じ座標がループしている事が多く、この値は1.00
であることが多いのですが、時々その繰り返し構造単位の中に、1より大きなn通りの配座を持っていることがあります。このとき、ここには0~1の小数値が入ります。例としては PDB: 1A6MのGLN-8が0.57
, 0.43
の値を持つ2通りの配座を持ち、同様にTYR-151も0.50
, 0.50
で2通りの配座を持っています。この場合、PyMOLの表示上でも2通りの残基配座が見えます。画像はPDB: 1A6MのGLN-8の例を示しています。
vdw radius
各原子のファンデルワールス半径の値(Å)を表記します。基本的には原子の種類によって固定の値です。
Other properties
formal charge
各残基についてシステムで定義されている電荷を表記します。例としてLys, Arg残基の場合は+1
を、Glu, Asp残基の場合には-1
を表示します。
partial charge
各原子について計算された部分電荷(partial charge)を表記します。これは通常のpdb
, mmCIF
といった構造ファイルには含まれていないため、0.00
と表示されてしまいますが、pqr
やmol2
ファイル形式をロードしたときに真価を発揮します。
タンパク質構造の場合は構造ファイルをいったんロードした後、APBSプラグインを使った表面電荷表示の手順に従って処理を進めます。このときにオブジェクトパネルにrun01
->prepared01
というオブジェクトが生成されるので、prepared01
オブジェクトのラベル設定でpartial chargeを選択すると図のように部分電荷が表示されるようになります。
より正確に言えば、これはPDB2PQRというソフトウェアによって分子動力学シミュレーションソフトウェアAMBERが配布している力場AmberFFに基づいて指定されており、各アミノ酸の原子ごとに固有の値を指定してくれます。
実態としてはPQRファイルの記述様式にのっとり、x, y, z座標の次にくるchargeの値を表記しています。
mol2形式の場合でも対応しています。
GaussianやGAMESSなどの量子化学計算ソフトウェアで計算した部分電荷を図にして見てみたいときに特に有効です。
elec. radius
partial chargeのときと同様に、PQRファイルのオブジェクトの場合に効果を発揮します。PQRファイル内のx, y, z座標, chargeの次にくるradiusの値を表記しています。vdw radiusとは異なります。
text type, numeric type
PyMOL 2.0以降は廃止されているらしく、使われていないようです(詳細不明)
stereochemistry
PyMOL 2.2から実装されました。schrodingerのソフトまたはrdkitモジュールのインストールが求められるようです。不斉炭素原子の部分にラベルを置いてくれる機能?
atom identifiers
rank
rankを表記します。rankとは構造ファイルの上から順にATOM
, HETATM
レコードを取得したときの通し番号のことであり、これのみ0始まりとなっています。
“rank” selects atoms based on their position in the source file, starting with zero as the first number.
ID
IDを表記します。IDとは構造ファイルから忠実に取得したATOM IDのことであり、pdb
ファイルフォーマットで言えば7-11列目に存在する番号のことを指します。この値は整数値でなければなりません。
“id” selects atoms based on the atom identifier number from the source file, which must be a integer.
index
Indexを表記します。indexはrankと似ていますが、順に表示するのとは異なり、PyMOL内部で番号を順に振り直したのがindexです。例えばある1つのアミノ酸残基があったとき、その残基の中で登場する原子の順番をどのように入れ替えても、index表記ではN→CA→C→O→CB→……の順に若い数字を付けていきます。
“index” selects atoms based on their internal PyMOL object atom indices starting with one as the first number.
色の設定(Color)
色の設定の仕方は自由です、センスの見せ所です……とは言うものの、実はタンパク質の構造を毎日見るであろう構造生物学専門の研究者にとっては、ある暗黙の了解があります。それらを踏まえた上で、PyMOLのカラーリング機能を紹介していきましょう。
色設定の暗黙の了解
以下のルールだけは遵守しましょう。
- 常に酸素原子は赤色, 窒素原子は青色, 硫黄原子はオリーブ(olive)色で表示する。
- 存在する場合、水素原子は白色で表示。
- よって炭素原子は、上記以外の色を使う。
メチオニン残基の表示の例(炭素原子はgreen)
PyMOLには、酸素・窒素・窒素・水素原子を上記の色ルールで描画してくれるメニュー("by element")が存在しますので、これを使うことを強く推奨します。
正確には、PyMOLでは酸素原子はカラーコードで#FF7C7C (255, 76, 76) [1.0, 0.3, 0.3], 窒素原子は#3333FF (51,51,255) [0.2, 0.2, 1.0], 硫黄原子は#E7C640 (231, 198, 64) [0.9, 0.775, 0.25]がデフォルトで割り当てられているため、用意されているカラーパレットを使う限りにはこれらの色と完全にかぶることはないのですが、それでもこれらに近い色を使うと紛らわしいので、使用は控えましょう。また、以下で見るように、用意されているカラーパレットの中にはすべての原子を同一で塗るものもあるので、どうしてもそれらの色を使いたい場合は、そのカラーパレットを選択した後に"by element"メニューの一番上のカラーリング(通称"color by hetetoatom")を選択してあげましょう。
by element
メニューを開いていただけると一目瞭然、C(炭素)の色だけが変わっており、H, N, O, S, 他にも様々な原子について、「暗黙の了解」の色で固定されています。反対に炭素原子の色を自由に選べることで、多量体タンパク質や大きな複合体に対しても自由に色を塗り分けられることができます。基本的には、このカラーパレットから選びましょう。
見落としがちですが、下の方にあるset 2〜set 6にも、様々な色が用意されています。set 6のみ水素原子の色が白色でないものが用意されていますが、あまり使うことはないでしょう。
一番上のメニューではCが表示されておらず、HNOSと書かれていますが、これは炭素以外の原子の色を既定色に変更するというとても便利なカラーパレットです("color by heteroatom")。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
util.cnc 1alk # color by heteroatom
by chain
by chain (elem C | */CA, | 無印)
`1つの生体分子オブジェクト内に複数のchainが存在している場合、各chainごとに異なる色で塗り分けてくれます。
elem C
の場合、チェイン内の全炭素原子に対して色の変更を行い、他の種類の原子には色の変更を行いません。*/CA
の場合、主鎖のCα原子のみ色の変更を行い、残りの原子には色の変更を行いません。無印
は全原子に対して色の変更を行います。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
util.color_chains("(1alk and elem C)") # elem C
util.color_chains("(1alk and name CA)") # */CA
util.color_chains("(1alk)") # 無印
chainbows
各chainについて、N末端(5'末端)からC末端(3'末端)にかけて青色から赤色のきれいなグラデーションができるように色を塗り分けてくれます。タンパク質の場合、この配色ならば、表示された色からアミノ酸配列の位置と構造上での位置の対応関係を把握しやすいため、この配色になっている論文を見たことがある方も多いでしょう。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# どちらでもOK
util.chainbow 1alk
util.chainbow("(1alk)")
by segi (elem C | 無印)
segment identifierによる色分けを行います。
あまり詳しく調べていないのですが、segment identifierは現在仕様が廃止されつつあるのと、カラーリングが赤・青なので、あまり使うことはないでしょう。
by ss (By Secondary Structure)
タンパク質の二次構造(ヘリックス・シート・ループ)構造を基準に色分けしてくれます。自由に選びましょう。
コマンドで行う場合で、ヘリックスを赤、シートを黄、それ以外を緑に塗りたいときは、以下のように打てばOKです。
color red, ss h
color yellow, ss s
color green, ss l+''
または、
util.cbss("1alk","red","yellow","green") # オブジェクト1alkについて行いたい場合
by rep (By Representation)
表示形式(representation)ごとに色分けを表示させることができます。これ以外の他のメニューからの色変更は、全表示形式が一括で色変更されてしまうので、うまく使い分けましょう。例えば、by chainで緑・青に色分けをした後に[show]→[surface]としてsurface表示をした状態ですと、
という表示になりますが(コマンドでset transparency, 0.5
とし、Surface表示の透明度を変更しています。)、続いて[by rep]→[surface]→[grays]→[white]とすると
このようにSurface表示だけ白くすることができます。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# どちらでもOK
set surface_color, white, 1alk
cmd.set("surface_color", "white", '1alk', quiet=0)
quiet=1
とすると処理終了時にメッセージがログ欄に表示されなくなります(プログラミング用)。surface_color
の部分をline
やcartoon
などに変更すればその表示形式に関わる色のみ変更できます。
spectrum
rainbow (elem C | */CA, | 無印)
オブジェクト全体を虹色表示してくれます。[by chain]の[chainbow]と違い、chainごとに虹色グラデーションをつけてくれるわけではないことに注意してください。elem C
, */CA
, 無印
の意味は上と同様です。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# elemCの場合。どちらでもOK。
spectrum count, selection=1alk and elem C
cmd.spectrum("count",selection="(1alk)&elem C")
# */CAの場合
spectrum count, selection=1alk&*/CA
cmd.spectrum("count",selection="(1alk)&*/CA")
# 無印
spectrum count, selection=1alk, byres=1
cmd.spectrum("count",selection="1alk",byres=1)
b-factors (無印 | */CA)
結晶構造解析法で構造決定された構造ファイルの場合、b-factor(温度因子) という値が各原子に対して割り当てられています。簡単に言えば、この値は その原子のゆらぎやすさ を表しており、概して分子内部に存在している原子ほど値が小さく、外側に存在する原子ほど大きくなっています。この色表示ではb-factorの値が小さいほど青色に、大きいほど赤色になるよう表示されます。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# 無印の場合。どちらでもOK。
spectrum b, selection=1alk, quiet=0
cmd.spectrum("b", selection=("1alk"), quiet=0)
# */CAの場合。どちらでもOK。
spectrum b, selection=1alk&*/CA, quiet=0
cmd.spectrum("b", selection="((1alk)&*/CA)", quiet=0)
表示形式のプリセットの中には、b-factorごとに色と太さを変えてくれるオプションもあります。
area (molecular | solvent)
残基あたりのsurface area(表面積)を計算し、それに応じた値でグラデーション色付けをしてくれます。
プログラムの仕様上はget_area
コマンドを走らせて、その値に応じた色付けを行っているようです。しかし、solventの方も含めて、かなり雑な計算なのでまったく厳密ではないようです(参考:https://pymolwiki.org/index.php/Get_Area)。Solvent accessbile surface areaを計算したい場合は、別の厳密なソフトウェアで計算した値を使うことを推奨します。
コマンド入力はこちら(オブジェクト1alk
について行う場合)
# molecularの場合(デフォルト)。
util.color_by_area("1alk","molecular")
# solventの場合
util.color_by_area("1alk","solvent")
auto (elem C | all | by obj (elem C) | by obj)
自動で色付けをしてくれます。複数の生体分子オブジェクトがPyMOL上で開かれている場合に有効です。上2つは、押すたびに色が入れ替わっていきます。緑→シアン→黄→紫……の順に入れ替わります。
下2つのby obj
がついているものはロードされている生体分子オブジェクトの上から順に色を緑→シアン→黄→紫……の順で塗り分けてくれます。特に、all
を選択してby obj
を押せば一発で見慣れた色分けになってくれるので便利です。
コマンド入力はこちら(全オブジェクトについて行う場合)
cmd.color("auto","(all) and elem C")
cmd.color("auto","all")
util.color_objs("(all and elem C)",_self=cmd)
util.color_objs("(all)",_self=cmd)
auto以下に存在する色分けメニューについて
autoメニューの下には様々なカラーパレットがあります。自由に選択して好きな色を選びましょう。全表示形式(line, stick, surface...)について同一の色を適用します。
コマンド入力はこちら(オブジェクト1alk
について赤色で塗る場合)
# PyMOL 2.3時代まで
util.color_deep("red", '1alk', 0)
# PyMOL 2.4以降(予定)
color_deep red, 1alk
マウス操作
PyMOLを含む分子描画ソフトウェアの最も重要なユーザーインターフェースがマウス操作です。何はともあれ、PyMOLを使うのであればこれを先に読んでマスターしておきましょう。
PyMOLのマウス操作は、外部デバイスとしてのホイール付きマウスを前提に設計されており、左クリックボタン、右クリックボタンとホイールクリックボタンの3ボタンをすべて使うことがデフォルト設定となっています。しかし、1人1台のノートパソコンを持つことも珍しくなった現在では外部のマウスを接続して使わずに、備え付けのタッチパッドを使って操作することが多くなりました。タッチパッドはPyMOLの求める3ボタン式になっていないことが多く、ホイールボタンが存在していないためPyMOLのユーザーは不便に感じることがあると思います。こうした状況に対応するべく、PyMOLには実は2ボタンモードと1ボタンモードが用意されています。これらのモードの説明を交えつつ、PyMOLのマウス操作について詳しく述べていきます。
操作モード
PyMOLには3ボタンモード、2ボタンモード、1ボタンモードが用意されています。これらのモードは下記のようにさらに細かいモードに分かれます。
- 3ボタンモード
- 3 Button Viewing Mode(初期設定)
- 3 Button Editing Mode
- 3 Button Motions Mode
- 3 Button Lights Mode
- 3 Button All Mode
- 2ボタンモード
- 2 Button Viewing Mode
- 2 Button Editing Mode
- 1ボタンモード
- 1 Button Viewing Mode
3ボタンモードはホイールボタン付きマウスを利用している場合に最も効果を発揮します。2ボタンモードはタッチパッドのみの環境で、Macbookなどを含むノートパソコンではこの設定にしておくことを推奨します。ここで、それぞれのボタンモードの中にViewing, Editingモードなどが存在していることも覚えておきましょう。これらのモード間ではクリック時の操作が異なります。基本的に、表示した分子を観察する場合はViewingモードを、分子の座標に変更を加える場合にはEditingモードを利用します。
各モードがどのようなマウス操作に対応しているかを理解する前に、まずはPyMOL画面の右下のこの部分に着目します。
この赤い四角の部分の一番上にはMouse Mode 3-Button Viewingと書かれています。これは3 Button Viewing Modeと同じ意味です。ここで、赤い四角の範囲のどこかをクリックすると
Mouse Modeが3-Button Editingという表示になりました。これは3 Button Editing Modeに切り替わったことを表しています。また、青い四角の部分も、Picking Atoms (and Joints) に変化しました。最初のうちは、このViewing ModeとEditing Modeの2つについて理解しておけば十分だと思います。Lights ModeとAll Modeについては慣れてきたら試してみましょう。2つのモードは上記の赤い四角の部分を押すことで入れ替えることができます。
この画面についてもう少し詳しく見ていきます。ここにはクリックするマウスボタン(L, M, R, Wheel)と補助キーとの組み合わせ(Shift, Ctrl, Ctrl+Shift...)を組み合わせることで、様々なマウス操作が行えることが英語で書かれています(macOSの場合、CtrlはCommand ⌘ キーです)。最上段は対応するキーを押しながらマウスを動かす操作を表しています。例えば、3-Button Viewing Modeにおいては左クリックを押しながらマウスを動かすことで回転操作(Rota)、ミドルクリック(ホイール)を押しながらマウスを動かすことで並進操作(Move)が行えます。ここの表記は簡単なものですが、もし忘れてしまってもここに着目すれば、操作を思い出すことができるでしょう。
各モードにおける操作一覧
各操作の詳細は次項で示します。macOSではCtrlキーはCommandキー(⌘キー)になります。
3 Button Viewing Mode
左ボタン | ホイールボタン | 右ボタン | ホイールスクロール | |
---|---|---|---|---|
ボタンを押しながらドラッグ | 回転(Rota) | 並進(Move) | ズームイン・アウト(MovZ) | スラビング(Slab) |
shiftキー | 選択範囲に追加(+Box) | 選択範囲から除去(-Box) | クリッピング(Clip) | スラブの移動(MovS) |
Ctrlキー | 並進(Move) | 原子ピッキング(PkAt) | 1原子ピッキング(Pk1) | スラブに対する視点の移動(MvSZ) |
Ctrl+Shiftキー | 選択(sele) | Origin指定(Orig) | クリッピング(Clip) | ズームイン・アウト(MovZ) |
シングルクリック | 選択範囲追加・除去(+/-) | センタリング(Cent) | メニュー表示(Menu) | |
ダブルクリック | メニュー表示(Menu) | - | 原子ピッキング(PkAt) |
3 Button Editing Mode
左ボタン | ホイールボタン | 右ボタン | ホイールスクロール | |
---|---|---|---|---|
ボタンを押しながらドラッグ | 回転(Rota) | 並進(Move) | ズームイン・アウト(MovZ) | スラビング(Slab) |
shiftキー | オブジェクトの回転(RotO) | XY軸方向への移動(MovO) | Z軸方向への移動(MvOZ) | スラブの移動(MovS) |
Ctrlキー | 原子の移動(MovA) | 選択範囲追加・除去(+/-) | 二面角をピッキング(PkTB) | スラブに対する視点の移動(MvSZ) |
Ctrl+Shiftキー | Z軸方向への移動(MvAZ) | Origin指定(Orig) | クリッピング(Clip) | ズームイン・アウト(MovZ) |
シングルクリック | 原子ピッキング(PkAt) | センタリング(Cent) | メニュー表示(Menu) | |
ダブルクリック | 原子の移動(MovA) | ドラッグモード(DrgM) | 二面角をピッキング(PkTB) |
2 Button Viewing Mode
左ボタン | ホイールボタン | 右ボタン | ホイールスクロール | |
---|---|---|---|---|
ボタンを押しながらドラッグ | 回転(Rota) | -- | ズームイン・アウト(MovZ) | -- |
shiftキー | 1原子ピッキング(Pk1) | -- | クリッピング(Clip) | -- |
Ctrlキー | 並進(Move) | -- | 原子ピッキング(PkAt) | -- |
Ctrl+Shiftキー | 選択(sele) | -- | センタリング(Cent) | -- |
シングルクリック | 原子ピッキング(PkAt) | -- | メニュー表示(Menu) | |
ダブルクリック | メニュー表示(Menu) | -- | センタリング(Cent) |
操作の詳細
回転 (Rota)
マウスの左ボタンを押しながらマウスを動かす(ドラッグ) すると、表示されている分子を回転させることができます。
並進 (Move)
マウスのホイールボタンを押しながらドラッグ すると、表示されている分子を視点に対して平行に移動させることができます。
ズームイン・アウト (MovZ)
マウスの右ボタンを押しながらマウスを前後にドラッグ、またはCtrlとShiftキーを押しながらマウスのホイールを上下 させると、分子構造を拡大・縮小することができます。
選択 (+/-)
表示されているオブジェクトの原子の上でマウスの左ボタンを押す と、四角のマークが付きます。
この四角マークは、現在選択されている原子の範囲を示しています。この左クリックによる選択はクリックするたびに選択範囲に追加され、もう一度押すと選択範囲から外されます。
選択範囲に追加/除去 (+Box/-Box)
選択範囲の追加または除去を行います。+Box(Shiftを押しながらマウスの左クリック&ドラッグ) では画面上に黒い四角が現れ、ボタンを離すと、その四角で囲まれた部分が選択範囲に追加されます。反対に、-Box(Shiftを押しながらマウスのホイールクリック&ドラッグ) では四角で囲んだ範囲を選択範囲から除去することができます。同様の操作を繰り返すことも可能です。
センタリング (Cent)
表示されているオブジェクトの原子の上でマウスのホイールボタンを押す と、その原子が画面中央に来るように視点が移動します。また、回転操作の中心もその点に移動します。
Origin指定 (Orig)
表示されているオブジェクトの原子の上でCtrlとShiftを押しながらマウスのホイールボタンを押す と、その原子を回転中心の原点(origin)に指定することができます。上記センタリングのときと異なり、視点は移動しません。
メニュー表示 (Menu)
マウスの左ボタンをダブルクリック または 右ボタンをクリック で、メニューを開きます。メニュー内容はクリックした位置によって内容が変化します。
何もない箇所でクリックすると[Main Pop-Up]メニューが表示されます。
オブジェクトの上でクリックすると、クリックした場所に存在する原子についての設定変更を行うメニューが表示されます。
原子ピッキング(PkAt/Pk1)
オブジェクト上の原子の上でCtrlボタンを押しながらホイールクリック、またはマウス右ボタンのダブルクリックを行うと、その原子をピッキングした状態になります(PkAt)。
このピッキング状態は先述の選択範囲とは異なる選択形式で、図のような球体のマーカーが付きます。このピッキングは画面上に同時に4原子まで選択することができ、各ピッキングマーカーは図のように二重、三重、四重の球体マーカーで示されます。
Ctrlボタンを押しながら右クリック (Pk1) の場合では、上の操作と異なり、1つめの原子ピッキングのみを行います。ピッキングされた原子が2つ、3つ、4つになると、自動でそのピッキングされた原子についての距離(distance)、角度(angle)、二面角(dihedral) を表示してくれます。
クリッピング(Clip)
Viewing ModeでShiftとマウスの右ボタン(またはCtrl+Shift+マウス右ボタン)を押しながらマウスを上下左右に動かす と、分子の内部を覗けたり霧をかけたりすることができます。分子内部の一部の領域を強調した画像を取りたいときに作ります。
この機能は2枚のクリッピング平面(Clipping plane) によって調節しています。マウスの上下の動きは前面のクリッピング平面(front clipping plane)の位置を、左右の動きは背面のクリッピング平面(rear clipping plane)の位置を調節できます
図解
画面上にはこの2枚のClipping Planeの間に存在する領域だけが表示されます。
マウスを画面下に移動させるとfront clipping planeは視点から見て奥へ移動し、分子の内部が見えるようになります。反対に、マウスを上へ移動させると、front clipping planeは手前に移動します。
マウスを左に移動させるとrear clipping planeが視点から見て奥へ移動します。反対に手前に移動させると、rear clipping planeが手前に移動し、分子の奥側が霧がかかって徐々に見えなくなります。
霧は画面上部のメニューの[Display]→[Depth Cue(Fogging)]のチェックでON/OFFを選択できます(デフォルトはONです)。
スラビング(Slab)
スラブとは英語で厚板、平板という名詞、または「平板にする」という動詞です。PyMOLにおいてスラブ(Slab、Visible Slabとも)とは、上述の2枚のクリッピング平面の間に挟まれた可視化領域のことを指します。
Viewing Modeでマウスホイールを回転させる ことで、スラブの厚さを調節することができます。クリッピングとともに、分子構造の内部領域をみたい時に有用です。
画面上部メニューの[Display]→[Clip]には[8 Angstroam Slab]を始めとして30 Åまでの厚さのスラブを選ぶことができます。[Nothing]を選択した場合には、全原子が含まれるように自動的にスラブの厚みを調節します。
スラブの移動(MovS)
Viewing ModeでShiftを押しながらマウスホイールを回転させる と、スラブ領域を、その厚みを保ったまま手前・奥に移動させることができます。効果を実感したい場合は、例として[8 Angstroam Slab]設定をした直後に使ってみるとわかりやすいでしょう。
スラブに対する視点の移動(MvSZ)
Viewing ModeでCtrlを押しながらマウスホイールを回転させる と、スラブ平面に対して視点を移動させることができます。視点がスラブ内部に入ることもできます。
Editing Mode専用コマンド
以下ではEditing Modeで扱う操作方法について記述します。Editing Modeはオブジェクト・原子の座標自体に変更を加えることが多いため、このモードで操作するときは注意が必要です。もし誤って座標を動かしてしまった場合、数回であればCtrl-zでUndo(もとに戻す)ことが可能です。
オブジェクトの回転(RotO)・XY軸方向への移動(MovO)・Z軸方向への移動(MvOZ)
EditingモードでShiftキーとマウスの左ボタン・ホイールボタン・右ボタンを押しながらマウスを移動させることで、オブジェクトの座標に対しそれぞれ回転・XY軸への並進・Z軸へ移動操作を行うことができます。特に、複数のオブジェクトが存在する場合に効果がわかりやすいです。以下の例では緑色と青色で別々のオブジェクトとした上で、青色オブジェクトに対して操作を適用しています。
原子の移動(MovA)・Z軸方向への移動(MvAZ)
EditingモードでCtrlキーとマウスの左ボタンを押しながらマウスを移動させることで、マウスカーソル上に存在する原子の座標を移動させることができます。Ctrl+Shiftキーとマウスの左ボタンを押しながらだとZ軸方向への移動が行えます。下の例では、オレンジ色の原子(リン酸イオンPO4のリン原子)について操作を適用しています。
フラグメントの回転(RotF)・移動(MovF)・Z軸方向への移動(MvFZ)
Editingモードで特定の原子を左クリックすると原子がピックされた状態になります。このとき操作メニューが変化して、MovF, MvFZが現れるようになります。RotF(Shift+左クリック)とMovF(Shift+ホイールクリック)はピックされた原子と結合している原子のまとまり(フラグメント)を回転させたり、平行移動させたりすることができます。この操作は必ず選択されたフラグメントの上でShiftキーとクリック入力を行う必要があります。
MvFZ(Shift+右クリックしながら上下にドラッグ)はピックされたフラグメントを手前または奥に移動させることができます。
二面角をピッキング(PkTB)
Editingモードで描画されている結合に対してCtrlキーとマウスの右ボタンを押しながら移動させることで、結合の二面角を変更することができます。
2原子を結ぶ結合線上のうち、それぞれの原子に近い位置で操作を実行することで、それぞれ回転される対象が異なることに注意します。 図において、結合線の左半分にマウスカーソルを置いた状態で操作を適用した場合はこの残基の先端のみが回転します。
しかし、結合線の右半分にカーソルを置いた状態で操作を適用すると、タンパク質の方が回転します。
分子構造をドラッグモードにする(DrgM)
Editingモードでホイールボタンをダブルクリックすると、オブジェクト内のひとつながりの分子構造(Molecule)について"drag"状態にします。このドラッグモードではこれまでのカメラ操作のような感覚で分子の座標を変更することが可能になります。
このドラッグモードにするとオブジェクトパネルの下側に専用のメニューが現れます。PDB: 1alkの場合で図の右側の構造についてこの操作を実行すると、Mgイオンを除いた右半分のChainだけが選択された状態になります。これは上述のひとつながりの分子構造に対してのみ適用されるからです。
さらに、このドラッグモードではShiftキーを押しながらのマウス操作方法がRotD, MovD, MvDZに変化します。このDはDraggedを表しており、ドラッグモードとなっている選択範囲のみに対してそれぞれ回転操作・XY軸方向への移動・Z軸方向への移動を行うことができます。
操作モード
PyMOLには3ボタンモード、2ボタンモード、1ボタンモードが用意されています。これらのモードは下記のようにさらに細かいモードに分かれます。
- 3ボタンモード
- 3 Button Viewing Mode(初期設定)
- 3 Button Editing Mode
- 3 Button Motions Mode
- 3 Button Lights Mode
- 3 Button All Mode
- 2ボタンモード
- 2 Button Viewing Mode
- 2 Button Editing Mode
- 1ボタンモード
- 1 Button Viewing Mode
3ボタンモードはホイールボタン付きマウスを利用している場合に最も効果を発揮します。2ボタンモードはタッチパッドのみの環境で、Macbookなどを含むノートパソコンではこの設定にしておくことを推奨します。ここで、それぞれのボタンモードの中にViewing, Editingモードなどが存在していることも覚えておきましょう。これらのモード間ではクリック時の操作が異なります。基本的に、表示した分子を観察する場合はViewingモードを、分子の座標に変更を加える場合にはEditingモードを利用します。
各モードがどのようなマウス操作に対応しているかを理解する前に、まずはPyMOL画面の右下のこの部分に着目します。
この赤い四角の部分の一番上にはMouse Mode 3-Button Viewingと書かれています。これは3 Button Viewing Modeと同じ意味です。ここで、赤い四角の範囲のどこかをクリックすると
Mouse Modeが3-Button Editingという表示になりました。これは3 Button Editing Modeに切り替わったことを表しています。また、青い四角の部分も、Picking Atoms (and Joints) に変化しました。最初のうちは、このViewing ModeとEditing Modeの2つについて理解しておけば十分だと思います。Lights ModeとAll Modeについては慣れてきたら試してみましょう。2つのモードは上記の赤い四角の部分を押すことで入れ替えることができます。
この画面についてもう少し詳しく見ていきます。ここにはクリックするマウスボタン(L, M, R, Wheel)と補助キーとの組み合わせ(Shift, Ctrl, Ctrl+Shift...)を組み合わせることで、様々なマウス操作が行えることが英語で書かれています(macOSの場合、CtrlはCommand ⌘ キーです)。最上段は対応するキーを押しながらマウスを動かす操作を表しています。例えば、3-Button Viewing Modeにおいては左クリックを押しながらマウスを動かすことで回転操作(Rota)、ミドルクリック(ホイール)を押しながらマウスを動かすことで並進操作(Move)が行えます。ここの表記は簡単なものですが、もし忘れてしまってもここに着目すれば、操作を思い出すことができるでしょう。
各モードにおける操作一覧
各操作の詳細は次項で示します。macOSではCtrlキーはCommandキー(⌘キー)になります。
3 Button Viewing Mode
左ボタン | ホイールボタン | 右ボタン | ホイールスクロール | |
---|---|---|---|---|
ボタンを押しながらドラッグ | 回転(Rota) | 並進(Move) | ズームイン・アウト(MovZ) | スラビング(Slab) |
shiftキー | 選択範囲に追加(+Box) | 選択範囲から除去(-Box) | クリッピング(Clip) | スラブの移動(MovS) |
Ctrlキー | 並進(Move) | 原子ピッキング(PkAt) | 1原子ピッキング(Pk1) | スラブに対する視点の移動(MvSZ) |
Ctrl+Shiftキー | 選択(sele) | Origin指定(Orig) | クリッピング(Clip) | ズームイン・アウト(MovZ) |
シングルクリック | 選択範囲追加・除去(+/-) | センタリング(Cent) | メニュー表示(Menu) | |
ダブルクリック | メニュー表示(Menu) | - | 原子ピッキング(PkAt) |
3 Button Editing Mode
左ボタン | ホイールボタン | 右ボタン | ホイールスクロール | |
---|---|---|---|---|
ボタンを押しながらドラッグ | 回転(Rota) | 並進(Move) | ズームイン・アウト(MovZ) | スラビング(Slab) |
shiftキー | オブジェクトの回転(RotO) | XY軸方向への移動(MovO) | Z軸方向への移動(MvOZ) | スラブの移動(MovS) |
Ctrlキー | 原子の移動(MovA) | 選択範囲追加・除去(+/-) | 二面角をピッキング(PkTB) | スラブに対する視点の移動(MvSZ) |
Ctrl+Shiftキー | Z軸方向への移動(MvAZ) | Origin指定(Orig) | クリッピング(Clip) | ズームイン・アウト(MovZ) |
シングルクリック | 原子ピッキング(PkAt) | センタリング(Cent) | メニュー表示(Menu) | |
ダブルクリック | 原子の移動(MovA) | ドラッグモード(DrgM) | 二面角をピッキング(PkTB) |
2 Button Viewing Mode
左ボタン | ホイールボタン | 右ボタン | ホイールスクロール | |
---|---|---|---|---|
ボタンを押しながらドラッグ | 回転(Rota) | -- | ズームイン・アウト(MovZ) | -- |
shiftキー | 1原子ピッキング(Pk1) | -- | クリッピング(Clip) | -- |
Ctrlキー | 並進(Move) | -- | 原子ピッキング(PkAt) | -- |
Ctrl+Shiftキー | 選択(sele) | -- | センタリング(Cent) | -- |
シングルクリック | 原子ピッキング(PkAt) | -- | メニュー表示(Menu) | |
ダブルクリック | メニュー表示(Menu) | -- | センタリング(Cent) |
操作の詳細
回転 (Rota)
マウスの左ボタンを押しながらマウスを動かす(ドラッグ) すると、表示されている分子を回転させることができます。
並進 (Move)
マウスのホイールボタンを押しながらドラッグ すると、表示されている分子を視点に対して平行に移動させることができます。
ズームイン・アウト (MovZ)
マウスの右ボタンを押しながらマウスを前後にドラッグ、またはCtrlとShiftキーを押しながらマウスのホイールを上下 させると、分子構造を拡大・縮小することができます。
選択 (+/-)
表示されているオブジェクトの原子の上でマウスの左ボタンを押す と、四角のマークが付きます。
この四角マークは、現在選択されている原子の範囲を示しています。この左クリックによる選択はクリックするたびに選択範囲に追加され、もう一度押すと選択範囲から外されます。
選択範囲に追加/除去 (+Box/-Box)
選択範囲の追加または除去を行います。+Box(Shiftを押しながらマウスの左クリック&ドラッグ) では画面上に黒い四角が現れ、ボタンを離すと、その四角で囲まれた部分が選択範囲に追加されます。反対に、-Box(Shiftを押しながらマウスのホイールクリック&ドラッグ) では四角で囲んだ範囲を選択範囲から除去することができます。同様の操作を繰り返すことも可能です。
センタリング (Cent)
表示されているオブジェクトの原子の上でマウスのホイールボタンを押す と、その原子が画面中央に来るように視点が移動します。また、回転操作の中心もその点に移動します。
Origin指定 (Orig)
表示されているオブジェクトの原子の上でCtrlとShiftを押しながらマウスのホイールボタンを押す と、その原子を回転中心の原点(origin)に指定することができます。上記センタリングのときと異なり、視点は移動しません。
メニュー表示 (Menu)
マウスの左ボタンをダブルクリック または 右ボタンをクリック で、メニューを開きます。メニュー内容はクリックした位置によって内容が変化します。
何もない箇所でクリックすると[Main Pop-Up]メニューが表示されます。
オブジェクトの上でクリックすると、クリックした場所に存在する原子についての設定変更を行うメニューが表示されます。
原子ピッキング(PkAt/Pk1)
オブジェクト上の原子の上でCtrlボタンを押しながらホイールクリック、またはマウス右ボタンのダブルクリックを行うと、その原子をピッキングした状態になります(PkAt)。
このピッキング状態は先述の選択範囲とは異なる選択形式で、図のような球体のマーカーが付きます。このピッキングは画面上に同時に4原子まで選択することができ、各ピッキングマーカーは図のように二重、三重、四重の球体マーカーで示されます。
Ctrlボタンを押しながら右クリック (Pk1) の場合では、上の操作と異なり、1つめの原子ピッキングのみを行います。ピッキングされた原子が2つ、3つ、4つになると、自動でそのピッキングされた原子についての距離(distance)、角度(angle)、二面角(dihedral) を表示してくれます。
クリッピング(Clip)
Viewing ModeでShiftとマウスの右ボタン(またはCtrl+Shift+マウス右ボタン)を押しながらマウスを上下左右に動かす と、分子の内部を覗けたり霧をかけたりすることができます。分子内部の一部の領域を強調した画像を取りたいときに作ります。
この機能は2枚のクリッピング平面(Clipping plane) によって調節しています。マウスの上下の動きは前面のクリッピング平面(front clipping plane)の位置を、左右の動きは背面のクリッピング平面(rear clipping plane)の位置を調節できます
図解
画面上にはこの2枚のClipping Planeの間に存在する領域だけが表示されます。
マウスを画面下に移動させるとfront clipping planeは視点から見て奥へ移動し、分子の内部が見えるようになります。反対に、マウスを上へ移動させると、front clipping planeは手前に移動します。
マウスを左に移動させるとrear clipping planeが視点から見て奥へ移動します。反対に手前に移動させると、rear clipping planeが手前に移動し、分子の奥側が霧がかかって徐々に見えなくなります。
霧は画面上部のメニューの[Display]→[Depth Cue(Fogging)]のチェックでON/OFFを選択できます(デフォルトはONです)。
スラビング(Slab)
スラブとは英語で厚板、平板という名詞、または「平板にする」という動詞です。PyMOLにおいてスラブ(Slab、Visible Slabとも)とは、上述の2枚のクリッピング平面の間に挟まれた可視化領域のことを指します。
Viewing Modeでマウスホイールを回転させる ことで、スラブの厚さを調節することができます。クリッピングとともに、分子構造の内部領域をみたい時に有用です。
画面上部メニューの[Display]→[Clip]には[8 Angstroam Slab]を始めとして30 Åまでの厚さのスラブを選ぶことができます。[Nothing]を選択した場合には、全原子が含まれるように自動的にスラブの厚みを調節します。
スラブの移動(MovS)
Viewing ModeでShiftを押しながらマウスホイールを回転させる と、スラブ領域を、その厚みを保ったまま手前・奥に移動させることができます。効果を実感したい場合は、例として[8 Angstroam Slab]設定をした直後に使ってみるとわかりやすいでしょう。
スラブに対する視点の移動(MvSZ)
Viewing ModeでCtrlを押しながらマウスホイールを回転させる と、スラブ平面に対して視点を移動させることができます。視点がスラブ内部に入ることもできます。
Editing Mode専用コマンド
以下ではEditing Modeで扱う操作方法について記述します。Editing Modeはオブジェクト・原子の座標自体に変更を加えることが多いため、このモードで操作するときは注意が必要です。もし誤って座標を動かしてしまった場合、数回であればCtrl-zでUndo(もとに戻す)ことが可能です。
オブジェクトの回転(RotO)・XY軸方向への移動(MovO)・Z軸方向への移動(MvOZ)
EditingモードでShiftキーとマウスの左ボタン・ホイールボタン・右ボタンを押しながらマウスを移動させることで、オブジェクトの座標に対しそれぞれ回転・XY軸への並進・Z軸へ移動操作を行うことができます。特に、複数のオブジェクトが存在する場合に効果がわかりやすいです。以下の例では緑色と青色で別々のオブジェクトとした上で、青色オブジェクトに対して操作を適用しています。
原子の移動(MovA)・Z軸方向への移動(MvAZ)
EditingモードでCtrlキーとマウスの左ボタンを押しながらマウスを移動させることで、マウスカーソル上に存在する原子の座標を移動させることができます。Ctrl+Shiftキーとマウスの左ボタンを押しながらだとZ軸方向への移動が行えます。下の例では、オレンジ色の原子(リン酸イオンPO4のリン原子)について操作を適用しています。
フラグメントの回転(RotF)・移動(MovF)・Z軸方向への移動(MvFZ)
Editingモードで特定の原子を左クリックすると原子がピックされた状態になります。このとき操作メニューが変化して、MovF, MvFZが現れるようになります。RotF(Shift+左クリック)とMovF(Shift+ホイールクリック)はピックされた原子と結合している原子のまとまり(フラグメント)を回転させたり、平行移動させたりすることができます。この操作は必ず選択されたフラグメントの上でShiftキーとクリック入力を行う必要があります。
MvFZ(Shift+右クリックしながら上下にドラッグ)はピックされたフラグメントを手前または奥に移動させることができます。
二面角をピッキング(PkTB)
Editingモードで描画されている結合に対してCtrlキーとマウスの右ボタンを押しながら移動させることで、結合の二面角を変更することができます。
2原子を結ぶ結合線上のうち、それぞれの原子に近い位置で操作を実行することで、それぞれ回転される対象が異なることに注意します。 図において、結合線の左半分にマウスカーソルを置いた状態で操作を適用した場合はこの残基の先端のみが回転します。
しかし、結合線の右半分にカーソルを置いた状態で操作を適用すると、タンパク質の方が回転します。
分子構造をドラッグモードにする(DrgM)
Editingモードでホイールボタンをダブルクリックすると、オブジェクト内のひとつながりの分子構造(Molecule)について"drag"状態にします。このドラッグモードではこれまでのカメラ操作のような感覚で分子の座標を変更することが可能になります。
このドラッグモードにするとオブジェクトパネルの下側に専用のメニューが現れます。PDB: 1alkの場合で図の右側の構造についてこの操作を実行すると、Mgイオンを除いた右半分のChainだけが選択された状態になります。これは上述のひとつながりの分子構造に対してのみ適用されるからです。
さらに、このドラッグモードではShiftキーを押しながらのマウス操作方法がRotD, MovD, MvDZに変化します。このDはDraggedを表しており、ドラッグモードとなっている選択範囲のみに対してそれぞれ回転操作・XY軸方向への移動・Z軸方向への移動を行うことができます。
セッションの保存
セッションとは、一連のインタラクティブ操作のことを指します(コンピュータ用語)。PyMOLにおいては、開いてから現在に至るまでの作業記録、と考えることができます。つまり、セッションの保存を利用すると作業状態をファイルに保存しておくことができ、あとでその状態を復元することができます。この機能を利用すれば、論文の図を作成している最中に様々な設定を試すことができたり、PyMOLの画面の状態を他の人に表示して確認してもらうということも可能になります。
やり方は簡単で、上部メニューの[File]から[Save Session As...]を選び、ファイル名を指定してSaveボタンを押して保存するだけです。
Sessionのファイル形式にはpse形式とpsw形式の2つがあります。基本的にはpseファイル形式の方で保存する方がよいでしょう。pswファイルで保存した場合は、そのファイルを開くときに全画面表示が標準になります。例えばデスクトップにfoo.pse
というファイル名で保存したい場合は以下のように入力して[save]ボタンを押します。
こうして保存されたセッションファイルを再度PyMOLからロードすれば、元の作業状態に戻すことができます。
※ 一度セッションを保存しておけば、以降は[Save Session]ボタンを押すことで同名のセッションファイルに上書きしてくれます。
構造ファイルのエクスポート
ロードされている構造ファイルの全部または一部を書き出して保存することができます。
上部メニューの[File]から[Export Molecule...]を選ぶと、保存メニューが現れます。
Selectionの部分はエクスポートする構造オブジェクトの範囲を示しています。enabledは現在オブジェクトパネルで表示をONにしている構造オブジェクトすべてを表します。右のプルダウンメニューには他にもall(ロードしている全構造オブジェクト)や個別の構造ファイルのオブジェクト名が含まれています。
Stateは1つのオブジェクトに複数の構造状態を持っている場合に、どの状態を保存するかを表しています。デフォルトは -1 (current) で、現在画面に表示されている状態のものを保存します。
対応している出力ファイル形式
デフォルトではPDBx/mmCIF (*.cif, *.cif.gz)
となっていますが、他にも画像のような様々なファイル形式に出力することができます。
保存メニューには他にも様々なオプションがあります。
Generic Options
Original atom order (according to "rank")
構造オブジェクトの保存時に、ATOM行の並び順を元のファイルの入力通りに並べるかどうかを設定します。例として元のファイルが
ATOM 1 CH3 ACE A 1 33.160 24.100 12.400 1.00 0.00
ATOM 2 HH31 ACE A 1 32.860 24.830 11.650 1.00 0.00
ATOM 3 HH32 ACE A 1 33.800 23.390 11.880 1.00 0.00
ATOM 4 HH33 ACE A 1 32.250 23.650 12.770 1.00 0.00
ATOM 5 C ACE A 1 33.910 24.800 13.510 1.00 0.00
ATOM 6 O ACE A 1 33.760 24.560 14.700 1.00 0.00
だったとしたとき、設定がOFFであればこの並び順は
ATOM 1 C ACE A 1 33.910 24.800 13.510 1.00 0.00 C
ATOM 2 O ACE A 1 33.760 24.560 14.700 1.00 0.00 O
ATOM 3 CH3 ACE A 1 33.160 24.100 12.400 1.00 0.00 C
ATOM 4 HH31 ACE A 1 32.860 24.830 11.650 1.00 0.00 H
ATOM 5 HH32 ACE A 1 33.800 23.390 11.880 1.00 0.00 H
ATOM 6 HH33 ACE A 1 32.250 23.650 12.770 1.00 0.00 H
という順に書き出されます。この並びはatom identifier
順になっています。一方、設定がONであればこの並び順は
ATOM 1 CH3 ACE A 1 33.160 24.100 12.400 1.00 0.00 C
ATOM 2 HH31 ACE A 1 32.860 24.830 11.650 1.00 0.00 H
ATOM 3 HH32 ACE A 1 33.800 23.390 11.880 1.00 0.00 H
ATOM 4 HH33 ACE A 1 32.250 23.650 12.770 1.00 0.00 H
ATOM 5 C ACE A 1 33.910 24.800 13.510 1.00 0.00 C
ATOM 6 O ACE A 1 33.760 24.560 14.700 1.00 0.00 O
のように、元のファイルの原子順に書き出されて保存されます。
コマンドラインでは set retain_order, [0,1]
で同様の設定を指定できます(0で無効、1で有効)。
参考: https://pymolwiki.org/index.php/Retain_order
PDB Options
これらのオプションは従来使われていたpdb
ファイル形式で出力するときのみ対応します。
Write multiple bonds as duplicate CONECT records
CONECTレコードを複数作成することで原子間の結合次数の情報をエンコードし、ファイルに書き出します。デフォルトではOFFです。ver. 1.6.1から実装されました。
コマンドラインでは set pdb_conect_nodup, [0,1]
で無視して保存するかどうかを指定できます(0で書き出す、1で書き出さない)。
Write CONECT records for all bonds
すべての原子間の結合の組み合わせ情報をCONECTレコードに書き出します。デフォルトではOFFです。
コマンドラインでは set pdb_conect_all, [0,1]
で同様の設定を指定できます(0で無効、1で有効)。
参考: https://pymolwiki.org/index.php/Pdb_conect_all
Write segment identifier (segi) column
segment identifierを書き出すかどうかを指定します。デフォルトではONです。segment identifierとはPDB formatにおいて73-76番目のカラムを利用した識別子のことです。かつて、同一chain IDにありながらある種の原子のグループごとに分けて記述したい場合に用いられましたが、今はChain IDで分けるのが主流となっています。segment identifierは現在廃止された仕様ですが、PyMOLやChimera, CHARMMなど一部のプログラムは未だにこれを利用することができます。
コマンドラインでは set ignore_pdb_segi, [0,1]
で無視して保存するかどうかを指定できます(0で書き出す、1で書き出さない)。
Retain atom ids
構造データのエクスポート時に、原子のIDを1から順になるようリナンバリングするかどうかを指定します。デフォルトではOFFです。
コマンドラインでは set pdb_retain_ids, [0,1]
で同様の設定を指定できます(0で無効、1で有効)。
参考: https://pymolwiki.org/index.php/Pdb_retain_ids
Write HEADER for every object
このオプションを指定すると、保存時に選択された各オブジェクトがHEADERレコード〜ENDレコードで区切られながら1ファイル中にまとめて書き出されます。こうして書き出されたファイルはマルチエントリPDBファイルとなり、PyMOLでこのファイルをロードしようとすると、各エントリごとに異なるオブジェクトとして表示されるようになります。
対称性情報が含まれている場合、CRYST1レコードも記述されます。
内部処理的にはpdb形式でmultisave
コマンドを使った保存方法に直接対応しています。
参考: https://pymolwiki.org/index.php/Multisave
Multi-File
現在PyMOL上で複数表示されているオブジェクトを、複数ファイルに分けてエクスポートしたいときに使うオプションです。さらに、各オブジェクトが2以上のStateを持っている場合(例として、PDB ID:1G03などのNMR構造ファイル、またはMDトラジェクトリをロードしたオブジェクトなど)は、さらにそれらを分割して保存することができます。
デフォルトではone single fileが選択されています。
one single file
保存したい対象オブジェクト(上部Selection
のところで設定)を1つのファイルにまとめて保存します。保存される対象のStateはメニュー上部のState
で変更できます。
one file per object
複数のオブジェクトが表示されている場合に、各オブジェクトごとにファイルを分割して出力します。デフォルトの出力ファイル名はオブジェクト名に相当する{name}
が設定されます。
one file per object-state
各オブジェクトに複数のstateが存在する場合、上の設定と同様に、{name}_{state}
の名前で出力します。
Prompt for every file にチェックが入っている場合は、保存対象ごとにファイル名の指定画面が現れます。例えば、1つのstateを持つAと、20つのstateを持つBのオブジェクトがある場合に one file per object-stateを選択すると、21回画面がポップアップすることになります。
画像の保存
PyMOLで表示されている画像を保存することができます。上部メニューの[File]から[Export Image As...] → [PNG]を選ぶと、保存メニューが現れます。
デフォルトでは"capture current display"と表示されています。
この設定で下にある"Save PNG image as..."を押すと、保存先を指定するメニューが表示され、名前を入れて保存することができます(画像はいずれもbg_color white
で白背景にした場合で表示しています)。
これでとりあえず上のような画像を保存することができましたが、他にも様々なメニューがあるので、状況によって使い分けると良いでしょう。まずは、"capture current display"のプルダウンメニューの部分を押すと、
計4つのメニューがあることがわかります。まず"draw antialiased OpenGL image"とすると、描画にアンチエイリアスがかかります(※なおmacOSの場合、現状OpenGL周りの処理にバグがあるためWARNINGSのメッセージが出ています。)
続いて"ray trace with opaque background"とすると、ray traceをかけてオブジェクト全体に陰影をつけながら表示することができます。
最後に、"ray trace with transparent background"では、ray traceによる陰影と背景の透過処理が行われます(下の画像例では市松模様になっていますが、実際に出力される画像ではきちんと背景が透明になっています)。
特に最後のオプションで背景を透明化したものは、スライドに画像を載せるときなどで利用することが多いため、覚えておくと良いでしょう。
また、保存時のパネルには"To render a sized antialiased image, use the Draw/Ray panel in the upper right."というメッセージが表示されていますが、これはPyMOLのGUI部分の右上にあるメニューのことを指しています。
これをクリックすると設定メニューが表示されます。
先述のメニューでは出力される縦と横の画像サイズは指定できませんでしたが、先にここのメニューで縦(Height)と横(Width)の値を目的の値に変更しておけば指定することができます。
Unitsはcm
またはinch
を設定できます。また、DPIはdot per inchのことであり、この値が大きいほど画像の解像度が上がる一方、ファイルサイズは大きくなります。論文誌によっては300 DPIを求められる場合がありますので、発表用のものは300
にしておくと良いでしょう。
transparent background ("Ray" only) では、先述の背景の透明化処理の有効・無効を設定できます。
出力は"Draw (fast)"と"Ray (slow)"とありますが、これは先述の"draw antialiased OpenGL image"と"ray trace ~"にそれぞれ対応しています。
コマンドラインで行う場合は、各オプションが以下のコマンドに対応しています。
オプション | コマンド |
---|---|
capture current display | png foo.png, 0, 0, -1, ray=0 |
draw antialiased OpenGL image | draw 0, 0 ; png foo.png, 0, 0, -1, ray=0 |
ray trace with opaque background | set opaque_background, 1; png foo.png, 0, 0, -1, ray=1 |
ray trace with transparent background | set opaque_background, 0; png foo.png, 0, 0, -1, ray=1 |
第3章 External GUIの使い方
File
New PyMOL Window
新しくPyMOLのウィンドウを別に立ち上げることができます。ある構造ファイルを開いている時にまったく別の構造ファイルを開く必要があるときには、このNew PyMOL Windowを使って立ち上げると良いでしょう。一方で類似構造のファイルと比較したいという場合には、新しいPyMOL Windowを開かずに1つのPyMOLウィンドウの中で開くと、構造比較する上で便利です。
Default
では新しいPyMOL Windowを開くと同時に、ユーザー独自の初期設定ファイルである.pymolrc
(存在する場合)とインストールしたプラグインをともに読み込んでくれます。
ignore .pymolrc and plugins (-k)
の方では、この機能を無効にし、PyMOLのインストール時の初期設定のまま利用できるようになります。ターミナルからpymol -k
で起動した場合と同じ効果です。
Open...
構造ファイルを読み込むことができます。これを選択すると読み込みたいファイルを選択する画面に移行します。ロード可能な構造ファイルを選択することでInternal GUIのViewer部分に構造が表示されます。
Open Recent...
最近ロードしたことのある構造ファイルの履歴を表示しています。ここから構造ファイルをロードすることも可能です。
Get PDB...
PDBに登録されている構造ファイルや電子密度ファイルのIDを指定することで、インターネットから直接ダウンロードして開くことができます。これはまずこのメニューを選択すると次のような別メニューが開きます。
PDB IDのところにデータベースのIDを入力します。また、下の方にはPDB Structure Optionsが存在し、chain nameの箇所で表示したいChainを指定できます。A chainのみを表示したい場合はAを入力します(指定しない場合はすべて表示されます)。
その構造ファイルに固有のAssemblyを考慮した表示も可能となっています。Biological assemblyを考慮して表示させたい場合は1
を、非対称ユニットをロードしたい場合は何も指定しないでおきます。これについては第2章の分子構造のロードのページも参考にしてください。
構造ファイルはworking directory上にダウンロードされます。デフォルトの構造ファイル形式はmmCIF
となっています。working directoryについてはこちらも参照してください。
Save Session & Save Session as...
現在開いている表示状態をセッションファイルに保存します。ショートカットキーはCtrl-SまたはCommand + S
です。スライド作成や論文のために生体分子の表示形式を保存しておくととても便利なので、ぜひこの機能は活用していきましょう。
Save Session
はいわゆる「上書き保存」と同じで、Save Session as...
は「ファイル名を指定して保存」と同じ機能です。一度もセッションファイルを作成していない状態でSave Session
を押すと自動的に「ファイル名を指定して保存」に切り替わります。
拡張子はPyMOL Session File(.pse
)とPyMOL Show File(.psw
)の2つを選ぶことができます。pse
ファイル形式で保存すると、再びこのファイルを開いたときにPyMOLの作業状態をそのまま復元するのに対し、psw
ファイル形式で保存した場合は、このファイルを開くと全画面表示+Internal GUIとExternal GUIが表示されない状態で開かれます。つまり、pswファイルは編集用というよりは完全に表示用に向いています。
pswファイルを開いたときの例。Internal GUIとExternal GUIが表示されません。
一応、この状態からでも上部メニューの[Display] -> [Internal GUI]と[External GUI] -> [Visible]をクリックすればいつものGUIが表示されるようになるので覚えておくと良いでしょう。
Export molecule...
現在画面上に開いている生体分子オブジェクトをファイルとして出力します。詳細は第2章 構造ファイルのエクスポート を御覧ください。
Export map...
.ccp4
などの電子密度マップなどを出力します。電子密度マップについては第5章 結晶構造の電子密度マップを表示するなどで参照してください。マップオブジェクトがロードされた状態で選択すると以下のようなダイアログが現れます。
保存したいマップオブジェクトを選びSaveボタンを押してファイル名を入力することで保存されます。デフォルト拡張子は.ccp4
です。
Export alignment...
この機能を利用するためには類似のタンパク質間でのアライメントオブジェクトを生成しておく必要があります。アライメントオブジェクトについては第4章 オブジェクトの重ね合わせを参照してください。
Export Image As...
画像を保存するだけでなく、3Dモデリングへの出力にも対応しています。
PNG...
PNG形式の画像を保存することができます。これについての詳細は第2章の画像の保存を参照してください。
VRML 2...
表示しているモデルをwireframe/VRMLの形式で座標情報をエクスポートすることができます。mesh表示やSurface表示にも対応しています。 タンパク質の3Dプリンタでの出力のときに利用できますが、PyMOLだけでなく他のソフトウェアとの様々な工程を経る必要があるため、詳細はここでは割愛します。
クオリティを上げたい場合は、以下のオプションを利用すると良いそうです。
set surface_quality, 1
set cartoon_sampling, 20
COLLADA...
COLLADAというXMLベースのオープン3Dグラフィック形式で出力することができます。PyMOLのcartoon, stick, line, sphere, surfaceなどのスタンダードな表示形式に対応して出力することができます。PyMOL 1.7.3.2から正式実装されました。拡張子は.dae
です。
上記VRML 2の後発ですが、こちらの形式で出力して3Dプリンタ出力やBlenderなどでの編集も行えるようになるかもしれません。PyMOL 2.4からはglTF (GL Transmission Format)という形式でも出力できるようになるそうです。VRML 2のときのクオリティオプションコマンドも利用できます。
POV-Ray...
POV-Rayで読み込めるように拡張子.pov
で出力します。
Export Movie As...
動画を出力することができます。
MPEG...
Quick time...
PNG Images...
Log File
PyMOLで操作記録を取ることができます。
Open...
Resume...
Append...
Close
Run Script...
Working Directory
作業ディレクトリのパスを変更します。macOSでアプリケーションからPyMOLを起動させた場合、デフォルトの作業ディレクトリ(以降wd)はホームディレクトリ、ターミナルからコマンドでPyMOLを起動させた場合には、そのターミナル上での作業ディレクトリになっています。
Get PDB...を利用する場合など、ファイルの読み込み・書き出しは、この作業ディレクトリのパスを基準に考慮する必要があります。Linuxまたはターミナルの操作に慣れている方にとっては言うまでもない概念でしょう。
PyMOLのコマンドラインからはcd
コマンドを使うことで変更することができます。
# Working Directoryをデスクトップに設定する
# (Linux, macOSの場合)
cd ~/Desktop
Edit pymolrc
PyMOLを起動したときに自動的に実行される設定であるpymolrc
ファイルを編集することができます。bash, zshで言うところの.bashrc
, .zshrc
と同様に、pymolrc
に設定を書き込んでおけば、描画に関する設定やPATH設定などを上書きしておくことができます。macOS, Linuxの場合はpymolrc
ファイルはホームディレクトリ上に生成されます。
set sphere_scale, .22
set sphere_scale, .13, elem H
set dash_gap, 0
set dash_gap, .15
set dash_length, .05
set dash_round_ends, 0
set dash_radius, .05
set label_size, 18
set cartoon_loop_radius, 0.1
set cartoon_putty_radius, 0.2
set cartoon_oval_length, 0.8
set label_digits, 3
set ray_opaque_background, 0
set dash_length, 0.2500
set cartoon_gap_cutoff, 0
設定はPyMOLコマンド形式で記述する必要があります。
Reinitialize
Reinitializeはその名の通りPyMOLを再初期化してくれます。表示されているオブジェクトを含め再起動したかのようにしてくれるEverythingと、設定値だけを再起動するもののsettings系のどちらかを選ぶことができます。
Everything
Everythingを選ぶと、PyMOLで現在開いているすべての生体分子オブジェクトは消去され、完全にPyMOLを再起動したような状態になります。それまで保存していなかった作業内容も予告内容なしに消えてしまうので、慎重にこのボタンを押してください。
Original Settings
これらのOriginal Settings, Stored Settingsのメニューでは、現在表示されている生体分子オブジェクトは消去されません。こちらで再初期化してくれるのはPyMOLの描画の設定値です。例えばPyMOLのヘリックスの描画の太さ(set cartoon_oval_length, 0.8
)やループの太さ(set cartoon_loop_radius, 0.1
)、ミッシング領域の描画の有無(set cartoon_gap_cutoff, 0
)……などといった、PyMOLの描画全体に影響を及ぼす値を初期値に修正した状態で再び描画し直してくれるのがこのOriginal Settings
です。
上のEdit pymolrc
で描画設定を変更していた場合でも、このOriginal Settings
を押すとPyMOL内部の設定値で上書きされてしまうので注意してください。
Stored Settings
保存しておいた描画の設定値を呼び出してくれます。これは下記のStore Current Settings
の機能と対応しています。
Store Current Settings
現在の描画の設定値を保存しておいてくれます。これを一度しておけば、以降PyMOLのプログラムを終了するまで上記のStored Settings
からその設定値を呼び出すことができます。
これらReinitialize
についてPyMOLのコマンドラインから行う場合は以下の通りです。
reinitialize [ what [, object ]]
whatにはeverything
またはsettings
が入ります。settings部分にはsettings
, original_settings
, stored_settings
が選べるようです。defaultはeverything。
objectにはオブジェクト名を入れることができます。
Build
Buildのメニューからは、PyMOLに内蔵されている化合物のフラグメントやアミノ酸残基のデータを利用して任意の化合物またはポリペプチド鎖の構造モデルを生成することができるようになっています。主な利用方法としては、既存のタンパク質構造をロードしたあとに、その末端に長い人工ペプチドを取り付けたモデル構造を作成することや、0から任意のポリペプチド鎖を作成して計算科学の研究の初期構造に利用するという使い方があります。
Buildメニューは以下の通りです。
Fragment
ここでは主要な化学小分子の骨格を、フラグメントをつなぎ合わせるような感覚で構築することができます。使い方の例を動画で見てみましょう。
このように、何もない状態から様々な化学骨格を持った分子を作っていくことができます。……ただ、結構癖があって、任意に小分子を作るというのには慣れが必要で、構造最適化部分も含めて他のソフトウェアを使った方がいいような気もします。
やり方としては、まずこのFragmentメニューからベースとなる化合物骨格を選んできます(しかしこの時点でベンゼン環がないので結構アレなんですけれど……。) その後、マウスのPkAt機能(参考:マウス操作の詳細,原子ピッキング)を使って原子を1つピッキングした状態にします。この状態でさらにFragmentメニューからフラグメントを選ぶと、そのピックされた原子部分に選択された化学骨格が生えていきます。これを繰り返していくことで、任意の化合物を作ることが理論上可能です。
化合物の二面角や角度を手動で調整したい場合は、マウス操作で調節して作り出してください(参考:マウス操作の詳細,二面角をピッキング)。また、一応お気持ち程度ですが、後で紹介するSculptingという機能を使うと、簡単な化合物の構造最適化をかけてくれて、無理のない構造に落ち着かせることができます。
Residue
このメニューは20種類の正準アミノ酸の残基のデータの他に、N末端キャッピング用のAcetylとC末端キャッピング用のN-Methylが存在しています。キャッピングとはMDシミュレーション上で使われる人工的な修飾で、末端部分の電荷をニュートラルにするために使われます。それ以外の方はあまり利用することがないでしょう。
AltキーとA~Zの文字を組み合わせて入力することでマウスを使わずに簡単にポリペプチド鎖を作成していくことができます。例えば、PyMOLを開き、BuildメニューからResidue -> Helixを選び、Internal GUI画面上でAltキーを押しながらACDVAARHK
と連続して押すと
このようにαヘリックス様のタンパク質フラグメントが簡単に生成されました。同様にして、antiparallel, parallelのβシート構造も作り出すことができます。ただしループ構造は自動で生成してくれませんので、手動で任意の二面角を調節して作り出してください。(参考:マウス操作の詳細,二面角をピッキング)
また、プログラミングしたいときに便利な点として、cmd._alt(chr(XX))
を入力することでそのキーを入力した扱いにすることができます。XXにはASCII CODEが入ります(A: 65, B: 66, C: 67, ... 88: X, Y: 89, Z: 90)。
表示 | 残基名 | cmd | ショートカットキー |
---|---|---|---|
Acetyl | アセチル基 | cmd._alt(chr(66)) | Alt-B |
Alanine | アラニン | cmd._alt(chr(65)) | Alt-A |
Amine | アミン | - | |
Aspartate | アスパラギン酸 | cmd._alt(chr(68)) | Alt-D |
Asparagine | アスパラギン | cmd._alt(chr(78)) | Alt-N |
Arginine | アルギニン | cmd._alt(chr(82)) | Alt-R |
Cysteine | システイン | cmd._alt(chr(67)) | Alt-C |
Glutamate | グルタミン酸 | cmd._alt(chr(69)) | Alt-E |
Glutamine | グルタミン | cmd._alt(chr(81)) | Alt-Q |
Glycine | グリシン | cmd._alt(chr(71)) | Alt-G |
Histidine | ヒスチジン | cmd._alt(chr(72)) | Alt-H |
Isoleucine | イソロイシン | cmd._alt(chr(73)) | Alt-I |
Leucine | ロイシン | cmd._alt(chr(76)) | Alt-L |
Lysine | リジン | cmd._alt(chr(75)) | Alt-K |
Methionine | メチオニン | cmd._alt(chr(77)) | Alt-M |
N-Methyl | N-メチル | cmd._alt(chr(90)) | Alt-Z |
Phenylalanine | フェニルアラニン | cmd._alt(chr(70)) | Alt-F |
Proline | プロリン | cmd._alt(chr(80)) | Alt-P |
Serine | セリン | cmd._alt(chr(83)) | Alt-S |
Threonine | スレオニン | cmd._alt(chr(84)) | Alt-T |
Tryptophan | トリプトファン | cmd._alt(chr(87)) | Alt-W |
Tyrosine | チロシン | cmd._alt(chr(89)) | Alt-Y |
Valine | バリン | cmd._alt(chr(86)) | Alt-V |
Sculpting
Sculptingは「彫刻する」というような意味ですが、PyMOLのこの機能では、上で生成したような小分子またはポリペプチド鎖について簡単な構造最適化をかけてくれるようです。
ただし、この機能は現在PyMOLの開発者としてはサポートの対象外とされているようで、現時点ではこの機能が改善されることや発見されたバグの修正が行われることはないとされています(参考:PyMOL: Unsupported Features)。したがって、ここでは簡単な使い方の紹介を留める程度にしておきます。
まずSculptingメニューの先にあるサブメニューの2段めにあるSculptingにチェックを入れます(この操作はコマンドでset sculpting, on
とすることでもできます)。そしてその下にあるactivateをクリックすると、表示されている分子の構造最適化が自動的に始まります。ただし、この操作は画面に表示されている分子に対して行われてしまうことに注意してください。コマンドではsculpt_activate all
とします。途中で止めたい場合はsculpt_deactivate all
と入力します。all
の部分を生体分子のオブジェクト名にすればその分子のみを構造最適化させることができます。
Cycle Bond Valence [Ctrl-Shift-W]
現在選択中の「結合」に対して、その結合を芳香環のような結合として設定させます。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Wの同時押しです。
結合を選択する方法はマウス操作の詳細,二面角をピッキングと同じです。この機能で結合を選択したあと、Ctrl-Shift-Wキーを同時押しすることで、その結合が芳香環様結合として設定させることができます。例えばFragmentメニューに存在するCyclohexyl[Alt-6]にこの機能を適用してベンゼン環に変更したいという場合、6つすべての炭素-炭素結合についてこの操作を行う必要があります。このとき水素原子は自動で増減します。こののち、上記のSculptingによる構造最適化を行えばすべての炭素原子が同一平面上に位置するようになったベンゼン環構造が得られます(が、水素原子の位置がきれいな構造じゃない気がします)。
Fill Hydrogens on (Pk1) [Ctrl-Shift-R]
Pk1で選択されている「原子」に対して、その原子につながっている結合数に応じて水素原子を取り付けてくれます。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Rの同時押しです。コマンドはh_fill
です。
invert (pk2)-(pk1)-(pk3) [Ctrl-Shift-E]
PkAt機能で原子を3つ選んだ状態、すなわちPk1, Pk2, Pk3が存在している状態でこのコマンドを選択すると、Pk1から先のフラグメントがPk1-Pk2軸回りに180度反転した位置に変化します。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Eの同時押しです。コマンドはinvert
です。
create bond (pk1)-(pk2) [Ctrl-Shift-T]
PkAt機能で原子を2つ選んだ状態、すなわちPk1, Pk2が存在する状態でこのコマンドを選択すると、2原子の間に結合が形成されます。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Tの同時押しです。内部コマンドの処理としてはbond ; unpick
が働いています。
これは環を閉じたいときに有用だったり、描画上の問題で離れている2原子を結合したような状態に見せたいときに有用です。
ちなみにコマンド専用ですが、bondコマンドを使うときにbond order=2
とすると二重結合として結合を表示させられます。三重結合のときはbond order=3
、芳香環様結合のときはbond order=4
とします。
Remove (pk1) [Ctrl-Shift-D]
Pk1で選択されている原子を削除します。また、PkTbで選択されている結合についても削除することができます。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Dの同時押しです。コマンドはremove_picked
です。
Make (Pk1) positive [Ctrl-Shift-K] / Make (Pk1) negative [Ctrl-Shift-J] / Make (Pk1) neurtral [Ctrl-Shift-U]
Pk1で選択されている原子の電荷を+1, -1, 0にそれぞれ設定させることができます。設定値はLabel機能のother properties, formal chargeを押すと確認することができます。
Edit
主にUndo, Redo機能を取り扱います。注意していただきたいのは、この機能は主に3.3 Buildで原子の座標に変更を加えたものに対してのみ適用される仕様であり、分子のカラーリングや視点の変更、表示形式の変更には対応していません。
Undo [Ctrl-Z]
Buildメニューから行った原子の座標変更や原子&結合の生成・消去についての操作を取り消すことができます。ショートカットキーはCtrl(Macの方はCommandでも可)-Zの同時押しです。下記の"Max Atom Count for Undo/Redo"で設定した値までは何度も操作を取り消すことができます。
Redo [Ctrl-Y]
Undoで取り消した操作を再び呼び戻すことができます。ショートカットキーはCtrl(Macの方はCommandでも可)-Yの同時押しです。
Max Atom Count for Undo/Redo
Undo/Redoで戻せる操作の数を設定できます。デフォルトでは1000となっています。設定値は他に10000, 100000のほか、Unlimited(制限なし)やDisable Undo(実質0)を選ぶことができます。設定値を超えた分の操作は消去され、呼び出すことができなくなります。
一見無制限が良いように思えますが、PyMOLを動かしているマシンのメモリをオーバーして保存しようとするとPyMOLがクラッシュしてしまいます。現実的には1000で問題ないと思います。
コマンドはset suspend_undo_atom_count, 1000
です。1000
の部分は任意のint値を入れることができます。
Auto-Copy Images
PyMOL 1.8には遅くとも実装されていたようですが、Incentive版のPyMOL 2.1から全プラットフォームで実装されたようです。マニュアルによれば
auto_copy_images (boolean, default: on) controls whether or not PyMOL automatically copies images from the OpenGL viewport into the system’s clipboard.
とあるのですが、使い方がよくわかりませんでした。
Setting
Scene
Externalメニューに存在するScene機能は論文・ポスター発表や動画作成の時にとても重宝します。PyMOLに表示したタンパク質の構造を色んな角度から撮影したり、色んなカラーリングや設定値を試したり、それらをつなげて動画にまとめて出力したいという試行錯誤は、読み手に分かりやすい論文・ポスター用の図を作成する上で必要な作業だと思われます。そんなとき、1つの作業セッションファイル中に複数の表示状態を保存することができるこのScene機能をぜひ活用しましょう。
この動画で示しているように、左下に001
, 002
, 003
という小さなボタンが現れています。ここをクリックすることで、前もって保存しておいたカメラ角度(view/camera)、色使い(color)、表示形式(rep/representations)に戻って表示させることができます。
このボタンはSceneのappend
またはStore
機能によって生成することができます。内容を上書きするにはUpdate
を、削除するにはDelete
を用います。Recall
, Store
, Clear
の3つは、Append
, Delete
の使い方に似ていますが、キーボードのF1〜F12を使ったショートカットキーと自動的に結びつけてくれるため使い勝手が良くなります。
Sceneボタンをマウスでクリックして白くなっているときをactive
状態と呼びます。
Next [PgDn] / Previous [PgUp]
すでに複数のSceneボタンが存在しているときに動作します。Nextで次の、Previousで前のSceneを表示させることができます。Next, Previousはそれぞれキーボードの[PgDn], [PgUp]ボタンにショートカットキーが割り当てられているので、マウスを使わずにSceneを切り替えることができます。
Append
現在の表示状態をSceneに追加します。デフォルトではSceneオブジェクト名は自動的に001
からの連番になります。
内部処理としては、コマンドでscene new, store
が作動します。new
は自動的に連番のIDを割り振ります。new
以外の文字を入力すると、そのオブジェクト名でSceneが生成されます。
Append (Camera, Color, Reps, Reps+Color)
Camera (view), Color, Repsはそれぞれ撮影角度、表示されている分子のカラーリング、表示された分子の表示形式を表しています。上述のAppend
ではこれらをすべて保存してSceneに登録するのに対して、こちらのサブメニューではその一部のみをSceneに登録します。
内部処理としては、コマンドでscene new, store, view=0/1, color=0/1, rep=0/1
としており、0
のとき各情報を保存しない、1
のときに情報を保存する、としています。
Insert Before / After
現在表示している画面の状態のScene登録を、現在ActiveになっているSceneの上(before)または下(after)に登録させます。これによって、上述の Next [PgDn] / Previous [PgUp] との円滑な連携を図ることができます。
内部処理としては、コマンドでscene <scene_name>, insert_before/insert_after
としています。
Update
現在表示している画面の状態を、ActiveになっているSceneボタンの上に上書きします。内部処理としては、コマンドでscene <scene_name>, update
としています。
Delete
現在ActiveになっているSceneボタンを削除します。内部処理としては、コマンドでscene <scene_name>, clear
としています。
Recall
下記のStore
で保存されたSceneを呼び出すことができます。
上で見たような連番のSceneボタンと異なり、F1〜F12ボタンと自動的に結びつけて操作することが可能です。例えば、F1
でStoreされたSceneをF1キーを押すだけで呼び出すことができます。
Store
F1〜F12ボタンと自動的に結びつけられたSceneボタンを生成することができます。使い方はAppend
と似ています。
Windows/Linuxの場合はCtrlキーと, macOSの場合はCommandキーとF1〜F12とすることで現在表示されている画面をSceneに登録することができます。
Clear
F1〜F12ボタンと自動的に結びつけられたSceneボタンを削除します。
Buttons
画面左下にSceneのボタンを表示するかしないかを設定できます。
コマンドではset scene_buttons, 0/1
でそれぞれ表示しない(0
)、表示する(1
)を設定できます。
Cache
現在ActiveになっているSceneに対し、enable
またはoptimize
を選択することでそのSceneのキャッシュを生成します。通常、Scene間の表示形式の切り替え時には再度新たに描画のON/OFFを内部で行っているため、わずかに切り替えに時間がかかりますが、キャッシュを生成しておくとあらかじめ最適化された描画を記憶しておくためにSceneの切り替え時間が短くなります。これは特に分子表面の表示のON/OFFが関係している時に有効です。しかしその反面多量のメモリを確保する必要があるので、初回の操作は重くなります。
disable
とするとキャッシュ機能を無効化します。(read_only
はちょっとわかりませんでした……。)
cacheをoptimize
にすると、今ActiveになっているSceneに対して現在登録されている他のSceneからの切り替えをすべて計算するため、かなり重い処理になります。
コマンドではcache action [, scenes [, state ]]
となります。scenes
はスペース区切りで複数指定できます。使用例は以下の通りです。
cache enable
cache optimize
cache optimize, F1 F2 F5
Mouse
ここではマウス操作についてのメニューを表示しています。マウス操作については2.4 マウス操作を適宜参照することをおすすめします。
Selection Mode
+/-機能(デフォルト設定では3-Button Viewingモードで左のシングルクリック)で選択範囲を増減させるときの、選択範囲の単位を変更します。デフォルトはResidues
で、他にもAtoms
, Chains
, Segments
, Objects
, Molecules
, C-alphas
から選択することができます。
GUI上では、右下のメニューからSelectingの部分をクリックすることで、選択範囲を変更することができます。
コマンドからはset mouse_selection_mode, (value)
で変更できます。設定値0, 1, 2, 3 ,4, 5, 6がそれぞれatoms
, residues
, chains
, segments
, objects
, molecules
, C-alphas
に対応します。
Mouse Mode
2.4.1 操作モードも参照して下さい。マウスのボタン配置と操作方法を、3 Button Motions, 3 Button Editing, 3 Button Viewing, 3 Button Lights, 3 Button All Modes, 2 Button Editing, 2 Button Viewing, 1 Button Viewing Mode, Emulate Maestroの中から選択することができます。
デスクトップ型パソコンを使っていて、左クリック、ホイールクリック(ミドルクリック)、右クリックが揃ったマウスを使える環境であれば、3 Button式を選ぶと機能を最大限活用することができます。一方、最近はホイールクリックのないタイプのタッチパッド(Macbookなど)もありますので、そういった方は2 Button式のメニューを選ぶことをおすすめします。
Emulate MaestroはSchrödinger Maestroのマウス操作感覚とほぼ同じような設定になっています。
コマンドからも設定できるように思えるのですが、見かけだけ変わるようで実際の操作が変わっていないように見えます……。素直にGUIメニューから設定変更した方がよいと思われます。
Virtual Trackball
この機能をONにすると(デフォルトはON)、分子が写っている画面の中央に見えないトラックボールが置かれてあるような状態になります。
このトラックボールの外にマウスカーソルをあわせて視点を変更しようとしたときの挙動が、Virtual Trackballの設定値によって変動します(トラックボール内部はON/OFFともに同じです)。ONのときにトラックボールの外で視点を変更しようとすると、Z軸だけが回転するような動きになります。OFFのときは全体がトラックボールの上にあるような動きになります。
コマンドからはset virtual_trackball, (value)
で変更できます。0
がOFF, 1
がONです。
The virtual trackball works as if there is an invisible ball in the center of the scene. When you click and drag on the screen, it is as if you put your finger on the sphere and rotated it in approximately the same manner. If you click outside the sphere, then you get rotation about the Z-axis only.
Show Mouse Grid
GUIメニュー右下のマウスの操作方法メニューの表示をON/OFFにします。
Roving Origin
Originの位置を、視点の移動とともに追従するかそうでないかを設定します。デフォルトはONです。Originとは回転操作を行いたいときの回転中心のことです。Originの位置は任意の選択範囲に対してActionパネルからOrigin
を選ぶことで設定できます。これがONのとき、視点を平行移動(マウス操作のMove参照)させてもOriginの位置が画面に対して同じ位置に留まるよう更新されますが、OFFにすると視点を平行移動させてもOrigin位置を自動で更新しなくなります。
この効果は、PyMOL上で分子を画面の端っこに置いた状態で設定値を変えて視点の変更しようとすると分かりやすいと思います。
コマンドからはset roving_origin, (value)
で変更できます。0
がOFF, 1
がONです。
Wizard
Wizardは複雑な操作をユーザーとの対話形式で行えるようにしてくれるためのツール群です。Wizardには以下の種類が用意されており、選択することでInternal GUI画面にマウスで操作できるメニューが現れます。特に、MutagenesisとDensityのWizardは重宝することでしょう。
Appearance
Measurement
Mutagenesis
タンパク質の任意のアミノ酸の場所にアミノ酸点変異を導入したモデルを作成してくれます。実験科学者が「もしここに変異を入れたら隣り合うアミノ酸と干渉するだろうか?」ということを簡単に試してみたり、計算科学者が点変異を加えたタンパク質の分子動力学シミュレーションの初期座標として用いたりすることができます。また各アミノ酸にはrotamerと呼ばれる、エネルギー的に安定ないくつかのコンフォメーションのライブラリが内蔵されている上、周囲のアミノ酸の座標を検知した上で最もエネルギー的に安定なrotamerを自動的に選択してくれます。
詳細は第5章で。
Pair Fitting
Density
タンパク質の構造決定法がX線結晶構造解析法, 中性子回折法, クライオ電子顕微鏡によるものだった場合、その電子密度を表示させることができます。
Filter
Sculpting
Label
Charge
Demo
Plugin
help
File
New PyMOL Window
新しくPyMOLのウィンドウを別に立ち上げることができます。ある構造ファイルを開いている時にまったく別の構造ファイルを開く必要があるときには、このNew PyMOL Windowを使って立ち上げると良いでしょう。一方で類似構造のファイルと比較したいという場合には、新しいPyMOL Windowを開かずに1つのPyMOLウィンドウの中で開くと、構造比較する上で便利です。
Default
では新しいPyMOL Windowを開くと同時に、ユーザー独自の初期設定ファイルである.pymolrc
(存在する場合)とインストールしたプラグインをともに読み込んでくれます。
ignore .pymolrc and plugins (-k)
の方では、この機能を無効にし、PyMOLのインストール時の初期設定のまま利用できるようになります。ターミナルからpymol -k
で起動した場合と同じ効果です。
Open...
構造ファイルを読み込むことができます。これを選択すると読み込みたいファイルを選択する画面に移行します。ロード可能な構造ファイルを選択することでInternal GUIのViewer部分に構造が表示されます。
Open Recent...
最近ロードしたことのある構造ファイルの履歴を表示しています。ここから構造ファイルをロードすることも可能です。
Get PDB...
PDBに登録されている構造ファイルや電子密度ファイルのIDを指定することで、インターネットから直接ダウンロードして開くことができます。これはまずこのメニューを選択すると次のような別メニューが開きます。
PDB IDのところにデータベースのIDを入力します。また、下の方にはPDB Structure Optionsが存在し、chain nameの箇所で表示したいChainを指定できます。A chainのみを表示したい場合はAを入力します(指定しない場合はすべて表示されます)。
その構造ファイルに固有のAssemblyを考慮した表示も可能となっています。Biological assemblyを考慮して表示させたい場合は1
を、非対称ユニットをロードしたい場合は何も指定しないでおきます。これについては第2章の分子構造のロードのページも参考にしてください。
構造ファイルはworking directory上にダウンロードされます。デフォルトの構造ファイル形式はmmCIF
となっています。working directoryについてはこちらも参照してください。
Save Session & Save Session as...
現在開いている表示状態をセッションファイルに保存します。ショートカットキーはCtrl-SまたはCommand + S
です。スライド作成や論文のために生体分子の表示形式を保存しておくととても便利なので、ぜひこの機能は活用していきましょう。
Save Session
はいわゆる「上書き保存」と同じで、Save Session as...
は「ファイル名を指定して保存」と同じ機能です。一度もセッションファイルを作成していない状態でSave Session
を押すと自動的に「ファイル名を指定して保存」に切り替わります。
拡張子はPyMOL Session File(.pse
)とPyMOL Show File(.psw
)の2つを選ぶことができます。pse
ファイル形式で保存すると、再びこのファイルを開いたときにPyMOLの作業状態をそのまま復元するのに対し、psw
ファイル形式で保存した場合は、このファイルを開くと全画面表示+Internal GUIとExternal GUIが表示されない状態で開かれます。つまり、pswファイルは編集用というよりは完全に表示用に向いています。
pswファイルを開いたときの例。Internal GUIとExternal GUIが表示されません。
一応、この状態からでも上部メニューの[Display] -> [Internal GUI]と[External GUI] -> [Visible]をクリックすればいつものGUIが表示されるようになるので覚えておくと良いでしょう。
Export molecule...
現在画面上に開いている生体分子オブジェクトをファイルとして出力します。詳細は第2章 構造ファイルのエクスポート を御覧ください。
Export map...
.ccp4
などの電子密度マップなどを出力します。電子密度マップについては第5章 結晶構造の電子密度マップを表示するなどで参照してください。マップオブジェクトがロードされた状態で選択すると以下のようなダイアログが現れます。
保存したいマップオブジェクトを選びSaveボタンを押してファイル名を入力することで保存されます。デフォルト拡張子は.ccp4
です。
Export alignment...
この機能を利用するためには類似のタンパク質間でのアライメントオブジェクトを生成しておく必要があります。アライメントオブジェクトについては第4章 オブジェクトの重ね合わせを参照してください。
Export Image As...
画像を保存するだけでなく、3Dモデリングへの出力にも対応しています。
PNG...
PNG形式の画像を保存することができます。これについての詳細は第2章の画像の保存を参照してください。
VRML 2...
表示しているモデルをwireframe/VRMLの形式で座標情報をエクスポートすることができます。mesh表示やSurface表示にも対応しています。 タンパク質の3Dプリンタでの出力のときに利用できますが、PyMOLだけでなく他のソフトウェアとの様々な工程を経る必要があるため、詳細はここでは割愛します。
クオリティを上げたい場合は、以下のオプションを利用すると良いそうです。
set surface_quality, 1
set cartoon_sampling, 20
COLLADA...
COLLADAというXMLベースのオープン3Dグラフィック形式で出力することができます。PyMOLのcartoon, stick, line, sphere, surfaceなどのスタンダードな表示形式に対応して出力することができます。PyMOL 1.7.3.2から正式実装されました。拡張子は.dae
です。
上記VRML 2の後発ですが、こちらの形式で出力して3Dプリンタ出力やBlenderなどでの編集も行えるようになるかもしれません。PyMOL 2.4からはglTF (GL Transmission Format)という形式でも出力できるようになるそうです。VRML 2のときのクオリティオプションコマンドも利用できます。
POV-Ray...
POV-Rayで読み込めるように拡張子.pov
で出力します。
Export Movie As...
動画を出力することができます。
MPEG...
Quick time...
PNG Images...
Log File
PyMOLで操作記録を取ることができます。
Open...
Resume...
Append...
Close
Run Script...
Working Directory
作業ディレクトリのパスを変更します。macOSでアプリケーションからPyMOLを起動させた場合、デフォルトの作業ディレクトリ(以降wd)はホームディレクトリ、ターミナルからコマンドでPyMOLを起動させた場合には、そのターミナル上での作業ディレクトリになっています。
Get PDB...を利用する場合など、ファイルの読み込み・書き出しは、この作業ディレクトリのパスを基準に考慮する必要があります。Linuxまたはターミナルの操作に慣れている方にとっては言うまでもない概念でしょう。
PyMOLのコマンドラインからはcd
コマンドを使うことで変更することができます。
# Working Directoryをデスクトップに設定する
# (Linux, macOSの場合)
cd ~/Desktop
Edit pymolrc
PyMOLを起動したときに自動的に実行される設定であるpymolrc
ファイルを編集することができます。bash, zshで言うところの.bashrc
, .zshrc
と同様に、pymolrc
に設定を書き込んでおけば、描画に関する設定やPATH設定などを上書きしておくことができます。macOS, Linuxの場合はpymolrc
ファイルはホームディレクトリ上に生成されます。
set sphere_scale, .22
set sphere_scale, .13, elem H
set dash_gap, 0
set dash_gap, .15
set dash_length, .05
set dash_round_ends, 0
set dash_radius, .05
set label_size, 18
set cartoon_loop_radius, 0.1
set cartoon_putty_radius, 0.2
set cartoon_oval_length, 0.8
set label_digits, 3
set ray_opaque_background, 0
set dash_length, 0.2500
set cartoon_gap_cutoff, 0
設定はPyMOLコマンド形式で記述する必要があります。
Reinitialize
Reinitializeはその名の通りPyMOLを再初期化してくれます。表示されているオブジェクトを含め再起動したかのようにしてくれるEverythingと、設定値だけを再起動するもののsettings系のどちらかを選ぶことができます。
Everything
Everythingを選ぶと、PyMOLで現在開いているすべての生体分子オブジェクトは消去され、完全にPyMOLを再起動したような状態になります。それまで保存していなかった作業内容も予告内容なしに消えてしまうので、慎重にこのボタンを押してください。
Original Settings
これらのOriginal Settings, Stored Settingsのメニューでは、現在表示されている生体分子オブジェクトは消去されません。こちらで再初期化してくれるのはPyMOLの描画の設定値です。例えばPyMOLのヘリックスの描画の太さ(set cartoon_oval_length, 0.8
)やループの太さ(set cartoon_loop_radius, 0.1
)、ミッシング領域の描画の有無(set cartoon_gap_cutoff, 0
)……などといった、PyMOLの描画全体に影響を及ぼす値を初期値に修正した状態で再び描画し直してくれるのがこのOriginal Settings
です。
上のEdit pymolrc
で描画設定を変更していた場合でも、このOriginal Settings
を押すとPyMOL内部の設定値で上書きされてしまうので注意してください。
Stored Settings
保存しておいた描画の設定値を呼び出してくれます。これは下記のStore Current Settings
の機能と対応しています。
Store Current Settings
現在の描画の設定値を保存しておいてくれます。これを一度しておけば、以降PyMOLのプログラムを終了するまで上記のStored Settings
からその設定値を呼び出すことができます。
これらReinitialize
についてPyMOLのコマンドラインから行う場合は以下の通りです。
reinitialize [ what [, object ]]
whatにはeverything
またはsettings
が入ります。settings部分にはsettings
, original_settings
, stored_settings
が選べるようです。defaultはeverything。
objectにはオブジェクト名を入れることができます。
Edit
主にUndo, Redo機能を取り扱います。注意していただきたいのは、この機能は主に3.3 Buildで原子の座標に変更を加えたものに対してのみ適用される仕様であり、分子のカラーリングや視点の変更、表示形式の変更には対応していません。
Undo [Ctrl-Z]
Buildメニューから行った原子の座標変更や原子&結合の生成・消去についての操作を取り消すことができます。ショートカットキーはCtrl(Macの方はCommandでも可)-Zの同時押しです。下記の"Max Atom Count for Undo/Redo"で設定した値までは何度も操作を取り消すことができます。
Redo [Ctrl-Y]
Undoで取り消した操作を再び呼び戻すことができます。ショートカットキーはCtrl(Macの方はCommandでも可)-Yの同時押しです。
Max Atom Count for Undo/Redo
Undo/Redoで戻せる操作の数を設定できます。デフォルトでは1000となっています。設定値は他に10000, 100000のほか、Unlimited(制限なし)やDisable Undo(実質0)を選ぶことができます。設定値を超えた分の操作は消去され、呼び出すことができなくなります。
一見無制限が良いように思えますが、PyMOLを動かしているマシンのメモリをオーバーして保存しようとするとPyMOLがクラッシュしてしまいます。現実的には1000で問題ないと思います。
コマンドはset suspend_undo_atom_count, 1000
です。1000
の部分は任意のint値を入れることができます。
Auto-Copy Images
PyMOL 1.8には遅くとも実装されていたようですが、Incentive版のPyMOL 2.1から全プラットフォームで実装されたようです。マニュアルによれば
auto_copy_images (boolean, default: on) controls whether or not PyMOL automatically copies images from the OpenGL viewport into the system’s clipboard.
とあるのですが、使い方がよくわかりませんでした。
Build
Buildのメニューからは、PyMOLに内蔵されている化合物のフラグメントやアミノ酸残基のデータを利用して任意の化合物またはポリペプチド鎖の構造モデルを生成することができるようになっています。主な利用方法としては、既存のタンパク質構造をロードしたあとに、その末端に長い人工ペプチドを取り付けたモデル構造を作成することや、0から任意のポリペプチド鎖を作成して計算科学の研究の初期構造に利用するという使い方があります。
Buildメニューは以下の通りです。
Fragment
ここでは主要な化学小分子の骨格を、フラグメントをつなぎ合わせるような感覚で構築することができます。使い方の例を動画で見てみましょう。
このように、何もない状態から様々な化学骨格を持った分子を作っていくことができます。……ただ、結構癖があって、任意に小分子を作るというのには慣れが必要で、構造最適化部分も含めて他のソフトウェアを使った方がいいような気もします。
やり方としては、まずこのFragmentメニューからベースとなる化合物骨格を選んできます(しかしこの時点でベンゼン環がないので結構アレなんですけれど……。) その後、マウスのPkAt機能(参考:マウス操作の詳細,原子ピッキング)を使って原子を1つピッキングした状態にします。この状態でさらにFragmentメニューからフラグメントを選ぶと、そのピックされた原子部分に選択された化学骨格が生えていきます。これを繰り返していくことで、任意の化合物を作ることが理論上可能です。
化合物の二面角や角度を手動で調整したい場合は、マウス操作で調節して作り出してください(参考:マウス操作の詳細,二面角をピッキング)。また、一応お気持ち程度ですが、後で紹介するSculptingという機能を使うと、簡単な化合物の構造最適化をかけてくれて、無理のない構造に落ち着かせることができます。
Residue
このメニューは20種類の正準アミノ酸の残基のデータの他に、N末端キャッピング用のAcetylとC末端キャッピング用のN-Methylが存在しています。キャッピングとはMDシミュレーション上で使われる人工的な修飾で、末端部分の電荷をニュートラルにするために使われます。それ以外の方はあまり利用することがないでしょう。
AltキーとA~Zの文字を組み合わせて入力することでマウスを使わずに簡単にポリペプチド鎖を作成していくことができます。例えば、PyMOLを開き、BuildメニューからResidue -> Helixを選び、Internal GUI画面上でAltキーを押しながらACDVAARHK
と連続して押すと
このようにαヘリックス様のタンパク質フラグメントが簡単に生成されました。同様にして、antiparallel, parallelのβシート構造も作り出すことができます。ただしループ構造は自動で生成してくれませんので、手動で任意の二面角を調節して作り出してください。(参考:マウス操作の詳細,二面角をピッキング)
また、プログラミングしたいときに便利な点として、cmd._alt(chr(XX))
を入力することでそのキーを入力した扱いにすることができます。XXにはASCII CODEが入ります(A: 65, B: 66, C: 67, ... 88: X, Y: 89, Z: 90)。
表示 | 残基名 | cmd | ショートカットキー |
---|---|---|---|
Acetyl | アセチル基 | cmd._alt(chr(66)) | Alt-B |
Alanine | アラニン | cmd._alt(chr(65)) | Alt-A |
Amine | アミン | - | |
Aspartate | アスパラギン酸 | cmd._alt(chr(68)) | Alt-D |
Asparagine | アスパラギン | cmd._alt(chr(78)) | Alt-N |
Arginine | アルギニン | cmd._alt(chr(82)) | Alt-R |
Cysteine | システイン | cmd._alt(chr(67)) | Alt-C |
Glutamate | グルタミン酸 | cmd._alt(chr(69)) | Alt-E |
Glutamine | グルタミン | cmd._alt(chr(81)) | Alt-Q |
Glycine | グリシン | cmd._alt(chr(71)) | Alt-G |
Histidine | ヒスチジン | cmd._alt(chr(72)) | Alt-H |
Isoleucine | イソロイシン | cmd._alt(chr(73)) | Alt-I |
Leucine | ロイシン | cmd._alt(chr(76)) | Alt-L |
Lysine | リジン | cmd._alt(chr(75)) | Alt-K |
Methionine | メチオニン | cmd._alt(chr(77)) | Alt-M |
N-Methyl | N-メチル | cmd._alt(chr(90)) | Alt-Z |
Phenylalanine | フェニルアラニン | cmd._alt(chr(70)) | Alt-F |
Proline | プロリン | cmd._alt(chr(80)) | Alt-P |
Serine | セリン | cmd._alt(chr(83)) | Alt-S |
Threonine | スレオニン | cmd._alt(chr(84)) | Alt-T |
Tryptophan | トリプトファン | cmd._alt(chr(87)) | Alt-W |
Tyrosine | チロシン | cmd._alt(chr(89)) | Alt-Y |
Valine | バリン | cmd._alt(chr(86)) | Alt-V |
Sculpting
Sculptingは「彫刻する」というような意味ですが、PyMOLのこの機能では、上で生成したような小分子またはポリペプチド鎖について簡単な構造最適化をかけてくれるようです。
ただし、この機能は現在PyMOLの開発者としてはサポートの対象外とされているようで、現時点ではこの機能が改善されることや発見されたバグの修正が行われることはないとされています(参考:PyMOL: Unsupported Features)。したがって、ここでは簡単な使い方の紹介を留める程度にしておきます。
まずSculptingメニューの先にあるサブメニューの2段めにあるSculptingにチェックを入れます(この操作はコマンドでset sculpting, on
とすることでもできます)。そしてその下にあるactivateをクリックすると、表示されている分子の構造最適化が自動的に始まります。ただし、この操作は画面に表示されている分子に対して行われてしまうことに注意してください。コマンドではsculpt_activate all
とします。途中で止めたい場合はsculpt_deactivate all
と入力します。all
の部分を生体分子のオブジェクト名にすればその分子のみを構造最適化させることができます。
Cycle Bond Valence [Ctrl-Shift-W]
現在選択中の「結合」に対して、その結合を芳香環のような結合として設定させます。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Wの同時押しです。
結合を選択する方法はマウス操作の詳細,二面角をピッキングと同じです。この機能で結合を選択したあと、Ctrl-Shift-Wキーを同時押しすることで、その結合が芳香環様結合として設定させることができます。例えばFragmentメニューに存在するCyclohexyl[Alt-6]にこの機能を適用してベンゼン環に変更したいという場合、6つすべての炭素-炭素結合についてこの操作を行う必要があります。このとき水素原子は自動で増減します。こののち、上記のSculptingによる構造最適化を行えばすべての炭素原子が同一平面上に位置するようになったベンゼン環構造が得られます(が、水素原子の位置がきれいな構造じゃない気がします)。
Fill Hydrogens on (Pk1) [Ctrl-Shift-R]
Pk1で選択されている「原子」に対して、その原子につながっている結合数に応じて水素原子を取り付けてくれます。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Rの同時押しです。コマンドはh_fill
です。
invert (pk2)-(pk1)-(pk3) [Ctrl-Shift-E]
PkAt機能で原子を3つ選んだ状態、すなわちPk1, Pk2, Pk3が存在している状態でこのコマンドを選択すると、Pk1から先のフラグメントがPk1-Pk2軸回りに180度反転した位置に変化します。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Eの同時押しです。コマンドはinvert
です。
create bond (pk1)-(pk2) [Ctrl-Shift-T]
PkAt機能で原子を2つ選んだ状態、すなわちPk1, Pk2が存在する状態でこのコマンドを選択すると、2原子の間に結合が形成されます。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Tの同時押しです。内部コマンドの処理としてはbond ; unpick
が働いています。
これは環を閉じたいときに有用だったり、描画上の問題で離れている2原子を結合したような状態に見せたいときに有用です。
ちなみにコマンド専用ですが、bondコマンドを使うときにbond order=2
とすると二重結合として結合を表示させられます。三重結合のときはbond order=3
、芳香環様結合のときはbond order=4
とします。
Remove (pk1) [Ctrl-Shift-D]
Pk1で選択されている原子を削除します。また、PkTbで選択されている結合についても削除することができます。ショートカットキーはCtrl(Macの場合はCommandでも可)とShift-Dの同時押しです。コマンドはremove_picked
です。
Make (Pk1) positive [Ctrl-Shift-K] / Make (Pk1) negative [Ctrl-Shift-J] / Make (Pk1) neurtral [Ctrl-Shift-U]
Pk1で選択されている原子の電荷を+1, -1, 0にそれぞれ設定させることができます。設定値はLabel機能のother properties, formal chargeを押すと確認することができます。
Movie
PyMOLのMovie機能を使うことでカメラまたは分子自体の動き・表示に時限式のプログラムを施し、分子を様々な角度から映すことができるようになります。
Append
この機能は指定した秒数分のフレームを確保するのに使います。メニュー上では0.25
〜60
secondの延長が可能です。このとき、設定されているFPSの値(後述)に応じて延長されるフレーム数が増加します。つまり、30FPSに設定されているときに2 second延長しようとすると、60フレーム分追加されることになります。
コマンドでは、60フレーム分の枠を確保する場合にはmset 1x60
のような形で入力します。この60フレームは30FPSに設定しているときですと2秒に相当します。
Program
ムービーに登録する動きのプログラミングを行います。視点を変更する(つまり分子自体の座標は変化しない)Camera Loop, 登録しておいたScene(Sceneのページを参照)の入れ替えを制御するScene Loop, 表示された分子オブジェクトにstateがある状態(NMR構造やMDシミュレーションの動きのデータが入ったオブジェクトなど)での動きの再生を行うState Loop, Stateをすべて再生した後に逆再生を行うState Sweepが用意されています。
Program機能を使うと、PyMOLの画面下にFrameのインジケータが出現します。これをムービーパネルと呼びます。ここには現在どのフレームにいるか、そのフレームにカメラが設定されているかどうかを示す小さなアイコンが表示されます。
以下に示す動きのプログラムは複数連結させることも可能で、Camera Loop Nutate の後に State Loopを行い、Camera Loop X-Rockを行う……という設定にすることも可能です。
Camera Loop
カメラ視点を制御するメニューです。中にはNutate, X-Rock, X-Roll, Y-Rock, Y-Rollのメニューがあります。それぞれどういった動きをするものなのかを以下で紹介していきます。
Nutate
Nutateは章動のことで、物体の回転運動において、歳差運動をする回転軸の動きの短周期で微小な成分を指します。以下の動画のようなカメラの動きを行います。
GUIメニューからは動きの秒数と歳差運動の角度をいくつか選ぶことができます。
コマンドではmovie.add_nutate(4,15,start=1)
となっています(4秒間、角度15度設定の場合)。start=
の値にはこのプログラムを付け加えるFrameの開始番号を入力します。
X-Rock, Y-Rock
X-Rock, Y-Rockは画面\(x\)軸または\(y\)軸に対してカメラ角度を指定した値の範囲分だけ傾ける運動を繰り返します。以下の動画のようなカメラの動きを行います。
コマンドではmovie.add_rock(2,30,axis='x',start=1)
となっています(2秒間、角度30度、\(x\)軸rock設定の場合)。start=
の値にはこのプログラムを付け加えるFrameの開始番号を入力します。
X-Roll, Y-Roll
X-Roll, Y-Rollは画面\(x\)軸または\(y\)軸に、指定された時間で1周して戻ってくるように回転させます。以下の動画のようなカメラの動きを行います。
コマンドではmovie.add_roll(4.0,axis='x',start=1)
となっています(4秒間、\(x\)軸回転設定の場合)。start=
の値にはこのプログラムを付け加えるFrameの開始番号を入力します。
Scene Loop
この機能を使うためには、Scene機能によっていくつかのSceneを事前に用意しておく必要があります。このScene間でカメラの動きをシームレスにつなげてムービーパネルに登録してくれます。
下の動画の例では先にF1, F2, F3の3つのSceneが登録された状態で示しています。
nutate
登録されているSceneを順番に移動しながら、各Sceneについて指定した秒数分のnutateを行っていきます。
コマンドではset sweep_angle 30; cmd.movie.add_scenes(None, 2, rock=4, start=1)
となっています(角度30度、2秒間動作、nutate設定の場合)。start=
の値にはこのプログラムを付け加えるFrameの開始番号を入力します。
X-Rock, Y-Rock
登録されているSceneを順番に移動しながら、各Sceneについて指定した秒数分のX-Rock/Y-Rockを行っていきます。
コマンドではset sweep_angle 30; cmd.movie.add_scenes(None, 2, rock=2, start=1)
となっています(角度30度、2秒間動作、\(x\)軸Rockの場合)。\(y\)軸Rockの場合はrock=1
に設定します。start=
の値にはこのプログラムを付け加えるFrameの開始番号を入力します。
Steady
登録されているSceneを順番に移動しながら、各Sceneについて指定した秒数分だけ静止します。
コマンドではcmd.movie.add_scenes(None, 1.0, rock=0, start=1)
となっています(角度30度、1秒間静止の場合)。
State Loop
この機能を使うためには、すでに1つ以上のロード済みの生体分子オブジェクトに複数のStateが入っている状態である必要があります。PDBに登録されている構造のうち、NMRで構造が決定されたものはたいてい複数のStateが入っていますが、結晶構造には通常複数のStateは入っていません。または、MDシミュレーションのトラジェクトリデータをロードすることで、複数のStateをもたせることもできます。
以下の例ではNMRで構造決定されたPDB: 1G03の構造オブジェクトを利用しています。State loop機能は、このState間での動きをムービーパネルに登録してくれます。
State Loopは全Stateを順に再生します。n second pause
で停止時間を指定した場合、Stateの再生前、再生後に指定した時間分の停止フレームが設定されます。
コマンドではmovie.add_state_loop(n, m, start=1)
です(1/n倍速、m秒pauseを挟む場合)。動画では1倍速、1秒pause設定にしています。start=
の値にはこのプログラムを付け加えるFrameの開始番号を入力します。
State Sweep
この機能もStateが複数ある構造オブジェクトがロードされていることを前提としています。全Stateを順に再生させて最後のStateまで到達した後、Stateを逆再生します。n second pause
で停止時間を指定した場合、最後のstateに到達した後に逆再生を始めるまでと、最初と最後にもそれぞれ停止フレームが設定されます。
コマンドではmovie.add_state_sweep(n, m, start=1)
です(1/n倍速、m秒pauseを挟む場合)。動画では1/2倍速、1秒pause設定にしています。start=
の値にはこのプログラムを付け加えるFrameの開始番号を入力します。
Update last program
最後にGUIメニューから行った動作プログラムを再実行させます。コマンドでプログラムしたものはこのUpdate last program
を押しても再実行されないので注意してください。
Remove last program
最後にGUIメニューから行った動作プログラムを削除することができます。コマンドからプログラムしたものについては無効のようです。
Reset
作成しているすべてのMovieのフレーム情報をすべて消去します。コマンドはmset; rewind
です。
Frame Rate
1秒あたりの動き(フレーム)の数に関する設定です。
FPS
Frame per second(FPS, 1秒あたりのフレーム)を設定します。デフォルトは30
FPSに設定されており、1秒あたり最大で30枚の静止画像数(いわゆる「コマ」)を処理するようになっています。GUIからは30
, 15
, 5
, 1
, 0.3
を選べるようになっていますが、コマンドからは任意の値を設定できます。
動画として後々出力し他の方に見せる場合、FPSの値は配信するマシン環境やネットワークなどによっても上限を制限されるので、現実的には30
が主流の値、よくて60
FPSです。
コマンドではset movie_fps, (value)
です。(value)
にはFPSのfloat値を入力します(デフォルトでは30
)。
Show Frame Rate
Internal GUIの右下部分の再生ボタンの上に、Frame Rateが表示されるようになります。デフォルトではOFF
です。
コマンドではset show_frame_rate, (value)
です。(value)
の部分は1
, 0
を指定でき, 1
でON, 0
でOFFとなります。(value)の部分にon
, off
と入れても有効です。
Reset meter
コマンドはmeter_reset
で、PyMOLのドキュメントによれば
meter_reset resets the frames per second counter.
とのこと。Show Frame RateをONにした状態でこのボタンを押すとHzの数字が現在の値にアップデートされる。実際には表示形式の変更などの内部処理時に自動的に呼び出されているくらいで、人間が明示的に使う機会はあまりなさそう。
Auto Interpolate
プログラム動作を指定するタイミングのフレーム(キーフレームと呼びます)が新たに設定されたときに、その前後のカメラの動きを自動的に補間してくれます。デフォルトではON
です。
この機能は上記のようなGUIによるキーフレームの設定を使っているときにはすでに補間が働いていることもあって、あまり効果をなしません。コマンドベースでムービーのプログラミングを行っているときには効果がよくわかります。
例として以下のムービー作成コマンドを、Auto InterpolateがONのときとOFFのときで比較してみます。
fetch 1rx1, async=0
as cartoon
as sticks, organic
mset 1x70
orient
mview store, 1
mview store, 70
orient organic
mview store, 30
mview store, 40
mplay
これはタンパク質1rx1をロードし、mset 1x70
で70フレーム分の枠を用意した後、1フレームめと70フレームめにはタンパク質全体の様子を見せるorient
の状態でキーフレームを設定し、30フレームめと40フレームめではorient organic
によってリガンド部分にズームした状態のキーフレームを設定しています。
Auto Interpolateがon
の場合は以下のような動画が作られます。
Auto Interpolateがoff
の場合は以下のようになります。
このように動きを設定したフレーム間でのカメラの補間が働いていないことがわかります。
コマンドはset movie_auto_interpolate, on
またはoff
です。
Show Panel
ムービーパネルの表示・非表示を設定します。コマンドではset movie_panel, 1
で表示となります(0
で非表示)。デフォルトでは1
になっています。
Loop Frames
ムービーを構成するフレームが再生し終わったときに自動的にループして再生するか、それとも停止するかを設定できます。コマンドではset movie_loop, 1
でループ再生となります(0
で停止)。デフォルトでは1
になっています。
Draw Frames
このオプションにチェックを入れておくと、各フレームを再生する時にdraw
によるややきれいな画像レンダリングが行われるようになります。ray
よりはとても動作が軽い一方、set ray_opaque_background, 0
を使った背景の透明化などはできないようです。
コマンドではset draw_frames, 1
でdraw描画がONになります(0
で解除)。デフォルトでは0
になっています。
Ray Trace Frames
このオプションにチェックを入れておくと、各フレームを再生する時にray
によるレイトレーシングが行われるようになります。1フレームごとにきれいな画像が出力されるので、後に動画ファイルとして出力する場合に利用できますが、反面1フレームごとの再生速度が極端に低下するので普段チェックを入れておくことはおすすめしません。
コマンドではset ray_trace_frames, 1
でレイトレーシングがONになります(0
で解除)。デフォルトでは0
になっています。
Cache Frame Images
このオプションにチェックを入れておくと、各フレームの画像がメモリに保存されるようになります。メモリに保存されると2回め以降のループ再生時の再計算が必要なくなり、表示が早くなります。ただし、画像をキャッシュすると表示サイズやフレーム数に応じて膨大な量のメモリを消費するので、少なくともこのオプションを使う前に表示画像サイズをコントロールするviewport
コマンドでウィンドウを縮小しておくことを勧めます。
コマンドではset cache_frames, 1
でキャッシュがON
になります(0
で解除)。デフォルトでは0
になっています。
Clear Image Cache
キャッシュされた画像情報をクリアしてメモリを開放します。Cache Frame Images
にチェックを入れていなければ自動的にキャッシュが溜まることはないので使う必要はありません。コマンドではmclear
です。
Static Singletons
このオプションにチェックを入れておくと、PyMOLでロードされたオブジェクトが複数あり、かつ複数stateを持つオブジェクト(PDB: 1G03など)と1 stateしか存在しないオブジェクトがあったときに、再生ボタンを押してstate 2以降になった場合でも、その1 stateしか持っていないオブジェクトも画面上に表示され続けます。チェックがOFFだと、その1 stateのオブジェクトは表示されなくなります。
コマンドではset static_singletons, 1
で1 stateのオブジェクトの表示を許可します(0
で表示しなくなります)。デフォルトでは1
になっています。
Show All States
このオプションにチェックを入れておくと、ロードしたオブジェクトに複数のStateが存在する場合に全Stateが表示されるようになります。
コマンドではset all_states, 1
で全state表示がON
になります(0
で解除)。デフォルトでは0
になっています。
Display
Sequence
Viewer上に表示されている生体分子オブジェクトの配列を表示します。デフォルトではOFF
になっています。
配列情報はViewer上部に表示されます。複数オブジェクトが存在する場合でも、まとめて表示することが可能です。また、この機能のON/OFFは画面右下のS
ボタンを押すことでも可能です。コマンドはset seq_view, 0/1
です(0
でOFF, 1
でON)。
Sequence Mode
次に示す5つの選択メニューは配列情報自体の表示の変更に関わる設定です。いずれか1つのみ同時に設定できます。
Residue Codes
タンパク質アミノ酸を1文字表記で表示します。核酸の場合はDG
, DA
といった表記になります。デフォルトではこの設定がONになっています。コマンドはset seq_view_format, 0
です。
Residue Names
タンパク質アミノ酸を3文字表記で表示します。核酸の場合はDG
, DA
のままで特に変化しません。コマンドはset seq_view_format, 1
です。
Chain Identifiers
Chain識別子(A鎖、B鎖……)で表示します。コマンドはset seq_view_format, 3
です。
Atom Names
各アミノ酸残基または核酸塩基をさらに細分化し、原子名単位で表示することができます。特に、ある特定の場所の原子名を持つ原子だけを選択したいというときに、Selecting(マウスクリック時の選択単位)をAtomsに変更することと組み合わせることで簡単に選択するできるので重宝します。コマンドはset seq_view_format, 2
です。
States
State番号を表示します。上の例では1NMR
オブジェクトはNMRで構造解析されたデータであり、20 states存在するオブジェクトです。2iteA
と1bnaA
はともに結晶構造解析のデータであり、通常1 Stateのみになっています。コマンドはset seq_view_format, 4
です。
次に示す4つの選択メニューは、配列表示欄の表示方法に関わる設定です。いずれか1つのみ同時に設定できます。例として、上記のResidue Codes表示をONにした場合の設定を掲載しています。
All Residue Numbers
全てのオブジェクトについての配列番号を表示します。コマンドはset seq_view_label_mode, 2
です。
Top Sequence Only
配列番号の表示を一番上のオブジェクトのもののみに限定します。同じオブジェクトを複数ロードしている場合には便利ですが、そうでない場合にしようすると、残基番号の位置を誤ってしまうことになるので、利用しないことが推奨されます。コマンドはset seq_view_label_mode, 1
です。
Object Names Only
配列番号をすべて隠し、オブジェクト名だけを左端に表示します。コマンドはset seq_view_label_mode, 0
です。
No Labels
配列番号、オブジェクト名いずれも非表示にし、配列情報のみを表示します。
コマンドはset seq_view_label_mode, 3
です。
以下の3つのメニューは、配列情報中に存在するミッシング残基についてのギャップマーク-
の表示・非表示を設定します。いずれか1つのみ同時に設定できます。表示しているオブジェクト中にミッシング残基が存在しない場合はどれを選んでも表示に影響はありません。この機能はver. 2.3.0で実装されました。
ここでは例としてミッシング残基が存在するPDB: 2xwu、pdbフォーマットを表示して紹介します。Chain Bの153-155残基がミッシングになっています。
No Gaps
ギャップマークを非表示にします。
コマンドはset seq_view_gap_mode, 0
です。
All Gaps
ギャップマークをすべて表示します。コマンドはset seq_view_gap_mode, 1
です。
Single Gap
連続したミッシング残基がある場合、その箇所に付きギャップマークを1つだけ表示します。コマンドはset seq_view_gap_mode, 2
です。
Internal GUI
Internal GUIの表示のON/OFFを切り替えます。OFFにすると以下のようにInternal GUIが非表示になります。デフォルトではONになっています。
コマンドはset internal_gui, 0/1
です(0
でOFF, 1
でON)。
Internal Prompt
Internal Promptの表示のON/OFFを切り替えます。Internal PromptとはPyMOL画面の下側に存在する入力欄です。
External GUIで入力する入力欄と実質的に機能は同じですが、ヒストリー機能(入力欄でキーボードの上キーを押すと過去に入力したコマンドを参照できる機能)は各入力欄で独立になっています。デフォルトではONになっています。コマンドはset internal_prompt, 0/1
です(0
でOFF, 1
でON)。
Internal Feedback
Internal Feedbackでは、入力欄に入力したコマンドの結果を表示する行の数を設定できます。メニューからは0
,1
,3
,5
から選べるようになっています。デフォルトでは1
となっています。例えば、5
に設定すると以下の画像のようにViewerの下に5行までログが表示されるようになります。
入力欄はInternal Prompt、External GUIのどちらに入力しても同じようにコマンドの結果を表示します。
コマンドはset internal_feedback, (val)
です。(val)
には0
,1
,3
,5
を含む、任意の正の整数値を設定できます。
Overlay
Overlayは、先程のInternal Feedbackの結果をViewer上に重ねて表示する行数の設定値です。メニューからは0
,1
,3
,5
から選べるようになっています。デフォルトでは0
となっています。例えば5
に設定すると以下の画像のようにViewerの下に5行まで結果を重ねて表示するようになります。
コマンドはset overlay, (val)
です。(val)
には0
,1
,3
,5
を含む、任意の正の整数値を設定できます。
Stereo
Stereoを選択すると、現在設定されているステレオモードに移行します。ステレオモードは分子を立体的に見るために便利なモードです。
これを選択すると対応したステレオモードで分子が表示されるようになります。デフォルトではCross-Eye Stereoモードに設定されているので、左右に分かれて表示されるようになります。
-
ステレオモード選択前
-
ステレオモード選択後(Cross-Eye Stereoモード)
このモードを使うことで、論文などで時々見かける立体視の図を簡単に作ることができます。
コマンドはstereo, 0/1
です(0
でOFF, 1
でON)。
Stereo Mode
Anaglyph Stereo
anaglyphモードは、一般的には左目に赤セロファン、右目に青セロファンを通したときに立体的に浮かび上がるような図への出力を行うモードです。いわゆる「赤青メガネ」を着用する状態で見ることを前提とする表示方法です。
コマンドはstereo anaglyph
です。
Cross-Eye Stereo
交差法による立体視用の図を出力するモードです。コマンドはstereo crosseye
です。
Wall-Eye Stereo
Wall-Eyeによる立体視用の図を出力するモードです。コマンドはstereo walleye
です。
Quad-Buffered Stereo
Quad-Buffered stereo 3Dを利用した画面表示を行うモードです。しかし、この機能はお使いのパソコン(GPU)とモニター、OSが適切に対応している場合のみ利用できるようです。また、現行のMacおよびmacOSについてはこの機能を利用することができないようです。詳細は https://pymolwiki.org/index.php/Stereo_3D_Display_Options のページを御覧ください。
コマンドはstereo quadbuffer
です。
Zalman Stereo
この機能はZALMAN社製の3Dモニター製品を利用している場合のみ効果を発揮します。この3Dモニターを使っているときであれば、立体視の訓練をしなくても上記の画像が立体的に見えるように表示されます。しかし、それ以外のモニターを使っているときには立体的に見えないので効果を実感することができません。コマンドはstereo byrow
です。
OpenVR
OpenVRは2019年6月頃から有志によって追加された機能であり、現在試験運用段階にあるようです。動作の様子は https://www.youtube.com/watch?v=kEKA1HnR9GM などで見ることができます。
この機能はOpenVRに依存しているため、Homebrew, LinuxbrewでインストールしたOpensource版PyMOLで利用することはできず、anacondaか公式バイナリをインストールしたときでのみ利用可能です。また、OSもWindows, Linuxに対応しているがmacOSで動作させることができるかは現時点で不明です。また、VR自体が規格の統一やプラットフォーム競争の最中にあるため、本格的な利用はまだ先でしょうか。
コマンドはstereo openvr
です。
Swap Sides
Cross-Eye StereoまたはWall-Eye StereoをONにしているときにこの機能を利用すると、Internal GUI上に表示されている立体視用の画像が入れ替わります。コマンドはstereo swap
です。
Chromadepth
chromadepthモードは、画面に対する奥行きに対して自動的に色付けが変わる表示形式です。このモードにした状態で分子を回転させると、常に画面手前側が赤く、画面奥側が青色になるようにカラーリングが変化します。コマンドはstereo chromadepth
です。
off
ステレオモードをオフにします。コマンドはstereo, off
です。
Zoom
ZoomによってInternal GUI上に表示する分子を拡大するよう視点を変更します。x Angstrom sphere
をクリックすると、x
の値に応じて表示される範囲が変化します。All
では全オブジェクトが表示されるように自動的に視点を変更します。complete
を利用すると、範囲全体がortoscopic viewに収まるようになります。
コマンドではzoom [ selection [,buffer [, state=0 [, complete=0 ]]]]
です。complete
を利用する場合は1
を指定します。
Clip
Clipの値を設定します。詳細は第2章 2.4.3 操作の詳細 クリッピングを御覧ください。
Background
生体分子が表示されているViewer部分の背景について設定することができます。デフォルトでは黒背景になっています。
Opaque
PyMOL Viewerの背景の不透明について設定します。この不透明設定がONの場合、設定された背景色に従って描画されます。この設定がOFFの場合、背景は透明に描画されます。デフォルトではOFFになっています。コマンドはset opaque_background, 0/1
です。
……というのが本来の機能のようですが、実際には機能しておらず、常にONになっているようです。すなわち、背景は常に何かしらの色で塗られており、透明にすることはできないようです。もし背景を透過した画像を保存したい場合は、この代わりにset ray_opaque_background, 0
とした上でray
コマンドを使い、その上で画像を保存することになります。
Alpha Checker
背景色が透過状態になっている場合に、透明な市松模様を表示させるか否かを設定します。デフォルトではONになっており、この状態でset ray_opaque_background, 0
とした上でray
コマンドを入力すると、その表示を確認することができます。
この表示の状態で画像を保存すると、背景が透過された状態になっています。
White / Light Grey / Grey / Black
背景色を選択できます。デフォルトではBlackに設定されているため、通常は黒背景の中に生体分子が表示されます。この4つの選択肢は同時にいずれかの1つのみ適用されます。
Whiteに設定すると背景が白となるので、画像出力時に利用できます。
コマンドではset bg_rgb, [white|grey80|grey50|black|]
です。
Color Space
色空間を設定します。選択肢としてCMYK (for publications), PyMOL (for video + web), RGB (default)があります。デフォルトはRGBです。
一般に、コンピュータのモニター上ではRGB色空間で色を表現しているのに対し、印刷物上ではCMYK色空間で色が表現されています。 詳細はWikipediaの色空間の記事をご覧ください。このため、原理的にモニター上で見える色と論文やポスター上などに印刷された色は異なってしまいます。この2つの色空間は非等価であり、特定のRGB色をCMYK空間で表現することができず、逆にRGBで作成した画像をCMYKに変換すると、紫がかった青や黄緑がかった色になってしまいます。その結果、RGBで作成された分子グラフィックス画像をCMYKに変換すると、青みがかった紫や緑が黄色くなってしまうことがよくあります。そこで、あらかじめspace cmyk
によって色空間をCMYKに強制させておくと、画像編集ソフト(例えばAdobe Photoshop)で確実にCMYKに変換できる色のサブセットに制限することができます。このため、画面上に表示されるものは、印刷で得られるものにかなり近いものになります。
一方で、アナログビデオシステムやYUV色空間に基づくデジタルビデオ圧縮コーデックにもRGBとの非互換性があります。通常、過飽和色が最も問題となります。PyMOL には "space yuv" がありませんが、space pymol
を使うことで、アニメーションをビデオにエクスポートする際に、過飽和色の問題を回避することができます。
まとめると、紙面上への印刷を意識した図を作成する場合はCMYKを、モニター上でのみ表示する図や動画の作成では、PyMOLまたはRGBを利用すると良いでしょう。
コマンドはspace, [cmyk|pymol|rgb]
です。
Quality
Grid
Orthoscopic View
Orthoscopic ViewをONにすると、遠近感(perspective)の効果をなしにすることができます。デフォルトのPyMOLの表示は遠近感を自動的に考慮した表示になっており、奥行きを自然に感じられるようになっていますが、その機能を停止させることができます。
次のような一方向に長いPDB: 3AEHのchain Aを使って例を示します。
このタンパク質を90°横から見て、Orthoscopic ViewをOFFにしている場合(左)とONにしている場合(右)の比較です
Orthoscopic ViewをOFFにしている場合、βバレル(βシートによる樽みたいな)構造やαヘリックスについて視差がうまれているため奥行きがわかりやすいですが、ONにしていると奥行きが少しわからなくなっている感じがします。
球状タンパク質のほうな等方的な分子ではこの効果を実感することは少ないですが、上記のように、異方性の高いタンパク質でのみこのような違いを実感することができます。
Show Valences
Smooth Lines
Depth Cue (Fogging)
Two Sided Lighting
Specular Reflections
Animation
Roving Detail
External GUI
Setting
Scene
Externalメニューに存在するScene機能は論文・ポスター発表や動画作成の時にとても重宝します。PyMOLに表示したタンパク質の構造を色んな角度から撮影したり、色んなカラーリングや設定値を試したり、それらをつなげて動画にまとめて出力したいという試行錯誤は、読み手に分かりやすい論文・ポスター用の図を作成する上で必要な作業だと思われます。そんなとき、1つの作業セッションファイル中に複数の表示状態を保存することができるこのScene機能をぜひ活用しましょう。
この動画で示しているように、左下に001
, 002
, 003
という小さなボタンが現れています。ここをクリックすることで、前もって保存しておいたカメラ角度(view/camera)、色使い(color)、表示形式(rep/representations)に戻って表示させることができます。
このボタンはSceneのappend
またはStore
機能によって生成することができます。内容を上書きするにはUpdate
を、削除するにはDelete
を用います。Recall
, Store
, Clear
の3つは、Append
, Delete
の使い方に似ていますが、キーボードのF1〜F12を使ったショートカットキーと自動的に結びつけてくれるため使い勝手が良くなります。
Sceneボタンをマウスでクリックして白くなっているときをactive
状態と呼びます。
Next [PgDn] / Previous [PgUp]
すでに複数のSceneボタンが存在しているときに動作します。Nextで次の、Previousで前のSceneを表示させることができます。Next, Previousはそれぞれキーボードの[PgDn], [PgUp]ボタンにショートカットキーが割り当てられているので、マウスを使わずにSceneを切り替えることができます。
Append
現在の表示状態をSceneに追加します。デフォルトではSceneオブジェクト名は自動的に001
からの連番になります。
内部処理としては、コマンドでscene new, store
が作動します。new
は自動的に連番のIDを割り振ります。new
以外の文字を入力すると、そのオブジェクト名でSceneが生成されます。
Append (Camera, Color, Reps, Reps+Color)
Camera (view), Color, Repsはそれぞれ撮影角度、表示されている分子のカラーリング、表示された分子の表示形式を表しています。上述のAppend
ではこれらをすべて保存してSceneに登録するのに対して、こちらのサブメニューではその一部のみをSceneに登録します。
内部処理としては、コマンドでscene new, store, view=0/1, color=0/1, rep=0/1
としており、0
のとき各情報を保存しない、1
のときに情報を保存する、としています。
Insert Before / After
現在表示している画面の状態のScene登録を、現在ActiveになっているSceneの上(before)または下(after)に登録させます。これによって、上述の Next [PgDn] / Previous [PgUp] との円滑な連携を図ることができます。
内部処理としては、コマンドでscene <scene_name>, insert_before/insert_after
としています。
Update
現在表示している画面の状態を、ActiveになっているSceneボタンの上に上書きします。内部処理としては、コマンドでscene <scene_name>, update
としています。
Delete
現在ActiveになっているSceneボタンを削除します。内部処理としては、コマンドでscene <scene_name>, clear
としています。
Recall
下記のStore
で保存されたSceneを呼び出すことができます。
上で見たような連番のSceneボタンと異なり、F1〜F12ボタンと自動的に結びつけて操作することが可能です。例えば、F1
でStoreされたSceneをF1キーを押すだけで呼び出すことができます。
Store
F1〜F12ボタンと自動的に結びつけられたSceneボタンを生成することができます。使い方はAppend
と似ています。
Windows/Linuxの場合はCtrlキーと, macOSの場合はCommandキーとF1〜F12とすることで現在表示されている画面をSceneに登録することができます。
Clear
F1〜F12ボタンと自動的に結びつけられたSceneボタンを削除します。
Buttons
画面左下にSceneのボタンを表示するかしないかを設定できます。
コマンドではset scene_buttons, 0/1
でそれぞれ表示しない(0
)、表示する(1
)を設定できます。
Cache
現在ActiveになっているSceneに対し、enable
またはoptimize
を選択することでそのSceneのキャッシュを生成します。通常、Scene間の表示形式の切り替え時には再度新たに描画のON/OFFを内部で行っているため、わずかに切り替えに時間がかかりますが、キャッシュを生成しておくとあらかじめ最適化された描画を記憶しておくためにSceneの切り替え時間が短くなります。これは特に分子表面の表示のON/OFFが関係している時に有効です。しかしその反面多量のメモリを確保する必要があるので、初回の操作は重くなります。
disable
とするとキャッシュ機能を無効化します。(read_only
はちょっとわかりませんでした……。)
cacheをoptimize
にすると、今ActiveになっているSceneに対して現在登録されている他のSceneからの切り替えをすべて計算するため、かなり重い処理になります。
コマンドではcache action [, scenes [, state ]]
となります。scenes
はスペース区切りで複数指定できます。使用例は以下の通りです。
cache enable
cache optimize
cache optimize, F1 F2 F5
Mouse
ここではマウス操作についてのメニューを表示しています。マウス操作については2.4 マウス操作を適宜参照することをおすすめします。
Selection Mode
+/-機能(デフォルト設定では3-Button Viewingモードで左のシングルクリック)で選択範囲を増減させるときの、選択範囲の単位を変更します。デフォルトはResidues
で、他にもAtoms
, Chains
, Segments
, Objects
, Molecules
, C-alphas
から選択することができます。
GUI上では、右下のメニューからSelectingの部分をクリックすることで、選択範囲を変更することができます。
コマンドからはset mouse_selection_mode, (value)
で変更できます。設定値0, 1, 2, 3 ,4, 5, 6がそれぞれatoms
, residues
, chains
, segments
, objects
, molecules
, C-alphas
に対応します。
Mouse Mode
2.4.1 操作モードも参照して下さい。マウスのボタン配置と操作方法を、3 Button Motions, 3 Button Editing, 3 Button Viewing, 3 Button Lights, 3 Button All Modes, 2 Button Editing, 2 Button Viewing, 1 Button Viewing Mode, Emulate Maestroの中から選択することができます。
デスクトップ型パソコンを使っていて、左クリック、ホイールクリック(ミドルクリック)、右クリックが揃ったマウスを使える環境であれば、3 Button式を選ぶと機能を最大限活用することができます。一方、最近はホイールクリックのないタイプのタッチパッド(Macbookなど)もありますので、そういった方は2 Button式のメニューを選ぶことをおすすめします。
Emulate MaestroはSchrödinger Maestroのマウス操作感覚とほぼ同じような設定になっています。
コマンドからも設定できるように思えるのですが、見かけだけ変わるようで実際の操作が変わっていないように見えます……。素直にGUIメニューから設定変更した方がよいと思われます。
Virtual Trackball
この機能をONにすると(デフォルトはON)、分子が写っている画面の中央に見えないトラックボールが置かれてあるような状態になります。
このトラックボールの外にマウスカーソルをあわせて視点を変更しようとしたときの挙動が、Virtual Trackballの設定値によって変動します(トラックボール内部はON/OFFともに同じです)。ONのときにトラックボールの外で視点を変更しようとすると、Z軸だけが回転するような動きになります。OFFのときは全体がトラックボールの上にあるような動きになります。
コマンドからはset virtual_trackball, (value)
で変更できます。0
がOFF, 1
がONです。
The virtual trackball works as if there is an invisible ball in the center of the scene. When you click and drag on the screen, it is as if you put your finger on the sphere and rotated it in approximately the same manner. If you click outside the sphere, then you get rotation about the Z-axis only.
Show Mouse Grid
GUIメニュー右下のマウスの操作方法メニューの表示をON/OFFにします。
Roving Origin
Originの位置を、視点の移動とともに追従するかそうでないかを設定します。デフォルトはONです。Originとは回転操作を行いたいときの回転中心のことです。Originの位置は任意の選択範囲に対してActionパネルからOrigin
を選ぶことで設定できます。これがONのとき、視点を平行移動(マウス操作のMove参照)させてもOriginの位置が画面に対して同じ位置に留まるよう更新されますが、OFFにすると視点を平行移動させてもOrigin位置を自動で更新しなくなります。
この効果は、PyMOL上で分子を画面の端っこに置いた状態で設定値を変えて視点の変更しようとすると分かりやすいと思います。
コマンドからはset roving_origin, (value)
で変更できます。0
がOFF, 1
がONです。
Wizard
Wizardは複雑な操作をユーザーとの対話形式で行えるようにしてくれるためのツール群です。Wizardには以下の種類が用意されており、選択することでInternal GUI画面にマウスで操作できるメニューが現れます。特に、MutagenesisとDensityのWizardは重宝することでしょう。
Appearance
Measurement
Mutagenesis
タンパク質の任意のアミノ酸の場所にアミノ酸点変異を導入したモデルを作成してくれます。実験科学者が「もしここに変異を入れたら隣り合うアミノ酸と干渉するだろうか?」ということを簡単に試してみたり、計算科学者が点変異を加えたタンパク質の分子動力学シミュレーションの初期座標として用いたりすることができます。また各アミノ酸にはrotamerと呼ばれる、エネルギー的に安定ないくつかのコンフォメーションのライブラリが内蔵されている上、周囲のアミノ酸の座標を検知した上で最もエネルギー的に安定なrotamerを自動的に選択してくれます。
詳細は第5章で。
Pair Fitting
Density
タンパク質の構造決定法がX線結晶構造解析法, 中性子回折法, クライオ電子顕微鏡によるものだった場合、その電子密度を表示させることができます。
Filter
Sculpting
Label
Charge
Demo
Plugin
help
第4章 コマンドラインの使い方
分子構造のロード
load
コマンドは様々なファイルフォーマットを読み込むことができます。読み込もうとするファイルの拡張子に対応して自動的に読み込み形式を判定してくれます。例えばPDBファイルを正しく読み込む場合は.pdb
である必要があり、MOLファイルであれば.mol
、Macromodelファイルは.mmod
、XPLOR mapファイルは.xplor
、CCP4 mapファイルは.ccp4
、Raster3Dインプットファイル(Molscript output)は.r3d
、PyMOLセッションファイルは.pse
、pickleになったChemPyモデル.pkl
などは直接読み込むことができます。
以下の入力拡張子は右側のファイルタイプとして認識されます。
入力拡張子 | 認識されるファイルタイプ |
---|---|
ent , p5m | pdb |
mmd , out , dat | mmod |
map , mrc | ccp4 |
cc2 | cc1 |
sd | sdf |
rst7 | rst |
o , dsn6 , omap | brix |
ph4 | moe |
spi | spider |
pym , pyc | py |
p1m , pim | pml |
xml | pdbml |
load
コマンドを使うときにobject
引数が指定された場合には、そのファイルは同名のオブジェクト上にファイルを読み込みます。指定しない場合、拡張子部分を除いたファイル名と同じ名前のオブジェクトが生成されます。
使い方
load filename [,object [,state [,format [,finish [,discrete [,multiplex ]]]]]]
PYMOL API
cmd.load( filename [,object [,state [,format [,finish [,discrete [,multiplex ]]]]]] )
引数
filename
: (string) ロードしたいファイルのファイルパス、またはURLで指定することもできます。object
: (string) 構造ファイルのオブジェクト名です。デフォルト名はロードするファイルのプレフィクスです。state
: (integer) 読み込む構造ファイルをオブジェクトに保存する時、指定した数字のstateの上に上書きする形で読み込みます。例えば、MDのトラジェクトリファイルをオブジェクトの上に読み込む場合は、state=1
を指定すると初期座標を上書きして(削除して)表示できるようになります。0
を指定した場合は最後のstateの後に追加する形で読み込みます。(default:0
)format
: (string) ファイルのフォーマット形式を指定できます(see notes)。デフォルトはファイルの拡張子です。finish
: (integer)discrete
: (integer) MDトラジェクトリやNMR構造ファイルをロードしようとするようなマルチモデル構造に対しての場合、0
に設定すると同じ原子セットを持つモデルであることを宣言し、メモリを節約することができます。1
に設定すると強制的に各モデルについて別々の原子セットモデルを生成することができます。デフォルトは-1
でファイルタイプに依存する設定になっています。(see discrete objects)quiet
: (integer) デフォルトは1
です。- multiplex : integer Load a multi-model file as separate objects instead of states (see also split_states)
- zoom : integer {default: -1 = use auto_zoom setting}
- partial : integer For session files (.pse). partial=0: discard current session. partial=1: merge with current session (will not load global settings, selections, movie, camera). partial=2: like 1, but also load camera view {default: 0}
- mimic : integer For .mae files, match style from file as close as possible, uses atom-level settings (like cartoon_color) {default: 1}
- object_props : string = Space delimited list of property names (or * wildcard) to load from .sdf or .mae files {default: use load_object_props_default setting} Incentive PyMOL 1.6+
- atom_props : string = Space delimited list of property names (or * wildcard) to load from .mae files {default: use load_atom_props_default setting} Incentive PyMOL 1.6+
保存
分子構造の表示形式のON/OFF
オブジェクトの重ね合わせ
生体分子、特にタンパク質には、構成されるアミノ酸配列が異なるものの概してよく似た構造を取っているものがよくあります。新種のタンパク質について構造解析を行い、既存のタンパク質と構造・機能上よく似たタンパク質が存在した場合には、その構造を比べてみて類似点・相違点を述べるというのが構造解析論文のディスカッションでよく見られる光景です。
重ね合わせのためのコマンドはalign
またはsuper
が用意されています。この2つのコマンドはともに構造の重ね合わせをすることができますが、配列相同性が高い場合はalign
コマンドを、低い場合はsuper
を利用することがそれぞれ推奨されています。アルゴリズム的に見ると、align
は構成アミノ酸配列を考慮するのに対し、super
は配列を考慮せずに構造ベースで重ね合わせようとします。
alignコマンド
使い方
align mobile, target [, cutoff [, cycles
[, gap [, extend [, max_gap [, object
[, matrix [, mobile_state [, target_state
[, quiet [, max_skip [, transform [, reset ]]]]]]]]]]]]]
mobile
= string: 移動するべきオブジェクトのatom selectiontarget
= string: 重ね合わせる先のオブジェクトのatom selectioncutoff
= float: RMS(root mean square :構造のズレの数値指標)を基準に、この値を超えると外れ値とみなして重ね合わせに考慮に入れなくする。 デフォルトは2.0
。cycles
= int: 重ね合わせ試行の繰り返し数。この回数分だけ、重ね合わせる→大きくずれている箇所を検出し、そこを考慮しないで再度重ね合わせ→……を行う。デフォルトは5
回。gap
,extend
,max_gap
: 配列アライメント上でのペナルティパラメータ。object
= string: 重ね合わせ結果をアライメントオブジェクトとして出力するときのオブジェクト名を指定する。デフォルトでは重ね合わせオブジェクトを生成しない。matrix
= string: 配列アライメントでの置換行列を指定する。デフォルトはBLOSUM62
置換行列。mobile_state
= int:mobile
で指定したオブジェクトに複数のstateが存在する場合、どのstateを使ってアライメントするかを指定できる。デフォルトは0
(全state)。target_state
= int:target
で指定したオブジェクトに複数のstateが存在する場合、どのstateを使ってアライメントするかを指定できる。デフォルトは0
quiet
=0
の場合、詳細なアウトプットを表示する。1
の場合は表示しない。デフォルトはコマンドラインから利用した場合0
で、APIから呼び出した場合は1
。max_skip
= ?transform
=1
ならばmobile
オブジェクトを移動させる。0
ならば移動させない。reset
= ?
superコマンド
使い方
ほぼalign
コマンドと同じですが、さらにオプションが追加されています。
super mobile, target [, cutoff [, cycles [, gap [, extend [, max_gap [, object [, matrix [, mobile_state [, target_state [, quiet [, max_skip [, transform [, reset [, seq [, radius [, scale [, base [, coord [, expect [, window [, ante ]]]]]]]]]]]]]]]]]]]]]
reset
= ?seq
= ?radius
= ?scale
= ?base
= ?coord
= ?expect
= ?window
= ?ante
= ?
実例
ここではPDB IDの1alkと3q3qの2つのアルカリホスファターゼを例にとって構造の重ね合わせをしてみましょう。この2つはアルカリホスファターゼでありながら、全体の構造は大きく異なっています。また1alkの方は2量体であるのに対して3q3qの方は単量体で表示されていることに注意してください。
fetch 1alk
fetch 3q3q
align
を使って構造を重ね合わせてみるとこのような形になります。
align 1alk, 3q3q, object=objalign
External GUIの出力結果を見ると、
Executive: RMSD = 25.391 (2096 to 2096 atoms)
となっており、構造のずれを表すRMSD値は25.3とかなり大きな値になっています。
一方で、super
コマンドを使ってみると
super 1alk, 3q3q, object=objsuper
Executive: RMSD = 3.366 (352 to 352 atoms)
となっており、重ね合わせに利用した原子が352 atomsであり、その範囲でのRMSD値が3.366となりました。
また、objalign
とobjsuper
というアライメントオブジェクトが生成されています。このオブジェクトは2つの構造の重ね合わせのときに使った対応部分を黄色い線で表してくれています。super
を行った場合は、1alk, 3q3qに共通しているαβα-sandwich構造の部分だけを自動的にサーチして、その部分だけを利用した重ね合わせを実行してくれています。
分子構造のロード
load
コマンドは様々なファイルフォーマットを読み込むことができます。読み込もうとするファイルの拡張子に対応して自動的に読み込み形式を判定してくれます。例えばPDBファイルを正しく読み込む場合は.pdb
である必要があり、MOLファイルであれば.mol
、Macromodelファイルは.mmod
、XPLOR mapファイルは.xplor
、CCP4 mapファイルは.ccp4
、Raster3Dインプットファイル(Molscript output)は.r3d
、PyMOLセッションファイルは.pse
、pickleになったChemPyモデル.pkl
などは直接読み込むことができます。
以下の入力拡張子は右側のファイルタイプとして認識されます。
入力拡張子 | 認識されるファイルタイプ |
---|---|
ent , p5m | pdb |
mmd , out , dat | mmod |
map , mrc | ccp4 |
cc2 | cc1 |
sd | sdf |
rst7 | rst |
o , dsn6 , omap | brix |
ph4 | moe |
spi | spider |
pym , pyc | py |
p1m , pim | pml |
xml | pdbml |
load
コマンドを使うときにobject
引数が指定された場合には、そのファイルは同名のオブジェクト上にファイルを読み込みます。指定しない場合、拡張子部分を除いたファイル名と同じ名前のオブジェクトが生成されます。
使い方
load filename [,object [,state [,format [,finish [,discrete [,multiplex ]]]]]]
PYMOL API
cmd.load( filename [,object [,state [,format [,finish [,discrete [,multiplex ]]]]]] )
引数
filename
: (string) ロードしたいファイルのファイルパス、またはURLで指定することもできます。object
: (string) 構造ファイルのオブジェクト名です。デフォルト名はロードするファイルのプレフィクスです。state
: (integer) 読み込む構造ファイルをオブジェクトに保存する時、指定した数字のstateの上に上書きする形で読み込みます。例えば、MDのトラジェクトリファイルをオブジェクトの上に読み込む場合は、state=1
を指定すると初期座標を上書きして(削除して)表示できるようになります。0
を指定した場合は最後のstateの後に追加する形で読み込みます。(default:0
)format
: (string) ファイルのフォーマット形式を指定できます(see notes)。デフォルトはファイルの拡張子です。finish
: (integer)discrete
: (integer) MDトラジェクトリやNMR構造ファイルをロードしようとするようなマルチモデル構造に対しての場合、0
に設定すると同じ原子セットを持つモデルであることを宣言し、メモリを節約することができます。1
に設定すると強制的に各モデルについて別々の原子セットモデルを生成することができます。デフォルトは-1
でファイルタイプに依存する設定になっています。(see discrete objects)quiet
: (integer) デフォルトは1
です。- multiplex : integer Load a multi-model file as separate objects instead of states (see also split_states)
- zoom : integer {default: -1 = use auto_zoom setting}
- partial : integer For session files (.pse). partial=0: discard current session. partial=1: merge with current session (will not load global settings, selections, movie, camera). partial=2: like 1, but also load camera view {default: 0}
- mimic : integer For .mae files, match style from file as close as possible, uses atom-level settings (like cartoon_color) {default: 1}
- object_props : string = Space delimited list of property names (or * wildcard) to load from .sdf or .mae files {default: use load_object_props_default setting} Incentive PyMOL 1.6+
- atom_props : string = Space delimited list of property names (or * wildcard) to load from .mae files {default: use load_atom_props_default setting} Incentive PyMOL 1.6+
保存
分子構造の表示形式のON/OFF
オブジェクトの重ね合わせ
生体分子、特にタンパク質には、構成されるアミノ酸配列が異なるものの概してよく似た構造を取っているものがよくあります。新種のタンパク質について構造解析を行い、既存のタンパク質と構造・機能上よく似たタンパク質が存在した場合には、その構造を比べてみて類似点・相違点を述べるというのが構造解析論文のディスカッションでよく見られる光景です。
重ね合わせのためのコマンドはalign
またはsuper
が用意されています。この2つのコマンドはともに構造の重ね合わせをすることができますが、配列相同性が高い場合はalign
コマンドを、低い場合はsuper
を利用することがそれぞれ推奨されています。アルゴリズム的に見ると、align
は構成アミノ酸配列を考慮するのに対し、super
は配列を考慮せずに構造ベースで重ね合わせようとします。
alignコマンド
使い方
align mobile, target [, cutoff [, cycles
[, gap [, extend [, max_gap [, object
[, matrix [, mobile_state [, target_state
[, quiet [, max_skip [, transform [, reset ]]]]]]]]]]]]]
mobile
= string: 移動するべきオブジェクトのatom selectiontarget
= string: 重ね合わせる先のオブジェクトのatom selectioncutoff
= float: RMS(root mean square :構造のズレの数値指標)を基準に、この値を超えると外れ値とみなして重ね合わせに考慮に入れなくする。 デフォルトは2.0
。cycles
= int: 重ね合わせ試行の繰り返し数。この回数分だけ、重ね合わせる→大きくずれている箇所を検出し、そこを考慮しないで再度重ね合わせ→……を行う。デフォルトは5
回。gap
,extend
,max_gap
: 配列アライメント上でのペナルティパラメータ。object
= string: 重ね合わせ結果をアライメントオブジェクトとして出力するときのオブジェクト名を指定する。デフォルトでは重ね合わせオブジェクトを生成しない。matrix
= string: 配列アライメントでの置換行列を指定する。デフォルトはBLOSUM62
置換行列。mobile_state
= int:mobile
で指定したオブジェクトに複数のstateが存在する場合、どのstateを使ってアライメントするかを指定できる。デフォルトは0
(全state)。target_state
= int:target
で指定したオブジェクトに複数のstateが存在する場合、どのstateを使ってアライメントするかを指定できる。デフォルトは0
quiet
=0
の場合、詳細なアウトプットを表示する。1
の場合は表示しない。デフォルトはコマンドラインから利用した場合0
で、APIから呼び出した場合は1
。max_skip
= ?transform
=1
ならばmobile
オブジェクトを移動させる。0
ならば移動させない。reset
= ?
superコマンド
使い方
ほぼalign
コマンドと同じですが、さらにオプションが追加されています。
super mobile, target [, cutoff [, cycles [, gap [, extend [, max_gap [, object [, matrix [, mobile_state [, target_state [, quiet [, max_skip [, transform [, reset [, seq [, radius [, scale [, base [, coord [, expect [, window [, ante ]]]]]]]]]]]]]]]]]]]]]
reset
= ?seq
= ?radius
= ?scale
= ?base
= ?coord
= ?expect
= ?window
= ?ante
= ?
実例
ここではPDB IDの1alkと3q3qの2つのアルカリホスファターゼを例にとって構造の重ね合わせをしてみましょう。この2つはアルカリホスファターゼでありながら、全体の構造は大きく異なっています。また1alkの方は2量体であるのに対して3q3qの方は単量体で表示されていることに注意してください。
fetch 1alk
fetch 3q3q
align
を使って構造を重ね合わせてみるとこのような形になります。
align 1alk, 3q3q, object=objalign
External GUIの出力結果を見ると、
Executive: RMSD = 25.391 (2096 to 2096 atoms)
となっており、構造のずれを表すRMSD値は25.3とかなり大きな値になっています。
一方で、super
コマンドを使ってみると
super 1alk, 3q3q, object=objsuper
Executive: RMSD = 3.366 (352 to 352 atoms)
となっており、重ね合わせに利用した原子が352 atomsであり、その範囲でのRMSD値が3.366となりました。
また、objalign
とobjsuper
というアライメントオブジェクトが生成されています。このオブジェクトは2つの構造の重ね合わせのときに使った対応部分を黄色い線で表してくれています。super
を行った場合は、1alk, 3q3qに共通しているαβα-sandwich構造の部分だけを自動的にサーチして、その部分だけを利用した重ね合わせを実行してくれています。
第5章 PyMOLの様々な機能
結晶構造の電子密度マップを表示する
PyMOLは結晶構造の電子密度データを表示させることも可能です。
例としてPDB: 3TG0の大腸菌由来アルカリホスファターゼの電子密度マップを取得して表示させてみます。PDB ID:1ALKのものは電子密度マップがデータベースに登録されていないため、代わりにほぼ同一な構造情報をこちらを例として用います。
# インターネットから3tg0のPDBデータをダウンロード。
fetch 3tg0
# 3tg0の電子密度マップ(2fofc形式)を3tg0_mapというオブジェクトでダウンロードし、表示する
fetch 3tg0, 3tg0_map, type=2fofc
# A chainに結合している無機リン酸PO4に注目する
center /3tg0/H/A/PO4`504
ここまでのロードが終了すると、オブジェクトパネルに3tg0_map
というオブジェクトが追加されているはずです。ここで、続いて上部メニューバーからWizard -> Densityを選択します。
この操作によって、現在の視点周辺に青色の電子密度マップが重なって表示されるようになります。
ここで、電子密度マップはw1_3tg0_map
というオブジェクト名になっています。各種表示を変更するには以下の部分をクリックして操作します。
- 色はオブジェクトパネルのCボタンから変更することができます。positiveとnegativeそれぞれについて別の色を指定することができます。デフォルトの青色メッシュは濃くて見えにくいので、もう少し薄い色を指定すると見やすくなるでしょう。
Density Map Wizard
と書かれた部分の中のRadius
の部分をクリックすることで、電子密度の表示範囲を変更することができます。@ 1.0 sigma
と書かれているところをクリックすると、電子密度メッシュの表示範囲を変更することができます。sigmaの数字が大きいほど、表示されるメッシュの範囲は小さくなります。- デフォルトではMap 1のみが働いていますが、Map 2、Map 3部分をクリックしてオブジェクト名を指定すれば、さらに重ねて電子密度マップを表示することができます。異なるsigmaのメッシュを色違いで表示させることも可能です。
- 表示設定をやり直したいときは
w1_3tg0_map
のAボタンをクリックし、delete object
をした後、下のWizardのUpdate Maps
を押せば電子密度が再び表示されるようになります。
APBSプラグインを使った表面電荷表示
PyMOLのプラグインでデフォルトでインストールされているAPBSを使って表面電荷を表示してくれる方法を説明します。
このプラグインは、インストーラー版を使ってPyMOL 2をインストールした場合にはその中に同梱されているので別段の準備は必要ありませんが、オープンソース版をインストールした場合には様々な準備が必要となりますので、下にあるHomebrewでAPBS, PDB2PQRをインストールしておきます。まずはAPBSプラグインの使い方を説明します。
APBSを使ってみる
今回は例としてPDB: 3x2oの構造のみを開いた状態にしておきます。その後、まず上部メニューの[Plugin]を選択し、次に[APBS Electrostatics]を選択します。
中のメニューはこうなっています。
Mainのタブでまずselection
部分を確認します。この例ではpolymer & 3x2o
という表示になっていますが、これはアミノ酸20種類かつオブジェクト3x2oが選択されていることを意味し、この選択範囲についてAPBSの電荷計算をこれから行うことを意味します。
この選択範囲に問題がなければ、このメニューの下の方にあるRunボタンを押すだけでAPBSの計算が動き出します。途中Warnings: "do you want to continue?"が表示された場合はYesと答えておきましょう。
正常にAPBSの計算が終わると、Close the APBS dialog?と問われます。閉じてもOKです。
計算が終わると、このように3x2oの表面が赤・白・青に分けて表示されるようになりました。
赤は負電荷の多い箇所、青は正電荷の多い箇所を表しています。白は中性です。
右側のInternal GUIのメニューにはrun01
というオブジェクトグループが新しく増えています。ここの+マークを押すと子オブジェクトが現れます。このうちapbs_ramp01
というオブジェクトのA
メニューを開いてみましょう。
上の方のlevels
を選ぶとRange
を変えることができそうです。このRangeは先述の負電荷・正電荷の色付けの表示領域を表しており、値が小さいほど、描画上で最大となる赤・青のしきい値が小さくなります。つまり、デフォルトの5.0から2.0にしてみると
こんな感じで赤と青の箇所が濃く表示されるようになります。
この表面電荷表示はSurface表示として扱われているので、set transparency, 0.5
として透明度を変更してあげることができます(0.5
は透明度)。
透明度を下げてCartoon表示とともに観察すれば、分子のどの部分構造の付近が負電荷、正電荷になっているかがわかりやすいと思います。
さて、ここで先程のAPBS Electrostaticsメニューのプラグイン画面に戻ってみましょう。そこのMainタブの下の方にはOther Visualizations
というOptionsボタンがあります。ここを開いてみると、「mapオブジェクトが計算されたあと、オブジェクトメニューパネルの"Action"アイテムを使うことで追加の描画を生成することができる」(日本語訳)と書かれてあります。
これに従って追加操作をしてみましょう(書きかけ)。
Advanced Configuration
APBS Electrostaticsの計算のパラメータはデフォルトでも十分問題なく動作すると思いますが、上級者のために、パラメータを変更することもできるようになっています。[APBS Templrate]のタブを開くと、表面電荷を計算するための設定ファイルが表示されます。
ここのBrowse...のところからは完成された設定ファイルを読み込ませることができます。公式ドキュメントはhttps://apbs-pdb2pqr.readthedocs.io/en/latest/apbs/input/ にあるので、そちらを参考にするのも良いでしょう。
最後の[Advanced Configuration]タブからは、APBSとPDB2PQRのプログラムのインストール場所を指定したり、コマンドオプションを追加して計算させることもできます。追加コマンドオプションの一覧はhttps://apbs-pdb2pqr.readthedocs.io/en/latest/pdb2pqr/invoking.htmlなどが参考になります。
以下の項で説明するように、オープンソース版PyMOLではAPBS, PDB2PQRがプリインストールされていないため、自前で用意してからこのAdvanced Configurationで正しくプログラムの位置を指定してあげる必要があります。
APBSのインストール
(2022年5月3日更新)
オープンソース版PyMOLを使っている人向けの説明です。やり方は3通りあって、Homebrewを使う方法と、バイナリインストールとソースコードからのインストールがあります。macOSの方やLinuxbrewが使える方はHomebrewの方法が簡単です。ソースコードからのインストールの方法は上級者向けです。
macOS(Linux OSの場合はLinuxbrewが必要)を使っている方は、私が作成したHomebrewのFormulaを使うことで簡単にインストールすることができます。執筆時点ではバージョン3.4.0です。
brew install brewsci/bio/apbs
これにより、apbs
コマンドが利用できるようになります。
$ apbs --version
----------------------------------------------------------------------
APBS -- Adaptive Poisson-Boltzmann Solver
Version APBS 3.4.0
...
(以下省略)
インストール先はwhich apbs
で調べることができます。
$ which apbs
/opt/homebrew/bin/apbs # M1 Macの場合
/usr/local/bin/apbs # Intel Macの場合
ここで表示されたインストール先のパス名をAdvanced ConfigurationのProgram Locationsのapbsの欄に入力すれば動作準備完了です。
PDB2PQRのインストール
(2022年5月3日更新)
オープンソース版PyMOLを使っている人向けの説明です。pythonのpipを使ったインストールの方法が最も簡単でおすすめです。執筆時点ではバージョン3.5.2です。先に、
$ python3 -m pip install pdb2pqr
...
(中略)
...
Successfully installed pdb2pqr-3.5.2
インストール先はwhich pdb2pqr30
で調べることができます。バージョン3以前と異なり、バイナリ名がpdb2pqr
からpdb2pqr30
に変わっていることに気をつけてください。
$ which pdb2pqr30
/opt/homebrew/bin/pdb2pqr30 # M1 Macの場合
/usr/local/bin/pdb2pqr30 # Intel Macの場合
ここで表示されたインストール先のパス名をAdvanced ConfigurationのProgram Locationsのpdb2pqrの欄に入力すれば動作準備完了です。
APBS GUIプラグインのインストール
オープンソース版PyMOLはバイナリ版と違い、GUIプラグインがあらかじめインストールされていません。しかしバイナリ版のプラグインのディレクトリをそのままオープンソース版の方のディレクトリにコピーしてくれば使用することができます。
このGUIプラグイン部分は私のGithubにコピーして置いてありますので、それをオープンソース版PyMOLのプラグインディレクトリに追加してやります。ターミナルを開いて
# pymolpluginディレクトリをダウンロード
cd ~
git clone https://github.com/YoshitakaMo/pymolplugin.git
# ファイルをオープンソース版PyMOLのプラグインディレクトリに追加
cp -rp ~/pymolplugin/* ${HOMEBREW_PREFIX}/opt/pymol/libexec/lib/python3.10/site-packages/pmg_tk/startup
# ここでPyMOLを立ち上げてみて、プラグインがインストールされていればOK
# インストールできたら~/pymolpluginディレクトリは削除してOK
rm -rf ~/pymolplugin
と入力します。このコピーを行った後にopen-source版PyMOLを立ち上げると、上部メニューのPluginのところにAPBS Electrostaticsの文字が現れているはずです。
この文字をクリックし、Advanced Configurationのタブをクリックします。このProgram Locationsを自身の環境にあわせて設定する必要があります。
HomebrewでAPBSとPDB2PQRをインストールした場合は、上図のようにapbsの欄を/usr/local/bin/apbs
にし、pdb2pqrの欄を/usr/local/bin/pdb2pqr30
に設定します(※M1以降のMacの方はそれぞれ/opt/homebrew/bin/apbs
と/opt/homebrew/bin/pdb2pqr30
)。もしソースコードからインストールした場合にはこの限りではありませんので、適切なapbs, pdb2pqrバイナリ本体へのpathを指定しましょう。
他の部分は特に変更する必要はありません。これで右下のrunを押せばめでたくAPBSが動くはずです。
動画の作成方法
自身の研究しているタンパク質の構造を他の人にもしっかりと見てもらうための方法は、1つにはPyMOLセッションファイルに保存して、それをPyMOLで開いてもらうということが考えられます。しかし、PyMOLセッションファイルは相手のパソコンやmacにPyMOLがインストールされてなければ閲覧することはできません。そこで、より広い範囲で色んな人に見てもらうための方法として、分子が動いている様子を一般的な動画形式に変換するという方法があります。これならPowerpointなどのスライドに埋め込むこともできますし、ウェブ上でも公開できます。
ここではその方法をいくつか紹介します。
目指す動画の例
先に完成例としての動画を表示します。
ポイントは
- 全体像を見せつつ、基質結合部位を見せる
- 背景画像を使う
- 無料のコマンドラインツールのみを使用し、有料アプリを使わない
です。
背景画像を使っているのは、使用しないと黒背景になることが多くなってしまうためです。
使うツール
動画への出力はffmpegを使います。macOSならば
$ brew install ffmpeg
でインストールできますので、これをインストールしておきます。もしOpen-source版のPyMOLをbrew install pymol
でインストールしていた場合はffmpegも自動的にインストールされているはずです。
手順1:画面サイズを決める
動画として出力する予定の画面サイズを先に決めておくと後が楽です。ここでは横1280ピクセル縦720ピクセルの動画を出力することにします。これはコマンドでかんたんに設定することができます。コマンド入力欄に
viewport 1280, 720
と入力すると、画面が指定したサイズに変化します。
手順2:Sceneを保存する
3.7 Sceneで述べているように、Scene機能を使うとPyMOLでのカメラアングルと表示状態を保存することができ、左下に現れたメニューからいつでもその状態を呼び出すことができます。動画を作成する上でもこのScene機能を活用することが可能です。
例としてまずアルカリホスファターゼの二量体構造全体が見える位置でSceneを1つ保存しておきます。いい感じの表示設定とカメラアングルが得られたら、上部メニューのSceneからStoreを選びF1〜F12のいずれかに保存します(ここではF1にしておきます)。
左下にF1ボタンが現れました。以降はこのボタンを押すと表示設定とカメラアングルが呼び出されます。
続いて基質結合部位に注目したカメラアングルをSceneのF2として保存しておきます。同様の操作でこんな感じで保存しておきます。
Sceneをすべて設定し終えたら、上部MovieメニューからProgram, Scene Loop, Nutate, 30 de. over 2sec. を選びます。これはSceneを順番に表示しつつ、各Sceneで2秒間30°ずつ揺らしながら次の状態に移行する設定です。設定には色々あるので、3.4 Movieから好きなものを選んでください。
右下のスタートボタンを押すとこんな感じで再生されます。
ここに表示されている画面が動画として出力されるので、よくチェックしておきます。
もし手順1を飛ばしていた場合はここでviewport
コマンドを入れて画像サイズを調節し、再度手順2のScene保存をやり直します。
よければセッションファイル(pseファイル)として保存しておきます。
手順3:PNG形式で各フレームを保存する
動画に表示されている動きの全フレームをPNG画像形式で出力させます。これはFile, Export Movie As, PNG Imagesから選択することができます。
Moview Exportのダイアログボックスでは出力画像サイズを設定することができます。もしここで当初予定していた画像サイズから変わっていれば(少し変わっていることがよくあります)、その数字を修正しておきます。また、RenderingオプションはRay(Slow)の方がきれいに出力されますが、その分時間がかかります。今回はRayでやります。
最後に一番下のSave Movie as...から出力先のディレクトリを選択します。このとき、出力先ディレクトリは新規ディレクトリを作成してからその中に保存することを強く勧めます。こうしないと画像が散らばって面倒です。
今回の例では保存先をmovietestというディレクトリ上に保存することにします。そしてSave Asの名前欄にALP
と入力します(この文字は画像のprefixなので任意の文字列でOKです)。
すると、出力先のmovietestディレクトリにALP0001.png, ALP0002.png, ... といった具合にすべてのフレームの画像が出力されます。しばらくかかるのでこのまますべて終わるまでじっくり待ちます。
手順4:背景画像を使ってffmpegで動画を生成する
好きな背景画像を適当に用意します。今回は以下のものを使いました。
画像サイズはあらかじめ出力したタンパク質の画像サイズ(1280 x 720)と合わせておくと良いでしょう。画像の切り抜きにはコマンドラインツールのImagemagickを使うこともできます。詳しくはImageMagick の画像 Cropの記事などを参考にしてください。
この背景画像をbg.jpg
として、先程のmovietestディレクトリに置きます。その後、以下のコマンドでffmpegを実行するだけで、動画ファイルout.mp4
が生成されます。
$ ffmpeg -r 30 -i bg.jpg -vf 'movie=ALP%4d.png [over], [in][over] overlay' -vcodec libx264 -pix_fmt yuv420p out.mp4
-r
:フレームレート-i
:インプット画像-vcodec libx264
:スマートフォン向けの動画(H.264+aac)に変換-pix_fmt yuv420p
:エンコーダに渡すピクセルフォーマットを指定。yuv420pはH.264動画変換のときのデフォルトらしい-vf 'movie=ALP%4d.png [over], [in][over] overlay'
:ALPではじまる連番画像をインプット画像の上に重ねる
これで動画が出力されました。
その他
MDシミュレーションでトラジェクトリを表示させたときのタンパク質が動いている様子もこれと同様の手順で出力することができます。
表示形式のプリセット
PyMOLのオブジェクトパネルのAボタンの中にはpreset
と言うメニューがあります。これを使うと、様々な表示形式に一発で変換できます。
- classified
- simple
- simple (no solvent)
- ball and stick
- b factor putty
- technical
- ligands
- ligand sites
- cartoon
- solid surface
- solid (better)
- transparent surface
- transparent (better)
- dot surface
- mesh surface
- pretty
- pretty (with solvent)
- publication
- publication (with solvent)
- protein interface
- default
- hydropathy
以上のプリセットが用意されています(ver. 2.5.0 時点)。
このプリセットが選択された時、内部処理的には一度デフォルト形式であるclassified
を設定してから選択されたプリセットの描画設定を上書きしていく形で適用しています。ただしpymolrc
に書かれたいくつかの設定値(transparency
, surface_quality
, surface_type
, sphere_scale
, stick_radius
, stick_color
, cartoon_highlight_color
, cartoon_fancy_helices
, cartoon_smooth_loops
, cartoon_flat_sheets
, cartoon_side_chain_helper
など)はauto_show_classified
としてPyMOL起動時に記憶され、classified
は描画形式以外この値を利用します。
プリセットの定義は、modules/pymol/preset.py
の中に書かれてあります。 https://github.com/schrodinger/pymol-open-source/blob/master/modules/pymol/preset.py も参考にすると良いでしょう。
ここではギャラリー風に紹介していきます。
classified
現在PyMOLのデフォルト設定に最も近い描画形式です。タンパク質構造はCartoon表示、リガンドはSphere表示です。デフォルト設定との細かな違いとして、水分子がwire-nonbonded表示されないなどが挙げられますが、デフォルトの描画設定に戻したいときはこの設定を呼び出すと良いでしょう。
ただし、色設定は変化しないため、手動で戻す必要があります。
コマンドで行いたい場合は、以下のobjectname
部分をオブジェクト名に変えて実行します(例: 1ALK)。以下同様。
preset.classified("objectname",_self=cmd)
simple
タンパク質構造は主鎖だけをシンプルに表示するribbon表示、リガンドはStick表示になります。また、チェインごとに自動で色分けがなされます。
preset.simple("objectname",_self=cmd)
simple (no solvent)
上記simple表示について、溶媒の表示がなくなったものです。
preset.simple_no_solv("objectname",_self=cmd)
ball and stick
各原子を小さめのボールで表し、結合を白色のスティックで表示します。色分けは変化しません。
preset.ball_and_stick("objectname",_self=cmd)
b factor putty
温度因子であるB factorをもとに色付けし、さらに温度因子が大きいほど太くチューブ状に表示します。温度因子は青色ほど低く、赤色ほど高くなっています。この表示では主鎖構造のみが表示されます。
preset.b_factor_putty("objectname",_self=cmd)
technical
各チェインのN末端からC末端にかけて青色→赤色となるようなRainbowカラーリングが適用されます。また、水素結合が自動的に検出され、<objectname>_pol_conts
というオブジェクトが生成されます。水素結合を表示させたくない場合はオブジェクトパネル上でこの<objectname>_pol_conts
の表示をOFFにすればOKです。
preset.technical("objectname",_self=cmd)
ligands
上述のRainbowカラーリングが施され、基本的には主鎖構造のみのribbon表示になりますが、リガンドから一定範囲のみ側鎖を含んだline表示が行われ、リガンドへの水素結合自動検出処理が行われます。
カメラもそのリガンド周辺にズームしてくれますが、リガンドが複数ある場合はそれらの中間にカメラを合わせてしまうようです。
preset.ligands("objectname",_self=cmd)
ligand sites
上記ligands設定の拡張版と言えます。様々な表示形式が用意されています。いずれのプリセットでも水素結合を検出し、<objectname>_pol_conts
というオブジェクトを生成します。
Cartoon
タンパク質をCartoon表示のままRainbowカラーリング、リガンドをStick表示で、周辺の一定範囲のみline表示にします。
preset.ligand_cartoon("objectname",_self=cmd)
solid surface
タンパク質をribbon表示, Rainbowカラーリング, リガンドをStick表示, 周辺の一定範囲のみsurface表示にします。
preset.ligand_sites("objectname",_self=cmd)
solid (better)
上記solid surfaceプリセット表示のsurfaceクオリティが上がったものです。設定としてはset surface_quality, 1
を追加しています。
preset.ligand_sites_hq("objectname",_self=cmd)
transparent surface
上記solid surfaceの透明度を上げ(set transparency, 0.33
)、周辺の残基をstick表示にしたものです。
preset.ligand_sites_trans("objectname",_self=cmd)
transparent (better)
上記transparent surfaceプリセット表示のsurfaceクオリティが上がったものです。設定としてはset surface_quality, 1
を追加しています。
preset.ligand_sites_trans_hq("objectname",_self=cmd)
dot surface
上記solid surfaceの表面表示をdotにしたものです。
preset.ligand_sites_dots("objectname",_self=cmd)
mesh surface
上記solid surfaceの表面表示をdotにしたものです。
preset.ligand_sites_mesh("objectname",_self=cmd)
pretty
生体分子のレインボー表示、リガンドをstick形式で表示します。
preset.pretty("objectname",_self=cmd)
pretty (with solvent)
上記prettyに加えて溶媒やリガンドをnb_spheres表示にします。
preset.pretty_solv("objectname",_self=cmd)
publication
cartoon表示において、
- ループ構造のスムージング
set cartoon_smooth_loops, 1
- ヘリックスやシートの内部を灰色に設定
set cartoon_highlight_color, grey50
- ヘリックスのファンシー化
set cartoon_fancy_helices, 1
- シート構造の平坦化(初期設定でON)
set cartoon_flat_sheets, 1
- 側鎖構造のみの表示(初期設定でON)
set cartoon_side_chain_helper, 0
を行います。
preset.publication("objectname",_self=cmd)
publication (with solvent)
上記の溶媒表示版です。
preset.pub_solv("objectname",_self=cmd)
protein interface
異なるチェインの境目から4.5 Å以内に一部でも含まれる残基をStick表示にします。
preset.interface("objectname",_self=cmd)
default
PyMOL 1時代はこのシンプルなライン表示だけの形式がデフォルト表示でした。Defaultとついていますが、現在はデフォルト設定ではなくなり、classified presetに取って替わられています。
preset.default("objectname",_self=cmd)
Gaussian 16のcubeファイルを開いて分子軌道を表示する
PyMOLは、VMDとまでは行きませんが、様々なファイルの可視化にも対応しています。今回紹介するのは、Gaussian 16などで計算された分子の分子軌道(molecular orbital)をPyMOL上で表示させるテクニックです。
GaussView 6やVMD 1.9.4などの他のソフトを用いて可視化してもよいのですが、タンパク質の構造生物学をやっている人ならだいたい使ったことがあり、扱いに慣れているPyMOLで見られれば、共同研究のときとかに喜ばれると考えられます。
ここでは、簡単な計算の例を示しながら、それをGaussViewまたはPyMOLで分子軌道を表示する時の方法を紹介します。
分子軌道を表示するのに必要な環境
- GaussView 6, VMD, PyMOL 2.3.0以降のうち、いずれか1つをインストールしてあるパソコン
この記事ではGaussView 6またはPyMOL 2.3.0での方法を示します
Example 1-1. シクロペンタジエンの場合
例として、シクロペンタジエン分子の構造をGaussian 16(g16
)で構造最適化させ、分子軌道を計算させてみます。インプットファイルcyclopenta.gjf
を以下のように書いてg16
で計算させます。
%chk=cyclopenta.chk
%mem=20GB
%nprocshared=12
#p opt b3lyp/6-311g(d,p) pop=full
Title
0 1
C -1.78668958 -0.09572728 0.64728372
C -1.36269158 1.27506872 0.64728372
H -1.14231658 -0.96843328 0.64730872
H -0.33812858 1.63156072 0.64725872
C -3.62816658 1.22478072 0.64727472
H -4.64865477 1.54029066 0.71018208
C -3.18843958 -0.09572728 0.64728372
H -3.80595672 -0.96740593 0.58605536
C -2.51974858 2.06652172 0.64717972
H -2.52502738 2.68450968 1.52065726
H -2.55124904 2.68351582 -0.22644835
%mem=20GB
部分は計算にメモリを20GB使用するということ、%nprocshared=12
は計算で使うCPU数を指定します。この値は各計算環境に応じて適宜変更する必要があります。ここで、重要なのは計算条件を指定する#p opt pop=full
の部分です。opt pop=full
で構造最適化計算と、電子密度解析計算を行うよう指示します。計算レベルや基底関数についてはb3lyp/6-311g(d,p)
でなくても好みのものを使ってください。
(ちなみにGaussian 16だと%nprocshared
の指定は非推奨になっています。最近実装された、環境変数での指定方法のほうが使い勝手が良いと思います。さらに、GPUを使った計算をしたい場合にはもっと別の指定方法になります。 参考: http://www.hpc.co.jp/gaussian_Link-0-Equivs.html )
実行コマンド例は
#!/bin/bash
job="cyclopenta"
export GAUSS_CDEF="0-11" # cyclopenta.gjfファイルの%nprocshared=12に対応
g16 < ${job}.gjf > ${job}.log
計算が終わりますと、計算結果のcyclopenta.log
ファイルだけでなく、.chk(チェックポイント)ファイルcyclopenta.chk
も生成されているはずです。分子軌道の可視化や以降の処理にはこのファイルを用います。
Example 1-2. chkファイルの処理
このchkファイルを用いて、まずターミナル上での以下のコマンドで、formatted checkpoint file形式に変換します。
formchk cyclopenta.chk cyclopenta.fchk
として、formatted checkpoint fileに変換します。このformchk
コマンドはGaussian 16と同時にインストールされているはずのコマンドです。Gaussian 16がインストールされてあるマシンやスパコンでは、Gaussian 16の本体であるg16
コマンドが使えるならば、ほぼ間違いなく使えるはずです。
(ちなみにGaussian 16で計算したchkファイルをGaussian 09時代のformchk
コマンドで変換することはできない……かもしれません)
続いて、上のコマンドで作成されたcyclopenta.fchk
ファイルから、必要な分子軌道のデータを.cube
形式のファイルに抽出します。
cubegen 0 MO=homo cyclopenta.fchk cyclopenta_homo.cube
このcubegen
についての操作方法はGaussian公式のcubegenの解説ページのページを参照してください。MO=のあとにhomoやlumo、または数字を指定すると、それに対応した分子軌道が出力されます。
今回はシクロペンタジエンのHOMO(最高被占軌道)のデータを取り出したいので、MO=homoとし、.fchkファイルと出力ファイル名cyclopenta_homo.cube
を指定します。
Example 1-3. cubeファイルの表示
Case 1. GaussView 6で表示する
GaussView 6で表示する時、必要になるファイルはcyclopenta.log
とcyclopenta_homo.cube
です。まずはふつうにcyclopenta.log
を開きます。
続いて、Results > Surfaces/Contoursを選択し、Cube ActionsからLoad Cubeを選び、cyclopenta_homo.cube
を選択します。
続いて、Surface Actions > New Surfaceをクリックすると、分子軌道の図が表示されるようになります。
このSurfaceの描画モードを変えたい場合は、この紫の画面内で右クリックし、View -> Display Formatを選択します(macOSはCommand+DでもOK)。
このDisplay Formatウィンドウの中で、右端のSurfaceタブを選び、Format: transparentとすれば、半透明な表面を描画することができます。透明度はそこのスライダで調節できます。またmesh表示も可能です。
以下では、この部分をPyMOLでやってみる方法を紹介します。
Case 2. PyMOL 2.3.0で表示する
PyMOLで開く場合には、
cyclopenta.log
の最終構造に対応する構造ファイルをPDB形式などで用意し、PyMOLに表示させる- この上に
cyclopenta_homo.cube
をロードし、適切な処理を施す。
という流れになります。このうち、1.で述べた構造ファイルを用意する部分はやや面倒かもしれません。お使いのマシンにAmberTools 18がインストールされている状態であれば、
antechamber -i cyclopenta.log -fi gout -o cyclopenta.pdb -fo pdb
とすることで最終構造のPDBファイルを一発変換できます。AmberToolsがない場合は、オープンソースのファイルコンバータであるOpen Babelを使った変換法で代用できます。Homebrewのインストール方法は適当にググってください。
# Open BabelをHomebrewでインストール
brew install open-babel
# Usage:
# obabel [-i<input-type>] <infilename> [-o<output-type>] -O<outfilename> [Options]
# input-typeにはまだg16フォーマットがサポートされていないのですが、g09で代用可能だと思います。
# see also 'http://openbabel.org/docs/current/FileFormats/Overview.html#file-formats'
obabel -i g09 cyclopenta.log -o pdb -O cyclopenta.pdb
こうしてファイル形式を変換して作成したcyclopenta.pdb
をPyMOLで開いてみます。
んー、本来は二重結合になっている炭素の結合情報が、全部同じような線で繋がれてしまっていますね。これが嫌だな〜って方は、以下のようにして二重結合っぽい表示に変えてみます。
二重結合にしたい原子の上でそれぞれ右のダブルクリック(マウスにホイールがある場合はホイールクリックでも可能)をすると、Pk1, Pk2という選択印が付きます。この状態で、PyMOLのコマンド unbond ; bond order=2
を実行します(コマンド入力できるフォームは2箇所ありますが、どちらに入れても同じです)。このorder=2
で結合次数を指定しています。
これで二重結合っぽい表示に変わりました。ついでに、好みで以下の設定を入れてGaussViewっぽい描画設定にしてみます。
show sticks
show spheres
set stick_radius, 0.1
set sphere_scale, .22
set sphere_scale, .18, elem H
では、PyMOLにcyclopenta_homo.cube
ファイルをロードします。コマンドは以下の通り
load /path/to/cyclopenta_homo.cube
isosurface Asurf1, cyclopenta_homo, 0.02
isosurface Bsurf1, cyclopenta_homo, -0.02
color red, Asurf1
color blue, Bsurf1
set transparency, 0.5
load
部分は、cyclopenta_homo.cube
のファイルのあるファイルパスを指定します。デスクトップ上に置いてあるならばload ~/Desktop/cyclopenta_homo.cube
みたいに。以下のisosurface
コマンドで分子軌道をしきい値0.02, -0.02で作成します。正と負の波動関数に対応する各電子雲をAsurf1, Bsurf1というオブジェクト名で作成し、色付けを red, blueにしています。
Asurf1, Bsurf1の色変更は、PyMOLのオブジェクト色変更と同じ感覚でマウスを使って簡単に変更できます。
PyMOL上でのpythonスクリプトの実行:基本編
PyMOLの大きな強みの1つとして、PyMOLのコマンドラインからpythonスクリプトを実行させることができることが挙げられます。ここではいくつかの例を挙げながら、PyMOL上でのpythonスクリプト実行機能を紹介してみます。ただし、python3についての基本的な知識があることを前提とします。
Pythonの設定を確認する
まずは現在PyMOLが動作しているPython環境を確認するために、バージョン情報とPATHをPyMOLのコマンド入力欄から確認してみましょう。コマンドは通常のpythonと同じように
# pythonのバージョンを表示
import sys
print(sys.version)
# pythonのモジュール検索PATHを確認
print(sys.path)
となります。返り値は、私の環境(macOSのHomebrewでインストールした場合)では
# PyMOL>print(sys.version)
3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]
# PyMOL>print(sys.path)
['', '/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python310.zip', '/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10', '/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload', '/Users/YoshitakaM/Library/Python/3.10/lib/python/site-packages', '/usr/local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/site-packages/coot', '/usr/local/lib/python3.10/site-packages/coot/rcrane', '/usr/local/Cellar/pybind11/2.10.0/libexec/lib/python3.10/site-packages', '/usr/local/Cellar/pymol/2.5.0/libexec/lib/python3.10/site-packages', '/usr/local/Cellar/sip/6.6.2_1/libexec/lib/python3.10/site-packages', '/usr/local/Cellar/modeller/10.3_1/modlib', '/usr/local/opt/python-tk@3.10/libexec', '/Users/YoshitakaM/apps/pymol-psico']
のようになりました。print(sys.path)
で表示されたPATHからはモジュールをimportすることができます。
PythonスクリプトをPyMOL上で実行する
PyMOLコマンドラインからはpython
とpython end
という入力の間に任意のpythonスクリプトを挟むことで、PyMOL上で擬似インタラクティブにコマンドを実行することができます。ただし、一度python
を入力した後はpython end
を入力するまではフィードバックが得られないことに注意しましょう。
例えば、以下のように変数x
に10
という値を入れてそれをprintさせるだけの簡単なスクリプトをコマンドラインに入力してみます。
python
x = 10
print(x)
python end
PyMOLのアウトプットとしては
PyMOL>python
PyMOL>x = 10
1:x = 10
PyMOL>print(x)
2:print(x)
PyMOL>python end
PyMOL>python end
10
というように表示され、最後に10
という結果がprintされたことがわかります。
この機能を使えば、Pythonを使い慣れた方であれば様々な応用可能性があることに気づくと思います。例えば、あるディレクトリの中で目的の構造ファイル群だけPyMOL上にロードしたいという例では、以下のようにPythonスクリプトを書くことができます。
# globモジュールをインポートし、ワイルドカード*によって
# 拡張子がcifであるファイルを一括でPyMOL上にロードする
python
from glob import glob
for file in glob("*.cif"):
cmd.load(file)
python end
コマンドを外部ファイルに保存し、PyMOLからスクリプトを呼び出す
上で挙げた一括ロードのPythonスクリプトを繰り返し使いたいときは、別ファイルにスクリプトを保存しておいてそれを呼び出すような形にすれば、毎回入力しなくて済むようになります。この場合は、python
とpython end
の間の部分だけを別のファイル(名前はcifload.py
とします)に書いておきます。
from glob import glob
for file in glob("*.cif"):
cmd.load(file)
これをPyMOL上から呼び出すときには、コマンドラインからrun /path/to/cifload.py
として呼び出します(/path/to/
の部分はcifload.py
が存在するディレクトリパスに適宜置き換えてください)。
拡張コマンドを使えるように読み込む
発展的な内容ですが、上記の方法を使えばPyMOLWikiのScript Libraryなどで公開されている拡張コマンドを即座に使えるようにすることもできます。例として, タンパク質の色分けをアミノ酸の疎水性〜親水性に応じて行うcolor_h
, color_h2
コマンド(https://pymolwiki.org/index.php/Color_h)を使えるようにします。
上記ページのコードのfrom pymol import cmd
からcmd.extend('color_h2',color_h2)
の前にpython
を、最後にpython end
を入力することで、color_h
, color_h2
コマンドが使えるようになります。
これによってcolor_h
, color_h2
の拡張コマンドが使えるようになりました。もちろん、外部ファイルに保存しておいてrun ~~
で呼び出すことも可能です。
結晶構造の電子密度マップを表示する
PyMOLは結晶構造の電子密度データを表示させることも可能です。
例としてPDB: 3TG0の大腸菌由来アルカリホスファターゼの電子密度マップを取得して表示させてみます。PDB ID:1ALKのものは電子密度マップがデータベースに登録されていないため、代わりにほぼ同一な構造情報をこちらを例として用います。
# インターネットから3tg0のPDBデータをダウンロード。
fetch 3tg0
# 3tg0の電子密度マップ(2fofc形式)を3tg0_mapというオブジェクトでダウンロードし、表示する
fetch 3tg0, 3tg0_map, type=2fofc
# A chainに結合している無機リン酸PO4に注目する
center /3tg0/H/A/PO4`504
ここまでのロードが終了すると、オブジェクトパネルに3tg0_map
というオブジェクトが追加されているはずです。ここで、続いて上部メニューバーからWizard -> Densityを選択します。
この操作によって、現在の視点周辺に青色の電子密度マップが重なって表示されるようになります。
ここで、電子密度マップはw1_3tg0_map
というオブジェクト名になっています。各種表示を変更するには以下の部分をクリックして操作します。
- 色はオブジェクトパネルのCボタンから変更することができます。positiveとnegativeそれぞれについて別の色を指定することができます。デフォルトの青色メッシュは濃くて見えにくいので、もう少し薄い色を指定すると見やすくなるでしょう。
Density Map Wizard
と書かれた部分の中のRadius
の部分をクリックすることで、電子密度の表示範囲を変更することができます。@ 1.0 sigma
と書かれているところをクリックすると、電子密度メッシュの表示範囲を変更することができます。sigmaの数字が大きいほど、表示されるメッシュの範囲は小さくなります。- デフォルトではMap 1のみが働いていますが、Map 2、Map 3部分をクリックしてオブジェクト名を指定すれば、さらに重ねて電子密度マップを表示することができます。異なるsigmaのメッシュを色違いで表示させることも可能です。
- 表示設定をやり直したいときは
w1_3tg0_map
のAボタンをクリックし、delete object
をした後、下のWizardのUpdate Maps
を押せば電子密度が再び表示されるようになります。
APBSプラグインを使った表面電荷表示
PyMOLのプラグインでデフォルトでインストールされているAPBSを使って表面電荷を表示してくれる方法を説明します。
このプラグインは、インストーラー版を使ってPyMOL 2をインストールした場合にはその中に同梱されているので別段の準備は必要ありませんが、オープンソース版をインストールした場合には様々な準備が必要となりますので、下にあるHomebrewでAPBS, PDB2PQRをインストールしておきます。まずはAPBSプラグインの使い方を説明します。
APBSを使ってみる
今回は例としてPDB: 3x2oの構造のみを開いた状態にしておきます。その後、まず上部メニューの[Plugin]を選択し、次に[APBS Electrostatics]を選択します。
中のメニューはこうなっています。
Mainのタブでまずselection
部分を確認します。この例ではpolymer & 3x2o
という表示になっていますが、これはアミノ酸20種類かつオブジェクト3x2oが選択されていることを意味し、この選択範囲についてAPBSの電荷計算をこれから行うことを意味します。
この選択範囲に問題がなければ、このメニューの下の方にあるRunボタンを押すだけでAPBSの計算が動き出します。途中Warnings: "do you want to continue?"が表示された場合はYesと答えておきましょう。
正常にAPBSの計算が終わると、Close the APBS dialog?と問われます。閉じてもOKです。
計算が終わると、このように3x2oの表面が赤・白・青に分けて表示されるようになりました。
赤は負電荷の多い箇所、青は正電荷の多い箇所を表しています。白は中性です。
右側のInternal GUIのメニューにはrun01
というオブジェクトグループが新しく増えています。ここの+マークを押すと子オブジェクトが現れます。このうちapbs_ramp01
というオブジェクトのA
メニューを開いてみましょう。
上の方のlevels
を選ぶとRange
を変えることができそうです。このRangeは先述の負電荷・正電荷の色付けの表示領域を表しており、値が小さいほど、描画上で最大となる赤・青のしきい値が小さくなります。つまり、デフォルトの5.0から2.0にしてみると
こんな感じで赤と青の箇所が濃く表示されるようになります。
この表面電荷表示はSurface表示として扱われているので、set transparency, 0.5
として透明度を変更してあげることができます(0.5
は透明度)。
透明度を下げてCartoon表示とともに観察すれば、分子のどの部分構造の付近が負電荷、正電荷になっているかがわかりやすいと思います。
さて、ここで先程のAPBS Electrostaticsメニューのプラグイン画面に戻ってみましょう。そこのMainタブの下の方にはOther Visualizations
というOptionsボタンがあります。ここを開いてみると、「mapオブジェクトが計算されたあと、オブジェクトメニューパネルの"Action"アイテムを使うことで追加の描画を生成することができる」(日本語訳)と書かれてあります。
これに従って追加操作をしてみましょう(書きかけ)。
Advanced Configuration
APBS Electrostaticsの計算のパラメータはデフォルトでも十分問題なく動作すると思いますが、上級者のために、パラメータを変更することもできるようになっています。[APBS Templrate]のタブを開くと、表面電荷を計算するための設定ファイルが表示されます。
ここのBrowse...のところからは完成された設定ファイルを読み込ませることができます。公式ドキュメントはhttps://apbs-pdb2pqr.readthedocs.io/en/latest/apbs/input/ にあるので、そちらを参考にするのも良いでしょう。
最後の[Advanced Configuration]タブからは、APBSとPDB2PQRのプログラムのインストール場所を指定したり、コマンドオプションを追加して計算させることもできます。追加コマンドオプションの一覧はhttps://apbs-pdb2pqr.readthedocs.io/en/latest/pdb2pqr/invoking.htmlなどが参考になります。
以下の項で説明するように、オープンソース版PyMOLではAPBS, PDB2PQRがプリインストールされていないため、自前で用意してからこのAdvanced Configurationで正しくプログラムの位置を指定してあげる必要があります。
APBSのインストール
(2022年5月3日更新)
オープンソース版PyMOLを使っている人向けの説明です。やり方は3通りあって、Homebrewを使う方法と、バイナリインストールとソースコードからのインストールがあります。macOSの方やLinuxbrewが使える方はHomebrewの方法が簡単です。ソースコードからのインストールの方法は上級者向けです。
macOS(Linux OSの場合はLinuxbrewが必要)を使っている方は、私が作成したHomebrewのFormulaを使うことで簡単にインストールすることができます。執筆時点ではバージョン3.4.0です。
brew install brewsci/bio/apbs
これにより、apbs
コマンドが利用できるようになります。
$ apbs --version
----------------------------------------------------------------------
APBS -- Adaptive Poisson-Boltzmann Solver
Version APBS 3.4.0
...
(以下省略)
インストール先はwhich apbs
で調べることができます。
$ which apbs
/opt/homebrew/bin/apbs # M1 Macの場合
/usr/local/bin/apbs # Intel Macの場合
ここで表示されたインストール先のパス名をAdvanced ConfigurationのProgram Locationsのapbsの欄に入力すれば動作準備完了です。
PDB2PQRのインストール
(2022年5月3日更新)
オープンソース版PyMOLを使っている人向けの説明です。pythonのpipを使ったインストールの方法が最も簡単でおすすめです。執筆時点ではバージョン3.5.2です。先に、
$ python3 -m pip install pdb2pqr
...
(中略)
...
Successfully installed pdb2pqr-3.5.2
インストール先はwhich pdb2pqr30
で調べることができます。バージョン3以前と異なり、バイナリ名がpdb2pqr
からpdb2pqr30
に変わっていることに気をつけてください。
$ which pdb2pqr30
/opt/homebrew/bin/pdb2pqr30 # M1 Macの場合
/usr/local/bin/pdb2pqr30 # Intel Macの場合
ここで表示されたインストール先のパス名をAdvanced ConfigurationのProgram Locationsのpdb2pqrの欄に入力すれば動作準備完了です。
APBS GUIプラグインのインストール
オープンソース版PyMOLはバイナリ版と違い、GUIプラグインがあらかじめインストールされていません。しかしバイナリ版のプラグインのディレクトリをそのままオープンソース版の方のディレクトリにコピーしてくれば使用することができます。
このGUIプラグイン部分は私のGithubにコピーして置いてありますので、それをオープンソース版PyMOLのプラグインディレクトリに追加してやります。ターミナルを開いて
# pymolpluginディレクトリをダウンロード
cd ~
git clone https://github.com/YoshitakaMo/pymolplugin.git
# ファイルをオープンソース版PyMOLのプラグインディレクトリに追加
cp -rp ~/pymolplugin/* ${HOMEBREW_PREFIX}/opt/pymol/libexec/lib/python3.10/site-packages/pmg_tk/startup
# ここでPyMOLを立ち上げてみて、プラグインがインストールされていればOK
# インストールできたら~/pymolpluginディレクトリは削除してOK
rm -rf ~/pymolplugin
と入力します。このコピーを行った後にopen-source版PyMOLを立ち上げると、上部メニューのPluginのところにAPBS Electrostaticsの文字が現れているはずです。
この文字をクリックし、Advanced Configurationのタブをクリックします。このProgram Locationsを自身の環境にあわせて設定する必要があります。
HomebrewでAPBSとPDB2PQRをインストールした場合は、上図のようにapbsの欄を/usr/local/bin/apbs
にし、pdb2pqrの欄を/usr/local/bin/pdb2pqr30
に設定します(※M1以降のMacの方はそれぞれ/opt/homebrew/bin/apbs
と/opt/homebrew/bin/pdb2pqr30
)。もしソースコードからインストールした場合にはこの限りではありませんので、適切なapbs, pdb2pqrバイナリ本体へのpathを指定しましょう。
他の部分は特に変更する必要はありません。これで右下のrunを押せばめでたくAPBSが動くはずです。
動画の作成方法
自身の研究しているタンパク質の構造を他の人にもしっかりと見てもらうための方法は、1つにはPyMOLセッションファイルに保存して、それをPyMOLで開いてもらうということが考えられます。しかし、PyMOLセッションファイルは相手のパソコンやmacにPyMOLがインストールされてなければ閲覧することはできません。そこで、より広い範囲で色んな人に見てもらうための方法として、分子が動いている様子を一般的な動画形式に変換するという方法があります。これならPowerpointなどのスライドに埋め込むこともできますし、ウェブ上でも公開できます。
ここではその方法をいくつか紹介します。
目指す動画の例
先に完成例としての動画を表示します。
ポイントは
- 全体像を見せつつ、基質結合部位を見せる
- 背景画像を使う
- 無料のコマンドラインツールのみを使用し、有料アプリを使わない
です。
背景画像を使っているのは、使用しないと黒背景になることが多くなってしまうためです。
使うツール
動画への出力はffmpegを使います。macOSならば
$ brew install ffmpeg
でインストールできますので、これをインストールしておきます。もしOpen-source版のPyMOLをbrew install pymol
でインストールしていた場合はffmpegも自動的にインストールされているはずです。
手順1:画面サイズを決める
動画として出力する予定の画面サイズを先に決めておくと後が楽です。ここでは横1280ピクセル縦720ピクセルの動画を出力することにします。これはコマンドでかんたんに設定することができます。コマンド入力欄に
viewport 1280, 720
と入力すると、画面が指定したサイズに変化します。
手順2:Sceneを保存する
3.7 Sceneで述べているように、Scene機能を使うとPyMOLでのカメラアングルと表示状態を保存することができ、左下に現れたメニューからいつでもその状態を呼び出すことができます。動画を作成する上でもこのScene機能を活用することが可能です。
例としてまずアルカリホスファターゼの二量体構造全体が見える位置でSceneを1つ保存しておきます。いい感じの表示設定とカメラアングルが得られたら、上部メニューのSceneからStoreを選びF1〜F12のいずれかに保存します(ここではF1にしておきます)。
左下にF1ボタンが現れました。以降はこのボタンを押すと表示設定とカメラアングルが呼び出されます。
続いて基質結合部位に注目したカメラアングルをSceneのF2として保存しておきます。同様の操作でこんな感じで保存しておきます。
Sceneをすべて設定し終えたら、上部MovieメニューからProgram, Scene Loop, Nutate, 30 de. over 2sec. を選びます。これはSceneを順番に表示しつつ、各Sceneで2秒間30°ずつ揺らしながら次の状態に移行する設定です。設定には色々あるので、3.4 Movieから好きなものを選んでください。
右下のスタートボタンを押すとこんな感じで再生されます。
ここに表示されている画面が動画として出力されるので、よくチェックしておきます。
もし手順1を飛ばしていた場合はここでviewport
コマンドを入れて画像サイズを調節し、再度手順2のScene保存をやり直します。
よければセッションファイル(pseファイル)として保存しておきます。
手順3:PNG形式で各フレームを保存する
動画に表示されている動きの全フレームをPNG画像形式で出力させます。これはFile, Export Movie As, PNG Imagesから選択することができます。
Moview Exportのダイアログボックスでは出力画像サイズを設定することができます。もしここで当初予定していた画像サイズから変わっていれば(少し変わっていることがよくあります)、その数字を修正しておきます。また、RenderingオプションはRay(Slow)の方がきれいに出力されますが、その分時間がかかります。今回はRayでやります。
最後に一番下のSave Movie as...から出力先のディレクトリを選択します。このとき、出力先ディレクトリは新規ディレクトリを作成してからその中に保存することを強く勧めます。こうしないと画像が散らばって面倒です。
今回の例では保存先をmovietestというディレクトリ上に保存することにします。そしてSave Asの名前欄にALP
と入力します(この文字は画像のprefixなので任意の文字列でOKです)。
すると、出力先のmovietestディレクトリにALP0001.png, ALP0002.png, ... といった具合にすべてのフレームの画像が出力されます。しばらくかかるのでこのまますべて終わるまでじっくり待ちます。
手順4:背景画像を使ってffmpegで動画を生成する
好きな背景画像を適当に用意します。今回は以下のものを使いました。
画像サイズはあらかじめ出力したタンパク質の画像サイズ(1280 x 720)と合わせておくと良いでしょう。画像の切り抜きにはコマンドラインツールのImagemagickを使うこともできます。詳しくはImageMagick の画像 Cropの記事などを参考にしてください。
この背景画像をbg.jpg
として、先程のmovietestディレクトリに置きます。その後、以下のコマンドでffmpegを実行するだけで、動画ファイルout.mp4
が生成されます。
$ ffmpeg -r 30 -i bg.jpg -vf 'movie=ALP%4d.png [over], [in][over] overlay' -vcodec libx264 -pix_fmt yuv420p out.mp4
-r
:フレームレート-i
:インプット画像-vcodec libx264
:スマートフォン向けの動画(H.264+aac)に変換-pix_fmt yuv420p
:エンコーダに渡すピクセルフォーマットを指定。yuv420pはH.264動画変換のときのデフォルトらしい-vf 'movie=ALP%4d.png [over], [in][over] overlay'
:ALPではじまる連番画像をインプット画像の上に重ねる
これで動画が出力されました。
その他
MDシミュレーションでトラジェクトリを表示させたときのタンパク質が動いている様子もこれと同様の手順で出力することができます。
表示形式のプリセット
PyMOLのオブジェクトパネルのAボタンの中にはpreset
と言うメニューがあります。これを使うと、様々な表示形式に一発で変換できます。
- classified
- simple
- simple (no solvent)
- ball and stick
- b factor putty
- technical
- ligands
- ligand sites
- cartoon
- solid surface
- solid (better)
- transparent surface
- transparent (better)
- dot surface
- mesh surface
- pretty
- pretty (with solvent)
- publication
- publication (with solvent)
- protein interface
- default
- hydropathy
以上のプリセットが用意されています(ver. 2.5.0 時点)。
このプリセットが選択された時、内部処理的には一度デフォルト形式であるclassified
を設定してから選択されたプリセットの描画設定を上書きしていく形で適用しています。ただしpymolrc
に書かれたいくつかの設定値(transparency
, surface_quality
, surface_type
, sphere_scale
, stick_radius
, stick_color
, cartoon_highlight_color
, cartoon_fancy_helices
, cartoon_smooth_loops
, cartoon_flat_sheets
, cartoon_side_chain_helper
など)はauto_show_classified
としてPyMOL起動時に記憶され、classified
は描画形式以外この値を利用します。
プリセットの定義は、modules/pymol/preset.py
の中に書かれてあります。 https://github.com/schrodinger/pymol-open-source/blob/master/modules/pymol/preset.py も参考にすると良いでしょう。
ここではギャラリー風に紹介していきます。
classified
現在PyMOLのデフォルト設定に最も近い描画形式です。タンパク質構造はCartoon表示、リガンドはSphere表示です。デフォルト設定との細かな違いとして、水分子がwire-nonbonded表示されないなどが挙げられますが、デフォルトの描画設定に戻したいときはこの設定を呼び出すと良いでしょう。
ただし、色設定は変化しないため、手動で戻す必要があります。
コマンドで行いたい場合は、以下のobjectname
部分をオブジェクト名に変えて実行します(例: 1ALK)。以下同様。
preset.classified("objectname",_self=cmd)
simple
タンパク質構造は主鎖だけをシンプルに表示するribbon表示、リガンドはStick表示になります。また、チェインごとに自動で色分けがなされます。
preset.simple("objectname",_self=cmd)
simple (no solvent)
上記simple表示について、溶媒の表示がなくなったものです。
preset.simple_no_solv("objectname",_self=cmd)
ball and stick
各原子を小さめのボールで表し、結合を白色のスティックで表示します。色分けは変化しません。
preset.ball_and_stick("objectname",_self=cmd)
b factor putty
温度因子であるB factorをもとに色付けし、さらに温度因子が大きいほど太くチューブ状に表示します。温度因子は青色ほど低く、赤色ほど高くなっています。この表示では主鎖構造のみが表示されます。
preset.b_factor_putty("objectname",_self=cmd)
technical
各チェインのN末端からC末端にかけて青色→赤色となるようなRainbowカラーリングが適用されます。また、水素結合が自動的に検出され、<objectname>_pol_conts
というオブジェクトが生成されます。水素結合を表示させたくない場合はオブジェクトパネル上でこの<objectname>_pol_conts
の表示をOFFにすればOKです。
preset.technical("objectname",_self=cmd)
ligands
上述のRainbowカラーリングが施され、基本的には主鎖構造のみのribbon表示になりますが、リガンドから一定範囲のみ側鎖を含んだline表示が行われ、リガンドへの水素結合自動検出処理が行われます。
カメラもそのリガンド周辺にズームしてくれますが、リガンドが複数ある場合はそれらの中間にカメラを合わせてしまうようです。
preset.ligands("objectname",_self=cmd)
ligand sites
上記ligands設定の拡張版と言えます。様々な表示形式が用意されています。いずれのプリセットでも水素結合を検出し、<objectname>_pol_conts
というオブジェクトを生成します。
Cartoon
タンパク質をCartoon表示のままRainbowカラーリング、リガンドをStick表示で、周辺の一定範囲のみline表示にします。
preset.ligand_cartoon("objectname",_self=cmd)
solid surface
タンパク質をribbon表示, Rainbowカラーリング, リガンドをStick表示, 周辺の一定範囲のみsurface表示にします。
preset.ligand_sites("objectname",_self=cmd)
solid (better)
上記solid surfaceプリセット表示のsurfaceクオリティが上がったものです。設定としてはset surface_quality, 1
を追加しています。
preset.ligand_sites_hq("objectname",_self=cmd)
transparent surface
上記solid surfaceの透明度を上げ(set transparency, 0.33
)、周辺の残基をstick表示にしたものです。
preset.ligand_sites_trans("objectname",_self=cmd)
transparent (better)
上記transparent surfaceプリセット表示のsurfaceクオリティが上がったものです。設定としてはset surface_quality, 1
を追加しています。
preset.ligand_sites_trans_hq("objectname",_self=cmd)
dot surface
上記solid surfaceの表面表示をdotにしたものです。
preset.ligand_sites_dots("objectname",_self=cmd)
mesh surface
上記solid surfaceの表面表示をdotにしたものです。
preset.ligand_sites_mesh("objectname",_self=cmd)
pretty
生体分子のレインボー表示、リガンドをstick形式で表示します。
preset.pretty("objectname",_self=cmd)
pretty (with solvent)
上記prettyに加えて溶媒やリガンドをnb_spheres表示にします。
preset.pretty_solv("objectname",_self=cmd)
publication
cartoon表示において、
- ループ構造のスムージング
set cartoon_smooth_loops, 1
- ヘリックスやシートの内部を灰色に設定
set cartoon_highlight_color, grey50
- ヘリックスのファンシー化
set cartoon_fancy_helices, 1
- シート構造の平坦化(初期設定でON)
set cartoon_flat_sheets, 1
- 側鎖構造のみの表示(初期設定でON)
set cartoon_side_chain_helper, 0
を行います。
preset.publication("objectname",_self=cmd)
publication (with solvent)
上記の溶媒表示版です。
preset.pub_solv("objectname",_self=cmd)
protein interface
異なるチェインの境目から4.5 Å以内に一部でも含まれる残基をStick表示にします。
preset.interface("objectname",_self=cmd)
default
PyMOL 1時代はこのシンプルなライン表示だけの形式がデフォルト表示でした。Defaultとついていますが、現在はデフォルト設定ではなくなり、classified presetに取って替わられています。
preset.default("objectname",_self=cmd)
Gaussian 16のcubeファイルを開いて分子軌道を表示する
PyMOLは、VMDとまでは行きませんが、様々なファイルの可視化にも対応しています。今回紹介するのは、Gaussian 16などで計算された分子の分子軌道(molecular orbital)をPyMOL上で表示させるテクニックです。
GaussView 6やVMD 1.9.4などの他のソフトを用いて可視化してもよいのですが、タンパク質の構造生物学をやっている人ならだいたい使ったことがあり、扱いに慣れているPyMOLで見られれば、共同研究のときとかに喜ばれると考えられます。
ここでは、簡単な計算の例を示しながら、それをGaussViewまたはPyMOLで分子軌道を表示する時の方法を紹介します。
分子軌道を表示するのに必要な環境
- GaussView 6, VMD, PyMOL 2.3.0以降のうち、いずれか1つをインストールしてあるパソコン
この記事ではGaussView 6またはPyMOL 2.3.0での方法を示します
Example 1-1. シクロペンタジエンの場合
例として、シクロペンタジエン分子の構造をGaussian 16(g16
)で構造最適化させ、分子軌道を計算させてみます。インプットファイルcyclopenta.gjf
を以下のように書いてg16
で計算させます。
%chk=cyclopenta.chk
%mem=20GB
%nprocshared=12
#p opt b3lyp/6-311g(d,p) pop=full
Title
0 1
C -1.78668958 -0.09572728 0.64728372
C -1.36269158 1.27506872 0.64728372
H -1.14231658 -0.96843328 0.64730872
H -0.33812858 1.63156072 0.64725872
C -3.62816658 1.22478072 0.64727472
H -4.64865477 1.54029066 0.71018208
C -3.18843958 -0.09572728 0.64728372
H -3.80595672 -0.96740593 0.58605536
C -2.51974858 2.06652172 0.64717972
H -2.52502738 2.68450968 1.52065726
H -2.55124904 2.68351582 -0.22644835
%mem=20GB
部分は計算にメモリを20GB使用するということ、%nprocshared=12
は計算で使うCPU数を指定します。この値は各計算環境に応じて適宜変更する必要があります。ここで、重要なのは計算条件を指定する#p opt pop=full
の部分です。opt pop=full
で構造最適化計算と、電子密度解析計算を行うよう指示します。計算レベルや基底関数についてはb3lyp/6-311g(d,p)
でなくても好みのものを使ってください。
(ちなみにGaussian 16だと%nprocshared
の指定は非推奨になっています。最近実装された、環境変数での指定方法のほうが使い勝手が良いと思います。さらに、GPUを使った計算をしたい場合にはもっと別の指定方法になります。 参考: http://www.hpc.co.jp/gaussian_Link-0-Equivs.html )
実行コマンド例は
#!/bin/bash
job="cyclopenta"
export GAUSS_CDEF="0-11" # cyclopenta.gjfファイルの%nprocshared=12に対応
g16 < ${job}.gjf > ${job}.log
計算が終わりますと、計算結果のcyclopenta.log
ファイルだけでなく、.chk(チェックポイント)ファイルcyclopenta.chk
も生成されているはずです。分子軌道の可視化や以降の処理にはこのファイルを用います。
Example 1-2. chkファイルの処理
このchkファイルを用いて、まずターミナル上での以下のコマンドで、formatted checkpoint file形式に変換します。
formchk cyclopenta.chk cyclopenta.fchk
として、formatted checkpoint fileに変換します。このformchk
コマンドはGaussian 16と同時にインストールされているはずのコマンドです。Gaussian 16がインストールされてあるマシンやスパコンでは、Gaussian 16の本体であるg16
コマンドが使えるならば、ほぼ間違いなく使えるはずです。
(ちなみにGaussian 16で計算したchkファイルをGaussian 09時代のformchk
コマンドで変換することはできない……かもしれません)
続いて、上のコマンドで作成されたcyclopenta.fchk
ファイルから、必要な分子軌道のデータを.cube
形式のファイルに抽出します。
cubegen 0 MO=homo cyclopenta.fchk cyclopenta_homo.cube
このcubegen
についての操作方法はGaussian公式のcubegenの解説ページのページを参照してください。MO=のあとにhomoやlumo、または数字を指定すると、それに対応した分子軌道が出力されます。
今回はシクロペンタジエンのHOMO(最高被占軌道)のデータを取り出したいので、MO=homoとし、.fchkファイルと出力ファイル名cyclopenta_homo.cube
を指定します。
Example 1-3. cubeファイルの表示
Case 1. GaussView 6で表示する
GaussView 6で表示する時、必要になるファイルはcyclopenta.log
とcyclopenta_homo.cube
です。まずはふつうにcyclopenta.log
を開きます。
続いて、Results > Surfaces/Contoursを選択し、Cube ActionsからLoad Cubeを選び、cyclopenta_homo.cube
を選択します。
続いて、Surface Actions > New Surfaceをクリックすると、分子軌道の図が表示されるようになります。
このSurfaceの描画モードを変えたい場合は、この紫の画面内で右クリックし、View -> Display Formatを選択します(macOSはCommand+DでもOK)。
このDisplay Formatウィンドウの中で、右端のSurfaceタブを選び、Format: transparentとすれば、半透明な表面を描画することができます。透明度はそこのスライダで調節できます。またmesh表示も可能です。
以下では、この部分をPyMOLでやってみる方法を紹介します。
Case 2. PyMOL 2.3.0で表示する
PyMOLで開く場合には、
cyclopenta.log
の最終構造に対応する構造ファイルをPDB形式などで用意し、PyMOLに表示させる- この上に
cyclopenta_homo.cube
をロードし、適切な処理を施す。
という流れになります。このうち、1.で述べた構造ファイルを用意する部分はやや面倒かもしれません。お使いのマシンにAmberTools 18がインストールされている状態であれば、
antechamber -i cyclopenta.log -fi gout -o cyclopenta.pdb -fo pdb
とすることで最終構造のPDBファイルを一発変換できます。AmberToolsがない場合は、オープンソースのファイルコンバータであるOpen Babelを使った変換法で代用できます。Homebrewのインストール方法は適当にググってください。
# Open BabelをHomebrewでインストール
brew install open-babel
# Usage:
# obabel [-i<input-type>] <infilename> [-o<output-type>] -O<outfilename> [Options]
# input-typeにはまだg16フォーマットがサポートされていないのですが、g09で代用可能だと思います。
# see also 'http://openbabel.org/docs/current/FileFormats/Overview.html#file-formats'
obabel -i g09 cyclopenta.log -o pdb -O cyclopenta.pdb
こうしてファイル形式を変換して作成したcyclopenta.pdb
をPyMOLで開いてみます。
んー、本来は二重結合になっている炭素の結合情報が、全部同じような線で繋がれてしまっていますね。これが嫌だな〜って方は、以下のようにして二重結合っぽい表示に変えてみます。
二重結合にしたい原子の上でそれぞれ右のダブルクリック(マウスにホイールがある場合はホイールクリックでも可能)をすると、Pk1, Pk2という選択印が付きます。この状態で、PyMOLのコマンド unbond ; bond order=2
を実行します(コマンド入力できるフォームは2箇所ありますが、どちらに入れても同じです)。このorder=2
で結合次数を指定しています。
これで二重結合っぽい表示に変わりました。ついでに、好みで以下の設定を入れてGaussViewっぽい描画設定にしてみます。
show sticks
show spheres
set stick_radius, 0.1
set sphere_scale, .22
set sphere_scale, .18, elem H
では、PyMOLにcyclopenta_homo.cube
ファイルをロードします。コマンドは以下の通り
load /path/to/cyclopenta_homo.cube
isosurface Asurf1, cyclopenta_homo, 0.02
isosurface Bsurf1, cyclopenta_homo, -0.02
color red, Asurf1
color blue, Bsurf1
set transparency, 0.5
load
部分は、cyclopenta_homo.cube
のファイルのあるファイルパスを指定します。デスクトップ上に置いてあるならばload ~/Desktop/cyclopenta_homo.cube
みたいに。以下のisosurface
コマンドで分子軌道をしきい値0.02, -0.02で作成します。正と負の波動関数に対応する各電子雲をAsurf1, Bsurf1というオブジェクト名で作成し、色付けを red, blueにしています。
Asurf1, Bsurf1の色変更は、PyMOLのオブジェクト色変更と同じ感覚でマウスを使って簡単に変更できます。
PyMOL上でのpythonスクリプトの実行:基本編
PyMOLの大きな強みの1つとして、PyMOLのコマンドラインからpythonスクリプトを実行させることができることが挙げられます。ここではいくつかの例を挙げながら、PyMOL上でのpythonスクリプト実行機能を紹介してみます。ただし、python3についての基本的な知識があることを前提とします。
Pythonの設定を確認する
まずは現在PyMOLが動作しているPython環境を確認するために、バージョン情報とPATHをPyMOLのコマンド入力欄から確認してみましょう。コマンドは通常のpythonと同じように
# pythonのバージョンを表示
import sys
print(sys.version)
# pythonのモジュール検索PATHを確認
print(sys.path)
となります。返り値は、私の環境(macOSのHomebrewでインストールした場合)では
# PyMOL>print(sys.version)
3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]
# PyMOL>print(sys.path)
['', '/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python310.zip', '/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10', '/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload', '/Users/YoshitakaM/Library/Python/3.10/lib/python/site-packages', '/usr/local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/site-packages/coot', '/usr/local/lib/python3.10/site-packages/coot/rcrane', '/usr/local/Cellar/pybind11/2.10.0/libexec/lib/python3.10/site-packages', '/usr/local/Cellar/pymol/2.5.0/libexec/lib/python3.10/site-packages', '/usr/local/Cellar/sip/6.6.2_1/libexec/lib/python3.10/site-packages', '/usr/local/Cellar/modeller/10.3_1/modlib', '/usr/local/opt/python-tk@3.10/libexec', '/Users/YoshitakaM/apps/pymol-psico']
のようになりました。print(sys.path)
で表示されたPATHからはモジュールをimportすることができます。
PythonスクリプトをPyMOL上で実行する
PyMOLコマンドラインからはpython
とpython end
という入力の間に任意のpythonスクリプトを挟むことで、PyMOL上で擬似インタラクティブにコマンドを実行することができます。ただし、一度python
を入力した後はpython end
を入力するまではフィードバックが得られないことに注意しましょう。
例えば、以下のように変数x
に10
という値を入れてそれをprintさせるだけの簡単なスクリプトをコマンドラインに入力してみます。
python
x = 10
print(x)
python end
PyMOLのアウトプットとしては
PyMOL>python
PyMOL>x = 10
1:x = 10
PyMOL>print(x)
2:print(x)
PyMOL>python end
PyMOL>python end
10
というように表示され、最後に10
という結果がprintされたことがわかります。
この機能を使えば、Pythonを使い慣れた方であれば様々な応用可能性があることに気づくと思います。例えば、あるディレクトリの中で目的の構造ファイル群だけPyMOL上にロードしたいという例では、以下のようにPythonスクリプトを書くことができます。
# globモジュールをインポートし、ワイルドカード*によって
# 拡張子がcifであるファイルを一括でPyMOL上にロードする
python
from glob import glob
for file in glob("*.cif"):
cmd.load(file)
python end
コマンドを外部ファイルに保存し、PyMOLからスクリプトを呼び出す
上で挙げた一括ロードのPythonスクリプトを繰り返し使いたいときは、別ファイルにスクリプトを保存しておいてそれを呼び出すような形にすれば、毎回入力しなくて済むようになります。この場合は、python
とpython end
の間の部分だけを別のファイル(名前はcifload.py
とします)に書いておきます。
from glob import glob
for file in glob("*.cif"):
cmd.load(file)
これをPyMOL上から呼び出すときには、コマンドラインからrun /path/to/cifload.py
として呼び出します(/path/to/
の部分はcifload.py
が存在するディレクトリパスに適宜置き換えてください)。
拡張コマンドを使えるように読み込む
発展的な内容ですが、上記の方法を使えばPyMOLWikiのScript Libraryなどで公開されている拡張コマンドを即座に使えるようにすることもできます。例として, タンパク質の色分けをアミノ酸の疎水性〜親水性に応じて行うcolor_h
, color_h2
コマンド(https://pymolwiki.org/index.php/Color_h)を使えるようにします。
上記ページのコードのfrom pymol import cmd
からcmd.extend('color_h2',color_h2)
の前にpython
を、最後にpython end
を入力することで、color_h
, color_h2
コマンドが使えるようになります。
これによってcolor_h
, color_h2
の拡張コマンドが使えるようになりました。もちろん、外部ファイルに保存しておいてrun ~~
で呼び出すことも可能です。
Pythonからpymolモジュールをimportして使う
よくプログラミングしているユーザーからすると、PyMOLに使われている様々なコマンドをPython側から呼び出して利用したいということもあるかもしれません。しかし、その設定が環境によってはちょっと難しいので、ここではまずpymolをimportできるようにする設定の方法を確認します。
まずターミナルを開いてPython3を対話型で開き、import pymol
を入力してみましょう。python3
の部分はpython3.10
, python3.10
の場合もあります。
$ python3
Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymol
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pymol'
>>>
もしここでModuleNotFoundError
というエラーが表示されずそのまま次の入力>>>
が表示された場合はめでたくpymolのモジュールのimportに成功しているのですが、そうでない場合は環境設定を行う必要がありますので、次項以降を確認してみてください。
Homebrewをお使いの場合、2021年5月1日以降のpymol 2.4.0_5からはimport pymol
が使えるようになっているはずです。
事前準備: PythonのPATHとpython内のsys.pathの値を確認する(macOS/Linuxの人向け)
ターミナルから以下のコマンドを入力することでpython3
のバージョン情報およびインストールされているディレクトリの場所を確認することができます。
$ python3 --version
Python 3.10.8
$ ls -l `which python3`
lrwxr-xr-x 1 YoshitakaM admin 40 10 26 10:06 /usr/local/bin/python3 -> ../Cellar/python@3.10/3.10.8/bin/python3
今の環境ではPython 3.10.8のバージョンを使用しており、python3は/usr/local/Cellar/python@3.10/3.10.8/bin/python3
にあることがわかりました(これもシンボリックリンクで、真の実体はまた別の位置に存在しています)。macOSの場合Cellar以下にpython3がある場合は、それはHomebrewでインストールされたpython3、もっと言うとbrew install python@3.10
コマンドでインストールされたものとなっています。
次にターミナルからpython3を起動して、以下のコマンドimport sys
, sys.path
を入れてみます。
$ python3
Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python39.zip', '/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10', '/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload', '/Users/YoshitakaM/Library/Python/3.10/lib/python/site-packages', '/usr/local/lib/python3.10/site-packages']
sys.path
は起動したpython3に対して、Pythonの追加モジュールを読み込むPATHを表示してくれています。ここにpymolのモジュールへのパス、例えば/usr/local/Cellar/pymol/2.5.0/libexec/lib/python3.10/site-packages/pymol
が含まれていない場合はimportに失敗し、ModuleNotFoundError
というエラーが発生します。
これを解決する方法は3つあります。
- 環境変数
PYTHONPATH
を設定し、pymolモジュールがインストールされている場所を追加する import sys
,sys.path.append()
を使ってpython3の中からモジュール検索パスを追加する- パス設定ファイル(
.pth
)をpython3のデフォルトsite-packages
の中に追加する
詳しくは https://note.nkmk.me/python-import-module-search-path/ を参照してください。簡単なのは1.の環境変数PYTHONPATH
を設定する方法です。Homebrewでは実は3.の方法で実現しています。
pymolモジュールの使い方
普段使いのpython3
から無事import pymol
が成功したら、次にpymolモジュールの使い方を見ていきましょう。
例1. PyMOLの画像を出力する
PyMOLのGUIを開き、以下のコマンドを入力していきます。
fetch 1alk, type=mmtf
hide everything
select sel1, byres resn * within 5 of (resn PO4 and chain A)
zoom sel1
as sticks, sel1
ray 640,480
png ~/Desktop/foosel1.png
すると、以下のような画像が出力されます。
これと同様のことを、Pythonのimport pymol
から実行することができます。そのためのコマンドがこちら
import pymol
pymol.cmd.fetch("1alk", type="mmtf")
pymol.cmd.hide("everything")
pymol.cmd.select("sel1", "byres resn * within 5 of (resn PO4 and chain A)")
pymol.cmd.zoom("sel1")
pymol.cmd.show_as("sticks", "sel1")
pymol.cmd.ray("640", "480")
pymol.cmd.png("~/Desktop/foosel2.png")
このように、同様の結果が得られました。
上記のコマンドではpymol.cmd
と書いていましたがfrom pymol import cmd
とすればpymol.cmd
をcmd
と短くすることもできます(Pythonの仕様です)。
from pymol import cmd
cmd.fetch("1alk", type="mmtf")
cmd.hide("everything")
cmd.select("sel1", "byres resn * within 5 of (resn PO4 and chain A)")
cmd.zoom("sel1")
cmd.show_as("sticks", "sel1")
cmd.ray("640", "480")
cmd.png("~/Desktop/foosel2.png")
modulecmd
以下に存在する様々な関数(fetch
, hide
, select
など)はPyMOLのコマンドとほぼ同様ですが、一部はas
→show_as
のように名前が変更されているものもありますので注意してください。各コマンドの使い方はPyMOLWiki、またはpymol.orgのサイト上で検索することでも情報が取得できますが、VSCodeなどのエディタ上でのプログラミングに慣れている方であれば、メソッドのヘルプ表示機能などで仕様を直接確認する方が確実かもしれません。
第6章 プラグインを使う
PyMOLは追加のプラグインを使って機能を拡張させることができます。プラグインといっても、Excelなどで言うところの、マクロみたいなものです。理論的には、PyMOLに実装されている機能を組み合わせれば実現可能なことは、このプラグイン機能を使うことでワンコマンドで達成できるようになります。
ここではできあいのプラグインのインストール方法を示しつつ、その中でも便利なものをいくつか紹介したいと思います。
環境
- macOSまたはLinux OS。Windowsの場合はやり方が異なる可能性があります。
- PyMOL 2.0以降をインストールしてある(バイナリ版・conda版・オープンソース版どれでも可)
PyMOLプラグインのインストール方法
プラグインのダウンロード
例えば私が管理しているもので、 https://github.com/YoshitakaMo/pymol-psico があります。これは大元のpsicoからクローンしてきたものです。これを、例としてホームディレクトリ以下のDocuments
ディレクトリにインストールします。
cd ~/Documents
git clone https://github.com/YoshitakaMo/pymol-psico.git
以上でこのpymol-psicoディレクトリをコピーしてくることができます。中身のプラグインはすべてpython言語で書かれています。オープンソース版でPyMOLをインストールした場合には、この文法はインストールに使用したpythonのバージョンに依存します。
使用のための初期設定
このプラグインを使える状態にするには、先程のpymol-psicoディレクトリにPyMOL側からPATHを通し、さらに初期化コマンドを入れて上げる必要があります。これは、pymolを開いて以下のコマンドを入力してあげると可能です。
sys.path.append(os.path.expanduser('~/Documents/pymol-psico'))
import psico.fullinit
入力する場所はここ(下の PyMOL>
でも良い)
1行目はPATHの追加コマンドです。先程、psicoディレクトリを~/Documents
にインストールしたので、上の例では(os.path.expanduser('~/Documents/pymol-psico'))
となっていますが、~/Documents
以外のディレクトリに置いた場合は適宜このPATHを変更してください。2行目は、psicoモジュールの初期化コマンドです。Pythonのimport
コマンドでpsicoを使えるようにします。
しかし、これを毎回PyMOLを立ち上げるたびに入れるのは面倒です。そこで、PyMOLを開いた時に最初に読み込まれる設定ファイル、~/.pymolrc
に上の設定を書いておきましょう。(参考:3.1 FileのEdit pymolrcの項)そうすると、PyMOL起動時に自動で上のプラグインが使えるようになります。
DSSPプラグイン
プラグインのインストール方法の手順に従ってpsicoのインストールがうまく行っていれば、改めて起動した後にPyMOLのコマンドラインでdssp
というコマンドが使えるようになっているはずです。このコマンドは開いているタンパク質に対して二次構造アサインメントプログラムのDSSPをかけてくれて、その計算結果をもとに表示を切り替えてくれます。ただし利用するためにはあらかじめmkdssp
コマンドがインストールされ、かつ動作することが条件です。現在、最新版のDSSPは以下のHomebrewコマンドからインストールすることができます。
brew install brewsci/bio/dssp
このdsspパッケージの中にmkdssp
コマンドが入っています。ちなみにCentOS 7の方は、yum -y install dssp
とすれば簡単にmkdssp
コマンドがインストールできます。バージョンがちょっと古いですけど問題なく動作するはずです。
そしてPyMOLの画面に戻り、dsspコマンドを打てば、以下のような表示になります。
DSSPプログラムによって判定された二次構造アサインの結果に対応して、PyMOL上の二次構造表示が変化し、色分けされたものになります。DSSPによる二次構造アサイン法とPyMOLネイティヴで入っているアサイン法は微妙に異なるため、細かいところをよーくみてみると、ものによっては二次構造アサインが変化している場合があります。DSSPによる二次構造判定法は現在もなおProtein Data Bankで公式に採用されていますので、こちらを使って表示させたほうが良いと個人的に思います。
また、MDシミュレーションの結果をPyMOLで表示している方の場合、初期構造からシミュレーションの途中でタンパク質の二次構造が変化した場合でも、そのフレームでdssp
と打てば、そのフレームに合わせた二次構造表示に変化してくれるところが便利です。
これらのコマンドの説明はPyMOL >
の欄にhelp dssp
と打てば表示されます。オプションが色々ついているPyMOLコマンドは多いので、確認しておきましょう。例えばこのdsspコマンドの場合は
DESCRIPTION
Secondary structure assignment with DSSP.
http://swift.cmbi.ru.nl/gv/dssp/
ARGUMENTS
selection = string: atom selection {default: all}
exe = string: name of dssp executable {default: mkdssp}
raw = string: atom property to load raw dssp class into {default: 'custom'}
color = string: color in response to secondary structure {default: 1/ON}
EXAMPLE
dssp all, /usr/local/bin/mkdssp, raw=text_type
color gray
color red, text_type H
color orange, text_type G
color yellow, text_type E
color wheat, text_type B
color forest, text_type T
color green, text_type S
set cartoon_discrete_colors, 1
SEE ALSO
dss, stride
と表示されます。colorがデフォルトでONになっています。二次構造についての色分けを自動でしてほしくない場合には、dssp color=0
と打てば、さっきのような色分けをしないで二次構造表示だけ変更してくれます(←地味によく使う)。
DSSPプラグインの設定を変更してみる
DSSPのカラーリングが気に入らない、他の色で塗り分けたい! という場合は、せっかくなのでプラグインを書き換えてみましょう(ちなみに上の設定のカラーリングは有名なSolarized Darkのテーマを模しています)。
psidoディレクトリの中にあるediting.py
の258行目あたりからがdsspの関数定義になっています。
def dssp(selection='(all)', exe='', raw='custom', state=-1, quiet=1, color=1):
'''
DESCRIPTION
Secondary structure assignment with DSSP.
http://swift.cmbi.ru.nl/gv/dssp/
ここでcolor=1
となっていますが、dssp
コマンドを打ってみた時に、デフォルトでカラーリングを変えてほしくない場合はここをcolor=0
としておくとよいでしょう。
この下をさらに見てみると、色分け設定をしている部分が見られます。
# if color=1
if color == 1:
cmd.color('gray', selection)
cmd.set_color('H_color', [220, 50, 47])
cmd.color('H_color', raw+' H')
cmd.set_color('G_color', [211, 54, 130])
cmd.color('G_color', raw+' G')
cmd.set_color('I_color', [255, 170, 170])
cmd.color('I_color', raw+' I')
cmd.set_color('E_color', [196, 177, 3])
cmd.color('E_color', raw+' E')
cmd.set_color('B_color', [42, 161, 152])
cmd.color('B_color', raw+' B')
cmd.set_color('T_color', [38, 139, 210])
cmd.color('T_color', raw+' T')
cmd.set_color('G_color', [211, 54, 130])
cmd.color('G_color', raw+' G')
cmd.set_color('S_color', [133, 153, 0])
cmd.color('S_color', raw+' S')
cmd.set('cartoon_discrete_colors', '1')
cmd.util.cnc(selection)
cmd.set_color
はPyMOLに最初から実装されているコマンドset_color
そのものであり、ここではH_color
という名前でRGB色使いの(220, 50, 47)
を定義しています。詳しい説明はPyMOLWikiを読んでね。DSSPの定義で、αヘリックスはH、βシートはEという一文字表記になっているので、ここでのcmd.color('H_color', raw+' H')
部分は、「DSSPでHと判定された残基をH_colorで色付けする」という意味になっています。つまり、ここの色の値を変えれば、DSSPの二次構造判定に対して思い通りの色分けを行うことができます。
PyVOL GUIプラグイン
(2023年9月6日更新)
2019年10月24日、BioRxivにPyMOLプラグインのPyVOLというのを開発したよという論文が投稿されました。
これはタンパク質の中の空隙、つまり基質や薬剤などが入りそうな空間を検出し、体積の値の表示もしてくれるプラグインのようです。ちょっと興味があったのでインストールすることにしてみました。
使用可能な環境
- Linux OSまたはmacOS。2021年以降はcatalina以降のmacOSでも使用できるようになりました。
PyVOLのインストール方法
以下のGitHubにてこのプラグインをメンテナンスしてくれているようです。 https://github.com/schlessingerlab/pyvol/
- https://github.com/schlessinger-lab/pyvol/blob/master/installers/pyvol-installer.zip のページにアクセスし、画面右端の↓マークからファイルをダウンロードします(14.6 MB)。
- PyMOLを開き、画面上部のメニュー
Plugin
からPlugin Manager
を選択して次の画面を出します。 Choose file...
から先程ダウンロードしたpyvol-installer.zip
を選択します。- Select plugin directoryのダイアログが表示されますが、そのまま特に変更せずOKを押します。
Plugin "pyvol_gui" has been installed.
と表示されればOKです。 - PyMOLの画面上部のメニュー
Plugin
にPyVOL
が表示されていることを確認します。 - PyVOL 1.7.8のダイアログが開きます。画面左側の
Install PyVOL from PyPI
をクリックしてしばらく待つと、動作に必要なPythonパッケージが自動的にダウンロードされて次のような画面表示になります(バージョンはその時々で異なるのであまり気にしないでください)。 - 動作にはMSMSという実行ファイルを追加でインストールする必要があります。これは https://ccsb.scripps.edu/msms/downloads/ からダウンロードするもので、Linux, macOS, さらにmacOSのうちApple Silicon(いわゆるM1, M2 Macのこと)を使っている方はArm64の方からMSMSをダウンロードします。
- ここがやや厄介なのですが、PyVOLからMSMSの実行ファイルを呼び出すためにはコマンド名を
msms
としなければ認識してくれません。先程ダウンロードしたMSMSは実行ファイル名がmsms_Arm64_2.6.1
(Apple Silicon製)だったり、msms.x86_64Darwin.2.6.1
(Intel CPUのMacの場合)だったりします。これを実行できるようにするためには以下のコマンドを打つのが手っ取り早いかもしれません。
# Apple Silicon Macの場合
ln -sf ~/Downloads/msms_Arm64_2.6.1/msms_Arm64_2.6.1 /opt/homebrew/bin/msms
# Intel Macの場合
ln -sf ~/Downloads/msms_x86_64Darwin_2.6.1/msms.x86_64Darwin.2.6.1 /usr/local/bin/msms
ここでやっていることは、先程ダウンロードしたMSMSの実行ファイルのシンボリックリンクファイルを/opt/homebrew/bin
または/usr/local/bin
以下にmsms
というコマンド名で配置するということです。そしてこれをやった後にターミナルからwhich msms
としてみてnot found と言われなければ使えるようになっているはずです。
PyMOLをターミナルから起動して、PluginメニューからPyVOLを選択した時に、以下のように表示されればOKです。
もしインストールがうまく行っていない場合は、下の"System MSMS path"がnot foundになります。このPyVOLを選択してみて、メニューが開けたら成功です。
簡単な使い方
タンパク質を選択しておいてからPyVOLプラグインのParametersタブのRunボタンを押すだけです。Load Pocketのタブでは描画方法を色々変えることもできます。
## pLDDTカラーリングプラグインプラグインのインストール方法の手順に従って森脇のpymol-psicoのインストールがうまく行っていれば、改めて起動した後にPyMOLのコマンドラインでplddt
というコマンドが使えるようになっています。このコマンドはAlphaFold2またはColabFoldで予測された構造に対し、予測のpLDDT値に応じて色分けを行ってくれます。
デフォルトでの色分けはAlphaFold Protein Structure Databaseで使われている配色に準じています。
別のカラーリングスキームとしてspectrum
があります。例えばplddt (selection), spectrum, 50, 90
とすると、(selection)に入れたオブジェクトについてpLDDT値の下限(赤色)を50に上限(青色)を90としてグラデーション配色してくれます。
詳細はhelp plddt
を御覧ください。
PyMOLプラグインのインストール方法
プラグインのダウンロード
例えば私が管理しているもので、 https://github.com/YoshitakaMo/pymol-psico があります。これは大元のpsicoからクローンしてきたものです。これを、例としてホームディレクトリ以下のDocuments
ディレクトリにインストールします。
cd ~/Documents
git clone https://github.com/YoshitakaMo/pymol-psico.git
以上でこのpymol-psicoディレクトリをコピーしてくることができます。中身のプラグインはすべてpython言語で書かれています。オープンソース版でPyMOLをインストールした場合には、この文法はインストールに使用したpythonのバージョンに依存します。
使用のための初期設定
このプラグインを使える状態にするには、先程のpymol-psicoディレクトリにPyMOL側からPATHを通し、さらに初期化コマンドを入れて上げる必要があります。これは、pymolを開いて以下のコマンドを入力してあげると可能です。
sys.path.append(os.path.expanduser('~/Documents/pymol-psico'))
import psico.fullinit
入力する場所はここ(下の PyMOL>
でも良い)
1行目はPATHの追加コマンドです。先程、psicoディレクトリを~/Documents
にインストールしたので、上の例では(os.path.expanduser('~/Documents/pymol-psico'))
となっていますが、~/Documents
以外のディレクトリに置いた場合は適宜このPATHを変更してください。2行目は、psicoモジュールの初期化コマンドです。Pythonのimport
コマンドでpsicoを使えるようにします。
しかし、これを毎回PyMOLを立ち上げるたびに入れるのは面倒です。そこで、PyMOLを開いた時に最初に読み込まれる設定ファイル、~/.pymolrc
に上の設定を書いておきましょう。(参考:3.1 FileのEdit pymolrcの項)そうすると、PyMOL起動時に自動で上のプラグインが使えるようになります。
DSSPプラグイン
プラグインのインストール方法の手順に従ってpsicoのインストールがうまく行っていれば、改めて起動した後にPyMOLのコマンドラインでdssp
というコマンドが使えるようになっているはずです。このコマンドは開いているタンパク質に対して二次構造アサインメントプログラムのDSSPをかけてくれて、その計算結果をもとに表示を切り替えてくれます。ただし利用するためにはあらかじめmkdssp
コマンドがインストールされ、かつ動作することが条件です。現在、最新版のDSSPは以下のHomebrewコマンドからインストールすることができます。
brew install brewsci/bio/dssp
このdsspパッケージの中にmkdssp
コマンドが入っています。ちなみにCentOS 7の方は、yum -y install dssp
とすれば簡単にmkdssp
コマンドがインストールできます。バージョンがちょっと古いですけど問題なく動作するはずです。
そしてPyMOLの画面に戻り、dsspコマンドを打てば、以下のような表示になります。
DSSPプログラムによって判定された二次構造アサインの結果に対応して、PyMOL上の二次構造表示が変化し、色分けされたものになります。DSSPによる二次構造アサイン法とPyMOLネイティヴで入っているアサイン法は微妙に異なるため、細かいところをよーくみてみると、ものによっては二次構造アサインが変化している場合があります。DSSPによる二次構造判定法は現在もなおProtein Data Bankで公式に採用されていますので、こちらを使って表示させたほうが良いと個人的に思います。
また、MDシミュレーションの結果をPyMOLで表示している方の場合、初期構造からシミュレーションの途中でタンパク質の二次構造が変化した場合でも、そのフレームでdssp
と打てば、そのフレームに合わせた二次構造表示に変化してくれるところが便利です。
これらのコマンドの説明はPyMOL >
の欄にhelp dssp
と打てば表示されます。オプションが色々ついているPyMOLコマンドは多いので、確認しておきましょう。例えばこのdsspコマンドの場合は
DESCRIPTION
Secondary structure assignment with DSSP.
http://swift.cmbi.ru.nl/gv/dssp/
ARGUMENTS
selection = string: atom selection {default: all}
exe = string: name of dssp executable {default: mkdssp}
raw = string: atom property to load raw dssp class into {default: 'custom'}
color = string: color in response to secondary structure {default: 1/ON}
EXAMPLE
dssp all, /usr/local/bin/mkdssp, raw=text_type
color gray
color red, text_type H
color orange, text_type G
color yellow, text_type E
color wheat, text_type B
color forest, text_type T
color green, text_type S
set cartoon_discrete_colors, 1
SEE ALSO
dss, stride
と表示されます。colorがデフォルトでONになっています。二次構造についての色分けを自動でしてほしくない場合には、dssp color=0
と打てば、さっきのような色分けをしないで二次構造表示だけ変更してくれます(←地味によく使う)。
DSSPプラグインの設定を変更してみる
DSSPのカラーリングが気に入らない、他の色で塗り分けたい! という場合は、せっかくなのでプラグインを書き換えてみましょう(ちなみに上の設定のカラーリングは有名なSolarized Darkのテーマを模しています)。
psidoディレクトリの中にあるediting.py
の258行目あたりからがdsspの関数定義になっています。
def dssp(selection='(all)', exe='', raw='custom', state=-1, quiet=1, color=1):
'''
DESCRIPTION
Secondary structure assignment with DSSP.
http://swift.cmbi.ru.nl/gv/dssp/
ここでcolor=1
となっていますが、dssp
コマンドを打ってみた時に、デフォルトでカラーリングを変えてほしくない場合はここをcolor=0
としておくとよいでしょう。
この下をさらに見てみると、色分け設定をしている部分が見られます。
# if color=1
if color == 1:
cmd.color('gray', selection)
cmd.set_color('H_color', [220, 50, 47])
cmd.color('H_color', raw+' H')
cmd.set_color('G_color', [211, 54, 130])
cmd.color('G_color', raw+' G')
cmd.set_color('I_color', [255, 170, 170])
cmd.color('I_color', raw+' I')
cmd.set_color('E_color', [196, 177, 3])
cmd.color('E_color', raw+' E')
cmd.set_color('B_color', [42, 161, 152])
cmd.color('B_color', raw+' B')
cmd.set_color('T_color', [38, 139, 210])
cmd.color('T_color', raw+' T')
cmd.set_color('G_color', [211, 54, 130])
cmd.color('G_color', raw+' G')
cmd.set_color('S_color', [133, 153, 0])
cmd.color('S_color', raw+' S')
cmd.set('cartoon_discrete_colors', '1')
cmd.util.cnc(selection)
cmd.set_color
はPyMOLに最初から実装されているコマンドset_color
そのものであり、ここではH_color
という名前でRGB色使いの(220, 50, 47)
を定義しています。詳しい説明はPyMOLWikiを読んでね。DSSPの定義で、αヘリックスはH、βシートはEという一文字表記になっているので、ここでのcmd.color('H_color', raw+' H')
部分は、「DSSPでHと判定された残基をH_colorで色付けする」という意味になっています。つまり、ここの色の値を変えれば、DSSPの二次構造判定に対して思い通りの色分けを行うことができます。
PyVOL GUIプラグイン
(2023年9月6日更新)
2019年10月24日、BioRxivにPyMOLプラグインのPyVOLというのを開発したよという論文が投稿されました。
これはタンパク質の中の空隙、つまり基質や薬剤などが入りそうな空間を検出し、体積の値の表示もしてくれるプラグインのようです。ちょっと興味があったのでインストールすることにしてみました。
使用可能な環境
- Linux OSまたはmacOS。2021年以降はcatalina以降のmacOSでも使用できるようになりました。
PyVOLのインストール方法
以下のGitHubにてこのプラグインをメンテナンスしてくれているようです。 https://github.com/schlessingerlab/pyvol/
- https://github.com/schlessinger-lab/pyvol/blob/master/installers/pyvol-installer.zip のページにアクセスし、画面右端の↓マークからファイルをダウンロードします(14.6 MB)。
- PyMOLを開き、画面上部のメニュー
Plugin
からPlugin Manager
を選択して次の画面を出します。 Choose file...
から先程ダウンロードしたpyvol-installer.zip
を選択します。- Select plugin directoryのダイアログが表示されますが、そのまま特に変更せずOKを押します。
Plugin "pyvol_gui" has been installed.
と表示されればOKです。 - PyMOLの画面上部のメニュー
Plugin
にPyVOL
が表示されていることを確認します。 - PyVOL 1.7.8のダイアログが開きます。画面左側の
Install PyVOL from PyPI
をクリックしてしばらく待つと、動作に必要なPythonパッケージが自動的にダウンロードされて次のような画面表示になります(バージョンはその時々で異なるのであまり気にしないでください)。 - 動作にはMSMSという実行ファイルを追加でインストールする必要があります。これは https://ccsb.scripps.edu/msms/downloads/ からダウンロードするもので、Linux, macOS, さらにmacOSのうちApple Silicon(いわゆるM1, M2 Macのこと)を使っている方はArm64の方からMSMSをダウンロードします。
- ここがやや厄介なのですが、PyVOLからMSMSの実行ファイルを呼び出すためにはコマンド名を
msms
としなければ認識してくれません。先程ダウンロードしたMSMSは実行ファイル名がmsms_Arm64_2.6.1
(Apple Silicon製)だったり、msms.x86_64Darwin.2.6.1
(Intel CPUのMacの場合)だったりします。これを実行できるようにするためには以下のコマンドを打つのが手っ取り早いかもしれません。
# Apple Silicon Macの場合
ln -sf ~/Downloads/msms_Arm64_2.6.1/msms_Arm64_2.6.1 /opt/homebrew/bin/msms
# Intel Macの場合
ln -sf ~/Downloads/msms_x86_64Darwin_2.6.1/msms.x86_64Darwin.2.6.1 /usr/local/bin/msms
ここでやっていることは、先程ダウンロードしたMSMSの実行ファイルのシンボリックリンクファイルを/opt/homebrew/bin
または/usr/local/bin
以下にmsms
というコマンド名で配置するということです。そしてこれをやった後にターミナルからwhich msms
としてみてnot found と言われなければ使えるようになっているはずです。
PyMOLをターミナルから起動して、PluginメニューからPyVOLを選択した時に、以下のように表示されればOKです。
もしインストールがうまく行っていない場合は、下の"System MSMS path"がnot foundになります。このPyVOLを選択してみて、メニューが開けたら成功です。
簡単な使い方
タンパク質を選択しておいてからPyVOLプラグインのParametersタブのRunボタンを押すだけです。Load Pocketのタブでは描画方法を色々変えることもできます。
pLDDTカラーリングプラグイン
プラグインのインストール方法の手順に従って森脇のpymol-psicoのインストールがうまく行っていれば、改めて起動した後にPyMOLのコマンドラインでplddt
というコマンドが使えるようになっています。このコマンドはAlphaFold2またはColabFoldで予測された構造に対し、予測のpLDDT値に応じて色分けを行ってくれます。
デフォルトでの色分けはAlphaFold Protein Structure Databaseで使われている配色に準じています。
別のカラーリングスキームとしてspectrum
があります。例えばplddt (selection), spectrum, 50, 90
とすると、(selection)に入れたオブジェクトについてpLDDT値の下限(赤色)を50に上限(青色)を90としてグラデーション配色してくれます。
詳細はhelp plddt
を御覧ください。
Appendix
インストール方法
2024年現在、PyMOLのインストール方法は、大きく分けて
- 公式ウェブサイトで配布されているバイナリを入れる方法(バイナリ版)と、
- 自身でPyMOLをソースコードからビルド&コンパイルし、インストールする方法(オープンソース版)
の2通りがあります。初心者に対しては確実に前者の方をおすすめしますが、ライセンス認証を求められる(一応無視しても使えるが少し煩わしい)というデメリットがあり、反対に後者のやり方では、ライセンス認証は求められないものの、インストールがやや難しく、玄人向けと言えます。
バイナリ版 | オープンソース版 | |
---|---|---|
メリット | インストールがとても簡単 APBSを始めとした、いくつかのプラグインがプリインストールされている | ライセンス認証が不要 |
デメリット | 起動時にライセンス認証を求められる | インストールが煩雑 プラグインが同梱されていない(手動で追加インストールすることが求められる) |
備考 | 有料ライセンスならば専用の追加機能を利用できる(特にSchrödinger Maestroとの連携) |
PyMOLライセンスは基本的に有料で、1年または3年契約なのですが、教育用のサブスクリプション(Educational Subscription)ライセンスは、ウェブ上で申請することで無料で発行されます。いずれのライセンスを取得する場合でも、まずhttps://pymol.org/2/buy.html にアクセスし、申請フォームを埋めることでライセンス発行の手続きを進めることができます。
バイナリ版のインストール方法
バイナリ版のインストール方法はとても簡単で、公式ウェブサイトのDownloadのところからインストーラーを取得することができます。Windows, macOS, Linuxいずれの場合も、基本的にはインストーラーを展開して指示に従ってインストールを進めるだけでOKです。
Windowsの場合はEXE InstallerとZIP archiveの2つがあります。Installerの場合は指示に従ってインストール操作を行ってください。ZIP版の場合は展開してそのままダブルクリックを行うことでも使用可能になります。macOSの場合はdmg Installerがあり、これをダブルクリックしてインストールするだけでOKです。
オープンソース版のインストール方法
オープンソース版のインストール方法は、OSの種類によって大きく異なります。
Windows 10の場合
(内容が古くなっているので消去しました。)
macOSの場合
アプリケーション > ユーティリティ > ターミナルを開き、Homebrewをインストールしてあることが条件です。この状態で、ターミナルから、
brew install pymol
と入力します。これで一発でインストールすることができます。終わったら、一度Command+Qキーでターミナルを完全に閉じてから、もう一度ターミナルを開いて
pymol
でオープンソース版pymolが立ち上がります。このときターミナルにメッセージが流れるのが煩わしいと感じる場合は
pymol > /dev/null 2>&1 &
で開くのも良いでしょう。
PyMOLの用語集
気づいたら書いていきます。
オブジェクト (object)
PyMOL上のオブジェクトとは、PyMOL上に表示された構造ファイル、または選択範囲のことです。特に、PyMOLの右側のメニューはオブジェクトを操作するオブジェクトパネルと呼ばれます。
PyMOLでは構造情報だけでなく、選択範囲についてもオブジェクトのように扱うことができ、(sele)
として表示されます。この他にも()で示されるオブジェクトが登場することがありますが、それらは選択範囲のオブジェクトであり、構造情報のオブジェクトとは区別されます。
セグメント(segment identifier)
セグメントとは、構造ファイルの中のsegment identifier(segment ID)に登録されている情報のことです。かつて.pdb
ファイル形式が主流だった頃、segment identifierは原子の座標を記述するATOM
, HETATM
レコードの中の73〜76行目に記述するようになっていました。特に、同一chain IDにありながらある種の原子のグループごとに分けて記述したい場合(例:共有結合しているタンパク質とリガンドを分けたい時)に用いられましたが、今はChain IDで分けるのが主流となっています。segment identifierは現在廃止された仕様ですが、PyMOLやChimera, CHARMMなど一部のプログラムは未だにこれを利用することができます。
インストール方法
2024年現在、PyMOLのインストール方法は、大きく分けて
- 公式ウェブサイトで配布されているバイナリを入れる方法(バイナリ版)と、
- 自身でPyMOLをソースコードからビルド&コンパイルし、インストールする方法(オープンソース版)
の2通りがあります。初心者に対しては確実に前者の方をおすすめしますが、ライセンス認証を求められる(一応無視しても使えるが少し煩わしい)というデメリットがあり、反対に後者のやり方では、ライセンス認証は求められないものの、インストールがやや難しく、玄人向けと言えます。
バイナリ版 | オープンソース版 | |
---|---|---|
メリット | インストールがとても簡単 APBSを始めとした、いくつかのプラグインがプリインストールされている | ライセンス認証が不要 |
デメリット | 起動時にライセンス認証を求められる | インストールが煩雑 プラグインが同梱されていない(手動で追加インストールすることが求められる) |
備考 | 有料ライセンスならば専用の追加機能を利用できる(特にSchrödinger Maestroとの連携) |
PyMOLライセンスは基本的に有料で、1年または3年契約なのですが、教育用のサブスクリプション(Educational Subscription)ライセンスは、ウェブ上で申請することで無料で発行されます。いずれのライセンスを取得する場合でも、まずhttps://pymol.org/2/buy.html にアクセスし、申請フォームを埋めることでライセンス発行の手続きを進めることができます。
バイナリ版のインストール方法
バイナリ版のインストール方法はとても簡単で、公式ウェブサイトのDownloadのところからインストーラーを取得することができます。Windows, macOS, Linuxいずれの場合も、基本的にはインストーラーを展開して指示に従ってインストールを進めるだけでOKです。
Windowsの場合はEXE InstallerとZIP archiveの2つがあります。Installerの場合は指示に従ってインストール操作を行ってください。ZIP版の場合は展開してそのままダブルクリックを行うことでも使用可能になります。macOSの場合はdmg Installerがあり、これをダブルクリックしてインストールするだけでOKです。
オープンソース版のインストール方法
オープンソース版のインストール方法は、OSの種類によって大きく異なります。
Windows 10の場合
(内容が古くなっているので消去しました。)
macOSの場合
アプリケーション > ユーティリティ > ターミナルを開き、Homebrewをインストールしてあることが条件です。この状態で、ターミナルから、
brew install pymol
と入力します。これで一発でインストールすることができます。終わったら、一度Command+Qキーでターミナルを完全に閉じてから、もう一度ターミナルを開いて
pymol
でオープンソース版pymolが立ち上がります。このときターミナルにメッセージが流れるのが煩わしいと感じる場合は
pymol > /dev/null 2>&1 &
で開くのも良いでしょう。
PyMOLの用語集
気づいたら書いていきます。
オブジェクト (object)
PyMOL上のオブジェクトとは、PyMOL上に表示された構造ファイル、または選択範囲のことです。特に、PyMOLの右側のメニューはオブジェクトを操作するオブジェクトパネルと呼ばれます。
PyMOLでは構造情報だけでなく、選択範囲についてもオブジェクトのように扱うことができ、(sele)
として表示されます。この他にも()で示されるオブジェクトが登場することがありますが、それらは選択範囲のオブジェクトであり、構造情報のオブジェクトとは区別されます。
セグメント(segment identifier)
セグメントとは、構造ファイルの中のsegment identifier(segment ID)に登録されている情報のことです。かつて.pdb
ファイル形式が主流だった頃、segment identifierは原子の座標を記述するATOM
, HETATM
レコードの中の73〜76行目に記述するようになっていました。特に、同一chain IDにありながらある種の原子のグループごとに分けて記述したい場合(例:共有結合しているタンパク質とリガンドを分けたい時)に用いられましたが、今はChain IDで分けるのが主流となっています。segment identifierは現在廃止された仕様ですが、PyMOLやChimera, CHARMMなど一部のプログラムは未だにこれを利用することができます。
選択範囲の文法と演算子
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 は、論理的な選択範囲を一番内側の括弧から外に展開します。