chemfp: 類似構造検索

By | 2015年8月29日


今回は、chemfpを用いて、類似構造検索を行ってみます。
chemfpでは、FingerprintをFPSというフォーマットに変換して利用します。

インストール

少し古いですが、Fedora 20にchemfpをインストールします。

$ sudo yum install gcc 
$ sudo easy_install chemfp

次に、openbabelをインストールします。

$ sudo yum install openbabel
$ sudo yum install python-openbabel

化合物データの準備

検索対象となる化合物データとして、KinaseSARfariを使うことにします。

入手先:https://www.ebi.ac.uk/chembl/sarfari/kinasesarfari/downloads
入手ファイル:ks_compound.sdf.gz

ks_compound.sdfの始めから1万化合物を使うことにします。

$ gzip -d ks_compound.sdf.gz
$ babel -isdf ks_compound.sdf -osdf ks_10K.sdf -f 1 -l 10000

FPSの生成

化合物データは、openbabelのFingerprintを使ってFPSに変換することにします。
ks_10K.sdfですが、このsdfに含まれる”COMPOUND_ID”タグを化合物のIDとして用います。
次に、query1.sdfですが、imatinibを1つだけ入れています。ここでは、sdfのタイトル行に”imatinib”と記載しており、これが化合物のIDとなります。

$ ob2fps --id-tag "COMPOUND_ID" ks_10K.sdf -o ks_10K.fps
$ ob2fps query1.sdf -o query1.fps

K-nearest neighbor search

imatinibに類似した化合物を類似度の高いものから3つ取得します。

$ simsearch -k 3 -q query1.fps ks_10K.fps > out_3nn.txt

out_3nn.txt:

#Simsearch/1
#num_bits=1021
#type=Tanimoto k=3 threshold=0.0
#software=chemfp/1.1p1
#queries=query1.fps
#targets=ks_10K.fps
#query_sources=query1.sdf
#target_sources=ks_10K.sdf
3	imatinib	941	1.00000	56904	0.97101	1642	0.95172

Threshold search

imatinibとの類似度が0.9以上の化合物を全て取得します。

$ simsearch --threshold 0.9 -q query1.fps ks_10K.fps > out_t09.txt

out_t09.txt:

#Simsearch/1
#num_bits=1021
#type=Tanimoto k=all threshold=0.9
#software=chemfp/1.1p1
#queries=query1.fps
#targets=ks_10K.fps
#query_sources=query1.sdf
#target_sources=ks_10K.sdf
8	imatinib	941	1.00000	1642	0.95172	20867	0.92754	20926	0.91304	20252	0.90647	56904	0.97101	203071	0.90196	205409	0.90789

Combined k-nearest and threshold search

imatinibとの類似度が0.9以上で、かつ類似度の高いものから3つ取得します。

$ simsearch -k 3 --threshold 0.9 -q query1.fps ks_10K.fps > out_3nn_t09.txt

out_3nn_t09.txt:

#Simsearch/1
#num_bits=1021
#type=Tanimoto k=3 threshold=0.9
#software=chemfp/1.1p1
#queries=query1.fps
#targets=ks_10K.fps
#query_sources=query1.sdf
#target_sources=ks_10K.sdf
3	imatinib	941	1.00000	56904	0.97101	1642	0.95172

Self-similar searches

ks_10K.fpsに含まれる化合物において、それら全ての化合物ペアに対し類似度が0.9以上で、かつ類似度の高いものから3つを検索します。ただし、自分自身のペアは、検索の対象外となります。

$ simsearch -k 3 --threshold 0.9 --NxN ks_10K.fps > out_NN_3nn_t0.9.txt

out_NN_3nn_t0.9.txt:

#Simsearch/1
#num_bits=1021
#type=Tanimoto k=3 threshold=0.9 NxN=full
#software=chemfp/1.1p1
#targets=ks_10K.fps
#target_sources=ks_10K.sdf
1	84	65	0.93724
0	88
2	91	808	1.00000	1559	0.95745
0	92
1	95	1677	0.98824
0	98
.
.