spikeinterface icon indicating copy to clipboard operation
spikeinterface copied to clipboard

NotImplementedError: time_vector for InterpolateMotionRecording do not work because temporal_bins start from 0

Open chiyu1203 opened this issue 1 year ago • 0 comments

I built up our analysis pipeline via spikeinterface packages. Initially, I was able to run an internal sorter, spykingcircus2, with this pipeline. However, after I added motion correction modules (have tried both nonrigid_accurate and kilosort-like) into the pipeline, upgraded spikeinterface from 0.99.0 to 0.100.4, I started to see error message when I used the internal sorter (I can use kilosort4 on this pipeline though). Could anyone suggest me what might go wrong? Here is the code I ran the sorters

            recording_saved = si.read_zarr(oe_folder / "preprocessed_compressed.zarr")
            print(recording_saved.get_property_keys())
            fs = recording_saved.get_sampling_frequency()
            recording_saved.annotate(is_filtered=True)

            motion_folder=oe_folder / "motion"
            if not os.path.exists(motion_folder): 
                rec_correct_motion=spre.correct_motion(recording=recording_saved, preset="nonrigid_accurate", folder=motion_folder)
            else:         
                motion_info=spre.load_motion_info(motion_folder)
                rec_correct_motion = interpolate_motion(
                  recording=recording_saved,
                  motion=motion_info['motion'],
                  temporal_bins=motion_info['temporal_bins'],
                  spatial_bins=motion_info['spatial_bins'],
                  **motion_info['parameters']['interpolate_motion_kwargs'])
            
            recording_saved=rec_correct_motion
            sorter_params=ss.get_default_sorter_params(this_sorter)       
            sorting_spikes = ss.run_sorter(sorter_name=this_sorter, recording=recording_saved, remove_existing_folder=True,
                                        output_folder=oe_folder / result_folder_name,
                                        verbose=True,job_kwargs=job_kwargs)

Here is the error message.

Exception has occurred: SpikeSortingError Spike sorting error trace: Traceback (most recent call last): File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\sorters\basesorter.py", line 258, in run_from_folder SorterClass._run_from_folder(sorter_output_folder, sorter_params, verbose) File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\sorters\internal\spyking_circus2.py", line 118, in _run_from_folder recording_f = zscore(recording_f, dtype="float32") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\preprocessing\normalize_scale.py", line 296, in init random_data = get_random_data_chunks(recording, return_scaled=False, **random_chunk_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\recording_tools.py", line 556, in get_random_data_chunks segment_trace_chunk = [ ^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\recording_tools.py", line 557, in recording.get_traces( File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\baserecording.py", line 288, in get_traces traces = rs.get_traces(start_frame=start_frame, end_frame=end_frame, channel_indices=channel_indices) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\preprocessing\common_reference.py", line 182, in get_traces traces = self.parent_recording_segment.get_traces(start_frame, end_frame, slice(None)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\preprocessing\filter.py", line 132, in get_traces traces_chunk, left_margin, right_margin = get_chunk_with_margin( ^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\recording_tools.py", line 721, in get_chunk_with_margin traces_chunk = rec_segment.get_traces( ^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\sortingcomponents\motion_interpolation.py", line 387, in get_traces raise NotImplementedError( NotImplementedError: time_vector for InterpolateMotionRecording do not work because temporal_bins start from 0

Spike sorting failed. You can inspect the runtime trace in Z:\DATA\experiment_openEphys\P-series-32channels\2024-04-22_01-09-50\results_SC2/spikeinterface_log.json. File "C:\Users\neuroPC\Documents\GitHub\ephys\raw2si.py", line 180, in main sorting_spikes = ss.run_sorter(sorter_name=this_sorter, recording=recording_saved, remove_existing_folder=True, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\neuroPC\Documents\GitHub\ephys\raw2si.py", line 285, in recording_saved,sorting_spikes=main(thisDir, json_file) ^^^^^^^^^^^^^^^^^^^^^^^^ spikeinterface.sorters.utils.misc.SpikeSortingError: Spike sorting error trace: Traceback (most recent call last): File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\sorters\basesorter.py", line 258, in run_from_folder SorterClass._run_from_folder(sorter_output_folder, sorter_params, verbose) File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\sorters\internal\spyking_circus2.py", line 118, in _run_from_folder recording_f = zscore(recording_f, dtype="float32") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\preprocessing\normalize_scale.py", line 296, in init random_data = get_random_data_chunks(recording, return_scaled=False, **random_chunk_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\recording_tools.py", line 556, in get_random_data_chunks segment_trace_chunk = [ ^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\recording_tools.py", line 557, in recording.get_traces( File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\baserecording.py", line 288, in get_traces traces = rs.get_traces(start_frame=start_frame, end_frame=end_frame, channel_indices=channel_indices) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\preprocessing\common_reference.py", line 182, in get_traces traces = self.parent_recording_segment.get_traces(start_frame, end_frame, slice(None)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\preprocessing\filter.py", line 132, in get_traces traces_chunk, left_margin, right_margin = get_chunk_with_margin( ^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\recording_tools.py", line 721, in get_chunk_with_margin traces_chunk = rec_segment.get_traces( ^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\sortingcomponents\motion_interpolation.py", line 387, in get_traces raise NotImplementedError( NotImplementedError: time_vector for InterpolateMotionRecording do not work because temporal_bins start from 0

Spike sorting failed. You can inspect the runtime trace in Z:\DATA\experiment_openEphys\P-series-32channels\2024-04-22_01-09-50\results_SC2/spikeinterface_log.json.

Here is the spikeinterface_log.json

{ "sorter_name": "spykingcircus2", "sorter_version": "2.0", "datetime": "2024-04-25T10:43:19.459617", "runtime_trace": [], "error": true, "error_trace": "Traceback (most recent call last):\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\sorters\basesorter.py", line 258, in run_from_folder\n SorterClass._run_from_folder(sorter_output_folder, sorter_params, verbose)\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\sorters\internal\spyking_circus2.py", line 118, in _run_from_folder\n recording_f = zscore(recording_f, dtype="float32")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\preprocessing\normalize_scale.py", line 296, in init\n random_data = get_random_data_chunks(recording, return_scaled=False, **random_chunk_kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\recording_tools.py", line 556, in get_random_data_chunks\n segment_trace_chunk = [\n ^\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\recording_tools.py", line 557, in \n recording.get_traces(\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\baserecording.py", line 288, in get_traces\n traces = rs.get_traces(start_frame=start_frame, end_frame=end_frame, channel_indices=channel_indices)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\preprocessing\common_reference.py", line 182, in get_traces\n traces = self.parent_recording_segment.get_traces(start_frame, end_frame, slice(None))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\preprocessing\filter.py", line 132, in get_traces\n traces_chunk, left_margin, right_margin = get_chunk_with_margin(\n ^^^^^^^^^^^^^^^^^^^^^^\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\core\recording_tools.py", line 721, in get_chunk_with_margin\n traces_chunk = rec_segment.get_traces(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "c:\Users\neuroPC\anaconda3\envs\ibl\Lib\site-packages\spikeinterface\sortingcomponents\motion_interpolation.py", line 387, in get_traces\n raise NotImplementedError(\nNotImplementedError: time_vector for InterpolateMotionRecording do not work because temporal_bins start from 0\n", "run_time": null }

chiyu1203 avatar Apr 25 '24 11:04 chiyu1203