The Molecular Modeling 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.

  • 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, 99, 12SB, 14SB) and OPLS force fields, with several options for handling electrostatic interactions
  • two Elastic Network Model force fields
  • 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, in particular for visualization

Compared to standard modelling code written in Fortran or C, 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.

Note: The scientific Python ecosystem is changing at a rapid pace, without maintaining compatibility with older versions. Since the beginning of MMTK development in 1996, there have been important changes to the Python language itself between Python 2.7 and Python 3, and also a large number of smaller incompatible changes to the NumPy library that MMTK depends on. MMTK has not been adapted to these changes, because we do not have sufficient resources for software development. Therefore MMTK can be used only with Python 2.7 and NumPy 1.8, but not with later releases of either software.

For downloading MMTK and for installation instructions, see the MMTK code repsitory.