(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で出力するのは以下のコードです。
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')
結果:
CDKに比べると圧倒的に短いコードで済みます。
描画、検索、解析など計算量の多い機能はC++で実装されているようなので
速度で劣ることもそれほど無いように思います。
ただし、見ての通り現段階では画像のクオリティはCDKに比べると非常にしょぼいです。
なので、僕の場合検索や解析をRDKitで行い、描画だけCDKに投げるようにしてます。
(補足)Cairoを利用した高画質な構造式画像の描画
Cairo及びPyCairoが利用可能(つまりimport cairoできる状態)であれば、Draw.MolToFile()で構造式を描画する際に自動的にCairoを使用するため画像のクオリティがかなり改善します。
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です。
これでフォントが改善し原子数の下付きやイオンの上付きが正常に表示されます。