Experiments Header in YAML Files¶
The experiments header is the final object that YANK needs to run a free energy simulation.
Multiple experiments can be defined in a single YAML file and each one is considered a fully defined free energy calculation.
Experiments Syntax¶
experiments:
system: {UserDefinedSystem}
protocol: {UserDefinedProtocol}
restraint:
type: FlatBottom
{Restraint Parameter}
...
options:
{Any Valid Option}
{Any Valid Option}
...
This is the structure of an experiment.
It takes a {UserDefinedSystem} (see systems) and a {UserDefinedProtocol} (see protocols)
to create the experiment and are the only required arguments.
The restraint is an optional keyword that applies a restraint to the ligand to keep it close to the receptor.
The only required keyword is type. Valid types are: FlatBottom/Harmonic/Boresch/RMSD/PeriodicTorsionBoresch/null. If not
specified, assumes null. Every restraint has his own set of optional parameters that are passed directly to the
Python constructor of the restraint. See the API documentation in yank.restraints for the available parameters; you
can use the links below to jump to each of individual restraint types, the keyword arguments for each restraint type
are accepted as arguments in the YAML file:
FlatBottom Radially-Symmetric RestraintsHarmonic Radially-Symmetric RestraintsBoresch Orientational RestraintsPeriodic torsion restrained Boresch-like restraintRMSD Protein-Ligand Restraints
The options directive lets you overwrite any global setting specified in the header options for
this specific experiment.
One option is to select restrained atoms through Topgraphical Regions defined as part of your
molecule’s regions. You can also select atoms through a
compound region where regions are combined through set operators
and/or.
Note: The Boresch-like and RMSD restraints require that the ligand and receptor are close to each other to make sure
the standard state correction computation is stable. We recommend only using the Boresch,
PeriodicTorsionBoresch, or RMSD, options if you know the binding mode of your system already!
Running Multiple Experiments¶
A single experiment can be defined by the following example. However, if one would like to run multiple experiments from the same YAML file, then follow these instructions:
- Create an outermost header above
experimentswith whatever name of experiment you want to run. We label this as{UserDefinedExperiment}. - Define your
{UserDefinedExperiment}by creating sub-directives just as you would in the mainexperimentheader (se the Experiments Syntax for description). - Repeat this process for as many experiments as you want.
- Create an
experimentsheader below your user defined ones with the syntax:experiments: [{UserDefinedExperiment}, {UserDefinedExperiment}, ...]where the list is the experiments you defined.
- NOTE: There are no sub-directives under the
experimentsheader when invoked this way.
Here is an example
{UserDefinedExperiment}:
system: {UserDefinedSystem}
protocol: {UserDefinedProtocol}
restraint:
type: FlatBottom
{ASecondUserDefinedExperiment}:
system: {UserDefinedSystem}
protocol: {UserDefinedProtocol}
restraint:
type: Boresch
experiments: [{UserDefinedExperiment}, {ASecondUserDefinedExperiment}]