-
Notifications
You must be signed in to change notification settings - Fork 54
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
I run into this error for some of my EEG inputs when I run the meegkit.asr.asr_process():
ValueError: Covariance matrices must be positive definite. Add regularization to avoid this error.
Complete error message:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-199-a17002d5a7b8> in <module>
52 am = 0
53 for i in range(len(X_t_w)):
---> 54 x_t_w = asrC.transform(X_t_w[i].T).T
55 # x_t_w = octave.asr_process(X_t_w[i].T, sfreq, asr_state).T
56 X_t = avaDM.LagGenerator(x_t_w, lags)
c:\~\python\python38\lib\site-packages\meegkit\asr.py in transform(self, X, y, **kwargs)
242
243 # Clean data, using covariances weighted by sample_weight
--> 244 out, self.state_ = asr_process(X, X_filt, self.state_,
245 cov=np.stack(self.cov_),
246 method=self.method,
c:\~\python\python38\lib\site-packages\meegkit\asr.py in asr_process(X, X_filt, state, cov, detrend, method, sample_weight)
577 else:
578 if cov.ndim == 3:
--> 579 cov = pyriemann.utils.mean.mean_covariance(
580 cov, metric='riemann', sample_weight=sample_weight)
581
c:\~\python\python38\lib\site-packages\pyriemann\utils\mean.py in mean_covariance(covmats, metric, sample_weight, *args)
330 C = metric(covmats, sample_weight=sample_weight, *args)
331 else:
--> 332 C = mean_methods[metric](covmats, sample_weight=sample_weight, *args)
333 return C
334
c:\~\python\python38\lib\site-packages\pyriemann\utils\mean.py in mean_riemann(covmats, tol, maxiter, init, sample_weight)
59 for index in range(Nt):
60 tmp = numpy.dot(numpy.dot(Cm12, covmats[index, :, :]), Cm12)
---> 61 J += sample_weight[index] * logm(tmp)
62
63 crit = numpy.linalg.norm(J, ord='fro')
c:\~\python\python38\lib\site-packages\pyriemann\utils\base.py in logm(Ci)
44
45 """
---> 46 return _matrix_operator(Ci, numpy.log)
47
48
c:\~\python\python38\lib\site-packages\pyriemann\utils\base.py in _matrix_operator(Ci, operator)
8 """matrix equivalent of an operator."""
9 if Ci.dtype.char in typecodes['AllFloat'] and not numpy.isfinite(Ci).all():
---> 10 raise ValueError("Covariance matrices must be positive definite. Add regularization to avoid this error.")
11 eigvals, eigvects = scipy.linalg.eigh(Ci, check_finite=False)
12 eigvals = numpy.diag(operator(eigvals))
ValueError: Covariance matrices must be positive definite. Add regularization to avoid this error.
Running the same code on Matlab using the same EEG does not give me the error.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working