参照先http://rdkit.org/docs/Cartridge.html

RDKitをデータベースのPostgresに組み込むとSQL文で化合物の構造式検索(部分、類似)、プロパティー値の算出らが可能になります。
研究室内の(仮想、実体)化合物ライブラリーの整頓、検索に使えるかも。

っで、具体的にどんなSQL文が利用されるかとなると、

  • テーブルTBLに入れた化合物からH-bond acceptorsの数を調べるには
    SELECT mol_hba(MOL) FROM TBL
  • LogP値を算出するには
    SELECT mol_logp(MOL) FROM TBL
  • MOLと同じような構造を持つ化合物の検索
    SELECT ID FROM TBL WHERE tanimoto_sml(fp,rdkit_fp(MOL)) > 0.8
  • 特定の構造を持つ化合物の検索
    SELECT ID FROM TBL WHERE smiles@>'Nc1ccnc2cc(Cl)ccc12'

と極めて直感的である。
このようなデータベースに組み込んで使える構造式検索エンジンは、商用としては
Daylight DayCartとかCambridgeSoft Oracle CartridgeBIOVIA Direct(Accelrys (Symyx)Direct)
InfoChem Chemistry Cartridge ICCARTRIDGEChemAxon JChem Cartridge for ORACLE
JChem PostgreSQL Cartridgeらがある。

フリーなものとして、このRDKitの他にも

  • OpenBabelベースなMyChem http://mychem.sourceforge.net/
    このRDKitと似ていてテーブルに一行MOLデータを入れてSQL関数で検索・変換が行えるような。
  • CDKベースなorchem http://orchem.sourceforge.net/
    あるフォルダにSDFを置いて、プロシージャで読み込ませ、検索もすべてプロシージャでするみたいな。

とかがある。
ここではこのRDKitを取り上げる。まず土台となるPostgreSQLをインストールします。
その後にRDkitのカートリッジモジュールを組み込ませます。

化合物データベースの下準備RDKit/Cartridge/DB
PubChemを登録してみたRDKit/Cartridge/PubChem
ChEMBLを登録してみたRDKit/Cartridge/ChEMBL

Cartridgeを使って簡単なwebアプリを作ってみたRDKit/Cartridge/web

yum でインストールされた postgreSQL で Cartridge を使う

別にPostgreSQLを新たにソースからコンパイルせずとも yum でインストールして、RDKit の部分だけコンパイルでよくね?
下手にコンパイルするよりはずっと楽です。
*PostgreSQLの最新機能が必要なら別です

っで、その段取り。ますはyumでpostgresqlのパッケージをインストールします。
そしてデータベースの初期化を済ませます(PGDATAは /var/lib/pgsql/data)。

[root@c ~]# yum install postgresql-devel postgresql-server postgresql
[root@c ~]# /bin/postgresql-setup initdb
Initializing database ... OK
 
[root@c ~]#

次に、RDKitのCartridgeをコンパイルします。
RDKitでコンパイルした場所に移動して、コンパイルオプションを変更して再実行

[root@c ~]# cd /opt/RDKit/build/
[root@c build]# cmake .. -DRDK_BUILD_PGSQL=ON -DRDK_PGSQL_STATIC=OFF
[root@c build]# make
[root@c build]# bash /opt/RDKit/build/Code/PgSQL/rdkit/pgsql_install.sh

最後のシェルスクリプトで RDKit のCartridgeライブラリ(rdkit.so)が/usr/lib64/pgsqlにコピーされる。
*cmakeに依存しないでコンパイルしたら undefined symbol: _ZTIN5boost6detail16thread_data_baseE とエラーが出た。MakefileのSTATIC_LINKをSTATIC_LINK=0で回避可能

Cartridgeのテスト

まずはPostgreSQLを起動させます。

[root@c ~]# systemctl start postgresql

そして、Cartridgeのテストを誰にさせるかになるのですが、ここではpostgresユーザにしました。別のユーザでも構いません
テスト実行のファイルをコピーして、「make installcheck」と実行します

[root@c RDKit]# su - postgres
-bash-4.2$
-bash-4.2$ pwd
/var/lib/pgsql
-bash-4.2$
-bash-4.2$ cp -r /opt/RDKit/Code/PgSQL/rdkit .
-bash-4.2$ cd rdkit
-bash-4.2$
-bash-4.2$ make installcheck
/usr/lib64/pgsql/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=. --psqldir='/usr/bin' 
       --dbname=contrib_regression rdkit-91 props btree molgist bfpgist-91 sfpgist slfpgist fps reaction
 
(using postmaster on Unix socket, default port)
============== dropping database "contrib_regression" ==============
NOTICE:  データベース"contrib_regression"は存在しません。省略します
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test rdkit-91                 ... ok
test props                    ... ok
test btree                    ... ok
test molgist                  ... ok
test bfpgist-91               ... ok
test sfpgist                  ... ok
test slfpgist                 ... ok
test fps                      ... ok
test reaction                 ... ok
 
=====================
 All 9 tests passed.
=====================
 
-bash-4.2$

と成功しました。

これで RDKit を組み込んだ PostgreSQL が完成


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