VerMoUTH knows several data structures, most of which describe atoms (or CG beads) and connections between those. As such, these are modelled as mathematical graphs, where the nodes describe the particles, and edges the bonds between these. In addition, these data structures describe the MD parameters and interactions, such as bonds, atom types, angles, etc.


A Molecule is a Graph where nodes are atoms/beads, and edges are the connections between theses (i.e. bonds [1]) Generally, molecules are a single connected components [2]. Interactions are accessible through the interactions attribute. Non-bonded parameters are not fully defined: nodes have an ‘atype’ attribute describing the particle type to be used in an MD simulation, but we don’t store the associated e.g. Lennard-Jones parameters.

Molecules define a few notable convenience methods:

  • merge_molecule(): Add all atoms and interactions from a molecule to this one. Note that this can also be used to add a vermouth.molecule.Block to a molecule! This way you can incrementally build polymers from monomers. This method will always produce a disconnected graph, so be sure to add the appropriate edges afterwards.

  • make_edges_from_interactions(): To generate edges from bond, angle, dihedral, cmap and constraint interactions. This is the only way interactions and their parameters are interpreted in vermouth.


A Block can be seen as a canonical residue containing all atoms and interactions, and where all atom names are correct. A block should be a single connected component, and atom names within a block are assumed to be unique.

Blocks can be defined through Gromacs’ .itp and .rtp file formats.

Blocks define a few notable convenience methods:


A Modification describes how a residue deviates from its associated Block, such as non-standard protonation states and termini. Modifications differentiate between atoms/particles that should already be described by the block and atoms that are only described by the modification.

A modification can add or remove nodes, change node attributes, and add, change, or remove interactions; much like a Link. Note that a modification must always add at least one node. Otherwise there will be no unidentified nodes to be picked up by the processor.

Modifications can be defined through .ff files. See also: Identify modifications.

Force Field

A force field is a collection of Blocks, Links and Modifications. Force fields are identified by their name, which should be unique. Within a force field blocks and modifications should also have unique names.

Note that this is only a subset of a force field in the MD sense: a VerMoUTH force field does not include e.g. non-bonded parameters (only the particle types are included), or functional forms.


A Mapping describes how molecular fragments can be transformed from one force field to another.

Mappings can be provided through [backward] style .map files, or the more powerful (but verbose) .mapping format. See also: Resolution transformation.


T.A. Wassenaar, K. Pluhackova, R.A. Böckmann, S.J. Marrink, D.P. Tieleman, Going Backward: A Flexible Geometric Approach to Reverse Transformation from Coarse Grained to Atomistic Models, J. Chem. Theory Comput. 10 (2014) 676–690. doi:10.1021/ct400617g.