Merge pull request #2309 from RosettaCommons/vmullig/fix_cutpoint_variant
Fix up the cutpoint code a bit to support cis-peptide bonds, peptoids, and N-methylation properly
When I started working on cyclic peptides, the cutpoint energy had problems associated with it (_e.g._ hardcoded assumptions about i->i+1 connections) that made me want to avoid it. Today, these problems have largely been solved, and I've come around to the idea that this is one of the better ways to enforce cyclic geometry in peptides. To this end, this pull request aims to tweak the cutpoint code a bit, mainly to make it compatible with _cis_-peptide bonds and with non-ideal geometry.
**Update**: This pull request has expanded. It now fixes a number of issues associated with peptoids, and has also had the glycan changes from pull request #2321 merged into it.
**Tasks**
- ~~Allow Calpha-C-V1-V2 and V2-V1-N-Ca dihedrals to move. The omega energy now enforces planarity.~~ --> Already happens.
- [x] Check how chainbreak energy works and make sure that there's no i->i+1 hardcoding.
- [x] Unit test for cyclic geometry and chainbreak energy.
- [x] Correct expected energy in unit test.
- [x] Add a function that moves virtual atoms around to ensure that _if_ cutpoint variants exist, then:
- [x] C-OVL1 distance of lower matches LOWER-N distance of upper.
- [x] V1-OVL2 distance of lower matches N-CA distance of upper.
- [x] C-OVL1-OVL2 angle matches LOWER-N-CA angle.
- [x] OVU1-N distance of upper matches C-UPPER distance of lower.
- [x] Unit test.
- [x] Call the above function from `core::pose::correctly_add_cutpoint_variants_to_pose()`.
- [x] Unit test.
- [x] Call the above from `core::conformation::Conformation::declare_bond`.
- [x] Unit test.
- [x] Call the above with conditional logic from `core::pose::add_variant_type_to_pose_residue()`.
- [x] Unit test.
- [x] Drop deletion of cutpoint types in `DeclareBondMover` and in `simple_cycpep_predict`.
- [x] Add support for peptoids.
- [x] Unit test.
- [x] Add support for N-methylation.
- [x] Unit test
- [x] Unit test: cyclic scoring when the terminal types are cutpoint variants.
- [x] For beta_nov16, too.
- [x] Unit test: mirror symmetric scoring when the terminal types are cutpoint variants.
- [x] For beta_nov16, too.
- [x] Add support for:
- [x] DNA.
- [x] RNA.
- [x] Sugars.
- [x] Delete the NtermConnect and CtermConnect patches.
- [x] Remove from patches.txt.
- [x] Remove the patches.
- [x] Remove the variant types, and all mentions in the code.
- [x] Remove the variant types from the older residue type sets, too.
- [x] Update PoseFromSFRBuilder, pass 4 --> add proper logic for determining if there are link records for mainchain connections, and set up cutpoints.
- [x] Unit test for importing a cyclic peptide with LINK records.
- [x] Fix the unit test breakages.
- [x] Fix the integration test breakages.
- [x] Fix updating of polymer bond-dependent geometry for peptoids.
- [x] Correct peptoid params files: carbonyl oxygens are polymer-dependent.
- [x] Fix updating of cutpoint virtuals (polymer-dependent).
- [x] Debug test/core/scoring/cyclic_geometry_headers.hh.
- [ ] Documentation.
- [ ] Include documentation on when to use linear_chainbreak and when to use (quadratic) chainbreak.
- [x] Fix peptoid geometry issue in Residue::place().
- [x] Beauty.
Also:
- [x] Fix bug in hxl_torsion code: basing the potential on atom indices creates problems with variants that renumber atom indices.
- [x] Fix rama_prepro code for compatibility with cutpoint variants.
Down the road:
- We might switch `simple_cycpep_predict` and the `PeptideCyclizeMover` to use the chainbreak approach. This will require some explicit tweaks to set virtual atom _cis_ conformations in cases of _cis_-peptide bonds.
- Unit test: GenKIC with cutpoint.
- Unit test: GenKIC with _cis_-omega cutpoint.
- Unit test: GenKIC with peptoid cutpoint.
Lots of trajectory changes are expected, as well as additional, cosmetic integration test changes. A small scoring change is expected due to a bugfix to the hydroxyl torsion energy.