[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[IMP-dev] The last while in IMP



It has been a while, so the list is long:

- IMP::core::RestraintSet moved to IMP::RestraintSet. The restraint sets now simply define a tree
  with weights which the model traverses as opposed to being an opaque IMP::Restraint themselves.
  This means that incremental evaluation of restraints in restraint sets now works and that
  restraints in restraint sets can be individually evaluated. Existing working usage should not
  have changed (so \c sed should manage updates just fine), but the internal
  implementation is completely new, so pay attention.

- The IMP.examples module now documents how to use the needed aspects of scons and SWIG.

- \imp now has a text i/o layer consisting of IMP::TextInput and IMP::TextOutput. These classes are
  convertible to C++ streams and implicitly constructable from both streams and file paths. As a result,
  functions that take them will work when called with a string for a file path, a Python file or a
  C++ stream.

- a new base class IMP::Constraint has been added for constraints. Various
other classes have been renamed to be consistent.

- The IMP::Model now uses dependency information from IMP::ScoreStates to automatically reorder the IMP::ScoreStates so that they are evaluated in the right order. Also, IMP::Model::evaluate() on a subset of the restraints now only updates the needed score states, not all of them.

- Functions on rigid bodies no longer provide the IMP::core::RigidMemberRefiner as a default as it is, pretty much always, the wrong thing to use. That class may go away without notice in the future and is no longer documented.

- IMP::UsageException and IMP::InternalException are now reserved for their respective
  checks (and cannot be thrown by IMP_THROW()). This makes the distinction between API
  exceptions (which are thrown in any build mode and should be documented and tested)
  and helper exceptions which are only thrown when debug checks are turned on (and hence
  should not be documented or tested) clearer.

- The IMP.examples module is used as the basis for new modules created by the make-module script, so those include more documentation and are tested.

- Module overview pages are now generated from the information passed in the SConscript file, rather than from the (now removed) modulename.dox file. See the examples file for an example of the things you can do there.

- boost program options is now a checked for dependency.

- the IMP::helper::create_simple_connectivity_on_rigid_bodies() and IMP::helper::create_simple_excluded_volume_on_rigid_bodies() now both take an IMP::Refiner as an (optional) final argument. This makes it so they can be used with the rigid bodies created from molecular hierarchies. This code still needs to be updated and the docs don't reflect what the code was or is doing, so use with caution (see notes in the header file).