Since I think such a new module is a good idea, I'll make it more concrete. Let's have a new module called IMP.helper. Its primary purpose is to contain functions that perform common tasks that - involve creation of more than one restraint or score state - creation of a restraint or score state followed by non-trivial manipulation of it - functions to create standard particle sets
Examples would include existing code such as: - creating a rigid body and associated score states - restraining the diameter of a set of particles - creating a hard sphere excluded volume restraint which intelligently handles rigid bodies - creating a coarse grained model of a protein with known number of amino acids, but no known structure
Having it in a module means that there is a clear first place to look for such things. The low level functionality in core is clearly differentiated from functions that use it.
On Fri, May 15, 2009 at 1:46 PM, Daniel Russel drussel@gmail.com wrote:
> We now have several different layers of functionality in IMP, which are > kind of jumbled together in core. For example, with rigid bodies, you can > create one by > - decorating a particles > - creating a couple of score states from relatively general purpose > singleton modifiers and container based score states > - adding them to the model > or > - use a create_rigid_body function to do it all for you > > Having all of these together clutters the documentation and makes it harder > to find out what you should be doing. That said, we need at least some of > the detail bit available to users, so we can't really hide them away as > internal. > > One option would be to pull these into their own module (I can't think of > the right name offhand, perhaps helpers), and reserve core for very general > purpose things like PairsRestraint. > > Not sure what other options are. >