GeoSinkhorn
Code for the paper Geodesic Sinkhorn for Fast and Accurate Optimal Transport on Manifolds.
[!NOTE]
This repository is still in development.
Installation
You can install the library from PyPI by running:
pip install geosink
Or using Git, by first cloning the repository and running:
pip install -e .
If you want to use the pre existing graph tools, run:
pip install -e .['graph']
To run the tests, you will need additional packages. Install them by running:
pip install -e .['dev']
Minimal Example
You can reproduce this example in the following notebook .
We build a graph between two Gaussian distributions and compute the distance between two signals on that graph.
import numpy as np
from geosink.sinkhorn import GeoSinkhorn
from geosink.heat_kernel import laplacian_from_data
# Generate data and build graph.
data0 = np.random.normal(0, 1, (100, 5))
data1 = np.random.normal(5, 1, (100, 5))
data = np.concatenate([data0, data1], axis=0)
lap = laplacian_from_data(data, sigma=1.0)
# instantiate the GeoSinkhorn class
geo_sinkhorn = GeoSinkhorn(tau=5.0, order=10, method="cheb", lap=lap)
# create two signals
m_0 = np.zeros(200,)
m_0[:100] = 1
m_0 = m_0 / np.sum(m_0)
m_1 = np.zeros(200,)
m_1[100:] = 1
m_1 = m_1 / np.sum(m_1)
# compute the distance between the two signals
dist_w = geo_sinkhorn(m_0, m_1, max_iter=500)
print(dist_w)
Note that it is also possible to provide a graph instance directly to the GeoSinkhorn class with GeoSinkhorn(tau=1.0, order=10, method="cheb", graph=graph). The graph must have a Laplacian attribute graph.L. We suggest using a sparse Laplacian (e.g. in COO format) for better performance.
How to Cite
If you find this code useful in your research, please cite the following paper (expand for BibTeX):
Huguet, G., Tong, A., Zapatero, M. R., Tape, C. J., Wolf, G., & Krishnaswamy, S. (2023). Geodesic Sinkhorn for fast and accurate optimal transport on manifolds. In 2023 IEEE 33rd International Workshop on Machine Learning for Signal Processing (MLSP).
@inproceedings{huguet2023geodesic,
title={Geodesic Sinkhorn for fast and accurate optimal transport on manifolds},
author={Huguet, Guillaume and Tong, Alexander and Zapatero, Mar{\'\i}a Ramos and Tape, Christopher J and Wolf, Guy and Krishnaswamy, Smita},
booktitle={2023 IEEE 33rd International Workshop on Machine Learning for Signal Processing (MLSP)},
pages={1--6},
year={2023},
organization={IEEE}
}
Metadata
Release files for geosink 0.2.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 | Provenance | Actions |
|---|---|---|---|---|
| geosink-0.2.0.tar.gz | 9.4 kB | Without provenance | Details for geosink-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| geosink-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for geosink-0.2.0-py3-none-any.whl |
Total release size: 16.3 kB
Release files / geosink-0.2.0.tar.gz
| Download URL | geosink-0.2.0.tar.gz |
|---|---|
| Size | 9.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ee04d6f17905ec1d6289d225ba51408da78e99bce7dd82b711c30993258706d
|
|
BLAKE2b-256 checksum How to use checksums |
33782966824fe5ba03a75e7f1d54cd6883ec6b4b1957ac1a76c076aae2a5a31f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.3
|
Release files / geosink-0.2.0-py3-none-any.whl
| Download URL | geosink-0.2.0-py3-none-any.whl |
|---|---|
| Size | 7.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6bf065dfd9d10d6651d190dafe4a70f93b61dca98b371af1e42ee21f511a379b
|
|
BLAKE2b-256 checksum How to use checksums |
084f84bd70757ff46bcf8aafe7d24e46e98069d230434c3d268090d8cd7093e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.3
|
Security for geosink 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.