from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import PyMol
from rdkit.Chem.Subshape import SubshapeAligner, SubshapeBuilder, SubshapeObjects
mols = [m for m in Chem.SDMolSupplier('cdk2.sdf')]
for m in mols:
molid = m.GetProp('id')
m.SetProp('_Name', molid)
Draw.MolsToGridImage(mols[:3])
v = PyMol.MolViewer()
ref = Chem.Mol(mols[0].ToBinary())
probe = Chem.Mol(mols[1].ToBinary())
AllChem.CanonicalizeConformer(ref.GetConformer())
builder = SubshapeBuilder.SubshapeBuilder()
builder.gridDims = (20.,20.,10)
builder.gridSpacing=0.5
builder.winRad = 4.
refShape = builder.GenerateSubshapeShape(ref)
probeShape = builder.GenerateSubshapeShape(probe)
v.ShowMol(ref, name='ref')
v.ShowMol(probe, name='prove', showOnly=False)
v.GetPNG()
aligner = SubshapeAligner.SubshapeAligner()
algs = aligner.GetSubshapeAlignments(ref, refShape, probe, probeShape, builder)
print(len(algs))
89
v.DeleteAll()
v.ShowMol(ref, name='ref', showOnly=False)
SubshapeObjects.DisplaySubshape(v, refShape, 'ref_Shape')
v.server.do('set transparency=0.5')
v.ShowMol(probe, name='probe', showOnly=False)
SubshapeObjects.DisplaySubshape(v, probeShape, 'prob_Shape')
v.server.do('set transparency=0.5')
v.GetPNG()
alg = algs[0]
AllChem.TransformMol(probe, alg.transform)
newprobeShape = builder(probe)
v.DeleteAll()
v.ShowMol(ref, name='ref', showOnly=False)
SubshapeObjects.DisplaySubshape(v, refShape, 'ref_Shape')
v.server.do('set transparency=0.5')
v.ShowMol(probe, name='probe', showOnly=False)
SubshapeObjects.DisplaySubshape(v, newprobeShape, 'prob_Shape')
v.server.do('set transparency=0.5')
v.GetPNG()
1.0-alg.shapeDist
0.8317972350230415
import sys
import os
sys.path.append('/home/iwatobipen/src/shape-it/pyshapeit')
import cpyshapeit
mols = [m for m in Chem.SDMolSupplier('cdk2.sdf')]
ref = mols[0]
probe = mols[1]
print(ref.GetProp('_Name'), probe.GetProp('_Name'))
ZINC03814457 ZINC03814459
AllChem.CanonicalizeConformer(ref.GetConformer())
builder2 = SubshapeBuilder.SubshapeBuilder()
builder2.gridDims = (20.,20.,10)
builder2.gridSpacing=0.5
builder2.winRad = 4.
refShape = builder2.GenerateSubshapeShape(ref)
probeShape = builder2.GenerateSubshapeShape(probe)
v.DeleteAll()
v.ShowMol(ref, name='ref')
v.ShowMol(probe, name='probe', showOnly=False)
v.GetPNG()
score = cpyshapeit.AlignMol(ref, probe)
cpyshapeit.AlignMol?
print(score)
0.7750401457809771
v.DeleteAll()
v.ShowMol(ref, name='ref', showOnly=False)
SubshapeObjects.DisplaySubshape(v, refShape, 'ref_Shape')
v.server.do('set transparency=0.5')
v.ShowMol(probe, name='probe', showOnly=False)
SubshapeObjects.DisplaySubshape(v, newprobeShape, 'prob_Shape')
v.server.do('set transparency=0.5')
v.GetPNG()