A Python Library for Learning Non-Euclidean Representations

machine-learning manifold-learning non-euclidean-geometry pytorch
11 Open Issues Need Help Last updated: Jun 26, 2025

Open Issues Need Help

View All on GitHub

AI Summary: Implement the mean average precision (mAP) loss function in the Manify Python library. This involves referencing the definition of mAP from Gu et al. (2019) and a provided reference implementation, and integrating the function into the existing `_losses.py` file.

Complexity: 4/5
enhancement help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: Rewrite the existing stereographic logits implementation in the Manify Python library for non-Euclidean machine learning, simplifying it by using the `geoopt.manifolds.stereographic.math.dist2plane` function for calculating distances to a hyperplane. This aims to improve code readability and potentially efficiency, aligning with the conventional approach described in the kappa-GCN paper.

Complexity: 4/5
help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: The task is to create a consolidated "Manifold-Apply" layer in the `manify.predictors.nn.layers` submodule. This layer will generalize several existing layers that share the structure `expmap(f(logmap(X)))`, where `f` is a Euclidean function. This involves refactoring the Stereographic layer norm and the Kappa-GCN layer's nonlinearity, and potentially expressing the `mobius_matvec` operation using `expmap` and `logmap`, along with writing a unit test to verify this equivalence.

Complexity: 4/5
enhancement help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: The task involves adding comprehensive tests to a Python library for non-Euclidean geometry. This includes verifying existing functionality across various modules (manifolds, embedders, predictors), checking for equivalence between different implementations, and ensuring the correctness of new features like stereographic projections. Tests will be derived from legacy Jupyter notebooks, requiring careful translation and adaptation to a formal testing framework.

Complexity: 4/5
help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: Improve the numerical stability of the `embedder` module and Kappa-GCN in the Manify Python library. This involves identifying and addressing the sources of numerical instability, likely related to high learning rates, that cause optimization failures. Solutions might involve exploring alternative optimization algorithms, gradient scaling techniques beyond clipping, or careful regularization strategies.

Complexity: 4/5
help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: Implement a batched version of the `KappaGCNLayer` class in the Manify Python library to improve memory efficiency when processing large datasets. This involves modifying the existing code to handle batches of data points during the graph convolutional operations, particularly focusing on the left-multiplication phase. Benchmarking the memory usage and performance of the batched and non-batched versions is also required to verify the improvement.

Complexity: 4/5
enhancement help wanted

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: Modify the `Manifold.sample()` method in the Manify Python library to accept a `shape` or `size` parameter for generating multiple points from the same distribution, simplifying code in other parts of the library while ensuring backward compatibility with existing uses of the method that require different means and variances for each point.

Complexity: 4/5
enhancement help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: Implement a Product Space Principal Component Analysis (PCA) algorithm as a new submodule within the existing Manify Python library. This involves creating a new `unsupervised` submodule containing the necessary classes and functions, referencing existing implementations and the provided research paper for guidance.

Complexity: 4/5
enhancement help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: Implement a greedy algorithm for signature selection in a Python library for non-Euclidean geometry, based on the description in Tabaghi et al. (2021) and a stub class provided in the Manify repository. The algorithm aims to estimate the optimal signature for representing data in a product manifold.

Complexity: 4/5
enhancement help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: Implement the `sectional_curvature` function in the `manify` Python library. This involves creating a robust and efficient implementation based on the algorithm described in Gu et al. (2019) and potentially leveraging existing code from the HazyResearch/hyperbolics repository as a reference. The function should accurately estimate the sectional curvature of a given manifold.

Complexity: 4/5
enhancement help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch

AI Summary: Implement three classes: StereographicLayerNorm, StereographicAttention, and StereographicTransformer for handling mixed-curvature attention mechanisms in a Python library. This involves adapting existing code from a separate project and referencing a research paper for the method's details. The implementation should integrate seamlessly with the existing library's manifold and predictor modules.

Complexity: 4/5
enhancement help wanted good first issue

A Python Library for Learning Non-Euclidean Representations

Jupyter Notebook
#machine-learning#manifold-learning#non-euclidean-geometry#pytorch