はじめに
Molecular Dynamics Simulation を用いてアミノ酸配列からタンパク質の計算をし、エネルギーや熱の流れを計算できる "CURP(CURrent Calculation for Protein" というオープンソースソフトウェアがある。
CURP CURrent Calculation for Protein
http://www.comp-biophys.com/yamato-lab/curp.html
[Github] CURP CURrent Calculation for Protein
https://github.com/yamatolab/current-calculations-for-proteins
お試しで使っていみようと思い導入したが、かなりのエラーに出くわしたので備忘録にもと思い過程を記す。以下、環境はUbuntu(GNOME)を想定しています。
導入環境
筆者は以下の環境で導入した。
- OS: Ubuntu 20.4LTS
- パッケージ管理: dpkg (いやこれは明記せんでええんよっ)
- Python: 2.7.18 (2022/04時点 python2系のみ対応)
- 仮想環境: virtualenv 20.9.0
ドキュメントによれば、Python2 系で作られているようなのでPython2 系で最新の Python 2.7.18 を使った。
CURP は PyPI にもリポジトリ登録があるが、2019年から更新なし。GitHub の方にも安定版があるので、git cloneすべし。
Python2 系なので Virtualenv を用いて仮想環境を作成し、その中で GitHub の Master Branch を クローン してまずローカルに落とした。
git clone https://github.com/yamatolab/current-calculations-for-proteins.git
(PyPIリポジトリからの導入でも以下同じエラーが出てきて同じ方法で導入できている)
GitHubからリポジトリをクローンした場合は、まず仮想環境上で
pip install .
等としてパッケージをインストールできるか試す。ここで成功すれば問題なし。
以下は、自分の環境で遭遇したエラーに一致する箇所だけ参照しながら、エラーが取れるごとにCURPパッケージのインストールを試して、逐次エラーを解決していけば良い。
エラー
from numpy.distutils.core import setup ImportError: No module named numpy.distutils.core
どうやら事前に numpy が入っていないとエラーを吐く。 numpy は Version 1.17 から Python2系の対応がなくなっている。私は numpy 1.14.6 をインストールした。
(あっ、あれ仮想環境がアクティベイトされないぞぉ?仮想環境の有効化は↓)
source [your env name here]/bin/activate
error: No package 'hdf5' found
まず、PyPIからインストールできるか試す。インストールできなければ Ubuntu に必要なライブラリが入っていない可能性が高い。既に入っていても以下の実行は問題ないのでエラーが出たら内容に応じて必要なライブラリをインストールしてみる。
sudo apt-get install libhdf5-dev libhdf5-serial-dev netcdf-bin libnetcdf-dev
export HDF5_DIR=/usr/include/hdf5
コンフィグファイルに hdf5 のディレクトリがあるパスを通す。 HDF5_DIR=/usr/include/hdf5 は必ずしも同じとはならないので、エラーが出たら hdf5のディレクトリを探して正しいパスを通そう。
無事成功すれば clone したパッケージまたは PyPIからインストールを再度試す。
setup.py で netCDF4>=1.2.4 とあるが、netCDF4 Version: 1.5.4 からは Python2 系に非対応。私は 1.2.4 をインストールした。(>=1.2.4, <1.5.4 ならいいと思う)
pip install netCDF4==1.2.4
どうでもいいけど、ローカルに落としていたリポジトリを使って pip インストールするときに、キャッシュを使ってほしくないなら
pip cache purge
でOK牧場の決闘。
OK牧場の決闘
https://www.amazon.co.jp/gp/video/detail/B00EOAIO64/ref=atv_dp_share_cu_r
Graphviz cgraph.h not found
これも、Ubuntuに必要なライブラリがない為なので必要なライブラリをインストールする。
sudo apt -y install graphviz-dev libgraphviz-dev
これで私は パッケージの要件である pygraphviz のインストールに成功した。( pygraphviz <1.6)
No FORTRAN compiler found (or FORTRAのコンパイラーが見つかりません)
文字通りで、CURP は一部 FORTRAN で記述されているので FORTRAN のコンパイラーが必要。私は gfortran をインストールした。
sudo apt -y install gfortran
error: Python.h: No such file or directory
これも、ローカルに必要なライブラリがない為なので必要なライブラリをインストールする。
sudo apt -y install python-dev
error: mpi.h not found
これも、ローカルに必要なんがねぇんよっ!すすっとインストール
sudo apt -y install ibmpeg2-4-dev libopenmpi-dev
(いや、ibmpegは要らないかもしれない。)
不足していたパッケージ・ライブラリの導入完了
私は、以上のエラーを解決すれば GitHub から clone してきたパッケージのインストールに成功した。
まとめ
追加したパッケージ・ライブラリは以下
Linuxパッケージ・ライブラリ
- pythonpy
- libhdf5-dev
- libnetcdf-dev
- python-dev
- graphviz-dev
- gfortran
- libmpeg2-4-dev
- libopenmpi-dev
Pythonライブラリ
- pip==20.3.4
- setuptools==44.1.1
- wheel==0.32.0
- numpy==1.14.6
- nose==1.3.7
- netCDF4==1.2.4
- pygraphviz=1.5
- mpi4py==3.1.1
- Benchmarker==4.0.1
- configparser==4.0.2
- Curp
実は GitHub リポジトリによれば Python 3系 への移植ができているとかいないとか。
近日中に CURP v1.3 on Ubuntu のコンテナイメージ作って共有しようとも思っています。 (2022/04/27)