Help us understand the problem. What is going on with this article?

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

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日)
brew install brewsci/bio/xssp

このxsspの中にmkdsspコマンドが入っています。/usr/local/bin/mkdssp -i 5lxe.pdb(これはシンボリックリンクで本体は/usr/local/Cellar/xssp/3.0.5/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を含む)には入っているのですが、ほどほどのクオリティのものはこれで代替可能だと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした