From 0f8ec0ee8b5c61608773e5aeb365b2e5871f8fe0 Mon Sep 17 00:00:00 2001 From: jvogt4 Date: Tue, 22 Jul 2025 17:45:26 -0400 Subject: [PATCH 1/2] Updated get_native for multiple chains with duplicate res_ids --- src/inference_base.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/inference_base.py b/src/inference_base.py index ecf266c..48fcce6 100644 --- a/src/inference_base.py +++ b/src/inference_base.py @@ -139,10 +139,11 @@ def get_native(pdb_path): valid_atoms_mask = np.zeros(len(structure), dtype=bool) # Iterate over unique residues - for res_id in set(structure.res_id): - # Create a mask for atoms in the current residue - residue_mask = (structure.res_id == res_id) - residue_atoms = structure[residue_mask] + for chain_id in set(structure.chain_id): + for res_id in set(structure.res_id): + # Create a mask for atoms in the current residue + residue_mask = ((structure.res_id == res_id) & (structure.chain_id == chain_id)) + residue_atoms = structure[residue_mask] # Get atom names for this residue residue_atom_names = set(residue_atoms.atom_name) From 3c37e5e5778ecc806a88f796bf4a860baa434d0b Mon Sep 17 00:00:00 2001 From: jeff-vogt Date: Tue, 22 Jul 2025 18:00:58 -0400 Subject: [PATCH 2/2] Updated get_native for multiple chains with duplicate res_ids --- src/inference_base.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/inference_base.py b/src/inference_base.py index 48fcce6..3df7592 100644 --- a/src/inference_base.py +++ b/src/inference_base.py @@ -145,13 +145,13 @@ def get_native(pdb_path): residue_mask = ((structure.res_id == res_id) & (structure.chain_id == chain_id)) residue_atoms = structure[residue_mask] - # Get atom names for this residue - residue_atom_names = set(residue_atoms.atom_name) - - # Check if all backbone atoms are present - if backbone_atoms.issubset(residue_atom_names): - # If backbone atoms are present, mark this residue as valid - valid_atoms_mask[residue_mask] = True + # Get atom names for this residue + residue_atom_names = set(residue_atoms.atom_name) + + # Check if all backbone atoms are present + if backbone_atoms.issubset(residue_atom_names): + # If backbone atoms are present, mark this residue as valid + valid_atoms_mask[residue_mask] = True # Apply the mask to filter the structure filtered_structure = structure[valid_atoms_mask]