>> one possibly ignorant question: andrej got along without fancy libs. >> knowing him, i presume he stole the code from somebody else. can't we >> simply do the same? the code was pretty fast... > :-) The modeller code doesn't work because it assumes equal sized > particles.
Exactly, although where we do have atomistic systems, this would still be a reasonable assumption.
> He also claims he put a fair bit of effort into optimizing it.
I think that's a little generous! It's just a standard cell-based algorithm. The only optimization I see in the code is on the hash function, and that's still a very simple function.
The Modeller code probably gets most of its performance from having optimizers that are cooperative. In order to tell whether a nonbond update is required, a simple heuristic is used: has any atom moved more than some cutoff distance since the last update? This is easy to test for because all of the optimizers update this atom shift value whenever they move an atom. In IMP there is no such guarantee - the optimizers write back new values for the optimizable attributes whenever they feel like it (plus, of course, we have attributes other than xyz).
Ben