Repository navigation
Remove the dead backwards A23a and A26a sialylation loops - #1712
Merged
amjjbonvin merged 3 commits intoOct 11, 2026
Merged
amjjbonvin merged 3 commits into
amjjbonvin merged 3 commits into
Conversation
…cans.cns Patches are applied with reference=- bound to the $id1 residue, and PRESidue A23, A26 and A26S all take the sialic acid as their - reference. The A23a and A26a loops selected GAL/NGA as $id1, so they had the references the wrong way round. A23a could never fire at all, since SIA and SIB have no O3, and A26a compared the acceptor C2 against the sialic acid ring oxygen. The correctly oriented A23c and A26c loops are kept, so this is behaviour-neutral. Issue haddocking#1711
shreyanshj10
marked this pull request as ready for review
October 8, 2026 11:50
…1711-dead-sialylation-loops Resolved against the glycans work in haddocking#1710, which added A2G to the A23d/A26d acceptor selections and relabelled the two surviving loop comments. Those edits sit immediately after the dead A23a/A26a blocks this branch removes, so git could not line the two up. Kept upstream's comments and both A2G additions and dropped the dead loops, and placed the CHANGELOG entry under the existing one.
amjjbonvin
approved these changes
Oct 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do and why?
Removes the
A23aandA26adetection loops frombondglycans.cns.Patches are applied at the end of that file with
reference=-bound to the$id1residue and
reference=+bound to the$id2residue.PRESidue A23,A26andA26Sall take the sialic acid as their-reference: they modify-C2, delete-O2/-HO2, and add dihedrals through-C1,-O6and-O1A. Of those,O1Aonlyexists on SIA/SIB.
A23aandA26aselect(resname GAL or resname NGA) and name C2as$id1, so theypass the acceptor as
-, which is the wrong way round:A23alooks forname O3on SIA/SIB, and neither residue has anO3(their oxygensare
O1A O1B O2 O4 O6 O7 O8 O9 O10), so its inner loop iterates over an emptyselection and the loop can never fire.
A26afinds SIAO6, but that is the ring oxygen, so the 2.0 A test against theacceptor's
C2is not met by a correctly built linkage. If it ever did fire it wouldask for
-O1Aon a GAL or NGA.The correctly oriented
A23candA26cloops take SIA/SIB as$id1and are what makessialylation work today, so removing the two backwards ones is behaviour-neutral.
I have left the
-O5improper inA26S/A28Sfrom the follow-up comment alone: as younote there, renaming it to
-O6needs a matchingIMPRoper C OAS OES CCEtarget derivedfirst, so it belongs in its own change.
One thing worth a look while reviewing: with
A26agone,PRESidue A26is no longerreferenced from
bondglycans.cns-A26cappliesA26S, which is the same patch plusthe alpha-anomer improper. I left
A26incarbohydrate.topsince it is part of thetopology library and can still be applied by hand, but if you would rather it went too I
am happy to add that here.
How was this tested?
Added
test_sialylation_loops_select_the_sialic_acid_as_first_referencetotests/test_module_topoaa.py. It parsesbondglycans.cns, picks out every outer loopthat assigns a sialylation patch (
A23,A26,A26S,A28S), and asserts that each oneselects
resname SIA or resname SIBandname C2as$id1, and that$id2selects theacceptor oxygen the patch bonds to (
O3forA23,O6forA26/A26S,O8forA28S). It needs no CNS executable, so it sits with the unit tests.I ran those assertions against
bondglycans.cnsas it stands onmainand against theversion in this PR: on
mainthey flagA23aandA26aand pass forA23c,A26candA28a; with the two loops removed all three remaining loops pass. The test also pins thecount at three, so it cannot pass by finding nothing.
AI assistance
An AI assistant helped with the write-up and with drafting the parser in the new test. The
chemistry is not taken from it: the reference direction comes from the
PRESidue A23,A26andA26Sbodies and the SIA/SIB/GAL/NGA atom lists incarbohydrate.top, which Iread and checked by hand, and the removal itself is the one #1711 asks for.
Checklist
CHANGELOG.mdupdated for user-facing changesNo user-facing behaviour changes, so nothing to document.
Related issues
Fixes #1711
Notes for reviewers
The diff is 72 deletions in
bondglycans.cnsplus the test and a changelog line; theremaining
A23c/A26cloops are untouched, so this should not collide with the A2G workin #1710 beyond the changelog.