Under the Hood#

If you want to implement your own atom mapper or free energy procedure, or you want to do something a bit more bespoke, it’s helpful to understand how OpenFE thinks about individual alchemic mutation specifications. A Transformation stores all the information needed to run an alchemic mutation from one chemical system to another and is the basic unit of an OpenFE simulation campaign. Indeed, Transformation objects describe the edges of the graph in the AlchemicalNetwork class.

  • Setup
        • Protocol

          Simulation procedure for an alchemic mutation.

        • Chemical component definition

          SDF, PDB, RDKit, OpenFF Molecule, solvent spec, etc.

        • Loading Molecules and Chemical Systems

            • SmallMoleculeComponent

              The ligands that will be mutated.

            • Creating Atom Mappings

            • LigandAtomMapping

              Corresponds atoms in one small molecule to those in another.

            • SmallMoleculeComponent, SolventComponent and ProteinComponent

              The components that make up the chemical system.

            • Assembling into ChemicalSystems

            • ChemicalSystem

              Each of the chemical systems, composed of components, that the Transformation mutates between.

    • Transformation

      A single alchemic mutation from one chemical system to another.

  • Run
    • Transformation

      A single alchemic mutation from one chemical system to another.

    • ProtocolDAG

      A directed acyclic graph describing how to compute a Transformation.

        • ProtocolUnit

          A single unit of computation within a ProtocolDAG

        • ProtocolUnitResult

          The result of a completed ProtocolUnit

    • ProtocolDAGResult

      A completed transformation.

  • Gather
        • Transformation

          The specification for the alchemic mutation.

        • Protocol

          A completed single run of a transformation.

        • ProtocolResult

          A completed single run of a transformation.

    • ProtocolDAGResult

      A completed transformation with multiple user-defined replicas.