Alchemical Networks: Representation of a Simulation#

The goal of the setup stage is to create an AlchemicalNetwork, which contains all the information needed for a campaign of simulations. This section will describe the composition of the achemical network, including describing the OpenFE objects that describe chemistry, as well as alchemical transformations.

Like any network, the AlchemicalNetwork can be described in terms of nodes and edges between nodes. The nodes are ChemicalSystems, which describe the specific molecules involved. The edges are Transformation objects, which carry all the information about how the simulation is to be performed.

In practice, nodes must be associated with a transformation in order to be relevant in an alchemical network; that is, there are no disconnected nodes. This means that the alchemical network can be fully described by just the edges (which contain information on the nodes they connect). Note that this does not mean that the entire network must be fully connected – just that there are no solitary nodes.

Each Transformation represents everything that is needed to calculate the free energy differences between the two ChemicalSystems that are the nodes for that edge. In addition to containing the information for each ChemicalSystem, the Transformation also contains a Protocol and, when relevant, atom mapping information for alchemical transformations.

A ChemicalSystem is made up of one or more ChemicalComponents. Each component represents a conceptual part of the total molecular system. A ligand would be represented by a SmallMoleculeComponent. A protein would be a ProteinComponent. The solvent to be added is represented as a SolventComponent. This allows us to easily identify what is changing between two nodes – for example, a relative binding free energy (RBFE) edge for ligand binding would have the same solvent and protein components, but different ligand components.

The Protocol object describes how the simulation should be run. This includes choice of algorithm, as well as specific settings for the edge. Each protocol has its own Settings subclass, which contains all the settings relevant for that protocol.