Transformations#
The absolv
framework supports alchemically transforming the electrostatic and vdW interactions within an OpenMM
System
object via the absolv.fep.apply_fep function.
Due to the huge flexibility of the OpenMM system, allowing completely custom electrostatic and vdW forces to be implemented, it would be impossible to support all possible combinations of non-bonded forces. As such, the framework currently only systems that contain
- vdW + electrostatic interactions in a single built-in
NonbondedForce
object - electrostatic interactions in a built-in
NonbondedForce
object, vdW interactions in aCustomNonbondedForce
object and vdW 1-4 interactions in aCustomBondForce
- the above combinations sans any electrostatics interactions
are supported.
Electrostatics#
The electrostatic interactions in the system are alchemically transformed by linearly scaling all partial charges on
particles in solute molecules by \(\lambda_{elec}\), corresponding to a "lambda_electrostatics"
context variable that
will be added by the factory, such that
All intramolecular interactions will be switched off during the alchemical transformation. This is referred to as 'annihilating' the electrostatic interactions in other packages and some literature.
Because the charges are scaled directly, the energy contributions of the alchemically scaled electrostatic interactions will be
where \(U^E_{sol-sol}\), \(U^E_{sol-solv}\) and \(U^E_{solv-solv}\) are the un-scaled electrostatic contributions to the energies of the solute-solute, solute-solvent and solvent-solvent interactions respectively.
vdW#
Currently vdW interactions can only be transformed if they are stored in a standard NonbondedForce
OR if they are
split between a CustomBondForce
(1-2, 1-3, and 1-4 interactions) and a CustomNonbondedForce
(the remaining
1-n and intermolecular interactions).
The interactions will be transformed according to \(\lambda_{vdW}\) which corresponds to a "lambda_sterics"
context
variable that will be added by the factory.
Only intermolecular vdW interactions will be alchemically scaled, while all intramolecular interactions will be left un-scaled. This is is referred to as 'decoupling' the vdW interactions in other packages and some literature.
Lennard--Jones#
If the vdW interactions are stored in a standard NonbondedForce
, then the alchemical factory will split them so that
-
the
NonbondedForce
force retains all interactions between solvent particles -
all intermolecular alchemical (both solute-solvent and solute-solute) interactions are moved into a new
CustomNonbondedForce
-
all solute intramolecular interactions are moved into a new
CustomNonbondedForce
Note
The intramolecular solute-solute interactions won't use any periodic boundary corrections such that the the decoupled state of the solute corresponds to the proper vacuum state without periodicity effects.
The CustomNonbondedForce
will copy over all settings (including cut-off, long-range correction, etc) from the original
NonbondedForce
, but will replace the normal LJ energy expression with a soft-core version. By default, this takes
the form:
where
Custom vdW Forms#
If the vdW interactions are split across a CustomNonbondedForce
and a CustomBondForce
then the alchemical factory
will further split them so that
-
the original
CustomNonbondedForce
force will retain all interactions between solvent particles -
all solute intramolecular interactions are moved into a new
CustomNonbondedForce
Note
The intramolecular solute-solute interactions won't use any periodic boundary corrections such that the the decoupled state of the solute corresponds to the proper vacuum state without periodicity effects.
-
all intermolecular alchemical (both solute-solvent and solute-solute) interactions are moved into another new
CustomNonbondedForce
with a modified energy expression such that\[U^{vdW}_{sol-solv} \left( \lambda_{vdW} \right) = \lambda_{vdW} \times U^{vdW}_{sol-solv}\]