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 [49]
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=dendcompulsory keyword the labels of the scalars on which the bias will actOUT_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.force2compulsory keyword the labels of the values that you would like to print to the fileFILE=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. |
ARG | the labels of the scalars on which the bias will act |
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). |
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) |