This is part of the ves module | |
It is only available if you configure PLUMED with ./configure –enable-modules=ves . Furthermore, this feature is still being developed so take care when using it and report any problems on the mailing list. |
Implementation of VES Delta F method
Implementation of VES \(\Delta F\) method [57] (step two only).
First you should create some estimate of the local free energy basins of your system, using e.g. multiple METAD short runs, and combining them with the sum_hills utility. Once you have them, you can use this bias Action to perform the VES optimization part of the method.
These \(N+1\) local basins are used to model the global free energy. In particular, given the conditional probabilities \(P(\mathbf{s}|i)\propto e^{-\beta F_i(\mathbf{s})}\) and the probabilities of being in a given basin \(P_i\), we can write:
\[ e^{-\beta F(\mathbf{s})}\propto P(\mathbf{s})=\sum_{i=0}^N P(\mathbf{s}|i)P_i \, . \]
We use this free energy model and the chosen bias factor \(\gamma\) to build the bias potential: \(V(\mathbf{s})=-(1-1/\gamma)F(\mathbf{s})\). Or, more explicitly:
\[ V(\mathbf{s})=(1-1/\gamma)\frac{1}{\beta}\log\left[e^{-\beta F_0(\mathbf{s})} +\sum_{i=1}^{N} e^{-\beta F_i(\mathbf{s})} e^{-\beta \alpha_i}\right] \, , \]
where the parameters \(\boldsymbol{\alpha}\) are the \(N\) free energy differences (see below) from the \(F_0\) basin.
By default the \(F_i(\mathbf{s})\) are shifted so that \(\min[F_i(\mathbf{s})]=0\) for all \(i=\{0,...,N\}\). In this case the optimization parameters \(\alpha_i\) are the difference in height between the minima of the basins. Using the keyword NORMALIZE
, you can also decide to normalize the local free energies so that \(\int d\mathbf{s}\, e^{-\beta F_i(\mathbf{s})}=1\). In this case the parameters will represent not the difference in height (which depends on the chosen CVs), but the actual free energy difference, \(\alpha_i=\Delta F_i\).
However, as discussed in Ref. [57], a better estimate of \(\Delta F_i\) should be obtained through the reweighting procedure.
The following performs the optimization of the free energy difference between two metastable basins:
cv: DISTANCEATOMS=1,2 ves: VES_DELTA_F ...the pair of atom that we are calculating the distance between.ARG=cvcompulsory keyword the labels of the scalars on which the bias will actTEMP=300temperature is compulsory, but it can be sometimes fetched from the MD engineFILE_F0=fesA.datacompulsory keyword names of files containing local free energies and derivatives.FILE_F1=fesB.datacompulsory keyword names of files containing local free energies and derivatives.BIASFACTOR=10.0compulsory keyword ( default=0 ) the gamma bias factor used for well-tempered target p(s).M_STEP=0.1compulsory keyword ( default=1.0 ) the mu step used for the Omega functional minimizationAV_STRIDE=500compulsory keyword ( default=500 ) number of simulation steps between alpha updatesPRINT_STRIDE=100 ... PRINT( default=10 ) stride for printing to ALPHA_FILEFMT=%gthe format that should be used to output real numbersSTRIDE=500compulsory keyword ( default=1 ) the frequency with which the quantities of interest should be outputFILE=Colvar.datathe name of the file on which to output these quantitiesARG=cv,ves.bias,ves.rctcompulsory keyword the labels of the values that you would like to print to the file
The local FES files can be obtained as described in Sec. 4.2 of Ref. [57], i.e. for example:
cat HILLS* > all_HILLS
plumed sum_hills --hills all_HILLS --outfile all_fesA.dat --mintozero --min 0 --max 1 --bin 100
awk -v n_rep=4 '{if($1!="#!" && $1!="") {for(i=1+(NF-1)/2; i<=NF; i++) $i/=n_rep;} print $0}' all_fesA.dat > fesA.data
The header of both FES files must be identical, and should be similar to the following:
#! FIELDS cv file.free der_cv #! SET min_cv 0 #! SET max_cv 1 #! SET nbins_cv 100 #! SET periodic_cv false 0 0 0
#! FIELDS cv file.free der_cv #! SET min_cv 0 #! SET max_cv 1 #! SET nbins_cv 100 #! SET periodic_cv false 0 0 0
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 |
rct | the reweighting factor c(t) |
work | the work done by the bias in one AV_STRIDE |
ARG | the labels of the scalars on which the bias will act |
FILE_F | names of files containing local free energies and derivatives. The first one, FILE_F0, is used as reference for all the free energy differences.. You can use multiple instances of this keyword i.e. FILE_F1, FILE_F2, FILE_F3... |
BIASFACTOR | ( default=0 ) the gamma bias factor used for well-tempered target p(s). Set to 0 for non-tempered flat target |
M_STEP | ( default=1.0 ) the mu step used for the Omega functional minimization |
AV_STRIDE | ( default=500 ) number of simulation steps between alpha updates |
ALPHA_FILE | ( default=ALPHA ) file name for output minimization parameters |
NUMERICAL_DERIVATIVES | ( default=off ) calculate the derivatives for these quantities numerically |
NORMALIZE | ( default=off ) normalize all local free energies so that alpha will be (approx) Delta F |
NO_MINTOZERO | ( default=off ) leave local free energies as provided, without shifting them to zero min |
DAMPING_OFF | ( default=off ) do not use an AdaGrad-like term to rescale M_STEP |
SERIAL | ( default=off ) perform the calculation in serial even if multiple tasks are available |
MULTIPLE_WALKERS | ( default=off ) use multiple walkers connected via MPI for the optimization |
TEMP | temperature is compulsory, but it can be sometimes fetched from the MD engine |
TG_STRIDE | ( default=1 ) number of AV_STRIDE between updates of target p(s) and reweighing factor c(t) |
TAU_MEAN | exponentially decaying average for alpha (rescaled using AV_STRIDE). Should be used only in very specific cases |
INITIAL_ALPHA | ( default=0 ) an initial guess for the bias potential parameter alpha |
PRINT_STRIDE | ( default=10 ) stride for printing to ALPHA_FILE |
FMT | specify format for ALPHA_FILE |
RESTART | allows per-action setting of restart (YES/NO/AUTO) |