We count use a sampler-level concept. The idea is to provide something higher level that takes a Model and produces a set of good scoring models for analysis. Examples would include: - Domino - a MC/CG scheme for optimizing sets of spheres (a premature version is in helpers)
Currently we have StructureSet which has the needed functionality and Domino which has some of it too.
I propose I add a base class to kernel which provides a sample method which returns a structure set and provides support for the types of filtering that is currently in StructureSet (eg only keep solutions with low scores and where restraint r is < 10). This would also require moving StructureSet to the kernel.
Something like: class Sampler { Sampler(Model *m);
// find structures to fill virtual StructureSet* sample();
// filtering methods moved from structure set
protected: // adds the model to the set if it satisfies the filters void add_model();
};
Adding the base class provides a place to put documentation for this level of interaction. It also would mean that Domino and the MC/CG protocols would automatically benefit from improvements in filtering and things as well as have more robust storage management (since handling changes to things other than optimized attributes can be tricky).
Thoughts/Comments?