Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
chiyu1203 opened this issue Apr 25, 2024 · 0 comments
Labels
motion correction Questions related to motion correction question General question regarding SI

Comments

@chiyu1203
Copy link

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
}

@zm711 zm711 added question General question regarding SI motion correction Questions related to motion correction labels Apr 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
motion correction Questions related to motion correction question General question regarding SI
Projects
None yet
Development

No branches or pull requests

2 participants