pyRiemann
raw JSON → 0.11 verified Sat May 09 auth: no python
A Python library for classification and clustering of multivariate data using Riemannian geometry. Provides tools for covariance matrix estimation, geodesic filtering, tangent space mapping, and various classifiers on the manifold of symmetric positive definite matrices. Currently at version 0.11, with semi-annual releases.
pip install pyriemann Common errors
error ImportError: cannot import name 'Covariances' from 'pyriemann.covariance' ↓
cause The Covariances class was moved from pyriemann.covariance to pyriemann.estimation in v0.3.
fix
Use
from pyriemann.estimation import Covariances. error ValueError: X must be of shape (n_trials, n_channels, n_time) ↓
cause Passed 2D array instead of 3D array.
fix
Reshape data to 3D: X = X[np.newaxis, :, :] if single trial, or stack trials.
error ModuleNotFoundError: No module named 'pyriemann' ↓
cause PyRiemann is not installed or virtual environment not activated.
fix
Run
pip install pyriemann and ensure correct environment. error AttributeError: module 'pyriemann.utils.distance' has no attribute 'distance' ↓
cause The `distance` function was removed in v0.11.
fix
Use specific functions like
from pyriemann.utils.distance import distance_riemann. Warnings
breaking In v0.11, the function `pyriemann.utils.distance.distance` was removed. Use `pyriemann.utils.distance` module functions directly. ↓
fix Replace `from pyriemann.utils.distance import distance` with specific distance functions like `from pyriemann.utils.distance import distance_riemann`.
deprecated The module `pyriemann.covariance` is deprecated since v0.3. Symbol `Covariances` has been moved to `pyriemann.estimation`. ↓
fix Use `from pyriemann.estimation import Covariances`.
gotcha All estimators require 3D input (trials × channels × time points). Passing 2D data will raise an error. ↓
fix Ensure X has shape (n_trials, n_channels, n_time).
gotcha Default `Covariances(estimator='scm')` (sample covariance matrix) may be singular for high-dimensional low-sample data. Alternatives like 'lwf' or 'oas' exist. ↓
fix Set estimator parameter: `Covariances(estimator='lwf')` or `Covariances(estimator='oas')`.
Imports
- Covariances wrong
from pyriemann.covariance import Covariancescorrectfrom pyriemann.estimation import Covariances - MDM wrong
from pyriemann.classification import MinimumDistanceToMeancorrectfrom pyriemann.classification import MDM - TSCovariances
from pyriemann.tangentspace import TangentSpace
Quickstart
from pyriemann.estimation import Covariances
from pyriemann.classification import MDM
import numpy as np
# Generate toy data: 10 trials, 3 channels, 100 time points
X = np.random.randn(10, 3, 100)
y = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1])
# Estimate covariance matrices
cov = Covariances().fit_transform(X)
# Classify using Minimum Distance to Mean
clf = MDM().fit(cov, y)
pred = clf.predict(cov)
print(pred)