Merge pull request #2573 from RosettaCommons/vmullig/refactor_parametric_code
Refactor the Parametric code
Merged from my phone. This somehow feels wrong...
This will simplify the code considerably, and make it easier to add additional parameters or new parameterizations. It will also simplify the parameter-space minimizer that I have working in a branch (and which I really need to get back to at some point).
Tasks:
- [x] Add a Parameter abstract base class.
- [x] Derived classes for Real, Size, or Boolean-valued Parameters.
- [x] Store parameter name, type, value.
- [x] Setters and getters for these.
- [x] Value-parsing functions.
- [x] XSD functions.
- [x] Serialization.
- [x] Ensure that default values can be specified (e.g. 1.0 for `epsilon`).
- [x] Add means of copying parameters.
- [x] Have this do something.
- [x] Override the default "copies_from" to say "copies_helix" (_e.g._ "r0_copies_helix").
- [x] Special case of omega -- add means of copying pitch.
- [x] Means of converting degrees->radians.
- [x] Ensure that sampling and perturbing options are reset before storing in the Conformation.
- [x] Add a ParametrizationCalculator abstract base class.
- [x] Add a BundleParametrizationCalculator class.
- [x] Tie in to MakeBundleHelix mover.
- [x] Tie in to MakeBundle.
- [x] Add default BundleParametrizationCalculator, and have it parse its options.
- [x] Have the individual helix BundleParametrizationCalculators start off as clones of the default one (with cloning _after_ setup).
- [x] Have them then override their options by parsing sub-tags.
- [x] Check MakeBundle function (existing tests).
- [x] Think about non-RosettaScripts interface, too. (What if defaults are set _after_ individual
helices?)
- [x] Fix the helical_bundle_nonideal integration test. (The second pose should be identical to the first. There's currently a problem with the bundle symmetry option in degrees mode.)
- [x] Tie in to PerturbBundle.
- [x] Deprecate PerturbBundleOptions class.
- [x] Simplify PerturbBundleHelix mover.
- [x] Simplify parse_my_tag().
- [x] Simplify apply().
- [x] Simplify perturb_values().
- [x] Check tests.
- [x] Simplify XSD function.
- [x] Tie in to BundleGridSampler.
- [x] Check tests.
- [x] Update parametric design GUI.
- [x] Refactor the BundleParameters class to reduce the hardcoding of parameters.
- ~~Maybe deprecate the BundleParametersSet class, too.~~ --> No, I like having a specialized class for this. _Right now_ it's not doing anything special, but it could conceivably in the future, and I don't want to have to subclass at that point.
- [x] Fix integration test failures-to-run.
- [x] Debug pitch copying with perturbation. It's currently not working.
- [x] Check pitch copying with the BundleGridSampler.
- [x] Check integration test changes.
- [x] Debug changes seen when delta_t is nonzero.
- Caused by ambiguity in rotation direction for beta-strands with omega1 ~ 180 degrees. Not a big cause for concern, though integration tests have been updated.
- [x] Fix unit tests.
- [x] Check `perturb_helical_bundle` integration test failure. It was the only one showing a real failure, and I think I've fixed it, now.
Put off to another pull request:
- Fix the longstanding residue vector problem in the Parameters object.