Merge pull request #3202 from RosettaCommons/vmullig/fix_lariat_issue
Fix an issue affecting correct placement of O and V1 atoms in isopeptide lariats
There were a couple of spurious lines in a function that's intended to return connection atom IDs, and this was creating problems with the SidechainConjugation patch. (Come to think of it, this might have worked if we changed the order of patches, but I wanted a less fragile solution.) There was an additional function that I needed to write, too, to preserve backwards compatibility with the old ASX/GLX patches.
This also updates a feature in GenKIC.
Old behaviour:
- You have a residue with two polymeric connections (1, 2) and a sidechain connection (3).
- You apply a patch that removes polymeric connection 2.
- Sidechain connection 3 is now connection 2.
- Atoms whose internal coordinates depended on sidechain connection 3 still depend on sidechain connection 3.
- The Residue::inter_residue_connection_partner() function would correct for this by checking whether a residue was an upper terminus or lower terminus type, and subtracting 1 from the connection ID if it was. This was fragile (especially since someone might query the ICOOR records from anywhere, not just from this function).
New behaviour:
- You have a residue with two polymeric connections (1, 2) and a sidechain connection (3).
- You apply a patch that removes polymeric connection 2.
- Sidechain connection 3 is now connection 2.
- When the patch is applied, we iterate through all atoms and update all ICOORs that depended on connection IDs greater than 2, so that they depend on the N-1 connection ID now.
- The ICOOR records for each atom are always correct, now, and the Residue::inter_residue_connection_partner() function doesn't do any silly -1 logic, now.