{"id":28099,"library":"pyriemann","title":"pyRiemann","description":"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.","status":"active","version":"0.11","language":"python","source_language":"en","source_url":"https://github.com/pyRiemann/pyRiemann","tags":["riemannian-geometry","manifold-learning","bci","covariance-matrix","classification"],"install":[{"cmd":"pip install pyriemann","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"Required for classification, clustering, and model selection utilities.","package":"scikit-learn","optional":false},{"reason":"Core numerical operations.","package":"numpy","optional":false},{"reason":"Linear algebra and distance computation.","package":"scipy","optional":false},{"reason":"Parallel processing for cross-validation.","package":"joblib","optional":false}],"imports":[{"note":"Covariances moved to the estimation module in v0.3.","wrong":"from pyriemann.covariance import Covariances","symbol":"Covariances","correct":"from pyriemann.estimation import Covariances"},{"note":"MinimumDistanceToMean is deprecated since v0.7; use MDM.","wrong":"from pyriemann.classification import MinimumDistanceToMean","symbol":"MDM","correct":"from pyriemann.classification import MDM"},{"note":"No common wrong import.","symbol":"TSCovariances","correct":"from pyriemann.tangentspace import TangentSpace"}],"quickstart":{"code":"from pyriemann.estimation import Covariances\nfrom pyriemann.classification import MDM\nimport numpy as np\n\n# Generate toy data: 10 trials, 3 channels, 100 time points\nX = np.random.randn(10, 3, 100)\ny = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1])\n\n# Estimate covariance matrices\ncov = Covariances().fit_transform(X)\n\n# Classify using Minimum Distance to Mean\nclf = MDM().fit(cov, y)\npred = clf.predict(cov)\nprint(pred)","lang":"python","description":"Estimate covariance matrices from multivariate time series and classify with Riemannian distance."},"warnings":[{"fix":"Replace `from pyriemann.utils.distance import distance` with specific distance functions like `from pyriemann.utils.distance import distance_riemann`.","message":"In v0.11, the function `pyriemann.utils.distance.distance` was removed. Use `pyriemann.utils.distance` module functions directly.","severity":"breaking","affected_versions":">=0.11"},{"fix":"Use `from pyriemann.estimation import Covariances`.","message":"The module `pyriemann.covariance` is deprecated since v0.3. Symbol `Covariances` has been moved to `pyriemann.estimation`.","severity":"deprecated","affected_versions":">=0.3"},{"fix":"Ensure X has shape (n_trials, n_channels, n_time).","message":"All estimators require 3D input (trials × channels × time points). Passing 2D data will raise an error.","severity":"gotcha","affected_versions":"all"},{"fix":"Set estimator parameter: `Covariances(estimator='lwf')` or `Covariances(estimator='oas')`.","message":"Default `Covariances(estimator='scm')` (sample covariance matrix) may be singular for high-dimensional low-sample data. Alternatives like 'lwf' or 'oas' exist.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Use `from pyriemann.estimation import Covariances`.","cause":"The Covariances class was moved from pyriemann.covariance to pyriemann.estimation in v0.3.","error":"ImportError: cannot import name 'Covariances' from 'pyriemann.covariance'"},{"fix":"Reshape data to 3D: X = X[np.newaxis, :, :] if single trial, or stack trials.","cause":"Passed 2D array instead of 3D array.","error":"ValueError: X must be of shape (n_trials, n_channels, n_time)"},{"fix":"Run `pip install pyriemann` and ensure correct environment.","cause":"PyRiemann is not installed or virtual environment not activated.","error":"ModuleNotFoundError: No module named 'pyriemann'"},{"fix":"Use specific functions like `from pyriemann.utils.distance import distance_riemann`.","cause":"The `distance` function was removed in v0.11.","error":"AttributeError: module 'pyriemann.utils.distance' has no attribute 'distance'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}