magnipy: Metric Space Magnitude Computations
This is a repository for computing the magnitude of a metric space, which encodes the effective size, diversity, and geometry of a metric space. Given a dataset or distance matrix, magnitude measures the effective number of distinct points in the space at a scale of dissimilarity between observations. We introduce the following codebase to compute and compare the magnitude of metric spaces.
🔍 Main Functionalities and Classes
Magnipy: For in-depth magnitude computations on a single metric space.
The functionalities of Magnipy for an individual metric space include:
- Computing the metric space's distance matrix based on a feature space (attributes), adjecencies between observations (structure), or both features and adjecencies (full).
- Calculating the similarity matrix from the distances
- Executing an automated scale-finding procedure to find suitable evaluation scales
- Computing the magnitude weight of each point across multiple distance scales
- Evaluating and plotting magnitude functions across varying distance scales
- Estimating magnitude dimension profiles and calculating the magnitude dimension to quantify intrinsic dimensionality
Diversipy: For comparing magnitude (and thus diversity) across multiple datasets.
The functionalities of Diversipy for a list of spaces (that share the same distance metric) include:
- Executing an automated scale-finding procedure and the determining a common evaluation interval across datasets
- Computing magnitude functions across varying distance scales
- Calculating MagArea, the area under a magnitude function, a multi-scale measure of the intrinsic diversity of a dataset
- Calculating MagDiff, the area between magnitude functions, to measure the difference in diversity between datasets
Graphipy: For in-depth magnitude computations on a single metric graph.
The functionalities of Graphipy for an individual metric graph include:
- Calculating the magnitude of a
networkxgraph by computing magnitude seperately for each disconnected subgraph - Computing the metric based of features (attributes), graph structure (structure), or both features and graph structure (full).
- Other functionalities similar to
Magnipy
⚙️ Dependencies
To get started,
- Clone this repository locally into a directory of your choosing
- Create and activate a new Python virtual environment
Our dependencies are managed using the poetry package manager. Using your activated virtual environment, run the following to install poetry:
$ pip install poetry
With poetry installed, run the following command from the main directory to download the necessary dependencies:
$ poetry install
📚 Tutorials
Tutorials demonstrating the main functionalities can be found under the notebooks folder.
The following tutorials demonstrate how to initialize and utiltize the corresponding classes:
magnipy_tutorial.ipynb: UsingMagnipyfor computing the magnitude of one metric spacediversipy_tutorial.ipynb: UsingDiversipyfor comparing the magnitude of multiple metric spacesgraphipy_tutorial.ipynb: UsingGraphipyfor computing the magnitude of metric graphs
The following supplementary demos are also provided:
mode_dropping.ipynb: UsingMagDifffor detecting mode dropping / mode collapse
📝 Citation
Please consider citing our work!
@inproceedings{limbeck2025geometry,
title = {Geometry-aware Edge Pooling for Graph Neural Networks},
author = {Katharina Limbeck and Lydia Mezrag and Guy Wolf and Bastian Rieck},
booktitle = {Advances in Neural Information Processing Systems},
volume = {38},
year = {2025}
}
@inproceedings{limbeck2024metric,
title = {Metric Space Magnitude for Evaluating the Diversity of Latent Representations},
author = {Katharina Limbeck and Rayna Andreeva and Rik Sarkar and Bastian Rieck},
booktitle = {Advances in Neural Information Processing Systems},
volume = {37},
year = {2024}
}
@inproceedings{andreeva2023metric,
title = {Metric Space Magnitude and Generalisation in Neural Networks},
author = {Andreeva, Rayna and Limbeck, Katharina and Rieck, Bastian and Sarkar, Rik},
year = {2023},
booktitle = {Proceedings of 2nd Annual Workshop on Topology, Algebra, and Geometry in Machine Learning~(TAG-ML)},
volume = {221},
pages = {242--253}
}
Metadata
Release files for magnipy 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| magnipy-1.0.0.tar.gz | 39.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| magnipy-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 88.7 kB
Release files / magnipy-1.0.0.tar.gz
| Download URL | magnipy-1.0.0.tar.gz |
|---|---|
| Size | 39.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c19cce9d73e537e3133c232316d2402baea86d666f4382c28079cef410843718
|
|
BLAKE2b-256 checksum How to use checksums |
452868ca9d31e190f471a5d9a533c9760a0b44a5dae2542d2e7134a4ae636c39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.1 CPython/3.12.3 Linux/6.17.0-1025-oem
|
Release files / magnipy-1.0.0-py3-none-any.whl
| Download URL | magnipy-1.0.0-py3-none-any.whl |
|---|---|
| Size | 49.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
11f1536ee4ed5ee92b92e8d42ab113b9a0212f2f6839cc7aa70f8a3dcd64dc3e
|
|
BLAKE2b-256 checksum How to use checksums |
d7abc5d883218ff97e97b7a9fdc17d298e686f60cd93f2f09657017867ab5d23
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.1 CPython/3.12.3 Linux/6.17.0-1025-oem
|