LoginSignup
20
18

More than 5 years have passed since last update.

Python用ケムインフォマティクスツールRDKitのインストール

Last updated at Posted at 2013-07-27

(2014.02.12更新 Boostの再インストール、PILのインストールについて追記しました)
(2014.02.19更新 Cairoを利用した構造式描画について追記しました)
(2014.03.11更新 Cairoを利用した構造式描画について更新しました)

ケムインフォマティクス用のツールとしては
オープンソースではOpenBabel(C++)やCDK(Java)が有名ですが、
RDKitはPythonで使用できるため、比較的簡単なスクリプトを書くだけで
化学構造式の描画や検索、解析ができるので便利です。

インストール(Mac OS X 10.7)

HomebrewのPythonを使う場合は.bash_profile等でPATHを通すのを忘れずに

NumPyが入ってない場合は入れておきます。

pip install numpy

有志のHomebrew formuraが公開されているのでtapしてインストールします。
https://github.com/edc/homebrew-rdkit

brew tap edc/homebrew-rdkit
brew install rdkit

依存モジュールのcmake, wget, swig, boost, そしてrdkitがインストールされます。
boostとrdkitのインストールにやや時間がかかります。

HomebrewのPythonを使用している場合、Boostが原因でFatal Python errorが出るので、
以下のコマンドでBoostをソースからビルドして再インストールします。

brew uninstall boost
brew install boost --build-from-source

コマンドラインからfrom rdkit import Chemできればインストール成功です。

構造式画像を表示する場合、PILが必要になります。

pip install pillow

使ってみる

例えば、SMILESから化学構造式を描画してPNGで出力するのは以下のコードです。

rdkittest.py
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import rdDepictor

mol = Chem.MolFromSmiles('CCC(CC)O[C@@H]1C=C(C[C@@H]([C@H]1NC(=O)C)[NH3+])C(=O)OCC')
rdDepictor.Compute2DCoords(mol)
Draw.MolToFile(mol, 'mol.png')

結果:

mol.png

CDKに比べると圧倒的に短いコードで済みます。
描画、検索、解析など計算量の多い機能はC++で実装されているようなので
速度で劣ることもそれほど無いように思います。

ただし、見ての通り現段階では画像のクオリティはCDKに比べると非常にしょぼいです。
なので、僕の場合検索や解析をRDKitで行い、描画だけCDKに投げるようにしてます。

(補足)Cairoを利用した高画質な構造式画像の描画

Cairo及びPyCairoが利用可能(つまりimport cairoできる状態)であれば、Draw.MolToFile()で構造式を描画する際に自動的にCairoを使用するため画像のクオリティがかなり改善します。

mol.png

Cairo, PyCairoはともにHomebrewでインストールできます。

brew install cairo
brew install py2cairo

(Python2.7の場合、pycairoではなくpy2cairoです。)
HomebrewでCairoを入れる場合X11デフォルトのCairoと競合するのでおそらくライブラリパスの設定等が必要な気がします。

(2014.03.11追記)
pangoおよびpygtkをインストールします。

brew install pango
brew install pygtk

Pythonからimport pangoできる状態になっていればOKです。
これでフォントが改善し原子数の下付きやイオンの上付きが正常に表示されます。

mol.png

20
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18