Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds
Seth D. Axen, Mateusz Baran, Ronny Bergmann, Krzysztof Rzecki
TL;DR
The paper introduces Manifolds.jl and the accompanying ManifoldsBase.jl as a fast, extensible framework for data analysis on Riemannian manifolds and Lie groups in Julia. It presents a unified, decorator-enabled API that supports multiple metrics, representations, and in-place versus allocating computations, with practical demonstrations in Bézier splines, manifold optimization, and tangent-space PCA. Comprehensive benchmarks show competitive to superior performance versus Python/ Matlab libraries and robust accuracy across a range of manifolds, especially at low dimensions, while highlighting trade-offs at very high dimensions where TensorFlow-based backends may outperform. The work enables geometry-aware data analysis in a high-level, expressive language, facilitating integration with existing Julia ecosystems and promoting broader adoption of manifold methods.
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.
