Skip to content

Discrepancy in espaloma energies when using template generator, which calls regenerate_impropers #412

@diogomart

Description

@diogomart

Hello,

I get different energies from OpenMM systems built with

  • espaloma.graphs.deploy.openmm_system_from_graph()
  • EspalomaTemplateGenerator

There are differences in relative energies between conformers of the same molecule. For a large small molecule (lenacapavir) the difference in relative energy between conformers was about 1.5 kJ/mol. For a few other molecules the difference was negligible (a few hundreds of a kJ/mol).

The only difference I could find in the code paths is a call to regenerate_impropers

from espaloma.graphs.utils.regenerate_impropers import regenerate_impropers

With the template generator, which calls regenerate_impropers(), the number of impropers is halved, and the central atom is the first of the four atoms defining the dihedral. With espaloma.graphs.deploy.openmm_system_from_graph(), which does not call regenerate_impropers(), the central atom is the second atom.

See code attached, which can be run with python builder.py lenacapavir.sdf and prints the following

espaloma.__version__='0+untagged.16.g804d3cc.dirty'
openff.toolkit.__version__='0.14.5'
openmm.__version__='8.2'
openmmforcefields.__version__='0.14.1'
rdkit.__version__='2024.03.4'

espaloma system
len(bonds)=102
len(angles)=185
len(propers)=1620
len(impropers)=312
central_atoms={'b'}

generator system
len(bonds)=102
len(angles)=185
len(propers)=1620
len(impropers)=156
central_atoms={'a'}

energy diff (espaloma) 36.61758804321289 kJ/mol
energy diff (generator) 35.141313552856445 kJ/mol

espaloma-deploy-vs-generator.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions