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

[IMP-dev] ParticleRefiner

I think we should have a new class of object, which I am, for the time being calling a ParticleRefiner to handle hierarchical collision detection and generation of particles on the fly. I am currently using it to generate particles to cover the edges of my unstructured chains in order to better preserve excluded volume. The interface looks more or less like:

ParticleRefiner {
   // return a bunch of particles which refines p
   Particles refine(Particle p)
   // clean up the particles which refined p if needed
   cleanup(Particle p, Particles);

And the methods must be called as a pair with the result of the first method passed as the second argument to the second method.

To use this I currently have a PairScore which I apply to the nonbonded pairs and a ParticleRefine which covers each bond with a set of particles chosen to conserve volume. The PairScore then applies another pair score to all pairs of refined particles. For that particle refined, "refine" creates new particles and "cleanup" destroys them (it probably makes sense to cache particles later).

ParticleRefines could also simply move down in a hierarchy, allowing hierarchical collision detection and such. Then cleanup wouldn't do anything at all.

Do other people have related use cases they are interested in?