USRCATを実装してみる

USRCAT = Ultrafast Shape recognition with pharmacophoric constrains

RDKit のMLで興味深い報告があったので
実装してみました。
OETookit以外にRDKitもオッケーというのはとても魅力的です。
ShapeベースのバーチャルスクリーニングにてScaffold Hopingにも使える可能性があることや
ElectroShapeと比較しても遜色ないEFを出している点はちょっと引かれます。

まずここからダウンロードします。
あとはマニュアルに従って

$ cd /usr/local/src
$ mv ~/Downloads/usrcat*
$ cd /usr/loca/usrcat
$ sudo python setup.py install

でOK
PYTHONPATHに上記のフォルダを指定しておけば、何所からでも呼び出せます。
その後、
①まずSDF読み込み
②三次元配座の発生UFFによるエネルギーの計算
③usrcatモジュールでのモーメントの算出
④類似性の計算
を行わせてみました。
usrcatのgenerate_momentsはmolオブジェクトが持つ全配座のモーメントを計算します。
次のsimilarity(m1,m2)で発生させたモーメント同士の類似性をみていています。
モーメントは配座の数だけあるようですが
m1は最初のconfId=0のものだけしか使わないようなので
最低エネルギーのは配座を持ってくるか、PDBからリガンドを持ってくるのがいいのかと思います。
下の例はそのまま使っているので
あまりいい例じゃないです。
取りあえず動いたレベル。
コードも助長だったり見にくかったり。。。

from rdkit import Chem
from rdkit.Chem import AllChem
from usrcat import sim
from usrcat.toolkits.rd import generate_moments
import sys

#mols = [Chem.AddHs(m) for m in Chem.SDMolSupplier(sys.argv[1])]

mols = [Chem.AddHs(m) for m in
        Chem.SDMolSupplier("first.sdf")]

min_id_list = {}
count=0
for m in mols:
    cids=AllChem.EmbedMultipleConfs(m)
    energylist = []
    for cid in cids:
        AllChem.UFFOptimizeMolecule(m, confId=cid)
        ff=AllChem.UFFGetMoleculeForceField(m, confId=cid)
        ff.Minimize()
        e=ff.CalcEnergy()
        energylist.append(e)
    min_id =energylist.index(min(energylist))    
    min_id_list[m]=min_id
    count+=1
    print count,min_id, energylist[min_id]

momentslist=[]
for m,min_id in min_id_list.items():
    moments = generate_moments(m)
    momentslist.append(moments)
print len(momentslist)

for i in range(len(momentslist)):
    for j in range(i):
        similarity=sim.similarity(momentslist[i],momentslist[j])
        #if similarity[1] >= 0.6:
        print i, j, similarity
print "finished"            

ChEMBLのデータで何か解析してみないと。

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