This repository contains the simulation scripts used to reproduce the results from the publication:
Gopal, V., Kirkvold, C., Gordon, A., Goodpaster, J., Sarupria, S. Solvent-Inclusive ML/MM Simulations: Assessments of Structural, Dynamical, and Thermodynamic Accuracy. Journal of Chemical Information and Modeling (JCIM). 2025. doi: 10.1021/acs.jcim.5c01939
The simulation scripts use OpenMM and the OpenMM-DeePMD plugin, which enables the use of machine-learned interatomic potentials (MLIPs) in molecular dynamics simulations.
Most software dependencies can be installed by creating a conda environment using the provided environment.yml file. Installation should be performed on a GPU-enabled node.
To create the environment using mamba, run the following command:
module load mamba
mamba env create --name <env_name> --file=environment.ymlThe command above will install the following packages:
openmmopenmmtoolsopenmm-plumedopenmmforcefieldsopenff-toolkitcudatoolkit
Some OpenMM plugins are required to run the simulations.
OpenMM-DeePMD plugin:
This plugin must be built from source. Follow the instructions from the OpenMM-DeePMD plugin repository. This study built the plugin from commit 04603ac.
OpenMM-Plumed plugin:
This plugin will be installed from the environment.yml file described above. However, the plugin will not contain the manyrestraints module needed to implement the UWALLS and LWALLS restraints to define the ML-MM boundary (Eqs. 4 & 5 in the main text). As a result, PLUMED will need to be built from source and then linked to the OpenMM-Plumed plugin.
Install PLUMED 2.9.0 using these instructions from the PLUMED website. Make sure to include the manyrestraints module when building PLUMED.
The DeepPot-SE models used in this work were trained on data from the following paper:
Miguel de la Puente, Rolf David, Axel Gomez, and Damien Laage Journal of the American Chemical Society 2022 144 (23), 10524-10529 DOI: 10.1021/jacs.2c03099
The training data is not included in this repository and was obtained upon request from the authors of the above paper.
The models were trained using the DeePMD-kit 2.2.9 package.
We provide the two DeePMD model files used in this work in the scripts directory. The models are in the .pb format, which is compatible with the OpenMM-DeePMD plugin:
LR_model.pb: Referred to as LR model in the main textSR_model.pb: Referred to as SR model in the main text
We provide OpenMM scripts to run ML/MM simulations of both systems studied in this work: neat water and formic acid in water. The files are located in the scripts directory. Comments are provided to explain the different sections of the code, including the custom integrator scheme and the ML/MM boundary definition.
-
Neat water system:
scripts/mlmm_water_system_0.5nm_ml_region.py -
Formic acid in water system:
scripts/mlmm_fa_system_0.5nm_ml_region.py
To ensure that the OpenMM-Plumed plugin is correctly linked to the PLUMED library, the PLUMED_KERNEL_PATH environment variable should be modified in the scripts. Find the path to the lib/libplumedKernel.so for the PLUMED built from source. In the OpenMM script, change the PLUMED_KERNEL_PATH:
import os
os.environ['PLUMED_KERNEL'] = '<path_to_plumed>/plumed/plumed-2.9.0/lib/libplumedKernel.so'
from openmmplumed import PlumedForceTo run the simulations, load the conda environment created above and execute the script using Python:
python <script_name>.py