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()