This new release contains several new features and bug fixes. Among the new features we have a new submodule ot.batch
that contains batch parallel solvers for several OT problems including Sinkhorn, Gromov-Wasserstein and Fused Gromov-Wasserstein. This new submodule can be used to solve many independent OT problems in parallel on CPU or GPU with shared source and target support sizes. We also implemented a new Nystrom kernel approximation for the Sinkhorn solver that can be used to speed up the computation of the Sinkhorn divergence on large datasets. We also added new 1D solvers for Linear circular OT and new solvers for free support OT barycenters with generic cost functions and for barycenters between Gaussian Mixture Models (GMMs). We also implemented two solvers for partial Fused Gromov-Wasserstein problems based on conditional gradient and projected gradient descents.
Finally we have updated the documentation to reflect the new generic API and reorganized the examples gallery.
New features
- Implement CG solvers for partial FGW (PR [#687])
- Added feature
grad=last_step
forot.solvers.solve
(PR [#693]) - Automatic PR labeling and release file update check (PR [#704])
- Reorganize sub-module
ot/lp/__init__.py
into separate files (PR [#714]) - Implement fixed-point solver for OT barycenters with generic cost functions
(generalizes
ot.lp.free_support_barycenter
), with example. (PR [#715]) - Implement fixed-point solver for barycenters between GMMs (PR [#715]), with example.
- Fix warning raise when import the library (PR [#716])
- Implement projected gradient descent solvers for entropic partial FGW (PR [#702])
- Fix documentation in the module
ot.gaussian
(PR [#718]) - Refactored
ot.bregman._convolutional
to improve readability (PR [#709]) - Added
ot.gaussian.bures_barycenter_gradient_descent
(PR [#680]) - Added
ot.gaussian.bures_wasserstein_distance
(PR [#680]) ot.gaussian.bures_wasserstein_distance
can be batched (PR [#680])- Backend implementation of
ot.dist
for (PR [#701]) - Updated documentation Quickstart guide and User guide with new API (PR [#726])
- Fix jax version for auto-grad (PR [#732])
- Add Nystrom kernel approximation for Sinkhorn (PR [#742])
- Added
ot.solver_1d.linear_circular_ot
andot.sliced.linear_sliced_wasserstein_sphere
(PR [#736]) - Implement 1d solver for partial optimal transport (PR [#741])
- Fix reg_div function compatibility with numpy in
ot.unbalanced.lbfgsb_unbalanced
via new functionot.utils.fun_to_numpy
(PR [#731]) - Added to each example in the examples gallery the information about the release version in which it was introduced (PR [#743])
- Removed release information from quickstart guide (PR [#744])
- Implement batch parallel solvers in ot.batch (PR [#745])
- Update REAMDE with new API and reorganize examples (PR [#754])
- Speedup and update tests and wheels (PR [#759])
Closed issues
- Fixed
ot.mapping
solvers which depended on deprecatedcvxpy
ECOS
solver (PR [#692], Issue [#668]) - Fixed numerical errors in
ot.gmm
(PR [#690], Issue [#689]) - Add version number to the documentation (PR [#696])
- Update doc for default regularization in
ot.unbalanced
sinkhorn solvers (Issue [#691], PR [#700]) - Clean documentation for
gromov
,lp
andunbalanced
folders (PR [#710]) - Clean references in documentation (PR [#722])
- Clean documentation for
ot.gromov.gromov_wasserstein
(PR [#737]) - Debug wheels building (PR [#739])
- Fix doc for projection sparse simplex (PR [#734], PR [#746])
- Changed the default behavior of
ot.lp.solver_1d.wasserstein_circle
(Issue [#738]) - Avoid raising unnecessary warnings in
ot.lp.solver_1d.binary_search_circle
(Issue [#738]) - Avoid deprecation warning in
ot.lp.solver_1d.wasserstein_1d
(Issue [#760], PR [#761])
New Contributors
- @samuelbx made their first contribution in https://github.com/PythonOT/POT/pull/690
- @qbarthelemy made their first contribution in https://github.com/PythonOT/POT/pull/710
- @tatsuookubo made their first contribution in https://github.com/PythonOT/POT/pull/737
- @NailKhelifa made their first contribution in https://github.com/PythonOT/POT/pull/743
Full Changelog: https://github.com/PythonOT/POT/compare/0.9.5...0.9.6