summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGard Spreemann <gspr@nonempty.org>2022-04-27 11:49:23 +0200
committerGard Spreemann <gspr@nonempty.org>2022-04-27 11:49:23 +0200
commit35bd2c98b642df78638d7d733bc1a89d873db1de (patch)
tree6bc637624004713808d3097b95acdccbb9608e52 /docs
parentc4753bd3f74139af8380127b66b484bc09b50661 (diff)
parenteccb1386eea52b94b82456d126bd20cbe3198e05 (diff)
Merge tag '0.8.2' into dfsg/latest
Diffstat (limited to 'docs')
-rw-r--r--docs/source/_static/images/bak.png (renamed from docs/source/auto_examples/images/bak.png)bin304669 -> 304669 bytes
-rw-r--r--docs/source/_static/images/logo.pngbin0 -> 4325 bytes
-rw-r--r--docs/source/_static/images/logo.svg200
-rw-r--r--docs/source/_static/images/logo_3ia.jpgbin0 -> 25029 bytes
-rw-r--r--docs/source/_static/images/logo_anr.jpgbin0 -> 23493 bytes
-rw-r--r--docs/source/_static/images/logo_cnrs.jpgbin0 -> 6918 bytes
-rw-r--r--docs/source/_static/images/logo_dark.pngbin0 -> 3437 bytes
-rw-r--r--docs/source/_static/images/logo_dark.svg187
-rw-r--r--docs/source/_static/images/sinkhorn.png (renamed from docs/source/auto_examples/images/sinkhorn.png)bin37204 -> 37204 bytes
-rw-r--r--docs/source/all.rst4
-rw-r--r--docs/source/conf.py13
-rw-r--r--docs/source/contributors.rst6
-rw-r--r--docs/source/index.rst6
-rw-r--r--docs/source/quickstart.rst279
-rw-r--r--docs/source/releases.rst2
15 files changed, 549 insertions, 148 deletions
diff --git a/docs/source/auto_examples/images/bak.png b/docs/source/_static/images/bak.png
index 25e7e8e..25e7e8e 100644
--- a/docs/source/auto_examples/images/bak.png
+++ b/docs/source/_static/images/bak.png
Binary files differ
diff --git a/docs/source/_static/images/logo.png b/docs/source/_static/images/logo.png
new file mode 100644
index 0000000..2dd6f65
--- /dev/null
+++ b/docs/source/_static/images/logo.png
Binary files differ
diff --git a/docs/source/_static/images/logo.svg b/docs/source/_static/images/logo.svg
new file mode 100644
index 0000000..39fe900
--- /dev/null
+++ b/docs/source/_static/images/logo.svg
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="209.7pt" height="75.384pt" viewBox="0 0 209.7 75.384" xmlns="http://www.w3.org/2000/svg" version="1.1">
+ <metadata>
+ <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:date>2022-03-30T17:25:32.476826</dc:date>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Matplotlib v3.5.1, https://matplotlib.org/</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs>
+ <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
+ </defs>
+ <g id="figure_1">
+ <g id="patch_1">
+ <path d="M 0 75.384
+L 209.7 75.384
+L 209.7 0
+L 0 0
+L 0 75.384
+z
+" style="fill: none"/>
+ </g>
+ <g id="axes_1">
+ <g id="line2d_1">
+ <path d="M 16.077273 11.885975
+L 47.044503 11.885975
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_2">
+ <path d="M 16.077273 22.208385
+L 57.366913 22.208385
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_3">
+ <path d="M 16.077273 32.530795
+L 57.366913 32.530795
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_4">
+ <path d="M 16.077273 42.853205
+L 47.044503 42.853205
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_5">
+ <path d="M 16.077273 53.175615
+L 26.399683 53.175615
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_6">
+ <path d="M 16.077273 63.498025
+L 26.399683 63.498025
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_7">
+ <path d="M 95.353383 11.885975
+L 107.740275 11.885975
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_8">
+ <path d="M 82.96649 22.208385
+L 120.127167 22.208385
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_9">
+ <path d="M 76.773044 32.530795
+L 126.320613 32.530795
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_10">
+ <path d="M 76.773044 42.853205
+L 126.320613 42.853205
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_11">
+ <path d="M 82.96649 53.175615
+L 120.127167 53.175615
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_12">
+ <path d="M 95.353383 63.498025
+L 107.740275 63.498025
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_13">
+ <path d="M 142.010677 11.885975
+L 193.622727 11.885975
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_14">
+ <path d="M 142.010677 22.208385
+L 193.622727 22.208385
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_15">
+ <path d="M 162.655497 32.530795
+L 172.977907 32.530795
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_16">
+ <path d="M 162.655497 42.853205
+L 172.977907 42.853205
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_17">
+ <path d="M 162.655497 53.175615
+L 172.977907 53.175615
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_18">
+ <path d="M 162.655497 63.498025
+L 172.977907 63.498025
+" clip-path="url(#p367fff45ba)" style="fill: none; stroke: #000000; stroke-opacity: 0.6; stroke-width: 3; stroke-linecap: square"/>
+ </g>
+ <g id="line2d_19">
+ <defs>
+ <path id="m5ead2df136" d="M 0 3
+C 0.795609 3 1.55874 2.683901 2.12132 2.12132
+C 2.683901 1.55874 3 0.795609 3 0
+C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132
+C 1.55874 -2.683901 0.795609 -3 0 -3
+C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132
+C -2.683901 -1.55874 -3 -0.795609 -3 0
+C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132
+C -1.55874 2.683901 -0.795609 3 0 3
+z
+" style="stroke: #000000"/>
+ </defs>
+ <g clip-path="url(#p367fff45ba)">
+ <use xlink:href="#m5ead2df136" x="16.077273" y="11.885975" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="16.077273" y="22.208385" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="16.077273" y="32.530795" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="16.077273" y="42.853205" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="16.077273" y="53.175615" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="16.077273" y="63.498025" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="95.353383" y="11.885975" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="82.96649" y="22.208385" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="76.773044" y="32.530795" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="76.773044" y="42.853205" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="82.96649" y="53.175615" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="95.353383" y="63.498025" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="142.010677" y="11.885975" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="142.010677" y="22.208385" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="162.655497" y="32.530795" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="162.655497" y="42.853205" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="162.655497" y="53.175615" style="fill: #d62728; stroke: #000000"/>
+ <use xlink:href="#m5ead2df136" x="162.655497" y="63.498025" style="fill: #d62728; stroke: #000000"/>
+ </g>
+ </g>
+ <g id="line2d_20">
+ <defs>
+ <path id="m39fe4d1791" d="M 0 3
+C 0.795609 3 1.55874 2.683901 2.12132 2.12132
+C 2.683901 1.55874 3 0.795609 3 0
+C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132
+C 1.55874 -2.683901 0.795609 -3 0 -3
+C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132
+C -2.683901 -1.55874 -3 -0.795609 -3 0
+C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132
+C -1.55874 2.683901 -0.795609 3 0 3
+z
+" style="stroke: #000000"/>
+ </defs>
+ <g clip-path="url(#p367fff45ba)">
+ <use xlink:href="#m39fe4d1791" x="47.044503" y="11.885975" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="57.366913" y="32.530795" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="57.366913" y="22.208385" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="47.044503" y="42.853205" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="26.399683" y="53.175615" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="26.399683" y="63.498025" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="107.740275" y="11.885975" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="120.127167" y="22.208385" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="126.320613" y="32.530795" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="126.320613" y="42.853205" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="120.127167" y="53.175615" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="107.740275" y="63.498025" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="193.622727" y="11.885975" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="193.622727" y="22.208385" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="172.977907" y="32.530795" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="172.977907" y="42.853205" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="172.977907" y="53.175615" style="fill: #0000ff; stroke: #000000"/>
+ <use xlink:href="#m39fe4d1791" x="172.977907" y="63.498025" style="fill: #0000ff; stroke: #000000"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <defs>
+ <clipPath id="p367fff45ba">
+ <rect x="7.2" y="7.2" width="195.3" height="60.984"/>
+ </clipPath>
+ </defs>
+</svg>
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
--- /dev/null
+++ b/docs/source/_static/images/logo_3ia.jpg
Binary files 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
--- /dev/null
+++ b/docs/source/_static/images/logo_anr.jpg
Binary files 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
--- /dev/null
+++ b/docs/source/_static/images/logo_cnrs.jpg
Binary files differ
diff --git a/docs/source/_static/images/logo_dark.png b/docs/source/_static/images/logo_dark.png
new file mode 100644
index 0000000..f484188
--- /dev/null
+++ b/docs/source/_static/images/logo_dark.png
Binary files differ
diff --git a/docs/source/_static/images/logo_dark.svg b/docs/source/_static/images/logo_dark.svg
new file mode 100644
index 0000000..56ce2d9
--- /dev/null
+++ b/docs/source/_static/images/logo_dark.svg
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with matplotlib (https://matplotlib.org/) -->
+<svg height="75.384pt" version="1.1" viewBox="0 0 209.7 75.384" width="209.7pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:date>2022-03-17T17:25:30.847142</dc:date>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Matplotlib v3.3.3, https://matplotlib.org/</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs>
+ <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+ <g id="patch_1">
+ <path d="M 0 75.384
+L 209.7 75.384
+L 209.7 0
+L 0 0
+z
+" style="fill:none;"/>
+ </g>
+ <g id="axes_1">
+ <g id="line2d_1">
+ <path clip-path="url(#pa995e487cb)" d="M 16.077273 11.885975
+L 47.044503 11.885975
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_2">
+ <path clip-path="url(#pa995e487cb)" d="M 16.077273 22.208385
+L 57.366913 22.208385
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_3">
+ <path clip-path="url(#pa995e487cb)" d="M 16.077273 32.530795
+L 57.366913 32.530795
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_4">
+ <path clip-path="url(#pa995e487cb)" d="M 16.077273 42.853205
+L 47.044503 42.853205
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_5">
+ <path clip-path="url(#pa995e487cb)" d="M 16.077273 53.175615
+L 26.399683 53.175615
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_6">
+ <path clip-path="url(#pa995e487cb)" d="M 16.077273 63.498025
+L 26.399683 63.498025
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_7">
+ <path clip-path="url(#pa995e487cb)" d="M 95.353383 11.885975
+L 107.740275 11.885975
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_8">
+ <path clip-path="url(#pa995e487cb)" d="M 82.96649 22.208385
+L 120.127167 22.208385
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_9">
+ <path clip-path="url(#pa995e487cb)" d="M 76.773044 32.530795
+L 126.320613 32.530795
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_10">
+ <path clip-path="url(#pa995e487cb)" d="M 76.773044 42.853205
+L 126.320613 42.853205
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_11">
+ <path clip-path="url(#pa995e487cb)" d="M 82.96649 53.175615
+L 120.127167 53.175615
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_12">
+ <path clip-path="url(#pa995e487cb)" d="M 95.353383 63.498025
+L 107.740275 63.498025
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_13">
+ <path clip-path="url(#pa995e487cb)" d="M 142.010677 11.885975
+L 193.622727 11.885975
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_14">
+ <path clip-path="url(#pa995e487cb)" d="M 142.010677 22.208385
+L 193.622727 22.208385
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_15">
+ <path clip-path="url(#pa995e487cb)" d="M 162.655497 32.530795
+L 172.977907 32.530795
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_16">
+ <path clip-path="url(#pa995e487cb)" d="M 162.655497 42.853205
+L 172.977907 42.853205
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_17">
+ <path clip-path="url(#pa995e487cb)" d="M 162.655497 53.175615
+L 172.977907 53.175615
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_18">
+ <path clip-path="url(#pa995e487cb)" d="M 162.655497 63.498025
+L 172.977907 63.498025
+" style="fill:none;stroke:#ffffff;stroke-linecap:square;stroke-opacity:0.8;stroke-width:3;"/>
+ </g>
+ <g id="line2d_19">
+ <defs>
+ <path d="M 0 3
+C 0.795609 3 1.55874 2.683901 2.12132 2.12132
+C 2.683901 1.55874 3 0.795609 3 0
+C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132
+C 1.55874 -2.683901 0.795609 -3 0 -3
+C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132
+C -2.683901 -1.55874 -3 -0.795609 -3 0
+C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132
+C -1.55874 2.683901 -0.795609 3 0 3
+z
+" id="m5a2277d5a1" style="stroke:#ffffff;"/>
+ </defs>
+ <g clip-path="url(#pa995e487cb)">
+ <use style="fill:#ffffff;stroke:#ffffff;" x="16.077273" xlink:href="#m5a2277d5a1" y="11.885975"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="16.077273" xlink:href="#m5a2277d5a1" y="22.208385"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="16.077273" xlink:href="#m5a2277d5a1" y="32.530795"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="16.077273" xlink:href="#m5a2277d5a1" y="42.853205"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="16.077273" xlink:href="#m5a2277d5a1" y="53.175615"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="16.077273" xlink:href="#m5a2277d5a1" y="63.498025"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="95.353383" xlink:href="#m5a2277d5a1" y="11.885975"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="82.96649" xlink:href="#m5a2277d5a1" y="22.208385"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="76.773044" xlink:href="#m5a2277d5a1" y="32.530795"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="76.773044" xlink:href="#m5a2277d5a1" y="42.853205"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="82.96649" xlink:href="#m5a2277d5a1" y="53.175615"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="95.353383" xlink:href="#m5a2277d5a1" y="63.498025"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="142.010677" xlink:href="#m5a2277d5a1" y="11.885975"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="142.010677" xlink:href="#m5a2277d5a1" y="22.208385"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="162.655497" xlink:href="#m5a2277d5a1" y="32.530795"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="162.655497" xlink:href="#m5a2277d5a1" y="42.853205"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="162.655497" xlink:href="#m5a2277d5a1" y="53.175615"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="162.655497" xlink:href="#m5a2277d5a1" y="63.498025"/>
+ </g>
+ </g>
+ <g id="line2d_20">
+ <g clip-path="url(#pa995e487cb)">
+ <use style="fill:#ffffff;stroke:#ffffff;" x="47.044503" xlink:href="#m5a2277d5a1" y="11.885975"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="57.366913" xlink:href="#m5a2277d5a1" y="32.530795"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="57.366913" xlink:href="#m5a2277d5a1" y="22.208385"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="47.044503" xlink:href="#m5a2277d5a1" y="42.853205"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="26.399683" xlink:href="#m5a2277d5a1" y="53.175615"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="26.399683" xlink:href="#m5a2277d5a1" y="63.498025"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="107.740275" xlink:href="#m5a2277d5a1" y="11.885975"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="120.127167" xlink:href="#m5a2277d5a1" y="22.208385"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="126.320613" xlink:href="#m5a2277d5a1" y="32.530795"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="126.320613" xlink:href="#m5a2277d5a1" y="42.853205"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="120.127167" xlink:href="#m5a2277d5a1" y="53.175615"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="107.740275" xlink:href="#m5a2277d5a1" y="63.498025"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="193.622727" xlink:href="#m5a2277d5a1" y="11.885975"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="193.622727" xlink:href="#m5a2277d5a1" y="22.208385"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="172.977907" xlink:href="#m5a2277d5a1" y="32.530795"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="172.977907" xlink:href="#m5a2277d5a1" y="42.853205"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="172.977907" xlink:href="#m5a2277d5a1" y="53.175615"/>
+ <use style="fill:#ffffff;stroke:#ffffff;" x="172.977907" xlink:href="#m5a2277d5a1" y="63.498025"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <defs>
+ <clipPath id="pa995e487cb">
+ <rect height="60.984" width="195.3" x="7.2" y="7.2"/>
+ </clipPath>
+ </defs>
+</svg>
diff --git a/docs/source/auto_examples/images/sinkhorn.png b/docs/source/_static/images/sinkhorn.png
index e003e13..e003e13 100644
--- a/docs/source/auto_examples/images/sinkhorn.png
+++ b/docs/source/_static/images/sinkhorn.png
Binary files differ
diff --git a/docs/source/all.rst b/docs/source/all.rst
index 6a07599..1ec6be3 100644
--- a/docs/source/all.rst
+++ b/docs/source/all.rst
@@ -20,15 +20,17 @@ API and modules
gromov
optim
da
- gpu
dr
utils
datasets
plot
stochastic
unbalanced
+ regpath
partial
sliced
+ weak
+ factored
.. autosummary::
:toctree: ../modules/generated/
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 849e97c..9526518 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -17,9 +17,15 @@ import os
import re
try:
import sphinx_gallery
+
except ImportError:
print("warning sphinx-gallery not installed")
+
+
+
+
+
# !!!! allow readthedoc compilation
try:
from unittest.mock import MagicMock
@@ -74,7 +80,6 @@ extensions = [
autosummary_generate = True
-
napoleon_numpy_docstring = True
# Add any paths that contain templates here, relative to this directory.
@@ -142,7 +147,7 @@ exclude_patterns = []
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
+pygments_style = 'default'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
@@ -163,6 +168,7 @@ html_theme = 'sphinx_rtd_theme'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
+
html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
@@ -177,7 +183,7 @@ html_theme_options = {}
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
-#html_logo = None
+html_logo = '_static/images/logo_dark.svg'
# The name of an image file (relative to this directory) to use as a favicon of
# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
@@ -189,6 +195,7 @@ html_theme_options = {}
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
+
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
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 8de31ae..3d53ef4 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -6,6 +6,10 @@
POT: Python Optimal Transport
=============================
+.. image:: _static/images/logo.svg
+ :width: 400
+ :alt: POT Logo
+
Contents
--------
@@ -18,8 +22,10 @@ Contents
auto_examples/index
releases
.github/CONTRIBUTING
+ contributors
.github/CODE_OF_CONDUCT
+
.. include:: ../../README.md
:parser: myst_parser.sphinx_
diff --git a/docs/source/quickstart.rst b/docs/source/quickstart.rst
index 232df7b..b4cc8ab 100644
--- a/docs/source/quickstart.rst
+++ b/docs/source/quickstart.rst
@@ -207,13 +207,12 @@ The method implemented for solving the OT problem is the network simplex. It is
implemented in C from [1]_. It has a complexity of :math:`O(n^3)` but the
solver is quite efficient and uses sparsity of the solution.
-.. hint::
- Examples of use for :any:`ot.emd` are available in :
- - :any:`auto_examples/plot_OT_2D_samples`
- - :any:`auto_examples/plot_OT_1D`
- - :any:`auto_examples/plot_OT_L1_vs_L2`
+.. minigallery:: ot.emd
+ :add-heading: Examples of use for :any:`ot.emd`
+ :heading-level: "
+
Computing Wasserstein distance
@@ -255,11 +254,9 @@ the :math:`W_1` Wasserstein distance can be done directly with :any:`ot.emd2`
when providing :code:`M = ot.dist(xs, xt, metric='euclidean')` to use the Euclidean
distance.
-.. hint::
-
- An example of use for :any:`ot.emd2` is available in :
-
- - :any:`auto_examples/plot_compute_emd`
+.. minigallery:: ot.emd2
+ :add-heading: Examples of use for :any:`ot.emd2`
+ :heading-level: "
Special cases
@@ -416,17 +413,18 @@ of stochastic solvers for entropic regularized OT [18]_ [19]_. Those pure Pytho
implementations are not optimized for speed but provide a robust implementation
of algorithms in [18]_ [19]_.
-.. hint::
- Examples of use for :any:`ot.sinkhorn` are available in :
- - :any:`auto_examples/plot_OT_2D_samples`
- - :any:`auto_examples/plot_OT_1D`
- - :any:`auto_examples/plot_OT_1D_smooth`
- - :any:`auto_examples/plot_stochastic`
+.. minigallery:: ot.sinkhorn
+ :add-heading: Examples of use for :any:`ot.sinkhorn`
+ :heading-level: "
+.. minigallery:: ot.sinkhorn2
+ :add-heading: Examples of use for :any:`ot.sinkhorn2`
+ :heading-level: "
-Other regularization
-^^^^^^^^^^^^^^^^^^^^
+
+Other regularizations
+^^^^^^^^^^^^^^^^^^^^^
While entropic OT is the most common and favored in practice, there exists other
kinds of regularizations. We provide in POT two specific solvers for other
@@ -451,12 +449,9 @@ functions :any:`ot.smooth.smooth_ot_dual` or
:any:`ot.smooth.smooth_ot_semi_dual` with parameter :code:`reg_type='l2'` to
choose the quadratic regularization.
-.. hint::
- Examples of quadratic regularization are available in :
-
- - :any:`auto_examples/plot_OT_1D_smooth`
- - :any:`auto_examples/plot_optim_OTreg`
-
+.. minigallery:: ot.smooth.smooth_ot_dual ot.smooth.smooth_ot_semi_dual ot.optim.cg
+ :add-heading: Examples of use of quadratic regularization
+ :heading-level: "
Group Lasso regularization
@@ -480,11 +475,9 @@ be solved using an efficient majoration minimization approach with
convex group lasso and we provide a solver using generalized conditional
gradient algorithm [7]_ in function :any:`ot.da.sinkhorn_l1l2_gl`.
-.. hint::
- Examples of group Lasso regularization are available in:
-
- - :any:`auto_examples/domain-adaptation/plot_otda_classes`
- - :any:`auto_examples/domain-adaptation/plot_otda_d2`
+.. minigallery:: ot.da.SinkhornLpl1Transport ot.da.SinkhornL1l2Transport ot.da.sinkhorn_l1l2_gl ot.da.sinkhorn_lpl1_mm
+ :add-heading: Examples of group Lasso regularization
+ :heading-level: "
Generic solvers
@@ -520,10 +513,9 @@ generalized conditional gradient [7]_ implemented in :any:`ot.optim.gcg` that
does not linearize the entropic term but
relies on :any:`ot.sinkhorn` for its iterations.
-.. hint::
- An example of generic solvers are available in :
-
- - :any:`auto_examples/plot_optim_OTreg`
+.. minigallery:: ot.optim.cg ot.optim.gcg
+ :add-heading: Examples of the generic solvers
+ :heading-level: "
Wasserstein Barycenters
@@ -581,19 +573,15 @@ the matrix vector production in the Bregman projections by convolution
operators. We provide an implementation of this algorithm in function
:any:`ot.bregman.convolutional_barycenter2d`.
-.. hint::
- Examples of Wasserstein (:meth:`ot.lp.barycenter`) and regularized Wasserstein
- barycenter (:any:`ot.bregman.barycenter`) computation are available in :
- - :any:`auto_examples/barycenters/plot_barycenter_1D`
- - :any:`auto_examples/barycenters/plot_barycenter_lp_vs_entropic`
- An example of convolutional barycenter
- (:any:`ot.bregman.convolutional_barycenter2d`) computation
- for 2D images is available
- in :
+.. minigallery:: ot.lp.barycenter ot.bregman.barycenter ot.barycenter
+ :add-heading: Examples of Wasserstein and regularized Wasserstein barycenters
+ :heading-level: "
- - :any:`auto_examples/barycenters/plot_convolutional_barycenter`
+.. minigallery:: ot.bregman.convolutional_barycenter2d
+ :add-heading: An example of convolutional barycenter (:any:`ot.bregman.convolutional_barycenter2d`) computation
+ :heading-level: "
@@ -613,13 +601,9 @@ We provide a solver based on [20]_ in
return a locally optimal support :math:`\{x_i\}` for uniform or given weights
:math:`a`.
- .. hint::
-
- An example of the free support barycenter estimation is available
- in :
-
- - :any:`auto_examples/barycenters/plot_free_support_barycenter`
-
+.. minigallery:: ot.lp.free_support_barycenter
+ :add-heading: Examples of free support barycenter estimation
+ :heading-level: "
@@ -656,12 +640,10 @@ method proposed in [8]_ that estimates a continuous mapping approximating the
barycentric mapping is provided in :any:`ot.da.joint_OT_mapping_linear` for
linear mapping and :any:`ot.da.joint_OT_mapping_kernel` for non-linear mapping.
- .. hint::
-
- An example of the linear Monge mapping estimation is available
- in :
+.. minigallery:: ot.da.joint_OT_mapping_linear ot.da.joint_OT_mapping_linear ot.da.OT_mapping_linear
+ :add-heading: Examples of Monge mapping estimation
+ :heading-level: "
- - :any:`auto_examples/domain-adaptation/plot_otda_linear_mapping`
Domain adaptation classes
^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -704,14 +686,11 @@ A list of the provided implementation is given in the following note.
[14]_
* :any:`ot.da.MappingTransport`: Nonlinear mapping estimation [8]_
-.. hint::
- Examples of the use of OTDA classes are available in:
+.. minigallery:: ot.da.SinkhornTransport ot.da.LinearTransport
+ :add-heading: Examples of the use of OTDA classes
+ :heading-level: "
- - :any:`auto_examples/domain-adaptation/plot_otda_color_images`
- - :any:`auto_examples/domain-adaptation/plot_otda_mapping`
- - :any:`auto_examples/domain-adaptation/plot_otda_mapping_colors_images`
- - :any:`auto_examples/domain-adaptation/plot_otda_semi_supervised`
Other applications
------------------
@@ -746,11 +725,10 @@ respectively. Note that we also provide the Fisher discriminant estimator in
:code:`autograd`, :any:`ot.dr` is not imported by default. If you want to
use it you have to specifically import it with :code:`import ot.dr` .
-.. hint::
+.. minigallery:: ot.dr.wda
+ :add-heading: Examples of the use of WDA
+ :heading-level: "
- An example of the use of WDA is available in :
-
- - :any:`auto_examples/others/plot_WDA`
Unbalanced optimal transport
@@ -787,11 +765,9 @@ linear term.
the log stabilized version of the algorithm [10]_.
-.. hint::
-
- Examples of the use of :any:`ot.sinkhorn_unbalanced` are available in :
-
- - :any:`auto_examples/unbalanced-partial/plot_UOT_1D`
+.. minigallery:: ot.sinkhorn_unbalanced ot.sinkhorn_unbalanced2 ot.unbalanced.sinkhorn_unbalanced
+ :add-heading: Examples of Unbalanced OT
+ :heading-level: "
Unbalanced Barycenters
@@ -819,11 +795,10 @@ implemented the main function :any:`ot.barycenter_unbalanced`.
the log stabilized version of the algorithm [10]_.
-.. hint::
+.. minigallery:: ot.barycenter_unbalanced ot.unbalanced.barycenter_unbalanced
+ :add-heading: Examples of Unbalanced OT barycenters
+ :heading-level: "
- Examples of the use of :any:`ot.barycenter_unbalanced` are available in :
-
- - :any:`auto_examples/unbalanced-partial/plot_UOT_barycenter_1D`
Partial optimal transport
@@ -865,11 +840,10 @@ is computed in :any:`ot.partial.partial_gromov_wasserstein` and in
regularization of the problem.
-.. hint::
-
- Examples of the use of :any:`ot.partial` are available in:
+.. minigallery:: ot.partial.partial_wasserstein ot.partial.partial_gromov_wasserstein
+ :add-heading: Examples of Partial OT
+ :heading-level: "
- - :any:`auto_examples/unbalanced-partial/plot_partial_wass_and_gromov`
@@ -898,6 +872,12 @@ There also exists an entropic regularized variant of GW that has been proposed i
[12]_ and we provide an implementation of their algorithm in
:any:`ot.gromov.entropic_gromov_wasserstein`.
+
+.. minigallery:: ot.gromov.gromov_wasserstein ot.gromov.entropic_gromov_wasserstein ot.gromov.fused_gromov_wasserstein ot.gromov.gromov_wasserstein2
+ :add-heading: Examples of computation of GW, regularized G and FGW
+ :heading-level: "
+
+
Note that similarly to Wasserstein distance GW allows for the definition of GW
barycenters that can be expressed as
@@ -919,59 +899,15 @@ graphs for instance and also provide computable barycenters.
The implementations of FGW and FGW barycenter is provided in functions
:any:`ot.gromov.fused_gromov_wasserstein` and :any:`ot.gromov.fgw_barycenters`.
-.. hint::
-
- Examples of computation of GW, regularized G and FGW are available in:
-
- - :any:`auto_examples/gromov/plot_gromov`
- - :any:`auto_examples/gromov/plot_fgw`
-
- Examples of GW, regularized GW and FGW barycenters are available in:
-
- - :any:`auto_examples/gromov/plot_gromov_barycenter`
- - :any:`auto_examples/gromov/plot_barycenter_fgw`
+.. minigallery:: ot.gromov.gromov_barycenters ot.gromov.fgw_barycenters
+ :add-heading: Examples of GW, regularized G and FGW barycenters
+ :heading-level: "
-GPU acceleration
-^^^^^^^^^^^^^^^^
-
-.. warning::
-
- The :any:`ot.gpu` has been deprecated since the release 0.8 of POT and
- should not be used. The GPU implementation (in Pytorch for instance) can be
- used with the novel backends using the compatible functions from POT.
-
-
-We provide several implementation of our OT solvers in :any:`ot.gpu`. Those
-implementations use the :code:`cupy` toolbox that obviously need to be installed.
-
-
-.. note::
-
- Several implementations of POT functions (mainly those relying on linear
- algebra) have been implemented in :any:`ot.gpu`. Here is a short list on the
- main entries:
-
- - :meth:`ot.gpu.dist`: computation of distance matrix
- - :meth:`ot.gpu.sinkhorn`: computation of sinkhorn
- - :meth:`ot.gpu.sinkhorn_lpl1_mm`: computation of sinkhorn + group lasso
-Note that while the :any:`ot.gpu` module has been designed to be compatible with
-POT, calling its function with :any:`numpy` arrays will incur a large overhead due to
-the memory copy of the array on GPU prior to computation and conversion of the
-array after computation. To avoid this overhead, we provide functions
-:meth:`ot.gpu.to_gpu` and :meth:`ot.gpu.to_np` that perform the conversion
-explicitly.
-
-.. warning::
-
- Note that due to the hard dependency on :code:`cupy`, :any:`ot.gpu` is not
- imported by default. If you want to
- use it you have to specifically import it with :code:`import ot.gpu` .
-
-Solving OT with Multiple backends
----------------------------------
+Solving OT with Multiple backends on CPU/GPU
+--------------------------------------------
.. _backends_section:
@@ -1002,7 +938,21 @@ the function will be the same type as the inputs and on the same device. When
possible all computations are done on the same device and also when possible the
output will be differentiable with respect to the input of the function.
+GPU acceleration
+^^^^^^^^^^^^^^^^
+
+The backends provide automatic computations/compatibility on GPU for most of the
+POT functions.
+Note that all solvers relying on the exact OT solver en C++ will need to solve the
+problem on CPU which can incur some memory copy overhead and be far from optimal
+when all other computations are done on GPU. They will still work on array on
+GPU since the copy is done automatically.
+
+Some of the functions that rely on the exact C++ solver are:
+- :any:`ot.emd`, :any:`ot.emd2`
+- :any:`ot.gromov_wasserstein`, :any:`ot.gromov_wasserstein2`
+- :any:`ot.optim.cg`
List of compatible Backends
^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -1010,18 +960,21 @@ List of compatible Backends
- `Numpy <https://numpy.org/>`_ (all functions and solvers)
- `Pytorch <https://pytorch.org/>`_ (all outputs differentiable w.r.t. inputs)
- `Jax <https://github.com/google/jax>`_ (Some functions are differentiable some require a wrapper)
+- `Tensorflow <https://www.tensorflow.org/>`_ (all outputs differentiable w.r.t. inputs)
+- `Cupy <https://cupy.dev/>`_ (no differentiation, GPU only)
+
-List of compatible functions
+List of compatible modules
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This list will get longer for new releases and will hopefully disappear when POT
become fully implemented with the backend.
-- :any:`ot.emd`
-- :any:`ot.emd2`
-- :any:`ot.sinkhorn`
-- :any:`ot.sinkhorn2`
-- :any:`ot.dist`
+- :any:`ot.bregman`
+- :any:`ot.gromov` (some functions use CPU only solvers with copy overhead)
+- :any:`ot.optim` (some functions use CPU only solvers with copy overhead)
+- :any:`ot.sliced`
+- :any:`ot.utils` (partial)
FAQ
@@ -1049,7 +1002,7 @@ FAQ
2. **pip install POT fails with error : ImportError: No module named Cython.Build**
- As discussed shortly in the README file. POT requires to have :code:`numpy`
+ As discussed shortly in the README file. POT<0.8 requires to have :code:`numpy`
and :code:`cython` installed to build. This corner case is not yet handled
by :code:`pip` and for now you need to install both library prior to
installing POT.
@@ -1075,15 +1028,6 @@ FAQ
speedup can be obtained by using a GPU implementation since all operations
are matrix/vector products.
-4. **Using GPU fails with error: module 'ot' has no attribute 'gpu'**
-
- In order to limit import time and hard dependencies in POT. we do not import
- some sub-modules automatically with :code:`import ot`. In order to use the
- acceleration in :any:`ot.gpu` you need first to import is with
- :code:`import ot.gpu`.
-
- See `Issue #85 <https://github.com/rflamary/POT/issues/85>`__ and :any:`ot.gpu`
- for more details.
References
@@ -1219,3 +1163,52 @@ References
.. [30] Flamary, Rémi, et al. "Optimal transport with Laplacian regularization:
Applications to domain adaptation and shape matching." NIPS Workshop on Optimal
Transport and Machine Learning OTML. 2014.
+
+.. [31] Bonneel, Nicolas, et al. `Sliced and radon wasserstein barycenters of
+ measures
+ <https://perso.liris.cnrs.fr/nicolas.bonneel/WassersteinSliced-JMIV.pdf>`_\
+ , Journal of Mathematical Imaging and Vision 51.1 (2015): 22-45
+
+.. [32] Huang, M., Ma S., Lai, L. (2021). `A Riemannian Block Coordinate Descent Method for Computing the Projection Robust Wasserstein Distance <http://proceedings.mlr.press/v139/huang21e.html>`_\ , Proceedings of the 38th International Conference on Machine Learning (ICML).
+
+.. [33] Kerdoncuff T., Emonet R., Marc S. `Sampled Gromov Wasserstein
+ <https://hal.archives-ouvertes.fr/hal-03232509/document>`_\ , Machine
+ Learning Journal (MJL), 2021
+
+.. [34] Feydy, J., Séjourné, T., Vialard, F. X., Amari, S. I., Trouvé, A., &
+ Peyré, G. (2019, April). `Interpolating between optimal transport and MMD
+ using Sinkhorn divergences
+ <http://proceedings.mlr.press/v89/feydy19a/feydy19a.pdf>`_. In The 22nd
+ International Conference on Artificial Intelligence and Statistics (pp.
+ 2681-2690). PMLR.
+
+.. [35] Deshpande, I., Hu, Y. T., Sun, R., Pyrros, A., Siddiqui, N., Koyejo, S.,
+ & Schwing, A. G. (2019). `Max-sliced wasserstein distance and its use
+ for gans
+ <https://openaccess.thecvf.com/content_CVPR_2019/papers/Deshpande_Max-Sliced_Wasserstein_Distance_and_Its_Use_for_GANs_CVPR_2019_paper.pdf>`_.
+ In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 10648-10656).
+
+.. [36] Liutkus, A., Simsekli, U., Majewski, S., Durmus, A., & Stöter, F. R.
+ (2019, May). `Sliced-Wasserstein flows: Nonparametric generative modeling via
+ optimal transport and diffusions
+ <http://proceedings.mlr.press/v97/liutkus19a/liutkus19a.pdf>`_. In International
+ Conference on Machine Learning (pp. 4104-4113). PMLR.
+
+.. [37] Janati, H., Cuturi, M., Gramfort, A. `Debiased sinkhorn barycenters
+ <http://proceedings.mlr.press/v119/janati20a/janati20a.pdf>`_ Proceedings of
+ the 37th International Conference on Machine Learning, PMLR 119:4692-4701, 2020
+
+.. [38] C. Vincent-Cuaz, T. Vayer, R. Flamary, M. Corneli, N. Courty, `Online
+ Graph Dictionary Learning <https://arxiv.org/pdf/2102.06555.pdf>`_\ ,
+ International Conference on Machine Learning (ICML), 2021.
+
+.. [39] Gozlan, N., Roberto, C., Samson, P. M., & Tetali, P. (2017).
+ `Kantorovich duality for general transport costs and applications
+ <https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.712.1825&rep=rep1&type=pdf>`_.
+ Journal of Functional Analysis, 273(11), 3327-3405.
+
+.. [40] Forrow, A., Hütter, J. C., Nitzan, M., Rigollet, P., Schiebinger, G., &
+ Weed, J. (2019, April). `Statistical optimal transport via factored
+ couplings <http://proceedings.mlr.press/v89/forrow19a/forrow19a.pdf>`_. In
+ The 22nd International Conference on Artificial Intelligence and Statistics
+ (pp. 2454-2465). PMLR.
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