RDKit

本家様 http://rdkit.org/
BSDライセンスなCheminformaticsツール。
化合物の構造式描画やフォーマット変換、および構造式検索(部分検索、類似構造検索)が可能なもの。
またデータベースに組み込んでSQL文で化合物の検索やフォーマット変換もできる優れもの。
CentOS 7 にて作り直した
PostgreSQLのCartridgeとして作るRDKit/Cartridge 試作webアプリRDKit/Cartridge/web

「160301版」へupdate(160916)。それ以前、RDKit.141204

ダウンロード

コンパイル環境を整備する

[root@c ~]# yum groupinstall "Development tools"
[root@c ~]# yum install cmake tk-devel readline-devel zlib-devel bzip2-devel sqlite-devel \
    boost-devel numpy-f2py python-imaging

次にRDKit最新版(RDKit_2016_03_1.tgz)を取得します

[root@c ~]# cd /opt/src
[root@c src]# <https://sourceforge.net/projects/rdkit/files/rdkit/Q1_2016/にて RDKit_2016_03_1.tgz を取得>

コンパイル

RDKitはパッケージを展開した場所がそのままインストール場所になるみたい。ここでは/optを起点にする。

[root@c ~]# cd /opt
[root@c opt]# gzip -cd ./src/RDKit_2016_03_1.tgz | tar xf -

展開されたフォルダ、ファイルの所有者をrootに変更して、作られたフォルダ(/opt/rdkit-Release_2016_03_1)をそのままに、
/opt/RDKitにリンクさせる。

[root@c opt]# chown -R root:root ./rdkit-Release_2016_03_1/
[root@c opt]# rm -f RDKit && ln -s rdkit-Release_2016_03_1 RDKit
[root@c opt]#
[root@c opt]# ls -ld RDKit rdkit-Release_2016_03_1/
lrwxrwxrwx  1 root root   23  9月 16 00:16 RDKit -> rdkit-Release_2016_03_1
drwxrwxr-x 12 root root 4096  4月 18 15:24 rdkit-Release_2016_03_1/
 
[root@c opt]#

環境変数 RDBASE を定義して、作業場所を掘って、まずは既定オプションを確認する

[root@c opt]# export RDBASE=/opt/RDKit
[root@c opt]# mkdir -p $RDBASE/build && cd $RDBASE/build
 
[root@c build]# export PATH=/sbin:/bin:/usr/sbin:/usr/bin
[root@c build]# export LD_LIBRARY_PATH=$RDBASE/lib
[root@c build]# cmake .. -L
(前略)
CMAKE_BUILD_TYPE:STRING=Release
CMAKE_INSTALL_PREFIX:PATH=/usr/local
PYTHON_NUMPY_INCLUDE_PATH:PATH=/usr/include
RDK_BUILD_AVALON_SUPPORT:BOOL=OFF
RDK_BUILD_CAIRO_SUPPORT:BOOL=OFF
RDK_BUILD_COMPRESSED_SUPPLIERS:BOOL=OFF
RDK_BUILD_CONTRIB:BOOL=OFF
RDK_BUILD_CPP_TESTS:BOOL=ON
RDK_BUILD_INCHI_SUPPORT:BOOL=OFF
RDK_BUILD_PGSQL:BOOL=OFF
RDK_BUILD_PYTHON_WRAPPERS:BOOL=ON
RDK_BUILD_QT_DEMO:BOOL=OFF
RDK_BUILD_QT_SUPPORT:BOOL=OFF
RDK_BUILD_SLN_SUPPORT:BOOL=ON
RDK_BUILD_SWIG_CSHARP_WRAPPER:BOOL=OFF
RDK_BUILD_SWIG_JAVA_WRAPPER:BOOL=ON
RDK_BUILD_SWIG_WRAPPERS:BOOL=OFF
RDK_BUILD_THREADSAFE_SSS:BOOL=ON
RDK_INSTALL_INTREE:BOOL=ON
RDK_INSTALL_STATIC_LIBS:BOOL=ON
RDK_OPTIMIZE_NATIVE:BOOL=ON
RDK_PGSQL_STATIC:BOOL=ON
RDK_TEST_COVERAGE:BOOL=OFF
RDK_TEST_MMFF_COMPLIANCE:BOOL=ON
RDK_TEST_MULTITHREADED:BOOL=ON
RDK_USE_BOOST_SERIALIZATION:BOOL=ON
RDK_USE_FLEXBISON:BOOL=OFF
RDK_USE_STRICT_ROTOR_DEFINITION:BOOL=ON
[root@c build]#

この結果では圧縮したファイルが扱えないので(RDK_BUILD_COMPRESSED_SUPPLIERS:BOOL=OFF)、これを有効にして再構築してみる。
ほかRDK_BUILD_CAIRO_SUPPORTを有効にするならcairo-develパッケージをインストールして、-DRDK_BUILD_CAIRO_SUPPORT=ONを加える

[root@c build]# rm -rf ./*
[root@c build]# cmake ..  -DRDK_BUILD_COMPRESSED_SUPPLIERS=ON
 
[root@c build]# make && make install

留意 相当コンパイルに時間が掛かります。紅茶3杯はいける

これでコンパイルとインストールは完了であるが、作ったものをここで検証してみる。

[root@c build]# export PYTHONPATH=$RDBASE
 
[root@c build]# ctest
(略
100/102 Test #100: pythonTestDirSimDivFilters .......   Passed    0.61 sec
        Start 101: pythonTestDirVLib
101/102 Test #101: pythonTestDirVLib ................   Passed    3.32 sec
        Start 102: pythonTestDirChem
102/102 Test #102: pythonTestDirChem ................   Passed   64.76 sec
 
100% tests passed, 0 tests failed out of 102
 
Total Test time (real) = 619.55 sec
[root@c build]#

設定

使用するには LD_LIBRARY_PATH の設定が必要なので、

[root@c ~]# echo /opt/RDKit/lib > /etc/ld.so.conf.d/RDKit.conf
[root@c ~]# ldconfig

とする。あと 「RDBASE」と「PYTHONPATH」は.bashrcとか.cshrcで。

[root@c ~]# echo "export RDBASE=/opt/RDKit" >> .bashrc
 
[root@c ~]# echo "export PYTHONPATH=/opt/RDKit" >> .bashrc

*/etc/profile.d/rdkit.{sh,csh}を用意すべきかもしれないが

テスト(プロパティ値算出)

単純なテスト

[illya@c ~]$ cat <<_EOF_ > sample.py
from rdkit import Chem
from rdkit.Chem import Descriptors
mols = Chem.SDMolSupplier('/opt/RDKit/Data/NCI/first_200.props.sdf')
for mol in mols:
     print "MolLogP    :", Descriptors.MolLogP(mol)
 
_EOF_
[illya@c ~]$

RDBASE」と「PYTHONPATH」の環境変数が定義されているのを確認して

[illya@c ~]$ echo $RDBASE
/opt/RDKit
[illya@c ~]$ echo $PYTHONPATH
/opt/RDKit
[illya@c ~]$
[illya@c ~]$ python sample.py
MolLogP    : 0.6407
MolLogP    : 5.7054
MolLogP    : 1.862
(中略)
[illya@c ~]$

テスト(構造式描画)

smilesから構造式が描けます。

[illya@c ~]$ python
Python 2.7.5 (default, Jun 17 2014, 18:11:42)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from rdkit.Chem import AllChem
>>> from rdkit.Chem import Draw
>>> smiles = "CN1C=NC2=C1C(=O)N(C(=O)N2C)C"
>>> mol = AllChem.MolFromSmiles(smiles)
>>> AllChem.Compute2DCoords(mol)
0
>>> Draw.MolToFile(mol,"caffeine.png",size=(200,250))
>>> quit()
[illya@c ~]$

得られたcaffeine.pngは下記になります

2015y04m18d_000755870.png

テスト(構造式連続描画)

SDファイルに含まれている構造情報を使って構造式のイメージファイルを作成する

[illya@c ~]$ cat <<_EOF_ > sdf2png.py
from rdkit import Chem
from rdkit.Chem import Draw
mols = Chem.SDMolSupplier('/opt/RDKit/Data/NCI/first_200.props.sdf')
for i,mol in enumerate(mols):
   try:
      f= "%s.png"%(i)
      # f="%s.png"%(mol.GetProp('プロパティ値'))   # プロパティ値でファイル名を作る
      Draw.MolToFile(mol, f )  
   except:
      pass
_EOF_
[illya@c ~]$

これで、SDファイルの構造式が画像ファイルに順番に作られます。
本来ならSDFのプロパティ値を使って、それをファイル名にすべきなのかもしれない


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2016-09-25 (日) 14:52:44 (271d)