LoginSignup
7
10

More than 3 years have passed since last update.

PyMOLの追加プラグインを使う for macOS, Linux

Last updated at Posted at 2018-10-26

PyMOLは追加のプラグインを使って機能を拡張させることができます。プラグインといっても、Excelなどで言うところの、マクロみたいなものです。理論的には、PyMOLに実装されている機能を組み合わせれば実現可能なことは、このプラグイン機能を使うことでワンコマンドで達成できるようになります。

今回はできあいのプラグインのインストール方法を示しつつ、その中でも便利なものをいくつか紹介したいと思います。

環境

  • macOS またはLinux OS。Windowsの場合はやり方が異なる可能性があります。
  • PyMOL 2.0以降をインストールしてある(バイナリ版・conda版・オープンソース版どれでも可)

PyMOLプラグインのインストール方法

プラグインのダウンロード

例えば私が管理しているもので、 https://github.com/BILAB/psico があります。これは大元のpsicoからクローンしてきたものです。これを、例えばホームディレクトリ以下のappsディレクトリに入れることを考えてみましょう。

cd ~/apps
git clone https://github.com/BILAB/psico.git

とすると、このpsicoディレクトリをコピーしてくることができます。PyMOLなだけに、すべてpythonで書かれています。文法的にはpython3仕様にも対応しているはずです。オープンソース版でPyMOLをインストールした場合には、この文法はインストールに使用したpythonのバージョンに依存します。

使用のための初期設定

このプラグインを使える状態にするには、先程のpsicoディレクトリにPyMOL側からPATHを通し、さらに初期化コマンドを入れて上げる必要があります。これは、pymolを開いて以下のコマンドを入力してあげると可能です。

sys.path.append(os.path.expanduser('~/apps'))
import psico.fullinit

入力する場所はここ(下の PyMOL>でも良い)
スクリーンショット 2018-10-27 1.03.42.png

Pythonを少しかじったことがある方ならわかるかもしれませんが、1行目はPATHの追加コマンドです。先程、psicoディレクトリを~/appsにインストールしたので、上の例では(os.path.expanduser('~/apps'))となっていますが、他のディレクトリに置いた場合は適宜設定を変更してください。2行目は、psicoモジュールの初期化コマンドです。しかし、これを毎回PyMOLを立ち上げるたびに入れるのは面倒です。そこで、PyMOLを開いた時に最初に読み込まれる設定ファイル、~/.pymolrcに上の設定を書いておきましょう。そうすると、PyMOL起動時に自動で上のプラグインが使えるようになっているはずです。

PyMOLプラグインの1つ DSSPを使ってみる

上の設定をしておくと、例えばPyMOLでdsspというコマンドが使えるようになっているはずです。PyMOLの入力欄でもTabキーを使った補完機能は効いてくれるので、文字を打ちながらとりあえず困ったらTab連打しておくと幸せになれます。

このコマンドは開いているタンパク質に対して二次構造アサインメントプログラムのDSSPをかけてくれて、その計算結果をもとに表示を切り替えてくれます。ただし利用するためにはあらかじめmkdsspコマンドがインストールされ、かつ動作することが条件です。一応、Homebrewがインストールされていれば brew install dssp でインストールできそうなのですが……、これはバグってしまっているので使えません(正確には現在のboostの仕様に追いついていないものがインストールされ、仕様の違いでsegmentation faultになります)。
ということで、ターミナルから以下のコマンドを使って最新版のDSSPをインストールしましょう。

# https://github.com/brewsci/homebrew-bioに登録されました(2018年10月28日)
# 2020年11月13日、コマンドが変更されました。
brew install brewsci/bio/dssp

このdsspパッケージの中にmkdsspコマンドが入っています。/usr/local/bin/mkdssp -i 5lxe.pdb(これはシンボリックリンクで本体は/usr/local/Cellar/dssp/3.1.4/bin/mkdssp)と打つと、DSSPの結果が表示されるはずです。

ちなみにCentOS 7の方は、yum -y install dsspとすれば簡単にmkdsspコマンドがインストールできます。バージョンがちょっと古いですけど問題ないはずです。

そしてPyMOLの画面に戻り、dsspコマンドを打てば、以下のような表示になります。
スクリーンショット 2018-10-27 1.52.58.png

DSSPの二次構造アサインの結果に対応して二次構造表示が変化し、色分けされたものになります。DSSPによる二次構造アサイン法とPyMOLネイティヴで入っているアサイン法は微妙に異なるため、細かいところをよーくみてみると、場合によっては二次構造アサインが変化していることに気づくかもしれません。まあ、DSSPによるアサイン法は今もなおPDBや構造インフォマティクスで採用されているものですので、こちらを使って表示させたほうが気持ちが良いと個人的に思います。

また、MDシミュレーションの結果をPyMOLで表示している時に、初期構造からシミュレーションの途中でタンパク質の二次構造が変化した場合でも、そのフレームでdsspと打てば、そのフレームに合わせた二次構造表示に変化してくれるところが便利です。

これらのコマンドの説明は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の二次構造判定に対して思い通りの色分けを行うことができます。

その他の有用なプラグイン

プラグインを全部説明していてもキリがないので、適当にPyMOLWikiを見ながら勉強してください(投げやり)。
おすすめは、どこかしらの学部3年生を対象にした学生実験でも使っている、ConSurfデータベースの情報を用いた、タンパク質のアミノ酸保存度をカラーリングして表示してくれるコマンドことconsurfdbなどでしょうか。これはpsicoディレクトリのconservation.pyに仕様が書かれています。まあ使ったことがないので、ちゃんと動くのか知りませんが……(雑)

もう1つはmorpheasy_linearコマンドです。これは似たタンパク質で構造状態が違うもの(open, closedなど)を2つ用意し、まるでその2状態を行き来するような動きのアニメーションを作ってくれるものです。

fetch 1akeA 4akeA, async=0
extra_fit
morpheasy_linear 1akeA, 4akeA

とすると、うにょうにょ動くタンパク質のアニメーションが入ったmorph01というオブジェクトが作成されます(画面右下の▶ボタンで再生します)

スクリーンショット 2018-10-27 2.45.05.png

これの上位互換機能であるmorphコマンドがオープンソース版ではないPyMOL(Educational Licenseを含む)には入っているのですが、ほどほどのクオリティのものはこれで代替可能だと思います。

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10