Merge pull request #1085 from RosettaCommons/aleaverfay/fix_matcher_chi_building_bug
Fixing a problem in the matcher that assumes that the chi dihedrals
are right next to each other along the sidechain. It could not handle
sidechains where there were rigid segments (e.g. a benzene ring) between
two chi dihedrals. The matcher would incorrectly try to build the chitip
atom for chi i directly off of chi i-1, instead of off the rigid segment
separating them.
The fix is to simply add another HT between chitip atom i and chitip atom i+1
(where these HTs are the identify matrix if there are no rigid segments betwen
chi dihedrals), and these HTs can be easily extraced from the ideal RT
geometry at the construction of the UpstreamRestypeGeometry class.
New unit test to ensure that the construction of an example "PBF" molecule
is correct.
Thanks, Sophia, for finding this bug.
The other thing this pull request does it enforce the idea that the user has given
a proper bin width for the euler angles -- and that is, that the bin width must
evenly divide 180 degrees. So, for example, 10 degrees, and 9 degrees are fine
bin widths, but 8 degrees is not. The math for finding neighbors in rotation space
near the poles (theta near 180, or 0) requires an even binning. Perhaps this could
be made to accommodate other bin sizes, but it seems hardly worth the effort.
By "enforce", I mean that the matcher will throw an exception if the euler angle bin
width does not evenly divide 180. So, perhaps, previously acceptable command
lines will no longer work. At least the error message instructs the user how to
modify their inputs.