From 6b3c57905cd4e1a4649ced56f8f28266b84eceea Mon Sep 17 00:00:00 2001 From: Heberto Mayorquin Date: Tue, 20 Oct 2026 16:24:13 -0600 Subject: [PATCH] Save dtype in phase_shift kwargs so it survives reload Co-authored-by: Galen Lynch --- src/spikeinterface/preprocessing/phase_shift.py | 7 ++++++- .../preprocessing/tests/test_phase_shift.py | 14 +++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/spikeinterface/preprocessing/phase_shift.py b/src/spikeinterface/preprocessing/phase_shift.py index c01a9acf59..b7cdb456fd 100644 --- a/src/spikeinterface/preprocessing/phase_shift.py +++ b/src/spikeinterface/preprocessing/phase_shift.py @@ -65,7 +65,12 @@ def __init__(self, recording, margin_ms=40.0, inter_sample_shift=None, dtype=Non # for dumpability if inter_sample_shift is not None: inter_sample_shift = list(inter_sample_shift) - self._kwargs = dict(recording=recording, margin_ms=float(margin_ms), inter_sample_shift=inter_sample_shift) + self._kwargs = dict( + recording=recording, + margin_ms=float(margin_ms), + inter_sample_shift=inter_sample_shift, + dtype=np.dtype(dtype).str, + ) class PhaseShiftRecordingSegment(BasePreprocessorSegment): diff --git a/src/spikeinterface/preprocessing/tests/test_phase_shift.py b/src/spikeinterface/preprocessing/tests/test_phase_shift.py index 23718f6ac6..5d4b74a567 100644 --- a/src/spikeinterface/preprocessing/tests/test_phase_shift.py +++ b/src/spikeinterface/preprocessing/tests/test_phase_shift.py @@ -1,5 +1,6 @@ import numpy as np -from spikeinterface import NumpyRecording +from spikeinterface import NumpyRecording, load +from spikeinterface.core.testing import check_recordings_equal from spikeinterface.preprocessing import phase_shift @@ -112,5 +113,16 @@ def signal(time): np.testing.assert_allclose(shifted_traces[interior], expected[interior], atol=1e-3) +def test_phase_shift_dtype_survives_reload(): + traces, sampling_frequency, inter_sample_shift = create_shifted_channel() + recording = NumpyRecording([traces.astype("int16")], sampling_frequency) + recording.set_property("inter_sample_shift", inter_sample_shift) + + shifted = phase_shift(recording, dtype="float32") + reloaded = load(shifted.to_dict()) + + check_recordings_equal(shifted, reloaded, return_in_uV=False) + + if __name__ == "__main__": test_phase_shift()