2.7.8 --> 2.7.9
===============

Improvements:

- Allow a Collection to be constructed from a generator

- Make Amber file parser more tolerant to accept more mod_files

- More pdb_alternative atom names: GROMACS-style OC1/OC2 in
  C-terminal peptide group

- Compile C versions of extension modules if Cython is not installed

Bug fixes:

- Remove long delays when deallocating thread-based
  energy evaluators


2.7.7 --> 2.7.8
===============

Improvements:

- Collections can be used in place of ChemicalObjects as arguments
  to HarmonicDistanceTerm() and Universe.distance().

- MMForceField and its components can be used directly in user code,
  in addition to serving as subclasses (e.g. for AmberForceField).


Bug fixes:

- Building the Spinx documentation now works as part of a build procedure,
  without requiring installation of MMTK.

- No more test case failures on some Linux systems.


2.7.6 --> 2.7.7
===============

New features:

- The Amber12SB force field is implemented in addition to Amber94 and Amber99.

- New restraint term: HarmonicTrapForceField restrains the center of mass
  of an object to a fixed point in space using a spring term.

- HarmonicDistanceRestraint now accepts non-atom objects, applying the
  restraint between their centers of mass. A distance restraint can optionally
  be treated like a chemical bond, suppressing any non-bonded interactions
  between the same pair of atoms.

- The Amber parameter files have been updated to the versions contained
  in AmberTools 12.


Removed features:

- The DPMTA library and its MMTK interface code, implementing the
  multipole method for electrostatic interactions, has been removed.
  The MMTK interface has been unusable for years due to a typo that
  made it crash. No one ever complained, so it seems safe to assume that
  nobody uses it. DPMTA has become an obstacle to the distribution and
  packaging of MMTK because it doesn't have a clear licence.

Improvements:

- The visualization interface under MacOSX and Linux has been modified.
  When no PDBVIEWER is defined, it defaults to the system mechanism for
  opening PDB or VRML files, which is "open" under MacOSX and "xdg-open"
  under Linux.


2.7.5 --> 2.7.6
===============

Improvements:

- Allow unicode strings in filenames.

- New methods precedingResidue() and nextResidue() for peptide and
  nucleotide chains.

- NormalModes: use scipy.linalg if available, don't use symeig
  which is no longer maintained.

- Use PDB chain_id as name for nucleotide chains (just like for peptide
  chains) if segment_id is missing.

- Make read-only trajectories picklable (the pickle contains just the
  file name).

- Added database files for bromine and iodine.

Bug fixes:

- Strip spaces from chemical element names determined from a PDB file.

- Universe attributes of type string could cause MMTK to hang when
  updated or removed.

- Reading the trajectory variable box_size yielded a wrong result
  for trajectories with block_size > 1.


2.7.4 --> 2.7.5
===============

Improvements:

- Adding items to a universe became significantly faster. This is most
  noticeable when opening a trajectory file for a big system.

- New example script NormalModes/conformational_change_analysis.py

- Added plotting to the example script NormalModes/calpha_modes.py

- New subcommand "test" for setup.py runs all the test cases and works
  before installation.

- The default visulization module was changed from VRML to VRML2.

- General cleanup of the code and the installation process. There are many
  fewer warnings now.

- Definition for He added to the database.

Bug fixes:

- NormalModes.effectiveMassAndForceConstant crashed due to a forgotten
  name change in a method call.

- Writing DCD trajectories could crash on 64-bit machines.

- Distance constraints were handled incorrectly in peptide chains
  connected by disulfide bridges.

- Universes using the SPCE forcefield could not be read back from a
  trajectory file.

- Creation of graphics representatios of Collection objects crashed.

- Interators and minimizers could hang if an error occured during
  trajectory output.

- Energy calculations on configurations containing NaN values crashed
  Python with a segment fault.


2.7.3 --> 2.7.4
===============

Improvements:

- MMTK.Dynamics.Heater now accepts negative temperature gradients.

- More comprehensive test suite.

- New example script Visualization/vector_field_chimera.py

Bug fixes:

- Dipole calculation (method dipole) used to crash.

- Methods boundingBox and boundingSphere used to crash.

- Indexing a subset of a trajectory crashed with NumPy.
  (I hope this is the last NumPy-related bug!)

- Replacing residues in a peptide chain could crash.

- Corrections in the manual.


2.7.2 --> 2.7.3
===============

New features:

- Trajectory actions in Cython

- Trajectory generators (MD, minimization) run as a background task
  provide access to their current state in a thread-safe way.

- New method atomIterator() complements atomList() and may become
  more efficient in future versions.


New examples:

- MDintegrator (a simple Velocity Verlet written in Cython)

- Visualization/additional_objects.py

Improvements:

- Documentation updated, completed, and built with Sphinx.

- Universe description string in trajectories made unambiguous.

- Cython replaces Pyrex everywhere in MMTK.

- Name conflicts in the database cause a warning to be printed.


Bug fixes:

- Memory leak in trajectory output removed.

- The force contribution from bond terms was NaN at zero bond length.

- Elastic Network Model force fields now work correctly with subsets.

- A universe is marked as updated when the mass of one of its atoms changes.

- Subspace.RigidMotionSubspace was wrong for linked rigid bodies.

- Internal coordinate objects detected cyclic bond structures in cases
  where there are none.

- Opening a trajectory whose universe contains named objects could fail.


2.7.1 --> 2.7.2
===============

Improvements:

- ParticleProperty objects (including ParticleScalar, ParticleVector,
  and Configuration objects) have a new method selectAtoms. Its argument
  is a function that is called with the property of one particle and returns
  a boolean deciding whether or not that particle is part of the selection.

- CalphaForceField has a new option (version=2) for the pair force constants.
  For reasonable input structures, it is equivalent to the default, version=1.
  It adds a threshold for small nearest-neighbour C-alpha distances: for 
  distances less than 0.37 nm, the force constant does not decrease below
  its value at 0.37 nm. This ensures that the Hessian remains positive
  semi-definite for proteins with unrealistically short C-alpha distances.

- MMTK.Subspae.Subspace has a new method complement() which returns the
  orthogonal complement.

- Two new example scripts:
  -  Miscellaneous/bad_contacts.py
  -  Miscellaneous/two_models.py

- Protein friction constants for Brownian Dynamics (module MMTK.ProteinFriction)
  are calculated with a threshold that assures a minimal value of
  1000/ps. Without this threshold, friction constants could become negative
  for solvent-exposed loops.

Bug fixes:

- The VelocityVerletIntegrator could crash, or produce NaN results,
  for systems with distance constraints and a thermostat but no barostat.

- All examples now work with recent releases of NumPy.

- Installation could break on systems whose C compiler's sizeof returns
  another type than "int".

- Trajectory actions of type "function" could crash integrators.


2.7.0 --> 2.7.1
===============

Improvements:

- The identification of protonation states when creating molecules from a
  PDB file now takes into account the common situation of crystallographic
  PDB files that contain no hydrogens at all. In that case, the most frequent
  protonation is used for each individual residue.

- Ewald summation works for non-orthogonal universes.

Bug fixes:

- Universe.distanceVector raised an exception when called with the optional
  configuration argument and for an InfiniteUniverse.

- MMTK.Universe.contiguousObjectOffset could crash when input arrays
  do not use contiguous storage (very unlikely in normal MMTK usage)

- NumPy compatibility problem: indexing trajectory variables did not
  work with indices coming from a NumPy array.

- Removal of objects from a universe (e.g. by calling replaceResidue()
  on a biopolymer chain) could cause incorrect atom indices in the
  universe.

- A force field containing more than one restraint term did not permit
  the retrieval of the evaluator parameters.


2.5.25 --> 2.7.0
================

Improvements:

- Better support of pickle and cPickle. Until now, MMTK's specialized pickler
  had to be used to pickle MMTK's chemical objects. From this version, the
  standard pickler and unpickler can be used as well, although MMTK's
  pickler is more efficient in terms of pickle size and memory use of
  unpickled objects.

- AtomReference objects implement the rich comparison protocol.

Bug fixes:

- The use of force field terms implemented in Python with an integrator
  or minimizer crashed Python on some platforms.

- Modifying a universe after initializing its velocities could lead
  to an infinite recursion.

- Reading a ParticleTrajectory for atoms outside of the trajectory's
  universe now raises an exception.

- Fixed PDB names of oxygens in phosphate groups of DNA

- Added missing database file MMTK/Database/Groups/lysine_neutral_noh


2.5.24 --> 2.5.25
=================

Improvements:

- General code revision

- Conversion of docstrings to epytext

- NumPy 1.2 compatibility fixes

- AtomCluster objects have a default name (the empty string)

- PDBMoleculeFactory guarantees that ADP tensors are exactly symmetric

- New method Trajectory.flush()


Bug fixes:

- Dihedral restraints lead to a segmentation fault.

- Dihedral restraints for angles close to pi/-pi caused instabilities.

- Multiple assignments to the same attribute of a universe lead to
  all the objects being added to the universe, with the last assignment
  defininge the value of the attribute. For consistency with assignment
  semantics, an assignment now removes the previous value of the attribute
  from the universe.

- Under certain conditions, nucleic acid chains in PDB files were
  wrongly identified as peptide chains.

- Wrong import in MMTK.InternalCoordinates

- Visualization of periodic universes with undefined atom positions
  didn't work.

- Creation of AtomCluster objects from PDB files was sometimes 
  incomplete (mission positions)

- Opening a trajectory with undefined atom positions lead to a crash.


2.5.23 --> 2.5.24
=================

License change: MMTK is now distributed under the CeCILL-C license,
which is an adaptation of the LGPL to French law. The previously used
CeCILL license, similar to the GPL, was considered too restrictive.

New features:

- PDBConfiguration: new method createUnitCellUniverse() creates an empty
  universe that has the shape of the unit cell from the PDB file.

- PDBConfiguration: new method asuToUnitCell() applies crystallographic
  symmetry operations to the molecules in the asymmetric unit.

- PDBConfiguration: accept file objects as well as file names.


Improvements:

- The residue name list in Scientific.IO.PDB is now synchronized with the
  one in MMTK, meaning that all residues defined as such in MMTK will
  also be recognized when reading PDB files.


Bug fixes:

- NormalModes objects handle temperature=None correctly when calculating
  fluctuations.

- PDBMoleculeFactory now works with PDB configurations that have no
  symmetry information.

- Opening a trajectory for reading could crash depending on the force field
  used in the system.

- Proteins with disulphide bonds between chains had an inconsistent
  internal representation that would cause a crash when writing
  to a PDB file.

- More alternative PDB atom names for ribose.

- Fixed installation with NumPy under Windows.


2.5.22 --> 2.5.23
=================

Bug fixes:

- NumPy compatibility fixes.

- Residue name conflicts were not handled correctly in PDBMoleculeFactory.

- VMD support in MMTK.Visualization didn't work under Windows.

- ParallelepipedicPeriodicUniverse.largestDistance() returned wrong values.

- Cell parameter handling in ParallelepipedicPeriodicUniverse was fixed.

- LennardJonesForceField would not initialize correctly in rare circumstances.

- Fixed setup.py to work with ScientificPython < 2.7.8.


Improvements:

- Better handling of add-on forcefields in trajectory descriptions.

- Support for atom-dependent force fields.

- Atom and residue filters were added to PDBMoleculeFactory.


2.5.21 --> 2.5.22
=================

Bug fixes:

- The Amber atom type of HD in N-terminal proline was wrong.

- Make CYM a known amino acid residue (useable in PDB files).

- Universe.randomPoint() returned points shifted by half the box size.

- When opening a PDB file in a PDB viewer fails under Windows, the
  error message given mentioned VRML instead of PDB.

Improvements:

- Hydrogen placement extended to more situations.

- Universe objects have a few new methods introduced for CDTK compatibility.


2.5.20 --> 2.5.21
=================

Incompatible changes:

- PDB.PDBConfiguration stores atom positions and temperature factors
  (isotropic and anisotropic) in internal units (nm, nm**2) rather than
  in PDB units (Ang, Ang**2).

  Scripts that access these parameters directly must be updated!

New features:

- New module PDBMoleculeFactory permits to work with molecule objects
  that represent exactly the contents of a PDB file.

Improvements:

- The universe method contiguousObjectOffset behaves more reasonably
  for Collection arguments. It doesn't try to make the whole Collection
  contiguous, which for large Collections is impossible anyway.

- New method Universe.configurationDifference.

- PDB.PDBConfiguration: new attributes basis and reciprocal_basis
  describe the crystallographic unit cell and the reciprocal lattice
  cell.

- New method ParticleTensor.trace.

- Additional pressure units kbar, MPa and GPa in module Units.

Bug fixes:

- Hierarchical molecule definitions (using groups) in a MoleculeFactory
  lacked the bonds from the subgroups.

- HarmonicForceField now works correctly with periodic boundary conditions.

- NumPy compatibility fixes.


2.5.19 --> 2.5.20
=================

New features:

- ParallelepipedicPeriodicUniverse makes it possible to work with
  non-orthogonal universes that are periodic in three dimensions.
  At the moment, energy evaluation is slow (the nonbonded list
  iterates over all atom pairs), and the reciprocal part of the Ewald
  sum is not yet implemented.

- When the method view() is called on a universe object that represents a
  periodic universe, the simulation box is shown as twelve lines
  representing its edges, if VMD has been defined as PDBVIEWER.

- New force field for C-alpha models of proteins: AnisotropicNetworkForceField.
  This is very similar to DeformationForceField, the only difference being
  that the pair force constant as a function of the pair distance is a step
  function rather than an exponential.

Modifications:

- The method Universe.configuration() no longer folds the atomic coordinates
  into the central box of a periodic universe. Sometimes this is not desired,
  and when it it, it can always be achieved with an explicit call to
  Universe.foldCoordinatesIntoBox().

Improvements:

- The methods that perform calculations on normal modes now all take
  an optional argument first_mode (default: 6) that defines the first
  mode to be taken into account.

- Database entries for C- and N-terminal neutral lysine.

- More unt tests.

Bug fixes:

- When Configuration objects were copied, the cell parameters were not copied.
  The copy contained the cell parameters of the current configuration of the
  universe instead.

- Nonbonded list generation for periodic universes could in rare cases
  miss atom pairs inside the cutoff.

- Multi-threaded energy evaluation got stuck for more than two threads.

- CompoundForceField objects could not be pickled.

- Dihedral energy terms were wrong for phase offsets other than
  0 and pi. Note: this has no incidence on AMBER and OPLS force fields
  because they use only offsets of 0 and pi.

- MoleculeFactory.retrieveMolecule had a left-over print statement.

- TrajectoryViewer crashed when single-precision trajectories had
  a discontinuous time axis.

- The charges for the Amber force field in the database files for nucleotides
  were lacking the last digit.

- NumPy compatibility fixes.


2.5.18 --> 2.5.19
=================

New features:

- PDB.PDBConfiguration contains crystallographic information read from the
  PDB file: the edge lengths of the cell (a, b, c, in units of nm), the
  unit cell angles (alpha, beta, gamma, in units of radians),
  the space group (space_group, a string), the crystallographic
  symmetry transformations corresponding to the space group
  (cs_transformations, a list of transformation objects), and the
  non-crystallographic symmetry transformations (ncs_transformations,
  a list of transformation objects). The transformations are transformed
  to Cartesian coordinates, so they can be applied directly to the
  atom positions.
  This information is available only if ScientificPython >= 2.7.5 is
  installed.

Improvements:

- Improved NumPy compatibility.

- Use the symeig package for normal modes if it is installed.

- universe.configuration() has been accelerated. The speedup can be
  very important (a factor of ten), but in most situations it is rather
  modest.

- AMBER atom types are handled as case-sensitive, as is done by the
  AMBER program.

- Better identification of protonation states in PDB files that contain
  hydrogens.


2.5.17 --> 2.5.18
=================

Bug fixes:

- The module lapack_mmtk that consisted of CLAPACK2 code and caused
  compilation problems with recent GCC versions was removed. Instead,
  CLAPACK3 routines from Numeric/numpy are used. They are also faster,
  but use more working memory.


2.5.16 --> 2.5.17
=================

Bug fixes:

- PartitionedCollection.selectShell() used wrong distance criteria

- Fixed iteration over force constant matrices > 5 GB

- Improved NumPy compatibility

- AtomCluster objects were not correctly written to trajectory files

- Compilation/linking issues under Fedora 6 (GCC 4.1)

Improvements:

- New atom definitions and updates to existing ones to include
  scattering lengths

- Methods setBondAttributes and clearBondAttributes available also
  on complexes (and thus proteins)

New features:

- Method anisotropicFluctuations for normal modes.

2.5.15 --> 2.5.16
=================

Bug fixes:

- Removed the dependency on Scientific 2.7.2 introduced into Random.py.
  MMTK 2.5.16 should again work with ScientificPython > 2.5.

- Updated README

2.5.14 --> 2.5.15
=================

New features:

- New method energyEvaluatorTerms() on universes. It returns a data structure
  (dictionary of dictionaries) that contains all the force field parameters
  for the given universe. It can be used to use MMTK as an energy term
  generator for other simulation programs.

- There is a first draft for an interface to the CCPN data model. Since the
  data model itself is still evolving, changes to the MMTK interface are
  very likely as well.

- New method GroupOfAtoms.normalizingTransformation.

Improvements:

- MMTK should now work with NumPy as an alternative to Numeric, though this
  combination still requires a lot of testing. See README for installation
  instructions.

Bug fixes:

- Minor bug fixes in MMTK.ProteinFriction and MMTK.NormalModes.BrownianModes.


2.5.13 --> 2.5.14
=================

Bug fixes:

- MMTK.NormalModes.Core.reduceToRange() didn't work correctly for
  VibrationalModes.
- MMTK.Subspace.RigidMotionSubspace could fail for some object collections.
- Various 64-bit issues.
- Crashes at termination of Python when running under Python 2.5.
- Molecule creation through MoleculeFactory didn't work.

Improvements:

- MMTK.PDB.PDBConfiguration accepts optional arguments for model and
  alternate code.
- The C modules are adapted to the new 64-bit features in Python 2.5.
- Installation on Linux makes CLAPACK code compile correctly with GCC 4.
- Improved handling of PDB residues with non-unique atom names.
- Trajectory files contain a netCDF attributes "Conventions" that identifies
  them as MMTK trajectories.

2.5.12 --> 2.5.13
=================

License change: MMTK is now distributed under the CeCILL license. See
LICENSE (English) or LICENCE (French) for the license text, or
www.cecill.info for more information. In short, CeCILL is an OpenSource
license based on French law. It is compatible with the GPL, so the change
from GPL to CeCILL should not make a difference in practice.


2.5.11 --> 2.5.12
=================

New features:

- MMTK.Geometry.Box has new method cornerPoints() and implements
  intersectWith() for box-box-intersections.

2.5.10 --> 2.5.11
=================

Bug fixes:

- Some pickle files from pre-2.5 could not be read any more.
- MMTK_energy_term.c wouldn't compile with GCC 4, it has been regenerated
  with a corrected Pyrex

2.5.9 --> 2.5.10
================

Bug fixes:

- MMTK.Proteins.PeptideChain.replaceResidue() did not update the atom list
  of the universe.

- Compiler errors with gcc 4.0

Changes:

- Module "Collection" is now named "Collections" to avoid confusion with the
  class "Collection". Application code should not import that module directly,
  so there should be no compatibility issues.

2.5.8 --> 2.5.9
===============

Improvements:

- Subspace.RigidMotionSubspace avoids the costly SVD calculation by
  constructing an orthonormal basis immediately.
- Src/lapack_subset.c should compile with gcc 4 now.
- MMTK.Proteins.PeptideChain.replaceResidue() could only be used prior
  to the inclusion of the chain into a protein. Now it can be used later
  as well, permitting mutations.

2.5.7 --> 2.5.8
===============

Bug fix:

- Bugs concerning storing certain force field terms in trajectory descriptions.
- Universe descriptions didn't contain distance constraints in AtomCluster
  objects.

2.5.6 --> 2.5.7
===============

New features:

- Support for force field development in Python

2.5.5 --> 2.5.6
===============

New features:

- Support for force field development with Pyrex.

Bug fixes:

- LAPACK error -13 with certain normal mode and subspace operations fixed.
- MMTK.Proteins.Residue.phiPsi() could fail for proline residues.

2.5.4 --> 2.5.5
===============

New features:

- New module MoleculeFactory permits the construction of molecules
  from Python code, without requiring database entries.

- Any object can be written to an XML file that uses CML conventions
  as much as possible, the method to call is writeXML(). These files
  can also be read in using XML.XMLMoleculeFactory.

Bug fixes:

- A few C modules crashed on Opteron systems running Linux in 64 bit mode.


2.5.3 --> 2.5.4
===============

New features:

- Reorganization of the normal mode module into a package providing
  vibrational, energetic, and Brownian normal modes.
- New module MMTK.ProteinFriction to go with Brownian modes.


2.4.2 --> 2.5.3
===============

New features:

- Amber 99 force field
- New module MMTK.InternalCoordinates
- New methods phiAngle, psiAngle, chiAngle in MMTK.Proteins.Residue


2.4.1 --> 2.4.2
===============

Bug fixes:

- TrajectorySet with a list of tuples as argument would crash.


2.4 --> 2.4.1
=============

Bug fixes:

- A bug in Dynamics.RotationRemover could destabilize an MD run.
- Visualization of periodic universes could produce strange
  results (some molecules out of the box)

Portability:

- MMTK now compiles without errors under Windows using Microsoft's
  VisualStudio. It should still compile with MinGW, of course.


2.2 --> 2.4
===========

New features:

- Interface to PyMOL. Running an MMTK script from within PyMOL automatically
  makes all visualization use PyMOL. For more explicit control, see the
  module MMTK.PyMol.

Bug fixes:

- Rotation removal during simulation had some wrong formulas.

- Compound force fields could not be used in trajectory generation.

- Wrong forces from Ewald reciprocal when run with more than one thread.


2.1.3 --> 2.2
=============

New module:

- MolecularSurface, a reimplementation by Peter McCluskey, which does
  not have the license restrictions of the NSC code. The NSC-based
  MolecularSurface (which according to Peter is faster and more
  accurate) will remain available as an add-on that replaces the
  standard module.

New features:

- New method "rotateAroundAxis()" in class GroupOfAtoms.

- New protein model "polar_oldopls", which defines polar
  hydrogens according to the old OPLS conventions. The
  model "polar" follows the new OPLS conventions (i.e. includes
  the hydrogens on aromatic rings).

- TrajectorySet class permits the treatment of a sequence of
  trajectory files as a single trajectory.

Bug fixes:

- Nonbonded list updated could crash for non-periodic universes
  under certain (rare) circumstances.

- Method "normalizeConfiguration" sometimes performed a reflection
  in addition to rotation and translation.

- Multi-threaded Ewald summation tended to hang after a couple of
  energy evaluations.

2.1.2 --> 2.1.3
===============

New features:

- New method "contiguousObjectConfiguration" for universes.

- Three independent scale factors (bonded, Lennard-Jones, electrostatic)
  can be specified for the Amber force field, all are 1. by default.

Improvements:

- Snapshots can now specify arbitrary energy terms and pressure
  (pressure should have worked before as well, but didn't).

Bug fixes:

- The Amber94 charges for the N-terminal versions of
  THR, ARG, HIP, and LYS in the MMTK database were wrong,
  due to mistakes in early versions of the Amber parameter
  files from which the database entries were generated.
  For more information see
      http://www.amber.ucsf.edu/amber/bugfixes41.html
  and then bugfix.76 and bugfix.91.

- molecule.view() failed for non-protein molecules (this bug
  was introduced in 2.1.2).

- RigidBodyTrajectory generation crashed due to a typo.

- ParticleTrajectory reads from trajectories with block_size > 1
  could return wrong data.


2.1.1 --> 2.1.2
===============

New features:

- The TrajectoryViewer tool (in Tools/TrajectoryViewer) was extended
  by normal mode projections for proteins.

- The structure of trajectory files can be influenced by specifying
  a "block size", which can be used to optimize I/O performance on
  very large files.

- Reading of single-atom and rigid-body trajectories has been
  optimized.


Bug fixes:

- The functions MMTK.Biopolymers.defineAminoAcidResidue and
  MMTK.Biopolymers.defineNucleicAcidResidue didn't work.

- The method MMTK.Collection.GroupOfAtoms.findTransformationAsQuaternion
  returned randomly one of the two equivalent quaternions that desribe
  the rigid-body rotation. This doesn't matter for most purposes, but
  it creates non-continuous quaternion trajectories when applied to a
  sequence of configurations. The method has been changed to return
  the quaternion that has a positive real part.

- Rigid-body trajectories (in module Trajectory) were wrong in certain
  circumstances.


2.1.0 --> 2.1.1
===============

Modifications:

- Improved load balance for shared memory parallelization.

- The united-atom models for amino acids were changed from Amber 91
  conventions to OPLS by removing the fake "lone pair" atoms.
  Note that there was never proper support for lone pair atoms, so
  this model wasn't functional, and therefore nothing should be
  broken by this change. Now the united-atom model is actually
  fully usable together with the OPLS force field.
  (Thanks to Krzysztof Murzyn for fixing this!)

Additions:

- Basic MPI support. Only energy evaluation has been parallelized,
  using a data-replication approach. All processors execute the same
  code and cooperate only during energy evaluation. See
  the Example MPI/md.py for more information.

- New force fields: HarmonicForceField, CalphaForceField, SPCEForceField.
  The first two are designed for proteins, the last one is only for
  water.


2.0 --> 2.1.0
=============

Bug fixes:

- Addition of force fields didn't work when one of the terms was
  already a compound force field.

- Memory allocation bug in DCD output.

- Restarting NPT dynamics simulations didn't work due to a reported
  universe mismatch. This was caused by the different box size.

- MMTK.DCD.writeDCDPDB produced a PDB file with non-contiguous molecules for
  periodic universes.

- In the electrostatic options for the Amber force field, the "screened"
  option was misinterpreted as "ewald".

Modifications:

- The method objectList() for collections and universes now takes
  an optional argument specifying a class; only the objects corresponding
  to this class are returned. This permits a simple identification of
  proteins etc.

- The universe description that is stored in a trajectory now contains
  the force field and environment objects (thermostats and barostats).

- Optional name argument for C evaluator objects for bonded
  interactions.

Additions:

- Thread support.

- Module MMTK.ForceFields.Restraints.

- New function MMTK.DCD.writeVelocityDCDPDB for exporting velocities
  to velocity DCD files.

- New method pairIndices for nonbonded list objects.


2.0b1 --> 2.0
=============

Bug fixes:

- Subtraction of a ParticleVector from a Configuration returned a
  ParticleVector (now a Configuration).

- The Amber atom types for two hydrogens in proline were wrong.


Additions:

- group definitions for neutral versions of aspartic acid, glutamic
  acid, and lysine  (provided by Alan Grossfield)
