Re: [Rdkit-discuss] Calculating strain energy of conformers

2021-07-12 Thread Paolo Tosco
Hi Lewis,

if you set up a custom MMFF94 force field disabling some energy terms, you
will need to do all your energy calculations with the custom instance of
the force field rather than using helper functions such as
MMFFOptimizeMolecule which instead will use a standard instance of the
force field built on-the-fly.

So you should rather do something like:

ff = AllChem.MMFFGetMoleculeForceField(testmol, mp, confId=c)
ff.Minimize()
ff.CalcEnergy()

Cheers,
p.

On Mon, Jul 12, 2021 at 1:05 AM Lewis Martin 
wrote:

> Hi RDKit,
> I'm exploring strain energies in the context of virtual screening,
> something that has been considered for a while[1] and is still being
> explored today[2].
>
> There may not be a canonical way, but is this a valid/good way to
> calculate strain energy? I'm just not sure if I'm using the MMFF correctly.
>
> from rdkit import Chem
> from rdkit.Chem import AllChem
> testmol =
> Chem.MolFromSmiles('Cc1c(c2cc(ccc2n1C(=O)c3ccc(cc3)Cl)OC)CC(=O)O')
> #indomethacin
> testmol = Chem.AddHs(testmol)
> AllChem.EmbedMultipleConfs(testmol, 50)
>
> mp = AllChem.MMFFGetMoleculeProperties(testmol, mmffVariant='MMFF94s')
>
> # keep angle-related terms
> mp.SetMMFFOopTerm(True)
> mp.SetMMFFAngleTerm(True)
> mp.SetMMFFTorsionTerm(True)
> # turn off anything unrelated to angles
> mp.SetMMFFStretchBendTerm(False)
> mp.SetMMFFBondTerm(False)
> mp.SetMMFFVdWTerm(False)
> mp.SetMMFFEleTerm(False)
>
> for c in range(50):
> print(AllChem.MMFFGetMoleculeForceField(testmol, mp,
> confId=c).CalcEnergy())
> MMFFOptimizeMolecule(testmol, confId=c, mmffVariant='MMFF94s')
> print('\t'+str(AllChem.MMFFGetMoleculeForceField(testmol, mp,
> confId=c).CalcEnergy()))
>
> Thanks for any comments or advice!
> Lewis
>
>
> [1]Conformational Analysis of Drug-Like Molecules Bound to Proteins: An
> Extensive Study of Ligand Reorganization upon Binding, 2003
> [2]Ligand Strain Energy in Large Library Docking, 2021
> ___
> 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


[Rdkit-discuss] Calculating strain energy of conformers

2021-07-11 Thread Lewis Martin
Hi RDKit,
I'm exploring strain energies in the context of virtual screening,
something that has been considered for a while[1] and is still being
explored today[2].

There may not be a canonical way, but is this a valid/good way to calculate
strain energy? I'm just not sure if I'm using the MMFF correctly.

from rdkit import Chem
from rdkit.Chem import AllChem
testmol =
Chem.MolFromSmiles('Cc1c(c2cc(ccc2n1C(=O)c3ccc(cc3)Cl)OC)CC(=O)O')
#indomethacin
testmol = Chem.AddHs(testmol)
AllChem.EmbedMultipleConfs(testmol, 50)

mp = AllChem.MMFFGetMoleculeProperties(testmol, mmffVariant='MMFF94s')

# keep angle-related terms
mp.SetMMFFOopTerm(True)
mp.SetMMFFAngleTerm(True)
mp.SetMMFFTorsionTerm(True)
# turn off anything unrelated to angles
mp.SetMMFFStretchBendTerm(False)
mp.SetMMFFBondTerm(False)
mp.SetMMFFVdWTerm(False)
mp.SetMMFFEleTerm(False)

for c in range(50):
print(AllChem.MMFFGetMoleculeForceField(testmol, mp,
confId=c).CalcEnergy())
MMFFOptimizeMolecule(testmol, confId=c, mmffVariant='MMFF94s')
print('\t'+str(AllChem.MMFFGetMoleculeForceField(testmol, mp,
confId=c).CalcEnergy()))

Thanks for any comments or advice!
Lewis


[1]Conformational Analysis of Drug-Like Molecules Bound to Proteins: An
Extensive Study of Ligand Reorganization upon Binding, 2003
[2]Ligand Strain Energy in Large Library Docking, 2021
___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss