32
Help us understand the problem. What are the problem?

posted at

updated at

macOS/CentOS 7/Ubuntu 20.04へのオープンソース版PyMOL 2.5のインストール方法

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ながらもソースコードからのビルド&インストールしたい方はこれでどうぞ」ということが可能になりました。バイナリも引き続き配布を続けるようです。オープンソース版はバイナリ版と違ってインストールが難しい代わりに、ライセンス認証が(現在のところ)永続的に不必要となり、かつ自由にソースをいじれるので、玄人向けと言えるでしょう。

ここでは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 に登録してもらいました。これにより、非常に簡単にインストールすることができます。

2021年9月3日、PyMOL 2.5.0を以下の手順で簡単にインストールすることができるように改良しました。
やり方は、最新版のXquartzをインストールしておいた状態で、(たぶんいらない)アプリケーション > ユーティリティ > ターミナルを開き、Homebrewをインストールし終わった後、

$ brew install brewsci/bio/pymol

とするだけです。5分くらい時間がかかりますが、これで一発でインストールすることが可能です。
終わったら、一度Command+Qキーでターミナルを完全に閉じてから、もう一度ターミナルを開いて

$ pymol

でオープンソース版pymolが立ち上がります。このときターミナルにメッセージが流れるのが煩わしいと感じる場合は

$ pymol > /dev/null 2>&1 &

で開くのも良いでしょう。

スクリーンショット 2020-05-22 0.46.23.png

macOSのAutomatorを使って、ダブルクリックで立ち上がるボタンを作る(optional)

これで無事ターミナルからPyMOLが立ち上がりましたでしょうか?おめでとうございます。しかし、上の方法では毎度ターミナルを立ち上げなければなりません。この作業はLinuxやターミナルに慣れているガチ勢ならば何ということもないのですが、そうでない方にはちょっと面倒ですよね。この煩わしさを解決する方法としてmacOSにインストールされているAutomatorを使う方法があるので紹介します。macOSに標準搭載されているAutomatorは様々なアクションを組み合わせて自分だけのアプリケーションを作成できます。

AutomatorはmacOSのアプリケーション一覧にデフォルトでインストールされています。
スクリーンショット 2019-08-09 18.30.27.png
これを立ち上げクリックすると、次のような画面が開きます。ここではアプリケーションを選択します。
スクリーンショット 2019-08-09 18.27.34.png
次に、検索欄っぽいところに「スクリプト」と入れて、シェルスクリプトを実行を探し出して選択しダブルクリックします。
スクリーンショット 2019-08-09 18.33.19.png
(2022年7月15日更新) コメントでご教授頂いたワザを反映

シェルスクリプトの入力欄が表示されるので、入力の引き渡し方法を 「引数として」 とし、スクリプト内容を画像のように/usr/local/bin/pymol "$@" > /dev/null 2>&1 &とします。

ScreenShot 2022-07-15 15.07.11.png

これでファイル > 保存(またはCommand + S)を選択します。保存先はアプリケーションで、名前はOpenPyMOLにしておきます。これで、その保存されたAutomatorをダブルクリックすればオープンソース版のPyMOLが立ち上がるようになります!!

さらに、このOpenPyMOLを各種.pdb, .pseファイルをダブルクリックしたときのデフォルトアプリケーションに指定することも可能です。任意の.pdbファイルや.pseの上で右クリックメニューを開き「情報を見る」を選択します。その後、「このアプリケーションで開く」のところを、先程のOpenPyMOLに指定し、すべてを変更ボタンを押します。

ScreenShot 2022-07-15 15.02.38.png

すると、以降なんらかのpdbやpseファイルをダブルクリックしたときにOpenPyMOLで立ち上がるようになります。便利ですので、ぜひやってみましょう。

ちなみに、アイコンはAutomatorデフォルトのものになってしまいます。
スクリーンショット 2019-08-09 19.00.19.png

これが気になる人は https://webnetarium.com/howto-setting-fileicons/https://www.softantenna.com/wp/review/makeicns/ の記事を参考に、オリジナルアイコンに変えることに挑戦してみましょう。
スクリーンショット 2019-08-09 19.02.11.png

環境

概要

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 sipimport 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 sipimport PyQt5import 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)

これで以下のようにPyMOL2.5が立ち上がれば成功です。
スクリーンショット 2020-05-22 0.46.23.png

ちなみに不完全なやり方でインストールに失敗すると、上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 20.04/22.04にPyMOL 2.5をインストールする場合

環境

  • Ubuntu 20.04/22.04
  • sudo権限が使える場合

インストール方法

(2022年6月15日追記)

現在はaptでpymol 2.5が一発でインストールできるようになっています。

sudo apt -y install pymol

これで終わりです。

(以下昔の名残り)

aptを使ってパッケージをインストールした後、後はだいたいCentOS 7のときと流れは同じです。Python 3のバージョンは3.8でも3.9でも大丈夫です。

sudo apt -y install freeglut3-dev gcc tcl8.6-dev tk8.6-dev libmsgpack-dev libpng-dev libfreetype6-dev libglm-dev libglew-dev python3-pyqt5.qtopengl python3-pip libxml2-dev libnetcdf-dev
# python3環境にpip3で追加パッケージをインストールする
# ここはシステムの/usr/bin/pip3でなくとも、仮想環境のpip3でも良い。ただし、最後のpymolインストール時に使うpython3と同じものに合わせておく。
sudo pip3 install sip pyqt5 pmw msgpack-python
# 新しい依存パッケージmmtf-cppを/usr/localにインストール https://github.com/rcsb/mmtf-cpp
sudo apt install ninja-build cmake
wget https://github.com/rcsb/mmtf-cpp/archive/v1.0.0.tar.gz
tar zxvf v1.0.0.tar.gz
cd mmtf-cpp-1.0.0
mkdir build ; cd build
cmake -G Ninja ..
sudo ninja install
# PyMOL 2.5のソースコードをダウンロードして、ビルド&インストール
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
# rm -rf build #インストールでエラーが出てしまった場合、再インストールを試す前にbuildディレクトリを消しておく
python3 setup.py build install --prefix=/path/to/pymol/2.5 --use-msgpackc=c++11 --glut
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
Sign upLogin
32
Help us understand the problem. What are the problem?