class openfe.ProtocolDAG(*, protocol_units: list[ProtocolUnit], transformation_key: GufeKey | None, extends_key: GufeKey | None = None, name: str | None = None)#

An executable directed acyclic graph (DAG) of ProtocolUnit objects.

A ProtocolDAG is composed of ProtocolUnit objects as well as how they depend on each other. A single ProtocolDAG execution should yield sufficient information to calculate a free energy difference (though perhaps not converged) between two ChemicalSystem objects.

A ProtocolDAG yields a ProtocolDAGResult when executed.

Properties#

namestr

Optional identifier for this ProtocolDAGResult.

protocol_unitslist[ProtocolUnit]

ProtocolUnit s (given in DAG-dependency order) used to compute this ProtocolDAGResult. Tasks are always listed after their dependencies.

graphnx.DiGraph

Graph of ProtocolUnit s as nodes, with directed edges to each ProtocolUnit’s dependencies.

Create a new ProtocolDAG`

param protocol_units:

The ProtocolUnit s that make up this ProtocolDAG, with dependencies included as inputs.

type protocol_units:

Iterable[ProtocolUnit]

param transformation_key:

Key of the Transformation that this ProtocolDAG corresponds to, if applicable. This functions as a label for identifying the source of this ProtocolDAG. This label will be passed on to the ProtocolDAGResult resulting from execution of this ProtocolDAG.

type transformation_key:

Optional[GufeKey]

param extends_key:

Key of the ProtocolDAGResult that this ProtocolDAG extends from. This functions as a label for identifying the source of this ProtocolDAG. This label will be passed on to the ProtocolDAGResult resulting from execution of this ProtocolDAG.

type extends_key:

Optional[GufeKey]

param name:

Unique identifier for this ProtocolDAG.

type name:

str