From 12a5324e26f82437ae26a26d72831eed6babdaed Mon Sep 17 00:00:00 2001 From: chrishalcrow Date: Wed, 14 Oct 2026 16:50:49 +0100 Subject: [PATCH 1/3] allow for analyzer with rec attributes to get main channel indices --- src/spikeinterface/core/sortinganalyzer.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/spikeinterface/core/sortinganalyzer.py b/src/spikeinterface/core/sortinganalyzer.py index b702237445..234a381b99 100644 --- a/src/spikeinterface/core/sortinganalyzer.py +++ b/src/spikeinterface/core/sortinganalyzer.py @@ -817,8 +817,16 @@ def _handle_backward_compatibility_settings_pre_init(cls, settings: dict[str, An def main_channel_indices(self): if self._main_channel_indices is None: sorting_main_channel_ids = self.get_sorting_property("main_channel_id") - if sorting_main_channel_ids is not None and self.has_recording(): - main_channel_indices = self.recording.ids_to_indices(sorting_main_channel_ids) + if sorting_main_channel_ids is not None and ( + self.has_recording() or self.rec_attributes.get("channel_ids") + ): + if self.has_recording(): + main_channel_indices = self.recording.ids_to_indices(sorting_main_channel_ids) + elif self.rec_attributes.get("channel_ids"): + channel_ids = np.array(self.rec_attributes.get("channel_ids")) + main_channel_indices = np.array( + [list(channel_ids).index(id) for id in sorting_main_channel_ids], dtype=int + ) self._main_channel_indices = main_channel_indices else: self._main_channel_indices = self._compute_main_channel_backwards_compatibility() From d1dd3804e2000c6bc11fa8f17eaa60d83dbb1ca8 Mon Sep 17 00:00:00 2001 From: Chris Halcrow <57948917+chrishalcrow@users.noreply.github.com> Date: Thu, 15 Oct 2026 13:34:56 +0100 Subject: [PATCH 2/3] Apply suggestion from @chrishalcrow --- src/spikeinterface/core/sortinganalyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spikeinterface/core/sortinganalyzer.py b/src/spikeinterface/core/sortinganalyzer.py index 234a381b99..fb3ce51965 100644 --- a/src/spikeinterface/core/sortinganalyzer.py +++ b/src/spikeinterface/core/sortinganalyzer.py @@ -818,7 +818,7 @@ def main_channel_indices(self): if self._main_channel_indices is None: sorting_main_channel_ids = self.get_sorting_property("main_channel_id") if sorting_main_channel_ids is not None and ( - self.has_recording() or self.rec_attributes.get("channel_ids") + self.has_recording() or self.rec_attributes ): if self.has_recording(): main_channel_indices = self.recording.ids_to_indices(sorting_main_channel_ids) From cd28b974d0547618cd6b691aa55c6c92c82f43e0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 15 Oct 2026 12:35:29 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/spikeinterface/core/sortinganalyzer.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/spikeinterface/core/sortinganalyzer.py b/src/spikeinterface/core/sortinganalyzer.py index fb3ce51965..d33c797963 100644 --- a/src/spikeinterface/core/sortinganalyzer.py +++ b/src/spikeinterface/core/sortinganalyzer.py @@ -817,9 +817,7 @@ def _handle_backward_compatibility_settings_pre_init(cls, settings: dict[str, An def main_channel_indices(self): if self._main_channel_indices is None: sorting_main_channel_ids = self.get_sorting_property("main_channel_id") - if sorting_main_channel_ids is not None and ( - self.has_recording() or self.rec_attributes - ): + if sorting_main_channel_ids is not None and (self.has_recording() or self.rec_attributes): if self.has_recording(): main_channel_indices = self.recording.ids_to_indices(sorting_main_channel_ids) elif self.rec_attributes.get("channel_ids"):