# RunOpenMMSimulation

class `propertyestimator.protocols.simulation.``RunOpenMMSimulation`(protocol_id)

  Performs a molecular dynamics simulation in a given ensemble using an OpenMM backend.

  `__init__`(protocol_id)

    Initialize self. See help(type(self)) for accurate signature.

  Methods

  `__init__`(protocol_id) | Initialize self.
  `apply_replicator`(replicator, template_values) | Applies a ProtocolReplicator to this protocol.
  `can_merge`(other[, path_replacements]) | Determines whether this protocol can be merged with another.
  `execute`(directory, available_resources) | Execute the protocol.
  `get_class_attribute`(reference_path) | Returns one of this protocols, or any of its children’s, attributes directly (rather than its value).
  `get_value`(reference_path) | Returns the value of one of this protocols inputs / outputs.
  `get_value_references`(input_path) | Returns a dictionary of references to the protocols which one of this protocols inputs (specified by input_path) takes its value from.
  `merge`(other) | Merges another BaseProtocol with this one.
  `replace_protocol`(old_id, new_id) | Finds each input which came from a given protocol
  `set_uuid`(value) | Store the uuid of the calculation this protocol belongs to
  `set_value`(reference_path, value) | Sets the value of one of this protocols inputs.

  Attributes

  `allow_gpu_platforms` | Protocol Input - If true, OpenMM will be allowed to run using a GPU if available, otherwise it will be constrained to only using CPUs.
  `allow_merging` | Protocol Input - Defines whether this protocols is allowed to merge with other protocols.
  `checkpoint_frequency` | Protocol Input - The frequency (in multiples of output_frequency) with which to write to a checkpoint file, e.g.
  `dependencies` | A list of pointers to the protocols which this protocol takes input from.
  `enable_pbc` | Protocol Input - If true, periodic boundary conditions will be enabled.
  `ensemble` | Protocol Input - The thermodynamic ensemble to simulate in.
  `high_precision` | Protocol Input - If true, OpenMM will be run using a platform with high precision settings.
  `id` | The unique id of this protocol.
  `input_coordinate_file` | Protocol Input - The file path to the starting coordinates.
  `output_coordinate_file` | Protocol Output - The file path to the coordinates of the final system configuration.
  `output_frequency` | Protocol Input - The frequency (in number of steps) with which to write to the output statistics and trajectory files.
  `schema` | A serializable schema for this object.
  `statistics_file_path` | Protocol Output - The file path to the statistics sampled during the simulation.
  `steps_per_iteration` | Protocol Input - The number of steps to propogate the system by at each iteration.
  `system_path` | Protocol Input - A path to the XML system object which defines the forces present in the system.
  `thermodynamic_state` | Protocol Input - The thermodynamic conditions to simulate under The default value of this attribute is not set and must be set by the user..
  `thermostat_friction` | Protocol Input - The thermostat friction coefficient.
  `timestep` | Protocol Input - The timestep to evolve the system by at each step.
  `total_number_of_iterations` | Protocol Input - The number of times to propogate the system forward by the steps_per_iteration number of steps.
  `trajectory_file_path` | Protocol Output - The file path to the trajectory sampled during the simulation.

  `steps_per_iteration`

    Protocol Input - The number of steps to propogate the system by at each iteration. The total number of steps performed by this protocol will be total_number_of_iterations * steps_per_iteration. The default value of this attribute is `1000000`.

    Type

      int

  `total_number_of_iterations`

    Protocol Input - The number of times to propogate the system forward by the steps_per_iteration number of steps. The total number of steps performed by this protocol will be total_number_of_iterations * steps_per_iteration. The default value of this attribute is `1`.

    Type

      int

  `output_frequency`

    Protocol Input - The frequency (in number of steps) with which to write to the output statistics and trajectory files. The default value of this attribute is `3000`. When two protocols are merged, the largest value of this attribute from either protocol is retained.

    Type

      int

  `checkpoint_frequency`

    Protocol Input - The frequency (in multiples of output_frequency) with which to write to a checkpoint file, e.g. if output_frequency=100 and checkpoint_frequency==2, a checkpoint file would be saved every 200 steps. The default value of this attribute is `10`. When two protocols are merged, the largest value of this attribute from either protocol is retained. This input is optional.

    Type

      int

  `timestep`

    Protocol Input - The timestep to evolve the system by at each step. The default value of this attribute is `2.0 femtosecond`. When two protocols are merged, the largest value of this attribute from either protocol is retained.

    Type

      Quantity

  `thermodynamic_state`

    Protocol Input - The thermodynamic conditions to simulate under The default value of this attribute is not set and must be set by the user..

    Type

      ThermodynamicState

  `ensemble`

    Protocol Input - The thermodynamic ensemble to simulate in. The default value of this attribute is `Ensemble.NPT`.

    Type

      Ensemble

  `thermostat_friction`

    Protocol Input - The thermostat friction coefficient. The default value of this attribute is `1.0 1 / picosecond`. When two protocols are merged, the largest value of this attribute from either protocol is retained.

    Type

      Quantity

  `input_coordinate_file`

    Protocol Input - The file path to the starting coordinates. The default value of this attribute is not set and must be set by the user..

    Type

      str

  `system_path`

    Protocol Input - A path to the XML system object which defines the forces present in the system. The default value of this attribute is not set and must be set by the user..

    Type

      str

  `enable_pbc`

    Protocol Input - If true, periodic boundary conditions will be enabled. The default value of this attribute is `True`.

    Type

      bool

  `allow_gpu_platforms`

    Protocol Input - If true, OpenMM will be allowed to run using a GPU if available, otherwise it will be constrained to only using CPUs. The default value of this attribute is `True`.

    Type

      bool

  `high_precision`

    Protocol Input - If true, OpenMM will be run using a platform with high precision settings. This will be the Reference platform when only a CPU is available, or double precision mode when a GPU is available. The default value of this attribute is `False`.

    Type

      bool

  `output_coordinate_file`

    Protocol Output - The file path to the coordinates of the final system configuration.

    Type

      str

  `trajectory_file_path`

    Protocol Output - The file path to the trajectory sampled during the simulation.

    Type

      str

  `statistics_file_path`

    Protocol Output - The file path to the statistics sampled during the simulation.

    Type

      str

  `execute`(directory, available_resources)

    Execute the protocol.

    Protocols may be chained together by passing the output of previous protocols as input to the current one.

    Parameters

      - directory (str) – The directory to store output data in.

      - available_resources (ComputeResources) – The resources available to execute on.

    Returns

      The output of the execution.

    Return type

      Dict[str, Any]

  `allow_merging`

    Protocol Input - Defines whether this protocols is allowed to merge with other protocols. The default value of this attribute is `True`.

    Type

      bool

  `apply_replicator`(replicator, template_values, template_index=-1, template_value=None, update_input_references=False)

    Applies a ProtocolReplicator to this protocol. This method should clone any protocols whose id contains the id of the replicator (in the format $(replicator.id)).

    Parameters

      - replicator (ProtocolReplicator) – The replicator to apply.

      - template_values (list of Any) –

        A list of the values which will be inserted into the newly replicated protocols.

        This parameter is mutually exclusive with template_index and template_value

      - template_index (int, optional) –

        A specific value which should be used for any protocols flagged as to be replicated by the replicator. This option is mainly used when replicating children of an already replicated protocol.

        This parameter is mutually exclusive with template_values and must be set along with a template_value.

      - template_value (Any, optional) –

        A specific index which should be used for any protocols flagged as to be replicated by the replicator. This option is mainly used when replicating children of an already replicated protocol.

        This parameter is mutually exclusive with template_values and must be set along with a template_index.

      - update_input_references (bool) –

        If true, any protocols which take their input from a protocol which was flagged for replication will be updated to take input from the actually replicated protocol. This should only be set to true if this protocol is not nested within a workflow or a protocol group.

        This option cannot be used when a specific template_index or template_value is providied.

    Returns

      A dictionary of references to all of the protocols which have been replicated, with keys of original protocol ids. Each value is comprised of a list of the replicated protocol ids, and their index into the template_values array.

    Return type

      dict of ProtocolPath and list of tuple of ProtocolPath and int

  `can_merge`(other, path_replacements=None)

    Determines whether this protocol can be merged with another.

    Parameters

      - other (`BaseProtocol`) – The protocol to compare against.

      - path_replacements (list of tuple of str, optional) – Replacements to make in any value reference protocol paths before comparing for equality.

    Returns

      True if the two protocols are safe to merge.

    Return type

      bool

  property `dependencies`

    A list of pointers to the protocols which this protocol takes input from.

    Type

      list of ProtocolPath

  `get_class_attribute`(reference_path)

    Returns one of this protocols, or any of its children’s, attributes directly (rather than its value).

    Parameters

      reference_path (ProtocolPath) – The path pointing to the attribute to return.

    Returns

      The class attribute.

    Return type

      object

  `get_value`(reference_path)

    Returns the value of one of this protocols inputs / outputs.

    Parameters

      reference_path (ProtocolPath) – The path pointing to the value to return.

    Returns

      The value of the input / output

    Return type

      Any

  `get_value_references`(input_path)

    Returns a dictionary of references to the protocols which one of this protocols inputs (specified by input_path) takes its value from.

    Notes

    Currently this method only functions correctly for an input value which is either currently a `ProtocolPath`, or a list / dict which contains at least one `ProtocolPath`.

    Parameters

      input_path (`propertyestimator.workflow.utils.ProtocolPath`) – The input value to check.

    Returns

      A dictionary of the protocol paths that the input targeted by input_path depends upon.

    Return type

      dict of ProtocolPath and ProtocolPath

  property `id`

    The unique id of this protocol.

    Type

      str

  `merge`(other)

    Merges another BaseProtocol with this one. The id of this protocol will remain unchanged.

    It is assumed that can_merge has already returned that these protocols are compatible to be merged together.

    Parameters

      other (BaseProtocol) – The protocol to merge into this one.

    Returns

      A map between any original protocol ids and their new merged values.

    Return type

      Dict[str, str]

  `replace_protocol`(old_id, new_id)
    Finds each input which came from a given protocol

      and redirects it to instead take input from a new one.

    Notes

    This method is mainly intended to be used only when merging multiple protocols into one.

    Parameters

      - old_id (str) – The id of the old input protocol.

      - new_id (str) – The id of the new input protocol.

  property `schema`

    A serializable schema for this object.

    Type

      ProtocolSchema

  `set_uuid`(value)

    Store the uuid of the calculation this protocol belongs to

    Parameters

      value (str) – The uuid of the parent calculation.

  `set_value`(reference_path, value)

    Sets the value of one of this protocols inputs.

    Parameters

      - reference_path (ProtocolPath) – The path pointing to the value to return.

      - value (Any) – The value to set.