Lots of nice improvements recently.
IMP::ScoreStates are further hidden. Namely, IMP::core::RigidBody
constructures the needed score states internally, doing away with the
need for the create functions (which have been done away with). In
addition there are new decorators IMP::core::Cover and
IMP::core::Centroid which manage their respective score states,
further doing away with more create methods. The hierarchy-based
create mehtod for rigid bodies has been moved to the atom module and
is called IMP::atom::rigid_body_setup_hierarchy().
IMP::em::read_map() will figure out the file type to use automatically
from the extension. Other such methods should follow suite.
A class IMP::core::StructureSet has been added to provide a convenient
way to manage solutions of optimization runs.
IMP::core::RigidBodyMover now takes its angle argument in radians and
is documented as such.
IMP::core::ClosePairsScoreState and
IMP::core::CloseBipartitePairsScoreState have been replaced by
IMP::core::ClosePairContainer
andIMP::core::CloseBipartitePairContainer. The score states have been
marked as deprecated and are mostly still there, but are more limited
than they were.
IMP::core::AllPairsPairContainer has been renamed to
IMP::core::AllPairContainer and a bipartite version has been added.
All containers now keep track of what they looked like on the previous
time step.
The IMP::core::ListPairContainer and IMP::core::ListSingletonContainer
have had their interface reduced a bit in order to make implementing
change tracking easier.
The set of exceptions has been simplified to go along with
simplification of the checks. We now have IMP::InternalException and
IMP::UsageException which are thrown by the respective checks (and the
former is thrown by IMP_FAILURE()). When you want to to pass an
exception back to python use one ofIMP::ValueException or
IMP::IndexException or IMP::IOException. There is also a new macro,
IMP_THROW() to be used when you want to throw an exception with a nice
error message. Please look at code you have worked on and make sure
that the exceptions make sense given the new clarifications.
An IMP::ModelException is now thrown when IMP::Particle attributes
attain invalid values. This exception can be caught to recover from
failures ofIMP::core::ConjugateGradients or difficult restraints.
The set of functions needed to get meta information about
IMP::Restraint and IMP::ScoreState objects has hopefully stabilized.
Sorry about the thrashing. If you have restraints or score states not
in SVN, see the corresponding IMP_RESTRAINT() type macros, the
IMP::Interaction class and base classes for what exactly you need to
implement.