next up previous contents index
Next: Selecting atoms Up: Collective Variable-based Calculations (Colvars) Previous: Enabling and controlling the   Contents   Index

Subsections


Defining collective variables

A collective variable is defined by the keyword colvar followed by its configuration options contained within curly braces:


colvar {
  name xi
  $ <$ other options$ >$
  function_name {
    $ <$ parameters$ >$
    $ <$ atom selection$ >$
  }
}

There are multiple ways of defining a variable:

Choosing a component (function) is the only parameter strictly required to define a collective variable. It is also highly recommended to specify a name for the variable:


Choosing a function

In this context, the function that computes a colvar is called a component. A component's choice and definition consists of including in the variable's configuration a keyword indicating the type of function (e.g. rmsd), followed by a definition block specifying the atoms involved (see 9.4) and any additional parameters (cutoffs, ``reference'' values, ...). At least one component must be chosen to define a variable: if none of the keywords listed below is found, an error is raised.

The following components implement functions with a scalar value (i.e. a real number):

Some components do not return scalar, but vector values:

The types of components used in a colvar (scalar or not) determine the properties of that colvar, and particularly which biasing or analysis methods can be applied.

What if ``X'' is not listed? If a function type is not available on this list, it may be possible to define it as a polynomial superposition of existing ones (see 9.3.15), a custom function (see 9.3.16), or a scripted function (see 9.3.17).

In the rest of this section, all available component types are listed, along with their physical units and the ranges of values, if limited. Such limiting values can be used to define lowerBoundary (see 9.3.18) and upperBoundary (see 9.3.18) in the parent colvar.

For each type of component, the available configurations keywords are listed: when two components share certain keywords, the second component references to the documentation of the first one that uses that keyword. The very few keywords that are available for all types of components are listed in a separate section 9.3.12.


Distances


distance: center-of-mass distance between two groups.

The distance {...} block defines a distance component between the two atom groups, group1 and group2.

List of keywords (see also 9.3.15 for additional options):

The value returned is a positive number (in Å), ranging from 0 to the largest possible interatomic distance within the chosen boundary conditions (with PBCs, the minimum image convention is used unless the forceNoPBC option is set).


distanceZ: projection of a distance vector on an axis.

The distanceZ {...} block defines a distance projection component, which can be seen as measuring the distance between two groups projected onto an axis, or the position of a group along such an axis. The axis can be defined using either one reference group and a constant vector, or dynamically based on two reference groups. One of the groups can be set to a dummy atom to allow the use of an absolute Cartesian coordinate.

List of keywords (see also 9.3.15 for additional options):

This component returns a number (in Å) whose range is determined by the chosen boundary conditions. For instance, if the $ z$ axis is used in a simulation with periodic boundaries, the returned value ranges between $ -b_{z}/2$ and $ b_{z}/2$ , where $ b_{z}$ is the box length along $ z$ (this behavior is disabled if forceNoPBC is set).


distanceXY: modulus of the projection of a distance vector on a plane.

The distanceXY {...} block defines a distance projected on a plane, and accepts the same keywords as the component distanceZ, i.e. main, ref, either ref2 or axis, and oneSiteTotalForce. It returns the norm of the projection of the distance vector between main and ref onto the plane orthogonal to the axis. The axis is defined using the axis parameter or as the vector joining ref and ref2 (see distanceZ above).

List of keywords (see also 9.3.15 for additional options):


distanceVec: distance vector between two groups.

The distanceVec {...} block defines a distance vector component, which accepts the same keywords as the component distance: group1, group2, and forceNoPBC. Its value is the 3-vector joining the centers of mass of group1 and group2.

List of keywords (see also 9.3.15 for additional options):


distanceDir: distance unit vector between two groups.

The distanceDir {...} block defines a distance unit vector component, which accepts the same keywords as the component distance: group1, group2, and forceNoPBC. It returns a 3-dimensional unit vector $ \mathbf{d} = (d_{x}, d_{y}, d_{z})$ , with $ \vert\mathbf{d}\vert = 1$ .

List of keywords (see also 9.3.15 for additional options):


distanceInv: mean distance between two groups of atoms.

The distanceInv {...} block defines a generalized mean distance between two groups of atoms 1 and 2, weighted with exponent $ 1/n$ :

$\displaystyle d_{\mathrm{1,2}}^{[n]} \; = \; \left(\frac{1}{N_{\mathrm{1}}N_{\m...
...}\sum_{i,j} \left(\frac{1}{\Vert\mathbf{d}^{ij}\Vert}\right)^{n} \right)^{-1/n}$ (36)

where $ \Vert\mathbf{d}^{ij}\Vert$ is the distance between atoms $ i$ and $ j$ in groups 1 and 2 respectively, and $ n$ is an even integer.

List of keywords (see also 9.3.15 for additional options):

This component returns a number in Å, ranging from 0 to the largest possible distance within the chosen boundary conditions.


Angles


angle: angle between three groups.

The angle {...} block defines an angle, and contains the three blocks group1, group2 and group3, defining the three groups. It returns an angle (in degrees) within the interval $ [0:180]$ .

List of keywords (see also 9.3.15 for additional options):


dipoleAngle: angle between two groups and dipole of a third group.

The dipoleAngle {...} block defines an angle, and contains the three blocks group1, group2 and group3, defining the three groups, being group1 the group where dipole is calculated. It returns an angle (in degrees) within the interval $ [0:180]$ .

List of keywords (see also 9.3.15 for additional options):


dihedral: torsional angle between four groups.

The dihedral {...} block defines a torsional angle, and contains the blocks group1, group2, group3 and group4, defining the four groups. It returns an angle (in degrees) within the interval $ [-180:180]$ . The Colvars module calculates all the distances between two angles taking into account periodicity. For instance, reference values for restraints or range boundaries can be defined by using any real number of choice.

List of keywords (see also 9.3.15 for additional options):


polarTheta: polar angle in spherical coordinates.

The polarTheta {...} block defines the polar angle in spherical coordinates, for the center of mass of a group of atoms described by the block atoms. It returns an angle (in degrees) within the interval $ [0:180]$ . To obtain spherical coordinates in a frame of reference tied to another group of atoms, use the fittingGroup (9.4.2) option within the atoms block. An example is provided in file examples/11_polar_angles.in of the Colvars public repository.

List of keywords (see also 9.3.15 for additional options):


polarPhi: azimuthal angle in spherical coordinates.

The polarPhi {...} block defines the azimuthal angle in spherical coordinates, for the center of mass of a group of atoms described by the block atoms. It returns an angle (in degrees) within the interval $ [-180:180]$ . The Colvars module calculates all the distances between two angles taking into account periodicity. For instance, reference values for restraints or range boundaries can be defined by using any real number of choice. To obtain spherical coordinates in a frame of reference tied to another group of atoms, use the fittingGroup (9.4.2) option within the atoms block. An example is provided in file examples/11_polar_angles.in of the Colvars public repository.

List of keywords (see also 9.3.15 for additional options):


Contacts


coordNum: coordination number between two groups.

The coordNum {...} block defines a coordination number (or number of contacts), which calculates the function $ (1-(d/d_0)^{n})/(1-(d/d_0)^{m})$ , where $ d_0$ is the ``cutoff'' distance, and $ n$ and $ m$ are exponents that can control its long range behavior and stiffness [49]. This function is summed over all pairs of atoms in group1 and group2:

$\displaystyle C (\mathtt{group1}, \mathtt{group2}) \; = \; \sum_{i\in\mathtt{gr...
...}\vert/d_{0})^{n}}{ 1 - (\vert\mathbf{x}_{i}-\mathbf{x}_{j}\vert/d_{0})^{m} } }$ (37)

List of keywords (see also 9.3.15 for additional options):

This component returns a dimensionless number, which ranges from approximately 0 (all interatomic distances are much larger than the cutoff) to $ N_{\mathtt{group1}} \times N_{\mathtt{group2}}$ (all distances are less than the cutoff), or $ N_{\mathtt{group1}}$ if group2CenterOnly is used. For performance reasons, at least one of group1 and group2 should be of limited size or group2CenterOnly should be used: the cost of the loop over all pairs grows as $ N_{\mathtt{group1}} \times N_{\mathtt{group2}}$ . Setting $ \mathtt{tolerance} > 0$ ameliorates this to some degree, although every pair is still checked to regenerate the pairlist.


selfCoordNum: coordination number between atoms within a group.

The selfCoordNum {...} block defines a coordination number similarly to the component coordNum, but the function is summed over atom pairs within group1:

$\displaystyle C (\mathtt{group1}) \; = \; \sum_{i\in\mathtt{group1}}\sum_{j > i...
...}\vert/d_{0})^{n}}{ 1 - (\vert\mathbf{x}_{i}-\mathbf{x}_{j}\vert/d_{0})^{m} } }$ (38)

The keywords accepted by selfCoordNum are a subset of those accepted by coordNum, namely group1 (here defining all of the atoms to be considered), cutoff, expNumer, and expDenom.

List of keywords (see also 9.3.15 for additional options):

This component returns a dimensionless number, which ranges from approximately 0 (all interatomic distances much larger than the cutoff) to $ N_{\mathtt{group1}} \times (N_{\mathtt{group1}} - 1) / 2$ (all distances within the cutoff). For performance reasons, group1 should be of limited size, because the cost of the loop over all pairs grows as $ N_{\mathtt{group1}}^2$ .


hBond: hydrogen bond between two atoms.

The hBond {...} block defines a hydrogen bond, implemented as a coordination number (eq. 37) between the donor and the acceptor atoms. Therefore, it accepts the same options cutoff (with a different default value of 3.3 Å), expNumer (with a default value of 6) and expDenom (with a default value of 8). Unlike coordNum, it requires two atom numbers, acceptor and donor, to be defined. It returns an adimensional number, with values between 0 (acceptor and donor far outside the cutoff distance) and 1 (acceptor and donor much closer than the cutoff).

List of keywords (see also 9.3.15 for additional options):


Collective metrics


rmsd: root mean square displacement (RMSD) from reference positions.

The block rmsd {...} defines the root mean square replacement (RMSD) of a group of atoms with respect to a reference structure. For each set of coordinates $ \{ \mathbf{x}_1(t), \mathbf{x}_2(t), \ldots
\mathbf{x}_N(t) \}$ , the colvar component rmsd calculates the optimal rotation $ U^{\{\mathbf{x}_{i}(t)\}\rightarrow\{\mathbf{x}_{i}^{\mathrm{(ref)}}\}}$ that best superimposes the coordinates $ \{\mathbf{x}_{i}(t)\}$ onto a set of reference coordinates $ \{\mathbf{x}_{i}^{\mathrm{(ref)}}\}$ . Both the current and the reference coordinates are centered on their centers of geometry, $ \mathbf{x}_{\mathrm{cog}}(t)$ and $ \mathbf{x}_{\mathrm{cog}}^{\mathrm{(ref)}}$ . The root mean square displacement is then defined as:

$\displaystyle { \mathrm{RMSD}(\{\mathbf{x}_{i}(t)\}, \{\mathbf{x}_{i}^{\mathrm{...
...{(ref)}} - \mathbf{x}_{\mathrm{cog}}^{\mathrm{(ref)}} \right) \right\vert^{2} }$ (39)

The optimal rotation $ U^{\{\mathbf{x}_{i}(t)\}\rightarrow\{\mathbf{x}_{i}^{\mathrm{(ref)}}\}}$ is calculated within the formalism developed in reference [26], which guarantees a continuous dependence of $ U^{\{\mathbf{x}_{i}(t)\}\rightarrow\{\mathbf{x}_{i}^{\mathrm{(ref)}}\}}$ with respect to $ \{\mathbf{x}_{i}(t)\}$ .

List of keywords (see also 9.3.15 for additional options):

This component returns a positive real number (in Å).


Advanced usage of the rmsd component.

In the standard usage as described above, the rmsd component calculates a minimum RMSD, that is, current coordinates are optimally fitted onto the same reference coordinates that are used to compute the RMSD value. The fit itself is handled by the atom group object, whose parameters are automatically set by the rmsd component. For very specific applications, however, it may be useful to control the fitting process separately from the definition of the reference coordinates, to evaluate various types of non-minimal RMSD values. This can be achieved by setting the related options (refPositions, etc.) explicitly in the atom group block. This allows for the following non-standard cases:

  1. applying the optimal translation, but no rotation (rotateReference off), to bias or restrain the shape and orientation, but not the position of the atom group;
  2. applying the optimal rotation, but no translation (centerReference off), to bias or restrain the shape and position, but not the orientation of the atom group;
  3. disabling the application of optimal roto-translations, which lets the RMSD component describe the deviation of atoms from fixed positions in the laboratory frame: this allows for custom positional restraints within the Colvars module;
  4. fitting the atomic positions to different reference coordinates than those used in the RMSD calculation itself (by specifying refPositions (see 9.4.2) or refPositionsFile (see 9.4.2) within the atom group as well as within the rmsd block);
  5. applying the optimal rotation and/or translation from a separate atom group, defined through fittingGroup: the RMSD then reflects the deviation from reference coordinates in a separate, moving reference frame (see example in the section on fittingGroup (see 9.4.2)).


eigenvector: projection of the atomic coordinates on a vector.

The block eigenvector {...} defines the projection of the coordinates of a group of atoms (or more precisely, their deviations from the reference coordinates) onto a vector in $ \mathbb{R}^{3n}$ , where $ n$ is the number of atoms in the group. The computed quantity is the total projection:

$\displaystyle { p(\{\mathbf{x}_{i}(t)\}, \{\mathbf{x}_{i}^{\mathrm{(ref)}}\}) }...
...athrm{(ref)}} - \mathbf{x}_{\mathrm{cog}}^{\mathrm{(ref)}}) \right)\mathrm{,} }$ (40)

where, as in the rmsd component, $ U$ is the optimal rotation matrix, $ \mathbf{x}_{\mathrm{cog}}(t)$ and $ \mathbf{x}_{\mathrm{cog}}^{\mathrm{(ref)}}$ are the centers of geometry of the current and reference positions respectively, and $ \mathbf{v}_{i}$ are the components of the vector for each atom. Example choices for $ (\mathbf{v}_{i})$ are an eigenvector of the covariance matrix (essential mode), or a normal mode of the system. It is assumed that $ \sum_{i}\mathbf{v}_{i} = 0$ : otherwise, the Colvars module centers the $ \mathbf{v}_{i}$ automatically when reading them from the configuration.

List of keywords (see also 9.3.15 for additional options):

This component returns a number (in Å), whose value ranges between the smallest and largest absolute positions in the unit cell during the simulations (see also distanceZ). Due to the normalization in eq. 40, this range does not depend on the number of atoms involved.


gyration: radius of gyration of a group of atoms.

The block gyration {...} defines the parameters for calculating the radius of gyration of a group of atomic positions $ \{ \mathbf{x}_1(t), \mathbf{x}_2(t), \ldots
\mathbf{x}_N(t) \}$ with respect to their center of geometry, $ \mathbf{x}_{\mathrm{cog}}(t)$ :

$\displaystyle R_{\mathrm{gyr}} \; = \; \sqrt{ \frac{1}{N} \sum_{i=1}^{N} \left\vert\mathbf{x}_{i}(t) - \mathbf{x}_{\mathrm{cog}}(t)\right\vert^{2} }$ (41)

This component must contain one atoms {...} block to define the atom group, and returns a positive number, expressed in Å.

List of keywords (see also 9.3.15 for additional options):


inertia: total moment of inertia of a group of atoms.

The block inertia {...} defines the parameters for calculating the total moment of inertia of a group of atomic positions $ \{ \mathbf{x}_1(t), \mathbf{x}_2(t), \ldots
\mathbf{x}_N(t) \}$ with respect to their center of geometry, $ \mathbf{x}_{\mathrm{cog}}(t)$ :

$\displaystyle I \; = \; \sum_{i=1}^{N} \left\vert\mathbf{x}_{i}(t) - \mathbf{x}_{\mathrm{cog}}(t)\right\vert^{2}$ (42)

Note that all atomic masses are set to 1 for simplicity. This component must contain one atoms {...} block to define the atom group, and returns a positive number, expressed in Å$ ^{2}$ .

List of keywords (see also 9.3.15 for additional options):


dipoleMagnitude: dipole magnitude of a group of atoms.

The dipoleMagnitude {...} block defines the dipole magnitude of a group of atoms (norm of the dipole moment's vector), being atoms the group where dipole magnitude is calculated. It returns the magnitude in elementary charge $ e$ times Å.

List of keywords (see also 9.3.15 for additional options):


inertiaZ: total moment of inertia of a group of atoms around a chosen axis.

The block inertiaZ {...} defines the parameters for calculating the component along the axis $ \mathbf{e}$ of the moment of inertia of a group of atomic positions $ \{ \mathbf{x}_1(t), \mathbf{x}_2(t), \ldots
\mathbf{x}_N(t) \}$ with respect to their center of geometry, $ \mathbf{x}_{\mathrm{cog}}(t)$ :

$\displaystyle I_{\mathbf{e}} \; = \; \sum_{i=1}^{N} \left(\left(\mathbf{x}_{i}(t) - \mathbf{x}_{\mathrm{cog}}(t)\right)\cdot\mathbf{e}\right)^{2}$ (43)

Note that all atomic masses are set to 1 for simplicity. This component must contain one atoms {...} block to define the atom group, and returns a positive number, expressed in Å$ ^{2}$ .

List of keywords (see also 9.3.15 for additional options):


Rotations


orientation: orientation from reference coordinates.

The block orientation {...} returns the same optimal rotation used in the rmsd component to superimpose the coordinates $ \{\mathbf{x}_{i}(t)\}$ onto a set of reference coordinates $ \{\mathbf{x}_{i}^{\mathrm{(ref)}}\}$ . Such component returns a four dimensional vector $ \mathsf{q} = (q_0, q_1,
q_2, q_3)$ , with $ \sum_{i} q_{i}^{2} = 1$ ; this quaternion expresses the optimal rotation $ \{\mathbf{x}_{i}(t)\} \rightarrow
\{\mathbf{x}_{i}^{\mathrm{(ref)}}\}$ according to the formalism in reference [26]. The quaternion $ (q_0, q_1, q_2, q_3)$ can also be written as $ \left(\cos(\theta/2), \,
\sin(\theta/2)\mathbf{u}\right)$ , where $ \theta$ is the angle and $ \mathbf{u}$ the normalized axis of rotation; for example, a rotation of 90$ ^{\circ}$ around the $ z$ axis is expressed as ``(0.707, 0.0, 0.0, 0.707)''. The script quaternion2rmatrix.tcl provides Tcl functions for converting to and from a $ 4\times{}4$ rotation matrix in a format suitable for usage in VMD.

As for the component rmsd, the available options are atoms, refPositionsFile, refPositionsCol and refPositionsColValue, and refPositions.

Note: refPositionsand refPositionsFile define the set of positions from which the optimal rotation is calculated, but this rotation is not applied to the coordinates of the atoms involved: it is used instead to define the variable itself.

List of keywords (see also 9.3.15 for additional options):

Tip: stopping the rotation of a protein. To stop the rotation of an elongated macromolecule in solution (and use an anisotropic box to save water molecules), it is possible to define a colvar with an orientation component, and restrain it through the harmonic bias around the identity rotation, (1.0, 0.0, 0.0, 0.0). Only the overall orientation of the macromolecule is affected, and not its internal degrees of freedom. The user should also take care that the macromolecule is composed by a single chain, or disable wrapAll otherwise.


orientationAngle: angle of rotation from reference coordinates.

The block orientationAngle {...} accepts the same base options as the component orientation: atoms, refPositions, refPositionsFile, refPositionsCol and refPositionsColValue. The returned value is the angle of rotation $ \theta$ between the current and the reference positions. This angle is expressed in degrees within the range [0$ ^{\circ}$ :180$ ^{\circ}$ ].

List of keywords (see also 9.3.15 for additional options):


orientationProj: cosine of the angle of rotation from reference coordinates.

The block orientationProj {...} accepts the same base options as the component orientation: atoms, refPositions, refPositionsFile, refPositionsCol and refPositionsColValue. The returned value is the cosine of the angle of rotation $ \theta$ between the current and the reference positions. The range of values is [-1:1].

List of keywords (see also 9.3.15 for additional options):


spinAngle: angle of rotation around a given axis.

The complete rotation described by orientation can optionally be decomposed into two sub-rotations: one is a ``spin'' rotation around e, and the other a ``tilt'' rotation around an axis orthogonal to e. The component spinAngle measures the angle of the ``spin'' sub-rotation around e.

List of keywords (see also 9.3.15 for additional options):

The component spinAngle returns an angle (in degrees) within the periodic interval $ [-180:180]$ .

Note: the value of spinAngle is a continuous function almost everywhere, with the exception of configurations with the corresponding ``tilt'' angle equal to 180$ ^\circ$ (i.e. the tilt component is equal to $ -1$ ): in those cases, spinAngle is undefined. If such configurations are expected, consider defining a tilt colvar using the same axis e, and restraining it with a lower wall away from $ -1$ .


tilt: cosine of the rotation orthogonal to a given axis.

The component tilt measures the cosine of the angle of the ``tilt'' sub-rotation, which combined with the ``spin'' sub-rotation provides the complete rotation of a group of atoms. The cosine of the tilt angle rather than the tilt angle itself is implemented, because the latter is unevenly distributed even for an isotropic system: consider as an analogy the angle $ \theta$ in the spherical coordinate system. The component tilt relies on the same options as spinAngle, including the definition of the axis e. The values of tilt are real numbers in the interval $ [-1:1]$ : the value $ 1$ represents an orientation fully parallel to e (tilt angle = 0$ ^\circ$ ), and the value $ -1$ represents an anti-parallel orientation.

List of keywords (see also 9.3.15 for additional options):


Protein structure descriptors


alpha: $ \alpha$ -helix content of a protein segment.

The block alpha {...} defines the parameters to calculate the helical content of a segment of protein residues. The $ \alpha$ -helical content across the $ N+1$ residues $ N_{0}$ to $ N_{0}+N$ is calculated by the formula:

$\displaystyle {
\alpha\left(
\mathrm{C}_{\alpha}^{(N_{0})},
\mathrm{O}^{(N_...
...m{N}^{(N_{0}+N)},
\mathrm{C}_{\alpha}^{(N_{0}+N)}
\right)
} \; = \; \; \; \;$     (44)
$\displaystyle \; \; \; \; {
\frac{1}{2(N-2)}
\sum_{n=N_{0}}^{N_{0}+N-2}
\...
... \mathrm{hbf}\left(
\mathrm{O}^{(n)},
\mathrm{N}^{(n+4)}\right) \mathrm{,}
}$      

where the score function for the $ \mathrm{C}_{\alpha} -
\mathrm{C}_{\alpha} - \mathrm{C}_{\alpha}$ angle is defined as:

$\displaystyle { \mathrm{angf}\left( \mathrm{C}_{\alpha}^{(n)}, \mathrm{C}_{\alp...
...eta_{0}\right)^{4} / \left(\Delta\theta_{\mathrm{tol}}\right)^{4}} \mathrm{,} }$ (45)

and the score function for the $ \mathrm{O}^{(n)} \leftrightarrow
\mathrm{N}^{(n+4)}$ hydrogen bond is defined through a hBond colvar component on the same atoms.

List of keywords (see also 9.3.15 for additional options):

This component returns positive values, always comprised between 0 (lowest $ \alpha$ -helical score) and 1 (highest $ \alpha$ -helical score).


dihedralPC: protein dihedral principal component

The block dihedralPC {...} defines the parameters to calculate the projection of backbone dihedral angles within a protein segment onto a dihedral principal component, following the formalism of dihedral principal component analysis (dPCA) proposed by Mu et al.[79] and documented in detail by Altis et al.[2]. Given a peptide or protein segment of $ N$ residues, each with Ramachandran angles $ \phi_i$ and $ \psi_i$ , dPCA rests on a variance/covariance analysis of the $ 4(N-1)$ variables $ \cos(\psi_1), \sin(\psi_1), \cos(\phi_2), \sin(\phi_2)
\cdots \cos(\phi_N), \sin(\phi_N)$ . Note that angles $ \phi_1$ and $ \psi_N$ have little impact on chain conformation, and are therefore discarded, following the implementation of dPCA in the analysis software Carma.[39]

For a given principal component (eigenvector) of coefficients $ (k_i)_{1 \leq i \leq 4(N-1)}$ , the projection of the current backbone conformation is:

$\displaystyle \xi = \sum_{n=1}^{N-1} k_{4n-3} \cos(\psi_n) + k_{4n-2} \sin (\psi_n) + k_{4n-1} \cos (\phi_{n+1}) + k_{4n} \sin(\phi_{n+1})$ (46)

dihedralPC expects the same parameters as the alpha component for defining the relevant residues (residueRange and psfSegID) in addition to the following:

List of keywords (see also 9.3.15 for additional options):


Raw data: building blocks for custom functions


cartesian: vector of atomic Cartesian coordinates.

The cartesian {...} block defines a component returning a flat vector containing the Cartesian coordinates of all participating atoms, in the order $ (x_1, y_1, z_1, \cdots, x_n, y_n, z_n)$ .

List of keywords (see also 9.3.15 for additional options):


distancePairs: set of pairwise distances between two groups.

The distancePairs {...} block defines a $ N_{\mathrm{1}}\times{}N_{\mathrm{2}}$ -dimensional variable that includes all mutual distances between the atoms of two groups. This can be useful, for example, to develop a new variable defined over two groups, by using the scriptedFunction feature.

List of keywords (see also 9.3.15 for additional options):

This component returns a $ N_{\mathrm{1}}\times{}N_{\mathrm{2}}$ -dimensional vector of numbers, each ranging from 0 to the largest possible distance within the chosen boundary conditions.


Geometric path collective variables

The geometric path collective variables define the progress along a path, $ s$ , and the distance from the path, $ z$ . These CVs are proposed by Leines and Ensing[63] , which differ from that[12] proposed by Branduardi et al., and utilize a set of geometric algorithms. The path is defined as a series of frames in the atomic Cartesian coordinate space or the CV space. $ s$ and $ z$ are computed as

$\displaystyle s = \frac{m}{M} \pm \frac{1}{2M} \left( \frac{\sqrt{(\mathbf{v}_1...
...ert^2)}-(\mathbf{v}_1 \cdot \mathbf{v}_3)}{\vert\mathbf{v}_3\vert^2} -1 \right)$ (47)

$\displaystyle z = \sqrt{\left(\mathbf{v}_1 + \frac{1}{2}\left(\frac{\sqrt{(\mat...
...cdot \mathbf{v}_3)}{\vert\mathbf{v}_3\vert^2} -1 \right)\mathbf{v}_4 \right)^2}$ (48)

where $ \mathbf{v}_1 = \mathbf{s}_{m} - \mathbf{z} $ is the vector connecting the current position to the closest frame, $ \mathbf{v}_2 = \mathbf{z} - \mathbf{s}_{m-1}$ is the vector connecting the second closest frame to the current position, $ \mathbf{v}_3 = \mathbf{s}_{m+1} - \mathbf{s}_{m}$ is the vector connecting the closest frame to the third closest frame, and $ \mathbf{v}_4 = \mathbf{s}_m - \mathbf{s}_{m-1}$ is the vector connecting the second closest frame to the closest frame. $ m$ and $ M$ are the current index of the closest frame and the total number of frames, respectively. If the current position is on the left of the closest reference frame, the $ \pm$ in $ s$ turns to the positive sign. Otherwise it turns to the negative sign.

The equations above assume: (i) the frames are equidistant and (ii) the second and the third closest frames are neighbouring to the closest frame. When these assumptions are not satisfied, this set of path CV should be used carefully.


gspath: progress along a path defined in atomic Cartesian coordinate space.

In the gspath {...} and the gzpath {...} block all vectors, namely $ \mathbf{z}$ and $ \mathbf{s}_{k}$ are defined in atomic Cartesian coordinate space. More specifically, $ \mathbf{z} = \left[\mathbf{r}_{1}, \cdots, \mathbf{r}_{n}\right]$ , where $ \mathbf{r}_{i}$ is the $ i$ -th atom specified in the atoms block. $ \mathbf{s}_{k} = \left[\mathbf{r}_{k,1}, \cdots, \mathbf{r}_{k,n}\right]$ , where $ \mathbf{r}_{k,i}$ means the $ i$ -th atom of the $ k$ -th reference frame.

List of keywords (see also 9.3.15 for additional options):


gzpath: distance from a path defined in atomic Cartesian coordinate space.

List of keywords (see also 9.3.15 for additional options):

The usage of gzpath and gspath is illustrated below:


colvar {
  # Progress along the path
  name gs
  # The path is defined by 5 reference frames (from string-00.pdb to string-04.pdb)
  # Use atomic coordinate from atoms 1, 2 and 3 to compute the path
  gspath {
    atoms {atomnumbers { 1 2 3 }}
    refPositionsFile1 string-00.pdb
    refPositionsFile2 string-01.pdb
    refPositionsFile3 string-02.pdb
    refPositionsFile4 string-03.pdb
    refPositionsFile5 string-04.pdb
  }
}
colvar {
  # Distance from the path
  name gz
  # The path is defined by 5 reference frames (from string-00.pdb to string-04.pdb)
  # Use atomic coordinate from atoms 1, 2 and 3 to compute the path
  gzpath {
    atoms {atomnumbers { 1 2 3 }}
    refPositionsFile1 string-00.pdb
    refPositionsFile2 string-01.pdb
    refPositionsFile3 string-02.pdb
    refPositionsFile4 string-03.pdb
    refPositionsFile5 string-04.pdb
  }
}


linearCombination: Helper CV to define a linear combination of other CVs

This is a helper CV which can be defined as a linear combination of other CVs. It maybe useful when you want to define the gspathCV {...} and the gzpathCV {...} as combinations of other CVs.


gspathCV: progress along a path defined in CV space.

In the gspathCV {...} and the gzpathCV {...} block all vectors, namely $ \mathbf{z}$ and $ \mathbf{s}_{k}$ are defined in CV space. More specifically, $ \mathbf{z} = \left[{\xi}_{1}, \cdots, {\xi}_{n}\right]$ , where $ {\xi}_{i}$ is the $ i$ -th CV. $ \mathbf{s}_{k} = \left[{\xi}_{k,1}, \cdots, {\xi}_{k,n}\right]$ , where $ {\xi}_{k,i}$ means the $ i$ -th CV of the $ k$ -th reference frame. It should be note that these two CVs requires the pathFile option, which specifies a path file. Each line in the path file contains a set of space-seperated CV value of the reference frame. The sequence of reference frames matches the sequence of the lines.

List of keywords (see also 9.3.15 for additional options):


gzpathCV: distance from a path defined in CV space.

List of keywords (see also 9.3.15 for additional options):

The usage of gzpathCV and gspathCV is illustrated below:


colvar {
  # Progress along the path
  name gs
  # Path defined by the CV space of two dihedral angles
  gspathCV {
    pathFile ./path.txt
    dihedral {
      name 001
      group1 {atomNumbers {5}}
      group2 {atomNumbers {7}}
      group3 {atomNumbers {9}}
      group4 {atomNumbers {15}}
    }
    dihedral {
      name 002
      group1 {atomNumbers {7}}
      group2 {atomNumbers {9}}
      group3 {atomNumbers {15}}
      group4 {atomNumbers {17}}
    }
  }
}
colvar {
  # Distance from the path
  name gz
  gzpathCV {
    pathFile ./path.txt
    dihedral {
      name 001
      group1 {atomNumbers {5}}
      group2 {atomNumbers {7}}
      group3 {atomNumbers {9}}
      group4 {atomNumbers {15}}
    }
    dihedral {
      name 002
      group1 {atomNumbers {7}}
      group2 {atomNumbers {9}}
      group3 {atomNumbers {15}}
      group4 {atomNumbers {17}}
    }
  }
}


Arithmetic path collective variables

The arithmetic path collective variable in CV space uses the same formula as the one proposed by Branduardi[12] et al., except that it computes $ s$ and $ z$ in CV space instead of RMSDs in Cartesian space. Moreover, this implementation allows different coefficients for each CV components as described in [59]. Assuming a path is composed of $ N$ reference frames and defined in an $ M$ -dimensional CV space, then the equations of $ s$ and $ z$ of the path are

$\displaystyle s = \frac{\sum_{i=1}^{N} i \exp\left(-\lambda\sum_{j=1}^{M} c_j^2...
...}^{N} \exp\left(-\lambda\sum_{j=1}^{M} c_j^2 \left(x_j-x_{i,j}\right)^2\right)}$ (49)

$\displaystyle z = -\frac{1}{\lambda} \ln \left(\sum_{i=1}^{N} \exp\left(-\lambda\sum_{j=1}^{M} c_j^2 \left(x_j-x_{i,j}\right) \right)\right)$ (50)

where $ c_j$ is the coefficient(weight) of the $ j$ -th CV, $ x_{i,j}$ is the value of $ j$ -th CV of $ i$ -th reference frame and $ x_{j}$ is the value of $ j$ -th CV of current frame. $ \lambda $ is a parameter to smooth the variation of $ s$ and $ z$ .


aspathCV: progress along a path defined in CV space.

This colvar component computes the $ s$ variable.

List of keywords (see also 9.3.15 for additional options):


azpathCV: distance from a path defined in CV space.

This colvar component computes the $ z$ variable. Options are the same as in 9.3.10.

The usage of azpathCV and aspathCV is illustrated below:


colvar {
  # Progress along the path
  name as
  # Path defined by the CV space of two dihedral angles
  aspathCV {
    pathFile ./path.txt
    weights {1.0 1.0}
    lambda 0.005
    dihedral {
      name 001
      group1 {atomNumbers {5}}
      group2 {atomNumbers {7}}
      group3 {atomNumbers {9}}
      group4 {atomNumbers {15}}
    }
    dihedral {
      name 002
      group1 {atomNumbers {7}}
      group2 {atomNumbers {9}}
      group3 {atomNumbers {15}}
      group4 {atomNumbers {17}}
    }
  }
}
colvar {
  # Distance from the path
  name az
  azpathCV {
    pathFile ./path.txt
    weights {1.0 1.0}
    lambda 0.005
    dihedral {
      name 001
      group1 {atomNumbers {5}}
      group2 {atomNumbers {7}}
      group3 {atomNumbers {9}}
      group4 {atomNumbers {15}}
    }
    dihedral {
      name 002
      group1 {atomNumbers {7}}
      group2 {atomNumbers {9}}
      group3 {atomNumbers {15}}
      group4 {atomNumbers {17}}
    }
  }
}


Path collective variables in Cartesian coordinates

The path collective variables defined by Branduardi et al. [12] are based on RMSDs in Cartesian coordinates. Noting $ d_i$ the RMSD between the current set of Cartesian coordinates and those of image number $ i$ of the path:

$\displaystyle s = \frac{1}{N-1} \frac{\sum_{i=1}^{N} (i-1) \exp\left(-\lambda d_i^2\right)} {\sum_{i=1}^{N} \exp\left(-\lambda d_i^2\right)}$ (51)

$\displaystyle z = -\frac{1}{\lambda} \ln \left(\sum_{i=1}^{N} \exp(-\lambda d_i^2)\right)$ (52)

where $ \lambda $ is the smoothing parameter.

These coordinates are implemented as Tcl-scripted combinations of rmsd components. The implementation is available as file colvartools/pathCV.tcl, and an example is provided in file examples/10_pathCV.namd of the Colvars public repository. It implements an optimization procedure, whereby the distance to a given image is only calculated if its contribution to the sum is larger than a user-defined tolerance parameter. All distances are calculated every freq timesteps to update the list of nearby images.


Volumetric map-based variables

Volumetric maps of the Cartesian coordinates, typically defined as mesh grid along the three Cartesian axes, may be used to define collective variables. This feature is currently available in NAMD, implemented as an interface between Colvars and GridForces (see section 8). Please cite [34] when using this implementation of collective variables based on volumetric maps.


mapTotal: total value of a volumetric map

Given a function of the Cartesian coordinates $ \phi(\mathbf{x}) = \phi(x, y, z)$ , a mapTotal collective variable component $ \Phi(\mathbf{X})$ is defined as the sum of the values of the function $ \phi(\mathbf{x})$ evaluated at the coordinates of each atom, $ \mathbf{x}_{i}$ :

$\displaystyle \Phi(\mathbf{X}) = \sum_{i=1}^{N}\phi(\mathbf{x}_{i})$ (53)

This formulation allows, for example, to ``count'' the number of atoms within a region of space by using a positive-valued function $ \phi(\mathbf{x})$ , such as for example the number of water molecules in a hydrophobic cavity [34].

Because the volumetric map itself and the atoms affected by it are defined externally to Colvars, this component has a very limited number of keywords. List of keywords (see also 9.3.15 for additional options):

Example: biasing the number of molecules inside a cavity using a volumetric map.

Firstly, a volumetric map that has a value of 1 inside the cavity and 0 outside should be prepared. A reasonable starting point may be obtained, for example, with VMD: using an existing trajectory where the cavity is occupied by solvent and a spatial selection that identifies all the molecules within the cavity, volmap occupancy -allframes -combine max computes the occupancy map as a step function (values 1 or 0), and volutil -smooth ... makes it a continuous map, suitable for use as a MD simulation bias. A PDB file defining the selection (for example, where all water oxygens and ions have an occupancy of 1 and other atoms 0) is also prepared using VMD. Both the map file and the atom selection file are then loaded via the mGridForcePotFile and related NAMD commands:

mGridForce yes
mGridForcePotFile Cavity cavity.dx   # OpenDX map file
mGridForceFile Cavity water-sel.pdb  # PDB file used for atom selection
mGridForceCol Cavity O               # Use the occupancy column of the PDB file
mGridForceChargeCol Cavity B         # Use beta as ``charge'' (default: electric charge)
mGridForceScale Cavity 0.0 0.0 0.0   # Do not use GridForces for this map

The value of mGridForceScale is particularly important, because it determines the GridForces force constant for the ``Cavity'' map. A non-zero value enables a conventional GridForces calculation, where the force constant remains fixed within each run command and the forces on the atoms depend only on their positions in space. However, setting mGridForceScale to zero signals to NAMD that the force acting through the volumetric map may be computed dynamically, as part of a collective-variable biasing scheme. To do so, the map labeled ``Cavity'' needs to be referred to in the Colvars configuration:

cv config "
colvar {
  name n_waters
  mapTotal {
    mapName Cavity # Same label as the GridForce map
  }
}"

The variable ``n_waters'' may then be used with any of the enhanced sampling methods available (9.5): new forces applied to it at each simulation step will be transmitted to the corresponding atoms within the same step.


Multiple volumetric maps collective variables

To study processes that involve changes in shape of a macromolecular aggregate (for example, deformations of lipid membranes) it is useful to define collective variables based on more than one volumetric map at a time, measuring the relative similarity with each map while still achieving correct thermodynamic sampling of each state.

This is achieved by combining multiple mapTotal components, each based on a differently-shaped volumetric map, into a single collective variable $ \xi$ . To track transitions between states, the contribution of each map to $ \xi$ should be discriminated from the others, for example by assigning to it a different weight. The ``Multi-Map'' progress variable [34] uses a weight sum of these components, using linearly-increasing weights:

$\displaystyle \xi(\mathbf{X}) = \sum_{k=1}^{K} \Phi_{k}(\mathbf{X}) = \sum_{k=1}^{K} k \sum_{i=1}^{N}\phi_{k}(\mathbf{x}_{i})$ (54)

where $ K$ is the number of maps employed and each $ \Phi_k$ is a mapTotal component.

Example: transitions between macromolecular shapes using volumetric maps.
A series of map files, each representing a different shape, is loaded into NAMD:
mGridForce yes
for { set k 1 } { $k <= $K } { incr k } {
  mGridForcePotFile Shape_$k map_$k.dx   # Density map of the k-th state
  mGridForceFile Shape_$k atoms.pdb   # PDB file used for atom selection
  mGridForceCol Shape_$k O   # Use the occupancy column of the PDB file atoms.pdb
  mGridForceChargeCol Shape_$k B   # Use beta as ``charge'' (default: electric charge)
  mGridForceScale Shape_$k 0.0 0.0 0.0  # Do not use GridForces for this map
}
The GridForces maps thus loaded are then used to define the Multi-Map collective variable, with coefficients $ \xi_k = k$ [34]:
# Collect the definition of all components into one string
set components "
for { set k 1 } { $k <= $K } { incr k } {
  set components "${components}
  mapTotal {
    mapName Shape_$k
    componentCoeff $k
  }
"
}
# Use this string to define the variable
cv config "
colvar {
  name shapes
  ${components}
}"

The above example illustrates a use case where a weighted sum (i.e. a linear combination) is used to define a single variable from multiple components. Depending on the problem under study, non-linear functions may be more appropriate. These may be defined a custom functions if implemented (see 9.3.16), or scripted functions (see 9.3.17).


Shared keywords for all components

The following options can be used for any of the above colvar components in order to obtain a polynomial combination or any user-supplied function provided by scriptedFunction (see 9.3.15).


Periodic components

The following components returns real numbers that lie in a periodic interval: In certain conditions, distanceZ can also be periodic, namely when periodic boundary conditions (PBCs) are defined in the simulation and distanceZ's axis is parallel to a unit cell vector.

In addition, a custom or scripted scalar colvar may be periodic depending on its user-defined expression. It will only be treated as such by the Colvars module if the period is specified using the period keyword, while wrapAround is optional.

The following keywords can be used within periodic components, or within custom variables (9.3.16), or wthin scripted variables 9.3.17).

Internally, all differences between two values of a periodic colvar follow the minimum image convention: they are calculated based on the two periodic images that are closest to each other.

Note: linear or polynomial combinations of periodic components (see 9.3.15) may become meaningless when components cross the periodic boundary. Use such combinations carefully: estimate the range of possible values of each component in a given simulation, and make use of wrapAround to limit this problem whenever possible.


Non-scalar components

When one of the following components are used, the defined colvar returns a value that is not a scalar number:

The distance between two 3-dimensional unit vectors is computed as the angle between them. The distance between two quaternions is computed as the angle between the two 4-dimensional unit vectors: because the orientation represented by $ \mathsf{q}$ is the same as the one represented by $ -\mathsf{q}$ , distances between two quaternions are computed considering the closest of the two symmetric images.

Non-scalar components carry the following restrictions:

Note: while these restrictions apply to individual colvars based on non-scalar components, no limit is set to the number of scalar colvars. To compute multi-dimensional histograms and PMFs, use sets of scalar colvars of arbitrary size.


Calculating total forces

In addition to the restrictions due to the type of value computed (scalar or non-scalar), a final restriction can arise when calculating total force (outputTotalForce option or application of a abf bias). total forces are available currently only for the following components: distance, distanceZ, distanceXY, angle, dihedral, rmsd, eigenvector and gyration.


Linear and polynomial combinations of components

To extend the set of possible definitions of colvars $ \xi(\mathbf{r})$ , multiple components $ q_i(\mathbf{r})$ can be summed with the formula:

$\displaystyle \xi(\mathbf{r}) = \sum_i c_i [q_i(\mathbf{r})]^{n_i}$ (55)

where each component appears with a unique coefficient $ c_i$ (1.0 by default) the positive integer exponent $ n_i$ (1 by default).

Any set of components can be combined within a colvar, provided that they return the same type of values (scalar, unit vector, vector, or quaternion). By default, the colvar is the sum of its components. Linear or polynomial combinations (following equation (56)) can be obtained by setting the following parameters, which are common to all components:

Example: To define the average of a colvar across different parts of the system, simply define within the same colvar block a series of components of the same type (applied to different atom groups), and assign to each component a componentCoeff of $ 1/N$ .


Custom functions

Collective variables may be defined by specifying a custom function as an analytical expression. The expression is parsed by Lepton, the lightweight expression parser written by Peter Eastman (https://simtk.org/projects/lepton). Lepton produces efficient evaluation routines for the function and its derivatives.

The expression may use the collective variable components as variables, referred to by their user-defined name. Scalar elements of vector components may be accessed by appending a 1-based index to their name, as in the example below. When implementing generic functions of Cartesian coordinates rather than functions of existing components, the cartesian component may be particularly useful. A scalar-valued custom variable may be manually defined as periodic by providing the keyword period, and the optional keyword wrapAround, with the same meaning as in periodic components (see 9.3.13 for details). A vector variable may be defined by specifying the customFunction parameter several times: each expression defines one scalar element of the vector colvar, as in this example:


colvar {
  name custom

  # A 2-dimensional vector function of a scalar x and a 3-vector r
  customFunction cos(x) * (r1 + r2 + r3)
  customFunction sqrt(r1 * r2)

  distance {
    name x
    group1 { atomNumbers 1 }
    group2 { atomNumbers 50 }
  }
  distanceVec {
    name r
    group1 { atomNumbers 10 11 12 }
    group2 { atomNumbers 20 21 22 }
  }
}

Numeric constants may be given in either decimal or exponential form (e.g. 3.12e-2). An expression may be followed by definitions for intermediate values that appear in the expression, separated by semicolons. For example, the expression:
a^2 + a*b + b^2; a = a1 + a2; b = b1 + b2
is exactly equivalent to:
(a1 + a2)^2 + (a1 + a2) * (b1 + b2) + (b1 + b2)^2.
The definition of an intermediate value may itself involve other intermediate values. All uses of a value must appear before that value's definition.

Lepton supports the usual arithmetic operators +, -, *, /, and ^ (power), as well as the following functions:

sqrt Square root
exp Exponential
log Natural logarithm
erf Error function
erfc Complementary error function
sin Sine (angle in radians)
cos Cosine (angle in radians)
sec Secant (angle in radians)
csc Cosecant (angle in radians)
tan Tangent (angle in radians)
cot Cotangent (angle in radians)
asin Inverse sine (in radians)
acos Inverse cosine (in radians)
atan Inverse tangent (in radians)
atan2 Two-argument inverse tangent (in radians)
sinh Hyperbolic sine
cosh Hyperbolic cosine
tanh Hyperbolic tangent
abs Absolute value
floor Floor
ceil Ceiling
min Minimum of two values
max Maximum of two values
delta $ \mathrm{delta}(x) = 1$ if $ x=0$ , 0 otherwise
step $ \mathrm{step}(x) = 0$ if $ x<0$ , 1 if $ x>=0$
select $ \mathrm{select}(x, y, z) = z$ if $ x=0$ , $ y$ otherwise


Scripted functions

When scripting is supported (default in NAMD), a colvar may be defined as a scripted function of its components, rather than a linear or polynomial combination. When implementing generic functions of Cartesian coordinates rather than functions of existing components, the cartesian component may be particularly useful. A scalar-valued scripted variable may be manually defined as periodic by providing the keyword period, and the optional keyword wrapAround, with the same meaning as in periodic components (see 9.3.13 for details).

An example of elaborate scripted colvar is given in example 10, in the form of path-based collective variables as defined by Branduardi et al[12] (Section 9.3.10).


Defining grid parameters

Many algorithms require the definition of boundaries and/or characteristic spacings that can be used to define discrete ``states'' in the collective variable, or to combine variables with very different units. The parameters described below offer a way to specify these parameters only once for each variable, while using them multiple times in restraints, time-dependent biases or analysis methods.


Grid files: multicolumn text format

Many simulation methods and analysis tools write files that contain functions of the collective variables tabulated on a grid (e.g. potentials of mean force or multidimentional histograms) for the purpose of analyzing results. Such files are produced by ABF (9.5.2), metadynamics (9.5.4), multidimensional histograms (9.5.10), as well as any restraint with optional thermodynamic integration support (9.5.1).

In some cases, these files may also be read as input of a new simulation. Suitable input files for this purpose are typically generated as output files of previous simulations, or directly by the user in the specific case of ensemble-biased metadynamics (9.5.4). This section explains the ``multicolumn'' format used by these files. For a multidimensional function $ f(\xi_{1}$ , $ \xi_{2}$ , ...$ )$ the multicolumn grid format is defined as follows:

# $ N_{\mathrm{cv}}$          
# $ \mathtt{min}(\xi_{1})$ $ \mathtt{width}(\xi_{1})$ $ \mathtt{npoints}({\xi_{1}})$ $ \mathtt{periodic}({\xi_{1}})$    
# $ \mathtt{min}(\xi_{2})$ $ \mathtt{width}(\xi_{2})$ $ \mathtt{npoints}({\xi_{2}})$ $ \mathtt{periodic}({\xi_{2}})$    
# ... ... ... ...    
# $ \mathtt{min}(\xi_{N_{\mathrm{cv}}})$ $ \mathtt{width}(\xi_{N_{\mathrm{cv}}})$ $ \mathtt{npoints}({\xi_{N_{\mathrm{cv}}}})$ $ \mathtt{periodic}({\xi_{N_{\mathrm{cv}}}})$    
             
  $ \xi^{1}_{1}$ $ \xi^{1}_{2}$ ... $ \xi^{1}_{N_{\mathrm{cv}}}$ f( $ \xi^{1}_{1}$ , $ \xi^{1}_{2}$ , ..., $ \xi^{1}_{N_{\mathrm{cv}}}$ )  
  $ \xi^{1}_{1}$ $ \xi^{1}_{2}$ ... $ \xi^{2}_{N_{\mathrm{cv}}}$ f( $ \xi^{1}_{1}$ , $ \xi^{1}_{2}$ , ..., $ \xi^{2}_{N_{\mathrm{cv}}}$ )  
  ... ... ... ... ...  
             

Lines beginning with the character ``#'' are the header of the file. $ N_{\mathrm{cv}}$ is the number of collective variables sampled by the grid. For each variable $ \xi_{i}$ , $ \mathtt{min}(\xi_{i})$ is the lowest value sampled by the grid (i.e. the left-most boundary of the grid along $ \xi_{i}$ ), $ \mathtt{width}(\xi_{i})$ is the width of each grid step along $ \xi_{i}$ , $ \mathtt{npoints}(\xi_{i})$ is the number of points and $ \mathtt{periodic}(\xi_{i})$ is a flag whose value is 1 or 0 depending on whether the grid is periodic along $ \xi_{i}$ . In most situations:

Exception: there is a slightly different header in PMF files computed by ABF (9.5.2) or by other biases with an optional thermodynamic integration (TI) estimator (9.5.1). In this case, free-energy gradients are accumulated on an (npoints)-long grid along each variable $ \xi$ : after these gradients are integrated, the resulting PMF is discretized on a grid with (npoints+1) points along $ \xi$ . Therefore, the edges of the PMF's grid extend $ \mathtt{width}/2$ above and below the original boundaries (unless these are periodic). The format of the file's header is otherwise unchanged.

After the header, the rest of the file contains values of the tabulated function $ f(\xi_{1}$ , $ \xi_{2}$ , ... $ \xi_{N_{\mathrm{cv}}})$ , one for each line. The first $ N_{\mathrm{cv}}$ columns contain values of $ \xi_{1}$ , $ \xi_{2}$ , ... $ \xi_{N_{\mathrm{cv}}}$ and the last column contains the value of the function $ f$ . Points are sorted in ascending order with the fastest-changing values at the right (``C-style'' order). Each sweep of the right-most variable $ \xi_{N_{\mathrm{cv}}}$ is terminated by an empty line. For two dimensional grid files, this allows quick visualization by programs such as GNUplot.

Example 1: multicolumn text file for a one-dimensional histogram with lowerBoundary = 15, upperBoundary = 48 and width = 0.1.

# 1        
# 15 0.1 330 0  
           
  15.05 6.14012e-07      
  15.15 7.47644e-07      
  ... ...      
  47.85 1.65944e-06      
  47.95 1.46712e-06      
           

Example 2: multicolumn text file for a two-dimensional histogram of two dihedral angles (periodic interval with 6$ ^\circ$ bins):

           
# 2        
# -180.0 6.0 30 1  
# -180.0 6.0 30 1  
           
  -177.0 -177.0 8.97117e-06    
  -177.0 -171.0 1.53525e-06    
  ... ... ...    
  -177.0 177.0 2.442956-06    
           
  -171.0 -177.0 2.04702e-05    
  ... ... ...    


Trajectory output


Extended Lagrangian

The following options enable extended-system dynamics, where a colvar is coupled to an additional degree of freedom (fictitious particle) by a harmonic spring. This extended coordinate masks the colvar and replaces it transparently from the perspective of biasing and analysis methods. Biasing forces are then applied to the extended degree of freedom, and the actual geometric colvar (function of Cartesian coordinates) only feels the force from the harmonic spring. This is particularly useful when combined with an abf (see 9.5.2) bias to perform eABF simulations (9.5.3).

Note that for some biases (harmonicWalls (see 9.5.7), histogram (see 9.5.10)), this masking behavior is controlled by the keyword bypassExtendedLagrangian (see 9.5). Specifically for harmonicWalls, the default behavior is to bypass extended Lagrangian coordinates and act directly on the actual colvars.


Multiple time-step variables


Backward-compatibility


Statistical analysis

Run-time calculations of statistical properties that depend explicitly on time can be performed for individual collective variables. Currently, several types of time correlation functions, running averages and running standard deviations are implemented. For run-time computation of histograms, please see the histogram bias (9.5.10).


next up previous contents index
Next: Selecting atoms Up: Collective Variable-based Calculations (Colvars) Previous: Enabling and controlling the   Contents   Index
http://www.ks.uiuc.edu/Research/namd/