|Opened on:||Tuesday, December 16, 2008 - 20:22|
|Last modified:||Wednesday, June 1, 2011 - 16:10|
I'm re-posting this since it appears to have been deleted during the forum switchover... If it has been addressed, please forgive the duplication.
I have been noticing that the Shake command is resulting in repositioning that is far less than optimal.
As a "Tweaker", I have a certain reliance on shake doing the post optimization of side chains in as accurate a way possible to ensure that the score is not adversely (and incorrectly) altered.
When Shake resets a side chain to a position that is not an optimal minimization, it both reduces the subsequent score AND worse, it lowers my confidence that my move or thinking was "right", which leads to unnecessary and undeserved self-doubt about the direction in which I am taking the puzzle or my folding technique in general for subsequent work.
I am finding that about half of the time I use shake following a manually forced clash and wiggle, (ie tweaking) the return position of the side chain following shake is at least one discrete rotational position away from its "best" placement.
I believe the problem can be remedied by comparing the Energy of positions to each "side" of the function's nominal output for the affected side chain with that of the nominally calculated position and taking the best value to select its rotation... (that is, if the function output says rotate to discrete rotation phi,, ie rotation index N, then check the N-1 and N+1 rotations to see if they result in a better value...)
Admittedly, there may be a finer issue in the allowed delta phi, but still the general idea should be clear, and I have no real idea of the code specifics, so I have to use generalities...
I believe I speak for most players in saying that I would rather have a more accurate, albeit minimally slower, Shake command than to have the situation described above. It's not going to slow down that much, as shake is relatively fast already and the other two E-calcs and compare should not load the command too heavily, ie add inordinate time to its operation.