OpenMM Absolute Solvation Free Energy Protocol#

This section provides details about the OpenMM Absolute Solvation Free Energy Protocol implemented in OpenFE.

Protocol API specification#

AbsoluteSolvationProtocol

Absolute solvation free energy calculations using OpenMM and OpenMMTools.

AbsoluteSolvationVacuumUnit

Protocol Unit for the vacuum phase of an absolute solvation free energy

AbsoluteSolvationSolventUnit

Protocol Unit for the solvent phase of an absolute solvation free energy

AbsoluteSolvationProtocolResult

Dict-like container for the output of a AbsoluteSolvationProtocol

Protocol Settings#

Below are the settings which can be tweaked in the protocol. The default settings (accessed using AbsoluteSolvationProtocol.default_settings()) will automatically populate settings which we have found to be useful for running solvation free energy calculations. There will however be some cases (such as when calculating difficult to converge systems) where you will need to tweak some of the following settings.

pydantic model openfe.protocols.openmm_afe.equil_afe_settings.AbsoluteSolvationSettings#

Configuration object for AbsoluteSolvationProtocol.

See also

openfe.protocols.openmm_afe.AbsoluteSolvationProtocol

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

field protocol_repeats: int [Required]#

The number of completely independent repeats of the entire sampling process. The mean of the repeats defines the final estimate of FE difference, while the variance between repeats is used as the uncertainty.

field solvent_forcefield_settings: OpenMMSystemGeneratorFFSettings [Required]#
field vacuum_forcefield_settings: OpenMMSystemGeneratorFFSettings [Required]#

Parameters to set up the force field with OpenMM Force Fields

field thermo_settings: ThermoSettings [Required]#

Settings for thermodynamic parameters

field solvation_settings: OpenMMSolvationSettings [Required]#

Settings for solvating the system.

field alchemical_settings: AlchemicalSettings [Required]#

Alchemical protocol settings.

field lambda_settings: LambdaSettings [Required]#

Settings for controlling the lambda schedule for the different components (vdw, elec, restraints).

field vacuum_engine_settings: OpenMMEngineSettings [Required]#

Settings specific to the OpenMM engine, such as the compute platform for the vacuum transformation.

field solvent_engine_settings: OpenMMEngineSettings [Required]#

Settings specific to the OpenMM engine, such as the compute platform for the solvent transformation.

field integrator_settings: IntegratorSettings [Required]#

Settings for controlling the integrator, such as the timestep and barostat settings.

field vacuum_equil_simulation_settings: MDSimulationSettings [Required]#

Pre-alchemical vacuum simulation control settings.

Notes

The NVT equilibration should be set to 0 * unit.nanosecond as it will not be run.

field vacuum_simulation_settings: MultiStateSimulationSettings [Required]#

Simulation control settings, including simulation lengths for the vacuum transformation.

field solvent_equil_simulation_settings: MDSimulationSettings [Required]#

Pre-alchemical solvent simulation control settings.

field solvent_simulation_settings: MultiStateSimulationSettings [Required]#

Simulation control settings, including simulation lengths for the solvent transformation.

field vacuum_equil_output_settings: MDOutputSettings [Required]#

Simulation output settings for the vacuum non-alchemical equilibration.

field vacuum_output_settings: MultiStateOutputSettings [Required]#

Simulation output settings for the vacuum transformation.

field solvent_equil_output_settings: MDOutputSettings [Required]#

Simulation output settings for the solvent non-alchemical equilibration.

field solvent_output_settings: MultiStateOutputSettings [Required]#

Simulation output settings for the solvent transformation.

field partial_charge_settings: OpenFFPartialChargeSettings [Required]#

Settings for controlling how to assign partial charges, including the partial charge assignment method, and the number of conformers used to generate the partial charges.

Protocol Specific Settings Classes#

Below are Settings classes which are unique to the AbsoluteSolvationProtocol.

pydantic model openfe.protocols.openmm_afe.equil_afe_settings.AlchemicalSettings#

Settings for the alchemical protocol

Empty place holder for right now.

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

pydantic model openfe.protocols.openmm_afe.equil_afe_settings.LambdaSettings#

Lambda schedule settings.

Defines lists of floats to control various aspects of the alchemical transformation.

Notes

  • In all cases a lambda value of 0 defines a fully interacting state A and a non-interacting state B, whilst a value of 1 defines a fully interacting state B and a non-interacting state A.

  • lambda_elec, lambda_vdw`, and lambda_restraints must all be of the same length, defining all the windows of the transformation.

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

field lambda_elec: list[float] = [0.0, 0.25, 0.5, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]#

List of floats of lambda values for the electrostatics. Zero means state A and 1 means state B. Length of this list needs to match length of lambda_vdw and lambda_restraints.

field lambda_vdw: list[float] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0]#

List of floats of lambda values for the van der Waals. Zero means state A and 1 means state B. Length of this list needs to match length of lambda_elec and lambda_restraints.

field lambda_restraints: list[float] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]#

List of floats of lambda values for the restraints. Zero means state A and 1 means state B. Length of this list needs to match length of lambda_vdw and lambda_elec.