Protocols and the Execution Model#

Protocols in OpenFE are built on a flexible execution model. Result objects are shaped by this model, and therefore some basic background on it can be useful when looking into the details of simulation results. In general, most users don’t need to work with the details of the execution model, but the general ideas can be useful.

Each protocol involves a number of steps (called ProtocolUnits) which occur in some order. Formally, this is described by a directed acyclic graph (DAG), so the collection of steps to run is called a ProtocolDAG. A Protocol creates the ProtocolDAG, and a single ProtocolDAG should give information necessary to obtain an estimate of the desired thermodynamic observable. Over the course of a campaign, a single Protocol may create multiple ProtocolDAGs, e.g., to extend a simulation. NB: While independent runs can be created as separate ProtocolDAGs, the recommend way to do independent runs is as a repeats part of the settings for the protocol, which puts the independent runs in a single ProtocolDAG.

There are results objects at each level of this: so the ProtocolResult is associated with the Protocol. Just as the Protocol may create one or more ProtocolDAGs, the ProtocolResult will be made from one or more ProtocolDAGResults. Finally, each ProtocolDAGResult may carry information about multiple ProtocolUnitResults, just a single ProtocolDAG may involve mutliple ProtocolUnits.