RDKitでMatched Pair Analysis

Pythonで動いて多彩な機能を持っておりながらフリーである。
ということで自分はRDKitが大好きです。
次のバージョンのβ版がリリースされているのですがどうもMMPAアルゴリズムが実装されるようです。
たくさんの情報に埋もれた何かを見るにはいいかもしれないというのと、コードに興味があるのとで早速使ってみます。
SVMはここで公開されているので
待てない人は使ってくれよ!という話です。
ちなみにリファレンスはこちら
アルゴリズム自体は前から報告されていたのですがソースコードは今回が初です。
まだソースをちゃんと読んでないですが使ってみます。
取りあえずChemblにいってABL/Humanで1504化合物のSDFをとってきました。
入力は
smiles\tidのテキストなので
そのようにかえます。

from rdkit import Chem
f = open("chembl.smi","w")
mols =[m for m in Chem.SDMolSupplier("cmpd_download_27530.sdf")]
for mol in mols:
 sarregno = mol.GetProp("sarregno")
 smi = Chem.MolToSmiles(mol)
 f.write("%s\t%s"%(smi,sarregno))
 f.write("\n")
   ...:     
f.close()

でファイルができたんでフラグメント化します

lion:mmpa user$ wc chembl.smi 
 1504  3008 86733 chembl.smi

lion:mmpa user$ time python rfrag.py <chembl.smi >chemblfrag.txt
real	5m13.693s
user	5m12.636s
sys	0m0.489s

lion:mmpa user$ wc chemblfrag.txt 
  37177   37177 9807140 chemblfrag.txt

frag.pyでsmilesの分子をフラグメントに切断します。
1504分子から37177のフラグメントができました。
元分子 ID フラグメントみたいなテキストがchemblfrag.txtにできます。
この辺をpythonで考えると辞書型で作る感じですよね。
で最後に
ペアを作ります。

lion:mmpa user$ time python indexing.py <chemblfrag.txt >chemblmmpa.txt
real	0m39.278s
user	0m39.138s
sys	0m0.103s

lion:mmpa user$ wc chemblmmpa.txt 
   886    886 158799 chemblmmpa.txt

lion:mmpa user$ head chemblmmpa.txt 
Cc1ccc(C(=O)Nc2ccc(CN3CCN(C)CC3)c(C(F)(F)F)c2)cc1C#Cc1cnc[nH]1,Cc1ccc(C(=O)Nc2ccc(CN3CCN(C)CC3)c(C(F)(F)F)c2)cc1C#Cc1cncnc1,1784631,1784626,[*:1]C#Cc1cnc[nH]1>>[*:1]C#Cc1cncnc1,[*:1]c1cc(C(=O)Nc2ccc(CN3CCN(C)CC3)c(C(F)(F)F)c2)ccc1C
Cc1ccc(C(=O)Nc2ccc(CN3CCN(C)CC3)c(C(F)(F)F)c2)cc1C#Cc1cnc[nH]1,Cc1ccc(C(=O)Nc2ccc(CN3CCN(C)CC3)c(C(F)(F)F)c2)cc1C#Cc1cnc(N)s1,1784631,1784640,[*:1]C#Cc1cnc[nH]1>>[*:1]C#Cc1cnc(N)s1,[*:1]c1cc(C(=O)Nc2ccc(CN3CCN(C)CC3)c(C(F)(F)F)c2)ccc1C

結局886個のペアができました。
構造1,構造2,ID1,ID2,変換のsmirkes
みたいになっています。
Spotfireに突っ込めば全部構造になるので良さそうですね。
切断部分で1504化合物で5分かかっているので大規模にやるのは時間がかかりそうだ。
合成した化合物を逐次フラグメント化してDBに入れておけばマッチングは早そうだからきびきび行くかな。
web.pyでがんばってwebインタフェースができればみんながアップしたら的なものできそうだけど。
POSTで受けたファイルのハンドリングがよくわからんからweb.pyも理解せねば
こういったこと、社内で言ってもきっと理解されないなぁ
何か考えるかな〜

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s