The Molecular Modelling Toolkit
The Molecular Modelling Toolkit (MMTK) is an Open Source program library for molecular simulation applications. In addition to providing ready-to-use implementations of standard algorithms, MMTK serves as a code basis that can be easily extended and modified to deal with standard and non-standard problems in molecular simulations.
The three most common usage patterns of MMTK are
- Writing Python scripts that make use of MMTK functions for standard simulation and modelling applications. This is similar to using other simulation packages with a scripting language (i.e. CHARMM or Gromos), but with the added advantage of having access to lots of useful Python modules from elsewhere. The example section shows what such scripts look like.
- Writing modules that interact closely with MMTK (and perhaps other packages) to solve problems for which no standard solution exists. For example, adding a particular force field term or a particular simulation or analysis algorithm. There is not much competition for MMTK in that domain.
- Writing application programs in Python that use MMTK internally, for users that do not need to know anything about such internals. Those programs can provide easy-to-use graphical interfaces (see e.g. DomainFinder and nMOLDYN) or be integrated into a Web service (see e.g. WEBnm@).
MMTK is developed in and around Python, a high-level object-oriented general-purpose programming language. In fact, MMTK consists of nothing more than a collection of Python modules, most of which written in Python itself, with only a small time-critical part (e.g. energy evaluation) written in C. MMTK applications are Python programs that make use of these modules. Python was chosen because it allows rapid code development and testing, while providing a very convenient C interface for dealing with time-critical calculations.
MMTK is based on an object-oriented model of molecular systems. A system is made up of atoms, molecules, and complexes, all of which are defined in MMTK's chemical database. A molecule, for example, is defined in terms of atoms, functional groups, bonds, force field parameters, etc. It is possible to introduce specialized versions of these objects; for example, MMTK has special support for proteins, which are basically chemical complexes, but can be handled in terms of peptide chains, residues, sidechains etc.
MMTK's functionality includes
- construction of molecular systems, with special support for proteins and nucleic acids
- infinite systems or periodic boundary conditions (orthorhombic elementary cells)
- common geometrical operations on coordinates
- rigid-body fits
- visualization using external PDB and VRML viewers; animation of dynamics trajectories and normal modes
- the AMBER 94 force field, with several options for handling electrostatic interactions
- a deformation force field for fast normal mode calculations on proteins
- energy minimization (steepest descent and conjugate gradient)
- molecular dynamics (with optional thermostat, barostat, and distance constraints)
- normal mode analysis
- trajectory operations
- point charge fits
- molecular surface calculations
- interfaces to other programs
Compared to standard modelling code written in Fortran, MMTK is much easier to understand, extend, and modify. For example, new force fields can be added without touching any existing code, i.e. without any risk of breaking it, and new integrators can be developed without any assumptions about force field implementations. MMTK users can also profit from a large collection of Python code developed for other applications, scientific or otherwise.