Skip to content

JuliaManifolds/Manifolds.jl

Repository files navigation

Manifolds.jl logo with text on the side
Documentation Source Citation
code style: runic arXiv
CI DOI
codecov

Package Manifolds.jl aims to provide both a unified interface to define and use manifolds as well as a library of manifolds to use for your projects. This package is mostly stable, see #438 for planned upcoming changes.

Getting started

To install the package just type

using Pkg; Pkg.add("Manifolds")

Then you can directly start, for example to stop half way from the north pole on the Sphere to a point on the equator, you can generate the shortest_geodesic. It internally employs exp and log.

using Manifolds
M = Sphere(2)
γ = shortest_geodesic(M, [0., 0., 1.], [0., 1., 0.])
γ(0.5)

Ecosystem highlights

  • A wide selection of Riemannian manifolds like spheres, hyperbolic spaces, Stiefel and Grassmann manifolds.
  • Support for optimization on manifolds using Manopt.jl.
  • Support for many operations used in optimization and manifold-valued statistics with a focus on performance and ease of use.
  • Connection manifolds.
  • Lie groups.
  • Atlases, charts and custom metrics (work in progress).
  • A lightweight interface package: ManifoldsBase.jl.
  • Differential equations on manifolds: ManifoldDiffEq.jl.
  • Finite differences and automatic differentiation on manifolds using ManifoldDiff.jl (work in progress).
  • Integration and measures on manifolds: ManifoldMeasures.jl (work in progress).
  • Functional manifolds: FunManifolds.jl (work in progress).

Support

If you have any questions regarding the Manifolds.jl ecosystem feel free to reach us using Github discussion forums, Julia Slack, Julia Zulip or Julia discourse forums. We are interested in new applications and methods on manifolds -- sharing your work is welcome!

Citation

If you use Manifolds.jl in your work, please cite the following open access article:

Axen, S. D., Baran, M., Bergmann, R., Rzecki, K. (2023). Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds, ACM Transactions on Mathematical Software, Volume 49, Issue 4, Article No. 33, pages 1–23.
doi: 10.1145/3618296, arXiv: 2106.08777

AxenBaranBergmannRzecki:2023(BibLaTeX)
@article{AxenBaranBergmannRzecki:2023,
    AUTHOR    = {Axen, Seth D. and Baran, Mateusz and Bergmann, Ronny and Rzecki, Krzysztof},
    ARTICLENO = {33},
    DOI       = {10.1145/3618296},
    JOURNAL   = {ACM Transactions on Mathematical Software},
    MONTH     = {dec},
    NUMBER    = {4},
    TITLE     = {Manifolds.Jl: An Extensible Julia Framework for Data Analysis on Manifolds},
    VOLUME    = {49},
    YEAR      = {2023}
}

To refer to a certain version we recommend to also cite the code repository directly. For example to refer to the most recent version

Axen, S. D., Baran, M., Bergmann, R. (2026). Manifolds.jl, Zenodo.
doi: 10.5281/zenodo.4292129

Manifoldsjl-zenodo-mostrecent (BibLaTeX)
@software{manifoldsjl-zenodo-mostrecent,
  Author = {Seth D. Axen and Mateusz Baran and Ronny Bergmann},
  Title = {Manifolds.jl},
  Doi = {10.5281/zenodo.4292129},
  Url = {https://zenodo.org/record/4292129},
  Publisher = {Zenodo},
  Year = {2021},
  Copyright = {MIT License}
}

for a corresponding version specific DOI, see the list of all versions.

About

Manifolds.jl provides a library of manifolds aiming for an easy-to-use and fast implementation.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages