from rdkit import Chem from rdkit.Chem import AllChem,Draw,Descriptors from rdkit.Chem.Draw import IPythonConsole p = Chem.MolFromSmarts('CC(F)Cl') p1 = Chem.MolFromSmarts('C[C@H](F)Cl') p2 = Chem.MolFromSmarts('C[C@@H](F)Cl') m = Chem.MolFromSmiles('CCC(F)Cl') m1 = Chem.MolFromSmiles('CC[C@H](F)Cl') m2 = Chem.MolFromSmiles('CC[C@@H](F)Cl') print 'm :',m.HasSubstructMatch(p),m.HasSubstructMatch(p1),m.HasSubstructMatch(p2) print 'm1:',m1.HasSubstructMatch(p),m1.HasSubstructMatch(p1),m1.HasSubstructMatch(p2) print 'm2:',m2.HasSubstructMatch(p),m2.HasSubstructMatch(p1),m2.HasSubstructMatch(p2) print 'm :',m.HasSubstructMatch(p,useChirality=True),m.HasSubstructMatch(p1,useChirality=True),m.HasSubstructMatch(p2,useChirality=True) print 'm1:',m1.HasSubstructMatch(p,useChirality=True),m1.HasSubstructMatch(p1,useChirality=True),m1.HasSubstructMatch(p2,useChirality=True) print 'm2:',m2.HasSubstructMatch(p,useChirality=True),m2.HasSubstructMatch(p1,useChirality=True),m2.HasSubstructMatch(p2,useChirality=True) p3 = Chem.MolFromSmarts('C[C@](F)Cl') p4 = Chem.MolFromSmarts('C[C@@](F)Cl') print 'm1:',m1.HasSubstructMatch(p3,useChirality=True),m1.HasSubstructMatch(p4,useChirality=True) print 'm2:',m2.HasSubstructMatch(p3,useChirality=True),m2.HasSubstructMatch(p4,useChirality=True) rxn = AllChem.ReactionFromSmarts("[C:1][C@H:2]1[C:3][C:4][N:5]([C:6])[C:7](=[O:8])[C@H:9]1[C:10]>>[C:1][C@H:2]1[C:3][C:4][N:5]([C:6])[C:7](=[O:8])[C@@H:9]1[C:10]") rxn m = Chem.MolFromSmiles('C[C@H]1CCN(C)C(=O)[C@H]1CC') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('C[C@@H]1CCN(C)C(=O)[C@@H]1CC') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('CC1CCN(C)C(=O)[C@@H]1CC') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('C[C@H]1CCN(C)C(=O)C1CC') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) rxn = AllChem.ReactionFromSmarts("[F:1][C@H:2]([C:3])[I:4]>>[F:1][C@H:2]([C:3])[Cl:4]") m = Chem.MolFromSmiles('F[C@H](CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('F[C@@H](CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('FC(CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) rxn = AllChem.ReactionFromSmarts("[F:1][C@H:2]([C:3])[I:4]>>[F:1][C@@H:2]([C:3])[Cl:4]") m = Chem.MolFromSmiles('F[C@H](CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('F[C@@H](CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('FC(CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) rxn = AllChem.ReactionFromSmarts("[F:1][C@H:2]([C:3])[I:4]>>[F:1][C:2]([C:3])[Cl:4]") m = Chem.MolFromSmiles('F[C@H](CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('F[C@@H](CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('FC(CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) rxn = AllChem.ReactionFromSmarts("[F:1][C:2]([C:3])[I:4]>>[F:1][C@H:2]([C:3])[Cl:4]") m = Chem.MolFromSmiles('FC(CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('F[C@@H](CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) m = Chem.MolFromSmiles('F[C@H](CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) rxn = AllChem.ReactionFromSmarts("[F:1][C@H:2]([C:3])[I:4]>>[F:1][C@H:2]([Cl:4])[C:3]") m = Chem.MolFromSmiles('F[C@H](CC)I') p = rxn.RunReactants((m,))[0][0] Chem.SanitizeMol(p) Draw.MolsToGridImage((m,p)) rxn = AllChem.ReactionFromSmarts('[C:1](=[O:2])-[OH].[N;!H0:3]>>[C:1](=[O:2])-[N:3]') rxn acid = Chem.MolFromSmiles('c1ccccc1C(=O)O') acid amine = Chem.MolFromSmiles('NCCc1ccccc1N') amine ps = [x[0] for x in rxn.RunReactants((acid,amine))] [Chem.SanitizeMol(x) for x in ps] Draw.MolsToGridImage(ps) amine.GetAtomWithIdx(0).SetProp("_protected","1") ps = [x[0] for x in rxn.RunReactants((acid,amine))] [Chem.SanitizeMol(x) for x in ps] Draw.MolsToGridImage(ps) amine.GetAtomWithIdx(0).ClearProp("_protected") ps = [x[0] for x in rxn.RunReactants((acid,amine))] [Chem.SanitizeMol(x) for x in ps] Draw.MolsToGridImage(ps) import pandas as pd from rdkit import Chem,rdBase from rdkit.Chem import PandasTools data =PandasTools.LoadSDF('data/d3_aid563770.sdf') data.head() query = Chem.MolFromSmiles('c1ncccc1') subset = data[data.ROMol >= query] subset data['slogp']=data.ROMol.map(Descriptors.MolLogP) data['amw'] =data.ROMol.map(Descriptors.MolWt) data.head() data.plot(x='amw',y='slogp',style='o') from rdkit.Chem import MCS ms = [x for x in Chem.SDMolSupplier('data/beta2_adrenergic_aid37833.sdf')] Draw.MolsToGridImage(ms,molsPerRow=5,legends=[x.GetProp('_Name') for x in ms]) mcs=MCS.FindMCS(ms,completeRingsOnly=True) print mcs.smarts mcsM = Chem.MolFromSmarts(mcs.smarts) mcsM.UpdatePropertyCache() Chem.SetHybridization(mcsM) mcsM mcs=MCS.FindMCS(ms,completeRingsOnly=True,threshold=0.8) print mcs.smarts mcsM = Chem.MolFromSmarts(mcs.smarts) mcsM.UpdatePropertyCache() Chem.SetHybridization(mcsM) mcsM AllChem.Compute2DCoords(mcsM) for m in ms: if m.HasSubstructMatch(mcsM): AllChem.GenerateDepictionMatching2DStructure(m,mcsM) Draw.MolsToGridImage(ms,molsPerRow=5,legends=[x.GetProp('_Name') for x in ms]) from rdkit.Chem import PyMol v = PyMol.MolViewer() m = Chem.MolFromSmiles('c1ccccc1C(=O)NCC') mh = Chem.AddHs(m) import time AllChem.EmbedMolecule(mh) v.ShowMol(mh) v.GetPNG(preDelay=2) AllChem.MMFFOptimizeMolecule(mh) v.ShowMol(mh) v.GetPNG(preDelay=2) mp = AllChem.MMFFGetMoleculeProperties(mh) for idx in range(mh.GetNumAtoms()): print idx,mh.GetAtomWithIdx(idx).GetSymbol(),mp.GetMMFFAtomType(idx),mp.GetMMFFPartialCharge(idx) from rdkit.Chem.Draw import SimilarityMaps from rdkit.Chem import rdMolDescriptors from rdkit import DataStructs fp1 = rdMolDescriptors.GetTopologicalTorsionFingerprint(ms[0]) fp2 = rdMolDescriptors.GetTopologicalTorsionFingerprint(ms[16]) print DataStructs.DiceSimilarity(fp1,fp2) Draw.MolsToGridImage((ms[0],ms[16])) SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],ms[16],SimilarityMaps.GetTTFingerprint) fp1 = rdMolDescriptors.GetAtomPairFingerprint(ms[0]) fp2 = rdMolDescriptors.GetAtomPairFingerprint(ms[16]) print DataStructs.DiceSimilarity(fp1,fp2) SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],ms[16],SimilarityMaps.GetAPFingerprint) fp1 = rdMolDescriptors.GetMorganFingerprint(ms[0],2) fp2 = rdMolDescriptors.GetMorganFingerprint(ms[16],2) print DataStructs.DiceSimilarity(fp1,fp2) SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],ms[16],SimilarityMaps.GetMorganFingerprint) SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],ms[16],lambda x,i:SimilarityMaps.GetMorganFingerprint(x,i,radius=3)) SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],ms[16],lambda x,i:SimilarityMaps.GetMorganFingerprint(x,i,radius=2)) SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],ms[16],lambda x,i:SimilarityMaps.GetMorganFingerprint(x,i,radius=1)) SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],ms[16],lambda x,i:SimilarityMaps.GetMorganFingerprint(x,i,radius=0)) fp1 = rdMolDescriptors.GetTopologicalTorsionFingerprint(ms[0]) fp2 = rdMolDescriptors.GetTopologicalTorsionFingerprint(ms[1]) print DataStructs.DiceSimilarity(fp1,fp2) Draw.MolsToGridImage((ms[0],ms[1])) SimilarityMaps.GetSimilarityMapForFingerprint(ms[0],ms[1],SimilarityMaps.GetTTFingerprint) contribs = rdMolDescriptors._CalcCrippenContribs(ms[0]) _=SimilarityMaps.GetSimilarityMapFromWeights(ms[0],[x for x,y in contribs],colorMap='jet',contourLines=20) contribs = list(rdMolDescriptors._CalcLabuteASAContribs(ms[0]))[0] _=SimilarityMaps.GetSimilarityMapFromWeights(ms[0],contribs,colorMap='jet',contourLines=10) nm = Chem.Mol(ms[0].ToBinary()) AllChem.MMFFSanitizeMolecule(nm) mp = AllChem.MMFFGetMoleculeProperties(nm) charges = [mp.GetMMFFPartialCharge(x) for x in range(nm.GetNumAtoms())] _=SimilarityMaps.GetSimilarityMapFromWeights(nm,charges,colorMap='jet',contourLines=20) print charges m = Chem.MolFromMolFile('data/seq.mol') m.GetAtomWithIdx(0).SetMonomerInfo(Chem.AtomPDBResidueInfo("N",residueName="MET")) m.GetAtomWithIdx(1).SetMonomerInfo(Chem.AtomPDBResidueInfo("CA",residueName="MET")) m.GetAtomWithIdx(2).SetMonomerInfo(Chem.AtomPDBResidueInfo("O",residueName="MET")) m.GetAtomWithIdx(3).SetMonomerInfo(Chem.AtomPDBResidueInfo("CB",residueName="MET")) m.GetAtomWithIdx(4).SetMonomerInfo(Chem.AtomPDBResidueInfo("CG",residueName="MET")) m.GetAtomWithIdx(5).SetMonomerInfo(Chem.AtomPDBResidueInfo("SD",residueName="MET")) m.GetAtomWithIdx(6).SetMonomerInfo(Chem.AtomPDBResidueInfo("CE",residueName="MET")) mi = m.GetAtomWithIdx(0).GetMonomerInfo() mi mi.GetName() mi.GetResidueName() crn = Chem.MolFromPDBFile('./data/1CRN.pdb') for i in range(0,crn.GetNumAtoms(),10): mi = crn.GetAtomWithIdx(i).GetMonomerInfo() print i,mi.GetName(),mi.GetResidueName() v.ShowMol(crn) Chem.Kekulize(crn,clearAromaticFlags=True) AllChem.MMFFOptimizeMolecule(crn,maxIters=2000) v.ShowMol(crn,'opt',showOnly=False) v.GetPNG(preDelay=2) fvd = Chem.MolFromPDBFile('data/2FVD.pdb') v.ShowMol(fvd,'2FVD') v.GetPNG(preDelay=2) v.SetDisplayStyle('2FVD','cartoon') v.server.do('ray') v.GetPNG(preDelay=2) smi = Chem.MolToSmiles(fvd,canonical=False) # <- if you forget the "canonical=False" for big proteins, you will be sad smi from pysqlite2 import dbapi2 as sqlite3 db = sqlite3.connect(':memory:') db.enable_load_extension(True) db.load_extension('/usr/local/src/chemicalite/build/libchemicalite.so') db.execute("PRAGMA page_size=2048") db.execute('create table mols(id integer primary key,smiles text, m mol)') db.execute("select create_molecule_rdtree('mols','m')")