Since we haven't had such emails in a while:
- The IMP::base::Flag class was added to simplify adding flags in C++. - The `--log_level` and `--check_level` command line argument now take strings (eg VERBOSE) to specify their values, rather than cryptic (and a bit unstable) numbers. - Command line options are now divided into normal and advanced ones. You do `--help_advanced` to show the advanced ones. - Support for computing Connolly surfaces was added with IMP::algebra::get_connolly_surface(). In addition, there is now IMP::algebra::get_uniform_surface_cover(const IMP::algebra::Sphere3Ds&,double) to sample the surface of a collection of balls. - IMP::atom:: create_simplified_from_volume() was added to create a simplified representation of a hierarchy that preserves the surface are and occupied volume. It uses IMP::algebra::get_simplified_from_volume(). If you want to play with such representations, you can use the rmf_simply application. - IMP::atom::get_rmsd(IMP::atom::Selection, IMP::atom::Selection, const IMP::algebra::Transformation3D&) was deprecated. Use IMP::atom::get_rmsd_transforming_first() instead. - IMP::algebra::get_rmsd() and IMP::algebra::get_rmsd_transforming_first() were added. - The family of macros IMP_BASE_[SMALL,LARGE]_[UNORDERED,ORDERED]_[MAP,SET] have been added (eg IMP_BASE_SMALL_ORDERED_SET ()). They provide platform and boost-version independent ways to take advantage of the best set/map for an application. In particular, they use boost::container::flat_set and kin when available. - IMP::atom::State and IMP::atom::Representation decorators have been added to provide support for multiple states and multiple representation schemes. They are integrated with RMFs and IMP::atom::Selection. See atom/multiresolution.py and atom/multistate.py for examples. - The container imlementations has been cleaned up and simplified a bit. This should not change most usage. - [RMF](http://salilab.github.io/rmf) has been updated. There are a few minor API changes, in addition to a new, faster format (`.rmf3`). - [Eigen](#Eigen) is now included with IMP. - The deprecated function IMP::kernel::Optimizer::set_restraints() was removed. Use IMP::kernel::Optimizer::set_scoring_function() instead. - The deprecated constructor for IMP::kernel::ModelObject that does not take an IMP::kernel::Model was removed. This propagates to constructors IMP::kernel::Restraint, IMP::kernel::ScoreState and kin. Make sure you pass an IMP::kernel::Model as the first constructor argument. Related to this, deprecated functions like get_is_part_of_model(), set_model() were removed as they don't serve any purpose. - The deprecated methods in IMP::kernel::Optimizer that pertain to attribute optimization were removed. Inherit from IMP::kernel::AttributeOptimizer instead if you want to use them in your optimizer. - Some deprecated functionality was removed. If you encounter problems, replace IMP::base::OwnerPointer with IMP::base::PointerMember, find logging stuff in IMP/base/log.h, object in IMP/base/Object.h and random in IMP/base/random.h. - IMP::atom::Chain now uses strings for the chain ids, to be consistent with changes in the PDB. PDB files are written using the first character of the chain string. - Added orientation-dependent SOAP scoring (IMP::score_functor::OrientedSoap and IMP::atom::OrientedSoapPairScore). Orientation-dependent SOAP scores include those that score loops (SOAP-Loop), protein-peptide interfaces (SOAP-Peptide) and proteins (SOAP-Protein). The library files themselves are rather large (~1.5GB) and so are not included with IMP. They can be downloaded separately from http://salilab.org/SOAP/.