Merge pull request #2182 from RosettaCommons/vmullig/support_disulf_cyclization
Add support for simple_cycpep_predict structure prediction for disulfide-cyclized peptides
Although the "simple" in simple_cycpep_predict was initially meant to refer to backbone-cyclized single-loop peptides, the application can already predict structures of backbone-cyclized peptides with any number of internal disulfides, or with three-way TBMB linkages. There's no reason that the application should be limited to N-to-C amide bond-linked cyclization. This pull request will add support for cyclization with a terminal disulfide _in lieu_ of a terminal amide bond, and will leave open the option of adding support for cyclization through a crosslinker.
@csykang @gbhardwaj @hssnzdh2 @twcraven @atom-moyer @stephen-rettie
TODO:
- [x] Add option for alternative cyclization schemes.
- [x] Add enum for alternative cyclization schemes.
- [x] Set from options system in non-MPI mode.
- ~~Set by master node in MPI mode.~~ --> Not actually necessary. Will be set by options system when slave node SimpleCycpepPredictApplication instances are initialized. Can be overridden if ever I need to.
- [x] Update GenKIC setup in SimpleCycpepPredictApplication.cc to allow amide bond or disulfide cyclization.
- [x] Closebond statement for S-S bond.
- [x] Set up suitable GenKIC perturbers for cysteine side-chains.
- [x] Modify GenKIC perturbers for cysteine backbone at cyclization point.
- [x] Remove rama randomization for these residues.
- [x] Ensure that full chain is pre-randomized before calling GenKIC.
- [x] Make terminal amide bond constraints contingent on the N-to-C amide bond cyclization mode.
- [x] Make terminal amide bond contingent on N-to-C amide bond cyclization mode.
- [x] Make S-S bond contingent on terminal disulfide cyclization mode.
- [x] Correct calls to function to form terminal covalent bond.
- [x] Disable cyclic permutation in disulfide case.
- [x] Update logic for selecting middle pivot.
- [x] Update logic for selecting anchor residue.
- [x] Update minimum peptide length. Add checks for adjacent disulfide-forming residues.
- [x] Handle tail residues, if present.
- [x] Check GenKIC filters.
- [x] Don't do rama check on cysteine residues involved in disulfide.
**Put off to a future pull request:**
- Add non-GenKIC filter for rama check of cysteine residues involved in disulfide.
- Filter by disulfide energy (non-GenKIC filter).
- Filter by fa_dun (non-GenKIC filter).
- [x] Exclude terminal cysteines (or loop-forming cysteines) from disulfide permutation testing.
- [x] Prohibit quasi-symmetric sampling with disulfide cyclization.
- [x] Prohibit linking all cysteine with TBMB with disulfide cyclization.
- ~~Option to specify which cysteines form loop.~~ --> Put off to future pull request.
- [x] Tests:
- [x] Basic integration test.
- [x] Tail residue integration test.
- [x] MPI-mode integration test.
- [x] Check compatibility with option to try disulfide permutations.
- [x] Beauty.
- [x] Documentation.
Also:
- This pull request fixes a really stupid simple_cycpep_predict symmetry bug that was hindering the efficiency of symmetric sampling.