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

Reply via email to