PyMOLクックブック
PyMOLでお絵描きするための小技集。美麗なイメージを目指せ!
コマンドの文法表記は以下のような表記規則に従います(たぶん)。
| 表記例 | 意味 |
| 太字 | PyMOLコマンド |
| 透明度(0-1) | 値を指定する。カッコ内は値の範囲など |
| {H|S|L} | どれかを選択(これならH,S,Lのどれか)。 その他、dash_{gap|length}ならdash_gapとdash_lengthってこと |
| [, mode] | 省略可能なパラメータ |
水素結合などの点線を描きたい
- 問題
- 水素結合などを示す点線を描きたい
- 解法
- distanceを使います。
名前指定でオブジェクト名を付けることができます。省略した場合はdist01,dist02...になります。また、カットオフ値を指定することで表示する最長の距離を指定することができます。モードはなんだかわかりません(ディフォルト0)。distance 対象1, 対象2
distance 名前 = 対象1, 対象2 [, カットオフ [, モード]] - マウスで選択することで作成します。
Ctrl+真ん中ボタンで線を引きたい2つの原子を選択した後、コマンドラインでdistと入力します。
微妙な結合距離のためか、共有結合が切れている
2010-04-13 : 追加
- 問題
- 共有結合を作りたい
- 解法
- bondを使います。
distanceと同様に対象となる2つの原子を共有結合で結合します。対象はCtrl+真ん中で選択することも可能です。bond 対象1, 対象2
なお、結合を削除する場合はunbondを使います。
点線のパラメータを調整したい
2010-01-27 : 色と対象について更新
- 問題
- 点線を描いてみたが点の間隔が気に入らない
- 解法
- set dash_gap, set dash_length, set dash_widthで調整します。
例えばこんな感じ。set dash_{gap|length|width}, 値[, 対象]
PyMOL> set dash_gap,0.2 PyMOL> set dash_length,0.2 PyMOL> set dash_width,2 PyMOL> set dash_color,tv_blue
rayコマンドでレンダリングするとギャップが狭くなるので確認して下さい。なお、複数選択の場合は以下の感じで。PyMOL> set dash_color,tv_blue,dist01:dist02 PyMOL> set dash_color,tv_blue,dist* <-- ワイルドカードも使えるようです
- 参考
セルを描きたい(作成中)
- 問題
- 単位格子を表す枠を描き、色指定および立体的に描画したい
- 解法
- 単位格子を表すセルを描いてみます。任意の場所に出現させるのは現在調査中・・・
この例ではセルを描いて色を変更したりレイトレーシングの時に立体的に描画するようにしています。 まずPDBファイルを開いておきます。開いたPDBのオブジェクト名はmol1とします。以降はスクリプトで。PyMOL> show cell,mol1 セルを表示 PyMOL> color red,mol1 色を赤にしてみる PyMOL> util.cbag mol1 分子だけ元の色に戻す PyMOL> set cgo_line_width=3 セルの線の太さを変更 PyMOL> set cgo_line_radius=0.4 3D描画の際のセルの線の半径を変更 PyMOL> ray レイトレース
これはCompiled Graphics Objects(CGOs)という機能を使っているようです。詳しいことはドキュメントにも書いてませんが・・・
- 参考
オブジェクトを半透明にしたい

- 問題
- 残基の側鎖などを重ねて描くときに、一方を半透明にしたい。
- 解法
- stick_transparencyまたはcartoon_transparency、sphere_transparencyを使います。
これらのコマンドで、対象となるオブジェクトのtransparencyの値をセットします。set stick_transparency, 透明度(0-1)[, 対象]
例えば対象となるオブジェクトがmol1なら、PyMOL> set stick_transparency,0.5,mol1
で半透明になります。stick_ならstickオブジェクト、cartoon_ならリボン図が対象になります。透明度は1が完全に透明、0が不透明です。
右の例ではstick_transparencyを0.8にセットしてレイトレースしたものです。PyMOL 1.1で試したところstick_transparencyでは対象にセレクトオブジェクト名(selectで作ったオブジェクト)を指定しても効果が適用されませんでした。分子名で指定する必要があるみたいです(たぶん)。sphere_transparencyではセレクトオブジェクトでも半透明になりました。 - 参考
Sphereの半径を指定したい
- 問題
- sphereで描いた原子の大きさを調整したい。
- 解法
- 描画比率を変更する
van der Waals半径と実際の描画との比率を変更することで原子の大きさを変更します。
PyMOL内部でvan der Waals半径に対する比率が設定できるのでその値を変更します。この方法だと異なる原子のvan der Waals半径の比を保持したままサイズを変更できます。特定の原子の大きさだけを変更したい場合はalterコマンドを使用します。set sphere_scale, スケール[, 対象]
PyMOL> set sphere_scale, 0.2
- van der Waals半径の値を変更する
alterコマンドを使います。
van der Waals半径を指定するという形で調整可能なようです。alter 対象, vdw=VDW半径
実際に使用する時はalterコマンドの後、rebuildして更新します。PyMOL> alter wat, vdw=0.5 PyMOL> rebuild
立体視用イメージを作成したい


- 問題
- 立体視用のイメージを作成したいが、マウスで角度を変えたくない。
- 解法
- rayコマンドにオプションを付けて使います。
レイトレーシングを行うrayコマンドにangleオプションを付けます。角度は大体2-3°ぐらいがよさそうです。3°で深度が強調されるぐらいで、2°ならほどよい気がします。ray angle=角度
PyMOL> ray angle=3 <- たぶん交差法左用 PyMOL> ray angle=-3 <- たぶん交差法右用
なお、右と左は交差法と平行法で逆になりますので注意して下さい。
ラベルのサイズ、相対位置を調整したい
- 問題
- 残基名や距離などのラベルの位置や大きさを変更したい。
- 解法
- External GUIからセットする
PyMOLではオブジェクトにラベルを表示させることができますが、表示させたラベルのパラメータはExternal GUIの[Setting]->[Edit All...]から調整します。このメニューを選ぶとパラメータが並んだダイアログが開きますので必要なパラメータを変更します。
このダイアログ中では全てのパラメータが表示されて探すのが大変なので、下にあるFilterにキーワードを入力して絞りこみます。例えば今回はラベルの関連なのでlabelと入力しして絞り込んでみると、関連すると思われるパラメータが表示されますので、その中から必要と思われるパラメータを探して値を変更します。値を変更した後にEnterキーを押さないと反映されないので注意!
主要なパラメータを下にまとめておきます。 - コンソールでセットする
コンソールで直接セットすることもできます。PyMOL> set label_size, 25
適切な値は表示を見ながら合わせて下さい。
表示を調整するための主要パラメータ
| パラメータ名 | 内容 | 設定例 |
| label_color | ラベルの色 | white, orangeなど |
|---|---|---|
| label_font_id | フォントの種類 | 数値(環境依存?) |
| label_outline_color | 縁取りの色 | white, orangeなど |
| label_position | オブジェクトからの相対位置 | [x,y,z] |
| label_size | フォントサイズ | 数値 |
他にもいろいろパラメータはありますが、だいたい名前を見れば想像できると思うのでいろいろ試してみて下さい。
ラベル以外のパラメータの中には[Setting]メニューから簡単に設定できるパラメータもあるので確認してみて下さい。
正確にカメラ方位を変更したい
2010-01-14追加
- 問題
- 例えばY軸に対して90度方位を変えた図を描きたいが、マウス操作では正確ではない。
- 解法
- turnメソッドを使います。
turnメソッドにより視点を回転させることができます。例えば90度横からの図を描きたい、などに有効です。以前、rotateでできると書いていましたが、それだとオブジェクトが回転されてしまうので目的とは異なってました・・・turn 軸, 角度
PyMOL> turn y, 90
Y軸(画面の中心)を基準に90度回転させる。
オブジェクトを回転させたい
2010-01-14修正
- 問題
- 特定のオブジェクトのみを回転させたい
- 解法
- rotateメソッドを使います。
rotateメソッドを使うと回転角度を数値で指定することができるので正確に回転させた図を描くことができます。メソッド中のカメラ、オブジェクト、座標(origin)については詳しくは調べてません・・・回転中心などを指定できるのだと思いますが。rotate 軸, 角度[, 対象[, カメラ[, オブジェクト[, 座標]]]]
PyMOL> rotate y, 90
Y軸(画面の中心)を基準に90度回転させる。
現在の方位を取得したい
2009-12-22追加
- 問題
- 向きを変えて構造を確認したいが、現在の描画の方位を変更したくない。
- 解法
- External GUIウィンドウのGet Viewボタンをクリックするか、get_viewメソッドを使います。
現在の方位を一度記憶してからモデルを確認するという方法が使えます。方位を取得すると現在の方位パラメータが得られるので、その値を使ってset_viewコマンドで戻すことができます。PyMOL> get_view ### cut below here and paste into script ### set_view (\ 0.317731529, 0.080384687, 0.944767177,\ 0.366989166, -0.929166734, -0.044363577,\ 0.874280035, 0.360815048, -0.324725896,\ 0.000000000, 0.000000000, -446.314361572,\ 34.259254456, 0.657300949, 33.577735901,\ 351.877655029, 540.751098633, -20.000000000 ) ### cut above here and paste into script ###
このような出力が得られるので、この部分をコピーしてset_view()を実行すれば元の方位に戻ります。
二次構造を変更したい
- 問題
- DSSPで計算した二次構造とPyMOLで表現される二次構造が異なっている。
- 解法
- alterメソッドを使います。
DSSPなどの二次構造計算プログラムで計算した結果とPyMOLで自動的に割り当てられる二次構造が異なることがあります。これは構造を詳しく議論したい場合に問題となることがありますので図を合わせておきたいところです。そんなときはalterメソッドを使うことで修正することが可能です。
alterはいろいろな事を変更できるようですが、ここでは二次構造を変更します。Hはへリックス、Sはストランド、Lはループを表します。alterだけでは二次構造が書き換わらないので実行した後rebuildを使用します。alter 対象,ss='{H|S|L}'
PyMOL> alter (resi 23-25 and chain A),ss='S' PyMOL> rebuild
これでChain Aの残基番号23-25がストランド表現に変更されます。
変な結合ができる
2009-12-22追加

- 問題
- 右の図のように変な結合ができてしまい何だかわからないコトになっている。
- 解法
- PDBファイルのCONECTレコードを削除します。
PDBの内容にもよると思いますが、CONECTレコードが悪さをしていることがあるようです。あまり細かくは検証していませんが、CONECTレコードは原子の連番と結びつけられているようなのでその番号が変わってしまっている、などが考えられます。うまく使えばつながらない結合をつなぐこともできるかもしれません。
添付ファイル:
pymol_badConnection.png 110件
[詳細]
right_-3_mini.png 128件
[詳細]
left_3_mini.png 123件
[詳細]
transparency.png 130件
[詳細]
