Next: Biasing and analysis methods Up: Collective Variable-based Calculations1 Previous: Selecting atoms for colvars:   Contents   Index

Subsections

## Collective variable components (basis functions)

Each colvar is defined by one or more components (typically only one). Each component consists of a keyword identifying a functional form, and a definition block following that keyword, specifying the atoms involved and any additional parameters (cutoffs, reference'' values, ...).

The types of the components used in a colvar determine the properties of that colvar, and which biasing or analysis methods can be applied. In most cases, the colvar returns a real number, which is computed by one or more instances of the following components:

• distance: distance between two groups;
• distanceZ: projection of a distance vector on an axis;
• distanceXY: projection of a distance vector on a plane;
• distanceInv: mean distance between two groups of atoms (e.g. NOE-based distance);
• angle: angle between three groups;
• coordNum: coordination number between two groups;
• selfCoordNum: coordination number of atoms within a group;
• hBond: hydrogen bond between two atoms;
• rmsd: root mean square deviation (RMSD) from a set of reference coordinates;
• eigenvector: projection of the atomic coordinates on a vector;
• orientationAngle: angle of the best-fit rotation from a set of reference coordinates;
• orientationProj: cosine of orientationProj;
• spinAngle: projection orthogonal to an axis of the best-fit rotation from a set of reference coordinates;
• tilt: projection on an axis of the best-fit rotation from a set of reference coordinates;
• gyration: radius of gyration of a group of atoms;
• inertia: moment of inertia of a group of atoms;
• inertiaZ: moment of inertia of a group of atoms around a chosen axis;
• alpha: -helix content of a protein segment.
• dihedralPC: projection of protein backbone dihedrals onto a dihedral principal component.

Some components do not return scalar, but vector values. They can only be combined with vector values of the same type, except within a scripted collective variable.

• distanceVec: distance vector between two groups;
• distanceDir: unit vector parallel to distanceVec;
• cartesian: vector of atomic Cartesian coordinates;
• orientation: best-fit rotation, expressed as a unit quaternion.

In the following, all the available component types are listed, along with their physical units and the limiting values, if any. Such limiting values can be used to define lowerBoundary and upperBoundary in the parent colvar.

### List of available colvar components

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

The distance {...} block defines a distance component, between two atom groups, group1 and group2.
• group1 First group of atoms
Context: distance
Acceptable Values: Block group1 {...}
Description: First group of atoms.
• group2 Second group of atoms
Context: distance
Acceptable Values: Block group2 {...}
Description: Second group of atoms.
• forceNoPBC Calculate absolute rather than minimum-image distance?
Context: distance
Acceptable Values: boolean
Default Value: no
Description: By default, in calculations with periodic boundary conditions, the distance component returns the distance according to the minimum-image convention. If this parameter is set to yes, PBC will be ignored and the distance between the coordinates as maintained internally will be used. This is only useful in a limited number of special cases, e.g. to describe the distance between remote points of a single macromolecule, which cannot be split across periodic cell boundaries, and for which the minimum-image distance might give the wrong result because of a relatively small periodic cell.
• oneSiteSystemForce Measure system force on group 1 only?
Context: distance
Acceptable Values: boolean
Default Value: no
Description: If this is set to yes, the system force is measured along a vector field (see equation (53) in section 10.5.1) that only involves atoms of group1. This option is only useful for ABF, or custom biases that compute system forces. See section 10.5.1 for details.

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.
• main Main group of atoms
Context: distanceZ, distanceXY
Acceptable Values: Block main {...}
Description: Group of atoms whose position is measured.
• ref Reference group of atoms
Context: distanceZ, distanceXY
Acceptable Values: Block ref {...}
Description: Reference group of atoms. The position of its center of mass is noted below.
• ref2 Secondary reference group
Context: distanceZ, distanceXY
Acceptable Values: Block ref2 {...}
Default Value: none
Description: Optional group of reference atoms, whose position can be used to define a dynamic projection axis: . In this case, the origin is , and the value of the component is .
• axis Projection axis (Å)
Context: distanceZ, distanceXY
Acceptable Values: (x, y, z) triplet
Default Value: (0.0, 0.0, 1.0)
Description: The three components of this vector define (when normalized) a projection axis for the distance vector joining the centers of groups ref and main. The value of the component is then . The vector should be written as three components separated by commas and enclosed in parentheses.
• forceNoPBC Calculate absolute rather than minimum-image distance?
Context: distanceZ, distanceXY
Acceptable Values: boolean
Default Value: no
Description: This parameter has the same meaning as that described above for the distance component.
• oneSiteSystemForce Measure system force on group main only?
Context: distanceZ, distanceXY
Acceptable Values: boolean
Default Value: no
Description: If this is set to yes, the system force is measured along a vector field (see equation (53) in section 10.5.1) that only involves atoms of main. This option is only useful for ABF, or custom biases that compute system forces. See section 10.5.1 for details.
This component returns a number (in Å) whose range is determined by the chosen boundary conditions. For instance, if the axis is used in a simulation with periodic boundaries, the returned value ranges between and , where is the box length along (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 oneSiteSystemForce. 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).

#### 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.

#### 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 , with .

#### 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 :

 (36)

where is the distance between atoms and in groups 1 and 2 respectively, and is an even integer. This component accepts the same keywords as the component distance: group1, group2, and forceNoPBC. In addition, the following option may be provided:
• exponent Exponent in equation 36
Context: distanceInv
Acceptable Values: positive even integer
Default Value: 6
Description: Defines the exponent to which the individual distances are elevated before averaging. The default value of 6 is useful for example to applying restraints based on NOE-measured distances.
This component returns a number in Å, ranging from 0 to the largest possible distance within the chosen boundary conditions.

#### 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 . This component accepts the following keyword:
• atoms Group of atoms
Context: cartesian
Acceptable Values: Block atoms {...}
Description: Defines the atoms whose coordinates make up the value of the component. If rotateReference or centerReference are defined, coordinates are evaluated within the moving frame of reference.

#### 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 .

#### 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 . The colvar 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.
• oneSiteSystemForce Measure system force on group 1 only?
Context: angle, dihedral
Acceptable Values: boolean
Default Value: no
Description: If this is set to yes, the system force is measured along a vector field (see equation (53) in section 10.5.1) that only involves atoms of group1. See section 10.5.1 for an example.

#### coordNum: coordination number between two groups.

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

 (37)

This colvar component accepts the same keywords as the component distance, group1 and group2. In addition to them, it recognizes the following keywords:

• cutoff Interaction'' distance (Å)
Context: coordNum
Acceptable Values: positive decimal
Default Value: 4.0
Description: This number defines the switching distance to define an interatomic contact: for , the switching function is close to 1, at it has a value of ( with the default and ), and at it goes to zero approximately like . Hence, for a proper behavior, must be larger than .

• cutoff3 Reference distance vector (Å)
Context: coordNum
Acceptable Values: (x, y, z)'' triplet of positive decimals
Default Value: (4.0, 4.0, 4.0)
Description: The three components of this vector define three different cutoffs for each direction. This option is mutually exclusive with cutoff.

• expNumer Numerator exponent
Context: coordNum
Acceptable Values: positive even integer
Default Value: 6
Description: This number defines the exponent for the switching function.

• expDenom Denominator exponent
Context: coordNum
Acceptable Values: positive even integer
Default Value: 12
Description: This number defines the exponent for the switching function.

• group2CenterOnly Use only group2's center of mass
Context: coordNum
Acceptable Values: boolean
Default Value: off
Description: If this option is on, only contacts between each atoms in group1 and the center of mass of group2 are calculated (by default, the sum extends over all pairs of atoms in group1 and group2). If group2 is a dummyAtom, this option is set to yes by default.

This component returns a dimensionless number, which ranges from approximately 0 (all interatomic distances are much larger than the cutoff) to (all distances are less than the cutoff), or 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 .

#### 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:

 (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.

This component returns a dimensionless number, which ranges from approximately 0 (all interatomic distances much larger than the cutoff) to (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 .

#### 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).

#### 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 , the colvar component rmsd calculates the optimal rotation that best superimposes the coordinates onto a set of reference coordinates . Both the current and the reference coordinates are centered on their centers of geometry, and . The root mean square displacement is then defined as:

 (39)

The optimal rotation is calculated within the formalism developed in reference [19], which guarantees a continuous dependence of with respect to . The options for rmsd are:
• atoms Atom group
Context: rmsd
Acceptable Values: atoms {...} block
Description: Defines the group of atoms of which the RMSD should be calculated. Optimal fit options (such as refPositions and rotateReference) should typically NOT be set within this block. Exceptions to this rule are the special cases discussed in the Advanced usage paragraph below.

• refPositions Reference coordinates
Context: rmsd
Acceptable Values: space-separated list of (x, y, z) triplets
Description: This option (mutually exclusive with refPositionsFile) sets the reference coordinates. If only centerReference is on, the list can be a single (x, y, z) triplet; if also rotateReference is on, the list should be as long as the atom group. This option is independent from that with the same keyword within the atoms {...} block (see 10.3). The latter (and related fitting options for the atom group) are normally not needed, and should be omitted altogether except for advanced usage cases.

• refPositionsFile Reference coordinates file
Context: rmsd
Acceptable Values: UNIX filename
Description: This option (mutually exclusive with refPositions) sets the PDB file name for the reference coordinates to be compared with. The format is the same as that provided by refPositionsFile within an atom group definition.

• refPositionsCol PDB column containing atom flags
Context: rmsd
Acceptable Values: O, B, X, Y, or Z
Description: If refPositionsFile is defined, and the file contains all the atoms in the topology, this option may be povided to set which PDB field is used to flag the reference coordinates for atoms.

• refPositionsColValue Atom selection flag in the PDB column
Context: rmsd
Acceptable Values: positive decimal
Description: If defined, this value identifies in the PDB column refPositionsCol of the file refPositionsFile which atom positions are to be read. Otherwise, all positions with a non-zero value are read.

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 (translateReference 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 decribe 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;
5. applying the optimal rotation and/or translation from a separate atom group, defined through refPositionsGroup: the RMSD then reflects the deviation from reference coordinates in a separate, moving reference frame.

#### 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 , where is the number of atoms in the group. The computed quantity is the total projection:

 (40)

where, as in the rmsd component, is the optimal rotation matrix, and are the centers of geometry of the current and reference positions respectively, and are the components of the vector for each atom. Example choices for are an eigenvector of the covariance matrix (essential mode), or a normal mode of the system. It is assumed that : otherwise, the colvars module centers the automatically when reading them from the configuration.

As for the component rmsd, the available options are atoms, refPositionsFile, refPositionsCol and refPositionsColValue, and refPositions. In addition, the following are recognized:

• vector Vector components
Context: eigenvector
Acceptable Values: space-separated list of (x, y, z) triplets
Description: This option (mutually exclusive with vectorFile) sets the values of the vector components.

• vectorFile PDB file containing vector components
Context: eigenvector
Acceptable Values: UNIX filename
Description: This option (mutually exclusive with vector) sets the name of a PDB file where the vector components will be read from the X, Y, and Z fields. Note: The PDB file has limited precision and fixed point numbers: in some cases, the vector may not be accurately represented, and vector should be used instead.

• vectorCol PDB column used to flag participating atoms
Context: eigenvector
Acceptable Values: O or B
Description: Analogous to atomsCol.

• vectorColValue Value used to flag participating atoms in the PDB file
Context: eigenvector
Acceptable Values: positive decimal
Description: Analogous to atomsColValue.

• differenceVector The -dimensional vector is the difference between vector and refPositions
Context: eigenvector
Acceptable Values: boolean
Default Value: off
Description: If this option is on, the numbers provided by vector or vectorFile are interpreted as another set of positions, : the vector is then defined as . This allows to conveniently define a colvar as a projection on the linear transformation between two sets of positions, A'' and B''. For convenience, the vector is also normalized so that when the atoms are at the set of positions A'' and at the set of positions B''.

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 with respect to their center of geometry, :

 (41)

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

#### 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 with respect to their center of geometry, :

 (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 Å .

#### 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 of the moment of inertia of a group of atomic positions with respect to their center of geometry, :

 (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 Å . The following option may also be provided:
• axis Projection axis (Å)
Context: inertiaZ
Acceptable Values: (x, y, z) triplet
Default Value: (0.0, 0.0, 1.0)
Description: The three components of this vector define (when normalized) the projection axis .

#### orientation: orientation from reference coordinates.

The block orientation {...} returns the same optimal rotation used in the rmsd component to superimpose the coordinates onto a set of reference coordinates . Such component returns a four dimensional vector , with ; this quaternion expresses the optimal rotation according to the formalism in reference [19]. The quaternion can also be written as , where is the angle and the normalized axis of rotation; for example, a rotation of 90 around the 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 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: refPositions and 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.

• closestToQuaternion Reference rotation
Context: orientation
Acceptable Values: (q0, q1, q2, q3)'' quadruplet
Default Value: (1.0, 0.0, 0.0, 0.0) (null'' rotation)
Description: Between the two equivalent quaternions and , the closer to (1.0, 0.0, 0.0, 0.0) is chosen. This simplifies the visualization of the colvar trajectory when samples values are a smaller subset of all possible rotations. Note: this only affects the output, never the dynamics.

Hint: 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 throuh 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 and refPositions, or refPositionsFile, refPositionsCol and refPositionsColValue. The returned value is the angle of rotation between the current and the reference positions. This angle is expressed in degrees within the range [0 :180 ].

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

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

#### 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. This can be defined using the same options as the component orientation: atoms and refPositions, or refPositionsFile, refPositionsCol and refPositionsColValue. In addition, spinAngle accepts the axis option:
• axis Special rotation axis (Å)
Context: tilt, spinAngle
Acceptable Values: (x, y, z) triplet
Default Value: (0.0, 0.0, 1.0)
Description: The three components of this vector define (when normalized) the special rotation axis used to calculate the tilt and spinAngle components.
The component spinAngle returns an angle (in degrees) within the periodic interval .

Note: the value of spinAngle is a continuous function almost everywhere, with the exception of configurations with the corresponding tilt'' angle equal to 180 (i.e. the tilt component is equal to ): 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 .

#### 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 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 : the value represents an orientation fully parallel to e (tilt angle = 0 ), and the value represents an anti-parallel orientation.

#### 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 -helical content across the residues to is calculated by the formula:
 (44)

where the score function for the angle is defined as:

 (45)

and the score function for the hydrogen bond is defined through a hBond colvar component on the same atoms. The options recognized within the alpha {...} block are:
• residueRange Potential -helical residues
Context: alpha
Acceptable Values:  Initial residue number - Final residue number ''
Description: This option specifies the range of residues on which this component should be defined. The colvar module looks for the atoms within these residues named CA'', N'' and O'', and raises an error if any of those atoms is not found.

• psfSegID PSF segment identifier
Context: alpha
Acceptable Values: string (max 4 characters)
Description: This option sets the PSF segment identifier for the residues specified in residueRange. This option is only required when PSF topologies are used.

• hBondCoeff Coefficient for the hydrogen bond term
Context: alpha
Acceptable Values: positive between 0 and 1
Default Value: 0.5
Description: This number specifies the contribution to the total value from the hydrogen bond terms. 0 disables the hydrogen bond terms, 1 disables the angle terms.

• angleRef Reference angle
Context: alpha
Acceptable Values: positive decimal
Default Value: 88
Description: This option sets the reference angle used in the score function (46).

• angleTol Tolerance in the angle
Context: alpha
Acceptable Values: positive decimal
Default Value: 15
Description: This option sets the angle tolerance used in the score function (46).

• hBondCutoff Hydrogen bond cutoff
Context: alpha
Acceptable Values: positive decimal
Default Value: 3.3 Å
Description: Equivalent to the cutoff option in the hBond component.

• hBondExpNumer Hydrogen bond numerator exponent
Context: alpha
Acceptable Values: positive integer
Default Value: 6
Description: Equivalent to the expNumer option in the hBond component.

• hBondExpDenom Hydrogen bond denominator exponent
Context: alpha
Acceptable Values: positive integer
Default Value: 8
Description: Equivalent to the expDenom option in the hBond component.

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

#### dihedralPC: protein dihedral pricipal 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.[53] and documented in detail by Altis et al.[2]. Given a peptide or protein segment of residues, each with Ramachandran angles and , dPCA rests on a variance/covariance analysis of the variables . Note that angles and have little impact on chain conformation, and are therefore discarded, following the implementation of dPCA in the analysis software Carma.[27]

For a given principal component (eigenvector) of coefficients , the projection of the current backbone conformation is:

 (46)

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

• vectorFile File containing dihedral PCA eigenvector(s)
Context: dihedralPC
Acceptable Values: file name
Description: A text file containing the coefficients of dihedral PCA eigenvectors on the cosine and sine coordinates. The vectors should be arranged in columns, as in the files output by Carma.[27]

• vectorNumber File containing dihedralPCA eigenvector(s)
Context: dihedralPC
Acceptable Values: positive integer
Description: Number of the eigenvector to be used for this component.

### Advanced usage and special considerations

#### Periodic components.

The following components returns real numbers that lie in a periodic interval:
• dihedral: torsional angle between four groups;
• spinAngle: angle of rotation around a predefined axis in the best-fit from a set of reference coordinates.
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.

The following keywords can be used within periodic components (and are illegal elsewhere):

• period Period of the component
Context: distanceZ
Acceptable Values: positive decimal
Default Value: 0.0
Description: Setting this number enables the treatment of distanceZ as a periodic component: by default, distanceZ is not considered periodic. The keyword is supported, but irrelevant within dihedral or spinAngle, because their period is always 360 degrees.

• wrapAround Center of the wrapping interval for periodic variables
Context: distanceZ, dihedral or spinAngle
Acceptable Values: decimal
Default Value: 0.0
Description: By default, values of the periodic components are centered around zero, ranging from to , where is the period. Setting this number centers the interval around this value. This can be useful for convenience of output, or to set lowerWall and upperWall in an order that would not otherwise be allowed.
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 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:
• distanceVec: 3-dimensional vector of the distance between two groups;
• distanceDir: 3-dimensional unit vector of the distance between two groups;
• orientation: 4-dimensional unit quaternion representing the best-fit rotation from a set of reference coordinates.
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 is the same as the one represented by , distances between two quaternions are computed considering the closest of the two symmetric images.

Non-scalar components carry the following restrictions:

• Calculation of system forces (outputSystemForce option) is currently not implemented.
• Each colvar can only contain one non-scalar component.
• Binning on a grid (abf, histogram and metadynamics with useGrids enabled) is currently not implemented for colvars based on such components.

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 system forces.

In addition to the restrictions due to the type of value computed (scalar or non-scalar), a final restriction can arise when calculating system force (outputSystemForce option or application of a abf bias). System 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 , multiple components can be summed with the formula:

 (47)

where each component appears with a unique coefficient (1.0 by default) the positive integer exponent (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 (48)) can be obtained by setting the following parameters, which are common to all components:

• componentCoeff Coefficient of this component in the colvar
Context: any component
Acceptable Values: decimal
Default Value: 1.0
Description: Defines the coefficient by which this component is multiplied (after being raised to componentExp) before being added to the sum.

• componentExp Exponent of this component in the colvar
Context: any component
Acceptable Values: integer
Default Value: 1
Description: Defines the power at which the value of this component is raised before being added to the sum. When this exponent is different than 1 (non-linear sum), system forces and the Jacobian force are not available, making the colvar unsuitable for ABF calculations.

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 .

### Colvars as scripted functions of components

In contexts that support scripting, a colvar may be defined as custom scripted function of the values 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.

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.[11] The required Tcl procedures are provided in the colvartools directory.

• scriptedFunction Compute colvar as a scripted function of its components
Context: colvar
Acceptable Values: string
Description: If this option is specified, the colvar will be computed as a scripted function of the values of its components. To that effect, the user should define two Tcl procedures: calc_ scriptedFunction and calc_ scriptedFunction _gradient, both accepting as many parameters as the colvar has components. Values of the components will be passed to those procedures in the order defined by their sorted name strings. Note that if all components are of the same type, their default names are sorted in the order in which they are defined, so that names need only be specified for combinations of components of different types. calc_ scriptedFunction should return one value of type scriptedFunctionType , corresponding to the colvar value. calc_ scriptedFunction _gradient should return a Tcl list containing the derivatives of the function with respect to each component. If both the function and some of the components are vectors, the gradient is really a Jacobian matrix that should be passed as a linear vector in row-major order, i.e. for a function : .

• scriptedFunctionType Type of value returned by the scripted colvar
Context: colvar
Acceptable Values: string
Default Value: scalar
Description: If a colvar is defined as a scripted function, its type is not constrained by the types of its components. With this flag, the user may specify whether the colvar is a scalar or one of the following vector types: vector3 (a 3D vector), unit_vector3 (a normalized 3D vector), or unit_quaternion (a normalized quaternion), or vector (a vector whose size is specified by scriptedFunctionVectorSize). Non-scalar values should be passed as space-separated lists, e.g. 1. 2. 3.''.

• scriptedFunctionVectorSize Dimension of the vector value of a scripted colvar
Context: colvar
Acceptable Values: positive integer
Description: This parameter is only valid when scriptedFunctionType is set to vector. It defines the vector length of the colvar value returned by the function.

Next: Biasing and analysis methods Up: Collective Variable-based Calculations1 Previous: Selecting atoms for colvars:   Contents   Index
http://www.ks.uiuc.edu/Research/namd/