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}
}
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 | |
|---|---|---|---|
| geosink-0.2.0.tar.gz | 9.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| geosink-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
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
|