From 540234e9fb176e43a1b2640720a2f7f9abed9489 Mon Sep 17 00:00:00 2001 From: Tim O'Donnell Date: Thu, 20 Nov 2025 10:49:37 -0500 Subject: [PATCH] Fix indexing bug for design_insertions on multiple chains --- src/boltzgen/data/parse/schema.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/boltzgen/data/parse/schema.py b/src/boltzgen/data/parse/schema.py index 755feb6..7cd3b84 100644 --- a/src/boltzgen/data/parse/schema.py +++ b/src/boltzgen/data/parse/schema.py @@ -1970,7 +1970,7 @@ class YamlDesignParser: # Parse and apply design insertions if design_insertions is not None: - num_inserted = 0 + num_inserted = defaultdict(int) for list_element in design_insertions: insertion = list_element["insertion"] if "id" not in insertion: @@ -1981,7 +1981,7 @@ class YamlDesignParser: raise ValueError(msg) chain_id = insertion["id"] res_index = insertion["res_index"] - 1 # 1 index input to 0 indexed - res_index += num_inserted + res_index += num_inserted[chain_id] ss_insert_type = insertion.get("secondary_structure", "UNSPECIFIED") # We add +1 because the parse_range function is usually used for indexing where we then convert the 1 based inputs to 0 indexing @@ -1989,7 +1989,7 @@ class YamlDesignParser: num_residues = parse_range(num_residues) num_residues = np.random.choice(num_residues).item() num_residues += 1 - num_inserted += num_residues + num_inserted[chain_id] += num_residues if chain_id not in structure.chains["name"]: msg = f"Specified chain id {chain_id} not in file {path}."