SpikeInterface / SpikeInterface/spikeinterface
Spike amplitudes crashes on sorting with no units
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 847
- Forks
- 280
- Avg merge
- 3d 9h
- Merged PRs (30d)
- 29
Description
Computing the spike amplitudes crashes when giving a sorting with no unit, rather than simply doing nothing.
import spikeinterface.core as si
import spikeinterface.postprocessing as spost
recording = si.load_extractor("recording.bin")
sorting = si.NumpySorting.from_unit_dict({}, 30000) # Also works with si.load_extractor("sorting").select_units([])
wvf_extractor = si.extract_waveforms(recording, sorting, mode="memory", allow_unfiltered=True) # Also same error message when using `mode="folder"`
extract waveforms shared_memory multi buffer:
spost.compute_spike_amplitudes(wvf_extractor)
extract amplitudes: 0%| | 0/1765 [00:00<?, ?it/s]Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/export/home1/users/nsr/wyngaard/dev/spikeinterface/spikeinterface/src/spikeinterface/postprocessing/spike_amplitudes.py", line 171, in compute_spike_amplitudes
sac.run(**job_kwargs)
File "/export/home1/users/nsr/wyngaard/dev/spikeinterface/spikeinterface/src/spikeinterface/core/waveform_extractor.py", line 1964, in run
self._run(**kwargs)
File "/export/home1/users/nsr/wyngaard/dev/spikeinterface/spikeinterface/src/spikeinterface/postprocessing/spike_amplitudes.py", line 80, in _run
out = processor.run()
^^^^^^^^^^^^^^^
File "/export/home1/users/nsr/wyngaard/dev/spikeinterface/spikeinterface/src/spikeinterface/core/job_tools.py", line 377, in run
worker_ctx = self.init_func(*self.init_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/export/home1/users/nsr/wyngaard/dev/spikeinterface/spikeinterface/src/spikeinterface/postprocessing/spike_amplitudes.py", line 186, in _init_worker_spike_amplitudes
worker_ctx["min_shift"] = np.min(peak_shifts)
^^^^^^^^^^^^^^^^^^^
File "/users/nsr/wyngaard/dev/miniconda3/envs/lussac/lib/python3.11/site-packages/numpy/core/fromnumeric.py", line 2953, in min
return _wrapreduction(a, np.minimum, 'min', axis, None, out,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/users/nsr/wyngaard/dev/miniconda3/envs/lussac/lib/python3.11/site-packages/numpy/core/fromnumeric.py", line 88, in _wrapreduction
return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: zero-size array to reduction operation minimum which has no identity
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in spikeinterface/postprocessing/spike_amplitudes.py, especially compute_spike_amplitudes(), _run(), and _init_worker_spike_amplitudes(), where the traceback reaches np.min(peak_shifts). Reproduce with an empty NumpySorting and waveform extractor using the issue’s example. Done means computing spike amplitudes with no units completes without the zero-size reduction error and performs no unnecessary work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- numpy, python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100