分子形状比对
基于分子形状的比对对于虚拟筛选和骨架跃迁都是非常有用的。
RDKit分子形状比对实例:
#导入模块,同时载入数据
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit import RDConfig
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import Draw
from rdkit.Chem import PyMol
import os
mols = [ Chem.AddHs(m) for m in Chem.SDMolSupplier(“cdk2.sdf”)]
#启动pymol,并为每个结构生成构象异构体
v = PyMol.MolViewer()
cidslist=[]
for mol in mols:
mol.RemoveAllConformers()
cids = AllChem.EmbedMultipleConfs(mol, pruneRmsThresh=1.0)
cidslist.append(cids)
for idx in range(len(mols)):
mol = mols[idx]
for cid in cidslist[idx]:
AllChem.UFFOptimizeMolecule(mol, confId=cid)
#画出前五个分子图
Draw.MolsToGridImage(mols[:5], molsPerRow=5)
#载入形状模块
from rdkit.Chem.Subshape import SubshapeBuilder, SubshapeAligner, SubshapeObjects
#制作参考和探针分子
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)
#绘制ref mol和ref_shape
v.ShowMol(ref,name=”ref”)
SubshapeObjects.DisplaySubshape(v,refShape,’ref_Shape’)
v.server.do(‘set transparency=0.5’)
v.GetPNG()