PyMOLはVMDやUCSF Chimeraと並んで、タンパク質やDNAなどの生体分子の構造を表示するのに使われることの多いViewerソフトです。美しいレンダリング、オープンソース性が特長となっています。
2017年9月にPyMOL 2.0がリリースされました。これと同時にWindows, macOS ,Linux用の最新版バイナリPyMOLも配布されるようになり、ver.0.99までの古いバイナリしか持てなかった人々は歓喜しました。また2018年3月19日からはPyMOL ver.2.1のソースコード公開も再開し、「Unofficialながらもソースコードからのビルド&インストールしたい方はこれでどうぞ」ということが可能になりました。バイナリも引き続き配布を続けるようです。オープンソース版はバイナリ版と違ってインストールが難しい代わりに、ライセンス認証が(現在のところ)永続的に不必要となり、かつ自由にソースをいじれるので、玄人向けと言えるでしょう。
(2024年4月11日追記)
2024年3月にPyMOL 3.0がリリースされました。また4月にはオープンソース版も公開されました。
ここではmacOSまたはCentOSへのソースコードからのPyMOLインストール方法を記します。macOSの方は、下記Homebrewで一発インストールが非常に簡単でおすすめです。Windows 10の方は、 オープンソース版PyMOLインストール (Windows)または Windows10にPyMOLをインストールする(2018年8月30日版)の記事を参考にすると良いと思います。
macOSのHomebrewで一発インストール
2018年8月9日に私がインストール用のHomebrew Formulaのpymol.rb
を作成し、その後、brewsci/homebrew-bio に登録してもらいました。これにより、非常に簡単にインストールすることができます。
2022年8月27日、PyMOL 2.5.0はHomebrew-coreに移動されました。brewsciをつけないでインストールすることになります。
2024年4月10日、Open-source版のPyMOL 3.0.0がリリースされました。
brew install pymol
とするだけです。これで一発でインストールすることが可能です。
終わったら、一度Command+Qキーでターミナルを完全に閉じてから、もう一度ターミナルを開いて
pymol
でオープンソース版pymolが立ち上がります。このときターミナルにメッセージが流れるのが煩わしいと感じる場合は
pymol > /dev/null 2>&1 &
で開くのも良いでしょう。
macOSのAutomatorを使って、ダブルクリックで立ち上がるボタンを作る(optional)
これで無事ターミナルからPyMOLが立ち上がりましたでしょうか?おめでとうございます。しかし、上の方法では毎度ターミナルを立ち上げなければなりません。この作業はLinuxやターミナルに慣れているガチ勢ならば何ということもないのですが、そうでない方にはちょっと面倒ですよね。この煩わしさを解決する方法としてmacOSにインストールされているAutomatorを使う方法があるので紹介します。macOSに標準搭載されているAutomatorは様々なアクションを組み合わせて自分だけのアプリケーションを作成できます。
AutomatorはmacOSのアプリケーション一覧にデフォルトでインストールされています。
これを立ち上げクリックすると、次のような画面が開きます。ここではアプリケーションを選択します。
次に、検索欄っぽいところに「スクリプト」と入れて、シェルスクリプトを実行を探し出して選択しダブルクリックします。
(2022年7月15日更新) コメントでご教授頂いたワザを反映
シェルスクリプトの入力欄が表示されるので、入力の引き渡し方法を 「引数として」 とし、スクリプト内容を画像のように/usr/local/bin/pymol "$@" > /dev/null 2>&1 &
とします(M1 Macの方は/opt/homebrew/bin/pymol
に変更してください)。
これでファイル > 保存(またはCommand + S)を選択します。保存先はアプリケーションで、名前はOpenPyMOLにしておきます。これで、その保存されたAutomatorをダブルクリックすればオープンソース版のPyMOLが立ち上がるようになります!!
さらに、このOpenPyMOLを各種.pdb
, .pse
ファイルをダブルクリックしたときのデフォルトアプリケーションに指定することも可能です。任意の.pdb
ファイルや.pse
の上で右クリックメニューを開き「情報を見る」を選択します。その後、「このアプリケーションで開く」のところを、先程のOpenPyMOLに指定し、すべてを変更ボタンを押します。
すると、以降なんらかのpdbやpseファイルをダブルクリックしたときにOpenPyMOLで立ち上がるようになります。便利ですので、ぜひやってみましょう。
ちなみに、アイコンはAutomatorデフォルトのものになってしまいます。
これが気になる人は https://webnetarium.com/howto-setting-fileicons/ や https://www.softantenna.com/wp/review/makeicns/ の記事を参考に、オリジナルアイコンに変えることに挑戦してみましょう。
環境
- macOS 14.4.1 (sonoma), 2.8GHz Intel Core i7, メモリ16GB
- ターミナルからHomebrewをインストールしてある
概要
PyMOL 2以降ではlegacyで時代遅れなpython2がなくても動作するようになったようです。よって現行のPython 3.9のみで動作させることができるようです。またGUIインターフェースとしてこれまでtcl-tkを使っていたようでしたが、これもPyQt(ぱいきゅーと)5などのきれいなインタフェースを利用できるようになりました。ただしlegacyプラグインなどを使う場合は時々tcl-tkを使う必要があったり、相変わらずPyMOLはたくさんのプログラム依存の上に成り立っているため、少なくとも以下のプログラムをインストールしておく必要があります。
- C++11 compiler (e.g. gcc 4.7+)
- Python 3.6+
- Pmw (Python Megawidgets) (optional, for legacy GUI/plugins)
https://github.com/schrodinger/pmw-patched - OpenGL
- GLEW
- GLUT (freeglut) (optional, enable with --glut)
- libpng
- freetype
- libxml2 (optional, for COLLADA export, disable with --no-libxml)
- msgpack-c 2.1.5+ (optional, for fast MMTF loading and export, disable with --use-msgpackc=no)
- mmtf-cpp (for fast MMTF export, disable with --use-msgpackc=no)
- PyQt5, PyQt4, PySide2 or PySide (optional, will fall back to Tk interface if compiled with --glut)
- glm
- catch2 (optional, enable with --testing)
- openvr 1.0.x (optional, enable with --openvr)
- libnetcdf (optional, disable with --no-vmd-plugins)
を用意しておく必要があります。optionalとついているものは無くても動作します。mmtfってのはpdbの最新式バイナリ型PDBファイルで、ものすごくファイルサイズを圧縮できるのが特徴です( https://mmtf.rcsb.org/index.html )。PyMOL 2.2からmmtf形式へのエクスポートにも対応したようです。興味がある方はこれも入れてインストールしてみましょう。
Homebrewを使ったPython3.9, libxml2のインストール
この記事のここ以下に書かれているのは、このpymol.rb
でやっている実際の処理内容とその詳細な手順です。
M1チップのMacをお使いの方は、HomebrewのPATHが/usr/local/
から/opt/homebrew
に切り替わっているため、そちらに読み替えて実行してください。例えば/usr/local/bin/python3.9
は/opt/homebrew/bin/python3.9
というPATHになります。お使いのMacがM1かどうかは、画面左上の🍎マークから「このMacについて」をクリックして表示されるMacの概要のところのチップがApple M1となっていれば該当します。そうでない場合はIntel CPU Macです。
まずはPython 3.9をインストールします(現行は3.9.6)……が、先にmacOSを使っている方でwhich python3.9
と打ってみたときに/usr/local/bin/python3.9
と表示されたときには要注意です。すでに他の方法で/usr/local/bin/
以下にpython3.9がインストールされている可能性があります。例えば、Python公式のウェブサイトが配布しているPython3インストーラーを使っている場合などです。これについては後述します。
続いて、
ls -la /usr/local/bin/python3.9
と打ってみたときに何も表示されないか、または
lrwxr-xr-x 1 YoshitakaM admin 38 5 19 19:44 /usr/local/bin/python3.9 -> ../Cellar/python@3.9/3.9.6/bin/python3.9
という風にCellar以下のpythonが表示された場合は問題ありません。CellarのものはHomebrewですでにインストールされていることを表しています。もし、ここでそれ以外の結果、例えば/Library/Frameworks/~~
と続くPATHが表示された場合には、これから使おうとするPython3.9はHomebrewでインストールしたPython3.9ではありません。その場合は別の方策を考える必要があります(後述)。
brew install python3
終わったら一度ターミナルを落として再起動させてからpip3 install --upgrade pip setuptools wheel
を入力し、後で使うpip3
をアップグレードしておきます。
終わったら、以下のコマンドを入力して、/usr/local/bin/python3.9
の実体を確認しておきます。
$ ls -lt `which python3.9`
lrwxr-xr-x 1 YoshitakaM admin 40 8 12 13:05 /usr/local/bin/python3.9 -> ../Cellar/python@3.9/3.9.6/bin/python3.9
$ ls -lt `which pip3.9`
lrwxr-xr-x 1 YoshitakaM admin 37 8 12 13:05 /usr/local/bin/pip3.9 -> ../Cellar/python@3.9/3.9.6/bin/pip3.9
ここで、ともに-> ../Cellar/python/3.X.X
の文字が見えれば成功です。/usr/local/bin/python3.9
のコマンドが、HomebrewでインストールしたCellar
以下のディレクトリに存在する本体に結びついていることがわかります。
これを確認したらlibxml2のインストールに進みます。
/usr/local/bin/python3.9がすでに存在している環境の場合
もし
$ ls -lt `which python3.9`
lrwxr-xr-x 1 YoshitakaM admin 35 5 19 19:44 /usr/local/bin/pip3.9 -> /Library/Frameworks/Python.framework/Versions
というふうに、which python3.9
(とwhich pip3.9
)の結果がHomebrewでのPython3インストールの前からすでに/usr/local/bin/python3.9
になっていたり、その実体を指し示すところがともにシステム直下の/Library/Frameworks/~
となっている場合は、おそらくあなたはmacOS専用のインストーラーdmgをインストールしてきたPython3使いの方だと思います。この場合、HomebrewでインストールしたPython3とは別のPython3が共存することになります(性能はどちらもほぼ同じです)。ただ、現在の設定ではHomebrewの方でインストールしたPython3ではなく、Python3公式サイトのインストーラーを使って入れた方のPython3が優先的に選ばれる設定になっています。
もしシステム直下のPython3環境を使い込んでいるということがなければ、そのシンボリックリンクをいったん消すことでHomebrewのPython3を優先的に使わせることができるようになると思います。
$ rm /usr/local/bin/{python3,python3.9}
$ brew reinstall python3
$ brew unlink python3 && brew link python3
$ ls -lt `which python3.9`
これを実行して/Cellar/python~~
が表示されるようになれば成功です。pip3.9の実体も同様に確かめておきましょう。
最悪、/Library/Frameworks
以下のPython3環境をアンインストール (参考: http://codeaid.jp/python-uninstall/ )してHomebrewのPython3インストール方法を利用すればきっと動きます。
glew, freeglut, libpng, freetype, libxml2, catch2のインストール
brew install glew freeglut libpng freetype libxml2 catch2
libxml2はmacOSのXcode command-line toolsがインストールされていれば、実は不要です。ですが、最後のインストール時にCPPFLAGS
でこれを指定するので、ここでは付けておきます。
glmのインストール (※PyMOL 2.2以降で必須)
OpenGL Mathematics (GLM)はOpenGLで利用する数値計算ライブラリです。これもHomebrewでインストールできます。
brew install glm
msgpack-cのインストール (optional)
brew install msgpack
pip3.9を使ったsipとpyqt5とPmwのインストール
先程Python3.9を入れたときに、同時にpip3.9
もインストールされたはずです。このpip3.9
を使うことで簡単にsipとPyQt5をインストールすることができます。まずはpip3.9 --version
と打ってみて先程インストールしたpython3.9であることを確認します。
$ pip3.9 --version
pip 21.1.3 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
このPATHが/usr/local/lib/python3.9/site-packages
となっていることを確認します。他のだったら何かおかしいです。
sip, pyqt5やPmwのインストールについて、これは長らくpipでのサポートが行われていなかったためソースビルドをしている先人の記録がたくさんありますが、今は
pip3.9 install sip pyqt5 pmw
で終わるようです。ただし、もしこれをやろうとしたときに赤文字で
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.9/site-packages/sip.so'
と出てしまった場合は、
pip3.9 install sip pyqt5 pmw --user
として実行すれば、ユーザーディレクトリ上にインストールしてくれるのでこの問題を(たぶん)回避できます。
pip3.9を使ったMMTF形式サポートパッケージの導入(optional)
MMTF形式の構造ファイルのロードにはmsgpackの導入が必要です。Homebrewでmsgpackをインストールしておくと、後のpymolインストール時に自動的にmsgpackを探知してサポートONになります。ここで、pythonからmsgpackを使えるようにpipで必要なモジュールを入れておきます。
pip3.9 install msgpack-python msgpack-tool mmtf-python
で終わるようです。
sip, PyQt5, pmwの動作検証
pymolのインストールのためには、今Homebrewで入れたpython3から直接sipとPyQt5の2つを正しく呼び出せることが必要不可欠です。ターミナル上でまずpython3
を起動し、import sip
とimport PyQt5
を打ってみてsipとPyQt5のインポートを試みます。
$ python3.9
Python 3.9.6 (default, Jun 28 2021, 19:24:41)
[Clang 12.0.5 (clang-1205.0.22.9)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sip
>>> import PyQt5
>>> import Pmw
>>>
と表示されることを確認します。ここでもしimport sip
、import PyQt5
やimport Pmw
を入力してエンターを押したときに、エラーメッセージっぽいのが流れてしまった場合には失敗です。上のように何もメッセージが出ず次の入力待ちになったら成功です。Ctrl-Dを押してPython3を終了します。
PyMOL 2.5のソースコードからのインストール
これで準備はできました。GitHubからソースコードをダウンロードしてきて、そのディレクトリに入ります(※2018年7月下旬からGitHubでの公開になりました)。
wget https://github.com/schrodinger/pymol-open-source/archive/v2.5.0.tar.gz
tar zxvf v2.5.0.tar.gz
cd pymol-open-source-2.5.0
このディレクトリ内に存在するsetup.py
を起動するとインストールが始まりますが、まずは設定項目をコマンドpython3 setup.py --help
で確認しておきましょう。
理解したら、たぶん次のコマンドでうまくいくはずです。
# Intel CPUのmacOSの場合
LDFLAGS="-L/usr/local/opt/libxml2/lib" \
CPPFLAGS="-I/usr/local/opt/libxml2/include/libxml2 -I/usr/local/include/freetype2" \
# M1 Macの場合
python3 setup.py build install \
--prefix=~/apps/pymol/2.5 --use-msgpackc=c++11 --glut --testing
ここでLDFLAGS=
とCPPFLAGS=
はインストールのときのライブラリとヘッダファイルのパスへの環境変数を指定します。今回、libxml2とfreetype2を明示的に書いておかないとインストール途中でlibxml/encoding.h not found
やらft2build.h not found
と出てインストール失敗することがあります。Homebrewで入れた場合バージョンナンバーがついているので、この記事を書いてから時間が経つとここの数字は変わります。適宜環境ごとにパスを調べてから実行しましょう。
また、--prefix
にはインストール先を指定します。私は今回~/apps/pymol/2.5
をインストール先に指定しました。
1〜2分くらいするとインストールが終わるはずです。終わったらいったんターミナルを終了して再起動させてみてから、いよいよpymolが動くかどうかを次のコマンドで確認してみましょう。
~/apps/pymol/2.5/bin/pymol (/path/to/your/pymol)
ちなみに不完全なやり方でインストールに失敗すると、上1/3くらいのExternal GUIが現れません。もう一度インストール方法を確かめてみましょう。もしインストールがなにかうまく行かなくて再インストールしたい場合には、setup.py
が存在するディレクトリの中にできているbuild
ディレクトリを消去してから再インストールしましょう。
MMTF形式の読み込み(optional)
msgpack周りの設定をこなしていれば、MMTF形式の構造ファイルを読み込めるようになります。MMTF形式はMMCIF形式などと比較して大幅(5〜10倍程度)にファイルサイズを小さくすることができる次世代の構造ファイル形式です。構造ファイルの取得は
wget http://mmtf.rcsb.org/v1.0/full/4V9O.mmtf.gz
(または)
curl -O http://mmtf.rcsb.org/v1.0/full/4V9O.mmtf.gz
とすることで可能です。上の例ではPDB: 4V9Oを取得していますが、この4文字を変更することで自由に取得できます。mmtf.gz形式なので一見解凍する必要があるかに見えますが、PyMOLは解凍せずともファイルを開くことができます。
##simplemmtfのインストールと、MMTF形式でのPDBファイルの書き出し(optional)
上級者向けの追加設定。この記事の最初の方で述べたsimplemmtfライブラリを使うと、構造をMMTF形式で出力することができます。これを利用するためには https://github.com/schrodinger/simplemmtf-python の clone or Downloadのところからまずzipをダウンロードしてきて解凍し、そのディレクトリ/path/to/simplemmtf-python-master
に入ったあと、
python3 setup.py build install
とすることで簡単にインストールすることができます。このとき、上のコマンドのpython3
は必ずPyMOLのインストールのときに使ったpython3と同じ実体のものを使います。
これをインストールした後、任意のpdbファイル(のはずなんだけど、なんかたまにうまくできないこともある)を保存するときに、PyMOLのコマンドインタフェースから
# PyMOL内コマンド
save 4V9O.mmtf, 4V9O, format=mmtf
と指定することで、bar
という名前でPyMOL中に表示されているオブジェクトをfoo.mmtf
で保存することができます。従来のフォーマットよりもさらに小さいファイルサイズになっていることがわかります。また、ここから更にターミナル上で.gz
に圧縮することも可能です。
# Terminalで行う
gzip 4V9O.mmtf
これにより4V9O.mmtf.gz
が生成されます。こうして出来上がった.mmtf.gzファイルは前項の「MMTF形式の読み込み」の設定が完了していれば読み込むことが可能になっているはずです。PDBフォーマットで3.2 MBくらいあるファイルがMMTF.gzでは330 KBくらいになりました。
ただ、multistateのPDB書き出しにはどうやら対応していないことや、PyMOL上で直接.mmtf.gz
形式に書き出すことは不可能みたいです。
プラグインのインストール方法
PyMOL 2からのプラグイン
バイナリ版PyMOL2.0に存在したプラグインはこちらのソースビルド版には初期状態で入っていません。しかし特にAPBS pluginなどは論文で使う研究者も多いはずです。すでにこのバイナリ版PyMOLを持っているならば、/Applications/PyMOL.app/Contents/share/pymol/data/startup/
にあったプラグインを~/apps/pymol/2.5/lib/python3.9/site-packages/pymol/pymol_path/data/startup
に持ってくると使うことができます。
# 手動インストールの場合はこっち
# cp -rp /Applications/PyMOL.app/Contents/share/pymol/data/startup/* /path/to/pymol/2.5.0/lib/python3.9/site-packages/pymol/pymol_path/data/startup
# homebrewでインストールした場合はこっち
cp -rp /Applications/PyMOL.app/Contents/share/pymol/data/startup/* /usr/local/Cellar/pymol/2.5.0/libexec/lib/python3.9/site-packages/pymol/pymol_path/data/startup/
APBSやPDB2PQRのプラグインへのPATHは各自設定してください。
PyMOL 1時代のlegacyなプラグイン
CentOS 7にソースコードからインストールを試みたときはtcl-tk GUIのプラグインも使えたのですが、macOSではtcl-tkを使うGUIプラグインは上のやり方ではうまく動作しませんでした。何がいけなかったんでしょうねえ……。しかしいずれPython2.7は廃止されるのでこれをわざわざ使えるようにすることは必要ないかなと思います。さらに、現在はPymol 2に合わせてほとんどのプラグインが再作成されておりますので、まずはそれを探してみると良いと思います。(→参考:https://pymolwiki.org/index.php/Psico)
CentOS 7にPyMOL 2.5をインストールする場合
環境
- CentOS 7.4, Intel(R) Core(TM) i7-8700K CPU @ 3.80GHz, メモリ32GB
- sudo権限が使える場合
インストール方法
上のMacと似たような流れでインストールすることができます。また必要なパッケージのほとんどは管理者のyumを使ってシステムに直接インストールできるのでとても簡単です。rootでない管理者の場合はyumの前にsudoをつけて実行します。
yum -y install epel-release
yum -y install gcc gcc-c++ python-devel tkinter glew-devel freeglut-devel \
libpng-devel freetype-devel libxml2-devel glm-devel msgpack
yum -y install python36u-pip
# pip3.6の場所の確認
which pip3.6
# 現在使用中のpython3環境にpip3.6で追加パッケージをインストールする
pip3.6 install --upgrade pip
pip3.6 install sip pyqt5 pmw
pip3.6 install msgpack-python msgpack-tool mmtf-python
# PyMOL 2.5のソースコードをダウンロードして、ビルド&インストール
cd /path/to/pymol-open-source
# rm -rf build #インストールでエラーが出てしまった場合、再インストールを試す前にbuildディレクトリを消しておく
python3.6 setup.py build install --prefix=/path/to/pymol/2.5 --glut --use-msgpackc=c++11
だいたいこの流れでインストールができると思います。ただし、もしGTX 1080TiなどのNVIDIAグラフィックドライバを積んでいる場合にはそちらに切り替えたほうがPyMOLのGUI操作がサクサクになると思われますので、その設定もしておくと良いでしょう。
参考:CentOS 7 上で PyMOL をソースからビルド
Ubuntu 22.04にPyMOL 2.5をインストールする場合
環境
- Ubuntu 22.04
- sudo権限が使える場合
インストール方法
(2022年6月15日追記)
現在はapt
でpymol 2.5が一発でインストールできるようになっています。
sudo apt -y install pymol
これで終わりです。