From 2bd3f4b0143efbfffdc597aeb365ed5ce1474c65 Mon Sep 17 00:00:00 2001 From: Matthias H Hennig Date: Fri, 5 Dec 2025 09:24:26 +0000 Subject: [PATCH 1/2] Fix artifact removal logic to handle padding correctly in RemoveArtifactsRecordingSegment Previously artifacts would not be removed if the trigger was before `start_frame` but the blanking carried on beyond. Only tested on `zeros` mode. --- src/spikeinterface/preprocessing/remove_artifacts.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/spikeinterface/preprocessing/remove_artifacts.py b/src/spikeinterface/preprocessing/remove_artifacts.py index 60780856b0..00a7482fea 100644 --- a/src/spikeinterface/preprocessing/remove_artifacts.py +++ b/src/spikeinterface/preprocessing/remove_artifacts.py @@ -263,12 +263,14 @@ def get_traces(self, start_frame, end_frame, channel_indices): traces = self.parent_recording_segment.get_traces(start_frame, end_frame, channel_indices) traces = traces.copy() - mask = (self.triggers >= start_frame) & (self.triggers < end_frame) + pad = self.pad + if pad is None: + mask = (self.triggers >= start_frame) & (self.triggers < end_frame) + else: + mask = (self.triggers >= start_frame - pad[1]) & (self.triggers < end_frame) triggers = self.triggers[mask] - start_frame labels = self.labels[mask] - pad = self.pad - if self.mode == "zeros": for trig in triggers: if pad is None: From 5d073b1b3d0ada36810fcb768730257e5305bf8f Mon Sep 17 00:00:00 2001 From: "Matthias H. Hennig" Date: Fri, 5 Dec 2025 10:49:05 +0000 Subject: [PATCH 2/2] Update src/spikeinterface/preprocessing/remove_artifacts.py Co-authored-by: Chris Halcrow <57948917+chrishalcrow@users.noreply.github.com> --- src/spikeinterface/preprocessing/remove_artifacts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spikeinterface/preprocessing/remove_artifacts.py b/src/spikeinterface/preprocessing/remove_artifacts.py index 00a7482fea..6eece4ce61 100644 --- a/src/spikeinterface/preprocessing/remove_artifacts.py +++ b/src/spikeinterface/preprocessing/remove_artifacts.py @@ -267,7 +267,7 @@ def get_traces(self, start_frame, end_frame, channel_indices): if pad is None: mask = (self.triggers >= start_frame) & (self.triggers < end_frame) else: - mask = (self.triggers >= start_frame - pad[1]) & (self.triggers < end_frame) + mask = (self.triggers >= start_frame - pad[1]) & (self.triggers < end_frame + pad[0]) triggers = self.triggers[mask] - start_frame labels = self.labels[mask]