From 908b859a971770def645590ff6ba15f07ba8c683 Mon Sep 17 00:00:00 2001 From: magnusbauer Date: Wed, 11 Mar 2026 16:04:03 -0700 Subject: [PATCH 1/2] Make glycan O1 leaving-atom cleanup bond-aware --- src/alphafold3/model/atom_layout/atom_layout.py | 2 +- src/alphafold3/model/pipeline/structure_cleaning.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/alphafold3/model/atom_layout/atom_layout.py b/src/alphafold3/model/atom_layout/atom_layout.py index 541fe7f8..f74b23f6 100644 --- a/src/alphafold3/model/atom_layout/atom_layout.py +++ b/src/alphafold3/model/atom_layout/atom_layout.py @@ -677,7 +677,7 @@ def get_link_drop_atoms( *chemical_component_sets.GLYCAN_OTHER_LIGANDS, *chemical_component_sets.GLYCAN_LINKING_LIGANDS, }: - if 'O1' not in bonded_atoms: + if bonded_atoms and 'O1' not in bonded_atoms: drop_atoms.update({'O1'}) return drop_atoms diff --git a/src/alphafold3/model/pipeline/structure_cleaning.py b/src/alphafold3/model/pipeline/structure_cleaning.py index 4043a3f8..91938a6d 100644 --- a/src/alphafold3/model/pipeline/structure_cleaning.py +++ b/src/alphafold3/model/pipeline/structure_cleaning.py @@ -166,9 +166,13 @@ def clean_structure( *chemical_component_sets.GLYCAN_OTHER_LIGANDS, *chemical_component_sets.GLYCAN_LINKING_LIGANDS, } - # If only glycan ligands and no O1 atoms, we can do parallel drop. + # If only glycan ligands and no O1 atoms, we can do parallel drop. If there are no glycan bonds at all, keep O1. + has_any_glycan_bond = bool( + ligand_ligand_bonds.atom_name.size or polymer_ligand_bonds.atom_name.size + ) if ( only_glycan_ligands_for_leaving_atoms + and has_any_glycan_bond and (not (ligand_ligand_bonds.atom_name == 'O1').any()) and (not (polymer_ligand_bonds.atom_name == 'O1').any()) ): From 088a217d1ec8debe74fc1fd52b74bb732f51c365 Mon Sep 17 00:00:00 2001 From: magnusbauer Date: Fri, 13 Mar 2026 09:28:42 -0700 Subject: [PATCH 2/2] Trigger CLA recheck