openff.evaluator.protocols.utils.generate_simulation_protocols(analysis_protocol: S, use_target_uncertainty: bool, id_suffix: str = '', conditional_group: Optional[openff.evaluator.protocols.groups.ConditionalGroup] = None, n_molecules: int = 1000)Tuple[openff.evaluator.protocols.utils.SimulationProtocols[S], openff.evaluator.workflow.utils.ProtocolPath,][source]

Constructs a set of protocols which, when combined in a workflow schema, may be executed to run a single simulation to estimate the average value of an observable.

The protocols returned will:

  1. Build a set of liquid coordinates for the property substance using packmol.

  2. Assign a set of smirnoff force field parameters to the system.

  3. Perform an energy minimisation on the system.

  4. Run a short NPT equilibration simulation for 100000 steps using a timestep of 2fs.

  5. Within a conditional group (up to a maximum of 100 times):

    5a) Run a longer NPT production simulation for 1000000 steps using a

    timestep of 2fs

    5b) Extract the average value of an observable and it’s uncertainty.

    5c) If a convergence mode is set by the options, check if the target

    uncertainty has been met. If not, repeat steps 5a), 5b) and 5c).

  6. Extract uncorrelated configurations from a generated production simulation.

  7. Extract uncorrelated statistics from a generated production simulation.

  • analysis_protocol – The protocol which will extract the observable of interest from the generated simulation data.

  • use_target_uncertainty – Whether to run the simulation until the observable is estimated to within the target uncertainty.

  • id_suffix (str) – A string suffix to append to each of the protocol ids.

  • conditional_group (ProtocolGroup, optional) – A custom group to wrap the main simulation / extraction protocols within. It is up to the caller of this method to manually add the convergence conditions to this group. If None, a default group with uncertainty convergence conditions is automatically constructed.

  • n_molecules (int) – The number of molecules to use in the workflow.


  • The protocols to add to the workflow, a reference to the average value of the

  • estimated observable (an Observable object), and an object which describes

  • the default data from a simulation to store, such as the uncorrelated statistics

  • and configurations.