Manifolds.jl & ManifoldsBase.jl

Manifolds.jl provides a library of manifolds based on the ManifoldsBase.jl interface to get an easy start to use manifolds within you project. It aims to provide a simple and efficient implementation of all necessary functions on manifolds.

References

  1. AxenBaranBergmannRzecki-2023
    Publication illustration image
    Axen, S. D., Baran, M., Bergmann, R., Rzecki, K.2023Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds
    ACM Transactions on Mathematical Software494

    We present the Julia package Manifolds.jl, providing a fast and easy-to-use library of Riemannian manifolds and Lie groups. This package enables working with data defined on a Riemannian manifold, such as the circle, the sphere, symmetric positive definite matrices, or one of the models for hyperbolic spaces. We introduce a common interface, available in ManifoldsBase.jl, with which new manifolds, applications, and algorithms can be implemented. We demonstrate the utility of Manifolds.jl using Bézier splines, an optimization task on manifolds, and principal component analysis on nonlinear data. In a benchmark, Manifolds.jl outperforms all comparable packages for low-dimensional manifolds in speed; over Python and Matlab packages, the improvement is often several orders of magnitude, while over C/C++ packages, the improvement is two-fold. For high-dimensional manifolds, it outperforms all packages except for Tensorflow-Riemopt, which is specifically tailored for high-dimensional manifolds.

    @article{AxenBaranBergmannRzecki-2023, number = {4}, doi = {10.1145/3618296}, author = {Axen, S. D. and Baran, M. and Bergmann, R. and Rzecki, K.}, eprint = {2106.08777}, year = {2023}, eprinttype = {arXiv}, volume = {49}, journaltitle = {ACM Transactions on Mathematical Software}, title = {Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds}, abstract = { We present the Julia package Manifolds.jl, providing a fast and easy-to-use library of Riemannian manifolds and Lie groups. This package enables working with data defined on a Riemannian manifold, such as the circle, the sphere, symmetric positive definite matrices, or one of the models for hyperbolic spaces. We introduce a common interface, available in ManifoldsBase.jl, with which new manifolds, applications, and algorithms can be implemented. We demonstrate the utility of Manifolds.jl using Bézier splines, an optimization task on manifolds, and principal component analysis on nonlinear data. In a benchmark, Manifolds.jl outperforms all comparable packages for low-dimensional manifolds in speed; over Python and Matlab packages, the improvement is often several orders of magnitude, while over C/C++ packages, the improvement is two-fold. For high-dimensional manifolds, it outperforms all packages except for Tensorflow-Riemopt, which is specifically tailored for high-dimensional manifolds. }, }