ADAPTIVE_PATH

This is part of the mapping module |

Compute path collective variables that adapt to the lowest free energy path connecting states A and B.

The Path Collective Variables developed by Branduardi and co-workers [21] allow one to compute the progress along a high-dimensional path and the distance from the high-dimensional path. The progress along the path (s) is computed using:

\[ s = i_2 + \textrm{sign}(i_2-i_1) \frac{ \sqrt{( \mathbf{v}_1\cdot\mathbf{v}_2 )^2 - |\mathbf{v}_3|^2(|\mathbf{v}_1|^2 - |\mathbf{v}_2|^2) } }{2|\mathbf{v}_3|^2} - \frac{\mathbf{v}_1\cdot\mathbf{v}_3 - |\mathbf{v}_3|^2}{2|\mathbf{v}_3|^2} \]

In this expression \(\mathbf{v}_1\) and \(\mathbf{v}_3\) are the vectors connecting the current position to the closest and second closest node of the path, respectfully and \(i_1\) and \(i_2\) are the projections of the closest and second closest frames of the path. \(\mathbf{v}_2\), meanwhile, is the vector connecting the closest frame to the second closest frame. The distance from the path, \(z\) is calculated using:

\[ z = \sqrt{ \left[ |\mathbf{v}_1|^2 - |\mathbf{v}_2| \left( \frac{ \sqrt{( \mathbf{v}_1\cdot\mathbf{v}_2 )^2 - |\mathbf{v}_3|^2(|\mathbf{v}_1|^2 - |\mathbf{v}_2|^2) } }{2|\mathbf{v}_3|^2} - \frac{\mathbf{v}_1\cdot\mathbf{v}_3 - |\mathbf{v}_3|^2}{2|\mathbf{v}_3|^2} \right) \right]^2 } \]

Notice that these are the definitions of \(s\) and \(z\) that are used by PATH when the GPATH option is employed. The reason for this is that the adaptive path method implemented in this action was inspired by the work of Diaz and Ensing in which these formula were used [62]. To learn more about how the path is adapted we strongly recommend reading this paper.

- Compulsory keywords

REFERENCE | a pdb file containing the set of reference configurations |

TYPE | ( default=OPTIMAL-FAST ) the manner in which distances are calculated. More information on the different metrics that are available in PLUMED can be found in the section of the manual on Distances from reference configurations |

FIXED | the positions in the list of input frames of the two path nodes whose positions remain fixed during the path optimization |

HALFLIFE | ( default=-1 ) the number of MD steps after which a previously measured path distance weighs only 50% in the average. This option may increase convergence by allowing to "forget" the memory of a bad initial guess path. The default is to set this to infinity |

UPDATE | the frequency with which the path should be updated |

TOLERANCE | ( default=1E-6 ) the tolerance to use for the path updating algorithm that makes all frames equidistant |

FMT | ( default=f ) the format to use for output files |

- Options

NUMERICAL_DERIVATIVES | ( default=off ) calculate the derivatives for these quantities numerically |

SERIAL | ( default=off ) do the calculation in serial. Do not use MPI |

LOWMEM | ( default=off ) lower the memory requirements |

TIMINGS | ( default=off ) output information on the timings of the various parts of the calculation |

DISABLE_CHECKS | ( default=off ) disable checks on reference input structures. |

WFILE | file on which to write out the path |

WSTRIDE | frequency with which to write out the path |

- Examples

The input below provides an example that shows how the adaptive path works. The path is updated every 50 steps of MD based on the data accumulated during the preceding 50 time steps.

d1: DISTANCE ATOMS=1,2 COMPONENTS pp: ADAPTIVE_PATH TYPE=EUCLIDEAN FIXED=2,5 UPDATE=50 WFILE=out-path.pdb WSTRIDE=50 REFERENCE=mypath.pdb PRINT ARG=d1.x,d1.y,pp.* FILE=colvar

In the case above the distance between frames is calculated based on the \(x\) and \(y\) components of the vector connecting atoms 1 and 2. As such an extract from the input reference path (mypath.pdb) would look as follows:

REMARK ARG=d1.x,d1.y d1.x=1.12 d1.y=-.60 END REMARK ARG=d1.x,d1.y d1.x=.99 d1.y=-.45 END REMARK ARG=d1.x,d1.y d1.x=.86 d1.y=-.30 END REMARK ARG=d1.x,d1.y d1.x=.73 d1.y=-.15 END REMARK ARG=d1.x,d1.y d1.x=.60 d1.y=0 END REMARK ARG=d1.x,d1.y d1.x=.47 d1.y=.15 END

Notice that one can also use RMSD frames in place of arguments like those above.