Like any non-trivial object library, MMTK consists of many classes located in a large number of modules. This chapter explains what is where and does what, without going into any detail. Subsequent chapters describe the modules and classes more precisely. Note that the information from the user's guide is not repeated here - before trying to understand how a class works, read the user's guide to find out what it does!
Everyone who wants to modify or extend MMTK is strongly encouraged to read the developer's guide first and then study the source code. However, remember that MMTK is still under development and therefore subject to change. Nothing will be changed without a good reason, of course, and all classes and functions documented in the user's guide will only be changed if absolutely necessary, but methods for internal use may disappear or change in behaviour.
The module mmtk is the one imported by most applications. It consists only of imports from other modules. A stripped-down version, mmtklight contains only the definitions that do not depend on C modules.
Physical units and constants are defined in Units.
The basic chemical objects (atoms, groups, molecules, complexes) are defined in the module ChemicalObjects. They are constructed from database entries, called types, which are defined in the module Database. This module also defines blueprint objects, which represent subobjects in database definitions. Peptide chains and proteins are defined in Protein. The modules whose names end in Environment provide the context for execution of database definition files.
The module Collection defines the classes Collection, PartitionedCollection, and PartitionedAtomCollection. It also defines the mix-in class GroupOfAtoms, which contains the methods that make sense for all objects that contain atoms.
The module Universe defines the universe classes. Data objects pertaining to whole universes, such as configurations, force constant matrices, etc. are defined in Variables.
Basic definitions are in ForceField and EnergyEvaluation. Standard force field terms for empirical force fields are implemented in BondedInteractions and NonBondedInteractions, using the C module _forcefield. The Amber force field is defined in AmberForceField, which uses AmberData to parse the parameter files. The module ForceFields contains simply a collection of all available force fields for easy importing. Useful functions for testing force fields are in ForceFieldTest.
Energy minimizers are defined in Minimization, which uses the C module _minimization. Molecular dynamics integrators are in Dynamics and _dynamics. Normal modes are defined in NormalModes.
The generation of trajectory files and protocol output for minimizing and dynamics is handled in Trajectory and _trajectory. The minimalist system description contained in trajectory files is decoded in Skeleton. Conversion of DCD files (CHARMM/XPlor) to MMTK trajectories is handled by ReadDCD.
Input and output in external file formats (PDB and VRML) is handled in ConfigIO. Visualization, i.e. interfacing to external visualization programs, is handled in Visualization.
Most of these modules contain definitions that are not directly used in MMTK applications: