Skip to content

Fix alpha-GalNAc (A2G) documentation and NGM C4 stereochemistry - #1710

Merged
amjjbonvin merged 7 commits into
mainfrom
glycans
Oct 9, 2026
Merged

amjjbonvin merged 7 commits into
mainfrom
glycans

Conversation

@amjjbonvin

@amjjbonvin amjjbonvin commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

alpha-GalNAc was already in the force field as A2G, the PDB chemical component code for 2-acetamido-2-deoxy-alpha-D-galactopyranose, but the header REMARK that serves as the authoritative supported-carbohydrate list described it as a glucopyranose, which made it look unsupported.

What does this PR do and why?

carbohydrate.top:

  • correct the A2G REMARK and the residue comment: it is the alpha anomer of NGA, with C4 inverted with respect to NDG
  • fix the malformed NGM C4 improper. It read "H4 C4 O3 C5", listing C4 inside its own chirality improper and using O3 where O4 belongs, so it restrained a meaningless quadruple instead of the C4 centre. It now reads "H4 O4 C3 C5", matching A2G, GAL and GLA. On the gal-ngm test case the built C4 improper moves from -56.7 to -65.2 degrees, against -66.4 for the galactose of the same molecule.
  • correct the sialyl-link REMARKS: A23 was described backwards and an A23S patch was advertised that does not exist in the file

bondglycans.cns:

  • add A2G as an alpha(2,3)/alpha(2,6) sialylation acceptor, which enables sialyl-Tn (SIA alpha(2,6) alpha-GalNAc). Only the A23c/A26c loops are extended; the A23a/A26a loops take the acceptor as the '-' reference, which does not match PRESidue A23/A26, so they cannot fire. No new parameters are needed: after patching, A2G O3/O6 become OAS and every affected improper resolves to an existing entry, exactly as for GAL.
    Two further fixes in the same area, each in its own commit:

  • correct the GCS residue comment, which read "2-N-beta-D-galactopyranose (glucosamine)". GCS is beta-glucosamine, as the REMARKS header already said: its C4 improper "H4 C5 C3 O4" is the odd permutation of the galacto form NGA uses, so the configuration is gluco. Comment only, no effect on the force field.

  • add the missing N-acetyl planarity impropers to NGA, NAG, MAG and A2G. NDG, NAM, NAA, NGM, SIA and SIB all restrain their N-acetyl group to be planar, but these four did not, even though the parameters already exist in carbohydrate.param and are commented there as "!NAG,SIA planar", so the omission looks accidental rather than deliberate. Both impropers resolve to fully specific existing parameters, so nothing is added to the parameter file: "N2 C7 C2 HN2" -> "NH1 C CCS H" -> 0.0 deg, and "C7 C8 N2 O7" -> "C CCS NH1 O" -> 0.0 deg. GCS is deliberately left out, being glucosamine with a free amine and no acetyl group. This is the only behaviour-affecting change in the PR: it shifts NAG energies slightly, in the direction of planarity and of consistency with NDG.

How was this tested?

  • new test_topoaa_GalGalNAcalpha with golden data gal-a2g.pdb, the core-1/T-antigen disaccharide Gal-beta(1,3)-alpha-GalNAc. CNS has to build the anomeric centre and the C4 substituents, so the test checks that the A2G impropers pin alpha at C1 and galacto at C4, and that the B13 link is patched in.
  • the planarity change was measured on the NAG/NDG glycan of examples/docking-protein-glycan: the acetamide groups go from up to 5.8 degrees out of plane to 0.07 degrees, while NDG, which already carried the impropers, is unchanged at 0.01 degrees and so acts as a control.
  • every improper of NGA, NAG, MAG, A2G, NDG and NGM was checked against carbohydrate.param; all resolve, none unresolved.
  • tests/ and integration_tests/ pass locally (1816 and 84 passed).
  • run the docking-protein-glycan test example and compared the consistency of the results with the main branch.

AI assistance

Claude was used to check the current topo/param files for glycans and implement changes which were manually checked.

Checklist

  • Tests cover the new and/or changed code
  • Documentation updated if needed (also in the haddock3 user-manual
  • CHANGELOG.md updated for user-facing changes

Related issues

Closes #1709

alpha-GalNAc was already in the force field as A2G, the PDB chemical
component code for 2-acetamido-2-deoxy-alpha-D-galactopyranose, but the
header REMARK that serves as the authoritative supported-carbohydrate
list described it as a glucopyranose, which made it look unsupported.

carbohydrate.top:
- correct the A2G REMARK and the residue comment: it is the alpha anomer
  of NGA, with C4 inverted with respect to NDG
- fix the malformed NGM C4 improper. It read "H4 C4 O3 C5", listing C4
  inside its own chirality improper and using O3 where O4 belongs, so it
  restrained a meaningless quadruple instead of the C4 centre. It now
  reads "H4 O4 C3 C5", matching A2G, GAL and GLA. On the gal-ngm test
  case the built C4 improper moves from -56.7 to -65.2 degrees, against
  -66.4 for the galactose of the same molecule.
- correct the sialyl-link REMARKS: A23 was described backwards and an
  A23S patch was advertised that does not exist in the file

bondglycans.cns:
- add A2G as an alpha(2,3)/alpha(2,6) sialylation acceptor, which enables
  sialyl-Tn (SIA alpha(2,6) alpha-GalNAc). Only the A23c/A26c loops are
  extended; the A23a/A26a loops take the acceptor as the '-' reference,
  which does not match PRESidue A23/A26, so they cannot fire. No new
  parameters are needed: after patching, A2G O3/O6 become OAS and every
  affected improper resolves to an existing entry, exactly as for GAL.

Tests:
- new test_topoaa_GalGalNAcalpha with golden data gal-a2g.pdb, the
  core-1/T-antigen disaccharide Gal-beta(1,3)-alpha-GalNAc. CNS has to
  build the anomeric centre and the C4 substituents, so the test checks
  that the A2G impropers pin alpha at C1 and galacto at C4, and that the
  B13 link is patched in.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@amjjbonvin amjjbonvin self-assigned this Oct 6, 2026
@amjjbonvin amjjbonvin added parameters-topologies Issues/feature requests related to the force field AI Changes authored or assisted by AI m|topoaa topoaa module labels Oct 6, 2026
amjjbonvin and others added 4 commits October 6, 2026 12:25
GCS is beta-glucosamine, as the header REMARK already states. Its C4
improper "H4 C5 C3 O4" is the odd permutation of the galacto form NGA
uses, so the configuration is gluco; only the residue comment was wrong.
Comment-only change, no effect on the force field.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
NDG, NAM, NAA, NGM, SIA and SIB all restrain their N-acetyl group to be
planar, but NGA, NAG, MAG and A2G did not, even though the parameters
for it already exist in carbohydrate.param and are commented there as
"!NAG,SIA planar". The omission looks accidental rather than deliberate.

Both impropers resolve to fully specific existing parameters, so no new
parameters are needed:
  N2 C7 C2 HN2  ->  NH1 C CCS H  ->  0.0 deg
  C7 C8 N2 O7   ->  C CCS NH1 O  ->  0.0 deg

GCS is deliberately left out: it is glucosamine, with a free amine and
no acetyl group.

Measured on the NAG/NDG glycan of examples/docking-protein-glycan, the
acetamide groups go from up to 5.8 degrees out of plane to 0.07 degrees.
NDG, which already carried the impropers, is unchanged at 0.01 degrees
and acts as a control. This does slightly shift NAG energies, in the
direction of planarity and of consistency with NDG.

Tests: tests/ plus integration_tests/ pass (1802 and 84 passed).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The repository had no SIA or SIB coordinates in any PDB file, so the SIA
topology and the automatic alpha(2,3)/alpha(2,6) sialylation patches had
no test coverage at all, including the A2G acceptor added earlier on this
branch.

New golden data:
- sia.pdb, alpha-N-acetyl neuraminic acid on its own
- sia-a2g-26.pdb, SIA alpha(2,6) alpha-GalNAc, the sialyl-Tn antigen
- sia-a2g-23.pdb, SIA alpha(2,3) alpha-GalNAc

How the reference was built, since no experimental structure was used:
the pyranose ring was laid out as an ideal chair and every substituent
was placed on the branch whose improper matches the target in
carbohydrate.param, so the stereochemistry is the one the force field
itself defines, at C2, C3, C4, C5, C6, C7, C8 and C9. The frame was then
regularised by CNS, which built the hydrogens. For the disaccharides,
SIA is placed rigidly against a CNS-built A2G with a realistic C-O-C
glycosidic angle, scanning the two glycosidic rotations and the C6-C7
glycerol torsion for the least clashing orientation; the closest
SIA/A2G heavy-atom contact is 2.8 A for the 2,6 linkage and 2.5 A for
the more crowded 2,3 one. The real bond is then formed by the patch, not
by these coordinates.

Tests:
- test_topoaa_sialic_acid builds SIA alone and checks all eight of its
  stereo and planarity impropers
- test_topoaa_sialyl_GalNAc checks, for both linkages, that
  bondglycans.cns detects it, that the patch deletes SIA O2/HO2 and the
  acceptor hydroxyl hydrogen, and that neither residue loses its
  stereochemistry
- both linkage tests were confirmed to fail ("A26S was not applied",
  "A23 was not applied") when the A2G acceptor is reverted

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@amjjbonvin amjjbonvin mentioned this pull request Oct 9, 2026
2 of 3 tasks
@amjjbonvin
amjjbonvin merged commit 4796a83 into main Oct 9, 2026
9 checks passed
@amjjbonvin
amjjbonvin deleted the glycans branch October 9, 2026 09:17
shreyanshj10 added a commit to shreyanshj10/haddock3 that referenced this pull request Oct 9, 2026
…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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI Changes authored or assisted by AI m|topoaa topoaa module parameters-topologies Issues/feature requests related to the force field

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for alpha-GalNAc

1 participant