This is part of the fisst module | |
It is only available if you configure PLUMED with ./configure –enable-modules=fisst . Furthermore, this feature is still being developed so take care when using it and report any problems on the mailing list. |
Compute and apply the optimal linear force on an observable to enhance sampling of conformational distributions over a range of applied forces.
This method is described in [61]
If the system's Hamiltonian is given by:
\[ H(\vec{p},\vec{q}) = \sum_{j} \frac{p_j^2}{2m_j} + U(\vec{q}), \]
This bias modifies the Hamiltonian to be:
\[ H'(\vec{p},\vec{q}) = H(\vec{p},\vec{q}) - \bar{F} Q \]
where for CV \(Q\), a coupling constant \({\bar{F}}\) is determined adaptively according to the FISST algorithm.
Specifically,
\[ \bar{F}(Q)=\frac{ \int_{F_{min}}^{F_{max}} e^{\beta F Q(\vec{q})} \omega(F) F dF}{\int_{F_{min}}^{F_{max}} e^{\beta F Q(\vec{q})} \omega(F) dF}, \]
where \(\vec{q}\) are the molecular coordinates of the system, and \(w(F)\) is a weighting function that is learned on the fly for each force by the FISST algorithm (starting from an initial weight distribution, uniform by default).
The target for \(w(F)=1/Z_q(F)\), where
\[ Z_q(F) \equiv \int d\vec{q} e^{-\beta U(\vec{q}) + \beta F Q(\vec{q})}. \]
FISST also computes and writes Observable Weights \(W_F(\vec{q}_t)\) for a molecular configuration at time \(t\), so that averages of other quantities \(A(\vec{q})\) can be reconstructed later at different force values (over a trajectory with \(T\) samples):
\[ \langle A \rangle_F = \frac{1}{T} \sum_t W_F(\vec{q}_t) A(\vec{q}_t). \]
In the following example, an adaptive restraint is learned to bias the distance between two atoms in a system, for a force range of 0-100 pN.
UNITSLENGTH=Athe units of lengths.TIME=fsthe units of time.ENERGY=kcal/mol b1: GROUPthe units of energy.ATOMS=1 b2: GROUPthe numerical indexes for the set of atoms in the group.ATOMS=12 dend: DISTANCEthe numerical indexes for the set of atoms in the group.ATOMS=b1,b2 #The conversion factor is 69.4786 pN = 1 kcal/mol/Angstrom #0 pN to 100 pN f: FISSTthe pair of atom that we are calculating the distance between.MIN_FORCE=0compulsory keyword Minimum force (per CV) to use for sampling.MAX_FORCE=1.44compulsory keyword Maximum force (per CV) to use for sampling.PERIOD=100compulsory keyword Steps corresponding to the learning rateNINTERPOLATE=31compulsory keyword Number of grid points on which to do interpolation.ARG=dendthe input for this action is the scalar output from one or more other actions.OUT_RESTART=pull.restart.txtOutput file for all information needed to continue FISST simulation.IfOUT_OBSERVABLE=pull.observable.txtOutput file putting weights needed to compute observables at different force values.IfOBSERVABLE_FREQ=1000 PRINTHow often to write out observable weights (default=period).ARG=dend,f.dend_fbar,f.bias,f.force2the input for this action is the scalar output from one or more other actions.FILE=pull.colvar.txtthe name of the file on which to output these quantitiesSTRIDE=1000compulsory keyword ( default=1 ) the frequency with which the quantities of interest should be output
By default this Action calculates the following quantities. These quantities can be referenced elsewhere in the input by using this Action's label followed by a dot and the name of the quantity required from the list below.
Quantity | Description |
bias | the instantaneous value of the bias potential |
force2 | squared value of force from the bias. |
_fbar | For each named CV biased, there will be a corresponding output CV_fbar storing the current linear bias prefactor. |
PERIOD | Steps corresponding to the learning rate |
NINTERPOLATE | Number of grid points on which to do interpolation. |
MIN_FORCE | Minimum force (per CV) to use for sampling. Units: [Energy]/[CV] (can be negative). |
MAX_FORCE | Maximum force (per CV) to use for sampling. |
CENTER | ( default=0 ) The CV value at which the applied bias energy will be zero |
NUMERICAL_DERIVATIVES | ( default=off ) calculate the derivatives for these quantities numerically |
FREEZE | ( default=off ) Fix bias weights at current level (only used for restarting). |
ARG | the input for this action is the scalar output from one or more other actions. The particular scalars that you will use are referenced using the label of the action. If the label appears on its own then it is assumed that the Action calculates a single scalar value. The value of this scalar is thus used as the input to this new action. If * or *.* appears the scalars calculated by all the proceeding actions in the input file are taken. Some actions have multi-component outputs and each component of the output has a specific label. For example a DISTANCE action labelled dist may have three components x, y and z. To take just the x component you should use dist.x, if you wish to take all three components then use dist.*.More information on the referencing of Actions can be found in the section of the manual on the PLUMED Getting Started. Scalar values can also be referenced using POSIX regular expressions as detailed in the section on Regular Expressions. To use this feature you you must compile PLUMED with the appropriate flag. You can use multiple instances of this keyword i.e. ARG1, ARG2, ARG3... |
RESET_PERIOD | Reset the learning statistics every time this number of steps comes around. |
KBT | The system temperature in units of KB*T. If not provided will be taken from MD code (if available) |
INITIAL_WEIGHT_DIST | Starting distribution for the force weights (options: UNIFORM, EXP, GAUSS). |
INITIAL_WEIGHT_RATE | Rate of decay for exponential and gaussian distributions. W(F)~exp(-r |F|^d). |
RESTART_FMT | the format that should be used to output real numbers in FISST restarts. |
OUT_RESTART | Output file for all information needed to continue FISST simulation.If you have the RESTART directive set (global or for FISST), this file will be appended to.Note that the header will be printed again if appending. |
IN_RESTART | Read this file to continue an FISST simulation. If same as OUT_RESTART and you have not set the RESTART directive, the file will be backed-up and overwritten with new output.If you do have the RESTART flag set and it is the same name as OUT_RESTART, this file will be appended. |
OUT_OBSERVABLE | Output file putting weights needed to compute observables at different force values.If you have the RESTART directive set (global or for FISST), this file will be appended to. Note that the header will be printed again if appending. |
OBSERVABLE_FREQ | How often to write out observable weights (default=period). |
RESTART | allows per-action setting of restart (YES/NO/AUTO) |