Skip to content

Choose an MLP#

presto supports any OpenMM-ML model name as the reference potential. The choice affects fit accuracy, speed, charge handling, and (importantly) licence. For the conceptual treatment, see Concepts → MLPs in presto.

The MLPs below are installed by default in the pixi environment. Both have licences that permit industrial use and were trained including charged molecules.

  • aimnet2 (MIT) — relatively fast and robust. Currently the presto default. A ~50-atom molecule on a single A4500 fits in ~15 minutes.
  • orb-v3-conservative-omol (Apache-2.0) — more accurate, trained on OMol25. Expect fits to take ~2× longer than AIMNet2 at the same molecule size.

You can use any OpenMM-ML model name (and model-specific kwargs) supported by your environment; presto does not enforce a fixed allowlist. For a benchmark of MLPs see this paper.

Some other supported names#

Other models which are installed in the default pixi environment when installing from GitHub.

  • aceff-2.0 — historically the default. warning "Currently broken upstream"* There are open issues with AceFF 2.0 in OpenMM-ML. Use alternatives until they're resolved.
  • mace-off variants — warning "Academic licence only" MACE-OFF is released under the Academic Software License, which does not permit commercial use.
  • egret-1 — permissive licence; supported by OpenMM-ML.

Pin the same MLP across stages#

By default each sampling-settings object instantiates its own MLPSettings. To use the same MLP for training-sampling, testing-sampling, and MSM, set it in three places:

param_settings:
    msm_settings:
        mlp_settings:
            ml_potential: aimnet2
training_sampling_settings:
    mlp_settings:
        ml_potential: aimnet2
testing_sampling_settings:
    mlp_settings:
        ml_potential: aimnet2

Programmatically:

from presto.settings import MLPSettings, ...

mlp = MLPSettings(ml_potential="aimnet2")
settings = WorkflowSettings(
    param_settings=ParamSettings(
        molecules="CCO",
        msm_settings=MSMSettings(mlp_settings=mlp),
    ),
    training_sampling_settings=MMMDMetadynamicsTorsionMinimisationSamplingSettings(
        mlp_settings=mlp,
    ),
    testing_sampling_settings=MLMDSamplingSettings(mlp_settings=mlp),
)

Pass model-specific kwargs#

MLPSettings has two kwargs dicts:

  • ml_potential_kwargs — passed to openmmml.MLPotential(...) (e.g. model variant, precision).
  • ml_system_kwargs — passed to MLPotential.createSystem(...) at simulation time.

Refer to the OpenMM-ML docs for the supported keys per model.

For ASE-backed models, see Use an ASE calculator.