- There is now some limited IMP-wide gathering of timing
statistics. You can add `--statistics=filename` to the command line
or use the IMP::base::show_timings() function to view of summary of
where IMP has spent time.
- Slack was being used inconsistently (and not always correctly) among
the various containers and restraints. If you had heavily optimized
the slack value for speed, you may want to revisit it.
- class name OwnerPointer was switched to PointerMember, to denote
more clearly a ref-counting pointer that is a class member
- The dependency handling in IMP has been rewritten to simplify it and
fix a bunch of bugs. There are now more checks of correctness, so
behavior that might have silently worked (or not worked) before may
now trigger errors. In particular, restraints/score states must have
access to the IMP::kernel::Model to do much of anything, so either
use constructors that take the model or call
IMP::kernel::ModelObject::set_model(). Also, changing your set of
inputs or outputs without calling
IMP::kernel::ModelObject::set_has_dependencies(false) is now likely
to trigger a check failure (it would just silently do the wrong
- Decorators have been cleaned up to make them behave consistently
regarding IMP::kernel::Particle vs
IMP::kernel::ParticleIndexes. This change shouldn't break existing
code, but decorators should move to the new macros
IMP_DECORATOR_METHODS(), IMP_DECORATOR_SETUP_0() etc.
- The IMP_GRAPH() and IMP_WEIGHTED_GRAPH() macros got an extra
argument describing how to show the vertexes in the graph. They also
now expose a method, eg IMP::kernel::show_as_graphviz() that writes
the graph in graphviz format to an IMP::base::TextOutput.
- Support and rules for deprecating code in IMP have been
updated. There are new macros and instructions how to use them that
should result in much better visibility about changes. See the C++
wiki for IMP for more information. And there is now an encoded
policy of keeping deprecated things around for 1 release after
- IMP is now much more selective about when it invalidates the
dependency graph. See
more information. This change should make evaluation of isolated
restraints much faster in certain situations where they were
unexpectedly slow before.
- IMP::atom::Selection has been completely rewritten as it was very
brittle. The set of particles returned may change in some cases, in
some cases because it was buggy before, in some cases because of new
- Reminder: the IMP_PROTECTED macros didn't work out well, and are now
deprecated. If you had python implementations on top of IMP base
classes that implement protected virtual methods, you may need to
remove a leading `_` on the method name, if you get `Swig director
pure virtual method called IMP::kernel::PairScore::do_get_inputs`
- The generated `cmake` files are no longer store in the
repository. Instead `tools/build/setup_cmake.py` is run after
checkouts and other git events that change the repository tree
(assuming you have run `setup_git.py`).
- Generation of documenation using `doxygen` has been refactored. It
is now done on a per-module bases, via targets like
`IMP.core-doc`. The main advantage is that changes to the doc for a
module can be tested comparatively quickly, just by building that
module's docs. On the down side, docs are no longer quite so heavily
interconnected, so dependencies only work to things that the module
actually depends on.
- The restraint and score state statistics functions were remove from
IMP::Model. They had been broken for quite a while, with no one
complaining. Statistics can be added back easily if requested.
- Added an IMP-specific fork of `git-flow`. It handles things like
`README.md` files when you start and finish feature branches and
provides a tool to nicely update IMP and display the change log. The
main commands of use are `git imp feature start <feature_name>`,
`git imp feature finish <feature_name>`, and `git imp update`. You
may want to remove the `git-flow` lines from your `.git/config` file
as you may accidentally type `git flow` instead of `git imp`. You
need to run `setup_git.py` to set things up.
- [RMF](http://salilab.github.com/rmf) is now included as a git
submodule rather than copied into the IMP repository. You should
rerun `setup_git.py` to make sure submodule stuff is initialized.