Merge pull request #1299 from RosettaCommons/vmullig/fract_delta
Add support for fractional penalty ranges to AACompositionEnergy
Requested by @basantab. This will allow users to apply penalties that vary based on the fractional, rather than absolute, amino acid composition. (For example, rather than saying, "I want 7 alanines, and here are my penalties for 5, 6, 8, or 9 alanines," the user could say, "I want 7% alanine, and here are my penalties for 5%, 6%, 8%, or 9% alanine.")
Tasks:
Add FRACT_DELTA_START and FRACT_DELTA_END statement parsing to .comp files.
Check that the user has either used DELTA_START/DELTA_END or FRACT_DELTA_START/FRACT_DELTA_END (but not both).
Revise interpretation of PENALTIES lines if FRACT_DELTAs are used.
Add logic to apply penalties based on fractional penalty values.
Make change in note below: FRACT_DELTA_START and FRACT_DELTA_END should represent deviations from desired, not absolute values.
Add logic to interpolate (linearly, since first and second derivatives don't matter here).
Add logic to extrapolate (linearly and quadratically) for BEFORE_FUNCTION and AFTER_FUNCTION.
Update added functions -- they need to take into account the penalty value spacing when fitting the linear and quadratic functions.
Unit tests.
Integration test.
Documentation.
Beauty.