sorting_analyzer.compute("amplitude_scalings") returned numpy.linalg.LinAlgError: Matrix is singular.
Dear Spikeinterface community,
I used sorting_analyzer.compute("amplitude_scalings") on Spikeinterface 0.101.0 (installing from source).
numpy version is 1.26.4
Kilosort 4.0.4
Window11
I first did spike sorting on Kilosort4 and manually curated on phy. Then I created the sorting_analyser with binary_folder format, and sparse =True, and I used the default setting to compute this "ampliteude_scalings". However, it returned this error.
concurrent.futures.process._RemoteTraceback: """ Traceback (most recent call last): File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\concurrent\futures\process.py", line 246, in _process_worker r = call_item.fn(*call_item.args, **call_item.kwargs) File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\concurrent\futures\process.py", line 205, in _process_chunk return [fn(*args) for args in chunk] File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\concurrent\futures\process.py", line 205, in
return [fn(*args) for args in chunk] File "C:\Users\neuroPC\Documents\GitHub\spikeinterface\src\spikeinterface\core\job_tools.py", line 466, in function_wrapper return _func(segment_index, start_frame, end_frame, _worker_ctx) File "C:\Users\neuroPC\Documents\GitHub\spikeinterface\src\spikeinterface\core\node_pipeline.py", line 556, in compute_peak_pipeline_chunk node_output = node.compute(traces_chunk, *node_input_args) File "C:\Users\neuroPC\Documents\GitHub\spikeinterface\src\spikeinterface\postprocessing\amplitude_scalings.py", line 349, in compute scaled_amps = fit_collision( File "C:\Users\neuroPC\Documents\GitHub\spikeinterface\src\spikeinterface\postprocessing\amplitude_scalings.py", line 530, in fit_collision reg = LinearRegression(fit_intercept=True, positive=True).fit(X, y) File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\site-packages\sklearn\base.py", line 1474, in wrapper return fit_method(estimator, *args, **kwargs) File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\site-packages\sklearn\linear_model_base.py", line 611, in fit self.coef = optimize.nnls(X, y)[0] File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\site-packages\scipy\optimize_nnls.py", line 91, in nnls x, rnorm, mode = _nnls(A, b, maxiter, tol=atol) File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\site-packages\scipy\optimize_nnls.py", line 135, in _nnls s[P] = solve(AtA[P_ind[:, None], P_ind[None, :]], Atb[P], File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\site-packages\scipy\linalg_basic.py", line 247, in solve _solve_check(n, info) File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\site-packages\scipy\linalg_basic.py", line 44, in _solve_check raise LinAlgError('Matrix is singular.') numpy.linalg.LinAlgError: Matrix is singular. """ The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "
", line 1, in File "C:\Users\neuroPC\Documents\GitHub\spikeinterface\src\spikeinterface\core\sortinganalyzer.py", line 884, in compute self.compute_several_extensions(extensions=extensions, save=save, **job_kwargs) File "C:\Users\neuroPC\Documents\GitHub\spikeinterface\src\spikeinterface\core\sortinganalyzer.py", line 1027, in compute_several_extensions results = run_node_pipeline( File "C:\Users\neuroPC\Documents\GitHub\spikeinterface\src\spikeinterface\core\node_pipeline.py", line 505, in run_node_pipeline processor.run() File "C:\Users\neuroPC\Documents\GitHub\spikeinterface\src\spikeinterface\core\job_tools.py", line 428, in run for res in results: File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\site-packages\tqdm\std.py", line 1181, in iter for obj in iterable: File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\concurrent\futures\process.py", line 575, in _chain_from_iterable_of_lists for element in iterable: File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\concurrent\futures_base.py", line 621, in result_iterator yield _result_or_cancel(fs.pop()) File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\concurrent\futures_base.py", line 319, in _result_or_cancel return fut.result(timeout) File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\concurrent\futures_base.py", line 458, in result return self.__get_result() File "c:\Users\neuroPC\anaconda3\envs\spike_interface\lib\concurrent\futures_base.py", line 403, in __get_result raise self._exception numpy.linalg.LinAlgError: Matrix is singular.
Could anyone suggest me what might be the issue and how to fix it? There is no much information about calculating this one so I do not know how to fix it myself. All the best,