A comprehensive Python library for solving optimal transport problems with solvers for linear, entropic, Gromov-Wasserstein, and unbalanced OT, plus machine learning applications.
POT (Python Optimal Transport) is a Python library that provides a comprehensive suite of solvers for optimal transport problems. It enables efficient computation of distances between probability distributions, with applications in machine learning, signal processing, and data analysis. The library implements both classical and cutting-edge OT algorithms, including regularized, unbalanced, and Gromov-Wasserstein variants.
Researchers and practitioners in machine learning, computer vision, and data science who need to measure or optimize distances between distributions, perform domain adaptation, or leverage OT-based methodologies in their workflows.
POT stands out for its extensive collection of OT solvers, strong academic foundation with numerous cited algorithms, and practical multi-backend support for deep learning frameworks. It is the go-to open-source library for OT in Python due to its robustness, active maintenance, and comprehensive documentation.
POT : Python Optimal Transport
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
POT implements a vast array of OT algorithms, from exact linear programs to entropic, Gromov-Wasserstein, and unbalanced variants, as detailed in its extensive feature list with over 80 cited references.
Seamlessly works with PyTorch, Jax, TensorFlow, NumPy, and CuPy arrays, enabling integration into diverse deep learning workflows without data conversion hurdles.
Backed by a JMLR paper and active community with Slack/Gitter channels, ensuring reliability and continuous updates for cutting-edge OT research.
Includes fast solvers for 1D OT, OT on the circle, and Gaussian Mixture Models, catering to niche applications beyond generic implementations.
Installation requires a C++ compiler for the EMD solver, and optional dependencies like cvxopt are GPL-licensed, which can complicate compliance in proprietary projects.
The library assumes familiarity with optimal transport concepts, making documentation dense and less accessible for users without a strong math or optimization background.
While regularized solvers improve scalability, exact OT methods like linear programming become impractical for very large datasets, and GPU support relies on external backends with potential integration overhead.