Daniel Russel wrote: > If the derived positions are not optimizable then some current > restraints won't modify their derivatives. For example, the non-bonded > list is using non-optimizable x,y,z to mean fixed particles, which get > treated separately (since they don't need to move in the grid and > collisions between them are not meaningful). I think some of the > others may skip non-optimized particles too. > > Simply letting the optimizers optimize them and then ignoring the > result works, but is kind of inelegant (and inefficient if the > branching factor is small). The fixed particle case may be enough of a > special case anyway that we can just get rid of it. I can replicate > the current behavior in my code by having several nonbonded lists and > corresponding restraints-- the main change will be that it checks that > the particles indeed didn't move. > > So I think removing the checks from the other restraints and states > looks like the right way to go.
Sounds reasonable to me. Your patch to fix this is in r496.
>> This ScoreState would require a change to the API. ScoreState::update >> (called before the score is evaluated) would be renamed >> ScoreState::pre_update and a new ScoreState::post_update method >> would be added > Perhaps we should call the methods before_evaluate and after_evaluate > as they are called before and after the Model::evaluate work is done. > pre_update is a bit strange as the states are the things doing the > updating.
Agreed. I'll put this in later today.
Ben