What’s new in the package

A catalog of new features, improvements, and bug-fixes in each release.

v0.13.dev

v0.12 (July 2026)

  • Deprecate pyriemann.utils.covariance.covariances_X() and pyriemann.utils.covariance.cospectrum(). #442 by @qbarthelemy

  • Add Python Array API support for NumPy/PyTorch backend transparency in core utility modules (base, covariance, distance, mean, geodesic, tangentspace, ajd, kernel, median), enabling execution on both NumPy arrays and PyTorch tensors with optional GPU acceleration and autograd support. #433 by @bruAristimunha

  • Move geometry modules (ajd, base, covariance, distance, geodesic, kernel, mean, median, tangentspace, test) from pyriemann.utils to a new standalone pyriemann.geometry subpackage. The old import paths (e.g. pyriemann.utils.mean, pyriemann.utils.kernel, pyriemann.utils.test) still work as backward-compatibility shims but emit a DeprecationWarning; rename to pyriemann.geometry.<module>. The private pyriemann.utils._backend and pyriemann._helpers modules also moved into pyriemann.geometry so that the subpackage is fully standalone (no internal pyriemann imports outside of itself). Module pyriemann.utils.utils is renamed to pyriemann.utils._check with the same shim+warning. Tests for moved modules are renamed test_utils_*test_geometry_*. #445 by @bruAristimunha

  • Enhance pyriemann.geometry.geodesic.geodesic() to accept parameter alpha as an ndarray of shape (...,), allowing a different geodesic position per stacked matrix pair. #396 by @Fashad-Ahmed

  • Add example on Riemannian curvature analysis of sentence trajectories in language model embeddings, demonstrating how local metric tensors (SPD matrices) capture geometric structure in LLM latent spaces and enable classification of semantically distinct sentences using MDM. #448 by @SzczepanK112 and @gcattan

  • Add example on simulated SPD matrices to compare metrics. #451 by @qbarthelemy

  • Add Bini-Meini-Poloni (BMP) mean pyriemann.geometry.mean.mean_bmp(), and Cheap mean pyriemann.geometry.mean.mean_cheap(). #449 by @qbarthelemy

  • Move pyriemann.artifact_detection.Potato and pyriemann.artifact_detection.PotatoField from clustering to artifact_detection. #453 by @qbarthelemy

  • Deprecate pyriemann.datasets.sample_gaussian_spd() renamed into pyriemann.datasets.sample_gaussian(), and enhance it to generate HPD matrices from complex-typed mean for float sigma. #413 by @robrui

  • Add log-Cholesky inner product for Hermitian matrices pyriemann.geometry.tangentspace.innerproduct_logchol(), and improve other inner products. #450 by @qbarthelemy

  • Add __sklearn_is_fitted__ to stateless transformers, so they pass scikit-learn’s check_is_fitted after fit() and can be used inside Pipeline(transform_input=...) (introduced in scikit-learn 1.6). #457 by @bruAristimunha

v0.11 (April 2026)

v0.10 (January 2026)

v0.9 (July 2025)

v0.8 (February 2025)

v0.7 (October 2024)

v0.6 (April 2024)

v0.5 (Jun 2023)

v0.4 (Feb 2023)

v0.3 (July 2022)

v0.2.7 (June 2021)

v0.2.6 (March 2020)

  • Enhance FgMDM adding predict_proba().

  • Add parallel transport for Riemannian metric.

  • Remove support for Python 2, and update code for better scikit-learn v0.22 support. #79 by @alexandrebarachant

v0.2.5 (January 2018)

  • Enhance Xdawn and XdawnCovariances adding parameter baseline_cov.

  • Add FlatChannelRemover transformer. #30 by @kingjr

  • Add Coherences transformer.

  • Enhance Potato adding parameters pos_label and neg_label.

  • Add BilinearFilter transformer.

  • Add Embedding for spectral embedding with Laplacian eigenmaps and pairwise_distance. #54 by @plcrodrigues

  • Add a permutation test for generic scikit-learn estimator.

  • Enhance stats module, with distance based t-test and f-test.

  • Remove two-way permutation test.

  • Add support for Python 3.5 in travis.

  • Add Shrinkage transformer. #38 by @alexandrebarachant

v0.2.4 (June 2016)

  • Improve documentation.

  • Add TSclassifier for out-of the box tangent space classification.

  • Add Wasserstein distance distance_wasserstein() and mean mean_wasserstein().

  • Add KNearestNeighbor for k-NN classifier.

  • Enhance MDM adding predict_proba() which provides softmax probabilities.

  • Enhance XdawnCovariances adding parameter xdawn_estimator.

  • Add CSP for covariance matrices.

  • Add approximate joint diagonalization (AJD) algorithms: rjd(), ajd_pham(), uwedge().

  • Add ALE mean mean_ale().

  • Enhance CSP to support multiclass classification.

  • Correct param name in CospCovariances to comply to scikit-learn.

  • Correct attributes name in most modules to comply to the scikit-learn naming convention.

  • Add HankelCovariances estimation.

  • Enhance CSP adding parameter log, and add SPoC spatial filtering.

  • Add harmonic mean mean_harmonic() and Kullback-Leibler mean mean_kullback_sym().

v0.2.3 (November 2015)

  • Enhance MDM adding parameter n_jobs for multiprocessing with joblib.

  • Add Kullback-Leibler divergences distance_kullback(), distance_kullback_right(), distance_kullback_sym().

  • Add Riemannian Potato for artifact detection.

  • Enhance mean functions and MDM.fit(), adding parameter sample_weight.

  • Enhance TangentSpace adding parameter sample_weight to fit() and fit_transform().

  • Enhance FGDA adding parameter sample_weight to fit() and fit_transform().

  • Enhance ElectrodeSelection adding parameter sample_weight to fit().

v0.2.2 (June 2015)

  • Deprecate parameter est of covariances() and covariances_EP(), renamed into estimator.

  • Enhance MDM adding the possibility to use a dictionary to define parameter metric.

  • Enhance ERPCovariances adding parameter svd.

v0.2 (May 2015)

  • Add generic function distance with parameter metric supporting "riemann", "logeuclid", "euclid" and "logdet" options.

  • Add generic function geodesic with parameter metric supporting "riemann", "logeuclid" and "euclid" options.

  • Add Kmeans and KmeansPerClassTransform for clustering.

  • Split module utils into submodules.

v0.1 (April 2015)

  • Add Minimum Distance to Mean classifier MDM, TangentSpace, and first utils (distance, mean, geodesic, covariance).

  • Add FgMDM and FGDA for classification.

  • Add ElectrodeSelection, Covariances, ERPCovariances, XdawnCovariances, CospCovariances and Xdawn.

  • Add examples for motor imagery and ERP classification.