SpikeInterface / spikeinterface

A Python-based module for creating flexible and robust spike sorting pipelines.
https://spikeinterface.readthedocs.io
MIT License
531 stars 188 forks source link

Some improvements to time handling #3546

Open JoeZiminski opened 2 days ago

JoeZiminski commented 2 days ago

As discussed in #3509, some improvements to the time-handling could be made:

1) get_times() returns a view to the segment time_vector if it exist. This means that changing the returned array will also change the one stored on the segment. This is different behaviour to if .t_start is used under the hood, as the array will be generated on the fly. I think everyone is agreed that get_times() should return a copy of the time_vector (if it exists).

2) copy.deepcopy(recording) or I think recording.clone() does not copy the time_vector. This is discussed here. An fix could be:

What about times for clone()? This is not handled at the BaseExtractor level but the BaseRecording could override it or add an clone_extra_stuff() in base class and the BaseRecording could just implement it