Mac OS X/Cent OS 7へのソースコードからの最新版PyMOLのインストール方法

PyMOLはプラグイン機能が非常に強力で、様々な追加機能をインストールすることが可能です。この機能はPyMOLのPluginというメニューから利用することができます。

2017年9月にPyMOL 2.0がリリースされました。これと同時にWindows, MacOS X,Linux用の最新版バイナリPyMOLも配布されるようになり、ver.0.99までの古いバイナリしか持てなかった人々は歓喜しました。また2018年3月19日からはPyMOL ver.2.1のソースコード公開も再開し、「Unofficialながらもソースコードからのビルド&インストールしたい方はこれでどうぞ」ということが可能になりました。バイナリも引き続き配布を続けるようです。

ソースコード版はバイナリ版と違ってインストールが難しい代わりに、ライセンス認証が(現在のところ)永続的に不必要となり、かつ自由にソースをいじれるなので、玄人向けと言えるでしょう。ここではソースコード版からのインストール方法を記します。

環境

概要

PyMOL 2.1ではlegacyで時代遅れなpython2がなくても動作するようになったようです。よって現行のPython 3.6のみで動作させることができるようです(追記:……なんですけど、プラグインはPython 2系の文法で書いてあることが多いので動かないものもままあります。やはりPython 2.7を使うべきだったか……?)。またGUIインターフェースとしてこれまでtcl-tkを使っていたようでしたが、これもPyQt(ぱいきゅーと)5などのきれいなインタフェースを利用できるようになりました。

ただしlegacyプラグインなどを使う場合は時々tcl-tkを使う必要があったり、相変わらずPyMOLはたくさんのプログラム依存の上に成り立っているため、少なくとも以下のプログラムをインストールしておく必要があります。

  • C++11 compiler (e.g. gcc 4.4+)
  • Python 2.6+
  • Tcl/Tk (via tkinter)
  • Pmw (Python Megawidgets)
  • OpenGL
  • GLEW
  • GLUT (freeglut)
  • libpng
  • freetype
  • libxml2 (optional, for COLLADA export, disable with --no-libxml)
  • msgpack-c 1.0+ (optional, for fast MMTF loading, disable with --use-msgpackc=no)
  • PyQt5, PyQt4, or PySide (optional, will fall back to Tk interface)
  • simplemmtf (optional, for MMTF export)

を用意しておく必要があります。optionalとついているものは無くても動作しますが、今回はlibxml2とPyQt5を使用してインストールを試みます。mmtfってのはpdbの最新式バイナリ型PDBファイルで、ものすごくファイルサイズを圧縮できるのが特徴です( https://mmtf.rcsb.org/index.html )。PyMOL 2.1からmmtf形式へのエクスポートにも対応したようです。興味がある方はこれも入れてインストールしてみましょう。

Homebrewを使ったPython3.6, libxml2のインストール

まずHomebrewを使って必要なソフトウェアを入れていきます。

brew tap homebrew/core
brew tap homebrew/science

たぶんhomebrew/corehomebrew/scienceはtap済みであることがほとんどだと思いますが念のため。

また、Homebrewで入れたものを優先的に使うよう、~/.bash_profile(or ~/.bashrc)などの設定ファイルにHomebrewのパッケージの優先度を上げるための

export PATH="/usr/local/bin:$PATH"

を追記してターミナルを再起動します。

さて、ここから順にインストールしていきます。

Python 3.6のインストール

まずはPython 3.6をインストールします(現行は3.6.4_4)。Mac
OSにはPython3がプリインストールされていますが、Homebrewのほうが拡張性が高いのでこちらにします。

brew install python3 --with-tcl-tk

--with-tcl-tkもつけてやっておくとtcl-tkも同時にインストールされるはずです。なんか入っていなかったら

brew install tcl-tk

で入れておきましょう。

まあまあ時間がかかります。終わったら一度ターミナルを落として再起動させてからpip3 install --upgrade pip setuptools wheelを入力し、後で使うpip3をアップグレードしておきます。

libxml2のインストール

brew install libxml2

msgpack-cのインストール (optional)

brew install msgpack

pip3.6を使ったsipとpyqt5とPmwのインストール

先程Python3.6を入れたときに、同時にpip3.6もインストールされたはずです。このpip3.6を使うことで簡単にsipとPyQt5をインストールすることができます。まずはpip3.6 --versionと打ってみて先程インストールしたpython3.6であることを確認します。

$ pip3.6 --version
pip 9.0.3 from /usr/local/lib/python3.6/site-packages (python 3.6)

このPATHが/usr/local/lib/python3.6/site-packagesとなっていることを確認します。他のだったら何かおかしいです。

sip, pyqt5やPmwのインストールについて、これは長らくpipでのサポートが行われていなかったためソースビルドをしている先人の記録がたくさんありますが、今は

pip3.6 install sip
pip3.6 install pyqt5
pip3.6 install pmw

で終わるようです。

pip3.6を使ったMMTF形式サポートパッケージの導入(optional)

MMTF形式の構造ファイルのロードにはmsgpackの導入が必要です。Homebrewでmsgpackをインストールしておくと、後のpymolインストール時に自動的にmsgpackを探知してサポートONになります。ここで、pythonからmsgpackを使えるようにpipで必要なモジュールを入れておきます。

pip3.6 install msgpack-python msgpack-tool mmtf-python

で終わるようです。

sip, PyQt5, pmwの動作検証

pymolのインストールのためには、今Homebrewで入れたpython3から直接sipとPyQt5の2つを正しく呼び出せることが必要不可欠です。ターミナル上でまずpython3を起動し、import sipimport PyQt5を打ってみてsipとPyQt5のインポートを試みます。

$ python3
Python 3.6.4 (default, Mar 22 2018, 14:47:14)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sip
>>> import PyQt5
>>> import Pmw
>>>

と表示されることを確認します。ここでもしimport sipimport PyQt5import Pmwを入力してエンターを押したときに、エラーメッセージっぽいのが流れてしまった場合には失敗です。上のように何もメッセージが出ず次の入力待ちになったら成功です。Ctrl-Dを押してPython3を終了します。

PyMOL 2.1のソースコードからのインストール

これで準備はできました。sourceforgeからダウンロードしてきたpymol-v2.1.0.tar.bz2を解凍してそのディレクトリに入ります。

tar jxvf pymol-v2.1.0.tar.bz2 ; cd pymol

このディレクトリ内に存在するsetup.pyを起動するとインストールが始まりますが、まずは設定項目をコマンドpython3.6 setup.py --helpで確認しておきましょう。

理解したら、たぶん次のコマンドでうまくいくはずです。

LDFLAGS="-L/usr/local/Cellar/libxml2/2.9.7/lib" \
CPPFLAGS="-I/usr/local/Cellar/libxml2/2.9.7/include/libxml2 -I/usr/local/include/freetype2" \
python3.6 setup.py build install \
--prefix=~/apps/pymol/2.1 \
--pyqt PyQt5 --osx-frameworks

ここでLDFLAGS=CPPFLAGS=はインストールのときのライブラリとヘッダファイルのパスへの環境変数を指定します。今回、libxml2とfreetype2を明示的に書いておかないとインストール途中でlibxml/encoding.h not foundやらft2build.h not foundと出てインストール失敗することがあります(環境によっては不必要かもしれません)。Homebrewで入れた場合バージョンナンバーがついているので、この記事を書いてから時間が経つとここの数字は変わります。適宜環境ごとにパスを調べてから実行しましょう。

また、--prefixにはインストール先を指定します。私は今回~/apps/pymol/2.1をインストール先に指定しました。

1〜2分くらいするとインストールが終わるはずです。終わったらいったんターミナルを終了して再起動させてみてから、いよいよpymolが動くかどうかを次のコマンドで確認してみましょう。

~/apps/pymol/2.1/bin/pymol (/path/to/your/pymol)

これで以下のようにPyMOL 2.1が立ち上がれば成功です。\
pymol1.png

ちなみに不完全なやり方でインストールに失敗すると、上1/3くらいのExternal GUIが現れません。もう一度インストール方法を確かめてみましょう。もしインストールがなにかうまく行かなくて再インストールしたい場合には、setup.pyが存在するディレクトリの中にできているbuildディレクトリを消去してから再インストールしましょう。

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

PyMOL 2からのプラグイン

バイナリ版PyMOL2.0に存在したプラグインはこちらのソースビルド版には初期状態で入っていません。しかし特にAPBS pluginなどは論文で使う研究者も多いはずです。すでにこのバイナリ版PyMOLを持っているならば、/Applications/PyMOL.app/Contents/share/pymol/data/startup/にあったプラグインを~/apps/pymol/2.1/lib/python3.6/site-packages/pymol/pymol_path/data/startupに持ってくると使うことができます。

cp -rp /Applications/PyMOL.app/Contents/share/pymol/data/startup/* /path/to/pymol/2.1/lib/python3.6/site-packages/pymol/pymol_path/data/startup

APBSやPDB2PQRのプラグインへのPATHは各自設定してください。

PyMOL 1時代のlegacyなプラグイン

CentOS 7にソースコードからインストールを試みたときはtcl-tk GUIのプラグインも使えたのですが、Mac OSではtcl-tkを使うGUIプラグインは上のやり方ではうまく動作しませんでした。何がいけなかったんでしょうねえ……。しかしいずれPython2.7は廃止されるのでこれをわざわざ使えるようにすることは必要ないかなと思います。さらに、現在はPymol 2に合わせてほとんどのプラグインが再作成されておりますので、まずはそれを探してみると良いと思います。(→参考:https://pymolwiki.org/index.php/Psico)

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は解凍せずともファイルを開くことができます。

CentOS 7にPyMOL 2.1をインストールする場合

環境

  • CentOS 7.4, Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz, メモリ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 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.1のソースコードをダウンロードして解凍し、ビルド&インストール
tar jxvf pymol-v2.1.0.tar.bz2 ; cd pymol
# rm -rf build #buildディレクトリが存在する場合は消しておく
python3.6 setup.py build install --prefix=/path/to/pymol/2.1 --pyqt PyQt5

だいたいこの流れでインストールができると思います。ただし、もしGTX 1080TiなどのNVIDIAグラフィックドライバを積んでいる場合にはそちらに切り替えたほうがPyMOLのGUI操作がサクサクになると思われますので、その設定もしておくと良いでしょう。
参考:CentOS 7 上で PyMOL をソースからビルド

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.