Hi, ETKDG is the default conformation generator in versions 2018.09.1 and later, so you don't need to worry about specifying that yourself.
-greg On Thu, Feb 14, 2019 at 11:52 AM Stamatia Zavitsanou < stamatia.zavitsa...@oriel.ox.ac.uk> wrote: > Thank you greg, > > > That was very helpful. > > > I will follow your way. I am just interested in getting rough energies. So > I am not really sure if should minimise or not(?)(I was using it thinking > it was a necessary step for DG conformers). > > > Also no I don't want to remove the Hs from my molecule, so I can totally > ignore the MolFromMolBlock step. > > > Also what if I use the ETKDG : > > > mol2 = Chem.MolFromSmiles(line2) > > m = Chem.AddHs(mol2) > > > cids=AllChem.EmbedMultipleConfs(m,numConfs,Chem.rdDistGeom.ETKDG()) > > ps = AllChem.MMFFGetMoleculeProperties(m) > > for k in cids: > > ff = AllChem.MMFFGetMoleculeForceField(m,ps,confId=cid) > > ff.Initialize() > > print(ff.CalcEnergy()) > > > would that be correct? > > > Thank you, > > Stamatia Zavitsanou > ------------------------------ > *From:* Greg Landrum <greg.land...@gmail.com> > *Sent:* 14 February 2019 10:32:23 > *To:* Stamatia Zavitsanou > *Cc:* rdkit-discuss@lists.sourceforge.net > *Subject:* Re: [Rdkit-discuss] Conformers and Energies > > Hi Stamatia, > > Assuming that you are interested in getting the energies of non-minimized > conformers, here's a relatively easy way to do what you want. Notice that > I'm using the MMFF94 force field, since it's probably a better choice for > energies. You could do the same thing with UFF if you'd prefer. > > In [4]: m = Chem.AddHs(Chem.MolFromSmiles('OCCCN')) > > In [5]: cids = AllChem.EmbedMultipleConfs(m,10) > > In [6]: ps = AllChem.MMFFGetMoleculeProperties(m) > > In [8]: for cid in cids: > ...: ff = AllChem.MMFFGetMoleculeForceField(m,ps,confId=cid) > ...: ff.Initialize() > ...: print(ff.CalcEnergy()) > ...: > ...: > 12.233357032097315 > 4.7643146024595335 > 6.163107627780452 > 5.476964847773123 > 4.412833444203187 > 5.665311226271907 > 7.536117466355753 > 3.421494301728207 > 8.97909661823493 > 10.863891606189476 > > > Your first approach is inefficient and just a bit wrong: the call to > MolFromMolBlock() will remove the Hs from your molecule. If you want to go > that route anyway, you should do: > b.append(Chem.MolFromMolBlock(a,removeHs=False)) > > Note that if you also want to minimize the conformers, you can do this: > > In [9]: AllChem.MMFFOptimizeMoleculeConfs(m) > Out[9]: > [(0, 1.0966514168737902), > (0, -1.512072483231206), > (0, 0.6847373872800766), > (0, -0.6067431133406469), > (0, -1.5142123177302143), > (0, -2.08974298611677), > (0, -2.089742985761273), > (0, -2.053178209868828), > (0, -3.9515977883892077), > (0, -1.0767726284668093)] > > There you get a 2-tuple for each conformer. The first element lets you > know whether or not the minimization converged, and the second is the > energy of the conformer. > > I hope this helps, > -greg > > > On Tue, Feb 12, 2019 at 5:05 AM Stamatia Zavitsanou < > stamatia.zavitsa...@oriel.ox.ac.uk> wrote: > > Hello everyone, > > > I am a bit confused. I want to make conformers and calculate their > energies, but I am not very sure which is the correct way and at which > point I need to embed my molecule. > > > > I am doing this : > > > for line2 in infile2: > > > mol2 = Chem.MolFromSmiles(line2) > > m2 = Chem.AddHs(mol2) > > > cids = AllChem.EmbedMultipleConfs(m2, numConfs) > > for k in cids: > > a = Chem.MolToMolBlock(m2, confId=k) > > b.append(Chem.MolFromMolBlock(a)) > > > fff = AllChem.UFFGetMoleculeForceField(b[k]) > > fff.Initialize() > > fff.Minimize() > > > energy_value_U = fff.CalcEnergy() > > print("for each conformer") > > print(energy_value_U) > > energies.append(float(energy_value_U)) > > > Should I be doing something else? like: > > > for line2 in infile2: > > > mol2 = Chem.MolFromSmiles(line2) > > m2 = Chem.AddHs(mol2) > > > cids = AllChem.EmbedMultipleConfs(m2, numConfs) > > for k in cids: > > a = Chem.MolToMolBlock(m2, confId=k) > > b.append(Chem.MolFromMolBlock(a)) > > > AllChem.EmbedMolecule(b[k]) > > fff = AllChem.UFFGetMoleculeForceField(b[k]) > > fff.Initialize() > > fff.Minimize() > > energy_value_U = fff.CalcEnergy() > > print("for each conformer") > > print(energy_value_U) > > energies.append(float(energy_value_U)) > > > or like this: > > > for line2 in infile2: > > print(line2) > > print(i) > > mol2 = Chem.MolFromSmiles(line2) > > m2 = Chem.AddHs(mol2) > > AllChem.EmbedMolecule(m2) > > cids = AllChem.EmbedMultipleConfs(m2, numConfs) > > for k in cids: > > a = Chem.MolToMolBlock(m2, confId=k) > > b.append(Chem.MolFromMolBlock(a)) > > > AllChem.EmbedMolecule(b[k]) > > fff = AllChem.UFFGetMoleculeForceField(b[k]) > > fff.Initialize() > > fff.Minimize() > > energy_value_U = fff.CalcEnergy() > > print("for each conformer") > > print(energy_value_U) > > energies.append(float(energy_value_U)) > > > or maybe non of the above?? > > > Thanks a lot, > > Stamatia Zavitsanou > _______________________________________________ > Rdkit-discuss mailing list > Rdkit-discuss@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss > >
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss