From eccb1386eea52b94b82456d126bd20cbe3198e05 Mon Sep 17 00:00:00 2001 From: Rémi Flamary Date: Thu, 21 Apr 2022 16:34:01 +0200 Subject: [MRG] Release 8.2 (#365) * release text and number * add examples in release fil build wheels * switch gallery to release * add much needed contributors file * debug circleci * une line of logos * working logo * back to stable sphinx galery --- .circleci/config.yml | 5 ++- CONTRIBUTORS.md | 52 ++++++++++++++++++++++++++++ README.md | 35 ++++--------------- RELEASES.md | 57 ++++++++++++++++++++++++++----- docs/source/_static/images/logo_3ia.jpg | Bin 0 -> 25029 bytes docs/source/_static/images/logo_anr.jpg | Bin 0 -> 23493 bytes docs/source/_static/images/logo_cnrs.jpg | Bin 0 -> 6918 bytes docs/source/contributors.rst | 6 ++++ docs/source/index.rst | 1 + docs/source/releases.rst | 2 +- examples/others/plot_logo.py | 10 +++--- ot/__init__.py | 2 +- 12 files changed, 122 insertions(+), 48 deletions(-) create mode 100644 CONTRIBUTORS.md create mode 100644 docs/source/_static/images/logo_3ia.jpg create mode 100644 docs/source/_static/images/logo_anr.jpg create mode 100644 docs/source/_static/images/logo_cnrs.jpg create mode 100644 docs/source/contributors.rst diff --git a/.circleci/config.yml b/.circleci/config.yml index 77ab45c..7e15a65 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -48,9 +48,8 @@ jobs: python -m pip install --user -e . python -m pip install --user --upgrade --no-cache-dir --progress-bar off -r requirements.txt python -m pip install --user --upgrade --progress-bar off -r docs/requirements.txt - python -m pip install --user --upgrade --progress-bar off ipython "https://api.github.com/repos/sphinx-gallery/sphinx-gallery/zipball/master" memory_profiler - - + python -m pip install --user --upgrade --progress-bar off ipython sphinx-gallery memory_profiler + # python -m pip install --user --upgrade --progress-bar off ipython "https://api.github.com/repos/sphinx-gallery/sphinx-gallery/zipball/master" memory_profiler - save_cache: key: pip-cache paths: diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..ab64fba --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,52 @@ + + +## Creators and Maintainers + +This toolbox has been created and is maintained by: + +* [Rémi Flamary](http://remi.flamary.com/) +* [Nicolas Courty](http://people.irisa.fr/Nicolas.Courty/) + +## Contributors + +The contributors to this library are: + +* [Rémi Flamary](http://remi.flamary.com/) (EMD wrapper, Pytorch backend, DA + classes, conditional gradients, WDA, weak OT, linear OT mapping, documentation) +* [Nicolas Courty](http://people.irisa.fr/Nicolas.Courty/) (Original sinkhorn, + Wasserstein barycenters and convolutional barycenters, 1D wasserstein) +* [Alexandre Gramfort](http://alexandre.gramfort.net/) (CI, documentation) +* [Laetitia Chapel](http://people.irisa.fr/Laetitia.Chapel/) (Partial OT, + Unbalanced OT non-regularized) +* [Michael Perrot](http://perso.univ-st-etienne.fr/pem82055/) (Mapping estimation) +* [Léo Gautheron](https://github.com/aje) (Initial GPU implementation) +* [Nathalie Gayraud](https://www.linkedin.com/in/nathalie-t-h-gayraud/?ppe=1) (DA classes) +* [Stanislas Chambon](https://slasnista.github.io/) (DA classes) +* [Antoine Rolet](https://arolet.github.io/) (EMD solver debug) +* Erwan Vautier (Gromov-Wasserstein) +* [Kilian Fatras](https://kilianfatras.github.io/) (Stochastic solvers, + empirical sinkhorn) +* [Alain Rakotomamonjy](https://sites.google.com/site/alainrakotomamonjy/home) (Greenkhorn) +* [Vayer Titouan](https://tvayer.github.io/) (Gromov-Wasserstein, Fused-Gromov-Wasserstein) +* [Hicham Janati](https://hichamjanati.github.io/) (Unbalanced OT, Debiased barycenters) +* [Romain Tavenard](https://rtavenar.github.io/) (1D Wasserstein) +* [Mokhtar Z. Alaya](http://mzalaya.github.io/) (Screenkhorn) +* [Ievgen Redko](https://ievred.github.io/) (Laplacian DA, JCPOT) +* [Adrien Corenflos](https://adriencorenflos.github.io/) (Sliced Wasserstein Distance) +* [Tanguy Kerdoncuff](https://hv0nnus.github.io/) (Sampled Gromov Wasserstein) +* [Minhui Huang](https://mhhuang95.github.io) (Projection Robust Wasserstein Distance) +* [Nathan Cassereau](https://github.com/ncassereau-idris) (Backends) +* [Cédric Vincent-Cuaz](https://github.com/cedricvincentcuaz) (Graph Dictionary Learning) + +## Acknowledgments + +This toolbox benefit a lot from open source research and we would like to thank the following persons for providing some code (in various languages): + +* [Gabriel Peyré](http://gpeyre.github.io/) (Wasserstein Barycenters in Matlab) +* [Mathieu Blondel](https://mblondel.org/) (original implementation smooth OT) +* [Nicolas Bonneel](http://liris.cnrs.fr/~nbonneel/) (C++ code for EMD) +* [Marco Cuturi](http://marcocuturi.net/) (Sinkhorn Knopp in Matlab/Cuda) + +POT has benefited from the financing or manpower from the following partners: + +ANRCNRS3IA \ No newline at end of file diff --git a/README.md b/README.md index 1b50aeb..e2b33d9 100644 --- a/README.md +++ b/README.md @@ -180,35 +180,12 @@ This toolbox has been created and is maintained by * [Rémi Flamary](http://remi.flamary.com/) * [Nicolas Courty](http://people.irisa.fr/Nicolas.Courty/) -The contributors to this library are - -* [Alexandre Gramfort](http://alexandre.gramfort.net/) (CI, documentation) -* [Laetitia Chapel](http://people.irisa.fr/Laetitia.Chapel/) (Partial OT) -* [Michael Perrot](http://perso.univ-st-etienne.fr/pem82055/) (Mapping estimation) -* [Léo Gautheron](https://github.com/aje) (Initial GPU implementation) -* [Nathalie Gayraud](https://www.linkedin.com/in/nathalie-t-h-gayraud/?ppe=1) (DA classes) -* [Stanislas Chambon](https://slasnista.github.io/) (DA classes) -* [Antoine Rolet](https://arolet.github.io/) (EMD solver debug) -* Erwan Vautier (Gromov-Wasserstein) -* [Kilian Fatras](https://kilianfatras.github.io/) (Stochastic solvers) -* [Alain Rakotomamonjy](https://sites.google.com/site/alainrakotomamonjy/home) -* [Vayer Titouan](https://tvayer.github.io/) (Gromov-Wasserstein -, Fused-Gromov-Wasserstein) -* [Hicham Janati](https://hichamjanati.github.io/) (Unbalanced OT, Debiased barycenters) -* [Romain Tavenard](https://rtavenar.github.io/) (1d Wasserstein) -* [Mokhtar Z. Alaya](http://mzalaya.github.io/) (Screenkhorn) -* [Ievgen Redko](https://ievred.github.io/) (Laplacian DA, JCPOT) -* [Adrien Corenflos](https://adriencorenflos.github.io/) (Sliced Wasserstein Distance) -* [Tanguy Kerdoncuff](https://hv0nnus.github.io/) (Sampled Gromov Wasserstein) -* [Minhui Huang](https://mhhuang95.github.io) (Projection Robust Wasserstein Distance) -* [Nathan Cassereau](https://github.com/ncassereau-idris) (Backends) -* [Cédric Vincent-Cuaz](https://github.com/cedricvincentcuaz) (Graph Dictionary Learning) - -This toolbox benefit a lot from open source research and we would like to thank the following persons for providing some code (in various languages): - -* [Gabriel Peyré](http://gpeyre.github.io/) (Wasserstein Barycenters in Matlab) -* [Mathieu Blondel](https://mblondel.org/) (original implementation smooth OT) -* [Nicolas Bonneel](http://liris.cnrs.fr/~nbonneel/) (C++ code for EMD) -* [Marco Cuturi](http://marcocuturi.net/) (Sinkhorn Knopp in Matlab/Cuda) +The numerous contributors to this library are listed [here](CONTRIBUTORS.md). + +POT has benefited from the financing or manpower from the following partners: + +ANRCNRS3IA + ## Contributions and code of conduct diff --git a/RELEASES.md b/RELEASES.md index 33d1ab6..be2192e 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,22 +1,61 @@ # Releases -## 0.8.2dev Development +## 0.8.2 + +This releases introduces several new notable features. The less important +but most exiting one being that we now have a logo for the toolbox (color +and dark background) : + +![](https://pythonot.github.io/master/_images/logo.svg)![](https://pythonot.github.io/master/_static/logo_dark.svg) + +This logo is generated using with matplotlib and using the solution of an OT +problem provided by POT (with `ot.emd`). Generating the logo can be done with a +simple python script also provided in the [documentation gallery](https://pythonot.github.io/auto_examples/others/plot_logo.html#sphx-glr-auto-examples-others-plot-logo-py). + +New OT solvers include [Weak +OT](https://pythonot.github.io/gen_modules/ot.weak.html#ot.weak.weak_optimal_transport) + and [OT with factored +coupling](https://pythonot.github.io/gen_modules/ot.factored.html#ot.factored.factored_optimal_transport) +that can be used on large datasets. The [Majorization Minimization](https://pythonot.github.io/gen_modules/ot.unbalanced.html?highlight=mm_#ot.unbalanced.mm_unbalanced) solvers for +non-regularized Unbalanced OT are now also available. We also now provide an +implementation of [GW and FGW unmixing](https://pythonot.github.io/gen_modules/ot.gromov.html#ot.gromov.gromov_wasserstein_linear_unmixing) and [dictionary learning](https://pythonot.github.io/gen_modules/ot.gromov.html#ot.gromov.gromov_wasserstein_dictionary_learning). It is now +possible to use autodiff to solve entropic an quadratic regularized OT in the +dual for full or stochastic optimization thanks to the new functions to compute +the dual loss for [entropic](https://pythonot.github.io/gen_modules/ot.stochastic.html#ot.stochastic.loss_dual_entropic) and [quadratic](https://pythonot.github.io/gen_modules/ot.stochastic.html#ot.stochastic.loss_dual_quadratic) regularized OT and reconstruct the [OT +plan](https://pythonot.github.io/gen_modules/ot.stochastic.html#ot.stochastic.plan_dual_entropic) on part or all of the data. They can be used for instance to solve OT +problems with stochastic gradient or for estimating the [dual potentials as +neural networks](https://pythonot.github.io/auto_examples/backends/plot_stoch_continuous_ot_pytorch.html#sphx-glr-auto-examples-backends-plot-stoch-continuous-ot-pytorch-py). + +On the backend front, we now have backend compatible functions and classes in +the domain adaptation [`ot.da`](https://pythonot.github.io/gen_modules/ot.da.html#module-ot.da) and unbalanced OT [`ot.unbalanced`](https://pythonot.github.io/gen_modules/ot.unbalanced.html) modules. This +means that the DA classes can be used on tensors from all compatible backends. +The [free support Wasserstein barycenter](https://pythonot.github.io/gen_modules/ot.lp.html?highlight=free%20support#ot.lp.free_support_barycenter) solver is now also backend compatible. + +Finally we have worked on the documentation to provide an update of existing +examples in the gallery and and several new examples including [GW dictionary +learning](https://pythonot.github.io/auto_examples/gromov/plot_gromov_wasserstein_dictionary_learning.html#sphx-glr-auto-examples-gromov-plot-gromov-wasserstein-dictionary-learning-py) +[weak Optimal +Transport](https://pythonot.github.io/auto_examples/others/plot_WeakOT_VS_OT.html#sphx-glr-auto-examples-others-plot-weakot-vs-ot-py), +[NN based dual potentials +estimation](https://pythonot.github.io/auto_examples/backends/plot_stoch_continuous_ot_pytorch.html#sphx-glr-auto-examples-backends-plot-stoch-continuous-ot-pytorch-py) +and [Factored coupling OT](https://pythonot.github.io/auto_examples/others/plot_factored_coupling.html#sphx-glr-auto-examples-others-plot-factored-coupling-py). +. #### New features - Remove deprecated `ot.gpu` submodule (PR #361) -- Update examples in the gallery (PR #359). +- Update examples in the gallery (PR #359) - Add stochastic loss and OT plan computation for regularized OT and - backend examples(PR #360). -- Implementation of factored OT with emd and sinkhorn (PR #358). + backend examples(PR #360) +- Implementation of factored OT with emd and sinkhorn (PR #358) - A brand new logo for POT (PR #357) -- Better list of related examples in quick start guide with `minigallery` (PR #334). +- Better list of related examples in quick start guide with `minigallery` (PR #334) - Add optional log-domain Sinkhorn implementation in WDA to support smaller values - of the regularization parameter (PR #336). -- Backend implementation for `ot.lp.free_support_barycenter` (PR #340). -- Add weak OT solver + example (PR #341). -- Add backend support for Domain Adaptation and Unbalanced solvers (PR #343). + of the regularization parameter (PR #336) +- Backend implementation for `ot.lp.free_support_barycenter` (PR #340) +- Add weak OT solver + example (PR #341) +- Add backend support for Domain Adaptation and Unbalanced solvers (PR #343) - Add (F)GW linear dictionary learning solvers + example (PR #319) - Add links to related PR and Issues in the doc release page (PR #350) - Add new minimization-maximization algorithms for solving exact Unbalanced OT + example (PR #362) diff --git a/docs/source/_static/images/logo_3ia.jpg b/docs/source/_static/images/logo_3ia.jpg new file mode 100644 index 0000000..ecc56b2 Binary files /dev/null and b/docs/source/_static/images/logo_3ia.jpg differ diff --git a/docs/source/_static/images/logo_anr.jpg b/docs/source/_static/images/logo_anr.jpg new file mode 100644 index 0000000..dcef212 Binary files /dev/null and b/docs/source/_static/images/logo_anr.jpg differ diff --git a/docs/source/_static/images/logo_cnrs.jpg b/docs/source/_static/images/logo_cnrs.jpg new file mode 100644 index 0000000..902cf6f Binary files /dev/null and b/docs/source/_static/images/logo_cnrs.jpg differ diff --git a/docs/source/contributors.rst b/docs/source/contributors.rst new file mode 100644 index 0000000..f0acea6 --- /dev/null +++ b/docs/source/contributors.rst @@ -0,0 +1,6 @@ +Contributors +============ + +.. include:: ../../CONTRIBUTORS.md + :parser: myst_parser.sphinx_ + :start-line: 2 diff --git a/docs/source/index.rst b/docs/source/index.rst index 7ff7d22..3d53ef4 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -22,6 +22,7 @@ Contents auto_examples/index releases .github/CONTRIBUTING + contributors .github/CODE_OF_CONDUCT diff --git a/docs/source/releases.rst b/docs/source/releases.rst index 8250a4d..b2c7a44 100644 --- a/docs/source/releases.rst +++ b/docs/source/releases.rst @@ -3,4 +3,4 @@ Releases .. include:: ../../RELEASES.md :parser: myst_parser.sphinx_ - :start-line: 3 + :start-line: 2 diff --git a/examples/others/plot_logo.py b/examples/others/plot_logo.py index 9414371..bb4f640 100644 --- a/examples/others/plot_logo.py +++ b/examples/others/plot_logo.py @@ -18,7 +18,7 @@ matplotlib and ploting teh solution of the EMD solver from POT. # sphinx_gallery_thumbnail_number = 1 -# %% +# %% Load modules import numpy as np import matplotlib.pyplot as pl import ot @@ -36,21 +36,21 @@ p2 = np.array([[1.5, 6], [2, 4], [2, 5], [1.5, 3], [0.5, 2], [.5, 1], ]) o1 = np.array([[0, 6.], [-1, 5], [-1.5, 4], [-1.5, 3], [-1, 2], [0, 1], ]) o2 = np.array([[1, 6.], [2, 5], [2.5, 4], [2.5, 3], [2, 2], [1, 1], ]) -# scaling and translation for letter O +# Scaling and translation for letter O o1[:, 0] += 6.4 o2[:, 0] += 6.4 o1[:, 0] *= 0.6 o2[:, 0] *= 0.6 -# letter T +# Letter T t1 = np.array([[-1, 6.], [-1, 5], [0, 4], [0, 3], [0, 2], [0, 1], ]) t2 = np.array([[1.5, 6.], [1.5, 5], [0.5, 4], [0.5, 3], [0.5, 2], [0.5, 1], ]) -# translatin the T +# Translating the T t1[:, 0] += 7.1 t2[:, 0] += 7.1 -# Cocatenate all letters +# Concatenate all letters x1 = np.concatenate((p1, o1, t1), axis=0) x2 = np.concatenate((p2, o2, t2), axis=0) diff --git a/ot/__init__.py b/ot/__init__.py index c5e1967..86ed94e 100644 --- a/ot/__init__.py +++ b/ot/__init__.py @@ -51,7 +51,7 @@ from .factored import factored_optimal_transport # utils functions from .utils import dist, unif, tic, toc, toq -__version__ = "0.8.2dev" +__version__ = "0.8.2" __all__ = ['emd', 'emd2', 'emd_1d', 'sinkhorn', 'sinkhorn2', 'utils', 'datasets', 'bregman', 'lp', 'tic', 'toc', 'toq', 'gromov', -- cgit v1.2.3