summaryrefslogtreecommitdiff
path: root/docs/source/auto_examples/auto_examples_jupyter.zip
blob: 92aa027a7e70962b7d176a538da4195492dce59c (plain)
ofshex dumpascii
0000 50 4b 03 04 14 00 00 00 00 00 02 84 1e 4b 5d 81 39 dd bc 0c 00 00 bc 0c 00 00 1c 00 00 00 61 75 PK...........K].9.............au
0020 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 57 44 41 2e 69 70 79 6e 62 7b 0a 20 20 22 6e to_examples/plot_WDA.ipynb{..."n
0040 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 bformat_minor":.0,...."nbformat"
0060 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 :.4,...."cells":.[.....{......."
0080 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 execution_count":.null,........"
00a0 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 cell_type":."code",........"sour
00c0 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 ce":.[........."%matplotlib.inli
00e0 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b ne".......],........"outputs":.[
0100 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 ],........"metadata":.{.........
0120 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d "collapsed":.false.......}.....}
0140 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 ,......{......."source":.[......
0160 20 20 20 22 5c 6e 23 20 57 61 73 73 65 72 73 74 65 69 6e 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 ..."\n#.Wasserstein.Discriminant
0180 20 41 6e 61 6c 79 73 69 73 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 .Analysis\n\n\n\n".......],.....
01a0 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 ..."cell_type":."markdown",.....
01c0 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a ..."metadata":.{}.....},......{.
01e0 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a ......"execution_count":.null,..
0200 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 ......"cell_type":."code",......
0220 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a .."source":.[........."#.Author:
0240 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 .Remi.Flamary.<remi.flamary@unic
0260 65 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 e.fr>\n#\n#.License:.MIT.License
0280 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d \n\nimport.numpy.as.np\nimport.m
02a0 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 5c 6e 66 72 6f 6d 20 6f 74 atplotlib.pylab.as.pl\n\nfrom.ot
02c0 2e 64 72 20 69 6d 70 6f 72 74 20 77 64 61 2c 20 66 64 61 5c 6e 5c 6e 5c 6e 23 25 25 20 70 61 72 .dr.import.wda,.fda\n\n\n#%%.par
02e0 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e 20 3d 20 31 30 30 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 ameters\n\nn.=.1000..#.nb.sample
0300 73 20 69 6e 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 61 74 61 73 65 74 73 5c s.in.source.and.target.datasets\
0320 6e 6e 7a 20 3d 20 30 2e 32 5c 6e 5c 6e 23 20 67 65 6e 65 72 61 74 65 20 63 69 72 63 6c 65 20 64 nnz.=.0.2\n\n#.generate.circle.d
0340 61 74 61 73 65 74 5c 6e 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 28 6e 29 20 2a 20 ataset\nt.=.np.random.rand(n).*.
0360 32 20 2a 20 6e 70 2e 70 69 5c 6e 79 73 20 3d 20 6e 70 2e 66 6c 6f 6f 72 28 28 6e 70 2e 61 72 61 2.*.np.pi\nys.=.np.floor((np.ara
0380 6e 67 65 28 6e 29 20 2a 20 31 2e 30 20 2f 20 6e 20 2a 20 33 29 29 20 2b 20 31 5c 6e 78 73 20 3d nge(n).*.1.0./.n.*.3)).+.1\nxs.=
03a0 20 6e 70 2e 63 6f 6e 63 61 74 65 6e 61 74 65 28 5c 6e 20 20 20 20 28 6e 70 2e 63 6f 73 28 74 29 .np.concatenate(\n....(np.cos(t)
03c0 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 20 31 29 29 2c 20 6e 70 2e 73 69 6e 28 74 29 2e 72 65 73 .reshape((-1,.1)),.np.sin(t).res
03e0 68 61 70 65 28 28 2d 31 2c 20 31 29 29 29 2c 20 31 29 5c 6e 78 73 20 3d 20 78 73 20 2a 20 79 73 hape((-1,.1))),.1)\nxs.=.xs.*.ys
0400 2e 72 65 73 68 61 70 65 28 2d 31 2c 20 31 29 20 2b 20 6e 7a 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d .reshape(-1,.1).+.nz.*.np.random
0420 2e 72 61 6e 64 6e 28 6e 2c 20 32 29 5c 6e 5c 6e 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 .randn(n,.2)\n\nt.=.np.random.ra
0440 6e 64 28 6e 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 5c 6e 79 74 20 3d 20 6e 70 2e 66 6c 6f 6f 72 nd(n).*.2.*.np.pi\nyt.=.np.floor
0460 28 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2a 20 31 2e 30 20 2f 20 6e 20 2a 20 33 29 29 20 2b ((np.arange(n).*.1.0./.n.*.3)).+
0480 20 31 5c 6e 78 74 20 3d 20 6e 70 2e 63 6f 6e 63 61 74 65 6e 61 74 65 28 5c 6e 20 20 20 20 28 6e .1\nxt.=.np.concatenate(\n....(n
04a0 70 2e 63 6f 73 28 74 29 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 20 31 29 29 2c 20 6e 70 2e 73 69 p.cos(t).reshape((-1,.1)),.np.si
04c0 6e 28 74 29 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 20 31 29 29 29 2c 20 31 29 5c 6e 78 74 20 3d n(t).reshape((-1,.1))),.1)\nxt.=
04e0 20 78 74 20 2a 20 79 74 2e 72 65 73 68 61 70 65 28 2d 31 2c 20 31 29 20 2b 20 6e 7a 20 2a 20 6e .xt.*.yt.reshape(-1,.1).+.nz.*.n
0500 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 32 29 5c 6e 5c 6e 6e 62 6e 6f 69 73 65 20 p.random.randn(n,.2)\n\nnbnoise.
0520 3d 20 38 5c 6e 5c 6e 78 73 20 3d 20 6e 70 2e 68 73 74 61 63 6b 28 28 78 73 2c 20 6e 70 2e 72 61 =.8\n\nxs.=.np.hstack((xs,.np.ra
0540 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 6e 62 6e 6f 69 73 65 29 29 29 5c 6e 78 74 20 3d 20 6e ndom.randn(n,.nbnoise)))\nxt.=.n
0560 70 2e 68 73 74 61 63 6b 28 28 78 74 2c 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c p.hstack((xt,.np.random.randn(n,
0580 20 6e 62 6e 6f 69 73 65 29 29 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 5c .nbnoise)))\n\n#%%.plot.samples\
05a0 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 2e 35 29 npl.figure(1,.figsize=(6.4,.3.5)
05c0 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 )\n\npl.subplot(1,.2,.1)\npl.sca
05e0 74 74 65 72 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d tter(xt[:,.0],.xt[:,.1],.c=ys,.m
0600 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 arker='+',.label='Source.samples
0620 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 ')\npl.legend(loc=0)\npl.title('
0640 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 64 69 6d 65 6e 73 69 6f 6e 73 27 29 5c 6e 5c 6e 70 6c 2e Discriminant.dimensions')\n\npl.
0660 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b subplot(1,.2,.2)\npl.scatter(xt[
0680 3a 2c 20 32 5d 2c 20 78 74 5b 3a 2c 20 33 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b :,.2],.xt[:,.3],.c=ys,.marker='+
06a0 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c ',.label='Source.samples')\npl.l
06c0 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 74 68 65 72 20 64 69 egend(loc=0)\npl.title('Other.di
06e0 6d 65 6e 73 69 6f 6e 73 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c mensions')\npl.tight_layout()\n\
0700 6e 23 25 25 20 43 6f 6d 70 75 74 65 20 46 44 41 5c 6e 70 20 3d 20 32 5c 6e 5c 6e 50 66 64 61 2c n#%%.Compute.FDA\np.=.2\n\nPfda,
0720 20 70 72 6f 6a 66 64 61 20 3d 20 66 64 61 28 78 73 2c 20 79 73 2c 20 70 29 5c 6e 5c 6e 23 25 25 .projfda.=.fda(xs,.ys,.p)\n\n#%%
0740 20 43 6f 6d 70 75 74 65 20 57 44 41 5c 6e 70 20 3d 20 32 5c 6e 72 65 67 20 3d 20 31 65 30 5c 6e .Compute.WDA\np.=.2\nreg.=.1e0\n
0760 6b 20 3d 20 31 30 5c 6e 6d 61 78 69 74 65 72 20 3d 20 31 30 30 5c 6e 5c 6e 50 77 64 61 2c 20 70 k.=.10\nmaxiter.=.100\n\nPwda,.p
0780 72 6f 6a 77 64 61 20 3d 20 77 64 61 28 78 73 2c 20 79 73 2c 20 70 2c 20 72 65 67 2c 20 6b 2c 20 rojwda.=.wda(xs,.ys,.p,.reg,.k,.
07a0 6d 61 78 69 74 65 72 3d 6d 61 78 69 74 65 72 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 73 61 6d maxiter=maxiter)\n\n#%%.plot.sam
07c0 70 6c 65 73 5c 6e 5c 6e 78 73 70 20 3d 20 70 72 6f 6a 66 64 61 28 78 73 29 5c 6e 78 74 70 20 3d ples\n\nxsp.=.projfda(xs)\nxtp.=
07e0 20 70 72 6f 6a 66 64 61 28 78 74 29 5c 6e 5c 6e 78 73 70 77 20 3d 20 70 72 6f 6a 77 64 61 28 78 .projfda(xt)\n\nxspw.=.projwda(x
0800 73 29 5c 6e 78 74 70 77 20 3d 20 70 72 6f 6a 77 64 61 28 78 74 29 5c 6e 5c 6e 70 6c 2e 66 69 67 s)\nxtpw.=.projwda(xt)\n\npl.fig
0820 75 72 65 28 32 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 31 29 5c 6e 70 ure(2)\n\npl.subplot(2,.2,.1)\np
0840 6c 2e 73 63 61 74 74 65 72 28 78 73 70 5b 3a 2c 20 30 5d 2c 20 78 73 70 5b 3a 2c 20 31 5d 2c 20 l.scatter(xsp[:,.0],.xsp[:,.1],.
0860 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 50 72 6f 6a 65 63 74 c=ys,.marker='+',.label='Project
0880 65 64 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e ed.samples')\npl.legend(loc=0)\n
08a0 70 6c 2e 74 69 74 6c 65 28 27 50 72 6f 6a 65 63 74 65 64 20 74 72 61 69 6e 69 6e 67 20 73 61 6d pl.title('Projected.training.sam
08c0 70 6c 65 73 20 46 44 41 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 32 ples.FDA')\n\npl.subplot(2,.2,.2
08e0 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 70 5b 3a 2c 20 30 5d 2c 20 78 74 70 5b 3a 2c 20 )\npl.scatter(xtp[:,.0],.xtp[:,.
0900 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 50 72 6f 1],.c=ys,.marker='+',.label='Pro
0920 6a 65 63 74 65 64 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d jected.samples')\npl.legend(loc=
0940 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 50 72 6f 6a 65 63 74 65 64 20 74 65 73 74 20 73 61 6d 0)\npl.title('Projected.test.sam
0960 70 6c 65 73 20 46 44 41 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 33 ples.FDA')\n\npl.subplot(2,.2,.3
0980 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 70 77 5b 3a 2c 20 30 5d 2c 20 78 73 70 77 5b 3a )\npl.scatter(xspw[:,.0],.xspw[:
09a0 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 50 ,.1],.c=ys,.marker='+',.label='P
09c0 72 6f 6a 65 63 74 65 64 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f rojected.samples')\npl.legend(lo
09e0 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 50 72 6f 6a 65 63 74 65 64 20 74 72 61 69 6e 69 c=0)\npl.title('Projected.traini
0a00 6e 67 20 73 61 6d 70 6c 65 73 20 57 44 41 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 ng.samples.WDA')\n\npl.subplot(2
0a20 2c 20 32 2c 20 34 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 70 77 5b 3a 2c 20 30 5d 2c 20 ,.2,.4)\npl.scatter(xtpw[:,.0],.
0a40 78 74 70 77 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 xtpw[:,.1],.c=ys,.marker='+',.la
0a60 62 65 6c 3d 27 50 72 6f 6a 65 63 74 65 64 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 bel='Projected.samples')\npl.leg
0a80 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 50 72 6f 6a 65 63 74 65 64 20 end(loc=0)\npl.title('Projected.
0aa0 74 65 73 74 20 73 61 6d 70 6c 65 73 20 57 44 41 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 test.samples.WDA')\npl.tight_lay
0ac0 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 out()\n\npl.show()".......],....
0ae0 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 ...."outputs":.[],........"metad
0b00 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c ata":.{........."collapsed":.fal
0b20 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 se.......}.....}...],...."metada
0b40 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 ta":.{....."kernelspec":.{......
0b60 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 ."display_name":."Python.2",....
0b80 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c ...."name":."python2",........"l
0ba0 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 anguage":."python".....},......"
0bc0 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 language_info":.{......."mimetyp
0be0 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 e":."text/x-python",........"nbc
0c00 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 onvert_exporter":."python",.....
0c20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c ..."name":."python",........"fil
0c40 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 e_extension":.".py",........"ver
0c60 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 sion":."2.7.12",........"pygment
0c80 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f s_lexer":."ipython2",........"co
0ca0 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 demirror_mode":.{........."versi
0cc0 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f on":.2,.........."name":."ipytho
0ce0 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 n".......}.....}...}.}PK........
0d00 87 7b 82 49 fa 8c 13 06 e2 10 00 00 e2 10 00 00 25 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 .{.I............%...auto_example
0d20 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 s/plot_OTDA_mapping.ipynb{..."nb
0d40 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a format_minor":.0,...."nbformat":
0d60 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 .4,...."cells":.[.....{......."e
0d80 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 xecution_count":.null,........"c
0da0 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ell_type":."code",........"sourc
0dc0 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e e":.[........."%matplotlib.inlin
0de0 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d e".......],........"outputs":.[]
0e00 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 ,........"metadata":.{........."
0e20 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c collapsed":.false.......}.....},
0e40 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 ......{......."source":.[.......
0e60 20 20 22 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .."\n===========================
0e80 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 4f 54 20 6d 61 70 70 69 6e 67 ====================\nOT.mapping
0ea0 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f .estimation.for.domain.adaptatio
0ec0 6e 20 5b 38 5d 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d n.[8]\n=========================
0ee0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 5c 6e 5b 38 5d 20 4d 2e ======================\n\n[8].M.
0f00 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e 20 46 6c 61 6d 61 72 79 2c 20 .Perrot,.N..Courty,.R..Flamary,.
0f20 41 2e 20 48 61 62 72 61 72 64 2c 20 5c 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e A..Habrard,.\"Mapping.estimation
0f40 20 66 6f 72 5c 6e 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 .for\n....discrete.optimal.trans
0f60 70 6f 72 74 5c 22 2c 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 50 72 6f 63 65 port\",.Neural.Information.Proce
0f80 73 73 69 6e 67 20 53 79 73 74 65 6d 73 20 28 4e 49 50 53 29 2c 20 32 30 31 36 2e 5c 6e 5c 6e 22 ssing.Systems.(NIPS),.2016.\n\n"
0fa0 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d .......],........"cell_type":."m
0fc0 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a arkdown",........"metadata":.{}.
0fe0 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 ....},......{......."execution_c
1000 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a ount":.null,........"cell_type":
1020 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ."code",........"source":.[.....
1040 20 20 20 20 22 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 ...."import.numpy.as.np\nimport.
1060 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f matplotlib.pylab.as.pl\nimport.o
1080 74 5c 6e 5c 6e 5c 6e 5c 6e 23 25 25 20 64 61 74 61 73 65 74 20 67 65 6e 65 72 61 74 69 6f 6e 5c t\n\n\n\n#%%.dataset.generation\
10a0 6e 5c 6e 6e 70 2e 72 61 6e 64 6f 6d 2e 73 65 65 64 28 30 29 20 23 20 6d 61 6b 65 73 20 65 78 61 n\nnp.random.seed(0).#.makes.exa
10c0 6d 70 6c 65 20 72 65 70 72 6f 64 75 63 69 62 6c 65 5c 6e 5c 6e 6e 3d 31 30 30 20 23 20 6e 62 20 mple.reproducible\n\nn=100.#.nb.
10e0 73 61 6d 70 6c 65 73 20 69 6e 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 61 74 samples.in.source.and.target.dat
1100 61 73 65 74 73 5c 6e 74 68 65 74 61 3d 32 2a 6e 70 2e 70 69 2f 32 30 5c 6e 6e 7a 3d 30 2e 31 5c asets\ntheta=2*np.pi/20\nnz=0.1\
1120 6e 78 73 2c 79 73 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 nxs,ys=ot.datasets.get_data_clas
1140 73 69 66 28 27 67 61 75 73 73 72 6f 74 27 2c 6e 2c 6e 7a 3d 6e 7a 29 5c 6e 78 74 2c 79 74 3d 6f sif('gaussrot',n,nz=nz)\nxt,yt=o
1160 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 67 61 75 t.datasets.get_data_classif('gau
1180 73 73 72 6f 74 27 2c 6e 2c 74 68 65 74 61 3d 74 68 65 74 61 2c 6e 7a 3d 6e 7a 29 5c 6e 5c 6e 23 ssrot',n,theta=theta,nz=nz)\n\n#
11a0 20 6f 6e 65 20 6f 66 20 74 68 65 20 74 61 72 67 65 74 20 6d 6f 64 65 20 63 68 61 6e 67 65 73 20 .one.of.the.target.mode.changes.
11c0 69 74 73 20 76 61 72 69 61 6e 63 65 20 28 6e 6f 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 29 its.variance.(no.linear.mapping)
11e0 5c 6e 78 74 5b 79 74 3d 3d 32 5d 2a 3d 33 5c 6e 78 74 3d 78 74 2b 34 5c 6e 5c 6e 5c 6e 23 25 25 \nxt[yt==2]*=3\nxt=xt+4\n\n\n#%%
1200 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 28 38 2c .plot.samples\n\npl.figure(1,(8,
1220 35 29 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 5))\npl.clf()\n\npl.scatter(xs[:
1240 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 ,0],xs[:,1],c=ys,marker='+',labe
1260 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 l='Source.samples')\npl.scatter(
1280 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c xt[:,0],xt[:,1],c=yt,marker='o',
12a0 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 70 6c 2e 6c 65 label='Target.samples')\n\npl.le
12c0 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e gend(loc=0)\npl.title('Source.an
12e0 64 20 74 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 5c 6e 5c 6e 5c 6e d.target.distributions')\n\n\n\n
1300 23 25 25 20 4f 54 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e #%%.OT.linear.mapping.estimation
1320 5c 6e 5c 6e 65 74 61 3d 31 65 2d 38 20 20 20 23 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 6c \n\neta=1e-8...#.quadratic.regul
1340 61 72 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 73 69 6f 6e 5c 6e 6d 75 3d 31 65 30 arization.for.regression\nmu=1e0
1360 20 20 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 4f 54 20 6c 69 6e 65 61 72 20 74 .....#.weight.of.the.OT.linear.t
1380 65 72 6d 5c 6e 62 69 61 73 3d 54 72 75 65 20 20 23 20 65 73 74 69 6d 61 74 65 20 61 20 62 69 61 erm\nbias=True..#.estimate.a.bia
13a0 73 5c 6e 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 s\n\not_mapping=ot.da.OTDA_mappi
13c0 6e 67 5f 6c 69 6e 65 61 72 28 29 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 2e 66 69 74 28 78 73 2c 78 ng_linear()\not_mapping.fit(xs,x
13e0 74 2c 6d 75 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 t,mu=mu,eta=eta,bias=bias,numIte
1400 72 6d 61 78 20 3d 20 32 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 78 73 74 3d 6f rmax.=.20,verbose=True)\n\nxst=o
1420 74 5f 6d 61 70 70 69 6e 67 2e 70 72 65 64 69 63 74 28 78 73 29 20 23 20 75 73 65 20 74 68 65 20 t_mapping.predict(xs).#.use.the.
1440 65 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 5c 6e 78 73 74 30 3d 6f 74 5f 6d 61 70 70 69 estimated.mapping\nxst0=ot_mappi
1460 6e 67 2e 69 6e 74 65 72 70 28 29 20 20 20 23 20 75 73 65 20 62 61 72 79 63 65 6e 74 72 69 63 20 ng.interp()...#.use.barycentric.
1480 6d 61 70 70 69 6e 67 5c 6e 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 37 29 29 mapping\n\n\npl.figure(2,(10,7))
14a0 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 5c 6e 70 \npl.clf()\npl.subplot(2,2,1)\np
14c0 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d l.scatter(xt[:,0],xt[:,1],c=yt,m
14e0 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 arker='o',label='Target.samples'
1500 2c 61 6c 70 68 61 3d 2e 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d ,alpha=.3)\npl.scatter(xst0[:,0]
1520 2c 78 73 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c ,xst0[:,1],c=ys,marker='+',label
1540 3d 27 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c ='barycentric.mapping')\npl.titl
1560 65 28 5c 22 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 5c 22 29 5c 6e 5c 6e 70 6c e(\"barycentric.mapping\")\n\npl
1580 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a .subplot(2,2,2)\npl.scatter(xt[:
15a0 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 ,0],xt[:,1],c=yt,marker='o',labe
15c0 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 33 29 5c 6e 70 6c l='Target.samples',alpha=.3)\npl
15e0 2e 73 63 61 74 74 65 72 28 78 73 74 5b 3a 2c 30 5d 2c 78 73 74 5b 3a 2c 31 5d 2c 63 3d 79 73 2c .scatter(xst[:,0],xst[:,1],c=ys,
1600 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 70 70 69 6e marker='+',label='Learned.mappin
1620 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 4c 65 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 5c g')\npl.title(\"Learned.mapping\
1640 22 29 5c 6e 5c 6e 5c 6e 5c 6e 23 25 25 20 4b 65 72 6e 65 6c 20 6d 61 70 70 69 6e 67 20 65 73 74 ")\n\n\n\n#%%.Kernel.mapping.est
1660 69 6d 61 74 69 6f 6e 5c 6e 5c 6e 65 74 61 3d 31 65 2d 35 20 20 20 23 20 71 75 61 64 72 61 74 69 imation\n\neta=1e-5...#.quadrati
1680 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 73 69 6f 6e 5c c.regularization.for.regression\
16a0 6e 6d 75 3d 31 65 2d 31 20 20 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 4f 54 20 nmu=1e-1.....#.weight.of.the.OT.
16c0 6c 69 6e 65 61 72 20 74 65 72 6d 5c 6e 62 69 61 73 3d 54 72 75 65 20 20 23 20 65 73 74 69 6d 61 linear.term\nbias=True..#.estima
16e0 74 65 20 61 20 62 69 61 73 5c 6e 73 69 67 6d 61 3d 31 20 20 20 20 23 20 73 69 67 6d 61 20 62 61 te.a.bias\nsigma=1....#.sigma.ba
1700 6e 64 77 69 64 74 68 20 66 6f 74 20 67 61 75 73 73 69 61 6e 20 6b 65 72 6e 65 6c 5c 6e 5c 6e 5c ndwidth.fot.gaussian.kernel\n\n\
1720 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 not_mapping_kernel=ot.da.OTDA_ma
1740 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 28 29 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 pping_kernel()\not_mapping_kerne
1760 6c 2e 66 69 74 28 78 73 2c 78 74 2c 6d 75 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 73 69 67 6d 61 3d l.fit(xs,xt,mu=mu,eta=eta,sigma=
1780 73 69 67 6d 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 2c sigma,bias=bias,numItermax.=.10,
17a0 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 78 73 74 5f 6b 65 72 6e 65 6c 3d 6f 74 5f 6d verbose=True)\n\nxst_kernel=ot_m
17c0 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 70 72 65 64 69 63 74 28 78 73 29 20 23 20 75 73 65 20 apping_kernel.predict(xs).#.use.
17e0 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 5c 6e 78 73 74 30 5f 6b 65 72 6e the.estimated.mapping\nxst0_kern
1800 65 6c 3d 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 69 6e 74 65 72 70 28 29 20 20 20 el=ot_mapping_kernel.interp()...
1820 23 20 75 73 65 20 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 5c 6e 5c 6e 5c 6e 23 #.use.barycentric.mapping\n\n\n#
1840 25 25 20 50 6c 6f 74 74 69 6e 67 20 74 68 65 20 6d 61 70 70 65 64 20 73 61 6d 70 6c 65 73 5c 6e %%.Plotting.the.mapped.samples\n
1860 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 37 29 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c \npl.figure(2,(10,7))\npl.clf()\
1880 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 npl.subplot(2,2,1)\npl.scatter(x
18a0 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c t[:,0],xt[:,1],c=yt,marker='o',l
18c0 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 5c abel='Target.samples',alpha=.2)\
18e0 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 74 30 5b 3a 2c 31 5d 2c npl.scatter(xst0[:,0],xst0[:,1],
1900 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 4d 61 70 70 65 64 20 73 6f c=ys,marker='+',label='Mapped.so
1920 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 42 61 72 79 2e urce.samples')\npl.title(\"Bary.
1940 20 6d 61 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 5c 22 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 .mapping.(linear)\")\npl.legend(
1960 6c 6f 63 3d 30 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 5c 6e 70 6c 2e loc=0)\n\npl.subplot(2,2,2)\npl.
1980 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 scatter(xt[:,0],xt[:,1],c=yt,mar
19a0 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 ker='o',label='Target.samples',a
19c0 6c 70 68 61 3d 2e 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 5b 3a 2c 30 5d 2c 78 73 lpha=.2)\npl.scatter(xst[:,0],xs
19e0 74 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 4c 65 t[:,1],c=ys,marker='+',label='Le
1a00 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 45 73 74 69 arned.mapping')\npl.title(\"Esti
1a20 6d 2e 20 6d 61 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 5c 22 29 5c 6e 5c 6e 70 6c 2e 73 75 62 m..mapping.(linear)\")\n\npl.sub
1a40 70 6c 6f 74 28 32 2c 32 2c 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c plot(2,2,3)\npl.scatter(xt[:,0],
1a60 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 xt[:,1],c=yt,marker='o',label='T
1a80 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 5c 6e 70 6c 2e 73 63 61 arget.samples',alpha=.2)\npl.sca
1aa0 74 74 65 72 28 78 73 74 30 5f 6b 65 72 6e 65 6c 5b 3a 2c 30 5d 2c 78 73 74 30 5f 6b 65 72 6e 65 tter(xst0_kernel[:,0],xst0_kerne
1ac0 6c 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 62 61 l[:,1],c=ys,marker='+',label='ba
1ae0 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 rycentric.mapping')\npl.title(\"
1b00 42 61 72 79 2e 20 6d 61 70 70 69 6e 67 20 28 6b 65 72 6e 65 6c 29 5c 22 29 5c 6e 5c 6e 70 6c 2e Bary..mapping.(kernel)\")\n\npl.
1b20 73 75 62 70 6c 6f 74 28 32 2c 32 2c 34 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c subplot(2,2,4)\npl.scatter(xt[:,
1b40 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 0],xt[:,1],c=yt,marker='o',label
1b60 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 5c 6e 70 6c 2e ='Target.samples',alpha=.2)\npl.
1b80 73 63 61 74 74 65 72 28 78 73 74 5f 6b 65 72 6e 65 6c 5b 3a 2c 30 5d 2c 78 73 74 5f 6b 65 72 6e scatter(xst_kernel[:,0],xst_kern
1ba0 65 6c 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 4c el[:,1],c=ys,marker='+',label='L
1bc0 65 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 45 73 74 earned.mapping')\npl.title(\"Est
1be0 69 6d 2e 20 6d 61 70 70 69 6e 67 20 28 6b 65 72 6e 65 6c 29 5c 22 29 22 0a 20 20 20 20 20 20 5d im..mapping.(kernel)\")".......]
1c00 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 ,........"outputs":.[],........"
1c20 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 metadata":.{........."collapsed"
1c40 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d :.false.......}.....}...],...."m
1c60 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a etadata":.{....."kernelspec":.{.
1c80 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 ......"display_name":."Python.2"
1ca0 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 ,........"name":."python2",.....
1cc0 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a ..."language":."python".....},..
1ce0 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 ...."language_info":.{......."mi
1d00 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 metype":."text/x-python",.......
1d20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c ."nbconvert_exporter":."python",
1d40 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 ........"name":."python",.......
1d60 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 ."file_extension":.".py",.......
1d80 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 ."version":."2.7.12",........"py
1da0 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 gments_lexer":."ipython2",......
1dc0 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 .."codemirror_mode":.{........."
1de0 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 version":.2,.........."name":."i
1e00 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 python".......}.....}...}.}PK...
1e20 00 00 00 00 00 2e 89 1e 4b b5 f1 d1 9b 8c 11 00 00 8c 11 00 00 24 00 00 00 61 75 74 6f 5f 65 78 ........K............$...auto_ex
1e40 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e 69 70 79 6e 62 7b 0a 20 amples/plot_optim_OTreg.ipynb{..
1e60 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d ."nbformat_minor":.0,...."nbform
1e80 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 at":.4,...."cells":.[.....{.....
1ea0 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 .."execution_count":.null,......
1ec0 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 .."cell_type":."code",........"s
1ee0 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 ource":.[........."%matplotlib.i
1f00 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 nline".......],........"outputs"
1f20 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 :.[],........"metadata":.{......
1f40 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 ..."collapsed":.false.......}...
1f60 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 ..},......{......."source":.[...
1f80 20 20 20 20 20 20 22 5c 6e 23 20 52 65 67 75 6c 61 72 69 7a 65 64 20 4f 54 20 77 69 74 68 20 67 ......"\n#.Regularized.OT.with.g
1fa0 65 6e 65 72 69 63 20 73 6f 6c 76 65 72 5c 6e 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d eneric.solver\n\n\n\n\n".......]
1fc0 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 ,........"cell_type":."markdown"
1fe0 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a ,........"metadata":.{}.....},..
2000 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e ....{......."execution_count":.n
2020 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c ull,........"cell_type":."code",
2040 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 69 6d 70 ........"source":.[........."imp
2060 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c ort.numpy.as.np\nimport.matplotl
2080 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 22 0a 20 20 20 20 20 ib.pylab.as.pl\nimport.ot"......
20a0 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 .],........"outputs":.[],.......
20c0 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 ."metadata":.{........."collapse
20e0 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a d":.false.......}.....},......{.
2100 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 47 65 6e 65 72 ......"source":.[........."Gener
2120 61 74 65 20 64 61 74 61 20 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ate.data.\n#####################
2140 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
2160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 ########################\n\n"...
2180 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b ....],........"cell_type":."mark
21a0 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 down",........"metadata":.{}....
21c0 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e .},......{......."execution_coun
21e0 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 t":.null,........"cell_type":."c
2200 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 ode",........"source":.[........
2220 20 22 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e 20 3d 20 31 30 30 20 20 23 20 6e ."#%%.parameters\n\nn.=.100..#.n
2240 62 20 62 69 6e 73 5c 6e 5c 6e 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 5c 6e 78 20 3d 20 6e b.bins\n\n#.bin.positions\nx.=.n
2260 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c 6e 5c p.arange(n,.dtype=np.float64)\n\
2280 6e 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 61 20 3d 20 6f n#.Gaussian.distributions\na.=.o
22a0 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c t.datasets.get_1D_gauss(n,.m=20,
22c0 20 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 5c 6e 62 20 3d 20 6f 74 .s=5)..#.m=.mean,.s=.std\nb.=.ot
22e0 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 .datasets.get_1D_gauss(n,.m=60,.
2300 73 3d 31 30 29 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 20 3d 20 6f 74 2e 64 s=10)\n\n#.loss.matrix\nM.=.ot.d
2320 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 61 70 65 ist(x.reshape((n,.1)),.x.reshape
2340 28 28 6e 2c 20 31 29 29 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 20 5d ((n,.1)))\nM./=.M.max()".......]
2360 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 ,........"outputs":.[],........"
2380 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 metadata":.{........."collapsed"
23a0 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 :.false.......}.....},......{...
23c0 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 45 ...."source":.[........."Solve.E
23e0 4d 44 20 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 MD.\n###########################
2400 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
2420 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c ##################\n\n".......],
2440 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c ........"cell_type":."markdown",
2460 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 ........"metadata":.{}.....},...
2480 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 ...{......."execution_count":.nu
24a0 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 ll,........"cell_type":."code",.
24c0 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 ......."source":.[........."#%%.
24e0 45 4d 44 5c 6e 5c 6e 47 30 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 29 5c 6e 5c 6e 70 EMD\n\nG0.=.ot.emd(a,.b,.M)\n\np
2500 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e l.figure(3,.figsize=(5,.5))\not.
2520 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 30 2c 20 27 4f 54 20 6d 61 plot.plot1D_mat(a,.b,.G0,.'OT.ma
2540 74 72 69 78 20 47 30 27 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 trix.G0')".......],........"outp
2560 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 uts":.[],........"metadata":.{..
2580 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 ......."collapsed":.false.......
25a0 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 }.....},......{......."source":.
25c0 5b 0a 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 45 4d 44 20 77 69 74 68 20 46 72 6f 62 65 6e [........."Solve.EMD.with.Froben
25e0 69 75 73 20 6e 6f 72 6d 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 23 23 23 23 23 23 23 ius.norm.regularization\n#######
2600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
2620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
2640 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c ######\n\n".......],........"cel
2660 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 l_type":."markdown",........"met
2680 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 adata":.{}.....},......{......."
26a0 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 execution_count":.null,........"
26c0 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 cell_type":."code",........"sour
26e0 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 ce":.[........."#%%.Example.with
2700 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e .Frobenius.norm.regularization\n
2720 5c 6e 5c 6e 64 65 66 20 66 28 47 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 30 2e 35 20 2a 20 \n\ndef.f(G):\n....return.0.5.*.
2740 6e 70 2e 73 75 6d 28 47 2a 2a 32 29 5c 6e 5c 6e 5c 6e 64 65 66 20 64 66 28 47 29 3a 5c 6e 20 20 np.sum(G**2)\n\n\ndef.df(G):\n..
2760 20 20 72 65 74 75 72 6e 20 47 5c 6e 5c 6e 5c 6e 72 65 67 20 3d 20 31 65 2d 31 5c 6e 5c 6e 47 6c ..return.G\n\n\nreg.=.1e-1\n\nGl
2780 32 20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 63 67 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 2c 20 66 2c 2.=.ot.optim.cg(a,.b,.M,.reg,.f,
27a0 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 .df,.verbose=True)\n\npl.figure(
27c0 33 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 6c 32 3)\not.plot.plot1D_mat(a,.b,.Gl2
27e0 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 22 0a 20 20 20 20 20 20 ,.'OT.matrix.Frob..reg')".......
2800 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 ],........"outputs":.[],........
2820 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 "metadata":.{........."collapsed
2840 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 ":.false.......}.....},......{..
2860 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 ....."source":.[........."Solve.
2880 45 4d 44 20 77 69 74 68 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e EMD.with.entropic.regularization
28a0 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 \n##############################
28c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
28e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 ###############\n\n".......],...
2900 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 ....."cell_type":."markdown",...
2920 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 ....."metadata":.{}.....},......
2940 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c {......."execution_count":.null,
2960 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 ........"cell_type":."code",....
2980 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 78 61 ...."source":.[........."#%%.Exa
29a0 6d 70 6c 65 20 77 69 74 68 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f mple.with.entropic.regularizatio
29c0 6e 5c 6e 5c 6e 5c 6e 64 65 66 20 66 28 47 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e n\n\n\ndef.f(G):\n....return.np.
29e0 73 75 6d 28 47 20 2a 20 6e 70 2e 6c 6f 67 28 47 29 29 5c 6e 5c 6e 5c 6e 64 65 66 20 64 66 28 47 sum(G.*.np.log(G))\n\n\ndef.df(G
2a00 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 6c 6f 67 28 47 29 20 2b 20 31 2e 5c 6e 5c ):\n....return.np.log(G).+.1.\n\
2a20 6e 5c 6e 72 65 67 20 3d 20 31 65 2d 33 5c 6e 5c 6e 47 65 20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 63 n\nreg.=.1e-3\n\nGe.=.ot.optim.c
2a40 67 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 g(a,.b,.M,.reg,.f,.df,.verbose=T
2a60 72 75 65 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c rue)\n\npl.figure(4,.figsize=(5,
2a80 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 .5))\not.plot.plot1D_mat(a,.b,.G
2aa0 65 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 45 6e 74 72 6f 70 2e 20 72 65 67 27 29 22 0a 20 20 20 e,.'OT.matrix.Entrop..reg')"....
2ac0 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 ...],........"outputs":.[],.....
2ae0 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 ..."metadata":.{........."collap
2b00 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 sed":.false.......}.....},......
2b20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 6f 6c {......."source":.[........."Sol
2b40 76 65 20 45 4d 44 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 2b 20 65 6e 74 ve.EMD.with.Frobenius.norm.+.ent
2b60 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 23 23 23 23 23 23 23 23 23 23 ropic.regularization\n##########
2b80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
2ba0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
2bc0 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ###\n\n".......],........"cell_t
2be0 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 ype":."markdown",........"metada
2c00 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 ta":.{}.....},......{......."exe
2c20 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c cution_count":.null,........"cel
2c40 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 l_type":."code",........"source"
2c60 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 :.[........."#%%.Example.with.Fr
2c80 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 2b 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 obenius.norm.+.entropic.regulari
2ca0 7a 61 74 69 6f 6e 20 77 69 74 68 20 67 63 67 5c 6e 5c 6e 64 65 66 20 66 28 47 29 3a 5c 6e 20 20 zation.with.gcg\n\ndef.f(G):\n..
2cc0 20 20 72 65 74 75 72 6e 20 30 2e 35 20 2a 20 6e 70 2e 73 75 6d 28 47 2a 2a 32 29 5c 6e 5c 6e 5c ..return.0.5.*.np.sum(G**2)\n\n\
2ce0 6e 64 65 66 20 64 66 28 47 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 47 5c 6e 5c 6e 5c 6e 72 ndef.df(G):\n....return.G\n\n\nr
2d00 65 67 31 20 3d 20 31 65 2d 33 5c 6e 72 65 67 32 20 3d 20 31 65 2d 31 5c 6e 5c 6e 47 65 6c 32 20 eg1.=.1e-3\nreg2.=.1e-1\n\nGel2.
2d20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 67 63 67 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 31 2c 20 72 65 =.ot.optim.gcg(a,.b,.M,.reg1,.re
2d40 67 32 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 70 6c 2e 66 g2,.f,.df,.verbose=True)\n\npl.f
2d60 69 67 75 72 65 28 35 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f igure(5,.figsize=(5,.5))\not.plo
2d80 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 65 6c 32 2c 20 27 4f 54 20 65 6e 74 t.plot1D_mat(a,.b,.Gel2,.'OT.ent
2da0 72 6f 70 69 63 20 2b 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 5c 6e 70 6c 2e 73 ropic.+.matrix.Frob..reg')\npl.s
2dc0 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 how()".......],........"outputs"
2de0 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 :.[],........"metadata":.{......
2e00 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 ..."collapsed":.false.......}...
2e20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b ..}...],...."metadata":.{....."k
2e40 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d ernelspec":.{......."display_nam
2e60 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 e":."Python.2",........"name":."
2e80 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 python2",........"language":."py
2ea0 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f thon".....},......"language_info
2ec0 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 ":.{......."mimetype":."text/x-p
2ee0 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 ython",........"nbconvert_export
2f00 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 er":."python",........"name":."p
2f20 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a ython",........"file_extension":
2f40 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 .".py",........"version":."2.7.1
2f60 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 2",........"pygments_lexer":."ip
2f80 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 ython2",........"codemirror_mode
2fa0 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 ":.{........."version":.2,......
2fc0 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 ...."name":."ipython".......}...
2fe0 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 76 7b 82 49 50 0d 0a 74 03 0e 00 00 03 ..}...}.}PK........v{.IP..t.....
3000 0e 00 00 25 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 ...%...auto_examples/plot_OTDA_c
3020 6c 61 73 73 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 lasses.ipynb{..."nbformat_minor"
3040 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 :.0,...."nbformat":.4,...."cells
3060 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e ":.[.....{......."execution_coun
3080 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 t":.null,........"cell_type":."c
30a0 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 ode",........"source":.[........
30c0 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a ."%matplotlib.inline".......],..
30e0 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 ......"outputs":.[],........"met
3100 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 adata":.{........."collapsed":.f
3120 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 alse.......}.....},......{......
3140 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 66 6f 72 ."source":.[........."\n#.OT.for
3160 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 .domain.adaptation\n\n\n\n".....
3180 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f ..],........"cell_type":."markdo
31a0 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d wn",........"metadata":.{}.....}
31c0 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 ,......{......."execution_count"
31e0 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 :.null,........"cell_type":."cod
3200 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 e",........"source":.[........."
3220 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 import.matplotlib.pylab.as.pl\ni
3240 6d 70 6f 72 74 20 6f 74 5c 6e 5c 6e 5c 6e 5c 6e 5c 6e 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 mport.ot\n\n\n\n\n#%%.parameters
3260 5c 6e 5c 6e 6e 3d 31 35 30 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 20 69 6e 20 73 6f 75 72 63 65 \n\nn=150.#.nb.samples.in.source
3280 20 61 6e 64 20 74 61 72 67 65 74 20 64 61 74 61 73 65 74 73 5c 6e 5c 6e 78 73 2c 79 73 3d 6f 74 .and.target.datasets\n\nxs,ys=ot
32a0 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 .datasets.get_data_classif('3gau
32c0 73 73 27 2c 6e 29 5c 6e 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 ss',n)\nxt,yt=ot.datasets.get_da
32e0 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 6e 29 5c 6e 5c 6e 5c 6e 5c 6e 5c ta_classif('3gauss2',n)\n\n\n\n\
3300 6e 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 n#%%.plot.samples\n\npl.figure(1
3320 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 5c 6e 70 6c 2e 73 63 61 74 74 )\n\npl.subplot(2,2,1)\npl.scatt
3340 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 er(xs[:,0],xs[:,1],c=ys,marker='
3360 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c +',label='Source.samples')\npl.l
3380 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 egend(loc=0)\npl.title('Source..
33a0 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c distributions')\n\npl.subplot(2,
33c0 32 2c 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2,2)\npl.scatter(xt[:,0],xt[:,1]
33e0 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 ,c=yt,marker='o',label='Target.s
3400 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 amples')\npl.legend(loc=0)\npl.t
3420 69 74 6c 65 28 27 74 61 72 67 65 74 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 5c itle('target..distributions')\n\
3440 6e 5c 6e 23 25 25 20 4f 54 20 65 73 74 69 6d 61 74 69 6f 6e 5c 6e 5c 6e 23 20 4c 50 20 70 72 6f n\n#%%.OT.estimation\n\n#.LP.pro
3460 62 6c 65 6d 5c 6e 64 61 5f 65 6d 64 3d 6f 74 2e 64 61 2e 4f 54 44 41 28 29 20 20 20 20 20 23 20 blem\nda_emd=ot.da.OTDA().....#.
3480 69 6e 69 74 20 63 6c 61 73 73 5c 6e 64 61 5f 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 29 20 20 20 init.class\nda_emd.fit(xs,xt)...
34a0 20 20 20 20 23 20 66 69 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 78 73 74 30 3d 64 61 ....#.fit.distributions\nxst0=da
34c0 5f 65 6d 64 2e 69 6e 74 65 72 70 28 29 20 20 20 20 23 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e _emd.interp()....#.interpolation
34e0 20 6f 66 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 5c 6e 23 20 73 69 6e 6b 68 6f .of.source.samples\n\n\n#.sinkho
3500 72 6e 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 6c 61 6d 62 64 3d 31 65 2d 31 5c 6e 64 rn.regularization\nlambd=1e-1\nd
3520 61 5f 65 6e 74 72 6f 70 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 5c 6e a_entrop=ot.da.OTDA_sinkhorn()\n
3540 64 61 5f 65 6e 74 72 6f 70 2e 66 69 74 28 78 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 5c 6e da_entrop.fit(xs,xt,reg=lambd)\n
3560 78 73 74 73 3d 64 61 5f 65 6e 74 72 6f 70 2e 69 6e 74 65 72 70 28 29 5c 6e 5c 6e 23 20 6e 6f 6e xsts=da_entrop.interp()\n\n#.non
3580 2d 63 6f 6e 76 65 78 20 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 -convex.Group.lasso.regularizati
35a0 6f 6e 5c 6e 72 65 67 3d 31 65 2d 31 5c 6e 65 74 61 3d 31 65 30 5c 6e 64 61 5f 6c 70 6c 31 3d 6f on\nreg=1e-1\neta=1e0\nda_lpl1=o
35c0 74 2e 64 61 2e 4f 54 44 41 5f 6c 70 6c 31 28 29 5c 6e 64 61 5f 6c 70 6c 31 2e 66 69 74 28 78 73 t.da.OTDA_lpl1()\nda_lpl1.fit(xs
35e0 2c 79 73 2c 78 74 2c 72 65 67 3d 72 65 67 2c 65 74 61 3d 65 74 61 29 5c 6e 78 73 74 67 3d 64 61 ,ys,xt,reg=reg,eta=eta)\nxstg=da
3600 5f 6c 70 6c 31 2e 69 6e 74 65 72 70 28 29 5c 6e 5c 6e 5c 6e 23 20 54 72 75 65 20 47 72 6f 75 70 _lpl1.interp()\n\n\n#.True.Group
3620 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 72 65 67 3d 31 65 2d 31 5c .lasso.regularization\nreg=1e-1\
3640 6e 65 74 61 3d 32 65 30 5c 6e 64 61 5f 6c 31 6c 32 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6c 31 6c neta=2e0\nda_l1l2=ot.da.OTDA_l1l
3660 32 28 29 5c 6e 64 61 5f 6c 31 6c 32 2e 66 69 74 28 78 73 2c 79 73 2c 78 74 2c 72 65 67 3d 72 65 2()\nda_l1l2.fit(xs,ys,xt,reg=re
3680 67 2c 65 74 61 3d 65 74 61 2c 6e 75 6d 49 74 65 72 6d 61 78 3d 32 30 2c 76 65 72 62 6f 73 65 3d g,eta=eta,numItermax=20,verbose=
36a0 54 72 75 65 29 5c 6e 78 73 74 67 6c 3d 64 61 5f 6c 31 6c 32 2e 69 6e 74 65 72 70 28 29 5c 6e 5c True)\nxstgl=da_l1l2.interp()\n\
36c0 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 73 6f 75 72 63 65 20 n\n#%%.plot.interpolated.source.
36e0 73 61 6d 70 6c 65 73 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 2c 28 31 35 2c 38 29 29 5c 6e 5c 6e samples\npl.figure(4,(15,8))\n\n
3700 70 61 72 61 6d 5f 69 6d 67 3d 7b 27 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 27 3a 27 6e 65 61 72 param_img={'interpolation':'near
3720 65 73 74 27 2c 27 63 6d 61 70 27 3a 27 6a 65 74 27 7d 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 est','cmap':'jet'}\n\npl.subplot
3740 28 32 2c 34 2c 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 65 6d 64 2e 47 2c 2a 2a 70 61 (2,4,1)\npl.imshow(da_emd.G,**pa
3760 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 27 29 5c ram_img)\npl.title('OT.matrix')\
3780 6e 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f n\n\npl.subplot(2,4,2)\npl.imsho
37a0 77 28 64 61 5f 65 6e 74 72 6f 70 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 74 w(da_entrop.G,**param_img)\npl.t
37c0 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 6c itle('OT.matrix.sinkhorn')\n\npl
37e0 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 6c 70 .subplot(2,4,3)\npl.imshow(da_lp
3800 6c 31 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 l1.G,**param_img)\npl.title('OT.
3820 6d 61 74 72 69 78 20 6e 6f 6e 2d 63 6f 6e 76 65 78 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 5c matrix.non-convex.Group.Lasso')\
3840 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 34 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 n\npl.subplot(2,4,4)\npl.imshow(
3860 64 61 5f 6c 31 6c 32 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 74 69 74 6c 65 da_l1l2.G,**param_img)\npl.title
3880 28 27 4f 54 20 6d 61 74 72 69 78 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 5c 6e 5c 6e 5c 6e 70 ('OT.matrix.Group.Lasso')\n\n\np
38a0 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 35 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b l.subplot(2,4,5)\npl.scatter(xt[
38c0 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 :,0],xt[:,1],c=yt,marker='o',lab
38e0 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 5c 6e el='Target.samples',alpha=0.3)\n
3900 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 74 30 5b 3a 2c 31 5d 2c 63 pl.scatter(xst0[:,0],xst0[:,1],c
3920 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d =ys,marker='+',label='Transp.sam
3940 70 6c 65 73 27 2c 73 3d 33 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 ples',s=30)\npl.title('Interp.sa
3960 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 5c 6e 70 6c 2e mples')\npl.legend(loc=0)\n\npl.
3980 73 75 62 70 6c 6f 74 28 32 2c 34 2c 36 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c subplot(2,4,6)\npl.scatter(xt[:,
39a0 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 0],xt[:,1],c=yt,marker='o',label
39c0 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c ='Target.samples',alpha=0.3)\npl
39e0 2e 73 63 61 74 74 65 72 28 78 73 74 73 5b 3a 2c 30 5d 2c 78 73 74 73 5b 3a 2c 31 5d 2c 63 3d 79 .scatter(xsts[:,0],xsts[:,1],c=y
3a00 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c s,marker='+',label='Transp.sampl
3a20 65 73 27 2c 73 3d 33 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 es',s=30)\npl.title('Interp.samp
3a40 6c 65 73 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 les.Sinkhorn')\n\npl.subplot(2,4
3a60 2c 37 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c ,7)\npl.scatter(xt[:,0],xt[:,1],
3a80 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 c=yt,marker='o',label='Target.sa
3aa0 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 mples',alpha=0.3)\npl.scatter(xs
3ac0 74 67 5b 3a 2c 30 5d 2c 78 73 74 67 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b tg[:,0],xstg[:,1],c=ys,marker='+
3ae0 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 5c 6e ',label='Transp.samples',s=30)\n
3b00 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 6e 6f 6e 2d 63 6f 6e pl.title('Interp.samples.non-con
3b20 76 65 78 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 vex.Group.Lasso')\n\npl.subplot(
3b40 32 2c 34 2c 38 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 2,4,8)\npl.scatter(xt[:,0],xt[:,
3b60 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 1],c=yt,marker='o',label='Target
3b80 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 .samples',alpha=0.3)\npl.scatter
3ba0 28 78 73 74 67 6c 5b 3a 2c 30 5d 2c 78 73 74 67 6c 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b (xstgl[:,0],xstgl[:,1],c=ys,mark
3bc0 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d er='+',label='Transp.samples',s=
3be0 33 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 47 72 30)\npl.title('Interp.samples.Gr
3c00 6f 75 70 20 4c 61 73 73 6f 27 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 oup.Lasso')".......],........"ou
3c20 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b tputs":.[],........"metadata":.{
3c40 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 ........."collapsed":.false.....
3c60 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a ..}.....}...],...."metadata":.{.
3c80 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c ...."kernelspec":.{......."displ
3ca0 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 ay_name":."Python.2",........"na
3cc0 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 me":."python2",........"language
3ce0 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 ":."python".....},......"languag
3d00 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 e_info":.{......."mimetype":."te
3d20 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f xt/x-python",........"nbconvert_
3d40 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d exporter":."python",........"nam
3d60 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e e":."python",........"file_exten
3d80 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 sion":.".py",........"version":.
3da0 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 "2.7.12",........"pygments_lexer
3dc0 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f ":."ipython2",........"codemirro
3de0 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c r_mode":.{........."version":.2,
3e00 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 .........."name":."ipython".....
3e20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 b7 86 1e 4b 6b 88 21 ..}.....}...}.}PK...........Kk.!
3e40 84 aa 1d 00 00 aa 1d 00 00 20 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f .............auto_examples/plot_
3e60 6f 74 64 61 5f 64 32 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 otda_d2.ipynb{..."nbformat_minor
3e80 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c ":.0,...."nbformat":.4,...."cell
3ea0 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 s":.[.....{......."execution_cou
3ec0 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 nt":.null,........"cell_type":."
3ee0 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 code",........"source":.[.......
3f00 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 .."%matplotlib.inline".......],.
3f20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 ......."outputs":.[],........"me
3f40 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 tadata":.{........."collapsed":.
3f60 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 false.......}.....},......{.....
3f80 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 66 6f .."source":.[........."\n#.OT.fo
3fa0 72 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e 54 r.empirical.distributions\n\n\nT
3fc0 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6e 74 72 6f 64 75 63 65 73 20 61 20 64 6f 6d 61 69 6e 20 his.example.introduces.a.domain.
3fe0 61 64 61 70 74 61 74 69 6f 6e 20 69 6e 20 61 20 32 44 20 73 65 74 74 69 6e 67 2e 20 49 74 20 65 adaptation.in.a.2D.setting..It.e
4000 78 70 6c 69 63 69 74 73 5c 6e 74 68 65 20 70 72 6f 62 6c 65 6d 20 6f 66 20 64 6f 6d 61 69 6e 20 xplicits\nthe.problem.of.domain.
4020 61 64 61 70 74 61 74 69 6f 6e 20 61 6e 64 20 69 6e 74 72 6f 64 75 63 65 73 20 73 6f 6d 65 20 6f adaptation.and.introduces.some.o
4040 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 6e 61 70 70 72 6f 61 63 68 65 73 20 74 6f 20 ptimal.transport\napproaches.to.
4060 73 6f 6c 76 65 20 69 74 2e 5c 6e 5c 6e 51 75 61 6e 74 69 74 69 65 73 20 73 75 63 68 20 61 73 20 solve.it.\n\nQuantities.such.as.
4080 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 2c 20 67 72 65 61 74 65 72 20 63 6f 75 70 6c optimal.couplings,.greater.coupl
40a0 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 20 61 6e 64 5c 6e 74 72 61 6e 73 70 6f 72 74 65 ing.coefficients.and\ntransporte
40c0 64 20 73 61 6d 70 6c 65 73 20 61 72 65 20 72 65 70 72 65 73 65 6e 74 65 64 20 69 6e 20 6f 72 64 d.samples.are.represented.in.ord
40e0 65 72 20 74 6f 20 67 69 76 65 20 61 20 76 69 73 75 61 6c 20 75 6e 64 65 72 73 74 61 6e 64 69 6e er.to.give.a.visual.understandin
4100 67 5c 6e 6f 66 20 77 68 61 74 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 65 74 68 6f 64 73 g\nof.what.the.transport.methods
4120 20 61 72 65 20 64 6f 69 6e 67 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 .are.doing.\n\n".......],.......
4140 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 ."cell_type":."markdown",.......
4160 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 ."metadata":.{}.....},......{...
4180 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 ...."execution_count":.null,....
41a0 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 ...."cell_type":."code",........
41c0 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 "source":.[........."#.Authors:.
41e0 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 Remi.Flamary.<remi.flamary@unice
4200 2e 66 72 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 .fr>\n#..........Stanislas.Chamb
4220 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e on.<stan.chambon@gmail.com>\n#\n
4240 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 #.License:.MIT.License\n\nimport
4260 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 .matplotlib.pylab.as.pl\nimport.
4280 6f 74 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b ot".......],........"outputs":.[
42a0 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 ],........"metadata":.{.........
42c0 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d "collapsed":.false.......}.....}
42e0 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 ,......{......."source":.[......
4300 20 20 20 22 67 65 6e 65 72 61 74 65 20 64 61 74 61 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 ..."generate.data\n#############
4320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
4340 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
4360 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 \n\n".......],........"cell_type
4380 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 ":."markdown",........"metadata"
43a0 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 :.{}.....},......{......."execut
43c0 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ion_count":.null,........"cell_t
43e0 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b ype":."code",........"source":.[
4400 0a 20 20 20 20 20 20 20 20 22 6e 5f 73 61 6d 70 6c 65 73 5f 73 6f 75 72 63 65 20 3d 20 31 35 30 ........."n_samples_source.=.150
4420 5c 6e 6e 5f 73 61 6d 70 6c 65 73 5f 74 61 72 67 65 74 20 3d 20 31 35 30 5c 6e 5c 6e 58 73 2c 20 \nn_samples_target.=.150\n\nXs,.
4440 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 ys.=.ot.datasets.get_data_classi
4460 66 28 27 33 67 61 75 73 73 27 2c 20 6e 5f 73 61 6d 70 6c 65 73 5f 73 6f 75 72 63 65 29 5c 6e 58 f('3gauss',.n_samples_source)\nX
4480 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 t,.yt.=.ot.datasets.get_data_cla
44a0 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 20 6e 5f 73 61 6d 70 6c 65 73 5f 74 61 72 67 65 74 ssif('3gauss2',.n_samples_target
44c0 29 5c 6e 5c 6e 23 20 43 6f 73 74 20 6d 61 74 72 69 78 5c 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 )\n\n#.Cost.matrix\nM.=.ot.dist(
44e0 58 73 2c 20 58 74 2c 20 6d 65 74 72 69 63 3d 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 22 0a 20 Xs,.Xt,.metric='sqeuclidean')"..
4500 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 .....],........"outputs":.[],...
4520 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c ....."metadata":.{........."coll
4540 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 apsed":.false.......}.....},....
4560 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 49 ..{......."source":.[........."I
4580 6e 73 74 61 6e 74 69 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f nstantiate.the.different.transpo
45a0 72 74 20 61 6c 67 6f 72 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 5c 6e 23 23 23 23 rt.algorithms.and.fit.them\n####
45c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
45e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
4600 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 #########\n\n".......],........"
4620 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 cell_type":."markdown",........"
4640 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 metadata":.{}.....},......{.....
4660 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 .."execution_count":.null,......
4680 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 .."cell_type":."code",........"s
46a0 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 45 4d 44 20 54 72 61 6e 73 70 6f ource":.[........."#.EMD.Transpo
46c0 72 74 5c 6e 6f 74 5f 65 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 rt\not_emd.=.ot.da.EMDTransport(
46e0 29 5c 6e 6f 74 5f 65 6d 64 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 )\not_emd.fit(Xs=Xs,.Xt=Xt)\n\n#
4700 20 53 69 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e .Sinkhorn.Transport\not_sinkhorn
4720 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 .=.ot.da.SinkhornTransport(reg_e
4740 3d 31 65 2d 31 29 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 =1e-1)\not_sinkhorn.fit(Xs=Xs,.X
4760 74 3d 58 74 29 5c 6e 5c 6e 23 20 53 69 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 20 77 69 t=Xt)\n\n#.Sinkhorn.Transport.wi
4780 74 68 20 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 6f th.Group.lasso.regularization\no
47a0 74 5f 6c 70 6c 31 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 t_lpl1.=.ot.da.SinkhornLpl1Trans
47c0 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 31 65 30 29 5c 6e 6f 74 port(reg_e=1e-1,.reg_cl=1e0)\not
47e0 5f 6c 70 6c 31 2e 66 69 74 28 58 73 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 5c 6e _lpl1.fit(Xs=Xs,.ys=ys,.Xt=Xt)\n
4800 5c 6e 23 20 74 72 61 6e 73 70 6f 72 74 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 20 6f 6e 74 \n#.transport.source.samples.ont
4820 6f 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 o.target.samples\ntransp_Xs_emd.
4840 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 =.ot_emd.transform(Xs=Xs)\ntrans
4860 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 74 72 61 6e p_Xs_sinkhorn.=.ot_sinkhorn.tran
4880 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 20 3d 20 6f sform(Xs=Xs)\ntransp_Xs_lpl1.=.o
48a0 74 5f 6c 70 6c 31 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 22 0a 20 20 20 20 20 20 5d t_lpl1.transform(Xs=Xs)".......]
48c0 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 ,........"outputs":.[],........"
48e0 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 metadata":.{........."collapsed"
4900 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 :.false.......}.....},......{...
4920 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 46 69 67 20 31 20 3a ...."source":.[........."Fig.1.:
4940 20 70 6c 6f 74 73 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 .plots.source.and.target.samples
4960 20 2b 20 6d 61 74 72 69 78 20 6f 66 20 70 61 69 72 77 69 73 65 20 64 69 73 74 61 6e 63 65 5c 6e .+.matrix.of.pairwise.distance\n
4980 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
49a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
49c0 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 #############\n\n".......],.....
49e0 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 ..."cell_type":."markdown",.....
4a00 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a ..."metadata":.{}.....},......{.
4a20 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a ......"execution_count":.null,..
4a40 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 ......"cell_type":."code",......
4a60 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 .."source":.[........."pl.figure
4a80 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 31 30 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f (1,.figsize=(10,.10))\npl.subplo
4aa0 74 28 32 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c t(2,.2,.1)\npl.scatter(Xs[:,.0],
4ac0 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 .Xs[:,.1],.c=ys,.marker='+',.lab
4ae0 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 el='Source.samples')\npl.xticks(
4b00 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f [])\npl.yticks([])\npl.legend(lo
4b20 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 73 61 6d 70 6c 65 73 27 c=0)\npl.title('Source..samples'
4b40 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 )\n\npl.subplot(2,.2,.2)\npl.sca
4b60 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d tter(Xt[:,.0],.Xt[:,.1],.c=yt,.m
4b80 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 arker='o',.label='Target.samples
4ba0 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 ')\npl.xticks([])\npl.yticks([])
4bc0 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 61 \npl.legend(loc=0)\npl.title('Ta
4be0 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 rget.samples')\n\npl.subplot(2,.
4c00 32 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 2,.3)\npl.imshow(M,.interpolatio
4c20 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e n='nearest')\npl.xticks([])\npl.
4c40 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4d 61 74 72 69 78 20 6f 66 20 yticks([])\npl.title('Matrix.of.
4c60 70 61 69 72 77 69 73 65 20 64 69 73 74 61 6e 63 65 73 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c pairwise.distances')\npl.tight_l
4c80 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 ayout()".......],........"output
4ca0 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 s":.[],........"metadata":.{....
4cc0 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a ....."collapsed":.false.......}.
4ce0 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a ....},......{......."source":.[.
4d00 20 20 20 20 20 20 20 20 22 46 69 67 20 32 20 3a 20 70 6c 6f 74 73 20 6f 70 74 69 6d 61 6c 20 63 ........"Fig.2.:.plots.optimal.c
4d20 6f 75 70 6c 69 6e 67 73 20 66 6f 72 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 6d 65 74 68 6f ouplings.for.the.different.metho
4d40 64 73 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ds\n############################
4d60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
4d80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 #################\n\n".......],.
4da0 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 ......."cell_type":."markdown",.
4dc0 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 ......."metadata":.{}.....},....
4de0 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c ..{......."execution_count":.nul
4e00 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a l,........"cell_type":."code",..
4e20 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 ......"source":.[........."pl.fi
4e40 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 36 29 29 5c 6e 5c 6e 70 6c 2e 73 gure(2,.figsize=(10,.6))\n\npl.s
4e60 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 65 6d ubplot(2,.3,.1)\npl.imshow(ot_em
4e80 64 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 d.coupling_,.interpolation='near
4ea0 65 73 74 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 est')\npl.xticks([])\npl.yticks(
4ec0 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c [])\npl.title('Optimal.coupling\
4ee0 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 \nEMDTransport')\n\npl.subplot(2
4f00 2c 20 33 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 ,.3,.2)\npl.imshow(ot_sinkhorn.c
4f20 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 oupling_,.interpolation='nearest
4f40 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 ')\npl.xticks([])\npl.yticks([])
4f60 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 5c 6e 53 \npl.title('Optimal.coupling\\nS
4f80 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 inkhornTransport')\n\npl.subplot
4fa0 28 32 2c 20 33 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 6c 70 6c 31 2e 63 6f 75 (2,.3,.3)\npl.imshow(ot_lpl1.cou
4fc0 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 pling_,.interpolation='nearest')
4fe0 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e \npl.xticks([])\npl.yticks([])\n
5000 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 5c 6e 53 69 6e pl.title('Optimal.coupling\\nSin
5020 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c khornLpl1Transport')\n\npl.subpl
5040 6f 74 28 32 2c 20 33 2c 20 34 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 ot(2,.3,.4)\not.plot.plot2D_samp
5060 6c 65 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 65 6d 64 2e 63 6f 75 70 6c 69 6e 67 5f les_mat(Xs,.Xt,.ot_emd.coupling_
5080 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b ,.c=[.5,..5,.1])\npl.scatter(Xs[
50a0 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b :,.0],.Xs[:,.1],.c=ys,.marker='+
50c0 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 73 ',.label='Source.samples')\npl.s
50e0 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c catter(Xt[:,.0],.Xt[:,.1],.c=yt,
5100 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c .marker='o',.label='Target.sampl
5120 65 73 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b es')\npl.xticks([])\npl.yticks([
5140 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4d 61 69 6e 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 ])\npl.title('Main.coupling.coef
5160 66 69 63 69 65 6e 74 73 5c 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e ficients\\nEMDTransport')\n\npl.
5180 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 35 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 subplot(2,.3,.5)\not.plot.plot2D
51a0 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e _samples_mat(Xs,.Xt,.ot_sinkhorn
51c0 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e 73 .coupling_,.c=[.5,..5,.1])\npl.s
51e0 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c catter(Xs[:,.0],.Xs[:,.1],.c=ys,
5200 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c .marker='+',.label='Source.sampl
5220 65 73 27 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c es')\npl.scatter(Xt[:,.0],.Xt[:,
5240 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 .1],.c=yt,.marker='o',.label='Ta
5260 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 rget.samples')\npl.xticks([])\np
5280 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4d 61 69 6e 20 63 6f 75 l.yticks([])\npl.title('Main.cou
52a0 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 pling.coefficients\\nSinkhornTra
52c0 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 36 29 5c nsport')\n\npl.subplot(2,.3,.6)\
52e0 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 58 73 2c 20 not.plot.plot2D_samples_mat(Xs,.
5300 58 74 2c 20 6f 74 5f 6c 70 6c 31 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 Xt,.ot_lpl1.coupling_,.c=[.5,..5
5320 2c 20 31 5d 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a ,.1])\npl.scatter(Xs[:,.0],.Xs[:
5340 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 ,.1],.c=ys,.marker='+',.label='S
5360 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a ource.samples')\npl.scatter(Xt[:
5380 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 ,.0],.Xt[:,.1],.c=yt,.marker='o'
53a0 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 78 74 ,.label='Target.samples')\npl.xt
53c0 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c icks([])\npl.yticks([])\npl.titl
53e0 65 28 27 4d 61 69 6e 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 5c 5c 6e e('Main.coupling.coefficients\\n
5400 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 70 6c 2e 74 69 67 68 SinkhornLpl1Transport')\npl.tigh
5420 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 t_layout()".......],........"out
5440 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a puts":.[],........"metadata":.{.
5460 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 ........"collapsed":.false......
5480 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a .}.....},......{......."source":
54a0 20 5b 0a 20 20 20 20 20 20 20 20 22 46 69 67 20 33 20 3a 20 70 6c 6f 74 20 74 72 61 6e 73 70 6f .[........."Fig.3.:.plot.transpo
54c0 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 rted.samples\n##################
54e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
5500 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 ###########################\n\n"
5520 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d .......],........"cell_type":."m
5540 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a arkdown",........"metadata":.{}.
5560 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 ....},......{......."execution_c
5580 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a ount":.null,........"cell_type":
55a0 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ."code",........"source":.[.....
55c0 20 20 20 20 22 23 20 64 69 73 70 6c 61 79 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c ...."#.display.transported.sampl
55e0 65 73 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 34 29 es\npl.figure(4,.figsize=(10,.4)
5600 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 )\npl.subplot(1,.3,.1)\npl.scatt
5620 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 er(Xt[:,.0],.Xt[:,.1],.c=yt,.mar
5640 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 ker='o',\n...........label='Targ
5660 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 35 29 5c 6e 70 6c 2e 73 63 61 74 et.samples',.alpha=0.5)\npl.scat
5680 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f ter(transp_Xs_emd[:,.0],.transp_
56a0 58 73 5f 65 6d 64 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 Xs_emd[:,.1],.c=ys,\n...........
56c0 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 marker='+',.label='Transp.sample
56e0 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 s',.s=30)\npl.title('Transported
5700 20 73 61 6d 70 6c 65 73 5c 5c 6e 45 6d 64 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 70 6c 2e 6c 65 .samples\\nEmdTransport')\npl.le
5720 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 gend(loc=0)\npl.xticks([])\npl.y
5740 74 69 63 6b 73 28 5b 5d 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 ticks([])\n\npl.subplot(1,.3,.2)
5760 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c \npl.scatter(Xt[:,.0],.Xt[:,.1],
5780 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c .c=yt,.marker='o',\n...........l
57a0 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 35 abel='Target.samples',.alpha=0.5
57c0 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e )\npl.scatter(transp_Xs_sinkhorn
57e0 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5b 3a 2c 20 31 5d [:,.0],.transp_Xs_sinkhorn[:,.1]
5800 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 ,.c=ys,\n...........marker='+',.
5820 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 label='Transp.samples',.s=30)\np
5840 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 5c 6e 53 l.title('Transported.samples\\nS
5860 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d inkhornTransport')\npl.xticks([]
5880 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 )\npl.yticks([])\n\npl.subplot(1
58a0 2c 20 33 2c 20 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 ,.3,.3)\npl.scatter(Xt[:,.0],.Xt
58c0 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 [:,.1],.c=yt,.marker='o',\n.....
58e0 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c ......label='Target.samples',.al
5900 70 68 61 3d 30 2e 35 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 6c pha=0.5)\npl.scatter(transp_Xs_l
5920 70 6c 31 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 5b 3a 2c 20 31 5d 2c pl1[:,.0],.transp_Xs_lpl1[:,.1],
5940 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c .c=ys,\n...........marker='+',.l
5960 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c abel='Transp.samples',.s=30)\npl
5980 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 5c 6e 53 69 .title('Transported.samples\\nSi
59a0 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 nkhornLpl1Transport')\npl.xticks
59c0 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 5c 6e 70 6c 2e 74 69 67 68 74 5f ([])\npl.yticks([])\n\npl.tight_
59e0 6c 61 79 6f 75 74 28 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 layout()\npl.show()".......],...
5a00 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 ....."outputs":.[],........"meta
5a20 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 data":.{........."collapsed":.fa
5a40 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 lse.......}.....}...],...."metad
5a60 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 ata":.{....."kernelspec":.{.....
5a80 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 .."display_name":."Python.2",...
5aa0 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 ....."name":."python2",........"
5ac0 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 language":."python".....},......
5ae0 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 "language_info":.{......."mimety
5b00 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 pe":."text/x-python",........"nb
5b20 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 convert_exporter":."python",....
5b40 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 ...."name":."python",........"fi
5b60 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 le_extension":.".py",........"ve
5b80 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e rsion":."2.7.12",........"pygmen
5ba0 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 ts_lexer":."ipython2",........"c
5bc0 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 odemirror_mode":.{........."vers
5be0 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 ion":.2,.........."name":."ipyth
5c00 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 on".......}.....}...}.}PK.......
5c20 00 f8 88 1e 4b be 57 96 68 4b 0e 00 00 4b 0e 00 00 1e 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c ....K.W.hK...K.......auto_exampl
5c40 65 73 2f 70 6c 6f 74 5f 4f 54 5f 31 44 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 es/plot_OT_1D.ipynb{..."nbformat
5c60 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 _minor":.0,...."nbformat":.4,...
5c80 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 ."cells":.[.....{......."executi
5ca0 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 on_count":.null,........"cell_ty
5cc0 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a pe":."code",........"source":.[.
5ce0 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 ........"%matplotlib.inline"....
5d00 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 ...],........"outputs":.[],.....
5d20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 ..."metadata":.{........."collap
5d40 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 sed":.false.......}.....},......
5d60 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 {......."source":.[........."\n#
5d80 20 31 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 .1D.optimal.transport\n\n\n\n"..
5da0 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 .....],........"cell_type":."mar
5dc0 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 kdown",........"metadata":.{}...
5de0 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 ..},......{......."execution_cou
5e00 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 nt":.null,........"cell_type":."
5e20 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 code",........"source":.[.......
5e40 20 20 22 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e .."#.Author:.Remi.Flamary.<remi.
5e60 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a flamary@unice.fr>\n#\n#.License:
5e80 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 .MIT.License\n\nimport.numpy.as.
5ea0 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 np\nimport.matplotlib.pylab.as.p
5ec0 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 20 69 l\nimport.ot\nfrom.ot.datasets.i
5ee0 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 22 0a 20 20 20 mport.get_1D_gauss.as.gauss"....
5f00 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 ...],........"outputs":.[],.....
5f20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 ..."metadata":.{........."collap
5f40 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 sed":.false.......}.....},......
5f60 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 47 65 6e {......."source":.[........."Gen
5f80 65 72 61 74 65 20 64 61 74 61 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 erate.data\n####################
5fa0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
5fc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 #########################\n\n"..
5fe0 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 .....],........"cell_type":."mar
6000 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 kdown",........"metadata":.{}...
6020 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 ..},......{......."execution_cou
6040 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 nt":.null,........"cell_type":."
6060 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 code",........"source":.[.......
6080 20 20 22 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e 20 3d 20 31 30 30 20 20 23 20 .."#%%.parameters\n\nn.=.100..#.
60a0 6e 62 20 62 69 6e 73 5c 6e 5c 6e 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 5c 6e 78 20 3d 20 nb.bins\n\n#.bin.positions\nx.=.
60c0 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c 6e np.arange(n,.dtype=np.float64)\n
60e0 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 61 20 3d 20 \n#.Gaussian.distributions\na.=.
6100 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 gauss(n,.m=20,.s=5)..#.m=.mean,.
6120 73 3d 20 73 74 64 5c 6e 62 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 31 30 29 s=.std\nb.=.gauss(n,.m=60,.s=10)
6140 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 \n\n#.loss.matrix\nM.=.ot.dist(x
6160 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 .reshape((n,.1)),.x.reshape((n,.
6180 31 29 29 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 1)))\nM./=.M.max()".......],....
61a0 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 ...."outputs":.[],........"metad
61c0 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c ata":.{........."collapsed":.fal
61e0 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 se.......}.....},......{......."
6200 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 64 69 73 74 72 69 62 source":.[........."Plot.distrib
6220 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 23 23 23 23 23 23 23 23 utions.and.loss.matrix\n########
6240 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
6260 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
6280 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c #####\n\n".......],........"cell
62a0 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 _type":."markdown",........"meta
62c0 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 data":.{}.....},......{......."e
62e0 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 xecution_count":.null,........"c
6300 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ell_type":."code",........"sourc
6320 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 e":.[........."#%%.plot.the.dist
6340 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a ributions\n\npl.figure(1,.figsiz
6360 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 61 2c 20 27 62 27 2c 20 e=(6.4,.3))\npl.plot(x,.a,.'b',.
6380 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c label='Source.distribution')\npl
63a0 2e 70 6c 6f 74 28 78 2c 20 62 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 .plot(x,.b,.'r',.label='Target.d
63c0 69 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 5c 6e 23 25 istribution')\npl.legend()\n\n#%
63e0 25 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 %.plot.distributions.and.loss.ma
6400 74 72 69 78 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c trix\n\npl.figure(2,.figsize=(5,
6420 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 4d .5))\not.plot.plot1D_mat(a,.b,.M
6440 2c 20 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 ,.'Cost.matrix.M')".......],....
6460 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 ...."outputs":.[],........"metad
6480 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c ata":.{........."collapsed":.fal
64a0 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 se.......}.....},......{......."
64c0 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 45 4d 44 20 5c 6e source":.[........."Solve.EMD.\n
64e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
6500 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
6520 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 #############\n\n".......],.....
6540 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 ..."cell_type":."markdown",.....
6560 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a ..."metadata":.{}.....},......{.
6580 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a ......"execution_count":.null,..
65a0 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 ......"cell_type":."code",......
65c0 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 4d 44 5c 6e .."source":.[........."#%%.EMD\n
65e0 5c 6e 47 30 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 29 5c 6e 5c 6e 70 6c 2e 66 69 67 \nG0.=.ot.emd(a,.b,.M)\n\npl.fig
6600 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e ure(3,.figsize=(5,.5))\not.plot.
6620 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 30 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 plot1D_mat(a,.b,.G0,.'OT.matrix.
6640 47 30 27 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a G0')".......],........"outputs":
6660 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 .[],........"metadata":.{.......
6680 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 .."collapsed":.false.......}....
66a0 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 .},......{......."source":.[....
66c0 20 20 20 20 20 22 53 6f 6c 76 65 20 53 69 6e 6b 68 6f 72 6e 5c 6e 23 23 23 23 23 23 23 23 23 23 ....."Solve.Sinkhorn\n##########
66e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
6700 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
6720 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ###\n\n".......],........"cell_t
6740 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 ype":."markdown",........"metada
6760 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 ta":.{}.....},......{......."exe
6780 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c cution_count":.null,........"cel
67a0 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 l_type":."code",........"source"
67c0 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 53 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 6c 61 6d :.[........."#%%.Sinkhorn\n\nlam
67e0 62 64 20 3d 20 31 65 2d 33 5c 6e 47 73 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 20 62 bd.=.1e-3\nGs.=.ot.sinkhorn(a,.b
6800 2c 20 4d 2c 20 6c 61 6d 62 64 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 70 6c 2e ,.M,.lambd,.verbose=True)\n\npl.
6820 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c figure(4,.figsize=(5,.5))\not.pl
6840 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 73 2c 20 27 4f 54 20 6d 61 74 72 ot.plot1D_mat(a,.b,.Gs,.'OT.matr
6860 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 ix.Sinkhorn')\n\npl.show()".....
6880 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 ..],........"outputs":.[],......
68a0 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 .."metadata":.{........."collaps
68c0 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 ed":.false.......}.....}...],...
68e0 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a ."metadata":.{....."kernelspec":
6900 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e .{......."display_name":."Python
6920 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a .2",........"name":."python2",..
6940 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d ......"language":."python".....}
6960 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 ,......"language_info":.{.......
6980 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 "mimetype":."text/x-python",....
69a0 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f ...."nbconvert_exporter":."pytho
69c0 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 n",........"name":."python",....
69e0 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 ...."file_extension":.".py",....
6a00 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 ...."version":."2.7.12",........
6a20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 "pygments_lexer":."ipython2",...
6a40 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 ....."codemirror_mode":.{.......
6a60 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a .."version":.2,.........."name":
6a80 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b ."ipython".......}.....}...}.}PK
6aa0 03 04 14 00 00 00 00 00 32 82 e3 4a 48 a2 ab 22 f5 14 00 00 f5 14 00 00 20 00 00 00 61 75 74 6f ........2..JH.."............auto
6ac0 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 63 6f 6e 76 2e 69 70 79 6e 62 7b 0a 20 20 _examples/plot_OT_conv.ipynb{...
6ae0 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 "nbformat_minor":.0,...."nbforma
6b00 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 t":.4,...."cells":.[.....{......
6b20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 ."execution_count":.null,.......
6b40 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f ."cell_type":."code",........"so
6b60 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e urce":.[........."%matplotlib.in
6b80 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a line".......],........"outputs":
6ba0 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 .[],........"metadata":.{.......
6bc0 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 .."collapsed":.false.......}....
6be0 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 .},......{......."source":.[....
6c00 20 20 20 20 20 22 5c 6e 23 20 31 44 20 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e ....."\n#.1D.Wasserstein.barycen
6c20 74 65 72 20 64 65 6d 6f 5c 6e 5c 6e 5c 6e 5c 6e 40 61 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 ter.demo\n\n\n\n@author:.rflamar
6c40 79 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 y\n\n".......],........"cell_typ
6c60 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 e":."markdown",........"metadata
6c80 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 ":.{}.....},......{......."execu
6ca0 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f tion_count":.null,........"cell_
6cc0 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 type":."code",........"source":.
6ce0 5b 0a 20 20 20 20 20 20 20 20 22 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 [........."import.numpy.as.np\ni
6d00 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d mport.matplotlib.pylab.as.pl\nim
6d20 70 6f 72 74 20 6f 74 5c 6e 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 port.ot\nfrom.mpl_toolkits.mplot
6d40 33 64 20 69 6d 70 6f 72 74 20 41 78 65 73 33 44 20 23 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 3d.import.Axes3D.#necessary.for.
6d60 33 64 20 70 6c 6f 74 20 65 76 65 6e 20 69 66 20 6e 6f 74 20 75 73 65 64 5c 6e 69 6d 70 6f 72 74 3d.plot.even.if.not.used\nimport
6d80 20 73 63 69 70 79 20 61 73 20 73 70 5c 6e 69 6d 70 6f 72 74 20 73 63 69 70 79 2e 73 69 67 6e 61 .scipy.as.sp\nimport.scipy.signa
6da0 6c 20 61 73 20 73 70 73 5c 6e 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e 3d 31 30 l.as.sps\n#%%.parameters\n\nn=10
6dc0 20 23 20 6e 62 20 62 69 6e 73 5c 6e 5c 6e 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 5c 6e 78 .#.nb.bins\n\n#.bin.positions\nx
6de0 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c 6e =np.arange(n,dtype=np.float64)\n
6e00 5c 6e 78 78 2c 79 79 3d 6e 70 2e 6d 65 73 68 67 72 69 64 28 78 2c 78 29 5c 6e 5c 6e 5c 6e 78 70 \nxx,yy=np.meshgrid(x,x)\n\n\nxp
6e20 6f 73 3d 6e 70 2e 68 73 74 61 63 6b 28 28 78 78 2e 72 65 73 68 61 70 65 28 2d 31 2c 31 29 2c 79 os=np.hstack((xx.reshape(-1,1),y
6e40 79 2e 72 65 73 68 61 70 65 28 2d 31 2c 31 29 29 29 5c 6e 5c 6e 4d 3d 6f 74 2e 64 69 73 74 28 78 y.reshape(-1,1)))\n\nM=ot.dist(x
6e60 70 6f 73 29 5c 6e 5c 6e 5c 6e 49 30 3d 28 28 78 78 2d 35 29 2a 2a 32 2b 28 79 79 2d 35 29 2a 2a pos)\n\n\nI0=((xx-5)**2+(yy-5)**
6e80 32 3c 33 2a 2a 32 29 2a 31 2e 30 5c 6e 49 31 3d 28 28 78 78 2d 37 29 2a 2a 32 2b 28 79 79 2d 37 2<3**2)*1.0\nI1=((xx-7)**2+(yy-7
6ea0 29 2a 2a 32 3c 33 2a 2a 32 29 2a 31 2e 30 5c 6e 5c 6e 49 30 2f 3d 49 30 2e 73 75 6d 28 29 5c 6e )**2<3**2)*1.0\n\nI0/=I0.sum()\n
6ec0 49 31 2f 3d 49 31 2e 73 75 6d 28 29 5c 6e 5c 6e 69 30 3d 49 30 2e 72 61 76 65 6c 28 29 5c 6e 69 I1/=I1.sum()\n\ni0=I0.ravel()\ni
6ee0 31 3d 49 31 2e 72 61 76 65 6c 28 29 5c 6e 5c 6e 4d 3d 4d 5b 69 30 3e 30 2c 3a 5d 5b 3a 2c 69 31 1=I1.ravel()\n\nM=M[i0>0,:][:,i1
6f00 3e 30 5d 2e 63 6f 70 79 28 29 5c 6e 69 30 3d 69 30 5b 69 30 3e 30 5d 5c 6e 69 31 3d 69 31 5b 69 >0].copy()\ni0=i0[i0>0]\ni1=i1[i
6f20 31 3e 30 5d 5c 6e 49 74 6f 74 3d 6e 70 2e 63 6f 6e 63 61 74 65 6e 61 74 65 28 28 49 30 5b 3a 2c 1>0]\nItot=np.concatenate((I0[:,
6f40 3a 2c 6e 70 2e 6e 65 77 61 78 69 73 5d 2c 49 31 5b 3a 2c 3a 2c 6e 70 2e 6e 65 77 61 78 69 73 5d :,np.newaxis],I1[:,:,np.newaxis]
6f60 29 2c 32 29 5c 6e 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 ),2)\n\n\n#%%.plot.the.distribut
6f80 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 ions\n\npl.figure(1)\npl.subplot
6fa0 28 32 2c 32 2c 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 30 29 5c 6e 70 6c 2e 73 75 62 70 6c (2,2,1)\npl.imshow(I0)\npl.subpl
6fc0 6f 74 28 32 2c 32 2c 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e 5c 6e 5c 6e 23 25 ot(2,2,2)\npl.imshow(I1)\n\n\n#%
6fe0 25 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 5c 6e 5c 6e 61 6c 70 68 %.barycenter.computation\n\nalph
7000 61 3d 30 2e 35 20 23 20 30 3c 3d 61 6c 70 68 61 3c 3d 31 5c 6e 77 65 69 67 68 74 73 3d 6e 70 2e a=0.5.#.0<=alpha<=1\nweights=np.
7020 61 72 72 61 79 28 5b 31 2d 61 6c 70 68 61 2c 61 6c 70 68 61 5d 29 5c 6e 5c 6e 5c 6e 64 65 66 20 array([1-alpha,alpha])\n\n\ndef.
7040 63 6f 6e 76 32 28 49 2c 6b 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 73 70 2e 6e 64 69 6d 61 conv2(I,k):\n....return.sp.ndima
7060 67 65 2e 63 6f 6e 76 6f 6c 76 65 31 64 28 73 70 2e 6e 64 69 6d 61 67 65 2e 63 6f 6e 76 6f 6c 76 ge.convolve1d(sp.ndimage.convolv
7080 65 31 64 28 49 2c 6b 2c 61 78 69 73 3d 31 29 2c 6b 2c 61 78 69 73 3d 30 29 5c 6e 5c 6e 64 65 66 e1d(I,k,axis=1),k,axis=0)\n\ndef
70a0 20 63 6f 6e 76 32 6e 28 49 2c 6b 29 3a 5c 6e 20 20 20 20 72 65 73 3d 6e 70 2e 7a 65 72 6f 73 5f .conv2n(I,k):\n....res=np.zeros_
70c0 6c 69 6b 65 28 49 29 5c 6e 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 49 2e 73 68 like(I)\n....for.i.in.range(I.sh
70e0 61 70 65 5b 32 5d 29 3a 5c 6e 20 20 20 20 20 20 20 20 72 65 73 5b 3a 2c 3a 2c 69 5d 3d 63 6f 6e ape[2]):\n........res[:,:,i]=con
7100 76 32 28 49 5b 3a 2c 3a 2c 69 5d 2c 6b 29 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 5c 6e v2(I[:,:,i],k)\n....return.res\n
7120 5c 6e 5c 6e 64 65 66 20 67 65 74 5f 31 44 6b 65 72 6e 65 6c 28 72 65 67 2c 74 68 72 3d 31 65 2d \n\ndef.get_1Dkernel(reg,thr=1e-
7140 31 36 2c 77 6d 61 78 3d 31 30 32 34 29 3a 5c 6e 20 20 20 20 77 3d 6d 61 78 28 6d 69 6e 28 77 6d 16,wmax=1024):\n....w=max(min(wm
7160 61 78 2c 32 2a 69 6e 74 28 28 2d 6e 70 2e 6c 6f 67 28 74 68 72 29 2a 72 65 67 29 2a 2a 28 2e 35 ax,2*int((-np.log(thr)*reg)**(.5
7180 29 29 29 2c 33 29 5c 6e 20 20 20 20 78 3d 6e 70 2e 61 72 61 6e 67 65 28 77 2c 64 74 79 70 65 3d ))),3)\n....x=np.arange(w,dtype=
71a0 6e 70 2e 66 6c 6f 61 74 36 34 29 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 65 78 70 28 2d np.float64)\n....return.np.exp(-
71c0 28 28 78 2d 77 2f 32 29 2a 2a 32 29 2f 72 65 67 29 5c 6e 20 20 20 20 5c 6e 74 68 72 3d 31 65 2d ((x-w/2)**2)/reg)\n....\nthr=1e-
71e0 31 36 5c 6e 72 65 67 3d 31 65 30 5c 6e 5c 6e 6b 3d 67 65 74 5f 31 44 6b 65 72 6e 65 6c 28 72 65 16\nreg=1e0\n\nk=get_1Dkernel(re
7200 67 29 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 70 6c 6f 74 28 6b 29 5c 6e 5c 6e g)\npl.figure(2)\npl.plot(k)\n\n
7220 49 30 35 3d 63 6f 6e 76 32 28 49 30 2c 6b 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 29 5c I05=conv2(I0,k)\n\npl.figure(1)\
7240 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 30 npl.subplot(2,2,1)\npl.imshow(I0
7260 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 )\npl.subplot(2,2,2)\npl.imshow(
7280 49 30 35 29 5c 6e 5c 6e 23 25 25 5c 6e 5c 6e 47 3d 6f 74 2e 65 6d 64 28 69 30 2c 69 31 2c 4d 29 I05)\n\n#%%\n\nG=ot.emd(i0,i1,M)
72a0 5c 6e 72 30 3d 6e 70 2e 73 75 6d 28 4d 2a 47 29 5c 6e 5c 6e 72 65 67 3d 31 65 2d 31 5c 6e 47 73 \nr0=np.sum(M*G)\n\nreg=1e-1\nGs
72c0 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 6b 6e 6f 70 70 28 69 30 2c 69 31 =ot.bregman.sinkhorn_knopp(i0,i1
72e0 2c 4d 2c 72 65 67 3d 72 65 67 29 5c 6e 72 73 3d 6e 70 2e 73 75 6d 28 4d 2a 47 73 29 5c 6e 5c 6e ,M,reg=reg)\nrs=np.sum(M*Gs)\n\n
7300 23 25 25 5c 6e 5c 6e 64 65 66 20 6d 79 6c 6f 67 28 75 29 3a 5c 6e 20 20 20 20 74 6d 70 3d 6e 70 #%%\n\ndef.mylog(u):\n....tmp=np
7320 2e 6c 6f 67 28 75 29 5c 6e 20 20 20 20 74 6d 70 5b 6e 70 2e 69 73 6e 61 6e 28 74 6d 70 29 5d 3d .log(u)\n....tmp[np.isnan(tmp)]=
7340 30 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 74 6d 70 5c 6e 5c 6e 64 65 66 20 73 69 6e 6b 68 6f 72 0\n....return.tmp\n\ndef.sinkhor
7360 6e 5f 63 6f 6e 76 28 61 2c 62 2c 20 72 65 67 2c 20 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 n_conv(a,b,.reg,.numItermax.=.10
7380 30 30 2c 20 73 74 6f 70 54 68 72 3d 31 65 2d 39 2c 20 76 65 72 62 6f 73 65 3d 46 61 6c 73 65 2c 00,.stopThr=1e-9,.verbose=False,
73a0 20 6c 6f 67 3d 46 61 6c 73 65 2c 2a 2a 6b 77 61 72 67 73 29 3a 5c 6e 5c 6e 5c 6e 20 20 20 20 61 .log=False,**kwargs):\n\n\n....a
73c0 3d 6e 70 2e 61 73 61 72 72 61 79 28 61 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c =np.asarray(a,dtype=np.float64)\
73e0 6e 20 20 20 20 62 3d 6e 70 2e 61 73 61 72 72 61 79 28 62 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f n....b=np.asarray(b,dtype=np.flo
7400 61 74 36 34 29 5c 6e 20 20 20 20 20 20 20 20 5c 6e 20 20 20 20 5c 6e 20 20 20 20 69 66 20 6c 65 at64)\n........\n....\n....if.le
7420 6e 28 62 2e 73 68 61 70 65 29 3e 32 3a 5c 6e 20 20 20 20 20 20 20 20 6e 62 62 3d 62 2e 73 68 61 n(b.shape)>2:\n........nbb=b.sha
7440 70 65 5b 32 5d 5c 6e 20 20 20 20 20 20 20 20 61 3d 61 5b 3a 2c 3a 2c 6e 70 2e 6e 65 77 61 78 69 pe[2]\n........a=a[:,:,np.newaxi
7460 73 5d 5c 6e 20 20 20 20 65 6c 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 6e 62 62 3d 30 5c 6e 20 20 s]\n....else:\n........nbb=0\n..
7480 20 20 5c 6e 5c 6e 20 20 20 20 69 66 20 6c 6f 67 3a 5c 6e 20 20 20 20 20 20 20 20 6c 6f 67 3d 7b ..\n\n....if.log:\n........log={
74a0 27 65 72 72 27 3a 5b 5d 7d 5c 6e 5c 6e 20 20 20 20 23 20 77 65 20 61 73 73 75 6d 65 20 74 68 61 'err':[]}\n\n....#.we.assume.tha
74c0 74 20 6e 6f 20 64 69 73 74 61 6e 63 65 73 20 61 72 65 20 6e 75 6c 6c 20 65 78 63 65 70 74 20 74 t.no.distances.are.null.except.t
74e0 68 6f 73 65 20 6f 66 20 74 68 65 20 64 69 61 67 6f 6e 61 6c 20 6f 66 20 64 69 73 74 61 6e 63 65 hose.of.the.diagonal.of.distance
7500 73 5c 6e 20 20 20 20 69 66 20 6e 62 62 3a 5c 6e 20 20 20 20 20 20 20 20 75 20 3d 20 6e 70 2e 6f s\n....if.nbb:\n........u.=.np.o
7520 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 61 70 65 5b 31 5d 2c 6e 62 62 29 29 nes((a.shape[0],a.shape[1],nbb))
7540 2f 28 6e 70 2e 70 72 6f 64 28 61 2e 73 68 61 70 65 5b 3a 32 5d 29 29 5c 6e 20 20 20 20 20 20 20 /(np.prod(a.shape[:2]))\n.......
7560 20 76 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 61 70 65 .v.=.np.ones((a.shape[0],a.shape
7580 5b 31 5d 2c 6e 62 62 29 29 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 61 70 65 5b 3a 32 5d 29 29 [1],nbb))/(np.prod(b.shape[:2]))
75a0 5c 6e 20 20 20 20 20 20 20 20 61 30 3d 31 2e 30 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 61 70 \n........a0=1.0/(np.prod(b.shap
75c0 65 5b 3a 32 5d 29 29 5c 6e 20 20 20 20 65 6c 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 75 20 3d 20 e[:2]))\n....else:\n........u.=.
75e0 6e 70 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 61 70 65 5b 31 5d 29 29 np.ones((a.shape[0],a.shape[1]))
7600 2f 28 6e 70 2e 70 72 6f 64 28 61 2e 73 68 61 70 65 5b 3a 32 5d 29 29 5c 6e 20 20 20 20 20 20 20 /(np.prod(a.shape[:2]))\n.......
7620 20 76 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 61 70 65 .v.=.np.ones((a.shape[0],a.shape
7640 5b 31 5d 29 29 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 61 70 65 5b 3a 32 5d 29 29 5c 6e 20 20 [1]))/(np.prod(b.shape[:2]))\n..
7660 20 20 20 20 20 20 61 30 3d 31 2e 30 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 61 70 65 5b 3a 32 ......a0=1.0/(np.prod(b.shape[:2
7680 5d 29 29 5c 6e 20 20 20 20 20 20 20 20 5c 6e 20 20 20 20 20 20 20 20 5c 6e 20 20 20 20 6b 3d 67 ]))\n........\n........\n....k=g
76a0 65 74 5f 31 44 6b 65 72 6e 65 6c 28 72 65 67 29 5c 6e 20 20 20 20 5c 6e 20 20 20 20 69 66 20 6e et_1Dkernel(reg)\n....\n....if.n
76c0 62 62 3a 5c 6e 20 20 20 20 20 20 20 20 4b 3d 6c 61 6d 62 64 61 20 49 3a 20 63 6f 6e 76 32 6e 28 bb:\n........K=lambda.I:.conv2n(
76e0 49 2c 6b 29 5c 6e 20 20 20 20 65 6c 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 4b 3d 6c 61 6d 62 64 I,k)\n....else:\n........K=lambd
7700 61 20 49 3a 20 63 6f 6e 76 32 28 49 2c 6b 29 5c 6e 5c 6e 20 20 20 20 63 70 74 20 3d 20 30 5c 6e a.I:.conv2(I,k)\n\n....cpt.=.0\n
7720 20 20 20 20 65 72 72 3d 31 5c 6e 20 20 20 20 77 68 69 6c 65 20 28 65 72 72 3e 73 74 6f 70 54 68 ....err=1\n....while.(err>stopTh
7740 72 20 61 6e 64 20 63 70 74 3c 6e 75 6d 49 74 65 72 6d 61 78 29 3a 5c 6e 20 20 20 20 20 20 20 20 r.and.cpt<numItermax):\n........
7760 75 70 72 65 76 20 3d 20 75 5c 6e 20 20 20 20 20 20 20 20 76 70 72 65 76 20 3d 20 76 5c 6e 20 20 uprev.=.u\n........vprev.=.v\n..
7780 20 20 20 20 20 20 5c 6e 20 20 20 20 20 20 20 20 76 20 3d 20 6e 70 2e 64 69 76 69 64 65 28 62 2c ......\n........v.=.np.divide(b,
77a0 20 4b 28 75 29 29 5c 6e 20 20 20 20 20 20 20 20 75 20 3d 20 6e 70 2e 64 69 76 69 64 65 28 61 2c .K(u))\n........u.=.np.divide(a,
77c0 20 4b 28 76 29 29 5c 6e 5c 6e 20 20 20 20 20 20 20 20 69 66 20 28 6e 70 2e 61 6e 79 28 6e 70 2e .K(v))\n\n........if.(np.any(np.
77e0 69 73 6e 61 6e 28 75 29 29 20 6f 72 20 6e 70 2e 61 6e 79 28 6e 70 2e 69 73 6e 61 6e 28 76 29 29 isnan(u)).or.np.any(np.isnan(v))
7800 20 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 20 6e 70 2e 61 6e 79 28 6e 70 2e 69 73 69 6e .\n............or.np.any(np.isin
7820 66 28 75 29 29 20 6f 72 20 6e 70 2e 61 6e 79 28 6e 70 2e 69 73 69 6e 66 28 76 29 29 29 3a 5c 6e f(u)).or.np.any(np.isinf(v))):\n
7840 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 65 20 68 61 76 65 20 72 65 61 63 68 65 64 20 74 68 ............#.we.have.reached.th
7860 65 20 6d 61 63 68 69 6e 65 20 70 72 65 63 69 73 69 6f 6e 5c 6e 20 20 20 20 20 20 20 20 20 20 20 e.machine.precision\n...........
7880 20 23 20 63 6f 6d 65 20 62 61 63 6b 20 74 6f 20 70 72 65 76 69 6f 75 73 20 73 6f 6c 75 74 69 6f .#.come.back.to.previous.solutio
78a0 6e 20 61 6e 64 20 71 75 69 74 20 6c 6f 6f 70 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 n.and.quit.loop\n............pri
78c0 6e 74 28 27 57 61 72 6e 69 6e 67 3a 20 6e 75 6d 65 72 69 63 61 6c 20 65 72 72 6f 72 73 20 61 74 nt('Warning:.numerical.errors.at
78e0 20 69 74 65 72 61 74 69 6f 6e 27 2c 20 63 70 74 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 75 .iteration',.cpt)\n............u
7900 20 3d 20 75 70 72 65 76 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 76 20 3d 20 76 70 72 65 76 5c .=.uprev\n............v.=.vprev\
7920 6e 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 5c 6e 20 20 20 20 20 20 20 20 69 66 20 63 n............break\n........if.c
7940 70 74 25 31 30 3d 3d 30 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 65 20 63 61 6e 20 pt%10==0:\n............#.we.can.
7960 73 70 65 65 64 20 75 70 20 74 68 65 20 70 72 6f 63 65 73 73 20 62 79 20 63 68 65 63 6b 69 6e 67 speed.up.the.process.by.checking
7980 20 66 6f 72 20 74 68 65 20 65 72 72 6f 72 20 6f 6e 6c 79 20 61 6c 6c 20 74 68 65 20 31 30 74 68 .for.the.error.only.all.the.10th
79a0 20 69 74 65 72 61 74 69 6f 6e 73 5c 6e 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 20 3d .iterations\n\n............err.=
79c0 20 6e 70 2e 73 75 6d 28 28 75 2d 75 70 72 65 76 29 2a 2a 32 29 2f 6e 70 2e 73 75 6d 28 28 75 29 .np.sum((u-uprev)**2)/np.sum((u)
79e0 2a 2a 32 29 2b 6e 70 2e 73 75 6d 28 28 76 2d 76 70 72 65 76 29 2a 2a 32 29 2f 6e 70 2e 73 75 6d **2)+np.sum((v-vprev)**2)/np.sum
7a00 28 28 76 29 2a 2a 32 29 5c 6e 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 6f 67 3a 5c ((v)**2)\n\n............if.log:\
7a20 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 5b 27 65 72 72 27 5d 2e 61 70 70 65 n................log['err'].appe
7a40 6e 64 28 65 72 72 29 5c 6e 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 76 65 72 62 6f 73 nd(err)\n\n............if.verbos
7a60 65 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 70 74 25 32 30 30 20 3d e:\n................if.cpt%200.=
7a80 3d 30 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 27 =0:\n....................print('
7aa0 7b 3a 35 73 7d 7c 7b 3a 31 32 73 7d 27 2e 66 6f 72 6d 61 74 28 27 49 74 2e 27 2c 27 45 72 72 27 {:5s}|{:12s}'.format('It.','Err'
7ac0 29 2b 27 5c 5c 6e 27 2b 27 2d 27 2a 31 39 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )+'\\n'+'-'*19)\n...............
7ae0 20 70 72 69 6e 74 28 27 7b 3a 35 64 7d 7c 7b 3a 38 65 7d 7c 27 2e 66 6f 72 6d 61 74 28 63 70 74 .print('{:5d}|{:8e}|'.format(cpt
7b00 2c 65 72 72 29 29 5c 6e 20 20 20 20 20 20 20 20 63 70 74 20 3d 20 63 70 74 20 2b 31 5c 6e 20 20 ,err))\n........cpt.=.cpt.+1\n..
7b20 20 20 69 66 20 6c 6f 67 3a 5c 6e 20 20 20 20 20 20 20 20 6c 6f 67 5b 27 75 27 5d 3d 75 5c 6e 20 ..if.log:\n........log['u']=u\n.
7b40 20 20 20 20 20 20 20 6c 6f 67 5b 27 76 27 5d 3d 76 5c 6e 20 20 20 20 20 20 20 20 5c 6e 20 20 20 .......log['v']=v\n........\n...
7b60 20 69 66 20 6e 62 62 3a 20 23 72 65 74 75 72 6e 20 6f 6e 6c 79 20 6c 6f 73 73 20 5c 6e 20 20 20 .if.nbb:.#return.only.loss.\n...
7b80 20 20 20 20 20 72 65 73 3d 6e 70 2e 7a 65 72 6f 73 28 28 6e 62 62 29 29 5c 6e 20 20 20 20 20 20 .....res=np.zeros((nbb))\n......
7ba0 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 62 62 29 3a 5c 6e 20 20 20 20 20 20 20 20 ..for.i.in.range(nbb):\n........
7bc0 20 20 20 20 72 65 73 5b 69 5d 3d 6e 70 2e 73 75 6d 28 75 5b 3a 2c 69 5d 2e 72 65 73 68 61 70 65 ....res[i]=np.sum(u[:,i].reshape
7be0 28 28 2d 31 2c 31 29 29 2a 4b 2a 76 5b 3a 2c 69 5d 2e 72 65 73 68 61 70 65 28 28 31 2c 2d 31 29 ((-1,1))*K*v[:,i].reshape((1,-1)
7c00 29 2a 4d 29 5c 6e 20 20 20 20 20 20 20 20 69 66 20 6c 6f 67 3a 5c 6e 20 20 20 20 20 20 20 20 20 )*M)\n........if.log:\n.........
7c20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2c 6c 6f 67 5c 6e 20 20 20 20 20 20 20 20 65 6c 73 65 3a ...return.res,log\n........else:
7c40 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 20 20 20 20 20 20 20 20 \n............return.res........
7c60 5c 6e 20 20 20 20 20 20 20 20 5c 6e 20 20 20 20 65 6c 73 65 3a 20 23 20 72 65 74 75 72 6e 20 4f \n........\n....else:.#.return.O
7c80 54 20 6d 61 74 72 69 78 5c 6e 20 20 20 20 20 20 20 20 72 65 73 3d 72 65 67 2a 61 30 2a 6e 70 2e T.matrix\n........res=reg*a0*np.
7ca0 73 75 6d 28 61 2a 6d 79 6c 6f 67 28 75 2b 28 75 3d 3d 30 29 29 2b 62 2a 6d 79 6c 6f 67 28 76 2b sum(a*mylog(u+(u==0))+b*mylog(v+
7cc0 28 76 3d 3d 30 29 29 29 5c 6e 20 20 20 20 20 20 20 20 69 66 20 6c 6f 67 3a 5c 6e 20 20 20 20 20 (v==0)))\n........if.log:\n.....
7ce0 20 20 20 20 20 20 20 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2c .......\n............return.res,
7d00 6c 6f 67 5c 6e 20 20 20 20 20 20 20 20 65 6c 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 log\n........else:\n............
7d20 72 65 74 75 72 6e 20 72 65 73 5c 6e 5c 6e 72 65 67 3d 31 65 30 5c 6e 72 2c 6c 6f 67 3d 73 69 6e return.res\n\nreg=1e0\nr,log=sin
7d40 6b 68 6f 72 6e 5f 63 6f 6e 76 28 49 30 2c 49 31 2c 72 65 67 2c 76 65 72 62 6f 73 65 3d 54 72 75 khorn_conv(I0,I1,reg,verbose=Tru
7d60 65 2c 6c 6f 67 3d 54 72 75 65 29 5c 6e 61 3d 49 30 5c 6e 62 3d 49 31 5c 6e 75 3d 6c 6f 67 5b 27 e,log=True)\na=I0\nb=I1\nu=log['
7d80 75 27 5d 5c 6e 76 3d 6c 6f 67 5b 27 76 27 5d 5c 6e 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 u']\nv=log['v']\n#%%.barycenter.
7da0 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 interpolation".......],........"
7dc0 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a outputs":.[],........"metadata":
7de0 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 .{........."collapsed":.false...
7e00 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 ....}.....}...],...."metadata":.
7e20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 {....."kernelspec":.{......."dis
7e40 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 play_name":."Python.2",........"
7e60 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 name":."python2",........"langua
7e80 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 ge":."python".....},......"langu
7ea0 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 age_info":.{......."mimetype":."
7ec0 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 text/x-python",........"nbconver
7ee0 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e t_exporter":."python",........"n
7f00 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 ame":."python",........"file_ext
7f20 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 ension":.".py",........"version"
7f40 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 :."2.7.12",........"pygments_lex
7f60 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 er":."ipython2",........"codemir
7f80 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 ror_mode":.{........."version":.
7fa0 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 2,.........."name":."ipython"...
7fc0 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 0f 83 1e 4b 06 ....}.....}...}.}PK...........K.
7fe0 87 a7 1b 68 0f 00 00 68 0f 00 00 26 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f ...h...h...&...auto_examples/plo
8000 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 31 44 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d t_barycenter_1D.ipynb{..."nbform
8020 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 at_minor":.0,...."nbformat":.4,.
8040 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 ..."cells":.[.....{......."execu
8060 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f tion_count":.null,........"cell_
8080 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 type":."code",........"source":.
80a0 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 [........."%matplotlib.inline"..
80c0 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 .....],........"outputs":.[],...
80e0 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c ....."metadata":.{........."coll
8100 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 apsed":.false.......}.....},....
8120 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c ..{......."source":.[........."\
8140 6e 23 20 31 44 20 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e 74 65 72 20 64 65 6d n#.1D.Wasserstein.barycenter.dem
8160 6f 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c o\n\n\n\n".......],........"cell
8180 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 _type":."markdown",........"meta
81a0 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 data":.{}.....},......{......."e
81c0 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 xecution_count":.null,........"c
81e0 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ell_type":."code",........"sourc
8200 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c e":.[........."#.Author:.Remi.Fl
8220 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 amary.<remi.flamary@unice.fr>\n#
8240 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f \n#.License:.MIT.License\n\nimpo
8260 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 rt.numpy.as.np\nimport.matplotli
8280 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 23 20 6e 65 63 65 b.pylab.as.pl\nimport.ot\n#.nece
82a0 73 73 61 72 79 20 66 6f 72 20 33 64 20 70 6c 6f 74 20 65 76 65 6e 20 69 66 20 6e 6f 74 20 75 73 ssary.for.3d.plot.even.if.not.us
82c0 65 64 5c 6e 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d ed\nfrom.mpl_toolkits.mplot3d.im
82e0 70 6f 72 74 20 41 78 65 73 33 44 20 20 23 20 6e 6f 71 61 5c 6e 66 72 6f 6d 20 6d 61 74 70 6c 6f port.Axes3D..#.noqa\nfrom.matplo
8300 74 6c 69 62 2e 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 69 6d 70 6f 72 74 20 50 6f 6c 79 43 6f 6c 6c tlib.collections.import.PolyColl
8320 65 63 74 69 6f 6e 5c 6e 5c 6e 5c 6e 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e 20 ection\n\n\n#%%.parameters\n\nn.
8340 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 5c 6e 5c 6e 23 20 62 69 6e 20 70 6f 73 69 74 69 =.100..#.nb.bins\n\n#.bin.positi
8360 6f 6e 73 5c 6e 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d 6e 70 2e 66 ons\nx.=.np.arange(n,.dtype=np.f
8380 6c 6f 61 74 36 34 29 5c 6e 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 loat64)\n\n#.Gaussian.distributi
83a0 6f 6e 73 5c 6e 61 31 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 ons\na1.=.ot.datasets.get_1D_gau
83c0 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 ss(n,.m=20,.s=5)..#.m=.mean,.s=.
83e0 73 74 64 5c 6e 61 32 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 std\na2.=.ot.datasets.get_1D_gau
8400 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 38 29 5c 6e 5c 6e 23 20 63 72 65 61 74 69 6e 67 20 6d ss(n,.m=60,.s=8)\n\n#.creating.m
8420 61 74 72 69 78 20 41 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 64 69 73 74 72 69 62 75 74 atrix.A.containing.all.distribut
8440 69 6f 6e 73 5c 6e 41 20 3d 20 6e 70 2e 76 73 74 61 63 6b 28 28 61 31 2c 20 61 32 29 29 2e 54 5c ions\nA.=.np.vstack((a1,.a2)).T\
8460 6e 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 3d 20 41 2e 73 68 61 70 65 5b 31 5d 5c 6e 5c nn_distributions.=.A.shape[1]\n\
8480 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 20 2b 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 5c 6e n#.loss.matrix.+.normalization\n
84a0 4d 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 64 69 73 74 30 28 6e 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 M.=.ot.utils.dist0(n)\nM./=.M.ma
84c0 78 28 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e x()\n\n#%%.plot.the.distribution
84e0 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 s\n\npl.figure(1,.figsize=(6.4,.
8500 33 29 29 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 5f 64 69 73 74 72 69 62 75 74 69 3))\nfor.i.in.range(n_distributi
8520 6f 6e 73 29 3a 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 41 5b 3a 2c 20 69 5d 29 5c 6e ons):\n....pl.plot(x,.A[:,.i])\n
8540 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 70 6c 2e 74 69 pl.title('Distributions')\npl.ti
8560 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 63 ght_layout()\n\n#%%.barycenter.c
8580 6f 6d 70 75 74 61 74 69 6f 6e 5c 6e 5c 6e 61 6c 70 68 61 20 3d 20 30 2e 32 20 20 23 20 30 3c 3d omputation\n\nalpha.=.0.2..#.0<=
85a0 61 6c 70 68 61 3c 3d 31 5c 6e 77 65 69 67 68 74 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 31 20 alpha<=1\nweights.=.np.array([1.
85c0 2d 20 61 6c 70 68 61 2c 20 61 6c 70 68 61 5d 29 5c 6e 5c 6e 23 20 6c 32 62 61 72 79 5c 6e 62 61 -.alpha,.alpha])\n\n#.l2bary\nba
85e0 72 79 5f 6c 32 20 3d 20 41 2e 64 6f 74 28 77 65 69 67 68 74 73 29 5c 6e 5c 6e 23 20 77 61 73 73 ry_l2.=.A.dot(weights)\n\n#.wass
8600 65 72 73 74 65 69 6e 5c 6e 72 65 67 20 3d 20 31 65 2d 33 5c 6e 62 61 72 79 5f 77 61 73 73 20 3d erstein\nreg.=.1e-3\nbary_wass.=
8620 20 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 20 4d 2c 20 72 65 67 .ot.bregman.barycenter(A,.M,.reg
8640 2c 20 77 65 69 67 68 74 73 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 63 ,.weights)\n\npl.figure(2)\npl.c
8660 6c 66 28 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 31 29 5c 6e 66 6f 72 20 69 lf()\npl.subplot(2,.1,.1)\nfor.i
8680 20 69 6e 20 72 61 6e 67 65 28 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 29 3a 5c 6e 20 20 20 .in.range(n_distributions):\n...
86a0 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 41 5b 3a 2c 20 69 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 .pl.plot(x,.A[:,.i])\npl.title('
86c0 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c Distributions')\n\npl.subplot(2,
86e0 20 31 2c 20 32 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 6c 32 2c 20 27 72 27 2c .1,.2)\npl.plot(x,.bary_l2,.'r',
8700 20 6c 61 62 65 6c 3d 27 6c 32 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 .label='l2')\npl.plot(x,.bary_wa
8720 73 73 2c 20 27 67 27 2c 20 6c 61 62 65 6c 3d 27 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 ss,.'g',.label='Wasserstein')\np
8740 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 l.legend()\npl.title('Barycenter
8760 73 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 23 25 25 20 62 61 s')\npl.tight_layout()\n\n#%%.ba
8780 72 79 63 65 6e 74 65 72 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 5c 6e 5c 6e 6e 5f 61 6c 70 68 rycenter.interpolation\n\nn_alph
87a0 61 20 3d 20 31 31 5c 6e 61 6c 70 68 61 5f 6c 69 73 74 20 3d 20 6e 70 2e 6c 69 6e 73 70 61 63 65 a.=.11\nalpha_list.=.np.linspace
87c0 28 30 2c 20 31 2c 20 6e 5f 61 6c 70 68 61 29 5c 6e 5c 6e 5c 6e 42 5f 6c 32 20 3d 20 6e 70 2e 7a (0,.1,.n_alpha)\n\n\nB_l2.=.np.z
87e0 65 72 6f 73 28 28 6e 2c 20 6e 5f 61 6c 70 68 61 29 29 5c 6e 5c 6e 42 5f 77 61 73 73 20 3d 20 6e eros((n,.n_alpha))\n\nB_wass.=.n
8800 70 2e 63 6f 70 79 28 42 5f 6c 32 29 5c 6e 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 30 p.copy(B_l2)\n\nfor.i.in.range(0
8820 2c 20 6e 5f 61 6c 70 68 61 29 3a 5c 6e 20 20 20 20 61 6c 70 68 61 20 3d 20 61 6c 70 68 61 5f 6c ,.n_alpha):\n....alpha.=.alpha_l
8840 69 73 74 5b 69 5d 5c 6e 20 20 20 20 77 65 69 67 68 74 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b ist[i]\n....weights.=.np.array([
8860 31 20 2d 20 61 6c 70 68 61 2c 20 61 6c 70 68 61 5d 29 5c 6e 20 20 20 20 42 5f 6c 32 5b 3a 2c 20 1.-.alpha,.alpha])\n....B_l2[:,.
8880 69 5d 20 3d 20 41 2e 64 6f 74 28 77 65 69 67 68 74 73 29 5c 6e 20 20 20 20 42 5f 77 61 73 73 5b i].=.A.dot(weights)\n....B_wass[
88a0 3a 2c 20 69 5d 20 3d 20 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c :,.i].=.ot.bregman.barycenter(A,
88c0 20 4d 2c 20 72 65 67 2c 20 77 65 69 67 68 74 73 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 69 6e .M,.reg,.weights)\n\n#%%.plot.in
88e0 74 65 72 70 6f 6c 61 74 69 6f 6e 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 33 29 5c 6e 5c 6e 63 terpolation\n\npl.figure(3)\n\nc
8900 6d 61 70 20 3d 20 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 70 28 27 76 69 72 69 64 69 73 27 29 5c map.=.pl.cm.get_cmap('viridis')\
8920 6e 76 65 72 74 73 20 3d 20 5b 5d 5c 6e 7a 73 20 3d 20 61 6c 70 68 61 5f 6c 69 73 74 5c 6e 66 6f nverts.=.[]\nzs.=.alpha_list\nfo
8940 72 20 69 2c 20 7a 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a 5c 6e 20 20 20 20 79 73 r.i,.z.in.enumerate(zs):\n....ys
8960 20 3d 20 42 5f 6c 32 5b 3a 2c 20 69 5d 5c 6e 20 20 20 20 76 65 72 74 73 2e 61 70 70 65 6e 64 28 .=.B_l2[:,.i]\n....verts.append(
8980 6c 69 73 74 28 7a 69 70 28 78 2c 20 79 73 29 29 29 5c 6e 5c 6e 61 78 20 3d 20 70 6c 2e 67 63 66 list(zip(x,.ys)))\n\nax.=.pl.gcf
89a0 28 29 2e 67 63 61 28 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 5c 6e 5c 6e 70 6f 6c 79 20 ().gca(projection='3d')\n\npoly.
89c0 3d 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 28 76 65 72 74 73 2c 20 66 61 63 65 63 6f 6c 6f =.PolyCollection(verts,.facecolo
89e0 72 73 3d 5b 63 6d 61 70 28 61 29 20 66 6f 72 20 61 20 69 6e 20 61 6c 70 68 61 5f 6c 69 73 74 5d rs=[cmap(a).for.a.in.alpha_list]
8a00 29 5c 6e 70 6f 6c 79 2e 73 65 74 5f 61 6c 70 68 61 28 30 2e 37 29 5c 6e 61 78 2e 61 64 64 5f 63 )\npoly.set_alpha(0.7)\nax.add_c
8a20 6f 6c 6c 65 63 74 69 6f 6e 33 64 28 70 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 ollection3d(poly,.zs=zs,.zdir='y
8a40 27 29 5c 6e 61 78 2e 73 65 74 5f 78 6c 61 62 65 6c 28 27 78 27 29 5c 6e 61 78 2e 73 65 74 5f 78 ')\nax.set_xlabel('x')\nax.set_x
8a60 6c 69 6d 33 64 28 30 2c 20 6e 29 5c 6e 61 78 2e 73 65 74 5f 79 6c 61 62 65 6c 28 27 24 5c 5c 5c lim3d(0,.n)\nax.set_ylabel('$\\\
8a80 5c 61 6c 70 68 61 24 27 29 5c 6e 61 78 2e 73 65 74 5f 79 6c 69 6d 33 64 28 30 2c 20 31 29 5c 6e \alpha$')\nax.set_ylim3d(0,.1)\n
8aa0 61 78 2e 73 65 74 5f 7a 6c 61 62 65 6c 28 27 27 29 5c 6e 61 78 2e 73 65 74 5f 7a 6c 69 6d 33 64 ax.set_zlabel('')\nax.set_zlim3d
8ac0 28 30 2c 20 42 5f 6c 32 2e 6d 61 78 28 29 20 2a 20 31 2e 30 31 29 5c 6e 70 6c 2e 74 69 74 6c 65 (0,.B_l2.max().*.1.01)\npl.title
8ae0 28 27 42 61 72 79 63 65 6e 74 65 72 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 77 69 74 68 20 ('Barycenter.interpolation.with.
8b00 6c 32 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 66 69 l2')\npl.tight_layout()\n\npl.fi
8b20 67 75 72 65 28 34 29 5c 6e 63 6d 61 70 20 3d 20 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 70 28 27 gure(4)\ncmap.=.pl.cm.get_cmap('
8b40 76 69 72 69 64 69 73 27 29 5c 6e 76 65 72 74 73 20 3d 20 5b 5d 5c 6e 7a 73 20 3d 20 61 6c 70 68 viridis')\nverts.=.[]\nzs.=.alph
8b60 61 5f 6c 69 73 74 5c 6e 66 6f 72 20 69 2c 20 7a 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 a_list\nfor.i,.z.in.enumerate(zs
8b80 29 3a 5c 6e 20 20 20 20 79 73 20 3d 20 42 5f 77 61 73 73 5b 3a 2c 20 69 5d 5c 6e 20 20 20 20 76 ):\n....ys.=.B_wass[:,.i]\n....v
8ba0 65 72 74 73 2e 61 70 70 65 6e 64 28 6c 69 73 74 28 7a 69 70 28 78 2c 20 79 73 29 29 29 5c 6e 5c erts.append(list(zip(x,.ys)))\n\
8bc0 6e 61 78 20 3d 20 70 6c 2e 67 63 66 28 29 2e 67 63 61 28 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 nax.=.pl.gcf().gca(projection='3
8be0 64 27 29 5c 6e 5c 6e 70 6f 6c 79 20 3d 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 28 76 65 72 d')\n\npoly.=.PolyCollection(ver
8c00 74 73 2c 20 66 61 63 65 63 6f 6c 6f 72 73 3d 5b 63 6d 61 70 28 61 29 20 66 6f 72 20 61 20 69 6e ts,.facecolors=[cmap(a).for.a.in
8c20 20 61 6c 70 68 61 5f 6c 69 73 74 5d 29 5c 6e 70 6f 6c 79 2e 73 65 74 5f 61 6c 70 68 61 28 30 2e .alpha_list])\npoly.set_alpha(0.
8c40 37 29 5c 6e 61 78 2e 61 64 64 5f 63 6f 6c 6c 65 63 74 69 6f 6e 33 64 28 70 6f 6c 79 2c 20 7a 73 7)\nax.add_collection3d(poly,.zs
8c60 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 5c 6e 61 78 2e 73 65 74 5f 78 6c 61 62 65 6c 28 27 78 =zs,.zdir='y')\nax.set_xlabel('x
8c80 27 29 5c 6e 61 78 2e 73 65 74 5f 78 6c 69 6d 33 64 28 30 2c 20 6e 29 5c 6e 61 78 2e 73 65 74 5f ')\nax.set_xlim3d(0,.n)\nax.set_
8ca0 79 6c 61 62 65 6c 28 27 24 5c 5c 5c 5c 61 6c 70 68 61 24 27 29 5c 6e 61 78 2e 73 65 74 5f 79 6c ylabel('$\\\\alpha$')\nax.set_yl
8cc0 69 6d 33 64 28 30 2c 20 31 29 5c 6e 61 78 2e 73 65 74 5f 7a 6c 61 62 65 6c 28 27 27 29 5c 6e 61 im3d(0,.1)\nax.set_zlabel('')\na
8ce0 78 2e 73 65 74 5f 7a 6c 69 6d 33 64 28 30 2c 20 42 5f 6c 32 2e 6d 61 78 28 29 20 2a 20 31 2e 30 x.set_zlim3d(0,.B_l2.max().*.1.0
8d00 31 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 20 69 6e 74 65 72 70 6f 1)\npl.title('Barycenter.interpo
8d20 6c 61 74 69 6f 6e 20 77 69 74 68 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 74 69 lation.with.Wasserstein')\npl.ti
8d40 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 ght_layout()\n\npl.show()"......
8d60 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 .],........"outputs":.[],.......
8d80 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 ."metadata":.{........."collapse
8da0 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 d":.false.......}.....}...],....
8dc0 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 "metadata":.{....."kernelspec":.
8de0 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 {......."display_name":."Python.
8e00 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 2",........"name":."python2",...
8e20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c ....."language":."python".....},
8e40 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 ......"language_info":.{......."
8e60 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 mimetype":."text/x-python",.....
8e80 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e ..."nbconvert_exporter":."python
8ea0 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 ",........"name":."python",.....
8ec0 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 ..."file_extension":.".py",.....
8ee0 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 ..."version":."2.7.12",........"
8f00 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 pygments_lexer":."ipython2",....
8f20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 ...."codemirror_mode":.{........
8f40 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 ."version":.2,.........."name":.
8f60 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 "ipython".......}.....}...}.}PK.
8f80 04 14 00 00 00 00 00 9c 86 1e 4b f2 bc 11 4b 08 19 00 00 08 19 00 00 25 00 00 00 61 75 74 6f 5f ..........K...K........%...auto_
8fa0 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 63 6c 61 73 73 65 73 2e 69 70 79 6e 62 examples/plot_otda_classes.ipynb
8fc0 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 {..."nbformat_minor":.0,...."nbf
8fe0 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 ormat":.4,...."cells":.[.....{..
9000 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 ....."execution_count":.null,...
9020 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 ....."cell_type":."code",.......
9040 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 ."source":.[........."%matplotli
9060 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 b.inline".......],........"outpu
9080 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 ts":.[],........"metadata":.{...
90a0 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d ......"collapsed":.false.......}
90c0 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b .....},......{......."source":.[
90e0 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 ........."\n#.OT.for.domain.adap
9100 74 61 74 69 6f 6e 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6e 74 72 6f 64 75 tation\n\n\nThis.example.introdu
9120 63 65 73 20 61 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 69 6e 20 61 20 32 44 20 ces.a.domain.adaptation.in.a.2D.
9140 73 65 74 74 69 6e 67 20 61 6e 64 20 74 68 65 20 34 20 4f 54 44 41 5c 6e 61 70 70 72 6f 61 63 68 setting.and.the.4.OTDA\napproach
9160 65 73 20 63 75 72 72 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 65 64 20 69 6e 20 50 4f 54 2e 5c 6e es.currently.supported.in.POT.\n
9180 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 \n\n".......],........"cell_type
91a0 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 ":."markdown",........"metadata"
91c0 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 :.{}.....},......{......."execut
91e0 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ion_count":.null,........"cell_t
9200 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b ype":."code",........"source":.[
9220 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 ........."#.Authors:.Remi.Flamar
9240 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 20 20 20 20 y.<remi.flamary@unice.fr>\n#....
9260 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 ......Stanislas.Chambon.<stan.ch
9280 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 ambon@gmail.com>\n#\n#.License:.
92a0 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 MIT.License\n\nimport.matplotlib
92c0 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 22 0a 20 20 20 20 20 20 5d .pylab.as.pl\nimport.ot".......]
92e0 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 ,........"outputs":.[],........"
9300 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 metadata":.{........."collapsed"
9320 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 :.false.......}.....},......{...
9340 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 67 65 6e 65 72 61 74 ...."source":.[........."generat
9360 65 20 64 61 74 61 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 e.data\n########################
9380 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
93a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 #####################\n\n"......
93c0 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 .],........"cell_type":."markdow
93e0 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c n",........"metadata":.{}.....},
9400 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a ......{......."execution_count":
9420 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 .null,........"cell_type":."code
9440 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6e ",........"source":.[........."n
9460 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 20 3d 20 31 35 30 5c 6e 6e 5f 74 61 72 67 65 74 5f _source_samples.=.150\nn_target_
9480 73 61 6d 70 6c 65 73 20 3d 20 31 35 30 5c 6e 5c 6e 58 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 samples.=.150\n\nXs,.ys.=.ot.dat
94a0 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c asets.get_data_classif('3gauss',
94c0 20 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 29 5c 6e 58 74 2c 20 79 74 20 3d 20 6f 74 2e .n_source_samples)\nXt,.yt.=.ot.
94e0 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 datasets.get_data_classif('3gaus
9500 73 32 27 2c 20 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 6c 65 73 29 22 0a 20 20 20 20 20 20 5d 2c s2',.n_target_samples)".......],
9520 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d ........"outputs":.[],........"m
9540 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a etadata":.{........."collapsed":
9560 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 .false.......}.....},......{....
9580 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 6e 74 69 ..."source":.[........."Instanti
95a0 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c 67 6f ate.the.different.transport.algo
95c0 72 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 5c 6e 23 23 23 23 23 23 23 23 23 23 23 rithms.and.fit.them\n###########
95e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
9600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
9620 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 ##\n\n".......],........"cell_ty
9640 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 pe":."markdown",........"metadat
9660 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 a":.{}.....},......{......."exec
9680 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c ution_count":.null,........"cell
96a0 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a _type":."code",........"source":
96c0 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 45 4d 44 20 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f .[........."#.EMD.Transport\not_
96e0 65 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e 6f 74 5f 65 emd.=.ot.da.EMDTransport()\not_e
9700 6d 64 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 53 69 6e 6b 68 6f md.fit(Xs=Xs,.Xt=Xt)\n\n#.Sinkho
9720 72 6e 20 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 64 rn.Transport\not_sinkhorn.=.ot.d
9740 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 5c a.SinkhornTransport(reg_e=1e-1)\
9760 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e not_sinkhorn.fit(Xs=Xs,.Xt=Xt)\n
9780 5c 6e 23 20 53 69 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 47 72 6f 75 \n#.Sinkhorn.Transport.with.Grou
97a0 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 6f 74 5f 6c 70 6c 31 20 p.lasso.regularization\not_lpl1.
97c0 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 28 72 65 =.ot.da.SinkhornLpl1Transport(re
97e0 67 5f 65 3d 31 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 31 65 30 29 5c 6e 6f 74 5f 6c 70 6c 31 2e 66 g_e=1e-1,.reg_cl=1e0)\not_lpl1.f
9800 69 74 28 58 73 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 53 69 6e it(Xs=Xs,.ys=ys,.Xt=Xt)\n\n#.Sin
9820 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 47 72 6f 75 70 20 6c 61 73 73 6f khorn.Transport.with.Group.lasso
9840 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 6c 31 6c 32 5c 6e 6f 74 5f 6c 31 6c 32 20 3d 20 .regularization.l1l2\not_l1l2.=.
9860 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f ot.da.SinkhornL1l2Transport(reg_
9880 65 3d 31 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 32 65 30 2c 20 6d 61 78 5f 69 74 65 72 3d 32 30 2c e=1e-1,.reg_cl=2e0,.max_iter=20,
98a0 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \n..............................
98c0 20 20 20 20 20 20 20 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f 74 5f 6c 31 6c 32 2e 66 ........verbose=True)\not_l1l2.f
98e0 69 74 28 58 73 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 74 72 61 it(Xs=Xs,.ys=ys,.Xt=Xt)\n\n#.tra
9900 6e 73 70 6f 72 74 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 20 6f 6e 74 6f 20 74 61 72 67 65 nsport.source.samples.onto.targe
9920 74 20 73 61 6d 70 6c 65 73 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d t.samples\ntransp_Xs_emd.=.ot_em
9940 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 73 69 d.transform(Xs=Xs)\ntransp_Xs_si
9960 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 nkhorn.=.ot_sinkhorn.transform(X
9980 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 20 3d 20 6f 74 5f 6c 70 6c 31 2e s=Xs)\ntransp_Xs_lpl1.=.ot_lpl1.
99a0 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 transform(Xs=Xs)\ntransp_Xs_l1l2
99c0 20 3d 20 6f 74 5f 6c 31 6c 32 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 22 0a 20 20 20 .=.ot_l1l2.transform(Xs=Xs)"....
99e0 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 ...],........"outputs":.[],.....
9a00 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 ..."metadata":.{........."collap
9a20 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 sed":.false.......}.....},......
9a40 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 46 69 67 {......."source":.[........."Fig
9a60 20 31 20 3a 20 70 6c 6f 74 73 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 73 61 6d .1.:.plots.source.and.target.sam
9a80 70 6c 65 73 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ples\n##########################
9aa0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
9ac0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d ###################\n\n".......]
9ae0 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 ,........"cell_type":."markdown"
9b00 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a ,........"metadata":.{}.....},..
9b20 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e ....{......."execution_count":.n
9b40 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c ull,........"cell_type":."code",
9b60 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e ........"source":.[........."pl.
9b80 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 35 29 29 5c 6e 70 6c 2e 73 figure(1,.figsize=(10,.5))\npl.s
9ba0 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a ubplot(1,.2,.1)\npl.scatter(Xs[:
9bc0 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 ,.0],.Xs[:,.1],.c=ys,.marker='+'
9be0 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 78 74 ,.label='Source.samples')\npl.xt
9c00 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 6c 65 67 65 icks([])\npl.yticks([])\npl.lege
9c20 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 73 61 6d nd(loc=0)\npl.title('Source..sam
9c40 70 6c 65 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 ples')\n\npl.subplot(1,.2,.2)\np
9c60 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d l.scatter(Xt[:,.0],.Xt[:,.1],.c=
9c80 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 yt,.marker='o',.label='Target.sa
9ca0 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b mples')\npl.xticks([])\npl.ytick
9cc0 73 28 5b 5d 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c s([])\npl.legend(loc=0)\npl.titl
9ce0 65 28 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 e('Target.samples')\npl.tight_la
9d00 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 yout()".......],........"outputs
9d20 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 ":.[],........"metadata":.{.....
9d40 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 ...."collapsed":.false.......}..
9d60 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 ...},......{......."source":.[..
9d80 20 20 20 20 20 20 20 22 46 69 67 20 32 20 3a 20 70 6c 6f 74 20 6f 70 74 69 6d 61 6c 20 63 6f 75 ......."Fig.2.:.plot.optimal.cou
9da0 70 6c 69 6e 67 73 20 61 6e 64 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e plings.and.transported.samples\n
9dc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
9de0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
9e00 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 #############\n\n".......],.....
9e20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 ..."cell_type":."markdown",.....
9e40 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a ..."metadata":.{}.....},......{.
9e60 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a ......"execution_count":.null,..
9e80 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 ......"cell_type":."code",......
9ea0 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 61 72 61 6d 5f 69 6d 67 .."source":.[........."param_img
9ec0 20 3d 20 7b 27 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 27 3a 20 27 6e 65 61 72 65 73 74 27 2c 20 .=.{'interpolation':.'nearest',.
9ee0 27 63 6d 61 70 27 3a 20 27 73 70 65 63 74 72 61 6c 27 7d 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 'cmap':.'spectral'}\n\npl.figure
9f00 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 35 2c 20 38 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 (2,.figsize=(15,.8))\npl.subplot
9f20 28 32 2c 20 34 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 65 6d 64 2e 63 6f 75 70 (2,.4,.1)\npl.imshow(ot_emd.coup
9f40 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b ling_,.**param_img)\npl.xticks([
9f60 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 ])\npl.yticks([])\npl.title('Opt
9f80 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e imal.coupling\\nEMDTransport')\n
9fa0 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 \npl.subplot(2,.4,.2)\npl.imshow
9fc0 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f (ot_sinkhorn.coupling_,.**param_
9fe0 69 6d 67 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b img)\npl.xticks([])\npl.yticks([
a000 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 5c ])\npl.title('Optimal.coupling\\
a020 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c nSinkhornTransport')\n\npl.subpl
a040 6f 74 28 32 2c 20 34 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 6c 70 6c 31 2e 63 ot(2,.4,.3)\npl.imshow(ot_lpl1.c
a060 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 78 74 69 63 6b oupling_,.**param_img)\npl.xtick
a080 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 s([])\npl.yticks([])\npl.title('
a0a0 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 Optimal.coupling\\nSinkhornLpl1T
a0c0 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 34 ransport')\n\npl.subplot(2,.4,.4
a0e0 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 6c 31 6c 32 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 )\npl.imshow(ot_l1l2.coupling_,.
a100 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e **param_img)\npl.xticks([])\npl.
a120 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f yticks([])\npl.title('Optimal.co
a140 75 70 6c 69 6e 67 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 61 6e 73 70 6f 72 74 27 29 upling\\nSinkhornL1l2Transport')
a160 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 35 29 5c 6e 70 6c 2e 73 63 61 74 \n\npl.subplot(2,.4,.5)\npl.scat
a180 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 ter(Xt[:,.0],.Xt[:,.1],.c=yt,.ma
a1a0 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 rker='o',\n...........label='Tar
a1c0 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c 2e 73 63 61 get.samples',.alpha=0.3)\npl.sca
a1e0 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 tter(transp_Xs_emd[:,.0],.transp
a200 5f 58 73 5f 65 6d 64 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 _Xs_emd[:,.1],.c=ys,\n..........
a220 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c .marker='+',.label='Transp.sampl
a240 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 es',.s=30)\npl.xticks([])\npl.yt
a260 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 icks([])\npl.title('Transported.
a280 73 61 6d 70 6c 65 73 5c 5c 6e 45 6d 64 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 70 6c 2e 6c 65 67 samples\\nEmdTransport')\npl.leg
a2a0 65 6e 64 28 6c 6f 63 3d 5c 22 6c 6f 77 65 72 20 6c 65 66 74 5c 22 29 5c 6e 5c 6e 70 6c 2e 73 75 end(loc=\"lower.left\")\n\npl.su
a2c0 62 70 6c 6f 74 28 32 2c 20 34 2c 20 36 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c bplot(2,.4,.6)\npl.scatter(Xt[:,
a2e0 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c .0],.Xt[:,.1],.c=yt,.marker='o',
a300 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c \n...........label='Target.sampl
a320 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e es',.alpha=0.3)\npl.scatter(tran
a340 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f sp_Xs_sinkhorn[:,.0],.transp_Xs_
a360 73 69 6e 6b 68 6f 72 6e 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 sinkhorn[:,.1],.c=ys,\n.........
a380 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 ..marker='+',.label='Transp.samp
a3a0 6c 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 les',.s=30)\npl.xticks([])\npl.y
a3c0 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 ticks([])\npl.title('Transported
a3e0 20 73 61 6d 70 6c 65 73 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e .samples\\nSinkhornTransport')\n
a400 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 37 29 5c 6e 70 6c 2e 73 63 61 74 74 65 \npl.subplot(2,.4,.7)\npl.scatte
a420 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b r(Xt[:,.0],.Xt[:,.1],.c=yt,.mark
a440 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 er='o',\n...........label='Targe
a460 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c 2e 73 63 61 74 74 t.samples',.alpha=0.3)\npl.scatt
a480 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f er(transp_Xs_lpl1[:,.0],.transp_
a4a0 58 73 5f 6c 70 6c 31 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 Xs_lpl1[:,.1],.c=ys,\n..........
a4c0 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c .marker='+',.label='Transp.sampl
a4e0 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 es',.s=30)\npl.xticks([])\npl.yt
a500 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 icks([])\npl.title('Transported.
a520 73 61 6d 70 6c 65 73 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 samples\\nSinkhornLpl1Transport'
a540 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 38 29 5c 6e 70 6c 2e 73 63 61 )\n\npl.subplot(2,.4,.8)\npl.sca
a560 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d tter(Xt[:,.0],.Xt[:,.1],.c=yt,.m
a580 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 arker='o',\n...........label='Ta
a5a0 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c 2e 73 63 rget.samples',.alpha=0.3)\npl.sc
a5c0 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e atter(transp_Xs_l1l2[:,.0],.tran
a5e0 73 70 5f 58 73 5f 6c 31 6c 32 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 sp_Xs_l1l2[:,.1],.c=ys,\n.......
a600 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 ....marker='+',.label='Transp.sa
a620 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c mples',.s=30)\npl.xticks([])\npl
a640 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 .yticks([])\npl.title('Transport
a660 65 64 20 73 61 6d 70 6c 65 73 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 61 6e 73 70 6f ed.samples\\nSinkhornL1l2Transpo
a680 72 74 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 rt')\npl.tight_layout()\n\npl.sh
a6a0 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a ow()".......],........"outputs":
a6c0 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 .[],........"metadata":.{.......
a6e0 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 .."collapsed":.false.......}....
a700 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 .}...],...."metadata":.{....."ke
a720 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 rnelspec":.{......."display_name
a740 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 ":."Python.2",........"name":."p
a760 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 ython2",........"language":."pyt
a780 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 hon".....},......"language_info"
a7a0 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 :.{......."mimetype":."text/x-py
a7c0 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 thon",........"nbconvert_exporte
a7e0 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 r":."python",........"name":."py
a800 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 thon",........"file_extension":.
a820 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 ".py",........"version":."2.7.12
a840 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 ",........"pygments_lexer":."ipy
a860 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 thon2",........"codemirror_mode"
a880 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 :.{........."version":.2,.......
a8a0 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 ..."name":."ipython".......}....
a8c0 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 0d 88 1e 4b c8 39 53 c8 df 19 00 00 df 19 .}...}.}PK...........K.9S.......
a8e0 00 00 33 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 ..3...auto_examples/plot_otda_ma
a900 70 70 69 6e 67 5f 63 6f 6c 6f 72 73 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 pping_colors_images.ipynb{..."nb
a920 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a format_minor":.0,...."nbformat":
a940 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 .4,...."cells":.[.....{......."e
a960 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 xecution_count":.null,........"c
a980 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ell_type":."code",........"sourc
a9a0 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e e":.[........."%matplotlib.inlin
a9c0 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d e".......],........"outputs":.[]
a9e0 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 ,........"metadata":.{........."
aa00 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c collapsed":.false.......}.....},
aa20 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 ......{......."source":.[.......
aa40 20 20 22 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .."\n===========================
aa60 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
aa80 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 4f 54 20 66 6f =========================\nOT.fo
aaa0 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 74 68 20 69 6d 61 67 65 20 63 r.domain.adaptation.with.image.c
aac0 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 20 77 69 74 68 20 6d 61 70 70 69 6e 67 olor.adaptation.[6].with.mapping
aae0 20 65 73 74 69 6d 61 74 69 6f 6e 20 5b 38 5d 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .estimation.[8]\n===============
ab00 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
ab20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
ab40 3d 3d 3d 3d 3d 5c 6e 5c 6e 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 =====\n\n[6].Ferradans,.S.,.Papa
ab60 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a dakis,.N.,.Peyre,.G.,.&.Aujol,.J
ab80 2e 20 46 2e 20 28 32 30 31 34 29 2e 20 52 65 67 75 6c 61 72 69 7a 65 64 5c 6e 20 20 20 20 64 69 ..F..(2014)..Regularized\n....di
aba0 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a screte.optimal.transport..SIAM.J
abc0 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 ournal.on.Imaging.Sciences,.7(3)
abe0 2c 5c 6e 20 20 20 20 31 38 35 33 2d 31 38 38 32 2e 5c 6e 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 ,\n....1853-1882.\n[8].M..Perrot
ac00 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 ,.N..Courty,.R..Flamary,.A..Habr
ac20 61 72 64 2c 20 5c 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 5c 6e 20 ard,.\"Mapping.estimation.for\n.
ac40 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 22 2c ...discrete.optimal.transport\",
ac60 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 .Neural.Information.Processing.S
ac80 79 73 74 65 6d 73 20 28 4e 49 50 53 29 2c 5c 6e 20 20 20 20 32 30 31 36 2e 5c 6e 5c 6e 5c 6e 22 ystems.(NIPS),\n....2016.\n\n\n"
aca0 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d .......],........"cell_type":."m
acc0 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a arkdown",........"metadata":.{}.
ace0 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 ....},......{......."execution_c
ad00 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a ount":.null,........"cell_type":
ad20 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ."code",........"source":.[.....
ad40 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 ...."#.Authors:.Remi.Flamary.<re
ad60 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 mi.flamary@unice.fr>\n#.........
ad80 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e .Stanislas.Chambon.<stan.chambon
ada0 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c @gmail.com>\n#\n#.License:.MIT.L
adc0 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 66 72 icense\n\nimport.numpy.as.np\nfr
ade0 6f 6d 20 73 63 69 70 79 20 69 6d 70 6f 72 74 20 6e 64 69 6d 61 67 65 5c 6e 69 6d 70 6f 72 74 20 om.scipy.import.ndimage\nimport.
ae00 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f matplotlib.pylab.as.pl\nimport.o
ae20 74 5c 6e 5c 6e 72 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 52 61 6e 64 6f 6d 53 74 61 74 65 28 34 t\n\nr.=.np.random.RandomState(4
ae40 32 29 5c 6e 5c 6e 5c 6e 64 65 66 20 69 6d 32 6d 61 74 28 49 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 2)\n\n\ndef.im2mat(I):\n....\"\"
ae60 5c 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 69 78 20 28 \"Converts.and.image.to.matrix.(
ae80 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 72 one.pixel.per.line)\"\"\"\n....r
aea0 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 20 2a 20 49 2e eturn.I.reshape((I.shape[0].*.I.
aec0 73 68 61 70 65 5b 31 5d 2c 20 49 2e 73 68 61 70 65 5b 32 5d 29 29 5c 6e 5c 6e 5c 6e 64 65 66 20 shape[1],.I.shape[2]))\n\n\ndef.
aee0 6d 61 74 32 69 6d 28 58 2c 20 73 68 61 70 65 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e mat2im(X,.shape):\n....\"\"\"Con
af00 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 65 5c verts.back.a.matrix.to.an.image\
af20 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 61 70 65 28 73 68 61 70 "\"\"\n....return.X.reshape(shap
af40 65 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 5c 6e 20 20 20 20 72 65 74 75 e)\n\n\ndef.minmax(I):\n....retu
af60 72 6e 20 6e 70 2e 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 rn.np.clip(I,.0,.1)".......],...
af80 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 ....."outputs":.[],........"meta
afa0 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 data":.{........."collapsed":.fa
afc0 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 lse.......}.....},......{.......
afe0 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 47 65 6e 65 72 61 74 65 20 64 61 "source":.[........."Generate.da
b000 74 61 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ta\n############################
b020 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b040 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 #################\n\n".......],.
b060 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 ......."cell_type":."markdown",.
b080 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 ......."metadata":.{}.....},....
b0a0 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c ..{......."execution_count":.nul
b0c0 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a l,........"cell_type":."code",..
b0e0 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 4c 6f 61 ......"source":.[........."#.Loa
b100 64 69 6e 67 20 69 6d 61 67 65 73 5c 6e 49 31 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 ding.images\nI1.=.ndimage.imread
b120 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 ('../data/ocean_day.jpg').astype
b140 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 5c 6e 49 32 20 3d 20 6e 64 69 6d 61 67 65 (np.float64)./.256\nI2.=.ndimage
b160 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 .imread('../data/ocean_sunset.jp
b180 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 5c 6e 5c 6e g').astype(np.float64)./.256\n\n
b1a0 5c 6e 58 31 20 3d 20 69 6d 32 6d 61 74 28 49 31 29 5c 6e 58 32 20 3d 20 69 6d 32 6d 61 74 28 49 \nX1.=.im2mat(I1)\nX2.=.im2mat(I
b1c0 32 29 5c 6e 5c 6e 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 5c 6e 6e 62 20 3d 20 31 2)\n\n#.training.samples\nnb.=.1
b1e0 30 30 30 5c 6e 69 64 78 31 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 000\nidx1.=.r.randint(X1.shape[0
b200 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 69 64 78 32 20 3d 20 72 2e 72 61 6e 64 69 6e 74 ],.size=(nb,))\nidx2.=.r.randint
b220 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 5c 6e 58 73 20 (X2.shape[0],.size=(nb,))\n\nXs.
b240 3d 20 58 31 5b 69 64 78 31 2c 20 3a 5d 5c 6e 58 74 20 3d 20 58 32 5b 69 64 78 32 2c 20 3a 5d 22 =.X1[idx1,.:]\nXt.=.X2[idx2,.:]"
b260 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 .......],........"outputs":.[],.
b280 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f ......."metadata":.{........."co
b2a0 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a llapsed":.false.......}.....},..
b2c0 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 ....{......."source":.[.........
b2e0 22 44 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 66 6f 72 20 70 69 78 65 6c 20 64 69 73 "Domain.adaptation.for.pixel.dis
b300 74 72 69 62 75 74 69 6f 6e 20 74 72 61 6e 73 66 65 72 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 tribution.transfer\n############
b320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b340 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b360 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 #\n\n".......],........"cell_typ
b380 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 e":."markdown",........"metadata
b3a0 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 ":.{}.....},......{......."execu
b3c0 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f tion_count":.null,........"cell_
b3e0 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 type":."code",........"source":.
b400 5b 0a 20 20 20 20 20 20 20 20 22 23 20 45 4d 44 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 65 6d [........."#.EMDTransport\not_em
b420 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e 6f 74 5f 65 6d 64 d.=.ot.da.EMDTransport()\not_emd
b440 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 6d .fit(Xs=Xs,.Xt=Xt)\ntransp_Xs_em
b460 64 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 49 6d 61 d.=.ot_emd.transform(Xs=X1)\nIma
b480 67 65 5f 65 6d 64 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 ge_emd.=.minmax(mat2im(transp_Xs
b4a0 5f 65 6d 64 2c 20 49 31 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 23 20 53 69 6e 6b 68 6f 72 6e 54 72 _emd,.I1.shape))\n\n#.SinkhornTr
b4c0 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 64 61 2e 53 69 6e ansport\not_sinkhorn.=.ot.da.Sin
b4e0 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 5c 6e 6f 74 5f 73 khornTransport(reg_e=1e-1)\not_s
b500 69 6e 6b 68 6f 72 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 74 72 61 6e 73 inkhorn.fit(Xs=Xs,.Xt=Xt)\ntrans
b520 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d p_Xs_sinkhorn.=.ot_emd.transform
b540 28 58 73 3d 58 31 29 5c 6e 49 6d 61 67 65 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6d 69 6e 6d 61 78 (Xs=X1)\nImage_sinkhorn.=.minmax
b560 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 31 2e 73 (mat2im(transp_Xs_sinkhorn,.I1.s
b580 68 61 70 65 29 29 5c 6e 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 hape))\n\not_mapping_linear.=.ot
b5a0 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 5c 6e 20 20 20 20 6d 75 3d 31 65 .da.MappingTransport(\n....mu=1e
b5c0 30 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 20 6d 61 78 5f 69 74 65 72 0,.eta=1e-8,.bias=True,.max_iter
b5e0 3d 32 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c =20,.verbose=True)\not_mapping_l
b600 69 6e 65 61 72 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 58 31 74 6c 20 inear.fit(Xs=Xs,.Xt=Xt)\n\nX1tl.
b620 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 =.ot_mapping_linear.transform(Xs
b640 3d 58 31 29 5c 6e 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6d 69 6e =X1)\nImage_mapping_linear.=.min
b660 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6c 2c 20 49 31 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 6f max(mat2im(X1tl,.I1.shape))\n\no
b680 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 t_mapping_gaussian.=.ot.da.Mappi
b6a0 6e 67 54 72 61 6e 73 70 6f 72 74 28 5c 6e 20 20 20 20 6d 75 3d 31 65 30 2c 20 65 74 61 3d 31 65 ngTransport(\n....mu=1e0,.eta=1e
b6c0 2d 32 2c 20 73 69 67 6d 61 3d 31 2c 20 62 69 61 73 3d 46 61 6c 73 65 2c 20 6d 61 78 5f 69 74 65 -2,.sigma=1,.bias=False,.max_ite
b6e0 72 3d 31 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f r=10,.verbose=True)\not_mapping_
b700 67 61 75 73 73 69 61 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 58 31 gaussian.fit(Xs=Xs,.Xt=Xt)\n\nX1
b720 74 6e 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 72 61 6e 73 66 6f tn.=.ot_mapping_gaussian.transfo
b740 72 6d 28 58 73 3d 58 31 29 20 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6d rm(Xs=X1)..#.use.the.estimated.m
b760 61 70 70 69 6e 67 5c 6e 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 3d apping\nImage_mapping_gaussian.=
b780 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6e 2c 20 49 31 2e 73 68 61 70 65 29 29 22 .minmax(mat2im(X1tn,.I1.shape))"
b7a0 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 .......],........"outputs":.[],.
b7c0 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f ......."metadata":.{........."co
b7e0 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a llapsed":.false.......}.....},..
b800 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 ....{......."source":.[.........
b820 22 70 6c 6f 74 20 6f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 73 5c 6e 23 23 23 23 23 23 23 23 23 "plot.original.images\n#########
b840 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b860 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b880 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f ####\n\n".......],........"cell_
b8a0 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 type":."markdown",........"metad
b8c0 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 ata":.{}.....},......{......."ex
b8e0 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 ecution_count":.null,........"ce
b900 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ll_type":."code",........"source
b920 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 ":.[........."pl.figure(1,.figsi
b940 7a 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 ze=(6.4,.3))\npl.subplot(1,.2,.1
b960 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 )\npl.imshow(I1)\npl.axis('off')
b980 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 \npl.title('Image.1')\n\npl.subp
b9a0 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 5c 6e 70 6c 2e lot(1,.2,.2)\npl.imshow(I2)\npl.
b9c0 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 axis('off')\npl.title('Image.2')
b9e0 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 \npl.tight_layout()".......],...
ba00 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 ....."outputs":.[],........"meta
ba20 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 data":.{........."collapsed":.fa
ba40 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 lse.......}.....},......{.......
ba60 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 6f 74 20 70 69 78 65 6c 20 "source":.[........."plot.pixel.
ba80 76 61 6c 75 65 73 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5c 6e 23 23 23 23 23 23 23 23 23 23 23 values.distribution\n###########
baa0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
bac0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
bae0 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 ##\n\n".......],........"cell_ty
bb00 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 pe":."markdown",........"metadat
bb20 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 a":.{}.....},......{......."exec
bb40 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c ution_count":.null,........"cell
bb60 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a _type":."code",........"source":
bb80 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 .[........."pl.figure(2,.figsize
bba0 3d 28 36 2e 34 2c 20 35 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 =(6.4,.5))\n\npl.subplot(1,.2,.1
bbc0 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 32 5d )\npl.scatter(Xs[:,.0],.Xs[:,.2]
bbe0 2c 20 63 3d 58 73 29 5c 6e 70 6c 2e 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 2c 20 31 5d 29 5c 6e ,.c=Xs)\npl.axis([0,.1,.0,.1])\n
bc00 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 pl.xlabel('Red')\npl.ylabel('Blu
bc20 65 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 e')\npl.title('Image.1')\n\npl.s
bc40 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a ubplot(1,.2,.2)\npl.scatter(Xt[:
bc60 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 32 5d 2c 20 63 3d 58 74 29 5c 6e 70 6c 2e 61 78 69 73 28 5b ,.0],.Xt[:,.2],.c=Xt)\npl.axis([
bc80 30 2c 20 31 2c 20 30 2c 20 31 5d 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 0,.1,.0,.1])\npl.xlabel('Red')\n
bca0 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 pl.ylabel('Blue')\npl.title('Ima
bcc0 67 65 20 32 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 ge.2')\npl.tight_layout()"......
bce0 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 .],........"outputs":.[],.......
bd00 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 ."metadata":.{........."collapse
bd20 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a d":.false.......}.....},......{.
bd40 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 6f 74 20 ......"source":.[........."plot.
bd60 74 72 61 6e 73 66 6f 72 6d 65 64 20 69 6d 61 67 65 73 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 transformed.images\n############
bd80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
bda0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
bdc0 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 #\n\n".......],........"cell_typ
bde0 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 e":."markdown",........"metadata
be00 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 ":.{}.....},......{......."execu
be20 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f tion_count":.null,........"cell_
be40 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 type":."code",........"source":.
be60 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d [........."pl.figure(2,.figsize=
be80 28 31 30 2c 20 35 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 31 29 5c (10,.5))\n\npl.subplot(2,.3,.1)\
bea0 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e npl.imshow(I1)\npl.axis('off')\n
bec0 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 pl.title('Im..1')\n\npl.subplot(
bee0 32 2c 20 33 2c 20 34 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 5c 6e 70 6c 2e 61 78 69 73 2,.3,.4)\npl.imshow(I2)\npl.axis
bf00 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 32 27 29 5c 6e 5c 6e 70 6c ('off')\npl.title('Im..2')\n\npl
bf20 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 6d 61 .subplot(2,.3,.2)\npl.imshow(Ima
bf40 67 65 5f 65 6d 64 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c ge_emd)\npl.axis('off')\npl.titl
bf60 65 28 27 45 6d 64 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 e('EmdTransport')\n\npl.subplot(
bf80 32 2c 20 33 2c 20 35 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 6d 61 67 65 5f 73 69 6e 6b 68 6f 2,.3,.5)\npl.imshow(Image_sinkho
bfa0 72 6e 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 rn)\npl.axis('off')\npl.title('S
bfc0 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 inkhornTransport')\n\npl.subplot
bfe0 28 32 2c 20 33 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 6d 61 67 65 5f 6d 61 70 70 69 (2,.3,.3)\npl.imshow(Image_mappi
c000 6e 67 5f 6c 69 6e 65 61 72 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 ng_linear)\npl.axis('off')\npl.t
c020 69 74 6c 65 28 27 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 28 6c 69 6e 65 61 72 29 27 itle('MappingTransport.(linear)'
c040 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 36 29 5c 6e 70 6c 2e 69 6d 73 )\n\npl.subplot(2,.3,.6)\npl.ims
c060 68 6f 77 28 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 29 5c 6e 70 6c 2e how(Image_mapping_gaussian)\npl.
c080 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4d 61 70 70 69 6e 67 54 72 axis('off')\npl.title('MappingTr
c0a0 61 6e 73 70 6f 72 74 20 28 67 61 75 73 73 69 61 6e 29 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c ansport.(gaussian)')\npl.tight_l
c0c0 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a ayout()\n\npl.show()".......],..
c0e0 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 ......"outputs":.[],........"met
c100 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 adata":.{........."collapsed":.f
c120 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 alse.......}.....}...],...."meta
c140 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 data":.{....."kernelspec":.{....
c160 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a ..."display_name":."Python.2",..
c180 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 ......"name":."python2",........
c1a0 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 "language":."python".....},.....
c1c0 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 ."language_info":.{......."mimet
c1e0 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e ype":."text/x-python",........"n
c200 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 bconvert_exporter":."python",...
c220 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 ....."name":."python",........"f
c240 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 ile_extension":.".py",........"v
c260 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 ersion":."2.7.12",........"pygme
c280 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 nts_lexer":."ipython2",........"
c2a0 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 codemirror_mode":.{........."ver
c2c0 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 sion":.2,.........."name":."ipyt
c2e0 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 hon".......}.....}...}.}PK......
c300 00 00 6a 7b 82 49 bb fd 13 71 39 0a 00 00 39 0a 00 00 2b 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 ..j{.I...q9...9...+...auto_examp
c320 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 6c 61 72 67 65 2e 69 70 79 6e les/demo_OT_2D_sampleslarge.ipyn
c340 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 b{..."nbformat_minor":.0,...."nb
c360 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a format":.4,...."cells":.[.....{.
c380 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a ......"execution_count":.null,..
c3a0 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 ......"cell_type":."code",......
c3c0 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c .."source":.[........."%matplotl
c3e0 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 ib.inline".......],........"outp
c400 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 uts":.[],........"metadata":.{..
c420 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 ......."collapsed":.false.......
c440 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 }.....},......{......."source":.
c460 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 44 65 6d 6f 20 66 6f 72 20 32 44 20 4f 70 74 69 6d 61 6c [........."\nDemo.for.2D.Optimal
c480 20 74 72 61 6e 73 70 6f 72 74 20 62 65 74 77 65 65 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 .transport.between.empirical.dis
c4a0 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 40 61 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 79 5c tributions\n\n@author:.rflamary\
c4c0 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 n\n".......],........"cell_type"
c4e0 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a :."markdown",........"metadata":
c500 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 .{}.....},......{......."executi
c520 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 on_count":.null,........"cell_ty
c540 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a pe":."code",........"source":.[.
c560 20 20 20 20 20 20 20 20 22 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 ........"import.numpy.as.np\nimp
c580 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f ort.matplotlib.pylab.as.pl\nimpo
c5a0 72 74 20 6f 74 5c 6e 5c 6e 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 64 61 74 61 rt.ot\n\n#%%.parameters.and.data
c5c0 20 67 65 6e 65 72 61 74 69 6f 6e 5c 6e 5c 6e 6e 3d 35 30 30 30 20 23 20 6e 62 20 73 61 6d 70 6c .generation\n\nn=5000.#.nb.sampl
c5e0 65 73 5c 6e 5c 6e 6d 75 5f 73 3d 6e 70 2e 61 72 72 61 79 28 5b 30 2c 30 5d 29 5c 6e 63 6f 76 5f es\n\nmu_s=np.array([0,0])\ncov_
c600 73 3d 6e 70 2e 61 72 72 61 79 28 5b 5b 31 2c 30 5d 2c 5b 30 2c 31 5d 5d 29 5c 6e 5c 6e 6d 75 5f s=np.array([[1,0],[0,1]])\n\nmu_
c620 74 3d 6e 70 2e 61 72 72 61 79 28 5b 34 2c 34 5d 29 5c 6e 63 6f 76 5f 74 3d 6e 70 2e 61 72 72 61 t=np.array([4,4])\ncov_t=np.arra
c640 79 28 5b 5b 31 2c 2d 2e 38 5d 2c 5b 2d 2e 38 2c 31 5d 5d 29 5c 6e 5c 6e 78 73 3d 6f 74 2e 64 61 y([[1,-.8],[-.8,1]])\n\nxs=ot.da
c660 74 61 73 65 74 73 2e 67 65 74 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 6d 75 tasets.get_2D_samples_gauss(n,mu
c680 5f 73 2c 63 6f 76 5f 73 29 5c 6e 78 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 32 44 _s,cov_s)\nxt=ot.datasets.get_2D
c6a0 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 6d 75 5f 74 2c 63 6f 76 5f 74 29 5c 6e 5c 6e _samples_gauss(n,mu_t,cov_t)\n\n
c6c0 61 2c 62 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 29 2c 6f 74 2e 75 6e 69 66 28 6e 29 20 23 20 75 6e a,b.=.ot.unif(n),ot.unif(n).#.un
c6e0 69 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 5c 6e 5c iform.distribution.on.samples\n\
c700 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 3d 6f 74 2e 64 69 73 74 28 78 73 2c 78 74 29 n#.loss.matrix\nM=ot.dist(xs,xt)
c720 5c 6e 4d 2f 3d 4d 2e 6d 61 78 28 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 \nM/=M.max()\n\n#%%.plot.samples
c740 5c 6e 5c 6e 23 70 6c 2e 66 69 67 75 72 65 28 31 29 5c 6e 23 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a \n\n#pl.figure(1)\n#pl.plot(xs[:
c760 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 ,0],xs[:,1],'+b',label='Source.s
c780 61 6d 70 6c 65 73 27 29 5c 6e 23 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c amples')\n#pl.plot(xt[:,0],xt[:,
c7a0 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 1],'xr',label='Target.samples')\
c7c0 6e 23 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 23 70 6c 2e 74 69 74 6c 65 28 27 53 n#pl.legend(loc=0)\n#pl.title('S
c7e0 6f 75 72 63 65 20 61 6e 64 20 74 72 61 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 ource.and.traget.distributions')
c800 5c 6e 23 5c 6e 23 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 23 70 6c 2e 69 6d 73 68 6f 77 28 4d \n#\n#pl.figure(2)\n#pl.imshow(M
c820 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 23 70 6c 2e 74 ,interpolation='nearest')\n#pl.t
c840 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 5c 6e 23 5c 6e 5c 6e 23 25 25 20 itle('Cost.matrix.M')\n#\n\n#%%.
c860 45 4d 44 5c 6e 5c 6e 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 29 5c 6e 5c 6e 23 70 6c 2e 66 EMD\n\nG0=ot.emd(a,b,M)\n\n#pl.f
c880 69 67 75 72 65 28 33 29 5c 6e 23 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c 69 6e 74 65 72 70 6f 6c igure(3)\n#pl.imshow(G0,interpol
c8a0 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 ation='nearest')\n#pl.title('OT.
c8c0 6d 61 74 72 69 78 20 47 30 27 29 5c 6e 23 5c 6e 23 70 6c 2e 66 69 67 75 72 65 28 34 29 5c 6e 23 matrix.G0')\n#\n#pl.figure(4)\n#
c8e0 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 ot.plot.plot2D_samples_mat(xs,xt
c900 2c 47 30 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 5c 6e 23 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c ,G0,c=[.5,.5,1])\n#pl.plot(xs[:,
c920 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 0],xs[:,1],'+b',label='Source.sa
c940 6d 70 6c 65 73 27 29 5c 6e 23 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 mples')\n#pl.plot(xt[:,0],xt[:,1
c960 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e ],'xr',label='Target.samples')\n
c980 23 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 #pl.legend(loc=0)\n#pl.title('OT
c9a0 20 6d 61 74 72 69 78 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 5c 6e 23 25 25 20 .matrix.with.samples')\n\n\n#%%.
c9c0 73 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 23 20 72 65 67 20 74 65 72 6d 5c 6e 6c 61 6d 62 64 3d 35 65 sinkhorn\n\n#.reg.term\nlambd=5e
c9e0 2d 33 5c 6e 5c 6e 47 73 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 -3\n\nGs=ot.sinkhorn(a,b,M,lambd
ca00 29 5c 6e 5c 6e 23 70 6c 2e 66 69 67 75 72 65 28 35 29 5c 6e 23 70 6c 2e 69 6d 73 68 6f 77 28 47 )\n\n#pl.figure(5)\n#pl.imshow(G
ca20 73 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 23 70 6c 2e s,interpolation='nearest')\n#pl.
ca40 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 5c 6e 23 5c 6e title('OT.matrix.sinkhorn')\n#\n
ca60 23 70 6c 2e 66 69 67 75 72 65 28 36 29 5c 6e 23 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 #pl.figure(6)\n#ot.plot.plot2D_s
ca80 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 73 2c 63 6f 6c 6f 72 3d 5b 2e 35 2c 2e 35 amples_mat(xs,xt,Gs,color=[.5,.5
caa0 2c 31 5d 29 5c 6e 23 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 ,1])\n#pl.plot(xs[:,0],xs[:,1],'
cac0 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 23 70 6c +b',label='Source.samples')\n#pl
cae0 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c .plot(xt[:,0],xt[:,1],'xr',label
cb00 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 23 70 6c 2e 6c 65 67 65 6e 64 28 6c ='Target.samples')\n#pl.legend(l
cb20 6f 63 3d 30 29 5c 6e 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b oc=0)\n#pl.title('OT.matrix.Sink
cb40 68 6f 72 6e 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 5c 6e 23 22 0a 20 20 20 20 20 20 5d 2c horn.with.samples')\n#".......],
cb60 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d ........"outputs":.[],........"m
cb80 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a etadata":.{........."collapsed":
cba0 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 .false.......}.....}...],...."me
cbc0 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 tadata":.{....."kernelspec":.{..
cbe0 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c ....."display_name":."Python.2",
cc00 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 ........"name":."python2",......
cc20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 .."language":."python".....},...
cc40 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d ..."language_info":.{......."mim
cc60 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 etype":."text/x-python",........
cc80 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 "nbconvert_exporter":."python",.
cca0 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 ......."name":."python",........
ccc0 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 "file_extension":.".py",........
cce0 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 "version":."2.7.12",........"pyg
cd00 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 ments_lexer":."ipython2",.......
cd20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 ."codemirror_mode":.{........."v
cd40 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 ersion":.2,.........."name":."ip
cd60 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 ython".......}.....}...}.}PK....
cd80 00 00 00 00 f6 83 1e 4b 31 52 a0 2f b3 0f 00 00 b3 0f 00 00 24 00 00 00 61 75 74 6f 5f 65 78 61 .......K1R./........$...auto_exa
cda0 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 73 5f 4c 32 2e 69 70 79 6e 62 7b 0a 20 20 mples/plot_OT_L1_vs_L2.ipynb{...
cdc0 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 "nbformat_minor":.0,...."nbforma
cde0 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 t":.4,...."cells":.[.....{......
ce00 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 ."execution_count":.null,.......
ce20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f ."cell_type":."code",........"so
ce40 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e urce":.[........."%matplotlib.in
ce60 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a line".......],........"outputs":
ce80 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 .[],........"metadata":.{.......
cea0 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 .."collapsed":.false.......}....
cec0 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 .},......{......."source":.[....
cee0 20 20 20 20 20 22 5c 6e 23 20 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 66 ....."\n#.2D.Optimal.transport.f
cf00 6f 72 20 64 69 66 66 65 72 65 6e 74 20 6d 65 74 72 69 63 73 5c 6e 5c 6e 5c 6e 53 74 6f 6c 65 20 or.different.metrics\n\n\nStole.
cf20 74 68 65 20 66 69 67 75 72 65 20 69 64 65 61 20 66 72 6f 6d 20 46 69 67 2e 20 31 20 61 6e 64 20 the.figure.idea.from.Fig..1.and.
cf40 32 20 69 6e 5c 6e 68 74 74 70 73 3a 2f 2f 61 72 78 69 76 2e 6f 72 67 2f 70 64 66 2f 31 37 30 36 2.in\nhttps://arxiv.org/pdf/1706
cf60 2e 30 37 36 35 30 2e 70 64 66 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 .07650.pdf\n\n\n\n".......],....
cf80 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 ...."cell_type":."markdown",....
cfa0 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b ...."metadata":.{}.....},......{
cfc0 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 ......."execution_count":.null,.
cfe0 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 ......."cell_type":."code",.....
d000 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 ..."source":.[........."#.Author
d020 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 :.Remi.Flamary.<remi.flamary@uni
d040 63 65 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 ce.fr>\n#\n#.License:.MIT.Licens
d060 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 e\n\nimport.numpy.as.np\nimport.
d080 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f matplotlib.pylab.as.pl\nimport.o
d0a0 74 5c 6e 5c 6e 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 64 61 74 61 20 67 65 6e t\n\n#%%.parameters.and.data.gen
d0c0 65 72 61 74 69 6f 6e 5c 6e 5c 6e 66 6f 72 20 64 61 74 61 20 69 6e 20 72 61 6e 67 65 28 32 29 3a eration\n\nfor.data.in.range(2):
d0e0 5c 6e 5c 6e 20 20 20 20 69 66 20 64 61 74 61 3a 5c 6e 20 20 20 20 20 20 20 20 6e 20 3d 20 32 30 \n\n....if.data:\n........n.=.20
d100 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 5c 6e 20 20 20 20 20 20 20 20 78 73 20 3d 20 6e 70 2e ..#.nb.samples\n........xs.=.np.
d120 7a 65 72 6f 73 28 28 6e 2c 20 32 29 29 5c 6e 20 20 20 20 20 20 20 20 78 73 5b 3a 2c 20 30 5d 20 zeros((n,.2))\n........xs[:,.0].
d140 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 31 5c 6e 20 20 20 20 20 20 20 20 78 73 5b 3a =.np.arange(n).+.1\n........xs[:
d160 2c 20 31 5d 20 3d 20 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 31 29 20 2a 20 2d 30 2e 30 ,.1].=.(np.arange(n).+.1).*.-0.0
d180 30 31 20 20 23 20 74 6f 20 6d 61 6b 65 20 69 74 20 73 74 72 69 63 74 6c 79 20 63 6f 6e 76 65 78 01..#.to.make.it.strictly.convex
d1a0 2e 2e 2e 5c 6e 5c 6e 20 20 20 20 20 20 20 20 78 74 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c ...\n\n........xt.=.np.zeros((n,
d1c0 20 32 29 29 5c 6e 20 20 20 20 20 20 20 20 78 74 5b 3a 2c 20 31 5d 20 3d 20 6e 70 2e 61 72 61 6e .2))\n........xt[:,.1].=.np.aran
d1e0 67 65 28 6e 29 20 2b 20 31 5c 6e 20 20 20 20 65 6c 73 65 3a 5c 6e 5c 6e 20 20 20 20 20 20 20 20 ge(n).+.1\n....else:\n\n........
d200 6e 20 3d 20 35 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 5c 6e 20 20 20 20 20 20 20 20 78 74 n.=.50..#.nb.samples\n........xt
d220 6f 74 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 20 2b 20 31 2c 20 32 29 29 5c 6e 20 20 20 20 20 ot.=.np.zeros((n.+.1,.2))\n.....
d240 20 20 20 78 74 6f 74 5b 3a 2c 20 30 5d 20 3d 20 6e 70 2e 63 6f 73 28 5c 6e 20 20 20 20 20 20 20 ...xtot[:,.0].=.np.cos(\n.......
d260 20 20 20 20 20 28 6e 70 2e 61 72 61 6e 67 65 28 6e 20 2b 20 31 29 20 2b 20 31 2e 30 29 20 2a 20 .....(np.arange(n.+.1).+.1.0).*.
d280 30 2e 39 20 2f 20 28 6e 20 2b 20 32 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 29 5c 6e 20 20 20 20 0.9./.(n.+.2).*.2.*.np.pi)\n....
d2a0 20 20 20 20 78 74 6f 74 5b 3a 2c 20 31 5d 20 3d 20 6e 70 2e 73 69 6e 28 5c 6e 20 20 20 20 20 20 ....xtot[:,.1].=.np.sin(\n......
d2c0 20 20 20 20 20 20 28 6e 70 2e 61 72 61 6e 67 65 28 6e 20 2b 20 31 29 20 2b 20 31 2e 30 29 20 2a ......(np.arange(n.+.1).+.1.0).*
d2e0 20 30 2e 39 20 2f 20 28 6e 20 2b 20 32 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 29 5c 6e 5c 6e 20 .0.9./.(n.+.2).*.2.*.np.pi)\n\n.
d300 20 20 20 20 20 20 20 78 73 20 3d 20 78 74 6f 74 5b 3a 6e 2c 20 3a 5d 5c 6e 20 20 20 20 20 20 20 .......xs.=.xtot[:n,.:]\n.......
d320 20 78 74 20 3d 20 78 74 6f 74 5b 31 3a 2c 20 3a 5d 5c 6e 5c 6e 20 20 20 20 61 2c 20 62 20 3d 20 .xt.=.xtot[1:,.:]\n\n....a,.b.=.
d340 6f 74 2e 75 6e 69 66 28 6e 29 2c 20 6f 74 2e 75 6e 69 66 28 6e 29 20 20 23 20 75 6e 69 66 6f 72 ot.unif(n),.ot.unif(n)..#.unifor
d360 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 20 20 20 m.distribution.on.samples\n\n...
d380 20 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 20 20 20 20 4d 31 20 3d 20 6f 74 2e 64 69 73 74 .#.loss.matrix\n....M1.=.ot.dist
d3a0 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 5c 6e 20 20 (xs,.xt,.metric='euclidean')\n..
d3c0 20 20 4d 31 20 2f 3d 20 4d 31 2e 6d 61 78 28 29 5c 6e 5c 6e 20 20 20 20 23 20 6c 6f 73 73 20 6d ..M1./=.M1.max()\n\n....#.loss.m
d3e0 61 74 72 69 78 5c 6e 20 20 20 20 4d 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 atrix\n....M2.=.ot.dist(xs,.xt,.
d400 6d 65 74 72 69 63 3d 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 5c 6e 20 20 20 20 4d 32 20 2f 3d metric='sqeuclidean')\n....M2./=
d420 20 4d 32 2e 6d 61 78 28 29 5c 6e 5c 6e 20 20 20 20 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e .M2.max()\n\n....#.loss.matrix\n
d440 20 20 20 20 4d 70 20 3d 20 6e 70 2e 73 71 72 74 28 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c ....Mp.=.np.sqrt(ot.dist(xs,.xt,
d460 20 6d 65 74 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 29 5c 6e 20 20 20 20 4d 70 20 2f 3d .metric='euclidean'))\n....Mp./=
d480 20 4d 70 2e 6d 61 78 28 29 5c 6e 5c 6e 20 20 20 20 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 .Mp.max()\n\n....#%%.plot.sample
d4a0 73 5c 6e 5c 6e 20 20 20 20 70 6c 2e 66 69 67 75 72 65 28 31 20 2b 20 33 20 2a 20 64 61 74 61 2c s\n\n....pl.figure(1.+.3.*.data,
d4c0 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 20 20 20 20 70 6c 2e 63 6c 66 28 29 5c 6e .figsize=(7,.3))\n....pl.clf()\n
d4e0 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 ....pl.plot(xs[:,.0],.xs[:,.1],.
d500 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 20 '+b',.label='Source.samples')\n.
d520 20 20 20 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 ...pl.plot(xt[:,.0],.xt[:,.1],.'
d540 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 20 20 xr',.label='Target.samples')\n..
d560 20 20 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 20 20 20 20 70 6c 2e 74 69 74 6c 65 ..pl.axis('equal')\n....pl.title
d580 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 72 61 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e ('Source.and.traget.distribution
d5a0 73 27 29 5c 6e 5c 6e 20 20 20 20 70 6c 2e 66 69 67 75 72 65 28 32 20 2b 20 33 20 2a 20 64 61 74 s')\n\n....pl.figure(2.+.3.*.dat
d5c0 61 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 5c 6e 20 20 20 20 70 6c 2e 73 75 62 a,.figsize=(7,.3))\n\n....pl.sub
d5e0 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 5c 6e 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 4d 31 2c plot(1,.3,.1)\n....pl.imshow(M1,
d600 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 20 20 20 20 70 .interpolation='nearest')\n....p
d620 6c 2e 74 69 74 6c 65 28 27 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 5c 6e 20 20 20 l.title('Euclidean.cost')\n\n...
d640 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c 6e 20 20 20 20 70 6c 2e 69 6d 73 .pl.subplot(1,.3,.2)\n....pl.ims
d660 68 6f 77 28 4d 32 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 how(M2,.interpolation='nearest')
d680 5c 6e 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 \n....pl.title('Squared.Euclidea
d6a0 6e 20 63 6f 73 74 27 29 5c 6e 5c 6e 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c n.cost')\n\n....pl.subplot(1,.3,
d6c0 20 33 29 5c 6e 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 4d 70 2c 20 69 6e 74 65 72 70 6f 6c 61 .3)\n....pl.imshow(Mp,.interpola
d6e0 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 53 tion='nearest')\n....pl.title('S
d700 71 72 74 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 20 20 20 20 70 6c 2e 74 69 67 qrt.Euclidean.cost')\n....pl.tig
d720 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 20 20 20 20 23 25 25 20 45 4d 44 5c 6e 20 20 20 20 ht_layout()\n\n....#%%.EMD\n....
d740 47 31 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 31 29 5c 6e 20 20 20 20 47 32 20 3d 20 G1.=.ot.emd(a,.b,.M1)\n....G2.=.
d760 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 32 29 5c 6e 20 20 20 20 47 70 20 3d 20 6f 74 2e 65 6d ot.emd(a,.b,.M2)\n....Gp.=.ot.em
d780 64 28 61 2c 20 62 2c 20 4d 70 29 5c 6e 5c 6e 20 20 20 20 70 6c 2e 66 69 67 75 72 65 28 33 20 2b d(a,.b,.Mp)\n\n....pl.figure(3.+
d7a0 20 33 20 2a 20 64 61 74 61 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 5c 6e 20 20 .3.*.data,.figsize=(7,.3))\n\n..
d7c0 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 5c 6e 20 20 20 20 6f 74 2e 70 6c ..pl.subplot(1,.3,.1)\n....ot.pl
d7e0 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 31 ot.plot2D_samples_mat(xs,.xt,.G1
d800 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 73 ,.c=[.5,..5,.1])\n....pl.plot(xs
d820 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 [:,.0],.xs[:,.1],.'+b',.label='S
d840 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 74 5b ource.samples')\n....pl.plot(xt[
d860 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 :,.0],.xt[:,.1],.'xr',.label='Ta
d880 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 20 20 20 20 70 6c 2e 61 78 69 73 28 27 65 71 75 rget.samples')\n....pl.axis('equ
d8a0 61 6c 27 29 5c 6e 20 20 20 20 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 20 20 al')\n....#.pl.legend(loc=0)\n..
d8c0 20 20 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 45 75 63 6c 69 64 65 61 6e 27 29 5c 6e 5c 6e 20 20 ..pl.title('OT.Euclidean')\n\n..
d8e0 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c 6e 20 20 20 20 6f 74 2e 70 6c ..pl.subplot(1,.3,.2)\n....ot.pl
d900 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 32 ot.plot2D_samples_mat(xs,.xt,.G2
d920 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 73 ,.c=[.5,..5,.1])\n....pl.plot(xs
d940 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 [:,.0],.xs[:,.1],.'+b',.label='S
d960 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 74 5b ource.samples')\n....pl.plot(xt[
d980 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 :,.0],.xt[:,.1],.'xr',.label='Ta
d9a0 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 20 20 20 20 70 6c 2e 61 78 69 73 28 27 65 71 75 rget.samples')\n....pl.axis('equ
d9c0 61 6c 27 29 5c 6e 20 20 20 20 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 20 20 al')\n....#.pl.legend(loc=0)\n..
d9e0 20 20 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 73 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e ..pl.title('OT.squared.Euclidean
da00 27 29 5c 6e 5c 6e 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 5c 6e 20 ')\n\n....pl.subplot(1,.3,.3)\n.
da20 20 20 20 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 ...ot.plot.plot2D_samples_mat(xs
da40 2c 20 78 74 2c 20 47 70 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 20 20 20 20 70 6c ,.xt,.Gp,.c=[.5,..5,.1])\n....pl
da60 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 .plot(xs[:,.0],.xs[:,.1],.'+b',.
da80 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 20 20 20 20 70 6c 2e label='Source.samples')\n....pl.
daa0 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c plot(xt[:,.0],.xt[:,.1],.'xr',.l
dac0 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 20 20 20 20 70 6c 2e 61 abel='Target.samples')\n....pl.a
dae0 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 20 20 20 20 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f xis('equal')\n....#.pl.legend(lo
db00 63 3d 30 29 5c 6e 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 73 71 72 74 20 45 75 63 6c c=0)\n....pl.title('OT.sqrt.Eucl
db20 69 64 65 61 6e 27 29 5c 6e 20 20 20 20 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e idean')\n....pl.tight_layout()\n
db40 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 \npl.show()".......],........"ou
db60 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b tputs":.[],........"metadata":.{
db80 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 ........."collapsed":.false.....
dba0 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a ..}.....}...],...."metadata":.{.
dbc0 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c ...."kernelspec":.{......."displ
dbe0 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 ay_name":."Python.2",........"na
dc00 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 me":."python2",........"language
dc20 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 ":."python".....},......"languag
dc40 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 e_info":.{......."mimetype":."te
dc60 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f xt/x-python",........"nbconvert_
dc80 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d exporter":."python",........"nam
dca0 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e e":."python",........"file_exten
dcc0 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 sion":.".py",........"version":.
dce0 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 "2.7.12",........"pygments_lexer
dd00 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f ":."ipython2",........"codemirro
dd20 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c r_mode":.{........."version":.2,
dd40 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 .........."name":."ipython".....
dd60 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 a7 85 1e 4b 1c bf a6 ..}.....}...}.}PK...........K...
dd80 e3 bf 0a 00 00 bf 0a 00 00 26 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f .........&...auto_examples/plot_
dda0 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 OT_2D_samples.ipynb{..."nbformat
ddc0 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 _minor":.0,...."nbformat":.4,...
dde0 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 ."cells":.[.....{......."executi
de00 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 on_count":.null,........"cell_ty
de20 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a pe":."code",........"source":.[.
de40 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 ........"%matplotlib.inline"....
de60 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 ...],........"outputs":.[],.....
de80 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 ..."metadata":.{........."collap
dea0 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 sed":.false.......}.....},......
dec0 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 {......."source":.[........."\n#
dee0 20 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 62 65 74 77 65 65 6e 20 65 6d .2D.Optimal.transport.between.em
df00 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 pirical.distributions\n\n\n\n"..
df20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 .....],........"cell_type":."mar
df40 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 kdown",........"metadata":.{}...
df60 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 ..},......{......."execution_cou
df80 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 nt":.null,........"cell_type":."
dfa0 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 code",........"source":.[.......
dfc0 20 20 22 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e .."#.Author:.Remi.Flamary.<remi.
dfe0 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a flamary@unice.fr>\n#\n#.License:
e000 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 .MIT.License\n\nimport.numpy.as.
e020 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 np\nimport.matplotlib.pylab.as.p
e040 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 5c 6e 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 20 61 l\nimport.ot\n\n#%%.parameters.a
e060 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e 5c 6e 5c 6e 6e 20 3d 20 35 30 20 20 23 20 nd.data.generation\n\nn.=.50..#.
e080 6e 62 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 6d 75 5f 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 30 nb.samples\n\nmu_s.=.np.array([0
e0a0 2c 20 30 5d 29 5c 6e 63 6f 76 5f 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 5b 31 2c 20 30 5d 2c ,.0])\ncov_s.=.np.array([[1,.0],
e0c0 20 5b 30 2c 20 31 5d 5d 29 5c 6e 5c 6e 6d 75 5f 74 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 34 2c .[0,.1]])\n\nmu_t.=.np.array([4,
e0e0 20 34 5d 29 5c 6e 63 6f 76 5f 74 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 5b 31 2c 20 2d 2e 38 5d .4])\ncov_t.=.np.array([[1,.-.8]
e100 2c 20 5b 2d 2e 38 2c 20 31 5d 5d 29 5c 6e 5c 6e 78 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 ,.[-.8,.1]])\n\nxs.=.ot.datasets
e120 2e 67 65 74 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 20 6d 75 5f 73 2c 20 63 .get_2D_samples_gauss(n,.mu_s,.c
e140 6f 76 5f 73 29 5c 6e 78 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 32 44 5f 73 ov_s)\nxt.=.ot.datasets.get_2D_s
e160 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 20 6d 75 5f 74 2c 20 63 6f 76 5f 74 29 5c 6e 5c 6e amples_gauss(n,.mu_t,.cov_t)\n\n
e180 61 2c 20 62 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 6e 2c 29 29 20 2f 20 6e 2c 20 6e 70 2e 6f 6e 65 a,.b.=.np.ones((n,))./.n,.np.one
e1a0 73 28 28 6e 2c 29 29 20 2f 20 6e 20 20 23 20 75 6e 69 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 s((n,))./.n..#.uniform.distribut
e1c0 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c ion.on.samples\n\n#.loss.matrix\
e1e0 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 nM.=.ot.dist(xs,.xt)\nM./=.M.max
e200 28 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 70 6c 2e 66 69 67 ()\n\n#%%.plot.samples\n\npl.fig
e220 75 72 65 28 31 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 ure(1)\npl.plot(xs[:,.0],.xs[:,.
e240 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 1],.'+b',.label='Source.samples'
e260 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 )\npl.plot(xt[:,.0],.xt[:,.1],.'
e280 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c xr',.label='Target.samples')\npl
e2a0 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 .legend(loc=0)\npl.title('Source
e2c0 20 61 6e 64 20 74 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 5c 6e 70 .and.target.distributions')\n\np
e2e0 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 20 69 6e 74 65 72 70 l.figure(2)\npl.imshow(M,.interp
e300 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 43 6f olation='nearest')\npl.title('Co
e320 73 74 20 6d 61 74 72 69 78 20 4d 27 29 5c 6e 5c 6e 5c 6e 23 25 25 20 45 4d 44 5c 6e 5c 6e 47 30 st.matrix.M')\n\n\n#%%.EMD\n\nG0
e340 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 .=.ot.emd(a,.b,.M)\n\npl.figure(
e360 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 3)\npl.imshow(G0,.interpolation=
e380 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 'nearest')\npl.title('OT.matrix.
e3a0 47 30 27 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c G0')\n\npl.figure(4)\not.plot.pl
e3c0 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 30 2c 20 63 3d 5b ot2D_samples_mat(xs,.xt,.G0,.c=[
e3e0 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 .5,..5,.1])\npl.plot(xs[:,.0],.x
e400 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d s[:,.1],.'+b',.label='Source.sam
e420 70 6c 65 73 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 ples')\npl.plot(xt[:,.0],.xt[:,.
e440 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 1],.'xr',.label='Target.samples'
e460 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f )\npl.legend(loc=0)\npl.title('O
e480 54 20 6d 61 74 72 69 78 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 5c 6e 23 25 25 T.matrix.with.samples')\n\n\n#%%
e4a0 20 73 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 23 20 72 65 67 20 74 65 72 6d 5c 6e 6c 61 6d 62 64 20 3d .sinkhorn\n\n#.reg.term\nlambd.=
e4c0 20 31 65 2d 33 5c 6e 5c 6e 47 73 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 20 62 2c 20 .1e-3\n\nGs.=.ot.sinkhorn(a,.b,.
e4e0 4d 2c 20 6c 61 6d 62 64 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 35 29 5c 6e 70 6c 2e 69 6d M,.lambd)\n\npl.figure(5)\npl.im
e500 73 68 6f 77 28 47 73 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 show(Gs,.interpolation='nearest'
e520 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 )\npl.title('OT.matrix.sinkhorn'
e540 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 36 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 )\n\npl.figure(6)\not.plot.plot2
e560 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 73 2c 20 63 6f 6c 6f 72 3d D_samples_mat(xs,.xt,.Gs,.color=
e580 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 [.5,..5,.1])\npl.plot(xs[:,.0],.
e5a0 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 xs[:,.1],.'+b',.label='Source.sa
e5c0 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c mples')\npl.plot(xt[:,.0],.xt[:,
e5e0 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 .1],.'xr',.label='Target.samples
e600 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 ')\npl.legend(loc=0)\npl.title('
e620 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 OT.matrix.Sinkhorn.with.samples'
e640 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 )\n\npl.show()".......],........
e660 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 "outputs":.[],........"metadata"
e680 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 :.{........."collapsed":.false..
e6a0 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a .....}.....}...],...."metadata":
e6c0 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 .{....."kernelspec":.{......."di
e6e0 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 splay_name":."Python.2",........
e700 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 "name":."python2",........"langu
e720 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 age":."python".....},......"lang
e740 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 uage_info":.{......."mimetype":.
e760 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 "text/x-python",........"nbconve
e780 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 rt_exporter":."python",........"
e7a0 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 name":."python",........"file_ex
e7c0 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e tension":.".py",........"version
e7e0 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 ":."2.7.12",........"pygments_le
e800 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 xer":."ipython2",........"codemi
e820 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a rror_mode":.{........."version":
e840 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 .2,.........."name":."ipython"..
e860 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 75 7b 82 49 .....}.....}...}.}PK........u{.I
e880 55 d4 67 d2 3c 0e 00 00 3c 0e 00 00 20 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c U.g.<...<.......auto_examples/pl
e8a0 6f 74 5f 4f 54 44 41 5f 32 44 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 ot_OTDA_2D.ipynb{..."nbformat_mi
e8c0 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 nor":.0,...."nbformat":.4,...."c
e8e0 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f ells":.[.....{......."execution_
e900 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 count":.null,........"cell_type"
e920 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 :."code",........"source":.[....
e940 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 ....."%matplotlib.inline".......
e960 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 ],........"outputs":.[],........
e980 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 "metadata":.{........."collapsed
e9a0 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 ":.false.......}.....},......{..
e9c0 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 ....."source":.[........."\n#.OT
e9e0 20 66 6f 72 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e .for.empirical.distributions\n\n
ea00 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 \n\n".......],........"cell_type
ea20 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 ":."markdown",........"metadata"
ea40 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 :.{}.....},......{......."execut
ea60 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ion_count":.null,........"cell_t
ea80 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b ype":."code",........"source":.[
eaa0 0a 20 20 20 20 20 20 20 20 22 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d ........."import.numpy.as.np\nim
eac0 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 port.matplotlib.pylab.as.pl\nimp
eae0 6f 72 74 20 6f 74 5c 6e 5c 6e 5c 6e 5c 6e 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e ort.ot\n\n\n\n#%%.parameters\n\n
eb00 6e 3d 31 35 30 20 23 20 6e 62 20 62 69 6e 73 5c 6e 5c 6e 78 73 2c 79 73 3d 6f 74 2e 64 61 74 61 n=150.#.nb.bins\n\nxs,ys=ot.data
eb20 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 6e sets.get_data_classif('3gauss',n
eb40 29 5c 6e 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c )\nxt,yt=ot.datasets.get_data_cl
eb60 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 6e 29 5c 6e 5c 6e 61 2c 62 20 3d 20 6f 74 2e 75 assif('3gauss2',n)\n\na,b.=.ot.u
eb80 6e 69 66 28 6e 29 2c 6f 74 2e 75 6e 69 66 28 6e 29 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 nif(n),ot.unif(n)\n#.loss.matrix
eba0 5c 6e 4d 3d 6f 74 2e 64 69 73 74 28 78 73 2c 78 74 29 5c 6e 23 4d 2f 3d 4d 2e 6d 61 78 28 29 5c \nM=ot.dist(xs,xt)\n#M/=M.max()\
ebc0 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 n\n#%%.plot.samples\n\npl.figure
ebe0 28 31 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 5c 6e 70 6c 2e 73 63 61 (1)\n\npl.subplot(2,2,1)\npl.sca
ec00 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 tter(xs[:,0],xs[:,1],c=ys,marker
ec20 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c ='+',label='Source.samples')\npl
ec40 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 .legend(loc=0)\npl.title('Source
ec60 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 ..distributions')\n\npl.subplot(
ec80 32 2c 32 2c 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 2,2,2)\npl.scatter(xt[:,0],xt[:,
eca0 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 1],c=yt,marker='o',label='Target
ecc0 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c .samples')\npl.legend(loc=0)\npl
ece0 2e 74 69 74 6c 65 28 27 74 61 72 67 65 74 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c .title('target..distributions')\
ed00 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 69 6e 74 n\npl.figure(2)\npl.imshow(M,int
ed20 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 erpolation='nearest')\npl.title(
ed40 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 5c 6e 5c 6e 5c 6e 23 25 25 20 4f 54 20 65 73 74 'Cost.matrix.M')\n\n\n#%%.OT.est
ed60 69 6d 61 74 69 6f 6e 5c 6e 5c 6e 23 20 45 4d 44 5c 6e 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c imation\n\n#.EMD\nG0=ot.emd(a,b,
ed80 4d 29 5c 6e 5c 6e 23 20 73 69 6e 6b 68 6f 72 6e 5c 6e 6c 61 6d 62 64 3d 31 65 2d 31 5c 6e 47 73 M)\n\n#.sinkhorn\nlambd=1e-1\nGs
eda0 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 29 5c 6e 5c 6e 5c 6e 23 =ot.sinkhorn(a,b,M,lambd)\n\n\n#
edc0 20 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 72 65 67 .Group.lasso.regularization\nreg
ede0 3d 31 65 2d 31 5c 6e 65 74 61 3d 31 65 30 5c 6e 47 67 3d 6f 74 2e 64 61 2e 73 69 6e 6b 68 6f 72 =1e-1\neta=1e0\nGg=ot.da.sinkhor
ee00 6e 5f 6c 70 6c 31 5f 6d 6d 28 61 2c 79 73 2e 61 73 74 79 70 65 28 6e 70 2e 69 6e 74 29 2c 62 2c n_lpl1_mm(a,ys.astype(np.int),b,
ee20 4d 2c 72 65 67 2c 65 74 61 29 5c 6e 5c 6e 5c 6e 23 25 25 20 76 69 73 75 20 6d 61 74 72 69 63 65 M,reg,eta)\n\n\n#%%.visu.matrice
ee40 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 33 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 s\n\npl.figure(3)\n\npl.subplot(
ee60 32 2c 33 2c 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c 69 6e 74 65 72 70 6f 6c 61 74 69 2,3,1)\npl.imshow(G0,interpolati
ee80 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 on='nearest')\npl.title('OT.matr
eea0 69 78 20 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 32 29 5c 6e 70 6c 2e 69 ix.')\n\npl.subplot(2,3,2)\npl.i
eec0 6d 73 68 6f 77 28 47 73 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 mshow(Gs,interpolation='nearest'
eee0 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 )\npl.title('OT.matrix.Sinkhorn'
ef00 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f )\n\npl.subplot(2,3,3)\npl.imsho
ef20 77 28 47 67 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 w(Gg,interpolation='nearest')\np
ef40 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 72 6f 75 70 20 6c 61 73 73 6f 27 29 l.title('OT.matrix.Group.lasso')
ef60 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 \n\npl.subplot(2,3,4)\not.plot.p
ef80 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 30 2c 63 3d 5b 2e 35 lot2D_samples_mat(xs,xt,G0,c=[.5
efa0 2c 2e 35 2c 31 5d 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a ,.5,1])\npl.scatter(xs[:,0],xs[:
efc0 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 ,1],c=ys,marker='+',label='Sourc
efe0 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c e.samples')\npl.scatter(xt[:,0],
f000 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 xt[:,1],c=yt,marker='o',label='T
f020 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 arget.samples')\n\n\npl.subplot(
f040 32 2c 33 2c 35 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 2,3,5)\not.plot.plot2D_samples_m
f060 61 74 28 78 73 2c 78 74 2c 47 73 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 5c 6e 70 6c 2e 73 63 61 at(xs,xt,Gs,c=[.5,.5,1])\npl.sca
f080 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 tter(xs[:,0],xs[:,1],c=ys,marker
f0a0 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c ='+',label='Source.samples')\npl
f0c0 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 .scatter(xt[:,0],xt[:,1],c=yt,ma
f0e0 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 rker='o',label='Target.samples')
f100 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 36 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 \n\npl.subplot(2,3,6)\not.plot.p
f120 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 67 2c 63 3d 5b 2e 35 lot2D_samples_mat(xs,xt,Gg,c=[.5
f140 2c 2e 35 2c 31 5d 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a ,.5,1])\npl.scatter(xs[:,0],xs[:
f160 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 ,1],c=ys,marker='+',label='Sourc
f180 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c e.samples')\npl.scatter(xt[:,0],
f1a0 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 xt[:,1],c=yt,marker='o',label='T
f1c0 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 23 25 25 20 73 61 6d 70 6c 65 20 69 6e arget.samples')\n\n#%%.sample.in
f1e0 74 65 72 70 6f 6c 61 74 69 6f 6e 5c 6e 5c 6e 78 73 74 30 3d 6e 2a 47 30 2e 64 6f 74 28 78 74 29 terpolation\n\nxst0=n*G0.dot(xt)
f200 5c 6e 78 73 74 73 3d 6e 2a 47 73 2e 64 6f 74 28 78 74 29 5c 6e 78 73 74 67 3d 6e 2a 47 67 2e 64 \nxsts=n*Gs.dot(xt)\nxstg=n*Gg.d
f220 6f 74 28 78 74 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 29 5c 6e 70 6c 2e 73 75 62 70 6c ot(xt)\n\npl.figure(4)\npl.subpl
f240 6f 74 28 32 2c 33 2c 31 29 5c 6e 5c 6e 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 ot(2,3,1)\n\n\npl.scatter(xt[:,0
f260 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d ],xt[:,1],c=yt,marker='o',label=
f280 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 35 29 5c 6e 70 6c 2e 'Target.samples',alpha=0.5)\npl.
f2a0 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 scatter(xst0[:,0],xst0[:,1],c=ys
f2c0 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 ,marker='+',label='Transp.sample
f2e0 73 27 2c 73 3d 33 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c s',s=30)\npl.title('Interp.sampl
f300 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 5c 6e 70 6c 2e 73 75 62 es')\npl.legend(loc=0)\n\npl.sub
f320 70 6c 6f 74 28 32 2c 33 2c 32 29 5c 6e 5c 6e 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a plot(2,3,2)\n\n\npl.scatter(xt[:
f340 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 ,0],xt[:,1],c=yt,marker='o',labe
f360 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 35 29 5c 6e 70 l='Target.samples',alpha=0.5)\np
f380 6c 2e 73 63 61 74 74 65 72 28 78 73 74 73 5b 3a 2c 30 5d 2c 78 73 74 73 5b 3a 2c 31 5d 2c 63 3d l.scatter(xsts[:,0],xsts[:,1],c=
f3a0 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 ys,marker='+',label='Transp.samp
f3c0 6c 65 73 27 2c 73 3d 33 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d les',s=30)\npl.title('Interp.sam
f3e0 70 6c 65 73 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c ples.Sinkhorn')\n\npl.subplot(2,
f400 33 2c 33 29 5c 6e 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 3,3)\n\npl.scatter(xt[:,0],xt[:,
f420 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 1],c=yt,marker='o',label='Target
f440 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 35 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 .samples',alpha=0.5)\npl.scatter
f460 28 78 73 74 67 5b 3a 2c 30 5d 2c 78 73 74 67 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 (xstg[:,0],xstg[:,1],c=ys,marker
f480 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 ='+',label='Transp.samples',s=30
f4a0 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 47 72 6f 75 )\npl.title('Interp.samples.Grou
f4c0 70 6c 61 73 73 6f 27 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 plasso')".......],........"outpu
f4e0 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 ts":.[],........"metadata":.{...
f500 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d ......"collapsed":.false.......}
f520 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 .....}...],...."metadata":.{....
f540 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f ."kernelspec":.{......."display_
f560 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 name":."Python.2",........"name"
f580 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 :."python2",........"language":.
f5a0 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 "python".....},......"language_i
f5c0 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f nfo":.{......."mimetype":."text/
f5e0 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 x-python",........"nbconvert_exp
f600 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a orter":."python",........"name":
f620 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f ."python",........"file_extensio
f640 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e n":.".py",........"version":."2.
f660 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 7.12",........"pygments_lexer":.
f680 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d "ipython2",........"codemirror_m
f6a0 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 ode":.{........."version":.2,...
f6c0 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d ......."name":."ipython".......}
f6e0 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 b8 86 1e 4b 22 97 a9 c7 5d 18 .....}...}.}PK...........K"...].
f700 00 00 5d 18 00 00 25 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 ..]...%...auto_examples/plot_otd
f720 61 5f 6d 61 70 70 69 6e 67 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e a_mapping.ipynb{..."nbformat_min
f740 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 or":.0,...."nbformat":.4,...."ce
f760 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 lls":.[.....{......."execution_c
f780 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a ount":.null,........"cell_type":
f7a0 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ."code",........"source":.[.....
f7c0 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d ...."%matplotlib.inline".......]
f7e0 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 ,........"outputs":.[],........"
f800 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 metadata":.{........."collapsed"
f820 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 :.false.......}.....},......{...
f840 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 3d 3d 3d 3d 3d ...."source":.[........."\n=====
f860 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
f880 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 4f 54 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f ==========\nOT.mapping.estimatio
f8a0 6e 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 38 5d 5c 6e 3d 3d 3d n.for.domain.adaptation.[8]\n===
f8c0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
f8e0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 70 72 65 ============\n\nThis.example.pre
f900 73 65 6e 74 73 20 68 6f 77 20 74 6f 20 75 73 65 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 sents.how.to.use.MappingTranspor
f920 74 20 74 6f 20 65 73 74 69 6d 61 74 65 20 61 74 20 74 68 65 20 73 61 6d 65 5c 6e 74 69 6d 65 20 t.to.estimate.at.the.same\ntime.
f940 62 6f 74 68 20 74 68 65 20 63 6f 75 70 6c 69 6e 67 20 74 72 61 6e 73 70 6f 72 74 20 61 6e 64 20 both.the.coupling.transport.and.
f960 61 70 70 72 6f 78 69 6d 61 74 65 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 61 70 20 77 69 approximate.the.transport.map.wi
f980 74 68 20 65 69 74 68 65 72 5c 6e 61 20 6c 69 6e 65 61 72 20 6f 72 20 61 20 6b 65 72 6e 65 6c 69 th.either\na.linear.or.a.kerneli
f9a0 7a 65 64 20 6d 61 70 70 69 6e 67 20 61 73 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e 20 5b 38 5d zed.mapping.as.introduced.in.[8]
f9c0 5c 6e 5c 6e 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e \n\n[8].M..Perrot,.N..Courty,.R.
f9e0 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 5c 6e 20 20 20 20 5c 22 4d 61 70 .Flamary,.A..Habrard,\n....\"Map
fa00 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 69 73 63 72 65 74 65 20 6f 70 74 ping.estimation.for.discrete.opt
fa20 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 22 2c 5c 6e 20 20 20 20 4e 65 75 72 61 6c 20 49 6e imal.transport\",\n....Neural.In
fa40 66 6f 72 6d 61 74 69 6f 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 79 73 74 65 6d 73 20 28 4e 49 formation.Processing.Systems.(NI
fa60 50 53 29 2c 20 32 30 31 36 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 PS),.2016.\n\n".......],........
fa80 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 "cell_type":."markdown",........
faa0 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 "metadata":.{}.....},......{....
fac0 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 ..."execution_count":.null,.....
fae0 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 ..."cell_type":."code",........"
fb00 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 52 source":.[........."#.Authors:.R
fb20 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e emi.Flamary.<remi.flamary@unice.
fb40 66 72 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f fr>\n#..........Stanislas.Chambo
fb60 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 n.<stan.chambon@gmail.com>\n#\n#
fb80 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 .License:.MIT.License\n\nimport.
fba0 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 numpy.as.np\nimport.matplotlib.p
fbc0 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 22 0a 20 20 20 20 20 20 5d 2c 20 ylab.as.pl\nimport.ot".......],.
fbe0 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 ......."outputs":.[],........"me
fc00 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 tadata":.{........."collapsed":.
fc20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 false.......}.....},......{.....
fc40 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 67 65 6e 65 72 61 74 65 20 .."source":.[........."generate.
fc60 64 61 74 61 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 data\n##########################
fc80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
fca0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d ###################\n\n".......]
fcc0 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 ,........"cell_type":."markdown"
fce0 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a ,........"metadata":.{}.....},..
fd00 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e ....{......."execution_count":.n
fd20 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c ull,........"cell_type":."code",
fd40 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6e 5f 73 ........"source":.[........."n_s
fd60 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 20 3d 20 31 30 30 5c 6e 6e 5f 74 61 72 67 65 74 5f 73 61 ource_samples.=.100\nn_target_sa
fd80 6d 70 6c 65 73 20 3d 20 31 30 30 5c 6e 74 68 65 74 61 20 3d 20 32 20 2a 20 6e 70 2e 70 69 20 2f mples.=.100\ntheta.=.2.*.np.pi./
fda0 20 32 30 5c 6e 6e 6f 69 73 65 5f 6c 65 76 65 6c 20 3d 20 30 2e 31 5c 6e 5c 6e 58 73 2c 20 79 73 .20\nnoise_level.=.0.1\n\nXs,.ys
fdc0 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 .=.ot.datasets.get_data_classif(
fde0 5c 6e 20 20 20 20 27 67 61 75 73 73 72 6f 74 27 2c 20 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c \n....'gaussrot',.n_source_sampl
fe00 65 73 2c 20 6e 7a 3d 6e 6f 69 73 65 5f 6c 65 76 65 6c 29 5c 6e 58 73 5f 6e 65 77 2c 20 5f 20 3d es,.nz=noise_level)\nXs_new,._.=
fe20 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 5c 6e .ot.datasets.get_data_classif(\n
fe40 20 20 20 20 27 67 61 75 73 73 72 6f 74 27 2c 20 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 ....'gaussrot',.n_source_samples
fe60 2c 20 6e 7a 3d 6e 6f 69 73 65 5f 6c 65 76 65 6c 29 5c 6e 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 ,.nz=noise_level)\nXt,.yt.=.ot.d
fe80 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 5c 6e 20 20 20 20 27 atasets.get_data_classif(\n....'
fea0 67 61 75 73 73 72 6f 74 27 2c 20 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 6c 65 73 2c 20 74 68 65 gaussrot',.n_target_samples,.the
fec0 74 61 3d 74 68 65 74 61 2c 20 6e 7a 3d 6e 6f 69 73 65 5f 6c 65 76 65 6c 29 5c 6e 5c 6e 23 20 6f ta=theta,.nz=noise_level)\n\n#.o
fee0 6e 65 20 6f 66 20 74 68 65 20 74 61 72 67 65 74 20 6d 6f 64 65 20 63 68 61 6e 67 65 73 20 69 74 ne.of.the.target.mode.changes.it
ff00 73 20 76 61 72 69 61 6e 63 65 20 28 6e 6f 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 29 5c 6e s.variance.(no.linear.mapping)\n
ff20 58 74 5b 79 74 20 3d 3d 20 32 5d 20 2a 3d 20 33 5c 6e 58 74 20 3d 20 58 74 20 2b 20 34 22 0a 20 Xt[yt.==.2].*=.3\nXt.=.Xt.+.4"..
ff40 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 .....],........"outputs":.[],...
ff60 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c ....."metadata":.{........."coll
ff80 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 apsed":.false.......}.....},....
ffa0 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 49 ..{......."source":.[........."I
ffc0 6e 73 74 61 6e 74 69 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f nstantiate.the.different.transpo
ffe0 72 74 20 61 6c 67 6f 72 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 5c 6e 23 23 23 23 rt.algorithms.and.fit.them\n####
10000 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
10020 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
10040 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 #########\n\n".......],........"
10060 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 cell_type":."markdown",........"
10080 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 metadata":.{}.....},......{.....
100a0 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 .."execution_count":.null,......
100c0 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 .."cell_type":."code",........"s
100e0 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 4d 61 70 70 69 6e 67 54 72 61 6e ource":.[........."#.MappingTran
10100 73 70 6f 72 74 20 77 69 74 68 20 6c 69 6e 65 61 72 20 6b 65 72 6e 65 6c 5c 6e 6f 74 5f 6d 61 70 sport.with.linear.kernel\not_map
10120 70 69 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 ping_linear.=.ot.da.MappingTrans
10140 70 6f 72 74 28 5c 6e 20 20 20 20 6b 65 72 6e 65 6c 3d 5c 22 6c 69 6e 65 61 72 5c 22 2c 20 6d 75 port(\n....kernel=\"linear\",.mu
10160 3d 31 65 30 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 5c 6e 20 20 20 20 =1e0,.eta=1e-8,.bias=True,\n....
10180 6d 61 78 5f 69 74 65 72 3d 32 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 6f 74 max_iter=20,.verbose=True)\n\not
101a0 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 _mapping_linear.fit(Xs=Xs,.Xt=Xt
101c0 29 5c 6e 5c 6e 23 20 66 6f 72 20 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 63 65 20 73 61 6d 70 6c )\n\n#.for.original.source.sampl
101e0 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 62 61 72 79 63 65 6e 74 72 69 es,.transform.applies.barycentri
10200 63 20 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 c.mapping\ntransp_Xs_linear.=.ot
10220 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 _mapping_linear.transform(Xs=Xs)
10240 5c 6e 5c 6e 23 20 66 6f 72 20 6f 75 74 20 6f 66 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c \n\n#.for.out.of.source.samples,
10260 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 74 68 65 20 6c 69 6e 65 61 72 20 6d 61 .transform.applies.the.linear.ma
10280 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 5f 6e 65 77 20 3d 20 6f 74 pping\ntransp_Xs_linear_new.=.ot
102a0 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f _mapping_linear.transform(Xs=Xs_
102c0 6e 65 77 29 5c 6e 5c 6e 5c 6e 23 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 77 69 74 new)\n\n\n#.MappingTransport.wit
102e0 68 20 67 61 75 73 73 69 61 6e 20 6b 65 72 6e 65 6c 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 h.gaussian.kernel\not_mapping_ga
10300 75 73 73 69 61 6e 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 ussian.=.ot.da.MappingTransport(
10320 5c 6e 20 20 20 20 6b 65 72 6e 65 6c 3d 5c 22 67 61 75 73 73 69 61 6e 5c 22 2c 20 65 74 61 3d 31 \n....kernel=\"gaussian\",.eta=1
10340 65 2d 35 2c 20 6d 75 3d 31 65 2d 31 2c 20 62 69 61 73 3d 54 72 75 65 2c 20 73 69 67 6d 61 3d 31 e-5,.mu=1e-1,.bias=True,.sigma=1
10360 2c 5c 6e 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 ,\n....max_iter=10,.verbose=True
10380 29 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 66 69 74 28 58 73 3d 58 73 )\not_mapping_gaussian.fit(Xs=Xs
103a0 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 66 6f 72 20 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 63 ,.Xt=Xt)\n\n#.for.original.sourc
103c0 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 62 61 72 e.samples,.transform.applies.bar
103e0 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 ycentric.mapping\ntransp_Xs_gaus
10400 73 69 61 6e 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 72 61 6e 73 sian.=.ot_mapping_gaussian.trans
10420 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 5c 6e 23 20 66 6f 72 20 6f 75 74 20 6f 66 20 73 6f 75 72 form(Xs=Xs)\n\n#.for.out.of.sour
10440 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 74 68 ce.samples,.transform.applies.th
10460 65 20 67 61 75 73 73 69 61 6e 20 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 67 61 e.gaussian.mapping\ntransp_Xs_ga
10480 75 73 73 69 61 6e 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e ussian_new.=.ot_mapping_gaussian
104a0 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 22 0a 20 20 20 20 20 20 5d 2c 20 .transform(Xs=Xs_new)".......],.
104c0 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 ......."outputs":.[],........"me
104e0 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 tadata":.{........."collapsed":.
10500 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 false.......}.....},......{.....
10520 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 6f 74 20 64 61 74 61 .."source":.[........."plot.data
10540 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 \n##############################
10560 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
10580 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 ###############\n\n".......],...
105a0 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 ....."cell_type":."markdown",...
105c0 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 ....."metadata":.{}.....},......
105e0 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c {......."execution_count":.null,
10600 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 ........"cell_type":."code",....
10620 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 ...."source":.[........."pl.figu
10640 72 65 28 31 2c 20 28 31 30 2c 20 35 29 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 73 63 61 re(1,.(10,.5))\npl.clf()\npl.sca
10660 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d tter(Xs[:,.0],.Xs[:,.1],.c=ys,.m
10680 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 arker='+',.label='Source.samples
106a0 27 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 ')\npl.scatter(Xt[:,.0],.Xt[:,.1
106c0 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 ],.c=yt,.marker='o',.label='Targ
106e0 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e et.samples')\npl.legend(loc=0)\n
10700 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 69 73 74 pl.title('Source.and.target.dist
10720 72 69 62 75 74 69 6f 6e 73 27 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 ributions')".......],........"ou
10740 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b tputs":.[],........"metadata":.{
10760 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 ........."collapsed":.false.....
10780 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 ..}.....},......{......."source"
107a0 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 6f 74 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 :.[........."plot.transported.sa
107c0 6d 70 6c 65 73 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 mples\n#########################
107e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
10800 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 ####################\n\n".......
10820 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e ],........"cell_type":."markdown
10840 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 ",........"metadata":.{}.....},.
10860 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 .....{......."execution_count":.
10880 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 null,........"cell_type":."code"
108a0 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c ,........"source":.[........."pl
108c0 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 .figure(2)\npl.clf()\npl.subplot
108e0 28 32 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 (2,.2,.1)\npl.scatter(Xt[:,.0],.
10900 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 Xt[:,.1],.c=yt,.marker='o',\n...
10920 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 ........label='Target.samples',.
10940 61 6c 70 68 61 3d 2e 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f alpha=.2)\npl.scatter(transp_Xs_
10960 6c 69 6e 65 61 72 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 5b 3a linear[:,.0],.transp_Xs_linear[:
10980 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 5c 6e 20 20 20 20 20 20 20 ,.1],.c=ys,.marker='+',\n.......
109a0 20 20 20 20 6c 61 62 65 6c 3d 27 4d 61 70 70 65 64 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 ....label='Mapped.source.samples
109c0 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 42 61 72 79 2e 20 6d 61 70 70 69 6e 67 20 28 6c 69 ')\npl.title(\"Bary..mapping.(li
109e0 6e 65 61 72 29 5c 22 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 5c 6e 70 6c near)\")\npl.legend(loc=0)\n\npl
10a00 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 .subplot(2,.2,.2)\npl.scatter(Xt
10a20 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 [:,.0],.Xt[:,.1],.c=yt,.marker='
10a40 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 o',\n...........label='Target.sa
10a60 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 2e 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 mples',.alpha=.2)\npl.scatter(tr
10a80 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 5f 6e 65 77 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 ansp_Xs_linear_new[:,.0],.transp
10aa0 5f 58 73 5f 6c 69 6e 65 61 72 5f 6e 65 77 5b 3a 2c 20 31 5d 2c 5c 6e 20 20 20 20 20 20 20 20 20 _Xs_linear_new[:,.1],\n.........
10ac0 20 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 4c 65 61 72 6e ..c=ys,.marker='+',.label='Learn
10ae0 65 64 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 45 73 74 69 6d 2e 20 ed.mapping')\npl.title(\"Estim..
10b00 6d 61 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 5c 22 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f mapping.(linear)\")\n\npl.subplo
10b20 74 28 32 2c 20 32 2c 20 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c t(2,.2,.3)\npl.scatter(Xt[:,.0],
10b40 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 .Xt[:,.1],.c=yt,.marker='o',\n..
10b60 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c .........label='Target.samples',
10b80 20 61 6c 70 68 61 3d 2e 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 .alpha=.2)\npl.scatter(transp_Xs
10ba0 5f 67 61 75 73 73 69 61 6e 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 73 _gaussian[:,.0],.transp_Xs_gauss
10bc0 69 61 6e 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 ian[:,.1],.c=ys,\n...........mar
10be0 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 ker='+',.label='barycentric.mapp
10c00 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 42 61 72 79 2e 20 6d 61 70 70 69 6e 67 20 ing')\npl.title(\"Bary..mapping.
10c20 28 6b 65 72 6e 65 6c 29 5c 22 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 (kernel)\")\n\npl.subplot(2,.2,.
10c40 34 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 4)\npl.scatter(Xt[:,.0],.Xt[:,.1
10c60 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 ],.c=yt,.marker='o',\n..........
10c80 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 2e .label='Target.samples',.alpha=.
10ca0 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 73 69 61 2)\npl.scatter(transp_Xs_gaussia
10cc0 6e 5f 6e 65 77 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 73 69 61 6e 5f n_new[:,.0],.transp_Xs_gaussian_
10ce0 6e 65 77 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 new[:,.1],.c=ys,\n...........mar
10d00 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 27 ker='+',.label='Learned.mapping'
10d20 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 45 73 74 69 6d 2e 20 6d 61 70 70 69 6e 67 20 28 6b 65 )\npl.title(\"Estim..mapping.(ke
10d40 72 6e 65 6c 29 5c 22 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 rnel)\")\npl.tight_layout()\n\np
10d60 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 l.show()".......],........"outpu
10d80 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 ts":.[],........"metadata":.{...
10da0 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d ......"collapsed":.false.......}
10dc0 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 .....}...],...."metadata":.{....
10de0 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f ."kernelspec":.{......."display_
10e00 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 name":."Python.2",........"name"
10e20 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 :."python2",........"language":.
10e40 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 "python".....},......"language_i
10e60 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f nfo":.{......."mimetype":."text/
10e80 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 x-python",........"nbconvert_exp
10ea0 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a orter":."python",........"name":
10ec0 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f ."python",........"file_extensio
10ee0 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e n":.".py",........"version":."2.
10f00 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 7.12",........"pygments_lexer":.
10f20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d "ipython2",........"codemirror_m
10f40 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 ode":.{........."version":.2,...
10f60 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d ......."name":."ipython".......}
10f80 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 02 84 1e 4b ee 1f 11 06 c2 0a .....}...}.}PK...........K......
10fa0 00 00 c2 0a 00 00 24 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 63 6f 6d ......$...auto_examples/plot_com
10fc0 70 75 74 65 5f 65 6d 64 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f pute_emd.ipynb{..."nbformat_mino
10fe0 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c r":.0,...."nbformat":.4,...."cel
11000 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f ls":.[.....{......."execution_co
11020 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 unt":.null,........"cell_type":.
11040 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 "code",........"source":.[......
11060 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c ..."%matplotlib.inline".......],
11080 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d ........"outputs":.[],........"m
110a0 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a etadata":.{........."collapsed":
110c0 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 .false.......}.....},......{....
110e0 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 31 44 20 6f ..."source":.[........."\n#.1D.o
11100 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 ptimal.transport\n\n\n\n".......
11120 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e ],........"cell_type":."markdown
11140 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 ",........"metadata":.{}.....},.
11160 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 .....{......."execution_count":.
11180 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 null,........"cell_type":."code"
111a0 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 ,........"source":.[........."#.
111c0 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 Author:.Remi.Flamary.<remi.flama
111e0 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 ry@unice.fr>\n#\n#.License:.MIT.
11200 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 License\n\nimport.numpy.as.np\ni
11220 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d mport.matplotlib.pylab.as.pl\nim
11240 70 6f 72 74 20 6f 74 5c 6e 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 port.ot\nfrom.ot.datasets.import
11260 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 5c 6e 5c 6e 5c 6e 23 25 25 20 .get_1D_gauss.as.gauss\n\n\n#%%.
11280 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 parameters\n\nn.=.100..#.nb.bins
112a0 5c 6e 6e 5f 74 61 72 67 65 74 20 3d 20 35 30 20 20 23 20 6e 62 20 74 61 72 67 65 74 20 64 69 73 \nn_target.=.50..#.nb.target.dis
112c0 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 5c tributions\n\n\n#.bin.positions\
112e0 6e 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 nx.=.np.arange(n,.dtype=np.float
11300 36 34 29 5c 6e 5c 6e 6c 73 74 5f 6d 20 3d 20 6e 70 2e 6c 69 6e 73 70 61 63 65 28 32 30 2c 20 39 64)\n\nlst_m.=.np.linspace(20,.9
11320 30 2c 20 6e 5f 74 61 72 67 65 74 29 5c 6e 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 0,.n_target)\n\n#.Gaussian.distr
11340 69 62 75 74 69 6f 6e 73 5c 6e 61 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 ibutions\na.=.gauss(n,.m=20,.s=5
11360 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 5c 6e 5c 6e 42 20 3d 20 6e 70 2e 7a )..#.m=.mean,.s=.std\n\nB.=.np.z
11380 65 72 6f 73 28 28 6e 2c 20 6e 5f 74 61 72 67 65 74 29 29 5c 6e 5c 6e 66 6f 72 20 69 2c 20 6d 20 eros((n,.n_target))\n\nfor.i,.m.
113a0 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 6c 73 74 5f 6d 29 3a 5c 6e 20 20 20 20 42 5b 3a 2c 20 69 in.enumerate(lst_m):\n....B[:,.i
113c0 5d 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 6d 2c 20 73 3d 35 29 5c 6e 5c 6e 23 20 6c 6f 73 73 ].=.gauss(n,.m=m,.s=5)\n\n#.loss
113e0 20 6d 61 74 72 69 78 20 61 6e 64 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 5c 6e 4d 20 3d 20 6f .matrix.and.normalization\nM.=.o
11400 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 t.dist(x.reshape((n,.1)),.x.resh
11420 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 27 65 75 63 6c 69 64 65 61 6e 27 29 5c 6e 4d 20 2f 3d 20 ape((n,.1)),.'euclidean')\nM./=.
11440 4d 2e 6d 61 78 28 29 5c 6e 4d 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 M.max()\nM2.=.ot.dist(x.reshape(
11460 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 27 73 71 65 (n,.1)),.x.reshape((n,.1)),.'sqe
11480 75 63 6c 69 64 65 61 6e 27 29 5c 6e 4d 32 20 2f 3d 20 4d 32 2e 6d 61 78 28 29 5c 6e 23 25 25 20 uclidean')\nM2./=.M2.max()\n#%%.
114a0 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 66 69 67 plot.the.distributions\n\npl.fig
114c0 75 72 65 28 31 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 31 29 5c 6e 70 6c 2e ure(1)\npl.subplot(2,.1,.1)\npl.
114e0 70 6c 6f 74 28 78 2c 20 61 2c 20 27 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 64 69 plot(x,.a,.'b',.label='Source.di
11500 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 64 stribution')\npl.title('Source.d
11520 69 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 istribution')\npl.subplot(2,.1,.
11540 32 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 42 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 2)\npl.plot(x,.B,.label='Target.
11560 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 67 65 distributions')\npl.title('Targe
11580 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f t.distributions')\npl.tight_layo
115a0 75 74 28 29 5c 6e 5c 6e 23 25 25 20 43 6f 6d 70 75 74 65 20 61 6e 64 20 70 6c 6f 74 20 64 69 73 ut()\n\n#%%.Compute.and.plot.dis
115c0 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 5c 6e 64 5f tributions.and.loss.matrix\n\nd_
115e0 65 6d 64 20 3d 20 6f 74 2e 65 6d 64 32 28 61 2c 20 42 2c 20 4d 29 20 20 23 20 64 69 72 65 63 74 emd.=.ot.emd2(a,.B,.M)..#.direct
11600 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 45 4d 44 5c 6e 64 5f 65 6d 64 32 20 3d 20 6f 74 .computation.of.EMD\nd_emd2.=.ot
11620 2e 65 6d 64 32 28 61 2c 20 42 2c 20 4d 32 29 20 20 23 20 64 69 72 65 63 74 20 63 6f 6d 70 75 74 .emd2(a,.B,.M2)..#.direct.comput
11640 61 74 69 6f 6e 20 6f 66 20 45 4d 44 20 77 69 74 68 20 6c 6f 73 73 20 4d 33 5c 6e 5c 6e 5c 6e 70 ation.of.EMD.with.loss.M3\n\n\np
11660 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 2c 20 6c 61 62 65 l.figure(2)\npl.plot(d_emd,.labe
11680 6c 3d 27 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d l='Euclidean.EMD')\npl.plot(d_em
116a0 64 32 2c 20 6c 61 62 65 6c 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 d2,.label='Squared.Euclidean.EMD
116c0 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 45 4d 44 20 64 69 73 74 61 6e 63 65 73 27 29 5c 6e 70 ')\npl.title('EMD.distances')\np
116e0 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 5c 6e 23 25 25 5c 6e 72 65 67 20 3d 20 31 65 2d 32 5c 6e 64 l.legend()\n\n#%%\nreg.=.1e-2\nd
11700 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 32 28 61 2c 20 42 2c 20 4d _sinkhorn.=.ot.sinkhorn2(a,.B,.M
11720 2c 20 72 65 67 29 5c 6e 64 5f 73 69 6e 6b 68 6f 72 6e 32 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 ,.reg)\nd_sinkhorn2.=.ot.sinkhor
11740 6e 32 28 61 2c 20 42 2c 20 4d 32 2c 20 72 65 67 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 n2(a,.B,.M2,.reg)\n\npl.figure(2
11760 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 2c 20 6c 61 62 65 )\npl.clf()\npl.plot(d_emd,.labe
11780 6c 3d 27 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d l='Euclidean.EMD')\npl.plot(d_em
117a0 64 32 2c 20 6c 61 62 65 6c 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 d2,.label='Squared.Euclidean.EMD
117c0 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 73 69 6e 6b 68 6f 72 6e 2c 20 27 2b 27 2c 20 6c 61 62 ')\npl.plot(d_sinkhorn,.'+',.lab
117e0 65 6c 3d 27 45 75 63 6c 69 64 65 61 6e 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 70 6c 2e 70 6c 6f el='Euclidean.Sinkhorn')\npl.plo
11800 74 28 64 5f 73 69 6e 6b 68 6f 72 6e 32 2c 20 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 71 75 61 72 t(d_sinkhorn2,.'+',.label='Squar
11820 65 64 20 45 75 63 6c 69 64 65 61 6e 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 70 6c 2e 74 69 74 6c ed.Euclidean.Sinkhorn')\npl.titl
11840 65 28 27 45 4d 44 20 64 69 73 74 61 6e 63 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c e('EMD.distances')\npl.legend()\
11860 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f n\npl.show()".......],........"o
11880 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 utputs":.[],........"metadata":.
118a0 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 {........."collapsed":.false....
118c0 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ...}.....}...],...."metadata":.{
118e0 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 ....."kernelspec":.{......."disp
11900 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e lay_name":."Python.2",........"n
11920 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 ame":."python2",........"languag
11940 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 e":."python".....},......"langua
11960 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 ge_info":.{......."mimetype":."t
11980 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 ext/x-python",........"nbconvert
119a0 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 _exporter":."python",........"na
119c0 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 me":."python",........"file_exte
119e0 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a nsion":.".py",........"version":
11a00 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 ."2.7.12",........"pygments_lexe
11a20 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 r":."ipython2",........"codemirr
11a40 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 or_mode":.{........."version":.2
11a60 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 ,.........."name":."ipython"....
11a80 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 6a 7b 82 49 cd 14 ...}.....}...}.}PK........j{.I..
11aa0 1c 01 46 09 00 00 46 09 00 00 23 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f ..F...F...#...auto_examples/demo
11ac0 5f 4f 54 5f 31 44 5f 74 65 73 74 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d _OT_1D_test.ipynb{..."nbformat_m
11ae0 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 inor":.0,...."nbformat":.4,...."
11b00 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e cells":.[.....{......."execution
11b20 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 _count":.null,........"cell_type
11b40 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 ":."code",........"source":.[...
11b60 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 ......"%matplotlib.inline"......
11b80 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 .],........"outputs":.[],.......
11ba0 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 ."metadata":.{........."collapse
11bc0 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a d":.false.......}.....},......{.
11be0 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 44 65 6d ......"source":.[........."\nDem
11c00 6f 20 66 6f 72 20 31 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 6e 5c 6e 40 61 o.for.1D.optimal.transport\n\n@a
11c20 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 79 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 uthor:.rflamary\n\n".......],...
11c40 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 ....."cell_type":."markdown",...
11c60 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 ....."metadata":.{}.....},......
11c80 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c {......."execution_count":.null,
11ca0 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 ........"cell_type":."code",....
11cc0 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 69 6d 70 6f 72 74 20 ...."source":.[........."import.
11ce0 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 numpy.as.np\nimport.matplotlib.p
11d00 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 66 72 6f 6d 20 6f 74 2e 64 ylab.as.pl\nimport.ot\nfrom.ot.d
11d20 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 atasets.import.get_1D_gauss.as.g
11d40 61 75 73 73 5c 6e 5c 6e 5c 6e 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e 3d 31 30 auss\n\n\n#%%.parameters\n\nn=10
11d60 30 20 23 20 6e 62 20 62 69 6e 73 5c 6e 5c 6e 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 5c 6e 0.#.nb.bins\n\n#.bin.positions\n
11d80 78 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c x=np.arange(n,dtype=np.float64)\
11da0 6e 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 61 3d 67 n\n#.Gaussian.distributions\na=g
11dc0 61 75 73 73 28 6e 2c 6d 3d 6e 2a 2e 32 2c 73 3d 35 29 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d auss(n,m=n*.2,s=5).#.m=.mean,.s=
11de0 20 73 74 64 5c 6e 62 3d 67 61 75 73 73 28 6e 2c 6d 3d 6e 2a 2e 36 2c 73 3d 31 30 29 5c 6e 5c 6e .std\nb=gauss(n,m=n*.6,s=10)\n\n
11e00 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 3d 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 #.loss.matrix\nM=ot.dist(x.resha
11e20 70 65 28 28 6e 2c 31 29 29 2c 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 31 29 29 29 5c 6e 4d 2f 3d pe((n,1)),x.reshape((n,1)))\nM/=
11e40 4d 2e 6d 61 78 28 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 M.max()\n\n#%%.plot.the.distribu
11e60 74 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 tions\n\npl.figure(1)\npl.plot(x
11e80 2c 61 2c 27 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f ,a,'b',label='Source.distributio
11ea0 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 62 2c 27 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 n')\npl.plot(x,b,'r',label='Targ
11ec0 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e et.distribution')\npl.legend()\n
11ee0 5c 6e 23 25 25 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 \n#%%.plot.distributions.and.los
11f00 73 20 6d 61 74 72 69 78 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 6f 74 2e 70 6c 6f s.matrix\n\npl.figure(2)\not.plo
11f20 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 4d 2c 27 43 6f 73 74 20 6d 61 74 72 69 78 20 t.plot1D_mat(a,b,M,'Cost.matrix.
11f40 4d 27 29 5c 6e 5c 6e 23 25 25 20 45 4d 44 5c 6e 5c 6e 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c M')\n\n#%%.EMD\n\nG0=ot.emd(a,b,
11f60 4d 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 33 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 M)\n\npl.figure(3)\not.plot.plot
11f80 31 44 5f 6d 61 74 28 61 2c 62 2c 47 30 2c 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 5c 6e 5c 1D_mat(a,b,G0,'OT.matrix.G0')\n\
11fa0 6e 23 25 25 20 53 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 6c 61 6d 62 64 3d 31 65 2d 33 5c 6e 47 73 3d n#%%.Sinkhorn\n\nlambd=1e-3\nGs=
11fc0 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 3d ot.sinkhorn(a,b,M,lambd,verbose=
11fe0 54 72 75 65 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 True)\n\npl.figure(4)\not.plot.p
12000 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b lot1D_mat(a,b,Gs,'OT.matrix.Sink
12020 68 6f 72 6e 27 29 5c 6e 5c 6e 23 25 25 20 53 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 6c 61 6d 62 64 3d horn')\n\n#%%.Sinkhorn\n\nlambd=
12040 31 65 2d 34 5c 6e 47 73 73 2c 6c 6f 67 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 1e-4\nGss,log=ot.bregman.sinkhor
12060 6e 5f 73 74 61 62 69 6c 69 7a 65 64 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 n_stabilized(a,b,M,lambd,verbose
12080 3d 54 72 75 65 2c 6c 6f 67 3d 54 72 75 65 29 5c 6e 47 73 73 32 2c 6c 6f 67 32 3d 6f 74 2e 62 72 =True,log=True)\nGss2,log2=ot.br
120a0 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 73 74 61 62 69 6c 69 7a 65 64 28 61 2c 62 2c 4d 2c egman.sinkhorn_stabilized(a,b,M,
120c0 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 2c 6c 6f 67 3d 54 72 75 65 2c 77 61 72 6d lambd,verbose=True,log=True,warm
120e0 73 74 61 72 74 3d 6c 6f 67 5b 27 77 61 72 6d 73 74 61 72 74 27 5d 29 5c 6e 5c 6e 70 6c 2e 66 69 start=log['warmstart'])\n\npl.fi
12100 67 75 72 65 28 35 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c gure(5)\not.plot.plot1D_mat(a,b,
12120 47 73 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 73 74 61 62 69 6c 69 7a Gss,'OT.matrix.Sinkhorn.stabiliz
12140 65 64 27 29 5c 6e 5c 6e 23 25 25 20 53 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 6c 61 6d 62 64 3d 31 65 ed')\n\n#%%.Sinkhorn\n\nlambd=1e
12160 2d 31 31 5c 6e 47 73 73 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 65 70 73 -11\nGss=ot.bregman.sinkhorn_eps
12180 69 6c 6f 6e 5f 73 63 61 6c 69 6e 67 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 ilon_scaling(a,b,M,lambd,verbose
121a0 3d 54 72 75 65 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 35 29 5c 6e 6f 74 2e 70 6c 6f 74 2e =True)\n\npl.figure(5)\not.plot.
121c0 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 plot1D_mat(a,b,Gss,'OT.matrix.Si
121e0 6e 6b 68 6f 72 6e 20 73 74 61 62 69 6c 69 7a 65 64 27 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 nkhorn.stabilized')".......],...
12200 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 ....."outputs":.[],........"meta
12220 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 data":.{........."collapsed":.fa
12240 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 lse.......}.....}...],...."metad
12260 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 ata":.{....."kernelspec":.{.....
12280 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 .."display_name":."Python.2",...
122a0 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 ....."name":."python2",........"
122c0 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 language":."python".....},......
122e0 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 "language_info":.{......."mimety
12300 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 pe":."text/x-python",........"nb
12320 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 convert_exporter":."python",....
12340 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 ...."name":."python",........"fi
12360 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 le_extension":.".py",........"ve
12380 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e rsion":."2.7.12",........"pygmen
123a0 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 ts_lexer":."ipython2",........"c
123c0 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 odemirror_mode":.{........."vers
123e0 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 ion":.2,.........."name":."ipyth
12400 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 on".......}.....}...}.}PK.......
12420 00 86 7b 82 49 4f 22 f2 c8 74 0e 00 00 74 0e 00 00 2a 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c ..{.IO"..t...t...*...auto_exampl
12440 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 7b es/plot_OTDA_color_images.ipynb{
12460 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f ..."nbformat_minor":.0,...."nbfo
12480 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 rmat":.4,...."cells":.[.....{...
124a0 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 ...."execution_count":.null,....
124c0 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 ...."cell_type":."code",........
124e0 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 "source":.[........."%matplotlib
12500 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 .inline".......],........"output
12520 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 s":.[],........"metadata":.{....
12540 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a ....."collapsed":.false.......}.
12560 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a ....},......{......."source":.[.
12580 20 20 20 20 20 20 20 20 22 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ........"\n=====================
125a0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
125c0 3d 3d 3d 5c 6e 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 ===\nOT.for.domain.adaptation.wi
125e0 74 68 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 5c 6e 3d th.image.color.adaptation.[6]\n=
12600 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
12620 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 5c 6e 5b 36 5d 20 46 =======================\n\n[6].F
12640 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 erradans,.S.,.Papadakis,.N.,.Pey
12660 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e 20 52 re,.G.,.&.Aujol,.J..F..(2014)..R
12680 65 67 75 6c 61 72 69 7a 65 64 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e egularized.discrete.optimal.tran
126a0 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 sport..SIAM.Journal.on.Imaging.S
126c0 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 20 31 38 35 33 2d 31 38 38 32 2e 5c 6e 5c 6e 22 0a 20 ciences,.7(3),.1853-1882.\n\n"..
126e0 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 .....],........"cell_type":."mar
12700 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 kdown",........"metadata":.{}...
12720 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 ..},......{......."execution_cou
12740 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 nt":.null,........"cell_type":."
12760 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 code",........"source":.[.......
12780 20 20 22 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 73 63 .."import.numpy.as.np\nimport.sc
127a0 69 70 79 2e 6e 64 69 6d 61 67 65 20 61 73 20 73 70 69 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c ipy.ndimage.as.spi\nimport.matpl
127c0 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 5c 6e otlib.pylab.as.pl\nimport.ot\n\n
127e0 5c 6e 23 25 25 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 5c 6e 5c 6e 49 31 3d 73 70 69 2e 69 \n#%%.Loading.images\n\nI1=spi.i
12800 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 mread('../data/ocean_day.jpg').a
12820 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 2f 32 35 36 5c 6e 49 32 3d 73 70 69 2e 69 6d stype(np.float64)/256\nI2=spi.im
12840 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 27 29 read('../data/ocean_sunset.jpg')
12860 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 2f 32 35 36 5c 6e 5c 6e 23 25 25 20 50 .astype(np.float64)/256\n\n#%%.P
12880 6c 6f 74 20 69 6d 61 67 65 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 29 5c 6e 5c 6e 70 6c lot.images\n\npl.figure(1)\n\npl
128a0 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e .subplot(1,2,1)\npl.imshow(I1)\n
128c0 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f pl.title('Image.1')\n\npl.subplo
128e0 74 28 31 2c 32 2c 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 5c 6e 70 6c 2e 74 69 74 6c t(1,2,2)\npl.imshow(I2)\npl.titl
12900 65 28 27 49 6d 61 67 65 20 32 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 5c 6e 5c 6e 23 25 25 e('Image.2')\n\npl.show()\n\n#%%
12920 20 49 6d 61 67 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 61 6e 64 20 64 61 74 61 73 65 74 20 67 65 .Image.conversion.and.dataset.ge
12940 6e 65 72 61 74 69 6f 6e 5c 6e 5c 6e 64 65 66 20 69 6d 32 6d 61 74 28 49 29 3a 5c 6e 20 20 20 20 neration\n\ndef.im2mat(I):\n....
12960 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 \"\"\"Converts.and.image.to.matr
12980 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 5c 22 5c 22 5c 22 5c 6e 20 ix.(one.pixel.per.line)\"\"\"\n.
129a0 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 2a ...return.I.reshape((I.shape[0]*
129c0 49 2e 73 68 61 70 65 5b 31 5d 2c 49 2e 73 68 61 70 65 5b 32 5d 29 29 5c 6e 5c 6e 64 65 66 20 6d I.shape[1],I.shape[2]))\n\ndef.m
129e0 61 74 32 69 6d 28 58 2c 73 68 61 70 65 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 at2im(X,shape):\n....\"\"\"Conve
12a00 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 65 5c 22 5c rts.back.a.matrix.to.an.image\"\
12a20 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 29 "\"\n....return.X.reshape(shape)
12a40 5c 6e 5c 6e 58 31 3d 69 6d 32 6d 61 74 28 49 31 29 5c 6e 58 32 3d 69 6d 32 6d 61 74 28 49 32 29 \n\nX1=im2mat(I1)\nX2=im2mat(I2)
12a60 5c 6e 5c 6e 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 5c 6e 6e 62 3d 31 30 30 30 5c \n\n#.training.samples\nnb=1000\
12a80 6e 69 64 78 31 3d 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 nidx1=np.random.randint(X1.shape
12aa0 5b 30 5d 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 69 64 78 32 3d 6e 70 2e 72 61 6e 64 6f 6d 2e [0],size=(nb,))\nidx2=np.random.
12ac0 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 5c randint(X2.shape[0],size=(nb,))\
12ae0 6e 5c 6e 78 73 3d 58 31 5b 69 64 78 31 2c 3a 5d 5c 6e 78 74 3d 58 32 5b 69 64 78 32 2c 3a 5d 5c n\nxs=X1[idx1,:]\nxt=X2[idx2,:]\
12b00 6e 5c 6e 23 25 25 20 50 6c 6f 74 20 69 6d 61 67 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c n\n#%%.Plot.image.distributions\
12b20 6e 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 35 29 29 5c 6e 5c 6e 70 6c 2e 73 n\n\npl.figure(2,(10,5))\n\npl.s
12b40 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 ubplot(1,2,1)\npl.scatter(xs[:,0
12b60 5d 2c 78 73 5b 3a 2c 32 5d 2c 63 3d 78 73 29 5c 6e 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c ],xs[:,2],c=xs)\npl.axis([0,1,0,
12b80 31 5d 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 1])\npl.xlabel('Red')\npl.ylabel
12ba0 28 27 42 6c 75 65 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c ('Blue')\npl.title('Image.1')\n\
12bc0 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 32 29 5c 6e 23 70 6c 2e 69 6d 73 68 6f 77 28 49 npl.subplot(1,2,2)\n#pl.imshow(I
12be0 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 32 5d 2c 63 2)\npl.scatter(xt[:,0],xt[:,2],c
12c00 3d 78 74 29 5c 6e 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 5c 6e 70 6c 2e 78 6c 61 =xt)\npl.axis([0,1,0,1])\npl.xla
12c20 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 5c 6e 70 bel('Red')\npl.ylabel('Blue')\np
12c40 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 5c l.title('Image.2')\n\npl.show()\
12c60 6e 5c 6e 5c 6e 5c 6e 23 25 25 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 62 65 74 n\n\n\n#%%.domain.adaptation.bet
12c80 77 65 65 6e 20 69 6d 61 67 65 73 5c 6e 5c 6e 23 20 4c 50 20 70 72 6f 62 6c 65 6d 5c 6e 64 61 5f ween.images\n\n#.LP.problem\nda_
12ca0 65 6d 64 3d 6f 74 2e 64 61 2e 4f 54 44 41 28 29 20 20 20 20 20 23 20 69 6e 69 74 20 63 6c 61 73 emd=ot.da.OTDA().....#.init.clas
12cc0 73 5c 6e 64 61 5f 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 29 20 20 20 20 20 20 20 23 20 66 69 74 s\nda_emd.fit(xs,xt).......#.fit
12ce0 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e 23 20 73 69 6e 6b 68 6f 72 6e 20 72 .distributions\n\n\n#.sinkhorn.r
12d00 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 6c 61 6d 62 64 3d 31 65 2d 31 5c 6e 64 61 5f 65 6e egularization\nlambd=1e-1\nda_en
12d20 74 72 6f 70 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 5c 6e 64 61 5f 65 trop=ot.da.OTDA_sinkhorn()\nda_e
12d40 6e 74 72 6f 70 2e 66 69 74 28 78 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 5c 6e 5c 6e 5c 6e ntrop.fit(xs,xt,reg=lambd)\n\n\n
12d60 5c 6e 23 25 25 20 70 72 65 64 69 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 6d 61 67 65 73 20 \n#%%.prediction.between.images.
12d80 28 75 73 69 6e 67 20 6f 75 74 20 6f 66 20 73 61 6d 70 6c 65 20 70 72 65 64 69 63 74 69 6f 6e 20 (using.out.of.sample.prediction.
12da0 61 73 20 69 6e 20 5b 36 5d 29 5c 6e 5c 6e 58 31 74 3d 64 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 as.in.[6])\n\nX1t=da_emd.predict
12dc0 28 58 31 29 5c 6e 58 32 74 3d 64 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 28 58 32 2c 2d 31 29 5c (X1)\nX2t=da_emd.predict(X2,-1)\
12de0 6e 5c 6e 5c 6e 58 31 74 65 3d 64 61 5f 65 6e 74 72 6f 70 2e 70 72 65 64 69 63 74 28 58 31 29 5c n\n\nX1te=da_entrop.predict(X1)\
12e00 6e 58 32 74 65 3d 64 61 5f 65 6e 74 72 6f 70 2e 70 72 65 64 69 63 74 28 58 32 2c 2d 31 29 5c 6e nX2te=da_entrop.predict(X2,-1)\n
12e20 5c 6e 5c 6e 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e \n\ndef.minmax(I):\n....return.n
12e40 70 2e 6d 69 6e 69 6d 75 6d 28 6e 70 2e 6d 61 78 69 6d 75 6d 28 49 2c 30 29 2c 31 29 5c 6e 5c 6e p.minimum(np.maximum(I,0),1)\n\n
12e60 49 31 74 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 2c 49 31 2e 73 68 61 70 65 29 29 I1t=minmax(mat2im(X1t,I1.shape))
12e80 5c 6e 49 32 74 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 32 74 2c 49 32 2e 73 68 61 70 65 \nI2t=minmax(mat2im(X2t,I2.shape
12ea0 29 29 5c 6e 5c 6e 49 31 74 65 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 65 2c 49 31 ))\n\nI1te=minmax(mat2im(X1te,I1
12ec0 2e 73 68 61 70 65 29 29 5c 6e 49 32 74 65 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 32 74 .shape))\nI2te=minmax(mat2im(X2t
12ee0 65 2c 49 32 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 61 6c 6c 20 69 6d 61 e,I2.shape))\n\n#%%.plot.all.ima
12f00 67 65 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 38 29 29 5c 6e 5c 6e 70 6c ges\n\npl.figure(2,(10,8))\n\npl
12f20 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 5c 6e 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 .subplot(2,3,1)\n\npl.imshow(I1)
12f40 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 \npl.title('Image.1')\n\npl.subp
12f60 6c 6f 74 28 32 2c 33 2c 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 29 5c 6e 70 6c 2e 74 lot(2,3,2)\npl.imshow(I1t)\npl.t
12f80 69 74 6c 65 28 27 49 6d 61 67 65 20 31 20 41 64 61 70 74 27 29 5c 6e 5c 6e 5c 6e 70 6c 2e 73 75 itle('Image.1.Adapt')\n\n\npl.su
12fa0 62 70 6c 6f 74 28 32 2c 33 2c 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 65 29 5c 6e 70 bplot(2,3,3)\npl.imshow(I1te)\np
12fc0 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 20 41 64 61 70 74 20 28 72 65 67 29 27 29 5c 6e l.title('Image.1.Adapt.(reg)')\n
12fe0 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 5c 6e 5c 6e 70 6c 2e 69 6d 73 68 6f 77 \npl.subplot(2,3,4)\n\npl.imshow
13000 28 49 32 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 5c 6e 5c 6e 70 6c 2e (I2)\npl.title('Image.2')\n\npl.
13020 73 75 62 70 6c 6f 74 28 32 2c 33 2c 35 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 29 5c 6e subplot(2,3,5)\npl.imshow(I2t)\n
13040 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 20 41 64 61 70 74 27 29 5c 6e 5c 6e 5c 6e 70 pl.title('Image.2.Adapt')\n\n\np
13060 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 36 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 65 l.subplot(2,3,6)\npl.imshow(I2te
13080 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 20 41 64 61 70 74 20 28 72 65 67 29 )\npl.title('Image.2.Adapt.(reg)
130a0 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 ')\n\npl.show()".......],.......
130c0 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 ."outputs":.[],........"metadata
130e0 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a ":.{........."collapsed":.false.
13100 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 ......}.....}...],...."metadata"
13120 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 :.{....."kernelspec":.{......."d
13140 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 isplay_name":."Python.2",.......
13160 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 ."name":."python2",........"lang
13180 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e uage":."python".....},......"lan
131a0 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a guage_info":.{......."mimetype":
131c0 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 ."text/x-python",........"nbconv
131e0 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 ert_exporter":."python",........
13200 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 "name":."python",........"file_e
13220 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f xtension":.".py",........"versio
13240 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c n":."2.7.12",........"pygments_l
13260 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d exer":."ipython2",........"codem
13280 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 irror_mode":.{........."version"
132a0 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a :.2,.........."name":."ipython".
132c0 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 d7 7b 82 ......}.....}...}.}PK.........{.
132e0 49 c4 9e 28 9b ea 11 00 00 ea 11 00 00 32 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 I..(.........2...auto_examples/p
13300 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 69 70 lot_OTDA_mapping_color_images.ip
13320 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 ynb{..."nbformat_minor":.0,...."
13340 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 nbformat":.4,...."cells":.[.....
13360 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c {......."execution_count":.null,
13380 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 ........"cell_type":."code",....
133a0 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f ...."source":.[........."%matplo
133c0 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 tlib.inline".......],........"ou
133e0 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b tputs":.[],........"metadata":.{
13400 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 ........."collapsed":.false.....
13420 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 ..}.....},......{......."source"
13440 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d :.[........."\n=================
13460 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
13480 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
134a0 3d 3d 3d 5c 6e 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 ===\nOT.for.domain.adaptation.wi
134c0 74 68 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 20 77 69 th.image.color.adaptation.[6].wi
134e0 74 68 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 5b 38 5d 5c 6e 3d 3d 3d 3d 3d th.mapping.estimation.[8]\n=====
13500 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
13520 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
13540 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 5c 6e 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 ===============\n\n[6].Ferradans
13560 2c 20 53 2e 2c 20 50 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 ,.S.,.Papadakis,.N.,.Peyre,.G.,.
13580 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e 20 52 65 67 75 6c 61 72 69 7a &.Aujol,.J..F..(2014)..Regulariz
135a0 65 64 5c 6e 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f ed\n....discrete.optimal.transpo
135c0 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 65 rt..SIAM.Journal.on.Imaging.Scie
135e0 6e 63 65 73 2c 20 37 28 33 29 2c 20 31 38 35 33 2d 31 38 38 32 2e 5c 6e 5b 38 5d 20 4d 2e 20 50 nces,.7(3),.1853-1882.\n[8].M..P
13600 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e 20 46 6c 61 6d 61 72 79 2c 20 41 2e errot,.N..Courty,.R..Flamary,.A.
13620 20 48 61 62 72 61 72 64 2c 20 5c 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 .Habrard,.\"Mapping.estimation.f
13640 6f 72 5c 6e 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f or\n....discrete.optimal.transpo
13660 72 74 5c 22 2c 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 50 72 6f 63 65 73 73 rt\",.Neural.Information.Process
13680 69 6e 67 20 53 79 73 74 65 6d 73 20 28 4e 49 50 53 29 2c 20 32 30 31 36 2e 5c 6e 5c 6e 5c 6e 22 ing.Systems.(NIPS),.2016.\n\n\n"
136a0 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d .......],........"cell_type":."m
136c0 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a arkdown",........"metadata":.{}.
136e0 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 ....},......{......."execution_c
13700 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a ount":.null,........"cell_type":
13720 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ."code",........"source":.[.....
13740 20 20 20 20 22 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 ...."import.numpy.as.np\nimport.
13760 73 63 69 70 79 2e 6e 64 69 6d 61 67 65 20 61 73 20 73 70 69 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 scipy.ndimage.as.spi\nimport.mat
13780 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e plotlib.pylab.as.pl\nimport.ot\n
137a0 5c 6e 5c 6e 23 25 25 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 5c 6e 5c 6e 49 31 3d 73 70 69 \n\n#%%.Loading.images\n\nI1=spi
137c0 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 .imread('../data/ocean_day.jpg')
137e0 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 2f 32 35 36 5c 6e 49 32 3d 73 70 69 2e .astype(np.float64)/256\nI2=spi.
13800 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 imread('../data/ocean_sunset.jpg
13820 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 2f 32 35 36 5c 6e 5c 6e 23 25 25 ').astype(np.float64)/256\n\n#%%
13840 20 50 6c 6f 74 20 69 6d 61 67 65 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 29 5c 6e 5c 6e .Plot.images\n\npl.figure(1)\n\n
13860 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 pl.subplot(1,2,1)\npl.imshow(I1)
13880 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 \npl.title('Image.1')\n\npl.subp
138a0 6c 6f 74 28 31 2c 32 2c 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 5c 6e 70 6c 2e 74 69 lot(1,2,2)\npl.imshow(I2)\npl.ti
138c0 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 5c 6e 5c 6e 23 tle('Image.2')\n\npl.show()\n\n#
138e0 25 25 20 49 6d 61 67 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 61 6e 64 20 64 61 74 61 73 65 74 20 %%.Image.conversion.and.dataset.
13900 67 65 6e 65 72 61 74 69 6f 6e 5c 6e 5c 6e 64 65 66 20 69 6d 32 6d 61 74 28 49 29 3a 5c 6e 20 20 generation\n\ndef.im2mat(I):\n..
13920 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 ..\"\"\"Converts.and.image.to.ma
13940 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 5c 22 5c 22 5c 22 5c trix.(one.pixel.per.line)\"\"\"\
13960 6e 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 n....return.I.reshape((I.shape[0
13980 5d 2a 49 2e 73 68 61 70 65 5b 31 5d 2c 49 2e 73 68 61 70 65 5b 32 5d 29 29 5c 6e 5c 6e 64 65 66 ]*I.shape[1],I.shape[2]))\n\ndef
139a0 20 6d 61 74 32 69 6d 28 58 2c 73 68 61 70 65 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e .mat2im(X,shape):\n....\"\"\"Con
139c0 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 65 5c verts.back.a.matrix.to.an.image\
139e0 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 61 70 65 28 73 68 61 70 "\"\"\n....return.X.reshape(shap
13a00 65 29 5c 6e 5c 6e 58 31 3d 69 6d 32 6d 61 74 28 49 31 29 5c 6e 58 32 3d 69 6d 32 6d 61 74 28 49 e)\n\nX1=im2mat(I1)\nX2=im2mat(I
13a20 32 29 5c 6e 5c 6e 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 5c 6e 6e 62 3d 31 30 30 2)\n\n#.training.samples\nnb=100
13a40 30 5c 6e 69 64 78 31 3d 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 0\nidx1=np.random.randint(X1.sha
13a60 70 65 5b 30 5d 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 69 64 78 32 3d 6e 70 2e 72 61 6e 64 6f pe[0],size=(nb,))\nidx2=np.rando
13a80 6d 2e 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 73 69 7a 65 3d 28 6e 62 2c 29 m.randint(X2.shape[0],size=(nb,)
13aa0 29 5c 6e 5c 6e 78 73 3d 58 31 5b 69 64 78 31 2c 3a 5d 5c 6e 78 74 3d 58 32 5b 69 64 78 32 2c 3a )\n\nxs=X1[idx1,:]\nxt=X2[idx2,:
13ac0 5d 5c 6e 5c 6e 23 25 25 20 50 6c 6f 74 20 69 6d 61 67 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e ]\n\n#%%.Plot.image.distribution
13ae0 73 5c 6e 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 35 29 29 5c 6e 5c 6e 70 6c s\n\n\npl.figure(2,(10,5))\n\npl
13b00 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a .subplot(1,2,1)\npl.scatter(xs[:
13b20 2c 30 5d 2c 78 73 5b 3a 2c 32 5d 2c 63 3d 78 73 29 5c 6e 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c ,0],xs[:,2],c=xs)\npl.axis([0,1,
13b40 30 2c 31 5d 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 0,1])\npl.xlabel('Red')\npl.ylab
13b60 65 6c 28 27 42 6c 75 65 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c el('Blue')\npl.title('Image.1')\
13b80 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 32 29 5c 6e 23 70 6c 2e 69 6d 73 68 6f 77 n\npl.subplot(1,2,2)\n#pl.imshow
13ba0 28 49 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 32 5d (I2)\npl.scatter(xt[:,0],xt[:,2]
13bc0 2c 63 3d 78 74 29 5c 6e 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 5c 6e 70 6c 2e 78 ,c=xt)\npl.axis([0,1,0,1])\npl.x
13be0 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 5c label('Red')\npl.ylabel('Blue')\
13c00 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 npl.title('Image.2')\n\npl.show(
13c20 29 5c 6e 5c 6e 5c 6e 5c 6e 23 25 25 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 62 )\n\n\n\n#%%.domain.adaptation.b
13c40 65 74 77 65 65 6e 20 69 6d 61 67 65 73 5c 6e 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 5c 6e 20 etween.images\ndef.minmax(I):\n.
13c60 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 6d 69 6e 69 6d 75 6d 28 6e 70 2e 6d 61 78 69 6d 75 6d 28 ...return.np.minimum(np.maximum(
13c80 49 2c 30 29 2c 31 29 5c 6e 23 20 4c 50 20 70 72 6f 62 6c 65 6d 5c 6e 64 61 5f 65 6d 64 3d 6f 74 I,0),1)\n#.LP.problem\nda_emd=ot
13ca0 2e 64 61 2e 4f 54 44 41 28 29 20 20 20 20 20 23 20 69 6e 69 74 20 63 6c 61 73 73 5c 6e 64 61 5f .da.OTDA().....#.init.class\nda_
13cc0 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 29 20 20 20 20 20 20 20 23 20 66 69 74 20 64 69 73 74 72 emd.fit(xs,xt).......#.fit.distr
13ce0 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 58 31 74 3d 64 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 28 58 ibutions\n\nX1t=da_emd.predict(X
13d00 31 29 20 20 23 20 6f 75 74 20 6f 66 20 73 61 6d 70 6c 65 5c 6e 49 31 74 3d 6d 69 6e 6d 61 78 28 1)..#.out.of.sample\nI1t=minmax(
13d20 6d 61 74 32 69 6d 28 58 31 74 2c 49 31 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 23 20 73 69 6e 6b 68 mat2im(X1t,I1.shape))\n\n#.sinkh
13d40 6f 72 6e 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 6c 61 6d 62 64 3d 31 65 2d 31 5c 6e orn.regularization\nlambd=1e-1\n
13d60 64 61 5f 65 6e 74 72 6f 70 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 5c da_entrop=ot.da.OTDA_sinkhorn()\
13d80 6e 64 61 5f 65 6e 74 72 6f 70 2e 66 69 74 28 78 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 5c nda_entrop.fit(xs,xt,reg=lambd)\
13da0 6e 5c 6e 58 31 74 65 3d 64 61 5f 65 6e 74 72 6f 70 2e 70 72 65 64 69 63 74 28 58 31 29 5c 6e 49 n\nX1te=da_entrop.predict(X1)\nI
13dc0 31 74 65 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 65 2c 49 31 2e 73 68 61 70 65 29 1te=minmax(mat2im(X1te,I1.shape)
13de0 29 5c 6e 5c 6e 23 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e )\n\n#.linear.mapping.estimation
13e00 5c 6e 65 74 61 3d 31 65 2d 38 20 20 20 23 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 6c 61 72 \neta=1e-8...#.quadratic.regular
13e20 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 73 69 6f 6e 5c 6e 6d 75 3d 31 65 30 20 20 ization.for.regression\nmu=1e0..
13e40 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 4f 54 20 6c 69 6e 65 61 72 20 74 65 72 ...#.weight.of.the.OT.linear.ter
13e60 6d 5c 6e 62 69 61 73 3d 54 72 75 65 20 20 23 20 65 73 74 69 6d 61 74 65 20 61 20 62 69 61 73 5c m\nbias=True..#.estimate.a.bias\
13e80 6e 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 6e 67 n\not_mapping=ot.da.OTDA_mapping
13ea0 5f 6c 69 6e 65 61 72 28 29 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 2e 66 69 74 28 78 73 2c 78 74 2c _linear()\not_mapping.fit(xs,xt,
13ec0 6d 75 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d mu=mu,eta=eta,bias=bias,numIterm
13ee0 61 78 20 3d 20 32 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 58 31 74 6c 3d 6f 74 ax.=.20,verbose=True)\n\nX1tl=ot
13f00 5f 6d 61 70 70 69 6e 67 2e 70 72 65 64 69 63 74 28 58 31 29 20 23 20 75 73 65 20 74 68 65 20 65 _mapping.predict(X1).#.use.the.e
13f20 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 5c 6e 49 31 74 6c 3d 6d 69 6e 6d 61 78 28 6d 61 stimated.mapping\nI1tl=minmax(ma
13f40 74 32 69 6d 28 58 31 74 6c 2c 49 31 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 23 20 6e 6f 6e 6c 69 6e t2im(X1tl,I1.shape))\n\n#.nonlin
13f60 65 61 72 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 5c 6e 65 74 61 3d 31 65 2d 32 ear.mapping.estimation\neta=1e-2
13f80 20 20 20 23 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 66 6f ...#.quadratic.regularization.fo
13fa0 72 20 72 65 67 72 65 73 73 69 6f 6e 5c 6e 6d 75 3d 31 65 30 20 20 20 20 20 23 20 77 65 69 67 68 r.regression\nmu=1e0.....#.weigh
13fc0 74 20 6f 66 20 74 68 65 20 4f 54 20 6c 69 6e 65 61 72 20 74 65 72 6d 5c 6e 62 69 61 73 3d 46 61 t.of.the.OT.linear.term\nbias=Fa
13fe0 6c 73 65 20 20 23 20 65 73 74 69 6d 61 74 65 20 61 20 62 69 61 73 5c 6e 73 69 67 6d 61 3d 31 20 lse..#.estimate.a.bias\nsigma=1.
14000 20 20 20 23 20 73 69 67 6d 61 20 62 61 6e 64 77 69 64 74 68 20 66 6f 74 20 67 61 75 73 73 69 61 ...#.sigma.bandwidth.fot.gaussia
14020 6e 20 6b 65 72 6e 65 6c 5c 6e 5c 6e 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 3d n.kernel\n\n\not_mapping_kernel=
14040 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 28 29 5c 6e 6f 74 5f ot.da.OTDA_mapping_kernel()\not_
14060 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 66 69 74 28 78 73 2c 78 74 2c 6d 75 3d 6d 75 2c 65 mapping_kernel.fit(xs,xt,mu=mu,e
14080 74 61 3d 65 74 61 2c 73 69 67 6d 61 3d 73 69 67 6d 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d ta=eta,sigma=sigma,bias=bias,num
140a0 49 74 65 72 6d 61 78 20 3d 20 31 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 58 31 Itermax.=.10,verbose=True)\n\nX1
140c0 74 6e 3d 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 70 72 65 64 69 63 74 28 58 31 29 tn=ot_mapping_kernel.predict(X1)
140e0 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 5c 6e 49 31 .#.use.the.estimated.mapping\nI1
14100 74 6e 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6e 2c 49 31 2e 73 68 61 70 65 29 29 tn=minmax(mat2im(X1tn,I1.shape))
14120 5c 6e 23 25 25 20 70 6c 6f 74 20 69 6d 61 67 65 73 5c 6e 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 \n#%%.plot.images\n\n\npl.figure
14140 28 32 2c 28 31 30 2c 38 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 5c (2,(10,8))\n\npl.subplot(2,3,1)\
14160 6e 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 n\npl.imshow(I1)\npl.title('Im..
14180 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 32 29 5c 6e 5c 6e 70 6c 2e 69 1')\n\npl.subplot(2,3,2)\n\npl.i
141a0 6d 73 68 6f 77 28 49 32 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 32 27 29 5c 6e 5c 6e mshow(I2)\npl.title('Im..2')\n\n
141c0 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 \npl.subplot(2,3,3)\npl.imshow(I
141e0 31 74 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 20 49 6e 74 65 72 70 20 4c 50 27 29 1t)\npl.title('Im..1.Interp.LP')
14200 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 \n\npl.subplot(2,3,4)\npl.imshow
14220 28 49 31 74 65 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 20 49 6e 74 65 72 70 20 45 (I1te)\npl.title('Im..1.Interp.E
14240 6e 74 72 6f 70 27 29 5c 6e 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 35 29 5c 6e ntrop')\n\n\npl.subplot(2,3,5)\n
14260 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 6c 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 pl.imshow(I1tl)\npl.title('Im..1
14280 20 4c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 .Linear.mapping')\n\npl.subplot(
142a0 32 2c 33 2c 36 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 6e 29 5c 6e 70 6c 2e 74 69 74 6c 2,3,6)\npl.imshow(I1tn)\npl.titl
142c0 65 28 27 49 6d 2e 20 31 20 6e 6f 6e 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 27 29 5c 6e 5c 6e e('Im..1.nonlinear.mapping')\n\n
142e0 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 pl.show()".......],........"outp
14300 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 uts":.[],........"metadata":.{..
14320 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 ......."collapsed":.false.......
14340 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 }.....}...],...."metadata":.{...
14360 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 .."kernelspec":.{......."display
14380 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 _name":."Python.2",........"name
143a0 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a ":."python2",........"language":
143c0 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f ."python".....},......"language_
143e0 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 info":.{......."mimetype":."text
14400 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 /x-python",........"nbconvert_ex
14420 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 porter":."python",........"name"
14440 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 :."python",........"file_extensi
14460 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 on":.".py",........"version":."2
14480 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a .7.12",........"pygments_lexer":
144a0 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f ."ipython2",........"codemirror_
144c0 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a mode":.{........."version":.2,..
144e0 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 ........"name":."ipython".......
14500 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 34 87 1e 4b ea e0 aa 32 e7 }.....}...}.}PK........4..K...2.
14520 17 00 00 e7 17 00 00 2a 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 .......*...auto_examples/plot_ot
14540 64 61 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d da_color_images.ipynb{..."nbform
14560 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 at_minor":.0,...."nbformat":.4,.
14580 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 ..."cells":.[.....{......."execu
145a0 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f tion_count":.null,........"cell_
145c0 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 type":."code",........"source":.
145e0 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 [........."%matplotlib.inline"..
14600 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 .....],........"outputs":.[],...
14620 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c ....."metadata":.{........."coll
14640 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 apsed":.false.......}.....},....
14660 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c ..{......."source":.[........."\
14680 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d n===============================
146a0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 4f 54 20 66 6f =========================\nOT.fo
146c0 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 74 68 20 69 6d 61 67 65 20 63 r.domain.adaptation.with.image.c
146e0 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d olor.adaptation.[6]\n===========
14700 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
14720 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 70 72 =============\n\nThis.example.pr
14740 65 73 65 6e 74 73 20 61 20 77 61 79 20 6f 66 20 74 72 61 6e 73 66 65 72 72 69 6e 67 20 63 6f 6c esents.a.way.of.transferring.col
14760 6f 72 73 20 62 65 74 77 65 65 6e 20 74 77 6f 20 69 6d 61 67 65 5c 6e 77 69 74 68 20 4f 70 74 69 ors.between.two.image\nwith.Opti
14780 6d 61 6c 20 54 72 61 6e 73 70 6f 72 74 20 61 73 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e 20 5b mal.Transport.as.introduced.in.[
147a0 36 5d 5c 6e 5c 6e 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 64 61 6b 6]\n\n[6].Ferradans,.S.,.Papadak
147c0 69 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 is,.N.,.Peyre,.G.,.&.Aujol,.J..F
147e0 2e 20 28 32 30 31 34 29 2e 5c 6e 52 65 67 75 6c 61 72 69 7a 65 64 20 64 69 73 63 72 65 74 65 20 ..(2014).\nRegularized.discrete.
14800 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 5c 6e 53 49 41 4d 20 4a 6f 75 72 6e 61 6c optimal.transport.\nSIAM.Journal
14820 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 20 31 38 35 33 .on.Imaging.Sciences,.7(3),.1853
14840 2d 31 38 38 32 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c -1882.\n\n".......],........"cel
14860 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 l_type":."markdown",........"met
14880 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 adata":.{}.....},......{......."
148a0 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 execution_count":.null,........"
148c0 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 cell_type":."code",........"sour
148e0 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 ce":.[........."#.Authors:.Remi.
14900 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c Flamary.<remi.flamary@unice.fr>\
14920 6e 23 20 20 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 n#..........Stanislas.Chambon.<s
14940 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 20 4c 69 63 tan.chambon@gmail.com>\n#\n#.Lic
14960 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 ense:.MIT.License\n\nimport.nump
14980 79 20 61 73 20 6e 70 5c 6e 66 72 6f 6d 20 73 63 69 70 79 20 69 6d 70 6f 72 74 20 6e 64 69 6d 61 y.as.np\nfrom.scipy.import.ndima
149a0 67 65 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 ge\nimport.matplotlib.pylab.as.p
149c0 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 5c 6e 5c 6e 72 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e l\nimport.ot\n\n\nr.=.np.random.
149e0 52 61 6e 64 6f 6d 53 74 61 74 65 28 34 32 29 5c 6e 5c 6e 5c 6e 64 65 66 20 69 6d 32 6d 61 74 28 RandomState(42)\n\n\ndef.im2mat(
14a00 49 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 I):\n....\"\"\"Converts.and.imag
14a20 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 e.to.matrix.(one.pixel.per.line)
14a40 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e \"\"\"\n....return.I.reshape((I.
14a60 73 68 61 70 65 5b 30 5d 20 2a 20 49 2e 73 68 61 70 65 5b 31 5d 2c 20 49 2e 73 68 61 70 65 5b 32 shape[0].*.I.shape[1],.I.shape[2
14a80 5d 29 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 20 73 68 61 70 65 29 3a 5c 6e ]))\n\n\ndef.mat2im(X,.shape):\n
14aa0 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 ....\"\"\"Converts.back.a.matrix
14ac0 20 74 6f 20 61 6e 20 69 6d 61 67 65 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 58 .to.an.image\"\"\"\n....return.X
14ae0 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d 69 6e 6d 61 78 28 .reshape(shape)\n\n\ndef.minmax(
14b00 49 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 I):\n....return.np.clip(I,.0,.1)
14b20 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c ".......],........"outputs":.[],
14b40 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 ........"metadata":.{........."c
14b60 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 ollapsed":.false.......}.....},.
14b80 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 .....{......."source":.[........
14ba0 20 22 67 65 6e 65 72 61 74 65 20 64 61 74 61 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ."generate.data\n###############
14bc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
14be0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e ##############################\n
14c00 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a \n".......],........"cell_type":
14c20 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 ."markdown",........"metadata":.
14c40 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f {}.....},......{......."executio
14c60 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 n_count":.null,........"cell_typ
14c80 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 e":."code",........"source":.[..
14ca0 20 20 20 20 20 20 20 22 23 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 5c 6e 49 31 20 3d 20 6e ......."#.Loading.images\nI1.=.n
14cc0 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 dimage.imread('../data/ocean_day
14ce0 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 5c .jpg').astype(np.float64)./.256\
14d00 6e 49 32 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 nI2.=.ndimage.imread('../data/oc
14d20 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 ean_sunset.jpg').astype(np.float
14d40 36 34 29 20 2f 20 32 35 36 5c 6e 5c 6e 58 31 20 3d 20 69 6d 32 6d 61 74 28 49 31 29 5c 6e 58 32 64)./.256\n\nX1.=.im2mat(I1)\nX2
14d60 20 3d 20 69 6d 32 6d 61 74 28 49 32 29 5c 6e 5c 6e 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 .=.im2mat(I2)\n\n#.training.samp
14d80 6c 65 73 5c 6e 6e 62 20 3d 20 31 30 30 30 5c 6e 69 64 78 31 20 3d 20 72 2e 72 61 6e 64 69 6e 74 les\nnb.=.1000\nidx1.=.r.randint
14da0 28 58 31 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 69 64 78 32 20 (X1.shape[0],.size=(nb,))\nidx2.
14dc0 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e =.r.randint(X2.shape[0],.size=(n
14de0 62 2c 29 29 5c 6e 5c 6e 58 73 20 3d 20 58 31 5b 69 64 78 31 2c 20 3a 5d 5c 6e 58 74 20 3d 20 58 b,))\n\nXs.=.X1[idx1,.:]\nXt.=.X
14e00 32 5b 69 64 78 32 2c 20 3a 5d 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 2[idx2,.:]".......],........"out
14e20 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a puts":.[],........"metadata":.{.
14e40 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 ........"collapsed":.false......
14e60 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a .}.....},......{......."source":
14e80 20 5b 0a 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 6e 74 69 61 74 65 20 74 68 65 20 64 69 66 66 .[........."Instantiate.the.diff
14ea0 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c 67 6f 72 69 74 68 6d 73 20 61 6e 64 20 66 erent.transport.algorithms.and.f
14ec0 69 74 20 74 68 65 6d 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 it.them\n#######################
14ee0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
14f00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 ######################\n\n".....
14f20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f ..],........"cell_type":."markdo
14f40 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d wn",........"metadata":.{}.....}
14f60 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 ,......{......."execution_count"
14f80 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 :.null,........"cell_type":."cod
14fa0 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 e",........"source":.[........."
14fc0 23 20 45 4d 44 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 65 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 #.EMDTransport\not_emd.=.ot.da.E
14fe0 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e 6f 74 5f 65 6d 64 2e 66 69 74 28 58 73 3d 58 73 2c MDTransport()\not_emd.fit(Xs=Xs,
15000 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 5c 6e .Xt=Xt)\n\n#.SinkhornTransport\n
15020 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e ot_sinkhorn.=.ot.da.SinkhornTran
15040 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 sport(reg_e=1e-1)\not_sinkhorn.f
15060 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 70 72 65 64 69 63 74 69 6f 6e it(Xs=Xs,.Xt=Xt)\n\n#.prediction
15080 20 62 65 74 77 65 65 6e 20 69 6d 61 67 65 73 20 28 75 73 69 6e 67 20 6f 75 74 20 6f 66 20 73 61 .between.images.(using.out.of.sa
150a0 6d 70 6c 65 20 70 72 65 64 69 63 74 69 6f 6e 20 61 73 20 69 6e 20 5b 36 5d 29 5c 6e 74 72 61 6e mple.prediction.as.in.[6])\ntran
150c0 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d sp_Xs_emd.=.ot_emd.transform(Xs=
150e0 58 31 29 5c 6e 74 72 61 6e 73 70 5f 58 74 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 69 6e 76 65 X1)\ntransp_Xt_emd.=.ot_emd.inve
15100 72 73 65 5f 74 72 61 6e 73 66 6f 72 6d 28 58 74 3d 58 32 29 5c 6e 5c 6e 74 72 61 6e 73 70 5f 58 rse_transform(Xt=X2)\n\ntransp_X
15120 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 s_sinkhorn.=.ot_emd.transform(Xs
15140 3d 58 31 29 5c 6e 74 72 61 6e 73 70 5f 58 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 65 6d =X1)\ntransp_Xt_sinkhorn.=.ot_em
15160 64 2e 69 6e 76 65 72 73 65 5f 74 72 61 6e 73 66 6f 72 6d 28 58 74 3d 58 32 29 5c 6e 5c 6e 49 31 d.inverse_transform(Xt=X2)\n\nI1
15180 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 2c t.=.minmax(mat2im(transp_Xs_emd,
151a0 20 49 31 2e 73 68 61 70 65 29 29 5c 6e 49 32 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d .I1.shape))\nI2t.=.minmax(mat2im
151c0 28 74 72 61 6e 73 70 5f 58 74 5f 65 6d 64 2c 20 49 32 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 49 31 (transp_Xt_emd,.I2.shape))\n\nI1
151e0 74 65 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e te.=.minmax(mat2im(transp_Xs_sin
15200 6b 68 6f 72 6e 2c 20 49 31 2e 73 68 61 70 65 29 29 5c 6e 49 32 74 65 20 3d 20 6d 69 6e 6d 61 78 khorn,.I1.shape))\nI2te.=.minmax
15220 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 74 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 32 2e 73 (mat2im(transp_Xt_sinkhorn,.I2.s
15240 68 61 70 65 29 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 hape))".......],........"outputs
15260 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 ":.[],........"metadata":.{.....
15280 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 ...."collapsed":.false.......}..
152a0 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 ...},......{......."source":.[..
152c0 20 20 20 20 20 20 20 22 70 6c 6f 74 20 6f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 5c 6e 23 23 23 ......."plot.original.image\n###
152e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
15300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
15320 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 ##########\n\n".......],........
15340 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 "cell_type":."markdown",........
15360 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 "metadata":.{}.....},......{....
15380 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 ..."execution_count":.null,.....
153a0 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 ..."cell_type":."code",........"
153c0 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 31 2c source":.[........."pl.figure(1,
153e0 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 .figsize=(6.4,.3))\n\npl.subplot
15400 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e 70 6c 2e 61 78 69 (1,.2,.1)\npl.imshow(I1)\npl.axi
15420 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c s('off')\npl.title('Image.1')\n\
15440 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 npl.subplot(1,.2,.2)\npl.imshow(
15460 49 32 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 I2)\npl.axis('off')\npl.title('I
15480 6d 61 67 65 20 32 27 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 mage.2')".......],........"outpu
154a0 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 ts":.[],........"metadata":.{...
154c0 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d ......"collapsed":.false.......}
154e0 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b .....},......{......."source":.[
15500 0a 20 20 20 20 20 20 20 20 22 73 63 61 74 74 65 72 20 70 6c 6f 74 20 6f 66 20 63 6f 6c 6f 72 73 ........."scatter.plot.of.colors
15520 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 \n##############################
15540 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
15560 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 ###############\n\n".......],...
15580 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 ....."cell_type":."markdown",...
155a0 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 ....."metadata":.{}.....},......
155c0 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c {......."execution_count":.null,
155e0 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 ........"cell_type":."code",....
15600 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 ...."source":.[........."pl.figu
15620 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 5c 6e 70 6c 2e 73 75 re(2,.figsize=(6.4,.3))\n\npl.su
15640 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c bplot(1,.2,.1)\npl.scatter(Xs[:,
15660 20 30 5d 2c 20 58 73 5b 3a 2c 20 32 5d 2c 20 63 3d 58 73 29 5c 6e 70 6c 2e 61 78 69 73 28 5b 30 .0],.Xs[:,.2],.c=Xs)\npl.axis([0
15680 2c 20 31 2c 20 30 2c 20 31 5d 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 ,.1,.0,.1])\npl.xlabel('Red')\np
156a0 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 l.ylabel('Blue')\npl.title('Imag
156c0 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c e.1')\n\npl.subplot(1,.2,.2)\npl
156e0 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 32 5d 2c 20 63 3d 58 .scatter(Xt[:,.0],.Xt[:,.2],.c=X
15700 74 29 5c 6e 70 6c 2e 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 2c 20 31 5d 29 5c 6e 70 6c 2e 78 6c t)\npl.axis([0,.1,.0,.1])\npl.xl
15720 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 5c 6e abel('Red')\npl.ylabel('Blue')\n
15740 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 pl.title('Image.2')\npl.tight_la
15760 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 yout()".......],........"outputs
15780 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 ":.[],........"metadata":.{.....
157a0 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 ...."collapsed":.false.......}..
157c0 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 ...},......{......."source":.[..
157e0 20 20 20 20 20 20 20 22 70 6c 6f 74 20 6e 65 77 20 69 6d 61 67 65 73 5c 6e 23 23 23 23 23 23 23 ......."plot.new.images\n#######
15800 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
15820 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
15840 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c ######\n\n".......],........"cel
15860 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 l_type":."markdown",........"met
15880 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 adata":.{}.....},......{......."
158a0 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 execution_count":.null,........"
158c0 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 cell_type":."code",........"sour
158e0 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 69 67 ce":.[........."pl.figure(3,.fig
15900 73 69 7a 65 3d 28 38 2c 20 34 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c size=(8,.4))\n\npl.subplot(2,.3,
15920 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 .1)\npl.imshow(I1)\npl.axis('off
15940 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 ')\npl.title('Image.1')\n\npl.su
15960 62 70 6c 6f 74 28 32 2c 20 33 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 29 5c 6e bplot(2,.3,.2)\npl.imshow(I1t)\n
15980 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 pl.axis('off')\npl.title('Image.
159a0 31 20 41 64 61 70 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 33 29 1.Adapt')\n\npl.subplot(2,.3,.3)
159c0 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 65 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 \npl.imshow(I1te)\npl.axis('off'
159e0 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 20 41 64 61 70 74 20 28 72 65 67 29 )\npl.title('Image.1.Adapt.(reg)
15a00 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 34 29 5c 6e 70 6c 2e 69 6d ')\n\npl.subplot(2,.3,.4)\npl.im
15a20 73 68 6f 77 28 49 32 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 show(I2)\npl.axis('off')\npl.tit
15a40 6c 65 28 27 49 6d 61 67 65 20 32 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 le('Image.2')\n\npl.subplot(2,.3
15a60 2c 20 35 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f ,.5)\npl.imshow(I2t)\npl.axis('o
15a80 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 20 41 64 61 70 74 27 29 5c ff')\npl.title('Image.2.Adapt')\
15aa0 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 36 29 5c 6e 70 6c 2e 69 6d 73 68 6f n\npl.subplot(2,.3,.6)\npl.imsho
15ac0 77 28 49 32 74 65 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c w(I2te)\npl.axis('off')\npl.titl
15ae0 65 28 27 49 6d 61 67 65 20 32 20 41 64 61 70 74 20 28 72 65 67 29 27 29 5c 6e 70 6c 2e 74 69 67 e('Image.2.Adapt.(reg)')\npl.tig
15b00 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 ht_layout()\n\npl.show()".......
15b20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 ],........"outputs":.[],........
15b40 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 "metadata":.{........."collapsed
15b60 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 ":.false.......}.....}...],...."
15b80 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b metadata":.{....."kernelspec":.{
15ba0 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 ......."display_name":."Python.2
15bc0 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 ",........"name":."python2",....
15be0 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 ...."language":."python".....},.
15c00 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d ....."language_info":.{......."m
15c20 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 imetype":."text/x-python",......
15c40 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 .."nbconvert_exporter":."python"
15c60 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 ,........"name":."python",......
15c80 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 .."file_extension":.".py",......
15ca0 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 .."version":."2.7.12",........"p
15cc0 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 ygments_lexer":."ipython2",.....
15ce0 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 ..."codemirror_mode":.{.........
15d00 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 "version":.2,.........."name":."
15d20 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 01 02 ipython".......}.....}...}.}PK..
15d40 14 03 14 00 00 00 00 00 02 84 1e 4b 5d 81 39 dd bc 0c 00 00 bc 0c 00 00 1c 00 00 00 00 00 00 00 ...........K].9.................
15d60 00 00 00 00 b4 81 00 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 57 44 41 ..........auto_examples/plot_WDA
15d80 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 87 7b 82 49 fa 8c 13 06 e2 10 00 00 e2 10 .ipynbPK...........{.I..........
15da0 00 00 25 00 00 00 00 00 00 00 00 00 00 00 b4 81 f6 0c 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 ..%.................auto_example
15dc0 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 s/plot_OTDA_mapping.ipynbPK.....
15de0 00 00 00 00 00 2e 89 1e 4b b5 f1 d1 9b 8c 11 00 00 8c 11 00 00 24 00 00 00 00 00 00 00 00 00 00 ........K............$..........
15e00 00 b4 81 1b 1e 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 70 74 69 6d 5f .......auto_examples/plot_optim_
15e20 4f 54 72 65 67 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 76 7b 82 49 50 0d 0a 74 03 OTreg.ipynbPK..........v{.IP..t.
15e40 0e 00 00 03 0e 00 00 25 00 00 00 00 00 00 00 00 00 00 00 b4 81 e9 2f 00 00 61 75 74 6f 5f 65 78 .......%............../..auto_ex
15e60 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6c 61 73 73 65 73 2e 69 70 79 6e 62 50 4b amples/plot_OTDA_classes.ipynbPK
15e80 01 02 14 03 14 00 00 00 00 00 b7 86 1e 4b 6b 88 21 84 aa 1d 00 00 aa 1d 00 00 20 00 00 00 00 00 .............Kk.!...............
15ea0 00 00 00 00 00 00 b4 81 2f 3e 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f ......../>..auto_examples/plot_o
15ec0 74 64 61 5f 64 32 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 f8 88 1e 4b be 57 96 68 tda_d2.ipynbPK.............K.W.h
15ee0 4b 0e 00 00 4b 0e 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 b4 81 17 5c 00 00 61 75 74 6f 5f 65 K...K..................\..auto_e
15f00 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 31 44 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 xamples/plot_OT_1D.ipynbPK......
15f20 00 00 00 00 32 82 e3 4a 48 a2 ab 22 f5 14 00 00 f5 14 00 00 20 00 00 00 00 00 00 00 00 00 00 00 ....2..JH.."....................
15f40 b4 81 9e 6a 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 63 6f 6e 76 ...j..auto_examples/plot_OT_conv
15f60 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 0f 83 1e 4b 06 87 a7 1b 68 0f 00 00 68 0f .ipynbPK.............K....h...h.
15f80 00 00 26 00 00 00 00 00 00 00 00 00 00 00 b4 81 d1 7f 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 ..&.................auto_example
15fa0 73 2f 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 31 44 2e 69 70 79 6e 62 50 4b 01 02 14 03 s/plot_barycenter_1D.ipynbPK....
15fc0 14 00 00 00 00 00 9c 86 1e 4b f2 bc 11 4b 08 19 00 00 08 19 00 00 25 00 00 00 00 00 00 00 00 00 .........K...K........%.........
15fe0 00 00 b4 81 7d 8f 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f ....}...auto_examples/plot_otda_
16000 63 6c 61 73 73 65 73 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 0d 88 1e 4b c8 39 53 classes.ipynbPK.............K.9S
16020 c8 df 19 00 00 df 19 00 00 33 00 00 00 00 00 00 00 00 00 00 00 b4 81 c8 a8 00 00 61 75 74 6f 5f .........3.................auto_
16040 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 examples/plot_otda_mapping_color
16060 73 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 6a 7b 82 49 bb fd s_images.ipynbPK..........j{.I..
16080 13 71 39 0a 00 00 39 0a 00 00 2b 00 00 00 00 00 00 00 00 00 00 00 b4 81 f8 c2 00 00 61 75 74 6f .q9...9...+.................auto
160a0 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 6c 61 72 67 _examples/demo_OT_2D_sampleslarg
160c0 65 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 f6 83 1e 4b 31 52 a0 2f b3 0f 00 00 b3 e.ipynbPK.............K1R./.....
160e0 0f 00 00 24 00 00 00 00 00 00 00 00 00 00 00 b4 81 7a cd 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c ...$.............z...auto_exampl
16100 65 73 2f 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 73 5f 4c 32 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 es/plot_OT_L1_vs_L2.ipynbPK.....
16120 00 00 00 00 00 a7 85 1e 4b 1c bf a6 e3 bf 0a 00 00 bf 0a 00 00 26 00 00 00 00 00 00 00 00 00 00 ........K............&..........
16140 00 b4 81 6f dd 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 32 44 5f ...o...auto_examples/plot_OT_2D_
16160 73 61 6d 70 6c 65 73 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 75 7b 82 49 55 d4 67 samples.ipynbPK..........u{.IU.g
16180 d2 3c 0e 00 00 3c 0e 00 00 20 00 00 00 00 00 00 00 00 00 00 00 b4 81 72 e8 00 00 61 75 74 6f 5f .<...<.................r...auto_
161a0 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 32 44 2e 69 70 79 6e 62 50 4b 01 02 14 examples/plot_OTDA_2D.ipynbPK...
161c0 03 14 00 00 00 00 00 b8 86 1e 4b 22 97 a9 c7 5d 18 00 00 5d 18 00 00 25 00 00 00 00 00 00 00 00 ..........K"...]...]...%........
161e0 00 00 00 b4 81 ec f6 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 .........auto_examples/plot_otda
16200 5f 6d 61 70 70 69 6e 67 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 02 84 1e 4b ee 1f _mapping.ipynbPK.............K..
16220 11 06 c2 0a 00 00 c2 0a 00 00 24 00 00 00 00 00 00 00 00 00 00 00 b4 81 8c 0f 01 00 61 75 74 6f ..........$.................auto
16240 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 63 6f 6d 70 75 74 65 5f 65 6d 64 2e 69 70 79 6e 62 _examples/plot_compute_emd.ipynb
16260 50 4b 01 02 14 03 14 00 00 00 00 00 6a 7b 82 49 cd 14 1c 01 46 09 00 00 46 09 00 00 23 00 00 00 PK..........j{.I....F...F...#...
16280 00 00 00 00 00 00 00 00 b4 81 90 1a 01 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f ..............auto_examples/demo
162a0 5f 4f 54 5f 31 44 5f 74 65 73 74 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 86 7b 82 _OT_1D_test.ipynbPK...........{.
162c0 49 4f 22 f2 c8 74 0e 00 00 74 0e 00 00 2a 00 00 00 00 00 00 00 00 00 00 00 b4 81 17 24 01 00 61 IO"..t...t...*..............$..a
162e0 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6f 6c 6f 72 5f 69 6d 61 uto_examples/plot_OTDA_color_ima
16300 67 65 73 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 d7 7b 82 49 c4 9e 28 9b ea 11 00 ges.ipynbPK...........{.I..(....
16320 00 ea 11 00 00 32 00 00 00 00 00 00 00 00 00 00 00 b4 81 d3 32 01 00 61 75 74 6f 5f 65 78 61 6d .....2..............2..auto_exam
16340 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 5f 69 6d 61 ples/plot_OTDA_mapping_color_ima
16360 67 65 73 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 34 87 1e 4b ea e0 aa 32 e7 17 00 ges.ipynbPK..........4..K...2...
16380 00 e7 17 00 00 2a 00 00 00 00 00 00 00 00 00 00 00 b4 81 0d 45 01 00 61 75 74 6f 5f 65 78 61 6d .....*..............E..auto_exam
163a0 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 69 70 79 6e ples/plot_otda_color_images.ipyn
163c0 62 50 4b 05 06 00 00 00 00 14 00 14 00 85 06 00 00 3c 5d 01 00 00 00 bPK..............<]....