From 55dd84a70454bed17ffc11a5374da4c8815edbb5 Mon Sep 17 00:00:00 2001 From: Garrett Wright Date: Tue, 10 Feb 2026 09:33:16 -0500 Subject: [PATCH 1/2] fix filter indexing bug in micrograph sim source --- src/aspire/source/micrograph.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/aspire/source/micrograph.py b/src/aspire/source/micrograph.py index e6c8e6a3b..7ba854c6a 100644 --- a/src/aspire/source/micrograph.py +++ b/src/aspire/source/micrograph.py @@ -402,10 +402,19 @@ def __init__( f" {acceptable_lens[1]}, or {acceptable_lens[2]}." ) - # Generate explicit filter indices (zero-indexed). - self.filter_indices = np.arange(self.total_particle_count) % len( - ctf_filters - ) + # Generate explicit total_particle_count filter_indices + # Note these indices are zero-indexed. + if len(ctf_filters) == self.micrograph_count: + # creates mapping [0,0,0..., 1,1,1,... ,micrograph_count-1] + self.filter_indices = np.repeat( + np.arange(self.micrograph_count, dtype=int), + self.particles_per_micrograph, + ) + else: + # single CTF or per particle CTF + self.filter_indices = np.arange( + self.total_particle_count, dtype=int + ) % len(ctf_filters) self.ctf_filters = ctf_filters From f9c4cc61b005e696ba57244b5dd368337655046b Mon Sep 17 00:00:00 2001 From: Garrett Wright Date: Tue, 10 Feb 2026 09:42:38 -0500 Subject: [PATCH 2/2] take out the mod code and replace with simpler branch --- src/aspire/source/micrograph.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/aspire/source/micrograph.py b/src/aspire/source/micrograph.py index 7ba854c6a..a0e11e61a 100644 --- a/src/aspire/source/micrograph.py +++ b/src/aspire/source/micrograph.py @@ -410,11 +410,10 @@ def __init__( np.arange(self.micrograph_count, dtype=int), self.particles_per_micrograph, ) - else: - # single CTF or per particle CTF - self.filter_indices = np.arange( - self.total_particle_count, dtype=int - ) % len(ctf_filters) + elif len(ctf_filters) == self.total_particle_count: + self.filter_indices = np.arange(self.total_particle_count, dtype=int) + elif len(ctf_filters) == 1: + self.filter_indices = np.zeros(self.total_particle_count, dtype=int) self.ctf_filters = ctf_filters