summaryrefslogtreecommitdiff
path: root/docs/source/auto_examples/auto_examples_jupyter.zip
blob: 901195a45eeec1df028494a084ffab195586dc5d (plain)
ofshex dumpascii
0000 50 4b 03 04 14 00 00 00 00 00 da 74 d9 4e b2 b7 a9 98 a6 0c 00 00 a6 0c 00 00 11 00 00 00 70 6c PK.........t.N................pl
0020 6f 74 5f 55 4f 54 5f 31 44 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 ot_UOT_1D.ipynb{..."cells":.[...
0040 20 20 7b 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 0a 20 ..{......."cell_type":."code",..
0060 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 0a 20 20 ....."execution_count":.null,...
0080 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 61 ...."metadata":.{........."colla
00a0 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 psed":.false.......},......."out
00c0 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 puts":.[],......."source":.[....
00e0 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".......
0100 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ].....},.....{......."cell_type"
0120 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 :."markdown",......."metadata":.
0140 7b 7d 2c 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":.[........."\
0160 6e 23 20 31 44 20 55 6e 62 61 6c 61 6e 63 65 64 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f n#.1D.Unbalanced.optimal.transpo
0180 72 74 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 rt\n\n\nThis.example.illustrates
01a0 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 55 6e 62 61 6c 61 6e 63 65 64 20 4f .the.computation.of.Unbalanced.O
01c0 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 6e 75 73 69 6e 67 20 61 20 4b 75 6c 6c 62 61 ptimal.transport\nusing.a.Kullba
01e0 63 6b 2d 4c 65 69 62 6c 65 72 20 72 65 6c 61 78 61 74 69 6f 6e 2e 5c 6e 5c 6e 22 0a 20 20 20 20 ck-Leibler.relaxation.\n\n".....
0200 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 ..].....},.....{......."cell_typ
0220 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 e":."code",......."execution_cou
0240 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 nt":.null,......."metadata":.{..
0260 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.......
0280 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 },......."outputs":.[],......."s
02a0 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 20 48 69 63 ource":.[........."#.Author:.Hic
02c0 68 61 6d 20 4a 61 6e 61 74 69 20 3c 68 69 63 68 61 6d 2e 6a 61 6e 61 74 69 40 69 6e 72 69 61 2e ham.Janati.<hicham.janati@inria.
02e0 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 5c 6e fr>\n#\n#.License:.MIT.License\n
0300 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 61 74 \nimport.numpy.as.np\nimport.mat
0320 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
0340 69 6d 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 5c 6e 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 import.ot.plot\nfrom.ot.datasets
0360 20 69 6d 70 6f 72 74 20 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 22 0a .import.make_1D_gauss.as.gauss".
0380 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
03a0 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 _type":."markdown",......."metad
03c0 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ata":.{},......."source":.[.....
03e0 20 20 20 20 22 47 65 6e 65 72 61 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...."Generate.data\n------------
0400 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 -\n\n".......].....},.....{.....
0420 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 .."cell_type":."code",......."ex
0440 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 ecution_count":.null,......."met
0460 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
0480 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b alse.......},......."outputs":.[
04a0 5d 2c 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 ],......."source":.[........."#%
04c0 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 62 20 62 69 %.parameters\n\nn.=.100..#.nb.bi
04e0 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 70 2e 61 72 ns\n\n#.bin.positions\nx.=.np.ar
0500 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 6e 23 20 47 ange(n,.dtype=np.float64)\n\n#.G
0520 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 67 61 75 73 73 aussian.distributions\na.=.gauss
0540 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 73 74 (n,.m=20,.s=5)..#.m=.mean,.s=.st
0560 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 5c 6e 5c 6e 23 d\nb.=.gauss(n,.m=60,.s=10)\n\n#
0580 20 6d 61 6b 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 75 6e 62 61 6c 61 6e 63 65 64 5c 6e .make.distributions.unbalanced\n
05a0 62 20 2a 3d 20 35 2e 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 b.*=.5.\n\n#.loss.matrix\nM.=.ot
05c0 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 61 .dist(x.reshape((n,.1)),.x.resha
05e0 70 65 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 pe((n,.1)))\nM./=.M.max()"......
0600 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 .].....},.....{......."cell_type
0620 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a ":."markdown",......."metadata":
0640 20 7b 7d 2c 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 .{},......."source":.[........."
0660 50 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 74 72 Plot.distributions.and.loss.matr
0680 69 78 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ix\n----------------------------
06a0 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b ------\n\n".......].....},.....{
06c0 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 0a 20 20 20 20 ......."cell_type":."code",.....
06e0 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 0a 20 20 20 20 20 .."execution_count":.null,......
0700 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
0720 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 d":.false.......},......."output
0740 73 22 3a 20 5b 5d 2c 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 s":.[],......."source":.[.......
0760 20 20 22 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 73 5c 6e 5c .."#%%.plot.the.distributions\n\
0780 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 29 29 5c npl.figure(1,.figsize=(6.4,.3))\
07a0 6e 70 6c 2e 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 npl.plot(x,.a,.'b',.label='Sourc
07c0 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 2c 20 e.distribution')\npl.plot(x,.b,.
07e0 27 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 'r',.label='Target.distribution'
0800 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 5c 6e 23 20 70 6c 6f 74 20 64 69 73 74 72 69 62 )\npl.legend()\n\n#.plot.distrib
0820 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 70 6c 2e 66 69 67 utions.and.loss.matrix\n\npl.fig
0840 75 72 65 28 32 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(2,.figsize=(5,.5))\not.plot.
0860 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 4d 2c 20 27 43 6f 73 74 20 6d 61 74 72 69 78 plot1D_mat(a,.b,.M,.'Cost.matrix
0880 20 4d 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 .M')".......].....},.....{......
08a0 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 0a 20 20 20 20 20 20 ."cell_type":."markdown",.......
08c0 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 "metadata":.{},......."source":.
08e0 5b 0a 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 55 6e 62 61 6c 61 6e 63 65 64 20 53 69 6e 6b [........."Solve.Unbalanced.Sink
0900 68 6f 72 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 horn\n--------------\n\n".......
0920 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ].....},.....{......."cell_type"
0940 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 :."code",......."execution_count
0960 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 ":.null,......."metadata":.{....
0980 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 2c ....."collapsed":.false.......},
09a0 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 ......."outputs":.[],......."sou
09c0 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 53 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 65 rce":.[........."#.Sinkhorn\n\ne
09e0 70 73 69 6c 6f 6e 20 3d 20 30 2e 31 20 20 23 20 65 6e 74 72 6f 70 79 20 70 61 72 61 6d 65 74 65 psilon.=.0.1..#.entropy.paramete
0a00 72 5c 6e 61 6c 70 68 61 20 3d 20 31 2e 20 20 23 20 55 6e 62 61 6c 61 6e 63 65 64 20 4b 4c 20 72 r\nalpha.=.1...#.Unbalanced.KL.r
0a20 65 6c 61 78 61 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 5c 6e 47 73 20 3d 20 6f 74 2e 75 6e 62 elaxation.parameter\nGs.=.ot.unb
0a40 61 6c 61 6e 63 65 64 2e 73 69 6e 6b 68 6f 72 6e 5f 75 6e 62 61 6c 61 6e 63 65 64 28 61 2c 20 62 alanced.sinkhorn_unbalanced(a,.b
0a60 2c 20 4d 2c 20 65 70 73 69 6c 6f 6e 2c 20 61 6c 70 68 61 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 ,.M,.epsilon,.alpha,.verbose=Tru
0a80 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 20 35 e)\n\npl.figure(4,.figsize=(5,.5
0aa0 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 73 2c ))\not.plot.plot1D_mat(a,.b,.Gs,
0ac0 20 27 55 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 68 .'UOT.matrix.Sinkhorn')\n\npl.sh
0ae0 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 ow()".......].....}...],..."meta
0b00 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":.{....
0b20 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 33 22 2c 0a 20 ..."display_name":."Python.3",..
0b40 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 2c 0a 20 20 20 20 20 ....."language":."python",......
0b60 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c ."name":."python3".....},....."l
0b80 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 anguage_info":.{......."codemirr
0ba0 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 or_mode":.{........."name":."ipy
0bc0 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 thon",........."version":.3.....
0be0 20 20 7d 2c 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 22 2e 70 ..},......."file_extension":.".p
0c00 79 22 2c 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 y",......."mimetype":."text/x-py
0c20 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 thon",......."name":."python",..
0c40 20 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 ....."nbconvert_exporter":."pyth
0c60 6f 6e 22 2c 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 on",......."pygments_lexer":."ip
0c80 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 38 ython3",......."version":."3.6.8
0ca0 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 ".....}...},..."nbformat":.4,...
0cc0 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 2d "nbformat_minor":.0.}PK........-
0ce0 60 cb 4c 88 ac 62 ba 81 11 00 00 81 11 00 00 11 00 00 00 70 6c 6f 74 5f 67 72 6f 6d 6f 76 2e 69 `.L..b.............plot_gromov.i
0d00 70 79 6e 62 7b 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 pynb{..."cells":.[.....{......."
0d20 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 cell_type":."code",......."execu
0d40 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 tion_count":.null,......."metada
0d60 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 73 ta":.{........."collapsed":.fals
0d80 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a e.......},......."outputs":.[],.
0da0 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 25 6d 61 74 70 ......"source":.[........."%matp
0dc0 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 lotlib.inline".......].....},...
0de0 20 20 7b 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
0e00 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 ",......."metadata":.{},......."
0e20 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 47 72 6f 6d 6f 76 2d 57 source":.[........."\n#.Gromov-W
0e40 61 73 73 65 72 73 74 65 69 6e 20 65 78 61 6d 70 6c 65 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 asserstein.example\n\n\nThis.exa
0e60 6d 70 6c 65 20 69 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20 73 68 6f 77 20 68 6f 77 20 74 6f 20 mple.is.designed.to.show.how.to.
0e80 75 73 65 20 74 68 65 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 74 73 65 69 6e 20 64 69 73 74 61 use.the.Gromov-Wassertsein.dista
0ea0 6e 63 65 5c 6e 63 6f 6d 70 75 74 61 74 69 6f 6e 20 69 6e 20 50 4f 54 2e 5c 6e 5c 6e 22 0a 20 20 nce\ncomputation.in.POT.\n\n"...
0ec0 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ....].....},.....{......."cell_t
0ee0 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 ype":."code",......."execution_c
0f00 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ount":.null,......."metadata":.{
0f20 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.....
0f40 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 ..},......."outputs":.[],.......
0f60 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 20 45 "source":.[........."#.Author:.E
0f80 72 77 61 6e 20 56 61 75 74 69 65 72 20 3c 65 72 77 61 6e 2e 76 61 75 74 69 65 72 40 67 6d 61 69 rwan.Vautier.<erwan.vautier@gmai
0fa0 6c 2e 63 6f 6d 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 4e 69 63 6f 6c 61 73 20 43 6f 75 72 74 79 l.com>\n#.........Nicolas.Courty
0fc0 20 3c 6e 63 6f 75 72 74 79 40 69 72 69 73 61 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 .<ncourty@irisa.fr>\n#\n#.Licens
0fe0 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 73 63 69 70 79 20 61 e:.MIT.License\n\nimport.scipy.a
1000 73 20 73 70 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 s.sp\nimport.numpy.as.np\nimport
1020 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 66 72 6f 6d 20 6d 70 .matplotlib.pylab.as.pl\nfrom.mp
1040 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 65 73 33 44 l_toolkits.mplot3d.import.Axes3D
1060 20 20 23 20 6e 6f 71 61 5c 6e 69 6d 70 6f 72 74 20 6f 74 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 ..#.noqa\nimport.ot".......]....
1080 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 .},.....{......."cell_type":."ma
10a0 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 rkdown",......."metadata":.{},..
10c0 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 61 6d 70 6c 65 ....."source":.[........."Sample
10e0 20 74 77 6f 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 28 32 44 20 .two.Gaussian.distributions.(2D.
1100 61 6e 64 20 33 44 29 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d and.3D)\n-----------------------
1120 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 54 68 65 20 47 72 ----------------------\n\nThe.Gr
1140 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 64 69 73 74 61 6e 63 65 20 61 6c 6c 6f 77 73 omov-Wasserstein.distance.allows
1160 20 74 6f 20 63 6f 6d 70 75 74 65 20 64 69 73 74 61 6e 63 65 73 20 77 69 74 68 20 73 61 6d 70 6c .to.compute.distances.with.sampl
1180 65 73 20 74 68 61 74 5c 6e 64 6f 20 6e 6f 74 20 62 65 6c 6f 6e 67 20 74 6f 20 74 68 65 20 73 61 es.that\ndo.not.belong.to.the.sa
11a0 6d 65 20 6d 65 74 72 69 63 20 73 70 61 63 65 2e 20 46 6f 72 20 64 65 6d 6f 6e 73 74 72 61 74 69 me.metric.space..For.demonstrati
11c0 6f 6e 20 70 75 72 70 6f 73 65 2c 20 77 65 20 73 61 6d 70 6c 65 5c 6e 74 77 6f 20 47 61 75 73 73 on.purpose,.we.sample\ntwo.Gauss
11e0 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 69 6e 20 32 2d 20 61 6e 64 20 33 2d 64 69 ian.distributions.in.2-.and.3-di
1200 6d 65 6e 73 69 6f 6e 61 6c 20 73 70 61 63 65 73 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 mensional.spaces.\n\n".......]..
1220 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
1240 63 6f 64 65 22 2c 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 code",......."execution_count":.
1260 6e 75 6c 6c 2c 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 null,......."metadata":.{.......
1280 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 2c 0a 20 20 .."collapsed":.false.......},...
12a0 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ...."outputs":.[],......."source
12c0 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6e 5f 73 61 6d 70 6c 65 73 20 3d 20 33 30 20 20 23 20 ":.[........."n_samples.=.30..#.
12e0 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
1300 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],
1320 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,
1340 20 34 2c 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 30 .4,.4])\ncov_t.=.np.array([[1,.0
1360 2c 20 30 5d 2c 20 5b 30 2c 20 31 2c 20 30 5d 2c 20 5b 30 2c 20 30 2c 20 31 5d 5d 29 5c 6e 5c 6e ,.0],.[0,.1,.0],.[0,.0,.1]])\n\n
1380 5c 6e 78 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 32 44 5f 73 61 6d 70 6c \nxs.=.ot.datasets.make_2D_sampl
13a0 65 73 5f 67 61 75 73 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 6d 75 5f 73 2c 20 63 6f 76 5f 73 29 es_gauss(n_samples,.mu_s,.cov_s)
13c0 5c 6e 50 20 3d 20 73 70 2e 6c 69 6e 61 6c 67 2e 73 71 72 74 6d 28 63 6f 76 5f 74 29 5c 6e 78 74 \nP.=.sp.linalg.sqrtm(cov_t)\nxt
13e0 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 33 29 .=.np.random.randn(n_samples,.3)
1400 2e 64 6f 74 28 50 29 20 2b 20 6d 75 5f 74 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 .dot(P).+.mu_t".......].....},..
1420 20 20 20 7b 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
1440 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 n",......."metadata":.{},.......
1460 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 74 69 6e 67 20 74 68 "source":.[........."Plotting.th
1480 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d e.distributions\n---------------
14a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a -----------\n\n".......].....},.
14c0 20 20 20 20 7b 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 ....{......."cell_type":."code",
14e0 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 0a ......."execution_count":.null,.
1500 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 6c ......"metadata":.{........."col
1520 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
1540 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
1560 20 20 20 20 20 20 20 22 66 69 67 20 3d 20 70 6c 2e 66 69 67 75 72 65 28 29 5c 6e 61 78 31 20 3d ......."fig.=.pl.figure()\nax1.=
1580 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 31 32 31 29 5c 6e 61 78 31 2e 70 6c 6f 74 28 .fig.add_subplot(121)\nax1.plot(
15a0 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 6c 61 62 65 6c 3d xs[:,.0],.xs[:,.1],.'+b',.label=
15c0 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 61 78 32 20 3d 20 66 69 67 2e 61 64 64 'Source.samples')\nax2.=.fig.add
15e0 5f 73 75 62 70 6c 6f 74 28 31 32 32 2c 20 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 5c 6e _subplot(122,.projection='3d')\n
1600 61 78 32 2e 73 63 61 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 ax2.scatter(xt[:,.0],.xt[:,.1],.
1620 78 74 5b 3a 2c 20 32 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 xt[:,.2],.color='r')\npl.show()"
1640 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c .......].....},.....{......."cel
1660 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 l_type":."markdown",......."meta
1680 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 data":.{},......."source":.[....
16a0 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 64 69 73 74 61 6e 63 65 20 6b 65 72 6e 65 6c 73 2c 20 ....."Compute.distance.kernels,.
16c0 6e 6f 72 6d 61 6c 69 7a 65 20 74 68 65 6d 20 61 6e 64 20 74 68 65 6e 20 64 69 73 70 6c 61 79 5c normalize.them.and.then.display\
16e0 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d n-------------------------------
1700 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a --------------------------\n\n".
1720 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
1740 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e _type":."code",......."execution
1760 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a _count":.null,......."metadata":
1780 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...
17a0 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 ....},......."outputs":.[],.....
17c0 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 31 20 3d 20 73 70 2e 73 .."source":.[........."C1.=.sp.s
17e0 70 61 74 69 61 6c 2e 64 69 73 74 61 6e 63 65 2e 63 64 69 73 74 28 78 73 2c 20 78 73 29 5c 6e 43 patial.distance.cdist(xs,.xs)\nC
1800 32 20 3d 20 73 70 2e 73 70 61 74 69 61 6c 2e 64 69 73 74 61 6e 63 65 2e 63 64 69 73 74 28 78 74 2.=.sp.spatial.distance.cdist(xt
1820 2c 20 78 74 29 5c 6e 5c 6e 43 31 20 2f 3d 20 43 31 2e 6d 61 78 28 29 5c 6e 43 32 20 2f 3d 20 43 ,.xt)\n\nC1./=.C1.max()\nC2./=.C
1840 32 2e 6d 61 78 28 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 29 5c 6e 70 6c 2e 73 75 62 70 6c 2.max()\n\npl.figure()\npl.subpl
1860 6f 74 28 31 32 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 43 31 29 5c 6e 70 6c 2e 73 75 62 70 6c ot(121)\npl.imshow(C1)\npl.subpl
1880 6f 74 28 31 32 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 43 32 29 5c 6e 70 6c 2e 73 68 6f 77 28 ot(122)\npl.imshow(C2)\npl.show(
18a0 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 )".......].....},.....{......."c
18c0 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 ell_type":."markdown",......."me
18e0 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 tadata":.{},......."source":.[..
1900 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 ......."Compute.Gromov-Wasserste
1920 69 6e 20 70 6c 61 6e 73 20 61 6e 64 20 64 69 73 74 61 6e 63 65 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d in.plans.and.distance\n---------
1940 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
1960 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 ----\n\n".......].....},.....{..
1980 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 0a 20 20 20 20 20 20 ....."cell_type":."code",.......
19a0 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 "execution_count":.null,......."
19c0 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"
19e0 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 :.false.......},......."outputs"
1a00 3a 20 5b 5d 2c 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":.[.........
1a20 22 70 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 5f 73 61 6d 70 6c 65 73 29 5c 6e 71 20 3d 20 6f 74 2e "p.=.ot.unif(n_samples)\nq.=.ot.
1a40 75 6e 69 66 28 6e 5f 73 61 6d 70 6c 65 73 29 5c 6e 5c 6e 67 77 30 2c 20 6c 6f 67 30 20 3d 20 6f unif(n_samples)\n\ngw0,.log0.=.o
1a60 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 65 69 6e 28 5c 6e 20 20 t.gromov.gromov_wasserstein(\n..
1a80 20 20 43 31 2c 20 43 32 2c 20 70 2c 20 71 2c 20 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 76 ..C1,.C2,.p,.q,.'square_loss',.v
1aa0 65 72 62 6f 73 65 3d 54 72 75 65 2c 20 6c 6f 67 3d 54 72 75 65 29 5c 6e 5c 6e 67 77 2c 20 6c 6f erbose=True,.log=True)\n\ngw,.lo
1ac0 67 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 65 6e 74 72 6f 70 69 63 5f 67 72 6f 6d 6f 76 5f 77 61 g.=.ot.gromov.entropic_gromov_wa
1ae0 73 73 65 72 73 74 65 69 6e 28 5c 6e 20 20 20 20 43 31 2c 20 43 32 2c 20 70 2c 20 71 2c 20 27 73 sserstein(\n....C1,.C2,.p,.q,.'s
1b00 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 65 70 73 69 6c 6f 6e 3d 35 65 2d 34 2c 20 6c 6f 67 3d 54 quare_loss',.epsilon=5e-4,.log=T
1b20 72 75 65 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 5c 6e 70 72 69 6e 74 28 27 47 rue,.verbose=True)\n\n\nprint('G
1b40 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 64 69 73 74 61 6e 63 65 73 3a 20 27 20 2b romov-Wasserstein.distances:.'.+
1b60 20 73 74 72 28 6c 6f 67 30 5b 27 67 77 5f 64 69 73 74 27 5d 29 29 5c 6e 70 72 69 6e 74 28 27 45 .str(log0['gw_dist']))\nprint('E
1b80 6e 74 72 6f 70 69 63 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 64 69 73 74 61 ntropic.Gromov-Wasserstein.dista
1ba0 6e 63 65 73 3a 20 27 20 2b 20 73 74 72 28 6c 6f 67 5b 27 67 77 5f 64 69 73 74 27 5d 29 29 5c 6e nces:.'.+.str(log['gw_dist']))\n
1bc0 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 28 31 30 2c 20 35 29 29 5c 6e 5c 6e 70 6c 2e \n\npl.figure(1,.(10,.5))\n\npl.
1be0 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 67 77 30 2c subplot(1,.2,.1)\npl.imshow(gw0,
1c00 20 63 6d 61 70 3d 27 6a 65 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 47 72 6f 6d 6f 76 20 57 .cmap='jet')\npl.title('Gromov.W
1c20 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c asserstein')\n\npl.subplot(1,.2,
1c40 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 67 77 2c 20 63 6d 61 70 3d 27 6a 65 74 27 29 5c 6e .2)\npl.imshow(gw,.cmap='jet')\n
1c60 70 6c 2e 74 69 74 6c 65 28 27 45 6e 74 72 6f 70 69 63 20 47 72 6f 6d 6f 76 20 57 61 73 73 65 72 pl.title('Entropic.Gromov.Wasser
1c80 73 74 65 69 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 stein')\n\npl.show()".......]...
1ca0 20 20 7d 0a 20 20 5d 2c 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
1cc0 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
1ce0 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a ":."Python.3",......."language":
1d00 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e ."python",......."name":."python
1d20 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 3".....},....."language_info":.{
1d40 0a 20 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 ......."codemirror_mode":.{.....
1d60 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 ...."name":."ipython",........."
1d80 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 version":.3.......},......."file
1da0 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 _extension":.".py",......."mimet
1dc0 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 ype":."text/x-python",......."na
1de0 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f me":."python",......."nbconvert_
1e00 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d exporter":."python",......."pygm
1e20 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 ents_lexer":."ipython3",......."
1e40 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 version":."3.6.5".....}...},..."
1e60 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 nbformat":.4,..."nbformat_minor"
1e80 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 a7 6e a2 4c ae 38 61 57 26 14 00 00 26 14 00 00 0e :.0.}PK.........n.L.8aW&...&....
1ea0 00 00 00 70 6c 6f 74 5f 57 44 41 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d ...plot_WDA.ipynb{..."nbformat_m
1ec0 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,...."
1ee0 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
1f00 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
1f20 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":.[...
1f40 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"......
1f60 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":.[],.......
1f80 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
1fa0 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.......}.....},......{.
1fc0 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 20 57 ......"source":.[........."\n#.W
1fe0 61 73 73 65 72 73 74 65 69 6e 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 41 6e 61 6c 79 73 69 73 asserstein.Discriminant.Analysis
2000 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 20 74 68 \n\n\nThis.example.illustrate.th
2020 65 20 75 73 65 20 6f 66 20 57 44 41 20 61 73 20 70 72 6f 70 6f 73 65 64 20 69 6e 20 5b 31 31 5d e.use.of.WDA.as.proposed.in.[11]
2040 2e 5c 6e 5c 6e 5c 6e 5b 31 31 5d 20 46 6c 61 6d 61 72 79 2c 20 52 2e 2c 20 43 75 74 75 72 69 2c .\n\n\n[11].Flamary,.R.,.Cuturi,
2060 20 4d 2e 2c 20 43 6f 75 72 74 79 2c 20 4e 2e 2c 20 26 20 52 61 6b 6f 74 6f 6d 61 6d 6f 6e 6a 79 .M.,.Courty,.N.,.&.Rakotomamonjy
2080 2c 20 41 2e 20 28 32 30 31 36 29 2e 5c 6e 57 61 73 73 65 72 73 74 65 69 6e 20 44 69 73 63 72 69 ,.A..(2016).\nWasserstein.Discri
20a0 6d 69 6e 61 6e 74 20 41 6e 61 6c 79 73 69 73 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c minant.Analysis.\n\n\n".......],
20c0 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",
20e0 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":.{}.....},...
2100 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
2120 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",.
2140 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 41 75 ......."source":.[........."#.Au
2160 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 72 79 thor:.Remi.Flamary.<remi.flamary
2180 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 4c 69 @unice.fr>\n#\n#.License:.MIT.Li
21a0 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 6d 70 cense\n\nimport.numpy.as.np\nimp
21c0 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 5c 6e 66 72 ort.matplotlib.pylab.as.pl\n\nfr
21e0 6f 6d 20 6f 74 2e 64 72 20 69 6d 70 6f 72 74 20 77 64 61 2c 20 66 64 61 22 0a 20 20 20 20 20 20 om.ot.dr.import.wda,.fda".......
2200 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":.[],........
2220 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
2240 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.......}.....},......{..
2260 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 61 ....."source":.[........."Genera
2280 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 te.data\n-------------\n\n".....
22a0 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
22c0 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":.{}.....}
22e0 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"
2300 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
2320 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":.[........."
2340 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 30 20 20 23 20 6e 62 #%%.parameters\n\nn.=.1000..#.nb
2360 20 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 .samples.in.source.and.target.da
2380 74 61 73 65 74 73 5c 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 tasets\nnz.=.0.2\n\n#.generate.c
23a0 69 72 63 6c 65 20 64 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 ircle.dataset\nt.=.np.random.ran
23c0 64 28 6e 29 20 2a 20 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 d(n).*.2.*.np.pi\nys.=.np.floor(
23e0 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 20 (np.arange(n).*.1.0./.n.*.3)).+.
2400 31 5c 6e 78 73 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 70 1\nxs.=.np.concatenate(\n....(np
2420 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 6e .cos(t).reshape((-1,.1)),.np.sin
2440 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 73 20 3d 20 (t).reshape((-1,.1))),.1)\nxs.=.
2460 78 73 20 2a 20 79 73 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 xs.*.ys.reshape(-1,.1).+.nz.*.np
2480 2e 72 61 6e 64 6f 6d 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 .random.randn(n,.2)\n\nt.=.np.ra
24a0 6e 64 6f 6d 2e 72 61 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 ndom.rand(n).*.2.*.np.pi\nyt.=.n
24c0 70 2e 66 6c 6f 6f 72 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 p.floor((np.arange(n).*.1.0./.n.
24e0 2a 20 33 29 29 20 2b 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 *.3)).+.1\nxt.=.np.concatenate(\
2500 6e 20 20 20 20 28 6e 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 n....(np.cos(t).reshape((-1,.1))
2520 2c 20 6e 70 2e 73 69 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 ,.np.sin(t).reshape((-1,.1))),.1
2540 29 5c 6e 78 74 20 3d 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 )\nxt.=.xt.*.yt.reshape(-1,.1).+
2560 20 6e 7a 20 2a 20 6e 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 .nz.*.np.random.randn(n,.2)\n\nn
2580 62 6e 6f 69 73 65 20 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 bnoise.=.8\n\nxs.=.np.hstack((xs
25a0 2c 20 6e 70 2e 72 61 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 ,.np.random.randn(n,.nbnoise)))\
25c0 6e 78 74 20 3d 20 6e 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 nxt.=.np.hstack((xt,.np.random.r
25e0 61 6e 64 6e 28 6e 2c 20 6e 62 6e 6f 69 73 65 29 29 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 andn(n,.nbnoise)))".......],....
2600 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
2620 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
2640 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.......}.....},......{......."
2660 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 61 74 61 5c 6e 2d source":.[........."Plot.data\n-
2680 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 --------\n\n".......],........"c
26a0 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 6d ell_type":."markdown",........"m
26c0 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 20 etadata":.{}.....},......{......
26e0 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,.......
2700 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
2720 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c urce":.[........."#%%.plot.sampl
2740 65 73 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 33 es\npl.figure(1,.figsize=(6.4,.3
2760 2e 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 29 5c 6e 70 6c 2e .5))\n\npl.subplot(1,.2,.1)\npl.
2780 73 63 61 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 scatter(xt[:,.0],.xt[:,.1],.c=ys
27a0 2c 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 ,.marker='+',.label='Source.samp
27c0 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 69 74 6c les')\npl.legend(loc=0)\npl.titl
27e0 65 28 27 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 e('Discriminant.dimensions')\n\n
2800 70 6c 2e 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 pl.subplot(1,.2,.2)\npl.scatter(
2820 78 74 5b 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 xt[:,.2],.xt[:,.3],.c=ys,.marker
2840 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 27 29 5c 6e 70 ='+',.label='Source.samples')\np
2860 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 74 68 65 72 l.legend(loc=0)\npl.title('Other
2880 20 64 69 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 .dimensions')\npl.tight_layout()
28a0 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":.[],
28c0 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
28e0 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.......}.....},.
2900 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":.[........
2920 20 22 43 6f 6d 70 75 74 65 20 46 69 73 68 65 72 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 41 6e ."Compute.Fisher.Discriminant.An
2940 61 6c 79 73 69 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d alysis\n------------------------
2960 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 ------------\n\n".......],......
2980 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 20 .."cell_type":."markdown",......
29a0 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 20 .."metadata":.{}.....},......{..
29c0 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,...
29e0 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",.......
2a00 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 43 6f 6d 70 75 74 ."source":.[........."#%%.Comput
2a20 65 20 46 44 41 5c 6e 70 20 3d 20 32 5c 6e 5c 6e 50 66 64 61 2c 20 70 72 6f 6a 66 64 61 20 3d 20 e.FDA\np.=.2\n\nPfda,.projfda.=.
2a40 66 64 61 28 78 73 2c 20 79 73 2c 20 70 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 fda(xs,.ys,.p)".......],........
2a60 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"
2a80 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..
2aa0 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 73 6f 75 72 .....}.....},......{......."sour
2ac0 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 57 61 73 73 65 72 73 74 ce":.[........."Compute.Wasserst
2ae0 65 69 6e 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 41 6e 61 6c 79 73 69 73 5c 6e 2d 2d 2d 2d 2d ein.Discriminant.Analysis\n-----
2b00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2b20 2d 2d 2d 2d 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_
2b40 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
2b60 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
2b80 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
2ba0 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
2bc0 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 43 6f 6d 70 75 74 65 20 57 44 41 5c 6e 70 ":.[........."#%%.Compute.WDA\np
2be0 20 3d 20 32 5c 6e 72 65 67 20 3d 20 31 65 30 5c 6e 6b 20 3d 20 31 30 5c 6e 6d 61 78 69 74 65 72 .=.2\nreg.=.1e0\nk.=.10\nmaxiter
2c00 20 3d 20 31 30 30 5c 6e 5c 6e 50 77 64 61 2c 20 70 72 6f 6a 77 64 61 20 3d 20 77 64 61 28 78 73 .=.100\n\nPwda,.projwda.=.wda(xs
2c20 2c 20 79 73 2c 20 70 2c 20 72 65 67 2c 20 6b 2c 20 6d 61 78 69 74 65 72 3d 6d 61 78 69 74 65 72 ,.ys,.p,.reg,.k,.maxiter=maxiter
2c40 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 20 5b 5d )".......],........"outputs":.[]
2c60 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":.{........."
2c80 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.......}.....},
2ca0 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":.[.......
2cc0 20 20 22 50 6c 6f 74 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d .."Plot.2D.projections\n--------
2ce0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 -----------\n\n".......],.......
2d00 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",.......
2d20 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":.{}.....},......{...
2d40 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,....
2d60 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",........
2d80 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 70 6c 6f 74 20 73 61 "source":.[........."#%%.plot.sa
2da0 6d 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 mples\n\nxsp.=.projfda(xs)\nxtp.
2dc0 3d 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 =.projfda(xt)\n\nxspw.=.projwda(
2de0 78 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 xs)\nxtpw.=.projwda(xt)\n\npl.fi
2e00 67 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 gure(2)\n\npl.subplot(2,.2,.1)\n
2e20 70 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 pl.scatter(xsp[:,.0],.xsp[:,.1],
2e40 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 6a 65 63 .c=ys,.marker='+',.label='Projec
2e60 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 30 29 5c ted.samples')\npl.legend(loc=0)\
2e80 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 6e 67 20 73 61 npl.title('Projected.training.sa
2ea0 6d 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 mples.FDA')\n\npl.subplot(2,.2,.
2ec0 32 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 2)\npl.scatter(xtp[:,.0],.xtp[:,
2ee0 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 72 .1],.c=ys,.marker='+',.label='Pr
2f00 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 63 ojected.samples')\npl.legend(loc
2f20 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 65 73 74 20 73 61 =0)\npl.title('Projected.test.sa
2f40 6d 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 mples.FDA')\n\npl.subplot(2,.2,.
2f60 33 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 3)\npl.scatter(xspw[:,.0],.xspw[
2f80 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 65 6c 3d 27 :,.1],.c=ys,.marker='+',.label='
2fa0 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 65 6e 64 28 6c Projected.samples')\npl.legend(l
2fc0 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 74 72 61 69 6e oc=0)\npl.title('Projected.train
2fe0 69 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 ing.samples.WDA')\n\npl.subplot(
3000 32 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 2,.2,.4)\npl.scatter(xtpw[:,.0],
3020 20 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 .xtpw[:,.1],.c=ys,.marker='+',.l
3040 61 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 abel='Projected.samples')\npl.le
3060 67 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 gend(loc=0)\npl.title('Projected
3080 20 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 .test.samples.WDA')\npl.tight_la
30a0 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 20 yout()\n\npl.show()".......],...
30c0 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
30e0 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
3100 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
3120 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":.{.....
3140 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",...
3160 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",........"
3180 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".....},......
31a0 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
31c0 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
31e0 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",....
3200 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
3220 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
3240 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
3260 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
3280 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
32a0 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
32c0 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.......
32e0 00 18 7f a2 4c aa d3 d6 af 27 23 00 00 27 23 00 00 1c 00 00 00 70 6c 6f 74 5f 67 72 6f 6d 6f 76 ....L....'#..'#......plot_gromov
3300 5f 62 61 72 79 63 65 6e 74 65 72 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a _barycenter.ipynb{..."cells":.[.
3320 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
3340 75 6c 6c 2c 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 ull,......."metadata":.{........
3360 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 2c 0a 20 20 20 ."collapsed":.false.......},....
3380 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 ..."outputs":.[],......."source"
33a0 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 65 22 :.[........."%matplotlib.inline"
33c0 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f .......],......."cell_type":."co
33e0 64 65 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 de".....},.....{......."metadata
3400 22 3a 20 7b 7d 2c 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":.[........
3420 20 22 5c 6e 23 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 42 61 72 79 63 65 6e ."\n#.Gromov-Wasserstein.Barycen
3440 74 65 72 20 65 78 61 6d 70 6c 65 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 ter.example\n\n\nThis.example.is
3460 20 64 65 73 69 67 6e 65 64 20 74 6f 20 73 68 6f 77 20 68 6f 77 20 74 6f 20 75 73 65 20 74 68 65 .designed.to.show.how.to.use.the
3480 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 64 69 73 74 61 6e 63 65 5c 6e 63 6f .Gromov-Wasserstein.distance\nco
34a0 6d 70 75 74 61 74 69 6f 6e 20 69 6e 20 50 4f 54 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 0a mputation.in.POT.\n\n".......],.
34c0 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 0a 20 20 ......"cell_type":."markdown"...
34e0 20 20 7d 2c 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
3500 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 t":.null,......."metadata":.{...
3520 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.......}
3540 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f ,......."outputs":.[],......."so
3560 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 20 45 72 77 61 urce":.[........."#.Author:.Erwa
3580 6e 20 56 61 75 74 69 65 72 20 3c 65 72 77 61 6e 2e 76 61 75 74 69 65 72 40 67 6d 61 69 6c 2e 63 n.Vautier.<erwan.vautier@gmail.c
35a0 6f 6d 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 4e 69 63 6f 6c 61 73 20 43 6f 75 72 74 79 20 3c 6e om>\n#.........Nicolas.Courty.<n
35c0 63 6f 75 72 74 79 40 69 72 69 73 61 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 courty@irisa.fr>\n#\n#.License:.
35e0 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 MIT.License\n\n\nimport.numpy.as
3600 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 73 63 69 70 79 20 61 73 20 73 70 5c 6e 5c 6e 69 6d 70 6f 72 .np\nimport.scipy.as.sp\n\nimpor
3620 74 20 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 t.scipy.ndimage.as.spi\nimport.m
3640 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 66 72 6f 6d 20 73 6b 6c 65 atplotlib.pylab.as.pl\nfrom.skle
3660 61 72 6e 20 69 6d 70 6f 72 74 20 6d 61 6e 69 66 6f 6c 64 5c 6e 66 72 6f 6d 20 73 6b 6c 65 61 72 arn.import.manifold\nfrom.sklear
3680 6e 2e 64 65 63 6f 6d 70 6f 73 69 74 69 6f 6e 20 69 6d 70 6f 72 74 20 50 43 41 5c 6e 5c 6e 69 6d n.decomposition.import.PCA\n\nim
36a0 70 6f 72 74 20 6f 74 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 port.ot".......],......."cell_ty
36c0 70 65 22 3a 20 22 63 6f 64 65 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 pe":."code".....},.....{......."
36e0 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b metadata":.{},......."source":.[
3700 0a 20 20 20 20 20 20 20 20 22 53 6d 61 63 6f 66 20 4d 44 53 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ........."Smacof.MDS\n----------
3720 5c 6e 5c 6e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 77 73 20 74 6f 20 66 69 6e 64 \n\nThis.function.allows.to.find
3740 20 61 6e 20 65 6d 62 65 64 64 69 6e 67 20 6f 66 20 70 6f 69 6e 74 73 20 67 69 76 65 6e 20 61 20 .an.embedding.of.points.given.a.
3760 64 69 73 73 69 6d 69 6c 61 72 69 74 79 20 6d 61 74 72 69 78 5c 6e 74 68 61 74 20 77 69 6c 6c 20 dissimilarity.matrix\nthat.will.
3780 62 65 20 67 69 76 65 6e 20 62 79 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 61 6c be.given.by.the.output.of.the.al
37a0 67 6f 72 69 74 68 6d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 20 20 20 22 63 65 6c gorithm\n\n".......],......."cel
37c0 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b l_type":."markdown".....},.....{
37e0 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 0a ......."execution_count":.null,.
3800 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 6c ......"metadata":.{........."col
3820 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
3840 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
3860 20 20 20 20 20 20 20 22 64 65 66 20 73 6d 61 63 6f 66 5f 6d 64 73 28 43 2c 20 64 69 6d 2c 20 6d ......."def.smacof_mds(C,.dim,.m
3880 61 78 5f 69 74 65 72 3d 33 30 30 30 2c 20 65 70 73 3d 31 65 2d 39 29 3a 5c 6e 20 20 20 20 5c 22 ax_iter=3000,.eps=1e-9):\n....\"
38a0 5c 22 5c 22 5c 6e 20 20 20 20 52 65 74 75 72 6e 73 20 61 6e 20 69 6e 74 65 72 70 6f 6c 61 74 65 \"\"\n....Returns.an.interpolate
38c0 64 20 70 6f 69 6e 74 20 63 6c 6f 75 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 64 69 73 73 d.point.cloud.following.the.diss
38e0 69 6d 69 6c 61 72 69 74 79 20 6d 61 74 72 69 78 20 43 5c 6e 20 20 20 20 75 73 69 6e 67 20 53 4d imilarity.matrix.C\n....using.SM
3900 41 43 4f 46 20 6d 75 6c 74 69 64 69 6d 65 6e 73 69 6f 6e 61 6c 20 73 63 61 6c 69 6e 67 20 28 4d ACOF.multidimensional.scaling.(M
3920 44 53 29 20 69 6e 20 73 70 65 63 69 66 69 63 20 64 69 6d 65 6e 73 69 6f 6e 6e 65 64 5c 6e 20 20 DS).in.specific.dimensionned\n..
3940 20 20 74 61 72 67 65 74 20 73 70 61 63 65 5c 6e 5c 6e 20 20 20 20 50 61 72 61 6d 65 74 65 72 73 ..target.space\n\n....Parameters
3960 5c 6e 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 20 20 20 20 43 20 3a 20 6e 64 61 72 72 61 \n....----------\n....C.:.ndarra
3980 79 2c 20 73 68 61 70 65 20 28 6e 73 2c 20 6e 73 29 5c 6e 20 20 20 20 20 20 20 20 64 69 73 73 69 y,.shape.(ns,.ns)\n........dissi
39a0 6d 69 6c 61 72 69 74 79 20 6d 61 74 72 69 78 5c 6e 20 20 20 20 64 69 6d 20 3a 20 69 6e 74 5c 6e milarity.matrix\n....dim.:.int\n
39c0 20 20 20 20 20 20 20 20 20 20 64 69 6d 65 6e 73 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 72 67 65 ..........dimension.of.the.targe
39e0 74 65 64 20 73 70 61 63 65 5c 6e 20 20 20 20 6d 61 78 5f 69 74 65 72 20 3a 20 20 69 6e 74 5c 6e ted.space\n....max_iter.:..int\n
3a00 20 20 20 20 20 20 20 20 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 ........Maximum.number.of.iterat
3a20 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 4d 41 43 4f 46 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72 ions.of.the.SMACOF.algorithm.for
3a40 20 61 20 73 69 6e 67 6c 65 20 72 75 6e 5c 6e 20 20 20 20 65 70 73 20 3a 20 66 6c 6f 61 74 5c 6e .a.single.run\n....eps.:.float\n
3a60 20 20 20 20 20 20 20 20 72 65 6c 61 74 69 76 65 20 74 6f 6c 65 72 61 6e 63 65 20 77 2e 72 2e 74 ........relative.tolerance.w.r.t
3a80 20 73 74 72 65 73 73 20 74 6f 20 64 65 63 6c 61 72 65 20 63 6f 6e 76 65 72 67 65 5c 6e 5c 6e 20 .stress.to.declare.converge\n\n.
3aa0 20 20 20 52 65 74 75 72 6e 73 5c 6e 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 5c 6e 20 20 20 20 6e 70 6f ...Returns\n....-------\n....npo
3ac0 73 20 3a 20 6e 64 61 72 72 61 79 2c 20 73 68 61 70 65 20 28 52 2c 20 64 69 6d 29 5c 6e 20 20 20 s.:.ndarray,.shape.(R,.dim)\n...
3ae0 20 20 20 20 20 20 20 20 45 6d 62 65 64 64 65 64 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 6f 66 20 ........Embedded.coordinates.of.
3b00 74 68 65 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 70 6f 69 6e 74 20 63 6c 6f 75 64 20 28 64 65 the.interpolated.point.cloud.(de
3b20 66 69 6e 65 64 20 77 69 74 68 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6f 6e 65 20 69 73 6f 6d 65 fined.with\n...........one.isome
3b40 74 72 79 29 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 5c 6e 5c 6e 20 20 20 20 72 6e 67 20 3d 20 6e 70 try)\n....\"\"\"\n\n....rng.=.np
3b60 2e 72 61 6e 64 6f 6d 2e 52 61 6e 64 6f 6d 53 74 61 74 65 28 73 65 65 64 3d 33 29 5c 6e 5c 6e 20 .random.RandomState(seed=3)\n\n.
3b80 20 20 20 6d 64 73 20 3d 20 6d 61 6e 69 66 6f 6c 64 2e 4d 44 53 28 5c 6e 20 20 20 20 20 20 20 20 ...mds.=.manifold.MDS(\n........
3ba0 64 69 6d 2c 5c 6e 20 20 20 20 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 6d 61 78 5f 69 74 65 72 2c dim,\n........max_iter=max_iter,
3bc0 5c 6e 20 20 20 20 20 20 20 20 65 70 73 3d 31 65 2d 39 2c 5c 6e 20 20 20 20 20 20 20 20 64 69 73 \n........eps=1e-9,\n........dis
3be0 73 69 6d 69 6c 61 72 69 74 79 3d 27 70 72 65 63 6f 6d 70 75 74 65 64 27 2c 5c 6e 20 20 20 20 20 similarity='precomputed',\n.....
3c00 20 20 20 6e 5f 69 6e 69 74 3d 31 29 5c 6e 20 20 20 20 70 6f 73 20 3d 20 6d 64 73 2e 66 69 74 28 ...n_init=1)\n....pos.=.mds.fit(
3c20 43 29 2e 65 6d 62 65 64 64 69 6e 67 5f 5c 6e 5c 6e 20 20 20 20 6e 6d 64 73 20 3d 20 6d 61 6e 69 C).embedding_\n\n....nmds.=.mani
3c40 66 6f 6c 64 2e 4d 44 53 28 5c 6e 20 20 20 20 20 20 20 20 32 2c 5c 6e 20 20 20 20 20 20 20 20 6d fold.MDS(\n........2,\n........m
3c60 61 78 5f 69 74 65 72 3d 6d 61 78 5f 69 74 65 72 2c 5c 6e 20 20 20 20 20 20 20 20 65 70 73 3d 31 ax_iter=max_iter,\n........eps=1
3c80 65 2d 39 2c 5c 6e 20 20 20 20 20 20 20 20 64 69 73 73 69 6d 69 6c 61 72 69 74 79 3d 5c 22 70 72 e-9,\n........dissimilarity=\"pr
3ca0 65 63 6f 6d 70 75 74 65 64 5c 22 2c 5c 6e 20 20 20 20 20 20 20 20 72 61 6e 64 6f 6d 5f 73 74 61 ecomputed\",\n........random_sta
3cc0 74 65 3d 72 6e 67 2c 5c 6e 20 20 20 20 20 20 20 20 6e 5f 69 6e 69 74 3d 31 29 5c 6e 20 20 20 20 te=rng,\n........n_init=1)\n....
3ce0 6e 70 6f 73 20 3d 20 6e 6d 64 73 2e 66 69 74 5f 74 72 61 6e 73 66 6f 72 6d 28 43 2c 20 69 6e 69 npos.=.nmds.fit_transform(C,.ini
3d00 74 3d 70 6f 73 29 5c 6e 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e 70 6f 73 22 0a 20 20 20 20 20 t=pos)\n\n....return.npos"......
3d20 20 5d 2c 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 0a 20 20 .],......."cell_type":."code"...
3d40 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c ..},.....{......."metadata":.{},
3d60 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 44 61 74 61 ......."source":.[........."Data
3d80 20 70 72 65 70 61 72 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e .preparation\n----------------\n
3da0 5c 6e 54 68 65 20 66 6f 75 72 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 72 65 20 63 6f 6e \nThe.four.distributions.are.con
3dc0 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 34 20 73 69 6d 70 6c 65 20 69 6d 61 67 65 73 5c 6e 5c structed.from.4.simple.images\n\
3de0 6e 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 n".......],......."cell_type":."
3e00 6d 61 72 6b 64 6f 77 6e 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 markdown".....},.....{......."ex
3e20 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 ecution_count":.null,......."met
3e40 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
3e60 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b alse.......},......."outputs":.[
3e80 5d 2c 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 64 65 ],......."source":.[........."de
3ea0 66 20 69 6d 32 6d 61 74 28 49 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 f.im2mat(I):\n....\"\"\"Converts
3ec0 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 .and.image.to.matrix.(one.pixel.
3ee0 70 65 72 20 6c 69 6e 65 29 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 per.line)\"\"\"\n....return.I.re
3f00 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 20 2a 20 49 2e 73 68 61 70 65 5b 31 5d 2c 20 shape((I.shape[0].*.I.shape[1],.
3f20 49 2e 73 68 61 70 65 5b 32 5d 29 29 5c 6e 5c 6e 5c 6e 73 71 75 61 72 65 20 3d 20 73 70 69 2e 69 I.shape[2]))\n\n\nsquare.=.spi.i
3f40 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 73 71 75 61 72 65 2e 70 6e 67 27 29 2e 61 73 74 79 mread('../data/square.png').asty
3f60 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 5b 3a 2c 20 3a 2c 20 32 5d 20 2f 20 32 35 36 5c 6e 63 pe(np.float64)[:,.:,.2]./.256\nc
3f80 72 6f 73 73 20 3d 20 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 63 72 6f 73 73 ross.=.spi.imread('../data/cross
3fa0 2e 70 6e 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 5b 3a 2c 20 3a 2c 20 .png').astype(np.float64)[:,.:,.
3fc0 32 5d 20 2f 20 32 35 36 5c 6e 74 72 69 61 6e 67 6c 65 20 3d 20 73 70 69 2e 69 6d 72 65 61 64 28 2]./.256\ntriangle.=.spi.imread(
3fe0 27 2e 2e 2f 64 61 74 61 2f 74 72 69 61 6e 67 6c 65 2e 70 6e 67 27 29 2e 61 73 74 79 70 65 28 6e '../data/triangle.png').astype(n
4000 70 2e 66 6c 6f 61 74 36 34 29 5b 3a 2c 20 3a 2c 20 32 5d 20 2f 20 32 35 36 5c 6e 73 74 61 72 20 p.float64)[:,.:,.2]./.256\nstar.
4020 3d 20 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 73 74 61 72 2e 70 6e 67 27 29 =.spi.imread('../data/star.png')
4040 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 5b 3a 2c 20 3a 2c 20 32 5d 20 2f 20 32 .astype(np.float64)[:,.:,.2]./.2
4060 35 36 5c 6e 5c 6e 73 68 61 70 65 73 20 3d 20 5b 73 71 75 61 72 65 2c 20 63 72 6f 73 73 2c 20 74 56\n\nshapes.=.[square,.cross,.t
4080 72 69 61 6e 67 6c 65 2c 20 73 74 61 72 5d 5c 6e 5c 6e 53 20 3d 20 34 5c 6e 78 73 20 3d 20 5b 5b riangle,.star]\n\nS.=.4\nxs.=.[[
40a0 5d 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 5c 6e 5c 6e 5c 6e 66 6f 72 20 6e 62 ].for.i.in.range(S)]\n\n\nfor.nb
40c0 20 69 6e 20 72 61 6e 67 65 28 34 29 3a 5c 6e 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 .in.range(4):\n....for.i.in.rang
40e0 65 28 38 29 3a 5c 6e 20 20 20 20 20 20 20 20 66 6f 72 20 6a 20 69 6e 20 72 61 6e 67 65 28 38 29 e(8):\n........for.j.in.range(8)
4100 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 68 61 70 65 73 5b 6e 62 5d 5b 69 2c 20 :\n............if.shapes[nb][i,.
4120 6a 5d 20 3c 20 30 2e 39 35 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 73 5b 6e j].<.0.95:\n................xs[n
4140 62 5d 2e 61 70 70 65 6e 64 28 5b 6a 2c 20 38 20 2d 20 69 5d 29 5c 6e 5c 6e 78 73 20 3d 20 6e 70 b].append([j,.8.-.i])\n\nxs.=.np
4160 2e 61 72 72 61 79 28 5b 6e 70 2e 61 72 72 61 79 28 78 73 5b 30 5d 29 2c 20 6e 70 2e 61 72 72 61 .array([np.array(xs[0]),.np.arra
4180 79 28 78 73 5b 31 5d 29 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 70 2e 61 72 72 y(xs[1]),\n...............np.arr
41a0 61 79 28 78 73 5b 32 5d 29 2c 20 6e 70 2e 61 72 72 61 79 28 78 73 5b 33 5d 29 5d 29 22 0a 20 20 ay(xs[2]),.np.array(xs[3])])"...
41c0 20 20 20 20 5d 2c 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 ....],......."cell_type":."code"
41e0 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 .....},.....{......."metadata":.
4200 7b 7d 2c 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 42 {},......."source":.[........."B
4220 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d arycenter.computation\n---------
4240 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 20 -------------\n\n".......],.....
4260 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 0a 20 20 20 20 7d 2c .."cell_type":."markdown".....},
4280 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":.
42a0 6e 75 6c 6c 2c 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 null,......."metadata":.{.......
42c0 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 2c 0a 20 20 .."collapsed":.false.......},...
42e0 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ...."outputs":.[],......."source
4300 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6e 73 20 3d 20 5b 6c 65 6e 28 78 73 5b 73 5d 29 20 66 ":.[........."ns.=.[len(xs[s]).f
4320 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 5c 6e 6e 5f 73 61 6d 70 6c 65 73 20 3d 20 33 or.s.in.range(S)]\nn_samples.=.3
4340 30 5c 6e 5c 6e 5c 22 5c 22 5c 22 43 6f 6d 70 75 74 65 20 61 6c 6c 20 64 69 73 74 61 6e 63 65 73 0\n\n\"\"\"Compute.all.distances
4360 20 6d 61 74 72 69 63 65 73 20 66 6f 72 20 74 68 65 20 66 6f 75 72 20 73 68 61 70 65 73 5c 22 5c .matrices.for.the.four.shapes\"\
4380 22 5c 22 5c 6e 43 73 20 3d 20 5b 73 70 2e 73 70 61 74 69 61 6c 2e 64 69 73 74 61 6e 63 65 2e 63 "\"\nCs.=.[sp.spatial.distance.c
43a0 64 69 73 74 28 78 73 5b 73 5d 2c 20 78 73 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 dist(xs[s],.xs[s]).for.s.in.rang
43c0 65 28 53 29 5d 5c 6e 43 73 20 3d 20 5b 63 73 20 2f 20 63 73 2e 6d 61 78 28 29 20 66 6f 72 20 63 e(S)]\nCs.=.[cs./.cs.max().for.c
43e0 73 20 69 6e 20 43 73 5d 5c 6e 5c 6e 70 73 20 3d 20 5b 6f 74 2e 75 6e 69 66 28 6e 73 5b 73 5d 29 s.in.Cs]\n\nps.=.[ot.unif(ns[s])
4400 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 5c 6e 70 20 3d 20 6f 74 2e 75 6e 69 66 .for.s.in.range(S)]\np.=.ot.unif
4420 28 6e 5f 73 61 6d 70 6c 65 73 29 5c 6e 5c 6e 5c 6e 6c 61 6d 62 64 61 73 74 20 3d 20 5b 5b 66 6c (n_samples)\n\n\nlambdast.=.[[fl
4440 6f 61 74 28 69 29 20 2f 20 33 2c 20 66 6c 6f 61 74 28 33 20 2d 20 69 29 20 2f 20 33 5d 20 66 6f oat(i)./.3,.float(3.-.i)./.3].fo
4460 72 20 69 20 69 6e 20 5b 31 2c 20 32 5d 5d 5c 6e 5c 6e 43 74 30 31 20 3d 20 5b 30 20 66 6f 72 20 r.i.in.[1,.2]]\n\nCt01.=.[0.for.
4480 69 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 i.in.range(2)]\nfor.i.in.range(2
44a0 29 3a 5c 6e 20 20 20 20 43 74 30 31 5b 69 5d 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d ):\n....Ct01[i].=.ot.gromov.grom
44c0 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 5b 43 73 5b 30 5d ov_barycenters(n_samples,.[Cs[0]
44e0 2c 20 43 73 5b 31 5d 5d 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.Cs[1]],\n.....................
4500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 70 73 5b 30 5d 2c 20 70 73 ......................[ps[0],.ps
4520 5b 31 5d 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 [1]\n...........................
4540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5d 2c 20 70 2c 20 6c 61 6d 62 64 61 73 74 5b .................],.p,.lambdast[
4560 69 5d 2c 20 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 20 23 20 35 65 2d 34 2c 5c 6e 20 20 20 i],.'square_loss',..#.5e-4,\n...
4580 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 20 20 ................................
45a0 20 20 20 20 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 30 30 2c 20 74 6f 6c 3d 31 65 2d 33 29 5c ........max_iter=100,.tol=1e-3)\
45c0 6e 5c 6e 43 74 30 32 20 3d 20 5b 30 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 5c n\nCt02.=.[0.for.i.in.range(2)]\
45e0 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 3a 5c 6e 20 20 20 20 43 74 30 32 5b 69 5d nfor.i.in.range(2):\n....Ct02[i]
4600 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 73 28 .=.ot.gromov.gromov_barycenters(
4620 6e 5f 73 61 6d 70 6c 65 73 2c 20 5b 43 73 5b 30 5d 2c 20 43 73 5b 32 5d 5d 2c 5c 6e 20 20 20 20 n_samples,.[Cs[0],.Cs[2]],\n....
4640 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 20 20 ................................
4660 20 20 20 20 20 20 20 5b 70 73 5b 30 5d 2c 20 70 73 5b 32 5d 5c 6e 20 20 20 20 20 20 20 20 20 20 .......[ps[0],.ps[2]\n..........
4680 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 20 20 ................................
46a0 20 20 5d 2c 20 70 2c 20 6c 61 6d 62 64 61 73 74 5b 69 5d 2c 20 27 73 71 75 61 72 65 5f 6c 6f 73 ..],.p,.lambdast[i],.'square_los
46c0 73 27 2c 20 20 23 20 35 65 2d 34 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s',..#.5e-4,\n..................
46e0 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 6d 61 78 5f 69 74 65 .........................max_ite
4700 72 3d 31 30 30 2c 20 74 6f 6c 3d 31 65 2d 33 29 5c 6e 5c 6e 43 74 31 33 20 3d 20 5b 30 20 66 6f r=100,.tol=1e-3)\n\nCt13.=.[0.fo
4720 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 r.i.in.range(2)]\nfor.i.in.range
4740 28 32 29 3a 5c 6e 20 20 20 20 43 74 31 33 5b 69 5d 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 (2):\n....Ct13[i].=.ot.gromov.gr
4760 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 5b 43 73 5b omov_barycenters(n_samples,.[Cs[
4780 31 5d 2c 20 43 73 5b 33 5d 5d 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1],.Cs[3]],\n...................
47a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 70 73 5b 31 5d 2c 20 ........................[ps[1],.
47c0 70 73 5b 33 5d 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 ps[3]\n.........................
47e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5d 2c 20 70 2c 20 6c 61 6d 62 64 61 73 ...................],.p,.lambdas
4800 74 5b 69 5d 2c 20 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 20 23 20 35 65 2d 34 2c 5c 6e 20 t[i],.'square_loss',..#.5e-4,\n.
4820 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 20 20 ................................
4840 20 20 20 20 20 20 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 30 30 2c 20 74 6f 6c 3d 31 65 2d 33 ..........max_iter=100,.tol=1e-3
4860 29 5c 6e 5c 6e 43 74 32 33 20 3d 20 5b 30 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 )\n\nCt23.=.[0.for.i.in.range(2)
4880 5d 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 3a 5c 6e 20 20 20 20 43 74 32 33 5b ]\nfor.i.in.range(2):\n....Ct23[
48a0 69 5d 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 i].=.ot.gromov.gromov_barycenter
48c0 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 5b 43 73 5b 32 5d 2c 20 43 73 5b 33 5d 5d 2c 5c 6e 20 20 s(n_samples,.[Cs[2],.Cs[3]],\n..
48e0 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 20 20 ................................
4900 20 20 20 20 20 20 20 20 20 5b 70 73 5b 32 5d 2c 20 70 73 5b 33 5d 5c 6e 20 20 20 20 20 20 20 20 .........[ps[2],.ps[3]\n........
4920 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 20 20 ................................
4940 20 20 20 20 5d 2c 20 70 2c 20 6c 61 6d 62 64 61 73 74 5b 69 5d 2c 20 27 73 71 75 61 72 65 5f 6c ....],.p,.lambdast[i],.'square_l
4960 6f 73 73 27 2c 20 20 23 20 35 65 2d 34 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 oss',..#.5e-4,\n................
4980 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 6d 61 78 5f 69 ...........................max_i
49a0 74 65 72 3d 31 30 30 2c 20 74 6f 6c 3d 31 65 2d 33 29 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 ter=100,.tol=1e-3)".......],....
49c0 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 0a 20 20 20 20 7d 2c 0a 20 20 ..."cell_type":."code".....},...
49e0 20 20 7b 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 ..{......."metadata":.{},.......
4a00 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 56 69 73 75 61 6c 69 7a 61 74 69 "source":.[........."Visualizati
4a20 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 54 68 65 20 50 43 41 20 68 65 6c on\n-------------\n\nThe.PCA.hel
4a40 70 73 20 69 6e 20 67 65 74 74 69 6e 67 20 63 6f 6e 73 69 73 74 65 6e 63 79 20 62 65 74 77 65 65 ps.in.getting.consistency.betwee
4a60 6e 20 74 68 65 20 72 6f 74 61 74 69 6f 6e 73 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 n.the.rotations\n\n".......],...
4a80 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 0a 20 20 20 20 ...."cell_type":."markdown".....
4aa0 7d 2c 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"
4ac0 3a 20 6e 75 6c 6c 2c 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 :.null,......."metadata":.{.....
4ae0 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 2c 0a ...."collapsed":.false.......},.
4b00 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ......"outputs":.[],......."sour
4b20 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 63 6c 66 20 3d 20 50 43 41 28 6e 5f 63 6f 6d 70 ce":.[........."clf.=.PCA(n_comp
4b40 6f 6e 65 6e 74 73 3d 32 29 5c 6e 6e 70 6f 73 20 3d 20 5b 30 2c 20 30 2c 20 30 2c 20 30 5d 5c 6e onents=2)\nnpos.=.[0,.0,.0,.0]\n
4b60 6e 70 6f 73 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 73 5b 73 5d 2c 20 32 29 20 66 6f 72 npos.=.[smacof_mds(Cs[s],.2).for
4b80 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 5c 6e 5c 6e 6e 70 6f 73 74 30 31 20 3d 20 5b 30 2c .s.in.range(S)]\n\nnpost01.=.[0,
4ba0 20 30 5d 5c 6e 6e 70 6f 73 74 30 31 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 74 30 31 5b .0]\nnpost01.=.[smacof_mds(Ct01[
4bc0 73 5d 2c 20 32 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 5c 6e 6e 70 6f 73 74 s],.2).for.s.in.range(2)]\nnpost
4be0 30 31 20 3d 20 5b 63 6c 66 2e 66 69 74 5f 74 72 61 6e 73 66 6f 72 6d 28 6e 70 6f 73 74 30 31 5b 01.=.[clf.fit_transform(npost01[
4c00 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 5c 6e 5c 6e 6e 70 6f 73 74 30 s]).for.s.in.range(2)]\n\nnpost0
4c20 32 20 3d 20 5b 30 2c 20 30 5d 5c 6e 6e 70 6f 73 74 30 32 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 2.=.[0,.0]\nnpost02.=.[smacof_md
4c40 73 28 43 74 30 32 5b 73 5d 2c 20 32 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d s(Ct02[s],.2).for.s.in.range(2)]
4c60 5c 6e 6e 70 6f 73 74 30 32 20 3d 20 5b 63 6c 66 2e 66 69 74 5f 74 72 61 6e 73 66 6f 72 6d 28 6e \nnpost02.=.[clf.fit_transform(n
4c80 70 6f 73 74 30 32 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 5c 6e 5c post02[s]).for.s.in.range(2)]\n\
4ca0 6e 6e 70 6f 73 74 31 33 20 3d 20 5b 30 2c 20 30 5d 5c 6e 6e 70 6f 73 74 31 33 20 3d 20 5b 73 6d nnpost13.=.[0,.0]\nnpost13.=.[sm
4cc0 61 63 6f 66 5f 6d 64 73 28 43 74 31 33 5b 73 5d 2c 20 32 29 20 66 6f 72 20 73 20 69 6e 20 72 61 acof_mds(Ct13[s],.2).for.s.in.ra
4ce0 6e 67 65 28 32 29 5d 5c 6e 6e 70 6f 73 74 31 33 20 3d 20 5b 63 6c 66 2e 66 69 74 5f 74 72 61 6e nge(2)]\nnpost13.=.[clf.fit_tran
4d00 73 66 6f 72 6d 28 6e 70 6f 73 74 31 33 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 sform(npost13[s]).for.s.in.range
4d20 28 32 29 5d 5c 6e 5c 6e 6e 70 6f 73 74 32 33 20 3d 20 5b 30 2c 20 30 5d 5c 6e 6e 70 6f 73 74 32 (2)]\n\nnpost23.=.[0,.0]\nnpost2
4d40 33 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 74 32 33 5b 73 5d 2c 20 32 29 20 66 6f 72 20 3.=.[smacof_mds(Ct23[s],.2).for.
4d60 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 5c 6e 6e 70 6f 73 74 32 33 20 3d 20 5b 63 6c 66 2e 66 s.in.range(2)]\nnpost23.=.[clf.f
4d80 69 74 5f 74 72 61 6e 73 66 6f 72 6d 28 6e 70 6f 73 74 32 33 5b 73 5d 29 20 66 6f 72 20 73 20 69 it_transform(npost23[s]).for.s.i
4da0 6e 20 72 61 6e 67 65 28 32 29 5d 5c 6e 5c 6e 5c 6e 66 69 67 20 3d 20 70 6c 2e 66 69 67 75 72 65 n.range(2)]\n\n\nfig.=.pl.figure
4dc0 28 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 31 30 29 29 5c 6e 5c 6e 61 78 31 20 3d 20 70 6c 2e 73 (figsize=(10,.10))\n\nax1.=.pl.s
4de0 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 30 2c 20 30 29 29 5c 6e 70 6c 2e ubplot2grid((4,.4),.(0,.0))\npl.
4e00 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c xlim((-1,.1))\npl.ylim((-1,.1))\
4e20 6e 61 78 31 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 nax1.scatter(npos[0][:,.0],.npos
4e40 5b 30 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 5c 6e 5c 6e 61 78 32 20 3d 20 70 [0][:,.1],.color='r')\n\nax2.=.p
4e60 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 30 2c 20 31 29 29 5c 6e l.subplot2grid((4,.4),.(0,.1))\n
4e80 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 pl.xlim((-1,.1))\npl.ylim((-1,.1
4ea0 29 29 5c 6e 61 78 32 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 30 31 5b 31 5d 5b 3a 2c 20 30 5d ))\nax2.scatter(npost01[1][:,.0]
4ec0 2c 20 6e 70 6f 73 74 30 31 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 5c 6e ,.npost01[1][:,.1],.color='b')\n
4ee0 5c 6e 61 78 33 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 \nax3.=.pl.subplot2grid((4,.4),.
4f00 28 30 2c 20 32 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 70 6c 2e 79 6c (0,.2))\npl.xlim((-1,.1))\npl.yl
4f20 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 33 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 30 31 im((-1,.1))\nax3.scatter(npost01
4f40 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 30 31 5b 30 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c [0][:,.0],.npost01[0][:,.1],.col
4f60 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 34 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 or='b')\n\nax4.=.pl.subplot2grid
4f80 28 28 34 2c 20 34 29 2c 20 28 30 2c 20 33 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 ((4,.4),.(0,.3))\npl.xlim((-1,.1
4fa0 29 29 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 34 2e 73 63 61 74 74 65 ))\npl.ylim((-1,.1))\nax4.scatte
4fc0 72 28 6e 70 6f 73 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 r(npos[1][:,.0],.npos[1][:,.1],.
4fe0 63 6f 6c 6f 72 3d 27 72 27 29 5c 6e 5c 6e 61 78 35 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 color='r')\n\nax5.=.pl.subplot2g
5000 72 69 64 28 28 34 2c 20 34 29 2c 20 28 31 2c 20 30 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 rid((4,.4),.(1,.0))\npl.xlim((-1
5020 2c 20 31 29 29 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 35 2e 73 63 61 ,.1))\npl.ylim((-1,.1))\nax5.sca
5040 74 74 65 72 28 6e 70 6f 73 74 30 32 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 30 32 5b 31 tter(npost02[1][:,.0],.npost02[1
5060 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 36 20 3d 20 70 6c 2e ][:,.1],.color='b')\n\nax6.=.pl.
5080 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 31 2c 20 33 29 29 5c 6e 70 6c subplot2grid((4,.4),.(1,.3))\npl
50a0 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 .xlim((-1,.1))\npl.ylim((-1,.1))
50c0 5c 6e 61 78 36 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 31 33 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 \nax6.scatter(npost13[1][:,.0],.
50e0 6e 70 6f 73 74 31 33 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 5c 6e 5c 6e npost13[1][:,.1],.color='b')\n\n
5100 61 78 37 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 32 ax7.=.pl.subplot2grid((4,.4),.(2
5120 2c 20 30 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 70 6c 2e 79 6c 69 6d ,.0))\npl.xlim((-1,.1))\npl.ylim
5140 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 37 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 30 32 5b 30 ((-1,.1))\nax7.scatter(npost02[0
5160 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 30 32 5b 30 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 ][:,.0],.npost02[0][:,.1],.color
5180 3d 27 62 27 29 5c 6e 5c 6e 61 78 38 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 ='b')\n\nax8.=.pl.subplot2grid((
51a0 34 2c 20 34 29 2c 20 28 32 2c 20 33 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 4,.4),.(2,.3))\npl.xlim((-1,.1))
51c0 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 38 2e 73 63 61 74 74 65 72 28 \npl.ylim((-1,.1))\nax8.scatter(
51e0 6e 70 6f 73 74 31 33 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 31 33 5b 30 5d 5b 3a 2c 20 npost13[0][:,.0],.npost13[0][:,.
5200 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 39 20 3d 20 70 6c 2e 73 75 62 70 6c 1],.color='b')\n\nax9.=.pl.subpl
5220 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 33 2c 20 30 29 29 5c 6e 70 6c 2e 78 6c 69 6d ot2grid((4,.4),.(3,.0))\npl.xlim
5240 28 28 2d 31 2c 20 31 29 29 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 39 ((-1,.1))\npl.ylim((-1,.1))\nax9
5260 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 5b 32 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 5b 32 5d 5b .scatter(npos[2][:,.0],.npos[2][
5280 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 5c 6e 5c 6e 61 78 31 30 20 3d 20 70 6c 2e 73 :,.1],.color='r')\n\nax10.=.pl.s
52a0 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 33 2c 20 31 29 29 5c 6e 70 6c 2e ubplot2grid((4,.4),.(3,.1))\npl.
52c0 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c xlim((-1,.1))\npl.ylim((-1,.1))\
52e0 6e 61 78 31 30 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 32 33 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 nax10.scatter(npost23[1][:,.0],.
5300 6e 70 6f 73 74 32 33 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 5c 6e 5c 6e npost23[1][:,.1],.color='b')\n\n
5320 61 78 31 31 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 ax11.=.pl.subplot2grid((4,.4),.(
5340 33 2c 20 32 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 70 6c 2e 79 6c 69 3,.2))\npl.xlim((-1,.1))\npl.yli
5360 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 31 31 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 32 33 m((-1,.1))\nax11.scatter(npost23
5380 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 32 33 5b 30 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c [0][:,.0],.npost23[0][:,.1],.col
53a0 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 31 32 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 or='b')\n\nax12.=.pl.subplot2gri
53c0 64 28 28 34 2c 20 34 29 2c 20 28 33 2c 20 33 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 d((4,.4),.(3,.3))\npl.xlim((-1,.
53e0 31 29 29 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 31 32 2e 73 63 61 74 1))\npl.ylim((-1,.1))\nax12.scat
5400 74 65 72 28 6e 70 6f 73 5b 33 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 5b 33 5d 5b 3a 2c 20 31 5d ter(npos[3][:,.0],.npos[3][:,.1]
5420 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 20 20 20 22 63 65 ,.color='r')".......],......."ce
5440 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d ll_type":."code".....}...],..."m
5460 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a etadata":.{....."language_info":
5480 20 7b 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 .{......."name":."python",......
54a0 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 6e ."codemirror_mode":.{........."n
54c0 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f ame":."ipython",........."versio
54e0 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f n":.3.......},......."nbconvert_
5500 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 exporter":."python",......."vers
5520 69 6f 6e 22 3a 20 22 33 2e 35 2e 32 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c ion":."3.5.2",......."pygments_l
5540 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 exer":."ipython3",......."file_e
5560 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 xtension":.".py",......."mimetyp
5580 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 e":."text/x-python".....},....."
55a0 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 6e 61 kernelspec":.{......."display_na
55c0 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 me":."Python.3",......."name":."
55e0 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 python3",......."language":."pyt
5600 68 6f 6e 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f hon".....}...},..."nbformat_mino
5620 72 22 3a 20 30 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 0a 7d 50 4b 03 04 14 00 00 00 r":.0,..."nbformat":.4.}PK......
5640 00 00 2d 60 cb 4c 17 03 7f 9a 5e 13 00 00 5e 13 00 00 16 00 00 00 70 6c 6f 74 5f 6f 70 74 69 6d ..-`.L....^...^.......plot_optim
5660 5f 4f 54 72 65 67 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b _OTreg.ipynb{..."cells":.[.....{
5680 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 0a 20 20 20 20 ......."cell_type":."code",.....
56a0 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 0a 20 20 20 20 20 .."execution_count":.null,......
56c0 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
56e0 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 d":.false.......},......."output
5700 73 22 3a 20 5b 5d 2c 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 s":.[],......."source":.[.......
5720 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 0a 20 .."%matplotlib.inline".......]..
5740 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
5760 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c markdown",......."metadata":.{},
5780 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 20 ......."source":.[........."\n#.
57a0 52 65 67 75 6c 61 72 69 7a 65 64 20 4f 54 20 77 69 74 68 20 67 65 6e 65 72 69 63 20 73 6f 6c 76 Regularized.OT.with.generic.solv
57c0 65 72 5c 6e 5c 6e 5c 6e 49 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 74 er\n\n\nIllustrates.the.use.of.t
57e0 68 65 20 67 65 6e 65 72 69 63 20 73 6f 6c 76 65 72 20 66 6f 72 20 72 65 67 75 6c 61 72 69 7a 65 he.generic.solver.for.regularize
5800 64 20 4f 54 20 77 69 74 68 5c 6e 75 73 65 72 2d 64 65 73 69 67 6e 65 64 20 72 65 67 75 6c 61 72 d.OT.with\nuser-designed.regular
5820 69 7a 61 74 69 6f 6e 20 74 65 72 6d 2e 20 49 74 20 75 73 65 73 20 43 6f 6e 64 69 74 69 6f 6e 61 ization.term..It.uses.Conditiona
5840 6c 20 67 72 61 64 69 65 6e 74 20 61 73 20 69 6e 20 5b 36 5d 20 61 6e 64 5c 6e 67 65 6e 65 72 61 l.gradient.as.in.[6].and\ngenera
5860 6c 69 7a 65 64 20 43 6f 6e 64 69 74 69 6f 6e 61 6c 20 47 72 61 64 69 65 6e 74 20 61 73 20 70 72 lized.Conditional.Gradient.as.pr
5880 6f 70 6f 73 65 64 20 69 6e 20 5b 35 5d 5b 37 5d 2e 5c 6e 5c 6e 5c 6e 5b 35 5d 20 4e 2e 20 43 6f oposed.in.[5][7].\n\n\n[5].N..Co
58a0 75 72 74 79 3b 20 52 2e 20 46 6c 61 6d 61 72 79 3b 20 44 2e 20 54 75 69 61 3b 20 41 2e 20 52 61 urty;.R..Flamary;.D..Tuia;.A..Ra
58c0 6b 6f 74 6f 6d 61 6d 6f 6e 6a 79 2c 20 4f 70 74 69 6d 61 6c 20 54 72 61 6e 73 70 6f 72 74 20 66 kotomamonjy,.Optimal.Transport.f
58e0 6f 72 5c 6e 44 6f 6d 61 69 6e 20 41 64 61 70 74 61 74 69 6f 6e 2c 20 69 6e 20 49 45 45 45 20 54 or\nDomain.Adaptation,.in.IEEE.T
5900 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f 6e 20 50 61 74 74 65 72 6e 20 41 6e 61 6c 79 73 69 73 20 ransactions.on.Pattern.Analysis.
5920 61 6e 64 20 4d 61 63 68 69 6e 65 5c 6e 49 6e 74 65 6c 6c 69 67 65 6e 63 65 20 2c 20 76 6f 6c 2e and.Machine\nIntelligence.,.vol.
5940 50 50 2c 20 6e 6f 2e 39 39 2c 20 70 70 2e 31 2d 31 2e 5c 6e 5c 6e 5b 36 5d 20 46 65 72 72 61 64 PP,.no.99,.pp.1-1.\n\n[6].Ferrad
5960 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 72 5c 75 30 30 ans,.S.,.Papadakis,.N.,.Peyr\u00
5980 65 39 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 5c 6e e9,.G.,.&.Aujol,.J..F..(2014).\n
59a0 52 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 Regularized.discrete.optimal.tra
59c0 6e 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 nsport..SIAM.Journal.on.Imaging.
59e0 53 63 69 65 6e 63 65 73 2c 5c 6e 37 28 33 29 2c 20 31 38 35 33 2d 31 38 38 32 2e 5c 6e 5c 6e 5b Sciences,\n7(3),.1853-1882.\n\n[
5a00 37 5d 20 52 61 6b 6f 74 6f 6d 61 6d 6f 6e 6a 79 2c 20 41 2e 2c 20 46 6c 61 6d 61 72 79 2c 20 52 7].Rakotomamonjy,.A.,.Flamary,.R
5a20 2e 2c 20 26 20 43 6f 75 72 74 79 2c 20 4e 2e 20 28 32 30 31 35 29 2e 20 47 65 6e 65 72 61 6c 69 .,.&.Courty,.N..(2015)..Generali
5a40 7a 65 64 5c 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 67 72 61 64 69 65 6e 74 3a 20 61 6e 61 6c 79 zed\nconditional.gradient:.analy
5a60 73 69 73 20 6f 66 20 63 6f 6e 76 65 72 67 65 6e 63 65 20 61 6e 64 20 61 70 70 6c 69 63 61 74 69 sis.of.convergence.and.applicati
5a80 6f 6e 73 2e 5c 6e 61 72 58 69 76 20 70 72 65 70 72 69 6e 74 20 61 72 58 69 76 3a 31 35 31 30 2e ons.\narXiv.preprint.arXiv:1510.
5aa0 30 36 35 36 37 2e 5c 6e 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 06567.\n\n\n\n\n".......].....},
5ac0 0a 20 20 20 20 7b 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 .....{......."cell_type":."code"
5ae0 2c 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,
5b00 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
5b20 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 llapsed":.false.......},......."
5b40 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a outputs":.[],......."source":.[.
5b60 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
5b80 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
5ba0 72 74 20 6f 74 5c 6e 69 6d 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 22 0a 20 20 20 20 20 20 5d 0a 20 rt.ot\nimport.ot.plot".......]..
5bc0 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
5be0 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c markdown",......."metadata":.{},
5c00 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 65 ......."source":.[........."Gene
5c20 72 61 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 rate.data\n-------------\n\n"...
5c40 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ....].....},.....{......."cell_t
5c60 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 ype":."code",......."execution_c
5c80 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ount":.null,......."metadata":.{
5ca0 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.....
5cc0 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 ..},......."outputs":.[],.......
5ce0 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 70 61 72 61 6d 65 74 "source":.[........."#%%.paramet
5d00 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 5c 6e 5c 6e 23 20 62 ers\n\nn.=.100..#.nb.bins\n\n#.b
5d20 69 6e 20 70 6f 73 69 74 69 6f 6e 73 5c 6e 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 in.positions\nx.=.np.arange(n,.d
5d40 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c 6e 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 type=np.float64)\n\n#.Gaussian.d
5d60 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 61 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 istributions\na.=.ot.datasets.ma
5d80 6b 65 5f 31 44 5f 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 ke_1D_gauss(n,.m=20,.s=5)..#.m=.
5da0 6d 65 61 6e 2c 20 73 3d 20 73 74 64 5c 6e 62 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 mean,.s=.std\nb.=.ot.datasets.ma
5dc0 6b 65 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 31 30 29 5c 6e 5c 6e 23 20 ke_1D_gauss(n,.m=60,.s=10)\n\n#.
5de0 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 2e 72 65 73 68 61 loss.matrix\nM.=.ot.dist(x.resha
5e00 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 31 29 29 29 5c 6e pe((n,.1)),.x.reshape((n,.1)))\n
5e20 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 M./=.M.max()".......].....},....
5e40 20 7b 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"
5e60 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 ,......."metadata":.{},......."s
5e80 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 5c 6e 2d 2d ource":.[........."Solve.EMD\n--
5ea0 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 -------\n\n".......].....},.....
5ec0 7b 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 0a 20 20 20 {......."cell_type":."code",....
5ee0 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 0a 20 20 20 20 ..."execution_count":.null,.....
5f00 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
5f20 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 ed":.false.......},......."outpu
5f40 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 ts":.[],......."source":.[......
5f60 20 20 20 22 23 25 25 20 45 4d 44 5c 6e 5c 6e 47 30 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c ..."#%%.EMD\n\nG0.=.ot.emd(a,.b,
5f80 20 4d 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 .M)\n\npl.figure(3,.figsize=(5,.
5fa0 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 30 5))\not.plot.plot1D_mat(a,.b,.G0
5fc0 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d ,.'OT.matrix.G0')".......].....}
5fe0 2c 0a 20 20 20 20 7b 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
6000 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 down",......."metadata":.{},....
6020 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 4d ..."source":.[........."Solve.EM
6040 44 20 77 69 74 68 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 D.with.Frobenius.norm.regulariza
6060 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d tion\n--------------------------
6080 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a ------------------\n\n".......].
60a0 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ....},.....{......."cell_type":.
60c0 22 63 6f 64 65 22 2c 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 "code",......."execution_count":
60e0 20 6e 75 6c 6c 2c 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 .null,......."metadata":.{......
6100 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 2c 0a 20 ..."collapsed":.false.......},..
6120 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ....."outputs":.[],......."sourc
6140 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 20 e":.[........."#%%.Example.with.
6160 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 5c Frobenius.norm.regularization\n\
6180 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 6e n\ndef.f(G):\n....return.0.5.*.n
61a0 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 20 p.sum(G**2)\n\n\ndef.df(G):\n...
61c0 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 32 .return.G\n\n\nreg.=.1e-1\n\nGl2
61e0 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 20 .=.ot.optim.cg(a,.b,.M,.reg,.f,.
6200 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 33 df,.verbose=True)\n\npl.figure(3
6220 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 2c )\not.plot.plot1D_mat(a,.b,.Gl2,
6240 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 5d .'OT.matrix.Frob..reg')".......]
6260 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
6280 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ."markdown",......."metadata":.{
62a0 7d 2c 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 },......."source":.[........."So
62c0 6c 76 65 20 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 lve.EMD.with.entropic.regulariza
62e0 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d tion\n--------------------------
6300 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c ------------\n\n".......].....},
6320 0a 20 20 20 20 7b 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 .....{......."cell_type":."code"
6340 2c 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,
6360 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
6380 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 llapsed":.false.......},......."
63a0 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a outputs":.[],......."source":.[.
63c0 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 65 6e 74 72 6f 70 ........"#%%.Example.with.entrop
63e0 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 5c 6e 5c 6e 64 65 66 20 66 28 47 29 3a ic.regularization\n\n\ndef.f(G):
6400 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 73 75 6d 28 47 20 2a 20 6e 70 2e 6c 6f 67 28 47 \n....return.np.sum(G.*.np.log(G
6420 29 29 5c 6e 5c 6e 5c 6e 64 65 66 20 64 66 28 47 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e ))\n\n\ndef.df(G):\n....return.n
6440 70 2e 6c 6f 67 28 47 29 20 2b 20 31 2e 5c 6e 5c 6e 5c 6e 72 65 67 20 3d 20 31 65 2d 33 5c 6e 5c p.log(G).+.1.\n\n\nreg.=.1e-3\n\
6460 6e 47 65 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 nGe.=.ot.optim.cg(a,.b,.M,.reg,.
6480 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 69 67 75 72 f,.df,.verbose=True)\n\npl.figur
64a0 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 6f 74 2e 70 6c e(4,.figsize=(5,.5))\not.plot.pl
64c0 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 65 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 45 6e ot1D_mat(a,.b,.Ge,.'OT.matrix.En
64e0 74 72 6f 70 2e 20 72 65 67 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 trop..reg')".......].....},.....
6500 7b 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",
6520 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f ......."metadata":.{},......."so
6540 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 77 69 74 68 urce":.[........."Solve.EMD.with
6560 20 46 72 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 .Frobenius.norm.+.entropic.regul
6580 61 72 69 7a 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d arization\n---------------------
65a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
65c0 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 --\n\n".......].....},.....{....
65e0 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 ..."cell_type":."code",......."e
6600 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 xecution_count":.null,......."me
6620 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":.
6640 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 false.......},......."outputs":.
6660 5b 5d 2c 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 [],......."source":.[........."#
6680 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 2b %%.Example.with.Frobenius.norm.+
66a0 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 77 69 74 68 20 67 63 .entropic.regularization.with.gc
66c0 67 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 30 2e 35 g\n\n\ndef.f(G):\n....return.0.5
66e0 20 2a 20 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 .*.np.sum(G**2)\n\n\ndef.df(G):\
6700 6e 20 20 20 20 72 65 74 75 72 6e 20 47 5c 6e 5c 6e 5c 6e 72 65 67 31 20 3d 20 31 65 2d 33 5c 6e n....return.G\n\n\nreg1.=.1e-3\n
6720 72 65 67 32 20 3d 20 31 65 2d 31 5c 6e 5c 6e 47 65 6c 32 20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 67 reg2.=.1e-1\n\nGel2.=.ot.optim.g
6740 63 67 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 31 2c 20 72 65 67 32 2c 20 66 2c 20 64 66 2c 20 76 cg(a,.b,.M,.reg1,.reg2,.f,.df,.v
6760 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 35 2c 20 66 69 67 erbose=True)\n\npl.figure(5,.fig
6780 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 size=(5,.5))\not.plot.plot1D_mat
67a0 28 61 2c 20 62 2c 20 47 65 6c 32 2c 20 27 4f 54 20 65 6e 74 72 6f 70 69 63 20 2b 20 6d 61 74 72 (a,.b,.Gel2,.'OT.entropic.+.matr
67c0 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 ix.Frob..reg')\npl.show()"......
67e0 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 .].....}...],..."metadata":.{...
6800 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
6820 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 _name":."Python.3",......."langu
6840 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 age":."python",......."name":."p
6860 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 ython3".....},....."language_inf
6880 6f 22 3a 20 7b 0a 20 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 o":.{......."codemirror_mode":.{
68a0 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 2c 0a 20 20 20 20 ........."name":."ipython",.....
68c0 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 ...."version":.3.......},.......
68e0 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 "file_extension":.".py",......."
6900 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 0a 20 20 20 20 mimetype":."text/x-python",.....
6920 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e .."name":."python",......."nbcon
6940 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 0a 20 20 20 20 20 20 vert_exporter":."python",.......
6960 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 33 22 2c 0a 20 20 "pygments_lexer":."ipython3",...
6980 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 7d ...."version":."3.6.5".....}...}
69a0 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d ,..."nbformat":.4,..."nbformat_m
69c0 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 2d 60 cb 4c d1 72 b5 4d f4 1c 00 00 inor":.0.}PK........-`.L.r.M....
69e0 f4 1c 00 00 12 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 64 32 2e 69 70 79 6e 62 7b 0a 20 20 22 63 ........plot_otda_d2.ipynb{..."c
6a00 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ells":.[.....{......."cell_type"
6a20 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 :."code",......."execution_count
6a40 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 ":.null,......."metadata":.{....
6a60 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 2c ....."collapsed":.false.......},
6a80 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 ......."outputs":.[],......."sou
6aa0 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 6c rce":.[........."%matplotlib.inl
6ac0 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 ine".......].....},.....{.......
6ae0 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 "cell_type":."markdown",......."
6b00 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b metadata":.{},......."source":.[
6b20 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
6b40 74 61 74 69 6f 6e 20 6f 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e tation.on.empirical.distribution
6b60 73 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 63 65 73 20 61 s\n\n\nThis.example.introduces.a
6b80 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 73 65 74 74 69 .domain.adaptation.in.a.2D.setti
6ba0 6e 67 2e 20 49 74 20 65 78 70 6c 69 63 69 74 73 5c 6e 74 68 65 20 70 72 6f 62 6c 65 6d 20 6f 66 ng..It.explicits\nthe.problem.of
6bc0 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 61 6e 64 20 69 6e 74 72 6f 64 75 63 65 .domain.adaptation.and.introduce
6be0 73 20 73 6f 6d 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 6e 61 70 70 72 6f 61 s.some.optimal.transport\napproa
6c00 63 68 65 73 20 74 6f 20 73 6f 6c 76 65 20 69 74 2e 5c 6e 5c 6e 51 75 61 6e 74 69 74 69 65 73 20 ches.to.solve.it.\n\nQuantities.
6c20 73 75 63 68 20 61 73 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 2c 20 67 72 65 61 74 such.as.optimal.couplings,.great
6c40 65 72 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 20 61 6e 64 5c 6e 74 72 er.coupling.coefficients.and\ntr
6c60 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 20 61 72 65 20 72 65 70 72 65 73 65 6e 74 65 ansported.samples.are.represente
6c80 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 67 69 76 65 20 61 20 76 69 73 75 61 6c 20 75 6e 64 65 d.in.order.to.give.a.visual.unde
6ca0 72 73 74 61 6e 64 69 6e 67 5c 6e 6f 66 20 77 68 61 74 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 rstanding\nof.what.the.transport
6cc0 20 6d 65 74 68 6f 64 73 20 61 72 65 20 64 6f 69 6e 67 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d .methods.are.doing.\n\n".......]
6ce0 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
6d00 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 ."code",......."execution_count"
6d20 3a 20 6e 75 6c 6c 2c 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 :.null,......."metadata":.{.....
6d40 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 2c 0a ...."collapsed":.false.......},.
6d60 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ......"outputs":.[],......."sour
6d80 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.
6da0 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>\
6dc0 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
6de0 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
6e00 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 6d 61 74 70 ense:.MIT.License\n\nimport.matp
6e20 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 69 lotlib.pylab.as.pl\nimport.ot\ni
6e40 6d 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 mport.ot.plot".......].....},...
6e60 20 20 7b 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
6e80 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 ",......."metadata":.{},......."
6ea0 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 64 61 74 source":.[........."generate.dat
6ec0 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 a\n-------------\n\n".......]...
6ee0 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 ..},.....{......."cell_type":."c
6f00 6f 64 65 22 2c 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 ode",......."execution_count":.n
6f20 75 6c 6c 2c 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 ull,......."metadata":.{........
6f40 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 2c 0a 20 20 20 ."collapsed":.false.......},....
6f60 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 ..."outputs":.[],......."source"
6f80 3a 20 5b 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 :.[........."n_samples_source.=.
6fa0 31 35 30 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 150\nn_samples_target.=.150\n\nX
6fc0 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 64 61 74 61 5f 63 6c s,.ys.=.ot.datasets.make_data_cl
6fe0 61 73 73 69 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 assif('3gauss',.n_samples_source
7000 29 5c 6e 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 64 61 74 )\nXt,.yt.=.ot.datasets.make_dat
7020 61 5f 63 6c 61 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 a_classif('3gauss2',.n_samples_t
7040 61 72 67 65 74 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 arget)\n\n#.Cost.matrix\nM.=.ot.
7060 64 69 73 74 28 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 dist(Xs,.Xt,.metric='sqeuclidean
7080 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 ')".......].....},.....{......."
70a0 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d cell_type":."markdown",......."m
70c0 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a etadata":.{},......."source":.[.
70e0 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 65 72 65 ........"Instantiate.the.differe
7100 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 69 74 20 nt.transport.algorithms.and.fit.
7120 74 68 65 6d 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d them\n--------------------------
7140 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
7160 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 -\n\n".......].....},.....{.....
7180 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 .."cell_type":."code",......."ex
71a0 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 ecution_count":.null,......."met
71c0 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
71e0 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b alse.......},......."outputs":.[
7200 5d 2c 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":.[........."#.
7220 45 4d 44 20 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 4d EMD.Transport\not_emd.=.ot.da.EM
7240 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 20 DTransport()\not_emd.fit(Xs=Xs,.
7260 58 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 5c 6e Xt=Xt)\n\n#.Sinkhorn.Transport\n
7280 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
72a0 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
72c0 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 72 6e 20 54 it(Xs=Xs,.Xt=Xt)\n\n#.Sinkhorn.T
72e0 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 20 72 65 67 75 6c 61 ransport.with.Group.lasso.regula
7300 72 69 7a 61 74 69 6f 6e 5c 6e 6f 74 5f 6c 70 6c 31 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f rization\not_lpl1.=.ot.da.Sinkho
7320 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 2c 20 72 65 67 5f rnLpl1Transport(reg_e=1e-1,.reg_
7340 63 6c 3d 31 65 30 29 5c 6e 6f 74 5f 6c 70 6c 31 2e 66 69 74 28 58 73 3d 58 73 2c 20 79 73 3d 79 cl=1e0)\not_lpl1.fit(Xs=Xs,.ys=y
7360 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 74 72 61 6e 73 70 6f 72 74 20 73 6f 75 72 63 65 20 s,.Xt=Xt)\n\n#.transport.source.
7380 73 61 6d 70 6c 65 73 20 6f 6e 74 6f 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 5c 6e 74 72 61 samples.onto.target.samples\ntra
73a0 6e 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 nsp_Xs_emd.=.ot_emd.transform(Xs
73c0 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 =Xs)\ntransp_Xs_sinkhorn.=.ot_si
73e0 6e 6b 68 6f 72 6e 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 nkhorn.transform(Xs=Xs)\ntransp_
7400 58 73 5f 6c 70 6c 31 20 3d 20 6f 74 5f 6c 70 6c 31 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 Xs_lpl1.=.ot_lpl1.transform(Xs=X
7420 73 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 s)".......].....},.....{......."
7440 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d cell_type":."markdown",......."m
7460 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a etadata":.{},......."source":.[.
7480 20 20 20 20 20 20 20 20 22 46 69 67 20 31 20 3a 20 70 6c 6f 74 73 20 73 6f 75 72 63 65 20 61 6e ........"Fig.1.:.plots.source.an
74a0 64 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 20 2b 20 6d 61 74 72 69 78 20 6f 66 20 70 61 69 d.target.samples.+.matrix.of.pai
74c0 72 77 69 73 65 20 64 69 73 74 61 6e 63 65 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d rwise.distance\n----------------
74e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
7500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 ---------------------\n\n"......
7520 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 .].....},.....{......."cell_type
7540 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e ":."code",......."execution_coun
7560 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 t":.null,......."metadata":.{...
7580 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.......}
75a0 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f ,......."outputs":.[],......."so
75c0 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 20 66 urce":.[........."pl.figure(1,.f
75e0 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 74 28 32 2c 20 igsize=(10,.10))\npl.subplot(2,.
7600 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 20 58 73 5b 3a 2,.1)\npl.scatter(Xs[:,.0],.Xs[:
7620 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
7640 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 5b 5d 29 5c 6e ource.samples')\npl.xticks([])\n
7660 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 63 3d 30 29 5c pl.yticks([])\npl.legend(loc=0)\
7680 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 29 5c 6e 5c 6e npl.title('Source..samples')\n\n
76a0 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 74 74 65 72 28 pl.subplot(2,.2,.2)\npl.scatter(
76c0 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 65 72 Xt[:,.0],.Xt[:,.1],.c=yt,.marker
76e0 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 27 29 5c 6e 70 ='o',.label='Target.samples')\np
7700 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 70 6c 2e l.xticks([])\npl.yticks([])\npl.
7720 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 72 67 65 74 20 legend(loc=0)\npl.title('Target.
7740 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 32 2c 20 33 29 samples')\n\npl.subplot(2,.2,.3)
7760 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 6e 3d 27 6e 65 \npl.imshow(M,.interpolation='ne
7780 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 79 74 69 63 6b arest')\npl.xticks([])\npl.ytick
77a0 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 70 61 69 72 77 s([])\npl.title('Matrix.of.pairw
77c0 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 61 79 6f 75 74 ise.distances')\npl.tight_layout
77e0 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 ()".......].....},.....{......."
7800 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d cell_type":."markdown",......."m
7820 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a etadata":.{},......."source":.[.
7840 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
7860 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
7880 64 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ds\n----------------------------
78a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c -----------------------------\n\
78c0 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 n".......].....},.....{......."c
78e0 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 ell_type":."code",......."execut
7900 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ion_count":.null,......."metadat
7920 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 73 65 a":.{........."collapsed":.false
7940 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 .......},......."outputs":.[],..
7960 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 67 ....."source":.[........."pl.fig
7980 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 75 ure(2,.figsize=(10,.6))\n\npl.su
79a0 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 64 bplot(2,.3,.1)\npl.imshow(ot_emd
79c0 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 65 .coupling_,.interpolation='neare
79e0 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 5b st')\npl.xticks([])\npl.yticks([
7a00 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\\
7a20 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 2c nEMDTransport')\n\npl.subplot(2,
7a40 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 6f .3,.2)\npl.imshow(ot_sinkhorn.co
7a60 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 27 upling_,.interpolation='nearest'
7a80 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 5c )\npl.xticks([])\npl.yticks([])\
7aa0 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 69 npl.title('Optimal.coupling\\nSi
7ac0 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 28 nkhornTransport')\n\npl.subplot(
7ae0 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 70 2,.3,.3)\npl.imshow(ot_lpl1.coup
7b00 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 5c ling_,.interpolation='nearest')\
7b20 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 70 npl.xticks([])\npl.yticks([])\np
7b40 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 6b l.title('Optimal.coupling\\nSink
7b60 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 6f hornLpl1Transport')\n\npl.subplo
7b80 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 6c t(2,.3,.4)\not.plot.plot2D_sampl
7ba0 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 2c es_mat(Xs,.Xt,.ot_emd.coupling_,
7bc0 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 3a .c=[.5,..5,.1])\npl.scatter(Xs[:
7be0 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='+'
7c00 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 63 ,.label='Source.samples')\npl.sc
7c20 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 20 atter(Xt[:,.0],.Xt[:,.1],.c=yt,.
7c40 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 65 marker='o',.label='Target.sample
7c60 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 5d s')\npl.xticks([])\npl.yticks([]
7c80 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 66 )\npl.title('Main.coupling.coeff
7ca0 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 73 icients\\nEMDTransport')\n\npl.s
7cc0 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 5f ubplot(2,.3,.5)\not.plot.plot2D_
7ce0 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 2e samples_mat(Xs,.Xt,.ot_sinkhorn.
7d00 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 63 coupling_,.c=[.5,..5,.1])\npl.sc
7d20 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 20 atter(Xs[:,.0],.Xs[:,.1],.c=ys,.
7d40 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 65 marker='+',.label='Source.sample
7d60 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 20 s')\npl.scatter(Xt[:,.0],.Xt[:,.
7d80 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 72 1],.c=yt,.marker='o',.label='Tar
7da0 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 6c get.samples')\npl.xticks([])\npl
7dc0 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 70 .yticks([])\npl.title('Main.coup
7de0 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 6e ling.coefficients\\nSinkhornTran
7e00 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 6e sport')\n\npl.subplot(2,.3,.6)\n
7e20 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 58 ot.plot.plot2D_samples_mat(Xs,.X
7e40 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 2c t,.ot_lpl1.coupling_,.c=[.5,..5,
7e60 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 2c .1])\npl.scatter(Xs[:,.0],.Xs[:,
7e80 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 6f .1],.c=ys,.marker='+',.label='So
7ea0 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 2c urce.samples')\npl.scatter(Xt[:,
7ec0 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',
7ee0 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 69 .label='Target.samples')\npl.xti
7f00 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 65 cks([])\npl.yticks([])\npl.title
7f20 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 53 ('Main.coupling.coefficients\\nS
7f40 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 74 inkhornLpl1Transport')\npl.tight
7f60 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a _layout()".......].....},.....{.
7f80 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 0a 20 ......"cell_type":."markdown",..
7fa0 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ....."metadata":.{},......."sour
7fc0 63 65 22 3a 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 ce":.[........."Fig.3.:.plot.tra
7fe0 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nsported.samples\n--------------
8000 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a ------------------\n\n".......].
8020 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ....},.....{......."cell_type":.
8040 22 63 6f 64 65 22 2c 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 "code",......."execution_count":
8060 20 6e 75 6c 6c 2c 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 .null,......."metadata":.{......
8080 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 2c 0a 20 ..."collapsed":.false.......},..
80a0 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ....."outputs":.[],......."sourc
80c0 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 64 69 73 70 6c 61 79 20 74 72 61 6e 73 70 6f e":.[........."#.display.transpo
80e0 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 rted.samples\npl.figure(4,.figsi
8100 7a 65 3d 28 31 30 2c 20 34 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 ze=(10,.4))\npl.subplot(1,.3,.1)
8120 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],
8140 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
8160 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
8180 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 30 )\npl.scatter(transp_Xs_emd[:,.0
81a0 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 ],.transp_Xs_emd[:,.1],.c=ys,\n.
81c0 20 20 20 20 20 20 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 ..........marker='+',.label='Tra
81e0 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 nsp.samples',.s=30)\npl.title('T
8200 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 5c 6e 45 6d 64 54 72 61 6e 73 70 6f 72 ransported.samples\\nEmdTranspor
8220 74 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 78 74 69 63 6b 73 t')\npl.legend(loc=0)\npl.xticks
8240 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 73 75 62 70 6c 6f ([])\npl.yticks([])\n\npl.subplo
8260 74 28 31 2c 20 33 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c t(1,.3,.2)\npl.scatter(Xt[:,.0],
8280 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..
82a0 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',
82c0 20 61 6c 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 .alpha=0.5)\npl.scatter(transp_X
82e0 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 73 69 6e 6b s_sinkhorn[:,.0],.transp_Xs_sink
8300 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 20 20 6d 61 horn[:,.1],.c=ys,\n...........ma
8320 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 73 27 rker='+',.label='Transp.samples'
8340 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 20 73 ,.s=30)\npl.title('Transported.s
8360 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 70 6c amples\\nSinkhornTransport')\npl
8380 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 5c 6e 70 6c .xticks([])\npl.yticks([])\n\npl
83a0 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 .subplot(1,.3,.3)\npl.scatter(Xt
83c0 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='
83e0 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
8400 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 74 65 72 28 74 mples',.alpha=0.5)\npl.scatter(t
8420 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 58 73 5f 6c ransp_Xs_lpl1[:,.0],.transp_Xs_l
8440 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 20 6d 61 72 pl1[:,.1],.c=ys,\n...........mar
8460 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 73 27 2c ker='+',.label='Transp.samples',
8480 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 20 73 61 .s=30)\npl.title('Transported.sa
84a0 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 29 5c mples\\nSinkhornLpl1Transport')\
84c0 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 5c npl.xticks([])\npl.yticks([])\n\
84e0 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 npl.tight_layout()\npl.show()"..
8500 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 .....].....}...],..."metadata":.
8520 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
8540 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c play_name":."Python.3",......."l
8560 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 anguage":."python",......."name"
8580 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 :."python3".....},....."language
85a0 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 _info":.{......."codemirror_mode
85c0 22 3a 20 7b 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 2c 0a ":.{........."name":."ipython",.
85e0 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 ........"version":.3.......},...
8600 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 0a 20 20 20 ...."file_extension":.".py",....
8620 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 74 68 6f 6e 22 2c 0a ..."mimetype":."text/x-python",.
8640 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e ......"name":."python",......."n
8660 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 0a 20 20 bconvert_exporter":."python",...
8680 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 74 68 6f 6e 33 22 ...."pygments_lexer":."ipython3"
86a0 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d ,......."version":."3.6.5".....}
86c0 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d ...},..."nbformat":.4,..."nbform
86e0 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 2d 60 cb 4c a9 b8 76 f6 at_minor":.0.}PK........-`.L..v.
8700 f8 19 00 00 f8 19 00 00 1f 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 73 65 6d 69 5f 73 75 70 65 72 ............plot_otda_semi_super
8720 76 69 73 65 64 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a vised.ipynb{..."cells":.[.....{.
8740 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 0a 20 20 20 20 20 ......"cell_type":."code",......
8760 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 0a 20 20 20 20 20 20 ."execution_count":.null,.......
8780 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
87a0 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 ":.false.......},......."outputs
87c0 22 3a 20 5b 5d 2c 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":.[........
87e0 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 0a 20 20 ."%matplotlib.inline".......]...
8800 20 20 7d 2c 0a 20 20 20 20 7b 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
8820 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a arkdown",......."metadata":.{},.
8840 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 20 4f ......"source":.[........."\n#.O
8860 54 44 41 20 75 6e 73 75 70 65 72 76 69 73 65 64 20 76 73 20 73 65 6d 69 2d 73 75 70 65 72 76 69 TDA.unsupervised.vs.semi-supervi
8880 73 65 64 20 73 65 74 74 69 6e 67 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6e sed.setting\n\n\nThis.example.in
88a0 74 72 6f 64 75 63 65 73 20 61 20 73 65 6d 69 20 73 75 70 65 72 76 69 73 65 64 20 64 6f 6d 61 69 troduces.a.semi.supervised.domai
88c0 6e 20 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 5c 6e 49 n.adaptation.in.a.2D.setting.\nI
88e0 74 20 65 78 70 6c 69 63 69 74 73 20 74 68 65 20 70 72 6f 62 6c 65 6d 20 6f 66 20 73 65 6d 69 20 t.explicits.the.problem.of.semi.
8900 73 75 70 65 72 76 69 73 65 64 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 61 6e 64 supervised.domain.adaptation.and
8920 20 69 6e 74 72 6f 64 75 63 65 73 5c 6e 73 6f 6d 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 .introduces\nsome.optimal.transp
8940 6f 72 74 20 61 70 70 72 6f 61 63 68 65 73 20 74 6f 20 73 6f 6c 76 65 20 69 74 2e 5c 6e 5c 6e 51 ort.approaches.to.solve.it.\n\nQ
8960 75 61 6e 74 69 74 69 65 73 20 73 75 63 68 20 61 73 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 uantities.such.as.optimal.coupli
8980 6e 67 73 2c 20 67 72 65 61 74 65 72 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e ngs,.greater.coupling.coefficien
89a0 74 73 20 61 6e 64 5c 6e 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 20 61 72 65 20 ts.and\ntransported.samples.are.
89c0 72 65 70 72 65 73 65 6e 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 67 69 76 65 20 61 20 76 represented.in.order.to.give.a.v
89e0 69 73 75 61 6c 20 75 6e 64 65 72 73 74 61 6e 64 69 6e 67 5c 6e 6f 66 20 77 68 61 74 20 74 68 65 isual.understanding\nof.what.the
8a00 20 74 72 61 6e 73 70 6f 72 74 20 6d 65 74 68 6f 64 73 20 61 72 65 20 64 6f 69 6e 67 2e 5c 6e 5c .transport.methods.are.doing.\n\
8a20 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 n".......].....},.....{......."c
8a40 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 ell_type":."code",......."execut
8a60 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ion_count":.null,......."metadat
8a80 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 73 65 a":.{........."collapsed":.false
8aa0 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 .......},......."outputs":.[],..
8ac0 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 41 75 74 68 ....."source":.[........."#.Auth
8ae0 6f 72 73 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 ors:.Remi.Flamary.<remi.flamary@
8b00 75 6e 69 63 65 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 unice.fr>\n#..........Stanislas.
8b20 43 68 61 6d 62 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 Chambon.<stan.chambon@gmail.com>
8b40 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 5c 6e 5c 6e 69 \n#\n#.License:.MIT.License\n\ni
8b60 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
8b80 70 6f 72 74 20 6f 74 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 port.ot".......].....},.....{...
8ba0 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 0a 20 20 20 ...."cell_type":."markdown",....
8bc0 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ..."metadata":.{},......."source
8be0 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 74 61 5c 6e 2d 2d 2d ":.[........."Generate.data\n---
8c00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 ----------\n\n".......].....},..
8c20 20 20 20 7b 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 0a ...{......."cell_type":."code",.
8c40 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 0a 20 ......"execution_count":.null,..
8c60 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
8c80 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 apsed":.false.......},......."ou
8ca0 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 tputs":.[],......."source":.[...
8cc0 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 5c 6e 6e ......"n_samples_source.=.150\nn
8ce0 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 79 73 20 _samples_target.=.150\n\nXs,.ys.
8d00 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 =.ot.datasets.make_data_classif(
8d20 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 74 2c '3gauss',.n_samples_source)\nXt,
8d40 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 64 61 74 61 5f 63 6c 61 73 .yt.=.ot.datasets.make_data_clas
8d60 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 29 sif('3gauss2',.n_samples_target)
8d80 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 ".......].....},.....{......."ce
8da0 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 ll_type":."markdown",......."met
8dc0 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 adata":.{},......."source":.[...
8de0 20 20 20 20 20 20 22 54 72 61 6e 73 70 6f 72 74 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 20 ......"Transport.source.samples.
8e00 6f 6e 74 6f 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d onto.target.samples\n-----------
8e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
8e40 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 -\n\n".......].....},.....{.....
8e60 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 .."cell_type":."code",......."ex
8e80 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 ecution_count":.null,......."met
8ea0 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
8ec0 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b alse.......},......."outputs":.[
8ee0 5d 2c 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":.[........."#.
8f00 75 6e 73 75 70 65 72 76 69 73 65 64 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 5c 6e unsupervised.domain.adaptation\n
8f20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 ot_sinkhorn_un.=.ot.da.SinkhornT
8f40 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 69 6e 6b 68 6f 72 ransport(reg_e=1e-1)\not_sinkhor
8f60 6e 5f 75 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 70 5f 58 n_un.fit(Xs=Xs,.Xt=Xt)\ntransp_X
8f80 73 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 2e 74 s_sinkhorn_un.=.ot_sinkhorn_un.t
8fa0 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 5c 6e 23 20 73 65 6d 69 2d 73 75 70 65 72 76 ransform(Xs=Xs)\n\n#.semi-superv
8fc0 69 73 65 64 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 5c 6e 6f 74 5f 73 69 6e 6b 68 ised.domain.adaptation\not_sinkh
8fe0 6f 72 6e 5f 73 65 6d 69 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f orn_semi.=.ot.da.SinkhornTranspo
9000 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 5f 73 65 6d 69 rt(reg_e=1e-1)\not_sinkhorn_semi
9020 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 2c 20 79 73 3d 79 73 2c 20 79 74 3d 79 74 29 .fit(Xs=Xs,.Xt=Xt,.ys=ys,.yt=yt)
9040 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 20 3d 20 6f 74 5f 73 \ntransp_Xs_sinkhorn_semi.=.ot_s
9060 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 5c inkhorn_semi.transform(Xs=Xs)\n\
9080 6e 23 20 73 65 6d 69 20 73 75 70 65 72 76 69 73 65 64 20 44 41 20 75 73 65 73 20 61 76 61 69 6c n#.semi.supervised.DA.uses.avail
90a0 61 62 6c 65 20 6c 61 62 61 6c 65 64 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 20 74 6f 20 6d able.labaled.target.samples.to.m
90c0 6f 64 69 66 79 20 74 68 65 20 63 6f 73 74 5c 6e 23 20 6d 61 74 72 69 78 20 69 6e 76 6f 6c 76 65 odify.the.cost\n#.matrix.involve
90e0 64 20 69 6e 20 74 68 65 20 4f 54 20 70 72 6f 62 6c 65 6d 2e 20 54 68 65 20 63 6f 73 74 20 6f 66 d.in.the.OT.problem..The.cost.of
9100 20 74 72 61 6e 73 70 6f 72 74 69 6e 67 20 61 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 5c 6e 23 .transporting.a.source.sample\n#
9120 20 6f 66 20 63 6c 61 73 73 20 41 20 6f 6e 74 6f 20 61 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 .of.class.A.onto.a.target.sample
9140 20 6f 66 20 63 6c 61 73 73 20 42 20 21 3d 20 41 20 69 73 20 73 65 74 20 74 6f 20 69 6e 66 69 6e .of.class.B.!=.A.is.set.to.infin
9160 69 74 65 2c 20 6f 72 20 61 5c 6e 23 20 76 65 72 79 20 6c 61 72 67 65 20 76 61 6c 75 65 5c 6e 5c ite,.or.a\n#.very.large.value\n\
9180 6e 23 20 6e 6f 74 65 20 74 68 61 74 20 69 6e 20 74 68 65 20 70 72 65 73 65 6e 74 20 63 61 73 65 n#.note.that.in.the.present.case
91a0 20 77 65 20 63 6f 6e 73 69 64 65 72 20 74 68 61 74 20 61 6c 6c 20 74 68 65 20 74 61 72 67 65 74 .we.consider.that.all.the.target
91c0 20 73 61 6d 70 6c 65 73 20 61 72 65 5c 6e 23 20 6c 61 62 65 6c 65 64 2e 20 46 6f 72 20 64 61 69 .samples.are\n#.labeled..For.dai
91e0 6c 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73 6f 6d 65 20 74 61 72 67 65 74 20 73 61 6d ly.applications,.some.target.sam
9200 70 6c 65 20 6d 69 67 68 74 20 6e 6f 74 20 68 61 76 65 20 6c 61 62 65 6c 73 2c 5c 6e 23 20 69 6e ple.might.not.have.labels,\n#.in
9220 20 74 68 69 73 20 63 61 73 65 20 74 68 65 20 65 6c 65 6d 65 6e 74 20 6f 66 20 79 74 20 63 6f 72 .this.case.the.element.of.yt.cor
9240 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 73 65 20 73 61 6d 70 6c 65 73 20 73 68 6f 75 responding.to.these.samples.shou
9260 6c 64 20 62 65 5c 6e 23 20 66 69 6c 6c 65 64 20 77 69 74 68 20 2d 31 2e 5c 6e 5c 6e 23 20 57 61 ld.be\n#.filled.with.-1.\n\n#.Wa
9280 72 6e 69 6e 67 3a 20 77 65 20 72 65 63 61 6c 6c 20 74 68 61 74 20 2d 31 20 63 61 6e 6e 6f 74 20 rning:.we.recall.that.-1.cannot.
92a0 62 65 20 75 73 65 64 20 61 73 20 61 20 63 6c 61 73 73 20 6c 61 62 65 6c 22 0a 20 20 20 20 20 20 be.used.as.a.class.label".......
92c0 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ].....},.....{......."cell_type"
92e0 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 :."markdown",......."metadata":.
9300 7b 7d 2c 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 {},......."source":.[........."F
9320 69 67 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 ig.1.:.plots.source.and.target.s
9340 61 6d 70 6c 65 73 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 amples.+.matrix.of.pairwise.dist
9360 61 6e 63 65 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ance\n--------------------------
9380 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
93a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a -----------\n\n".......].....},.
93c0 20 20 20 20 7b 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 ....{......."cell_type":."code",
93e0 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 0a ......."execution_count":.null,.
9400 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 6c ......"metadata":.{........."col
9420 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
9440 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
9460 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 7a 65 3d 28 31 30 ......."pl.figure(1,.figsize=(10
9480 2c 20 31 30 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e ,.10))\npl.subplot(2,.2,.1)\npl.
94a0 73 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 scatter(Xs[:,.0],.Xs[:,.1],.c=ys
94c0 2c 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 ,.marker='+',.label='Source.samp
94e0 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 73 28 les')\npl.xticks([])\npl.yticks(
9500 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 65 28 [])\npl.legend(loc=0)\npl.title(
9520 27 53 6f 75 72 63 65 20 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 'Source..samples')\n\npl.subplot
9540 28 32 2c 20 32 2c 20 32 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,.2)\npl.scatter(Xt[:,.0],.
9560 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 20 6c 61 62 65 Xt[:,.1],.c=yt,.marker='o',.labe
9580 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 69 63 6b 73 28 5b l='Target.samples')\npl.xticks([
95a0 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 63 ])\npl.yticks([])\npl.legend(loc
95c0 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c =0)\npl.title('Target.samples')\
95e0 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f n\npl.subplot(2,.2,.3)\npl.imsho
9600 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 2e 63 6f 73 74 5f 2c 20 69 6e 74 65 72 70 6f 6c w(ot_sinkhorn_un.cost_,.interpol
9620 61 74 69 6f 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 ation='nearest')\npl.xticks([])\
9640 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 43 6f 73 74 20 6d npl.yticks([])\npl.title('Cost.m
9660 61 74 72 69 78 20 2d 20 75 6e 73 75 70 65 72 76 69 73 65 64 20 44 41 27 29 5c 6e 5c 6e 70 6c 2e atrix.-.unsupervised.DA')\n\npl.
9680 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 34 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 subplot(2,.2,.4)\npl.imshow(ot_s
96a0 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 2e 63 6f 73 74 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f inkhorn_semi.cost_,.interpolatio
96c0 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.
96e0 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 yticks([])\npl.title('Cost.matri
9700 78 20 2d 20 73 65 6d 69 73 75 70 65 72 76 69 73 65 64 20 44 41 27 29 5c 6e 5c 6e 70 6c 2e 74 69 x.-.semisupervised.DA')\n\npl.ti
9720 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 23 20 74 68 65 20 6f 70 74 69 6d 61 6c 20 63 6f ght_layout()\n\n#.the.optimal.co
9740 75 70 6c 69 6e 67 20 69 6e 20 74 68 65 20 73 65 6d 69 2d 73 75 70 65 72 76 69 73 65 64 20 44 41 upling.in.the.semi-supervised.DA
9760 20 63 61 73 65 20 77 69 6c 6c 20 65 78 68 69 62 69 74 20 5c 22 20 73 68 61 70 65 5c 6e 23 20 73 .case.will.exhibit.\".shape\n#.s
9780 69 6d 69 6c 61 72 5c 22 20 74 6f 20 74 68 65 20 63 6f 73 74 20 6d 61 74 72 69 78 2c 20 28 62 6c imilar\".to.the.cost.matrix,.(bl
97a0 6f 63 6b 20 64 69 61 67 6f 6e 61 6c 20 6d 61 74 72 69 78 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 ock.diagonal.matrix)".......]...
97c0 20 20 7d 2c 0a 20 20 20 20 7b 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
97e0 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a arkdown",......."metadata":.{},.
9800 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 20 32 ......"source":.[........."Fig.2
9820 20 3a 20 70 6c 6f 74 73 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 20 66 6f 72 20 74 .:.plots.optimal.couplings.for.t
9840 68 65 20 64 69 66 66 65 72 65 6e 74 20 6d 65 74 68 6f 64 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d he.different.methods\n----------
9860 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
9880 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 ---------------\n\n".......]....
98a0 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f .},.....{......."cell_type":."co
98c0 64 65 22 2c 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 de",......."execution_count":.nu
98e0 6c 6c 2c 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 ll,......."metadata":.{.........
9900 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 2c 0a 20 20 20 20 "collapsed":.false.......},.....
9920 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a .."outputs":.[],......."source":
9940 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
9960 3d 28 38 2c 20 34 29 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 =(8,.4))\n\npl.subplot(1,.2,.1)\
9980 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 2e 63 6f 75 70 6c 69 npl.imshow(ot_sinkhorn_un.coupli
99a0 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 5c 6e 70 ng_,.interpolation='nearest')\np
99c0 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 70 6c 2e l.xticks([])\npl.yticks([])\npl.
99e0 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 55 6e 73 75 70 65 title('Optimal.coupling\\nUnsupe
9a00 72 76 69 73 65 64 20 44 41 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 rvised.DA')\n\npl.subplot(1,.2,.
9a20 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 5f 73 65 6d 69 2e 63 2)\npl.imshow(ot_sinkhorn_semi.c
9a40 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
9a60 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([])
9a80 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
9aa0 65 6d 69 2d 73 75 70 65 72 76 69 73 65 64 20 44 41 27 29 5c 6e 5c 6e 70 6c 2e 74 69 67 68 74 5f emi-supervised.DA')\n\npl.tight_
9ac0 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 layout()".......].....},.....{..
9ae0 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 0a 20 20 ....."cell_type":."markdown",...
9b00 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ...."metadata":.{},......."sourc
9b20 65 22 3a 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 e":.[........."Fig.3.:.plot.tran
9b40 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d sported.samples\n---------------
9b60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 -----------------\n\n".......]..
9b80 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
9ba0 63 6f 64 65 22 2c 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 code",......."execution_count":.
9bc0 6e 75 6c 6c 2c 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 null,......."metadata":.{.......
9be0 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 2c 0a 20 20 .."collapsed":.false.......},...
9c00 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ...."outputs":.[],......."source
9c20 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 64 69 73 70 6c 61 79 20 74 72 61 6e 73 70 6f 72 ":.[........."#.display.transpor
9c40 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a ted.samples\npl.figure(4,.figsiz
9c60 65 3d 28 38 2c 20 34 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e e=(8,.4))\npl.subplot(1,.2,.1)\n
9c80 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 20 63 pl.scatter(Xt[:,.0],.Xt[:,.1],.c
9ca0 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 61 62 =yt,.marker='o',\n...........lab
9cc0 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 29 5c el='Target.samples',.alpha=0.5)\
9ce0 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 5f 75 npl.scatter(transp_Xs_sinkhorn_u
9d00 6e 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 5f 75 6e 5b 3a n[:,.0],.transp_Xs_sinkhorn_un[:
9d20 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 6b 65 72 3d 27 ,.1],.c=ys,\n...........marker='
9d40 2b 27 2c 20 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 +',.label='Transp.samples',.s=30
9d60 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 73 61 6d 70 6c 65 73 )\npl.title('Transported.samples
9d80 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 65 6e 64 28 6c 6f 63 \\nEmdTransport')\npl.legend(loc
9da0 3d 30 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 =0)\npl.xticks([])\npl.yticks([]
9dc0 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 2e 73 63 61 )\n\npl.subplot(1,.2,.2)\npl.sca
9de0 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
9e00 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
9e20 72 67 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 rget.samples',.alpha=0.5)\npl.sc
9e40 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 5b 3a 2c atter(transp_Xs_sinkhorn_semi[:,
9e60 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 5b 3a 2c 20 .0],.transp_Xs_sinkhorn_semi[:,.
9e80 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 6b 65 72 3d 27 2b 27 1],.c=ys,\n...........marker='+'
9ea0 2c 20 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 ,.label='Transp.samples',.s=30)\
9ec0 6e 70 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 npl.title('Transported.samples\\
9ee0 6e 53 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 nSinkhornTransport')\npl.xticks(
9f00 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 6c [])\npl.yticks([])\n\npl.tight_l
9f20 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 0a 20 20 20 20 ayout()\npl.show()".......].....
9f40 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e }...],..."metadata":.{....."kern
9f60 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 22 3a elspec":.{......."display_name":
9f80 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 ."Python.3",......."language":."
9fa0 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 python",......."name":."python3"
9fc0 0a 20 20 20 20 7d 2c 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 .....},....."language_info":.{..
9fe0 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":.{.......
a000 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 .."name":."ipython",........."ve
a020 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 rsion":.3.......},......."file_e
a040 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 xtension":.".py",......."mimetyp
a060 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 e":."text/x-python",......."name
a080 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 ":."python",......."nbconvert_ex
a0a0 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e porter":."python",......."pygmen
a0c0 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 ts_lexer":."ipython3",......."ve
a0e0 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 rsion":."3.6.5".....}...},..."nb
a100 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 format":.4,..."nbformat_minor":.
a120 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 2d 60 cb 4c 27 4a df 9c 9d 0d 00 00 9d 0d 00 00 10 00 00 0.}PK........-`.L'J.............
a140 00 70 6c 6f 74 5f 4f 54 5f 31 44 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a .plot_OT_1D.ipynb{..."cells":.[.
a160 20 20 20 20 7b 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 ....{......."cell_type":."code",
a180 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 0a ......."execution_count":.null,.
a1a0 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 6c ......"metadata":.{........."col
a1c0 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
a1e0 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
a200 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 20 ......."%matplotlib.inline".....
a220 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 ..].....},.....{......."cell_typ
a240 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 e":."markdown",......."metadata"
a260 3a 20 7b 7d 2c 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":.[.........
a280 22 5c 6e 23 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 54 "\n#.1D.optimal.transport\n\n\nT
a2a0 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d 70 his.example.illustrates.the.comp
a2c0 75 74 61 74 69 6f 6e 20 6f 66 20 45 4d 44 20 61 6e 64 20 53 69 6e 6b 68 6f 72 6e 20 74 72 61 6e utation.of.EMD.and.Sinkhorn.tran
a2e0 73 70 6f 72 74 20 70 6c 61 6e 73 5c 6e 61 6e 64 20 74 68 65 69 72 20 76 69 73 75 61 6c 69 7a 61 sport.plans\nand.their.visualiza
a300 74 69 6f 6e 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 tion.\n\n\n".......].....},.....
a320 7b 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 0a 20 20 20 {......."cell_type":."code",....
a340 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 0a 20 20 20 20 ..."execution_count":.null,.....
a360 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
a380 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 ed":.false.......},......."outpu
a3a0 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 ts":.[],......."source":.[......
a3c0 20 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 ..."#.Author:.Remi.Flamary.<remi
a3e0 2e 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 .flamary@unice.fr>\n#\n#.License
a400 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 79 20 61 73 :.MIT.License\n\nimport.numpy.as
a420 20 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 .np\nimport.matplotlib.pylab.as.
a440 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 69 6d 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 5c 6e 66 pl\nimport.ot\nimport.ot.plot\nf
a460 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 6d 61 6b 65 5f 31 44 5f 67 rom.ot.datasets.import.make_1D_g
a480 61 75 73 73 20 61 73 20 67 61 75 73 73 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 auss.as.gauss".......].....},...
a4a0 20 20 7b 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
a4c0 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 ",......."metadata":.{},......."
a4e0 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 74 source":.[........."Generate.dat
a500 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 a\n-------------\n\n".......]...
a520 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 ..},.....{......."cell_type":."c
a540 6f 64 65 22 2c 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 ode",......."execution_count":.n
a560 75 6c 6c 2c 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 ull,......."metadata":.{........
a580 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 2c 0a 20 20 20 ."collapsed":.false.......},....
a5a0 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 ..."outputs":.[],......."source"
a5c0 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e :.[........."#%%.parameters\n\nn
a5e0 20 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 .=.100..#.nb.bins\n\n#.bin.posit
a600 69 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 ions\nx.=.np.arange(n,.dtype=np.
a620 66 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 float64)\n\n#.Gaussian.distribut
a640 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 29 20 20 23 ions\na.=.gauss(n,.m=20,.s=5)..#
a660 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 5c 6e 62 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d .m=.mean,.s=.std\nb.=.gauss(n,.m
a680 3d 36 30 2c 20 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 =60,.s=10)\n\n#.loss.matrix\nM.=
a6a0 20 6f 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 .ot.dist(x.reshape((n,.1)),.x.re
a6c0 73 68 61 70 65 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 shape((n,.1)))\nM./=.M.max()"...
a6e0 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ....].....},.....{......."cell_t
a700 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ype":."markdown",......."metadat
a720 61 22 3a 20 7b 7d 2c 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 a":.{},......."source":.[.......
a740 20 20 22 50 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 .."Plot.distributions.and.loss.m
a760 61 74 72 69 78 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d atrix\n-------------------------
a780 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 ---------\n\n".......].....},...
a7a0 20 20 7b 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 0a 20 ..{......."cell_type":."code",..
a7c0 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 0a 20 20 ....."execution_count":.null,...
a7e0 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 61 ...."metadata":.{........."colla
a800 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 psed":.false.......},......."out
a820 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 puts":.[],......."source":.[....
a840 20 20 20 20 20 22 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 73 ....."#%%.plot.the.distributions
a860 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 33 \n\npl.figure(1,.figsize=(6.4,.3
a880 29 29 5c 6e 70 6c 2e 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 ))\npl.plot(x,.a,.'b',.label='So
a8a0 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 urce.distribution')\npl.plot(x,.
a8c0 62 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 b,.'r',.label='Target.distributi
a8e0 6f 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 64 69 on')\npl.legend()\n\n#%%.plot.di
a900 73 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 70 stributions.and.loss.matrix\n\np
a920 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e l.figure(2,.figsize=(5,.5))\not.
a940 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 4d 2c 20 27 43 6f 73 74 20 6d plot.plot1D_mat(a,.b,.M,.'Cost.m
a960 61 74 72 69 78 20 4d 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a atrix.M')".......].....},.....{.
a980 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 0a 20 ......"cell_type":."markdown",..
a9a0 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ....."metadata":.{},......."sour
a9c0 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 5c 6e 2d 2d 2d 2d 2d ce":.[........."Solve.EMD\n-----
a9e0 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 ----\n\n".......].....},.....{..
aa00 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 0a 20 20 20 20 20 20 ....."cell_type":."code",.......
aa20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 "execution_count":.null,......."
aa40 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"
aa60 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 :.false.......},......."outputs"
aa80 3a 20 5b 5d 2c 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":.[.........
aaa0 22 23 25 25 20 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 "#%%.EMD\n\nG0.=.ot.emd(a,.b,.M)
aac0 5c 6e 5c 6e 70 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 \n\npl.figure(3,.figsize=(5,.5))
aae0 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 30 2c 20 27 \not.plot.plot1D_mat(a,.b,.G0,.'
ab00 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 OT.matrix.G0')".......].....},..
ab20 20 20 20 7b 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
ab40 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 n",......."metadata":.{},.......
ab60 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 53 69 6e 6b 68 "source":.[........."Solve.Sinkh
ab80 6f 72 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d orn\n--------------\n\n".......]
aba0 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
abc0 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 ."code",......."execution_count"
abe0 3a 20 6e 75 6c 6c 2c 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 :.null,......."metadata":.{.....
ac00 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 2c 0a ...."collapsed":.false.......},.
ac20 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ......"outputs":.[],......."sour
ac40 63 65 22 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 ce":.[........."#%%.Sinkhorn\n\n
ac60 6c 61 6d 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 lambd.=.1e-3\nGs.=.ot.sinkhorn(a
ac80 2c 20 62 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 ,.b,.M,.lambd,.verbose=True)\n\n
aca0 70 6c 2e 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 pl.figure(4,.figsize=(5,.5))\not
acc0 2e 70 6c 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 .plot.plot1D_mat(a,.b,.Gs,.'OT.m
ace0 61 74 72 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 atrix.Sinkhorn')\n\npl.show()"..
ad00 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 .....].....}...],..."metadata":.
ad20 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
ad40 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c play_name":."Python.3",......."l
ad60 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 anguage":."python",......."name"
ad80 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 :."python3".....},....."language
ada0 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 _info":.{......."codemirror_mode
adc0 22 3a 20 7b 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 2c 0a ":.{........."name":."ipython",.
ade0 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 ........"version":.3.......},...
ae00 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 0a 20 20 20 ...."file_extension":.".py",....
ae20 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 74 68 6f 6e 22 2c 0a ..."mimetype":."text/x-python",.
ae40 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e ......"name":."python",......."n
ae60 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 0a 20 20 bconvert_exporter":."python",...
ae80 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 74 68 6f 6e 33 22 ...."pygments_lexer":."ipython3"
aea0 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d ,......."version":."3.6.5".....}
aec0 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d ...},..."nbformat":.4,..."nbform
aee0 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 77 6d 7d 4e 6b b3 7a d2 at_minor":.0.}PK........wm}Nk.z.
af00 55 26 00 00 55 26 00 00 15 00 00 00 70 6c 6f 74 5f 73 74 6f 63 68 61 73 74 69 63 2e 69 70 79 6e U&..U&......plot_stochastic.ipyn
af20 62 7b 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 63 65 6c b{..."cells":.[.....{......."cel
af40 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f l_type":."code",......."executio
af60 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 n_count":.null,......."metadata"
af80 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..
afa0 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 .....},......."outputs":.[],....
afc0 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 74 ..."source":.[........."%matplot
afe0 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b lib.inline".......].....},.....{
b000 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 0a ......."cell_type":."markdown",.
b020 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 ......"metadata":.{},......."sou
b040 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 53 74 6f 63 68 61 73 74 69 63 20 rce":.[........."\n#.Stochastic.
b060 65 78 61 6d 70 6c 65 73 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 64 65 examples\n\n\nThis.example.is.de
b080 73 69 67 6e 65 64 20 74 6f 20 73 68 6f 77 20 68 6f 77 20 74 6f 20 75 73 65 20 74 68 65 20 73 74 signed.to.show.how.to.use.the.st
b0a0 6f 63 68 61 74 69 63 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 5c 6e 61 6c 67 6f 72 69 74 68 6d 73 ochatic.optimization\nalgorithms
b0c0 20 66 6f 72 20 64 65 73 63 72 65 74 65 20 61 6e 64 20 73 65 6d 69 63 6f 6e 74 69 6e 6f 75 73 20 .for.descrete.and.semicontinous.
b0e0 6d 65 61 73 75 72 65 73 20 66 72 6f 6d 20 74 68 65 20 50 4f 54 20 6c 69 62 72 61 72 79 2e 5c 6e measures.from.the.POT.library.\n
b100 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 \n\n".......].....},.....{......
b120 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 ."cell_type":."code",......."exe
b140 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 cution_count":.null,......."meta
b160 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
b180 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d lse.......},......."outputs":.[]
b1a0 2c 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 41 ,......."source":.[........."#.A
b1c0 75 74 68 6f 72 3a 20 4b 69 6c 69 61 6e 20 46 61 74 72 61 73 20 3c 6b 69 6c 69 61 6e 2e 66 61 74 uthor:.Kilian.Fatras.<kilian.fat
b1e0 72 61 73 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 ras@gmail.com>\n#\n#.License:.MI
b200 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 2e 70 T.License\n\nimport.matplotlib.p
b220 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e ylab.as.pl\nimport.numpy.as.np\n
b240 69 6d 70 6f 72 74 20 6f 74 5c 6e 69 6d 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 22 0a 20 20 20 20 20 import.ot\nimport.ot.plot"......
b260 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 .].....},.....{......."cell_type
b280 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a ":."markdown",......."metadata":
b2a0 20 7b 7d 2c 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 .{},......."source":.[........."
b2c0 43 4f 4d 50 55 54 45 20 54 52 41 4e 53 50 4f 52 54 41 54 49 4f 4e 20 4d 41 54 52 49 58 20 46 4f COMPUTE.TRANSPORTATION.MATRIX.FO
b2e0 52 20 53 45 4d 49 2d 44 55 41 4c 20 50 52 4f 42 4c 45 4d 5c 6e 23 23 23 23 23 23 23 23 23 23 23 R.SEMI-DUAL.PROBLEM\n###########
b300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
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 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 #\n#############################
b360 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b380 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 20 44 49 53 43 52 45 54 45 20 43 41 53 45 3a ###############\n.DISCRETE.CASE:
b3a0 5c 6e 5c 6e 20 53 61 6d 70 6c 65 20 74 77 6f 20 64 69 73 63 72 65 74 65 20 6d 65 61 73 75 72 65 \n\n.Sample.two.discrete.measure
b3c0 73 20 66 6f 72 20 74 68 65 20 64 69 73 63 72 65 74 65 20 63 61 73 65 5c 6e 20 2d 2d 2d 2d 2d 2d s.for.the.discrete.case\n.------
b3e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
b400 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 20 44 65 66 69 6e 65 20 32 20 64 69 73 63 72 65 74 65 20 6d 65 -------\n\n.Define.2.discrete.me
b420 61 73 75 72 65 73 20 61 20 61 6e 64 20 62 2c 20 74 68 65 20 70 6f 69 6e 74 73 20 77 68 65 72 65 asures.a.and.b,.the.points.where
b440 20 61 72 65 20 64 65 66 69 6e 65 64 20 74 68 65 20 73 6f 75 72 63 65 5c 6e 20 61 6e 64 20 74 68 .are.defined.the.source\n.and.th
b460 65 20 74 61 72 67 65 74 20 6d 65 61 73 75 72 65 73 20 61 6e 64 20 66 69 6e 61 6c 6c 79 20 74 68 e.target.measures.and.finally.th
b480 65 20 63 6f 73 74 20 6d 61 74 72 69 78 20 63 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 e.cost.matrix.c.\n\n".......]...
b4a0 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 ..},.....{......."cell_type":."c
b4c0 6f 64 65 22 2c 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 ode",......."execution_count":.n
b4e0 75 6c 6c 2c 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 ull,......."metadata":.{........
b500 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 2c 0a 20 20 20 ."collapsed":.false.......},....
b520 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 ..."outputs":.[],......."source"
b540 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6e 5f 73 6f 75 72 63 65 20 3d 20 37 5c 6e 6e 5f 74 61 72 :.[........."n_source.=.7\nn_tar
b560 67 65 74 20 3d 20 34 5c 6e 72 65 67 20 3d 20 31 5c 6e 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 get.=.4\nreg.=.1\nnumItermax.=.1
b580 30 30 30 5c 6e 5c 6e 61 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 75 6e 69 66 28 6e 5f 73 6f 75 72 63 000\n\na.=.ot.utils.unif(n_sourc
b5a0 65 29 5c 6e 62 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 75 6e 69 66 28 6e 5f 74 61 72 67 65 74 29 5c e)\nb.=.ot.utils.unif(n_target)\
b5c0 6e 5c 6e 72 6e 67 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 30 n\nrng.=.np.random.RandomState(0
b5e0 29 5c 6e 58 5f 73 6f 75 72 63 65 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f 73 6f 75 72 63 65 )\nX_source.=.rng.randn(n_source
b600 2c 20 32 29 5c 6e 59 5f 74 61 72 67 65 74 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f 74 61 72 ,.2)\nY_target.=.rng.randn(n_tar
b620 67 65 74 2c 20 32 29 5c 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 58 5f 73 6f 75 72 63 65 2c 20 59 get,.2)\nM.=.ot.dist(X_source,.Y
b640 5f 74 61 72 67 65 74 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 _target)".......].....},.....{..
b660 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 0a 20 20 ....."cell_type":."markdown",...
b680 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ...."metadata":.{},......."sourc
b6a0 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 61 6c 6c 20 74 68 65 20 5c 22 53 41 47 5c 22 20 e":.[........."Call.the.\"SAG\".
b6c0 6d 65 74 68 6f 64 20 74 6f 20 66 69 6e 64 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 61 74 69 6f method.to.find.the.transportatio
b6e0 6e 20 6d 61 74 72 69 78 20 69 6e 20 74 68 65 20 64 69 73 63 72 65 74 65 20 63 61 73 65 5c 6e 2d n.matrix.in.the.discrete.case\n-
b700 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
b720 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 44 65 66 69 6e 65 20 74 68 65 20 6d 65 74 68 6f ------------\n\nDefine.the.metho
b740 64 20 5c 22 53 41 47 5c 22 2c 20 63 61 6c 6c 20 6f 74 2e 73 6f 6c 76 65 5f 73 65 6d 69 5f 64 75 d.\"SAG\",.call.ot.solve_semi_du
b760 61 6c 5f 65 6e 74 72 6f 70 69 63 20 61 6e 64 20 70 6c 6f 74 20 74 68 65 5c 6e 72 65 73 75 6c 74 al_entropic.and.plot.the\nresult
b780 73 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 s.\n\n".......].....},.....{....
b7a0 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 ..."cell_type":."code",......."e
b7c0 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 xecution_count":.null,......."me
b7e0 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":.
b800 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 false.......},......."outputs":.
b820 5b 5d 2c 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 6d [],......."source":.[........."m
b840 65 74 68 6f 64 20 3d 20 5c 22 53 41 47 5c 22 5c 6e 73 61 67 5f 70 69 20 3d 20 6f 74 2e 73 74 6f ethod.=.\"SAG\"\nsag_pi.=.ot.sto
b860 63 68 61 73 74 69 63 2e 73 6f 6c 76 65 5f 73 65 6d 69 5f 64 75 61 6c 5f 65 6e 74 72 6f 70 69 63 chastic.solve_semi_dual_entropic
b880 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 2c 20 6d 65 74 68 6f 64 2c 5c 6e 20 20 20 20 20 20 20 20 (a,.b,.M,.reg,.method,\n........
b8a0 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 20 20 ................................
b8c0 20 20 20 20 20 20 20 20 6e 75 6d 49 74 65 72 6d 61 78 29 5c 6e 70 72 69 6e 74 28 73 61 67 5f 70 ........numItermax)\nprint(sag_p
b8e0 69 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 i)".......].....},.....{......."
b900 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d cell_type":."markdown",......."m
b920 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a etadata":.{},......."source":.[.
b940 20 20 20 20 20 20 20 20 22 53 45 4d 49 43 4f 4e 54 49 4e 4f 55 53 20 43 41 53 45 3a 5c 6e 5c 6e ........"SEMICONTINOUS.CASE:\n\n
b960 53 61 6d 70 6c 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 6d 65 61 73 75 72 65 20 61 2c 20 6f 6e Sample.one.general.measure.a,.on
b980 65 20 64 69 73 63 72 65 74 65 20 6d 65 61 73 75 72 65 73 20 62 20 66 6f 72 20 74 68 65 20 73 65 e.discrete.measures.b.for.the.se
b9a0 6d 69 63 6f 6e 74 69 6e 6f 75 73 5c 6e 63 61 73 65 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d micontinous\ncase\n-------------
b9c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
b9e0 5c 6e 5c 6e 44 65 66 69 6e 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 6d 65 61 73 75 72 65 20 61 \n\nDefine.one.general.measure.a
ba00 2c 20 6f 6e 65 20 64 69 73 63 72 65 74 65 20 6d 65 61 73 75 72 65 73 20 62 2c 20 74 68 65 20 70 ,.one.discrete.measures.b,.the.p
ba20 6f 69 6e 74 73 20 77 68 65 72 65 5c 6e 61 72 65 20 64 65 66 69 6e 65 64 20 74 68 65 20 73 6f 75 oints.where\nare.defined.the.sou
ba40 72 63 65 20 61 6e 64 20 74 68 65 20 74 61 72 67 65 74 20 6d 65 61 73 75 72 65 73 20 61 6e 64 20 rce.and.the.target.measures.and.
ba60 66 69 6e 61 6c 6c 79 20 74 68 65 20 63 6f 73 74 20 6d 61 74 72 69 78 20 63 2e 5c 6e 5c 6e 22 0a finally.the.cost.matrix.c.\n\n".
ba80 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
baa0 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e _type":."code",......."execution
bac0 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a _count":.null,......."metadata":
bae0 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...
bb00 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 ....},......."outputs":.[],.....
bb20 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 6f 75 72 63 65 20 .."source":.[........."n_source.
bb40 3d 20 37 5c 6e 6e 5f 74 61 72 67 65 74 20 3d 20 34 5c 6e 72 65 67 20 3d 20 31 5c 6e 6e 75 6d 49 =.7\nn_target.=.4\nreg.=.1\nnumI
bb60 74 65 72 6d 61 78 20 3d 20 31 30 30 30 5c 6e 6c 6f 67 20 3d 20 54 72 75 65 5c 6e 5c 6e 61 20 3d termax.=.1000\nlog.=.True\n\na.=
bb80 20 6f 74 2e 75 74 69 6c 73 2e 75 6e 69 66 28 6e 5f 73 6f 75 72 63 65 29 5c 6e 62 20 3d 20 6f 74 .ot.utils.unif(n_source)\nb.=.ot
bba0 2e 75 74 69 6c 73 2e 75 6e 69 66 28 6e 5f 74 61 72 67 65 74 29 5c 6e 5c 6e 72 6e 67 20 3d 20 6e .utils.unif(n_target)\n\nrng.=.n
bbc0 70 2e 72 61 6e 64 6f 6d 2e 52 61 6e 64 6f 6d 53 74 61 74 65 28 30 29 5c 6e 58 5f 73 6f 75 72 63 p.random.RandomState(0)\nX_sourc
bbe0 65 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f 73 6f 75 72 63 65 2c 20 32 29 5c 6e 59 5f 74 61 e.=.rng.randn(n_source,.2)\nY_ta
bc00 72 67 65 74 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f 74 61 72 67 65 74 2c 20 32 29 5c 6e 4d rget.=.rng.randn(n_target,.2)\nM
bc20 20 3d 20 6f 74 2e 64 69 73 74 28 58 5f 73 6f 75 72 63 65 2c 20 59 5f 74 61 72 67 65 74 29 22 0a .=.ot.dist(X_source,.Y_target)".
bc40 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
bc60 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 _type":."markdown",......."metad
bc80 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ata":.{},......."source":.[.....
bca0 20 20 20 20 22 43 61 6c 6c 20 74 68 65 20 5c 22 41 53 47 44 5c 22 20 6d 65 74 68 6f 64 20 74 6f ...."Call.the.\"ASGD\".method.to
bcc0 20 66 69 6e 64 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 .find.the.transportation.matrix.
bce0 69 6e 20 74 68 65 20 73 65 6d 69 63 6f 6e 74 69 6e 6f 75 73 5c 6e 63 61 73 65 5c 6e 2d 2d 2d 2d in.the.semicontinous\ncase\n----
bd00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
bd20 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 44 65 66 69 6e 65 20 74 68 65 20 6d 65 74 68 6f 64 20 5c ---------\n\nDefine.the.method.\
bd40 22 41 53 47 44 5c 22 2c 20 63 61 6c 6c 20 6f 74 2e 73 6f 6c 76 65 5f 73 65 6d 69 5f 64 75 61 6c "ASGD\",.call.ot.solve_semi_dual
bd60 5f 65 6e 74 72 6f 70 69 63 20 61 6e 64 20 70 6c 6f 74 20 74 68 65 5c 6e 72 65 73 75 6c 74 73 2e _entropic.and.plot.the\nresults.
bd80 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 \n\n".......].....},.....{......
bda0 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 ."cell_type":."code",......."exe
bdc0 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 cution_count":.null,......."meta
bde0 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
be00 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d lse.......},......."outputs":.[]
be20 2c 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 6d 65 74 ,......."source":.[........."met
be40 68 6f 64 20 3d 20 5c 22 41 53 47 44 5c 22 5c 6e 61 73 67 64 5f 70 69 2c 20 6c 6f 67 5f 61 73 67 hod.=.\"ASGD\"\nasgd_pi,.log_asg
be60 64 20 3d 20 6f 74 2e 73 74 6f 63 68 61 73 74 69 63 2e 73 6f 6c 76 65 5f 73 65 6d 69 5f 64 75 61 d.=.ot.stochastic.solve_semi_dua
be80 6c 5f 65 6e 74 72 6f 70 69 63 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 2c 20 6d 65 74 68 6f 64 2c l_entropic(a,.b,.M,.reg,.method,
bea0 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..............................
bec0 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 6e 75 6d .............................num
bee0 49 74 65 72 6d 61 78 2c 20 6c 6f 67 3d 6c 6f 67 29 5c 6e 70 72 69 6e 74 28 6c 6f 67 5f 61 73 67 Itermax,.log=log)\nprint(log_asg
bf00 64 5b 27 61 6c 70 68 61 27 5d 2c 20 6c 6f 67 5f 61 73 67 64 5b 27 62 65 74 61 27 5d 29 5c 6e 70 d['alpha'],.log_asgd['beta'])\np
bf20 72 69 6e 74 28 61 73 67 64 5f 70 69 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 rint(asgd_pi)".......].....},...
bf40 20 20 7b 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
bf60 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 ",......."metadata":.{},......."
bf80 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 6f 6d 70 61 72 65 20 74 68 65 20 source":.[........."Compare.the.
bfa0 72 65 73 75 6c 74 73 20 77 69 74 68 20 74 68 65 20 53 69 6e 6b 68 6f 72 6e 20 61 6c 67 6f 72 69 results.with.the.Sinkhorn.algori
bfc0 74 68 6d 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d thm\n---------------------------
bfe0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 43 61 6c 6c 20 74 68 65 20 53 ------------------\n\nCall.the.S
c000 69 6e 6b 68 6f 72 6e 20 61 6c 67 6f 72 69 74 68 6d 20 66 72 6f 6d 20 50 4f 54 5c 6e 5c 6e 22 0a inkhorn.algorithm.from.POT\n\n".
c020 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
c040 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e _type":."code",......."execution
c060 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a _count":.null,......."metadata":
c080 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...
c0a0 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 ....},......."outputs":.[],.....
c0c0 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 73 69 6e 6b 68 6f 72 6e 5f .."source":.[........."sinkhorn_
c0e0 70 69 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 29 5c 6e pi.=.ot.sinkhorn(a,.b,.M,.reg)\n
c100 70 72 69 6e 74 28 73 69 6e 6b 68 6f 72 6e 5f 70 69 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 print(sinkhorn_pi)".......].....
c120 7d 2c 0a 20 20 20 20 7b 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
c140 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 kdown",......."metadata":.{},...
c160 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 50 4c 4f 54 20 54 52 ...."source":.[........."PLOT.TR
c180 41 4e 53 50 4f 52 54 41 54 49 4f 4e 20 4d 41 54 52 49 58 5c 6e 23 23 23 23 23 23 23 23 23 23 23 ANSPORTATION.MATRIX\n###########
c1a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
c1c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
c1e0 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 ##\n\n".......].....},.....{....
c200 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 0a 20 20 20 20 ..."cell_type":."markdown",.....
c220 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 .."metadata":.{},......."source"
c240 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 53 41 47 20 72 65 73 75 6c 74 73 5c 6e 2d :.[........."Plot.SAG.results\n-
c260 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 ---------------\n\n".......]....
c280 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f .},.....{......."cell_type":."co
c2a0 64 65 22 2c 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 de",......."execution_count":.nu
c2c0 6c 6c 2c 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 ll,......."metadata":.{.........
c2e0 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 2c 0a 20 20 20 20 "collapsed":.false.......},.....
c300 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a .."outputs":.[],......."source":
c320 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 .[........."pl.figure(4,.figsize
c340 3d 28 35 2c 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 =(5,.5))\not.plot.plot1D_mat(a,.
c360 62 2c 20 73 61 67 5f 70 69 2c 20 27 73 65 6d 69 2d 64 75 61 6c 20 3a 20 4f 54 20 6d 61 74 72 69 b,.sag_pi,.'semi-dual.:.OT.matri
c380 78 20 53 41 47 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 x.SAG')\npl.show()".......].....
c3a0 7d 2c 0a 20 20 20 20 7b 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
c3c0 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 kdown",......."metadata":.{},...
c3e0 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 50 6c 6f 74 20 41 53 ...."source":.[........."Plot.AS
c400 47 44 20 72 65 73 75 6c 74 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c GD.results\n-----------------\n\
c420 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 n".......].....},.....{......."c
c440 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 ell_type":."code",......."execut
c460 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ion_count":.null,......."metadat
c480 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 73 65 a":.{........."collapsed":.false
c4a0 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 .......},......."outputs":.[],..
c4c0 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 67 ....."source":.[........."pl.fig
c4e0 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 6f 74 2e ure(4,.figsize=(5,.5))\not.plot.
c500 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 61 73 67 64 5f 70 69 2c 20 27 73 65 6d 69 2d plot1D_mat(a,.b,.asgd_pi,.'semi-
c520 64 75 61 6c 20 3a 20 4f 54 20 6d 61 74 72 69 78 20 41 53 47 44 27 29 5c 6e 70 6c 2e 73 68 6f 77 dual.:.OT.matrix.ASGD')\npl.show
c540 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 ()".......].....},.....{......."
c560 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d cell_type":."markdown",......."m
c580 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a etadata":.{},......."source":.[.
c5a0 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 53 69 6e 6b 68 6f 72 6e 20 72 65 73 75 6c 74 73 5c 6e ........"Plot.Sinkhorn.results\n
c5c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 ---------------------\n\n"......
c5e0 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 .].....},.....{......."cell_type
c600 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e ":."code",......."execution_coun
c620 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 t":.null,......."metadata":.{...
c640 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.......}
c660 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f ,......."outputs":.[],......."so
c680 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 34 2c 20 66 urce":.[........."pl.figure(4,.f
c6a0 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d igsize=(5,.5))\not.plot.plot1D_m
c6c0 61 74 28 61 2c 20 62 2c 20 73 69 6e 6b 68 6f 72 6e 5f 70 69 2c 20 27 4f 54 20 6d 61 74 72 69 78 at(a,.b,.sinkhorn_pi,.'OT.matrix
c6e0 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a .Sinkhorn')\npl.show()".......].
c700 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ....},.....{......."cell_type":.
c720 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d "markdown",......."metadata":.{}
c740 2c 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 43 4f 4d ,......."source":.[........."COM
c760 50 55 54 45 20 54 52 41 4e 53 50 4f 52 54 41 54 49 4f 4e 20 4d 41 54 52 49 58 20 46 4f 52 20 44 PUTE.TRANSPORTATION.MATRIX.FOR.D
c780 55 41 4c 20 50 52 4f 42 4c 45 4d 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 UAL.PROBLEM\n###################
c7a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
c7c0 23 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 23 23 23 23 23 #########################\n#####
c7e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
c800 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
c820 23 23 23 23 23 23 23 5c 6e 20 53 45 4d 49 43 4f 4e 54 49 4e 4f 55 53 20 43 41 53 45 3a 5c 6e 5c #######\n.SEMICONTINOUS.CASE:\n\
c840 6e 20 53 61 6d 70 6c 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 6d 65 61 73 75 72 65 20 61 2c 20 n.Sample.one.general.measure.a,.
c860 6f 6e 65 20 64 69 73 63 72 65 74 65 20 6d 65 61 73 75 72 65 73 20 62 20 66 6f 72 20 74 68 65 20 one.discrete.measures.b.for.the.
c880 73 65 6d 69 63 6f 6e 74 69 6e 6f 75 73 5c 6e 20 63 61 73 65 5c 6e 20 2d 2d 2d 2d 2d 2d 2d 2d 2d semicontinous\n.case\n.---------
c8a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
c8c0 2d 2d 2d 2d 5c 6e 5c 6e 20 44 65 66 69 6e 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 6d 65 61 73 ----\n\n.Define.one.general.meas
c8e0 75 72 65 20 61 2c 20 6f 6e 65 20 64 69 73 63 72 65 74 65 20 6d 65 61 73 75 72 65 73 20 62 2c 20 ure.a,.one.discrete.measures.b,.
c900 74 68 65 20 70 6f 69 6e 74 73 20 77 68 65 72 65 5c 6e 20 61 72 65 20 64 65 66 69 6e 65 64 20 74 the.points.where\n.are.defined.t
c920 68 65 20 73 6f 75 72 63 65 20 61 6e 64 20 74 68 65 20 74 61 72 67 65 74 20 6d 65 61 73 75 72 65 he.source.and.the.target.measure
c940 73 20 61 6e 64 20 66 69 6e 61 6c 6c 79 20 74 68 65 20 63 6f 73 74 20 6d 61 74 72 69 78 20 63 2e s.and.finally.the.cost.matrix.c.
c960 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 \n\n".......].....},.....{......
c980 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 ."cell_type":."code",......."exe
c9a0 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 cution_count":.null,......."meta
c9c0 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
c9e0 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d lse.......},......."outputs":.[]
ca00 2c 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
ca20 6f 75 72 63 65 20 3d 20 37 5c 6e 6e 5f 74 61 72 67 65 74 20 3d 20 34 5c 6e 72 65 67 20 3d 20 31 ource.=.7\nn_target.=.4\nreg.=.1
ca40 5c 6e 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 30 30 30 30 5c 6e 6c 72 20 3d 20 30 2e 31 5c \nnumItermax.=.100000\nlr.=.0.1\
ca60 6e 62 61 74 63 68 5f 73 69 7a 65 20 3d 20 33 5c 6e 6c 6f 67 20 3d 20 54 72 75 65 5c 6e 5c 6e 61 nbatch_size.=.3\nlog.=.True\n\na
ca80 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 75 6e 69 66 28 6e 5f 73 6f 75 72 63 65 29 5c 6e 62 20 3d 20 .=.ot.utils.unif(n_source)\nb.=.
caa0 6f 74 2e 75 74 69 6c 73 2e 75 6e 69 66 28 6e 5f 74 61 72 67 65 74 29 5c 6e 5c 6e 72 6e 67 20 3d ot.utils.unif(n_target)\n\nrng.=
cac0 20 6e 70 2e 72 61 6e 64 6f 6d 2e 52 61 6e 64 6f 6d 53 74 61 74 65 28 30 29 5c 6e 58 5f 73 6f 75 .np.random.RandomState(0)\nX_sou
cae0 72 63 65 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f 73 6f 75 72 63 65 2c 20 32 29 5c 6e 59 5f rce.=.rng.randn(n_source,.2)\nY_
cb00 74 61 72 67 65 74 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f 74 61 72 67 65 74 2c 20 32 29 5c target.=.rng.randn(n_target,.2)\
cb20 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 58 5f 73 6f 75 72 63 65 2c 20 59 5f 74 61 72 67 65 74 29 nM.=.ot.dist(X_source,.Y_target)
cb40 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 ".......].....},.....{......."ce
cb60 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 ll_type":."markdown",......."met
cb80 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 adata":.{},......."source":.[...
cba0 20 20 20 20 20 20 22 43 61 6c 6c 20 74 68 65 20 5c 22 53 47 44 5c 22 20 64 75 61 6c 20 6d 65 74 ......"Call.the.\"SGD\".dual.met
cbc0 68 6f 64 20 74 6f 20 66 69 6e 64 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 61 74 69 6f 6e 20 6d hod.to.find.the.transportation.m
cbe0 61 74 72 69 78 20 69 6e 20 74 68 65 5c 6e 73 65 6d 69 63 6f 6e 74 69 6e 6f 75 73 20 63 61 73 65 atrix.in.the\nsemicontinous.case
cc00 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d \n------------------------------
cc20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 43 61 6c 6c 20 6f 74 2e 73 6f 6c 76 65 ---------------\n\nCall.ot.solve
cc40 5f 64 75 61 6c 5f 65 6e 74 72 6f 70 69 63 20 61 6e 64 20 70 6c 6f 74 20 74 68 65 20 72 65 73 75 _dual_entropic.and.plot.the.resu
cc60 6c 74 73 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 lts.\n\n".......].....},.....{..
cc80 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 0a 20 20 20 20 20 20 ....."cell_type":."code",.......
cca0 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 "execution_count":.null,......."
ccc0 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"
cce0 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 :.false.......},......."outputs"
cd00 3a 20 5b 5d 2c 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":.[.........
cd20 22 73 67 64 5f 64 75 61 6c 5f 70 69 2c 20 6c 6f 67 5f 73 67 64 20 3d 20 6f 74 2e 73 74 6f 63 68 "sgd_dual_pi,.log_sgd.=.ot.stoch
cd40 61 73 74 69 63 2e 73 6f 6c 76 65 5f 64 75 61 6c 5f 65 6e 74 72 6f 70 69 63 28 61 2c 20 62 2c 20 astic.solve_dual_entropic(a,.b,.
cd60 4d 2c 20 72 65 67 2c 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 M,.reg,\n.......................
cd80 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 20 20 ................................
cda0 20 20 62 61 74 63 68 5f 73 69 7a 65 2c 20 6e 75 6d 49 74 65 72 6d 61 78 2c 5c 6e 20 20 20 20 20 ..batch_size,.numItermax,\n.....
cdc0 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 20 20 ................................
cde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 72 2c 20 6c 6f 67 3d 6c 6f 67 29 ....................lr,.log=log)
ce00 5c 6e 70 72 69 6e 74 28 6c 6f 67 5f 73 67 64 5b 27 61 6c 70 68 61 27 5d 2c 20 6c 6f 67 5f 73 67 \nprint(log_sgd['alpha'],.log_sg
ce20 64 5b 27 62 65 74 61 27 5d 29 5c 6e 70 72 69 6e 74 28 73 67 64 5f 64 75 61 6c 5f 70 69 29 22 0a d['beta'])\nprint(sgd_dual_pi)".
ce40 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
ce60 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 _type":."markdown",......."metad
ce80 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ata":.{},......."source":.[.....
cea0 20 20 20 20 22 43 6f 6d 70 61 72 65 20 74 68 65 20 72 65 73 75 6c 74 73 20 77 69 74 68 20 74 68 ...."Compare.the.results.with.th
cec0 65 20 53 69 6e 6b 68 6f 72 6e 20 61 6c 67 6f 72 69 74 68 6d 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d e.Sinkhorn.algorithm\n----------
cee0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
cf00 2d 2d 2d 5c 6e 5c 6e 43 61 6c 6c 20 74 68 65 20 53 69 6e 6b 68 6f 72 6e 20 61 6c 67 6f 72 69 74 ---\n\nCall.the.Sinkhorn.algorit
cf20 68 6d 20 66 72 6f 6d 20 50 4f 54 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a hm.from.POT\n\n".......].....},.
cf40 20 20 20 20 7b 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 ....{......."cell_type":."code",
cf60 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 0a ......."execution_count":.null,.
cf80 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 6c ......"metadata":.{........."col
cfa0 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
cfc0 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
cfe0 20 20 20 20 20 20 20 22 73 69 6e 6b 68 6f 72 6e 5f 70 69 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 ......."sinkhorn_pi.=.ot.sinkhor
d000 6e 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 29 5c 6e 70 72 69 6e 74 28 73 69 6e 6b 68 6f 72 6e 5f n(a,.b,.M,.reg)\nprint(sinkhorn_
d020 70 69 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 pi)".......].....},.....{.......
d040 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 "cell_type":."markdown",......."
d060 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b metadata":.{},......."source":.[
d080 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 20 53 47 44 20 72 65 73 75 6c 74 73 5c 6e 2d 2d 2d ........."Plot..SGD.results\n---
d0a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 --------------\n\n".......].....
d0c0 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 },.....{......."cell_type":."cod
d0e0 65 22 2c 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 e",......."execution_count":.nul
d100 6c 2c 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 l,......."metadata":.{........."
d120 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 2c 0a 20 20 20 20 20 collapsed":.false.......},......
d140 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 ."outputs":.[],......."source":.
d160 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d [........."pl.figure(4,.figsize=
d180 28 35 2c 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 (5,.5))\not.plot.plot1D_mat(a,.b
d1a0 2c 20 73 67 64 5f 64 75 61 6c 5f 70 69 2c 20 27 64 75 61 6c 20 3a 20 4f 54 20 6d 61 74 72 69 78 ,.sgd_dual_pi,.'dual.:.OT.matrix
d1c0 20 53 47 44 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d .SGD')\npl.show()".......].....}
d1e0 2c 0a 20 20 20 20 7b 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
d200 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 down",......."metadata":.{},....
d220 20 20 20 22 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 53 69 6e ..."source":.[........."Plot.Sin
d240 6b 68 6f 72 6e 20 72 65 73 75 6c 74 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d khorn.results\n-----------------
d260 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 ----\n\n".......].....},.....{..
d280 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 0a 20 20 20 20 20 20 ....."cell_type":."code",.......
d2a0 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 "execution_count":.null,......."
d2c0 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"
d2e0 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 :.false.......},......."outputs"
d300 3a 20 5b 5d 2c 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":.[.........
d320 22 70 6c 2e 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 "pl.figure(4,.figsize=(5,.5))\no
d340 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 73 69 6e 6b 68 6f 72 6e t.plot.plot1D_mat(a,.b,.sinkhorn
d360 5f 70 69 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 70 6c 2e 73 _pi,.'OT.matrix.Sinkhorn')\npl.s
d380 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 how()".......].....}...],..."met
d3a0 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 20 adata":.{....."kernelspec":.{...
d3c0 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 33 22 2c 0a ...."display_name":."Python.3",.
d3e0 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 2c 0a 20 20 20 20 ......"language":."python",.....
d400 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 .."name":."python3".....},....."
d420 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 63 6f 64 65 6d 69 72 language_info":.{......."codemir
d440 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 ror_mode":.{........."name":."ip
d460 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 ython",........."version":.3....
d480 20 20 20 7d 2c 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 22 2e ...},......."file_extension":.".
d4a0 70 79 22 2c 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 py",......."mimetype":."text/x-p
d4c0 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a ython",......."name":."python",.
d4e0 20 20 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 ......"nbconvert_exporter":."pyt
d500 68 6f 6e 22 2c 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 hon",......."pygments_lexer":."i
d520 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e python3",......."version":."3.6.
d540 37 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 7".....}...},..."nbformat":.4,..
d560 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 ."nbformat_minor":.0.}PK........
d580 ec 45 43 4d 80 1a 80 7c 9f 15 00 00 9f 15 00 00 18 00 00 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e .ECM...|............plot_barycen
d5a0 74 65 72 5f 31 44 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b ter_1D.ipynb{..."cells":.[.....{
d5c0 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 0a 20 20 20 20 ......."cell_type":."code",.....
d5e0 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 0a 20 20 20 20 20 .."execution_count":.null,......
d600 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
d620 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 d":.false.......},......."output
d640 73 22 3a 20 5b 5d 2c 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 s":.[],......."source":.[.......
d660 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 0a 20 .."%matplotlib.inline".......]..
d680 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
d6a0 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c markdown",......."metadata":.{},
d6c0 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 20 ......."source":.[........."\n#.
d6e0 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 6f 5c 6e 1D.Wasserstein.barycenter.demo\n
d700 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 \n\nThis.example.illustrates.the
d720 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 72 65 67 75 6c 61 72 69 7a 65 64 20 57 61 73 73 .computation.of.regularized.Wass
d740 65 72 73 79 65 69 6e 20 42 61 72 79 63 65 6e 74 65 72 5c 6e 61 73 20 70 72 6f 70 6f 73 65 64 20 ersyein.Barycenter\nas.proposed.
d760 69 6e 20 5b 33 5d 2e 5c 6e 5c 6e 5c 6e 5b 33 5d 20 42 65 6e 61 6d 6f 75 2c 20 4a 2e 20 44 2e 2c in.[3].\n\n\n[3].Benamou,.J..D.,
d780 20 43 61 72 6c 69 65 72 2c 20 47 2e 2c 20 43 75 74 75 72 69 2c 20 4d 2e 2c 20 4e 65 6e 6e 61 2c .Carlier,.G.,.Cuturi,.M.,.Nenna,
d7a0 20 4c 2e 2c 20 26 20 50 65 79 72 5c 75 30 30 65 39 2c 20 47 2e 20 28 32 30 31 35 29 2e 5c 6e 49 .L.,.&.Peyr\u00e9,.G..(2015).\nI
d7c0 74 65 72 61 74 69 76 65 20 42 72 65 67 6d 61 6e 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 66 6f 72 terative.Bregman.projections.for
d7e0 20 72 65 67 75 6c 61 72 69 7a 65 64 20 74 72 61 6e 73 70 6f 72 74 61 74 69 6f 6e 20 70 72 6f 62 .regularized.transportation.prob
d800 6c 65 6d 73 5c 6e 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 53 63 69 65 6e 74 69 66 69 63 lems\nSIAM.Journal.on.Scientific
d820 20 43 6f 6d 70 75 74 69 6e 67 2c 20 33 37 28 32 29 2c 20 41 31 31 31 31 2d 41 31 31 33 38 2e 5c .Computing,.37(2),.A1111-A1138.\
d840 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 n\n\n".......].....},.....{.....
d860 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 .."cell_type":."code",......."ex
d880 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 ecution_count":.null,......."met
d8a0 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
d8c0 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b alse.......},......."outputs":.[
d8e0 5d 2c 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":.[........."#.
d900 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
d920 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.
d940 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
d960 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
d980 70 6f 72 74 20 6f 74 5c 6e 23 20 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 33 64 20 70 6c 6f 74 port.ot\n#.necessary.for.3d.plot
d9a0 20 65 76 65 6e 20 69 66 20 6e 6f 74 20 75 73 65 64 5c 6e 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c .even.if.not.used\nfrom.mpl_tool
d9c0 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 65 73 33 44 20 20 23 20 6e 6f kits.mplot3d.import.Axes3D..#.no
d9e0 71 61 5c 6e 66 72 6f 6d 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 qa\nfrom.matplotlib.collections.
da00 69 6d 70 6f 72 74 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 22 0a 20 20 20 20 20 20 5d 0a 20 import.PolyCollection".......]..
da20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
da40 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c markdown",......."metadata":.{},
da60 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 65 ......."source":.[........."Gene
da80 72 61 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 rate.data\n-------------\n\n"...
daa0 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ....].....},.....{......."cell_t
dac0 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 ype":."code",......."execution_c
dae0 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ount":.null,......."metadata":.{
db00 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.....
db20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 ..},......."outputs":.[],.......
db40 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 70 61 72 61 6d 65 74 "source":.[........."#%%.paramet
db60 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 5c 6e 5c 6e 23 20 62 ers\n\nn.=.100..#.nb.bins\n\n#.b
db80 69 6e 20 70 6f 73 69 74 69 6f 6e 73 5c 6e 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 in.positions\nx.=.np.arange(n,.d
dba0 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c 6e 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 type=np.float64)\n\n#.Gaussian.d
dbc0 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 61 31 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d istributions\na1.=.ot.datasets.m
dbe0 61 6b 65 5f 31 44 5f 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 ake_1D_gauss(n,.m=20,.s=5)..#.m=
dc00 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 5c 6e 61 32 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e .mean,.s=.std\na2.=.ot.datasets.
dc20 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 38 29 5c 6e 5c 6e 23 make_1D_gauss(n,.m=60,.s=8)\n\n#
dc40 20 63 72 65 61 74 69 6e 67 20 6d 61 74 72 69 78 20 41 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c .creating.matrix.A.containing.al
dc60 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 41 20 3d 20 6e 70 2e 76 73 74 61 63 6b 28 28 l.distributions\nA.=.np.vstack((
dc80 61 31 2c 20 61 32 29 29 2e 54 5c 6e 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 3d 20 41 2e a1,.a2)).T\nn_distributions.=.A.
dca0 73 68 61 70 65 5b 31 5d 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 20 2b 20 6e 6f 72 6d shape[1]\n\n#.loss.matrix.+.norm
dcc0 61 6c 69 7a 61 74 69 6f 6e 5c 6e 4d 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 64 69 73 74 30 28 6e 29 alization\nM.=.ot.utils.dist0(n)
dce0 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 \nM./=.M.max()".......].....},..
dd00 20 20 20 7b 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
dd20 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 n",......."metadata":.{},.......
dd40 22 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 61 74 61 5c 6e "source":.[........."Plot.data\n
dd60 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 ---------\n\n".......].....},...
dd80 20 20 7b 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 0a 20 ..{......."cell_type":."code",..
dda0 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 0a 20 20 ....."execution_count":.null,...
ddc0 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 61 ...."metadata":.{........."colla
dde0 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 psed":.false.......},......."out
de00 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 puts":.[],......."source":.[....
de20 20 20 20 20 20 22 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 73 ....."#%%.plot.the.distributions
de40 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 33 \n\npl.figure(1,.figsize=(6.4,.3
de60 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 6f ))\nfor.i.in.range(n_distributio
de80 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 70 ns):\n....pl.plot(x,.A[:,.i])\np
dea0 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 67 l.title('Distributions')\npl.tig
dec0 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 ht_layout()".......].....},.....
dee0 7b 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",
df00 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f ......."metadata":.{},......."so
df20 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 42 61 72 79 63 65 6e 74 65 72 20 63 6f 6d urce":.[........."Barycenter.com
df40 70 75 74 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d putation\n----------------------
df60 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 \n\n".......].....},.....{......
df80 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 ."cell_type":."code",......."exe
dfa0 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 cution_count":.null,......."meta
dfc0 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
dfe0 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d lse.......},......."outputs":.[]
e000 2c 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 ,......."source":.[........."#%%
e020 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 61 .barycenter.computation\n\nalpha
e040 20 3d 20 30 2e 32 20 20 23 20 30 3c 3d 61 6c 70 68 61 3c 3d 31 5c 6e 77 65 69 67 68 74 73 20 3d .=.0.2..#.0<=alpha<=1\nweights.=
e060 20 6e 70 2e 61 72 72 61 79 28 5b 31 20 2d 20 61 6c 70 68 61 2c 20 61 6c 70 68 61 5d 29 5c 6e 5c .np.array([1.-.alpha,.alpha])\n\
e080 6e 23 20 6c 32 62 61 72 79 5c 6e 62 61 72 79 5f 6c 32 20 3d 20 41 2e 64 6f 74 28 77 65 69 67 68 n#.l2bary\nbary_l2.=.A.dot(weigh
e0a0 74 73 29 5c 6e 5c 6e 23 20 77 61 73 73 65 72 73 74 65 69 6e 5c 6e 72 65 67 20 3d 20 31 65 2d 33 ts)\n\n#.wasserstein\nreg.=.1e-3
e0c0 5c 6e 62 61 72 79 5f 77 61 73 73 20 3d 20 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 61 72 79 63 65 6e \nbary_wass.=.ot.bregman.barycen
e0e0 74 65 72 28 41 2c 20 4d 2c 20 72 65 67 2c 20 77 65 69 67 68 74 73 29 5c 6e 5c 6e 70 6c 2e 66 69 ter(A,.M,.reg,.weights)\n\npl.fi
e100 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 28 32 2c gure(2)\npl.clf()\npl.subplot(2,
e120 20 31 2c 20 31 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 .1,.1)\nfor.i.in.range(n_distrib
e140 75 74 69 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 utions):\n....pl.plot(x,.A[:,.i]
e160 29 5c 6e 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 5c 6e )\npl.title('Distributions')\n\n
e180 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 32 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 pl.subplot(2,.1,.2)\npl.plot(x,.
e1a0 62 61 72 79 5f 6c 32 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 6c 32 27 29 5c 6e 70 6c 2e 70 6c bary_l2,.'r',.label='l2')\npl.pl
e1c0 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 73 73 2c 20 27 67 27 2c 20 6c 61 62 65 6c 3d 27 57 61 73 ot(x,.bary_wass,.'g',.label='Was
e1e0 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 70 6c 2e 74 69 74 6c serstein')\npl.legend()\npl.titl
e200 65 28 27 42 61 72 79 63 65 6e 74 65 72 73 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 e('Barycenters')\npl.tight_layou
e220 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 t()".......].....},.....{.......
e240 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 "cell_type":."markdown",......."
e260 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b metadata":.{},......."source":.[
e280 0a 20 20 20 20 20 20 20 20 22 42 61 72 79 63 65 6e 74 72 69 63 20 69 6e 74 65 72 70 6f 6c 61 74 ........."Barycentric.interpolat
e2a0 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e ion\n-------------------------\n
e2c0 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 \n".......].....},.....{......."
e2e0 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 cell_type":."code",......."execu
e300 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 tion_count":.null,......."metada
e320 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 73 ta":.{........."collapsed":.fals
e340 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a e.......},......."outputs":.[],.
e360 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 62 ......"source":.[........."#%%.b
e380 61 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 arycenter.interpolation\n\nn_alp
e3a0 68 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 ha.=.11\nalpha_list.=.np.linspac
e3c0 65 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 e(0,.1,.n_alpha)\n\n\nB_l2.=.np.
e3e0 7a 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 zeros((n,.n_alpha))\n\nB_wass.=.
e400 6e 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 np.copy(B_l2)\n\nfor.i.in.range(
e420 30 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 0,.n_alpha):\n....alpha.=.alpha_
e440 6c 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 list[i]\n....weights.=.np.array(
e460 5b 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 [1.-.alpha,.alpha])\n....B_l2[:,
e480 20 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 .i].=.A.dot(weights)\n....B_wass
e4a0 5b 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 [:,.i].=.ot.bregman.barycenter(A
e4c0 2c 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 ,.M,.reg,.weights)\n\n#%%.plot.i
e4e0 6e 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 nterpolation\n\npl.figure(3)\n\n
e500 63 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 cmap.=.pl.cm.get_cmap('viridis')
e520 5c 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 \nverts.=.[]\nzs.=.alpha_list\nf
e540 6f 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 or.i,.z.in.enumerate(zs):\n....y
e560 73 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 s.=.B_l2[:,.i]\n....verts.append
e580 28 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 (list(zip(x,.ys)))\n\nax.=.pl.gc
e5a0 66 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 f().gca(projection='3d')\n\npoly
e5c0 20 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 .=.PolyCollection(verts,.facecol
e5e0 6f 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 ors=[cmap(a).for.a.in.alpha_list
e600 5d 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 ])\npoly.set_alpha(0.7)\nax.add_
e620 63 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 collection3d(poly,.zs=zs,.zdir='
e640 79 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 y')\nax.set_xlabel('x')\nax.set_
e660 78 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 xlim3d(0,.n)\nax.set_ylabel('$\\
e680 5c 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 \\alpha$')\nax.set_ylim3d(0,.1)\
e6a0 6e 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 nax.set_zlabel('')\nax.set_zlim3
e6c0 64 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 d(0,.B_l2.max().*.1.01)\npl.titl
e6e0 65 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 e('Barycenter.interpolation.with
e700 20 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 .l2')\npl.tight_layout()\n\npl.f
e720 69 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 igure(4)\ncmap.=.pl.cm.get_cmap(
e740 27 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 'viridis')\nverts.=.[]\nzs.=.alp
e760 68 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 ha_list\nfor.i,.z.in.enumerate(z
e780 73 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 s):\n....ys.=.B_wass[:,.i]\n....
e7a0 76 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 verts.append(list(zip(x,.ys)))\n
e7c0 5c 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 \nax.=.pl.gcf().gca(projection='
e7e0 33 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 3d')\n\npoly.=.PolyCollection(ve
e800 72 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 rts,.facecolors=[cmap(a).for.a.i
e820 6e 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 n.alpha_list])\npoly.set_alpha(0
e840 2e 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 .7)\nax.add_collection3d(poly,.z
e860 73 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 s=zs,.zdir='y')\nax.set_xlabel('
e880 78 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 x')\nax.set_xlim3d(0,.n)\nax.set
e8a0 5f 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 _ylabel('$\\\\alpha$')\nax.set_y
e8c0 6c 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 lim3d(0,.1)\nax.set_zlabel('')\n
e8e0 61 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 ax.set_zlim3d(0,.B_l2.max().*.1.
e900 30 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 01)\npl.title('Barycenter.interp
e920 6f 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 olation.with.Wasserstein')\npl.t
e940 69 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 ight_layout()\n\npl.show()".....
e960 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 ..].....}...],..."metadata":.{..
e980 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 61 ..."kernelspec":.{......."displa
e9a0 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 y_name":."Python.3",......."lang
e9c0 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 uage":."python",......."name":."
e9e0 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e python3".....},....."language_in
ea00 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 fo":.{......."codemirror_mode":.
ea20 7b 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 2c 0a 20 20 20 {........."name":."ipython",....
ea40 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 ....."version":.3.......},......
ea60 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 0a 20 20 20 20 20 20 ."file_extension":.".py",.......
ea80 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 0a 20 20 20 "mimetype":."text/x-python",....
eaa0 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f ..."name":."python",......."nbco
eac0 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 0a 20 20 20 20 20 nvert_exporter":."python",......
eae0 20 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 33 22 2c 0a 20 ."pygments_lexer":."ipython3",..
eb00 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 ....."version":."3.6.5".....}...
eb20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f },..."nbformat":.4,..."nbformat_
eb40 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 2d 60 cb 4c cc bf 84 66 2d 18 00 minor":.0.}PK........-`.L...f-..
eb60 00 2d 18 00 00 17 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 63 6c 61 73 73 65 73 2e 69 70 79 6e 62 .-.......plot_otda_classes.ipynb
eb80 7b 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 63 65 6c 6c {..."cells":.[.....{......."cell
eba0 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e _type":."code",......."execution
ebc0 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a _count":.null,......."metadata":
ebe0 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...
ec00 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 ....},......."outputs":.[],.....
ec20 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
ec40 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a ib.inline".......].....},.....{.
ec60 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 0a 20 ......"cell_type":."markdown",..
ec80 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ....."metadata":.{},......."sour
eca0 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 20 64 6f 6d 61 69 ce":.[........."\n#.OT.for.domai
ecc0 6e 20 61 64 61 70 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 n.adaptation\n\n\nThis.example.i
ece0 6e 74 72 6f 64 75 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 ntroduces.a.domain.adaptation.in
ed00 20 61 20 32 44 20 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 .a.2D.setting.and.the.4.OTDA\nap
ed20 70 72 6f 61 63 68 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 proaches.currently.supported.in.
ed40 50 4f 54 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b POT.\n\n\n".......].....},.....{
ed60 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 0a 20 20 20 20 ......."cell_type":."code",.....
ed80 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 0a 20 20 20 20 20 .."execution_count":.null,......
eda0 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
edc0 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 d":.false.......},......."output
ede0 73 22 3a 20 5b 5d 2c 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 s":.[],......."source":.[.......
ee00 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 6d 69 .."#.Authors:.Remi.Flamary.<remi
ee20 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 20 53 .flamary@unice.fr>\n#..........S
ee40 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 40 67 tanislas.Chambon.<stan.chambon@g
ee60 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 69 63 mail.com>\n#\n#.License:.MIT.Lic
ee80 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 2e 70 79 6c 61 62 20 ense\n\nimport.matplotlib.pylab.
eea0 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 0a 20 20 20 20 7d 2c as.pl\nimport.ot".......].....},
eec0 0a 20 20 20 20 7b 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 .....{......."cell_type":."markd
eee0 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 own",......."metadata":.{},.....
ef00 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 61 74 65 20 .."source":.[........."Generate.
ef20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d data\n-------------\n\n".......]
ef40 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
ef60 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 ."code",......."execution_count"
ef80 3a 20 6e 75 6c 6c 2c 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 :.null,......."metadata":.{.....
efa0 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 2c 0a ...."collapsed":.false.......},.
efc0 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ......"outputs":.[],......."sour
efe0 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 ce":.[........."n_source_samples
f000 20 3d 20 31 35 30 5c 6e 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 6c 65 73 20 3d 20 31 35 30 5c 6e .=.150\nn_target_samples.=.150\n
f020 5c 6e 58 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 64 61 74 61 \nXs,.ys.=.ot.datasets.make_data
f040 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 20 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 _classif('3gauss',.n_source_samp
f060 6c 65 73 29 5c 6e 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f les)\nXt,.yt.=.ot.datasets.make_
f080 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 20 6e 5f 74 61 72 67 65 74 data_classif('3gauss2',.n_target
f0a0 5f 73 61 6d 70 6c 65 73 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a _samples)".......].....},.....{.
f0c0 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 0a 20 ......"cell_type":."markdown",..
f0e0 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ....."metadata":.{},......."sour
f100 63 65 22 3a 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 ce":.[........."Instantiate.the.
f120 64 69 66 66 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 different.transport.algorithms.a
f140 6e 64 20 66 69 74 20 74 68 65 6d 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nd.fit.them\n-------------------
f160 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
f180 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 --------\n\n".......].....},....
f1a0 20 7b 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 0a 20 20 .{......."cell_type":."code",...
f1c0 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 0a 20 20 20 ...."execution_count":.null,....
f1e0 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
f200 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 sed":.false.......},......."outp
f220 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 uts":.[],......."source":.[.....
f240 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 65 6d 64 20 3d 20 6f ...."#.EMD.Transport\not_emd.=.o
f260 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 2e 66 69 74 28 t.da.EMDTransport()\not_emd.fit(
f280 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 72 6e 20 54 72 61 6e Xs=Xs,.Xt=Xt)\n\n#.Sinkhorn.Tran
f2a0 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 6b 68 sport\not_sinkhorn.=.ot.da.Sinkh
f2c0 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 69 6e ornTransport(reg_e=1e-1)\not_sin
f2e0 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 5c 6e 23 20 53 69 6e khorn.fit(Xs=Xs,.Xt=Xt)\n\n#.Sin
f300 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
f320 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 3d 20 6f 74 2e 64 61 .regularization\not_lpl1.=.ot.da
f340 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 67 5f 65 3d 31 65 2d .SinkhornLpl1Transport(reg_e=1e-
f360 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 69 74 28 58 73 3d 58 1,.reg_cl=1e0)\not_lpl1.fit(Xs=X
f380 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 6b 68 6f 72 6e 20 54 s,.ys=ys,.Xt=Xt)\n\n#.Sinkhorn.T
f3a0 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 20 72 65 67 75 6c 61 ransport.with.Group.lasso.regula
f3c0 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 6f 74 2e 64 61 2e 53 rization.l1l2\not_l1l2.=.ot.da.S
f3e0 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 65 3d 31 65 2d 31 2c inkhornL1l2Transport(reg_e=1e-1,
f400 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 5c 6e 20 20 20 20 20 .reg_cl=2e0,.max_iter=20,\n.....
f420 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 20 20 ................................
f440 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 69 74 28 58 73 3d 58 .verbose=True)\not_l1l2.fit(Xs=X
f460 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 6e 73 70 6f 72 74 20 s,.ys=ys,.Xt=Xt)\n\n#.transport.
f480 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 74 20 73 61 6d 70 6c source.samples.onto.target.sampl
f4a0 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 64 2e 74 72 61 6e 73 es\ntransp_Xs_emd.=.ot_emd.trans
f4c0 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 6e 6b 68 6f 72 6e 20 form(Xs=Xs)\ntransp_Xs_sinkhorn.
f4e0 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 73 3d 58 73 29 5c 6e =.ot_sinkhorn.transform(Xs=Xs)\n
f500 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 74 72 61 6e 73 66 6f transp_Xs_lpl1.=.ot_lpl1.transfo
f520 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 20 3d 20 6f 74 5f 6c rm(Xs=Xs)\ntransp_Xs_l1l2.=.ot_l
f540 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 20 20 20 5d 0a 20 20 1l2.transform(Xs=Xs)".......]...
f560 20 20 7d 2c 0a 20 20 20 20 7b 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
f580 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a arkdown",......."metadata":.{},.
f5a0 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 20 31 ......"source":.[........."Fig.1
f5c0 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 70 6c .:.plots.source.and.target.sampl
f5e0 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d es\n----------------------------
f600 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a -----------\n\n".......].....},.
f620 20 20 20 20 7b 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 ....{......."cell_type":."code",
f640 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 0a ......."execution_count":.null,.
f660 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 6c ......"metadata":.{........."col
f680 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
f6a0 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
f6c0 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 7a 65 3d 28 31 30 ......."pl.figure(1,.figsize=(10
f6e0 2c 20 35 29 29 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 ,.5))\npl.subplot(1,.2,.1)\npl.s
f700 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,
f720 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
f740 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([
f760 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 65 28 27 ])\npl.legend(loc=0)\npl.title('
f780 53 6f 75 72 63 65 20 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 Source..samples')\n\npl.subplot(
f7a0 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 2c 20 30 5d 2c 20 58 1,.2,.2)\npl.scatter(Xt[:,.0],.X
f7c0 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 20 6c 61 62 65 6c t[:,.1],.c=yt,.marker='o',.label
f7e0 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 69 63 6b 73 28 5b 5d ='Target.samples')\npl.xticks([]
f800 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 63 3d )\npl.yticks([])\npl.legend(loc=
f820 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 0)\npl.title('Target.samples')\n
f840 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 0a 20 20 20 20 7d pl.tight_layout()".......].....}
f860 2c 0a 20 20 20 20 7b 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
f880 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 down",......."metadata":.{},....
f8a0 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 32 20 3a 20 ..."source":.[........."Fig.2.:.
f8c0 70 6c 6f 74 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 20 61 6e 64 20 74 72 61 6e 73 plot.optimal.couplings.and.trans
f8e0 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ported.samples\n----------------
f900 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
f920 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b ------\n\n".......].....},.....{
f940 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 0a 20 20 20 20 ......."cell_type":."code",.....
f960 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 0a 20 20 20 20 20 .."execution_count":.null,......
f980 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
f9a0 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 d":.false.......},......."output
f9c0 73 22 3a 20 5b 5d 2c 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 s":.[],......."source":.[.......
f9e0 20 20 22 70 61 72 61 6d 5f 69 6d 67 20 3d 20 7b 27 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 27 3a .."param_img.=.{'interpolation':
fa00 20 27 6e 65 61 72 65 73 74 27 7d 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 .'nearest'}\n\npl.figure(2,.figs
fa20 69 7a 65 3d 28 31 35 2c 20 38 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 31 ize=(15,.8))\npl.subplot(2,.4,.1
fa40 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 65 6d 64 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a )\npl.imshow(ot_emd.coupling_,.*
fa60 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 79 *param_img)\npl.xticks([])\npl.y
fa80 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 75 ticks([])\npl.title('Optimal.cou
faa0 70 6c 69 6e 67 5c 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 pling\\nEMDTransport')\n\npl.sub
fac0 70 6c 6f 74 28 32 2c 20 34 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 69 6e 6b plot(2,.4,.2)\npl.imshow(ot_sink
fae0 68 6f 72 6e 2e 63 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 horn.coupling_,.**param_img)\npl
fb00 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 70 6c 2e 74 .xticks([])\npl.yticks([])\npl.t
fb20 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 6b 68 6f 72 itle('Optimal.coupling\\nSinkhor
fb40 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 28 32 2c 20 34 2c nTransport')\n\npl.subplot(2,.4,
fb60 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 70 6c 69 6e 67 5f .3)\npl.imshow(ot_lpl1.coupling_
fb80 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 5d 29 5c 6e 70 ,.**param_img)\npl.xticks([])\np
fba0 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 69 6d 61 6c 20 l.yticks([])\npl.title('Optimal.
fbc0 63 6f 75 70 6c 69 6e 67 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 coupling\\nSinkhornLpl1Transport
fbe0 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 34 29 5c 6e 70 6c 2e 69 6d ')\n\npl.subplot(2,.4,.4)\npl.im
fc00 73 68 6f 77 28 6f 74 5f 6c 31 6c 32 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f show(ot_l1l2.coupling_,.**param_
fc20 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([
fc40 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\\
fc60 6e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 nSinkhornL1l2Transport')\n\npl.s
fc80 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 35 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a ubplot(2,.4,.5)\npl.scatter(Xt[:
fca0 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'
fcc0 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 6d 70 ,\n...........label='Target.samp
fce0 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 65 72 28 74 72 61 les',.alpha=0.3)\npl.scatter(tra
fd00 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 58 73 5f 65 6d 64 5b nsp_Xs_emd[:,.0],.transp_Xs_emd[
fd20 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 6b 65 72 3d :,.1],.c=ys,\n...........marker=
fd40 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 73 27 2c 20 73 3d 33 '+',.label='Transp.samples',.s=3
fd60 30 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 0)\npl.xticks([])\npl.yticks([])
fd80 5c 6e 70 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 \npl.title('Transported.samples\
fda0 5c 6e 45 6d 64 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d \nEmdTransport')\npl.legend(loc=
fdc0 5c 22 6c 6f 77 65 72 20 6c 65 66 74 5c 22 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c \"lower.left\")\n\npl.subplot(2,
fde0 20 34 2c 20 36 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 .4,.6)\npl.scatter(Xt[:,.0],.Xt[
fe00 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 20 :,.1],.c=yt,.marker='o',\n......
fe20 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 70 .....label='Target.samples',.alp
fe40 68 61 3d 30 2e 33 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 ha=0.3)\npl.scatter(transp_Xs_si
fe60 6e 6b 68 6f 72 6e 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 nkhorn[:,.0],.transp_Xs_sinkhorn
fe80 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 6b 65 72 [:,.1],.c=ys,\n...........marker
fea0 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 73 27 2c 20 73 3d ='+',.label='Transp.samples',.s=
fec0 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 69 63 6b 73 28 5b 5d 30)\npl.xticks([])\npl.yticks([]
fee0 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 73 61 6d 70 6c 65 73 )\npl.title('Transported.samples
ff00 5c 5c 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 \\nSinkhornTransport')\n\npl.sub
ff20 70 6c 6f 74 28 32 2c 20 34 2c 20 37 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 plot(2,.4,.7)\npl.scatter(Xt[:,.
ff40 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 5c 0],.Xt[:,.1],.c=yt,.marker='o',\
ff60 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 65 n...........label='Target.sample
ff80 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 73 s',.alpha=0.3)\npl.scatter(trans
ffa0 70 5f 58 73 5f 6c 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 p_Xs_lpl1[:,.0],.transp_Xs_lpl1[
ffc0 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 6b 65 72 3d :,.1],.c=ys,\n...........marker=
ffe0 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 73 27 2c 20 73 3d 33 '+',.label='Transp.samples',.s=3
10000 30 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 0)\npl.xticks([])\npl.yticks([])
10020 5c 6e 70 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 \npl.title('Transported.samples\
10040 5c 6e 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 5c 6e 70 6c 2e \nSinkhornLpl1Transport')\n\npl.
10060 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 38 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b subplot(2,.4,.8)\npl.scatter(Xt[
10080 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 6f :,.0],.Xt[:,.1],.c=yt,.marker='o
100a0 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 6d ',\n...........label='Target.sam
100c0 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 65 72 28 74 72 ples',.alpha=0.3)\npl.scatter(tr
100e0 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 6c 31 ansp_Xs_l1l2[:,.0],.transp_Xs_l1
10100 6c 32 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 6b l2[:,.1],.c=ys,\n...........mark
10120 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 73 27 2c 20 er='+',.label='Transp.samples',.
10140 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 69 63 6b 73 28 s=30)\npl.xticks([])\npl.yticks(
10160 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 73 61 6d 70 6c [])\npl.title('Transported.sampl
10180 65 73 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 5c 6e 70 6c es\\nSinkhornL1l2Transport')\npl
101a0 2e 74 69 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 .tight_layout()\n\npl.show()"...
101c0 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ....].....}...],..."metadata":.{
101e0 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
10200 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 lay_name":."Python.3",......."la
10220 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a nguage":."python",......."name":
10240 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f ."python3".....},....."language_
10260 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 info":.{......."codemirror_mode"
10280 3a 20 7b 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 2c 0a 20 :.{........."name":."ipython",..
102a0 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 ......."version":.3.......},....
102c0 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 0a 20 20 20 20 ..."file_extension":.".py",.....
102e0 20 20 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 0a 20 .."mimetype":."text/x-python",..
10300 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 ....."name":."python",......."nb
10320 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 0a 20 20 20 convert_exporter":."python",....
10340 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 74 68 6f 6e 33 22 2c ..."pygments_lexer":."ipython3",
10360 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a ......."version":."3.6.5".....}.
10380 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 ..},..."nbformat":.4,..."nbforma
103a0 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 ec 45 43 4d df ba b4 fb aa t_minor":.0.}PK.........ECM.....
103c0 10 00 00 aa 10 00 00 17 00 00 00 70 6c 6f 74 5f 4f 54 5f 31 44 5f 73 6d 6f 6f 74 68 2e 69 70 79 ...........plot_OT_1D_smooth.ipy
103e0 6e 62 7b 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 63 65 nb{..."cells":.[.....{......."ce
10400 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 ll_type":."code",......."executi
10420 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 on_count":.null,......."metadata
10440 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.
10460 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 ......},......."outputs":.[],...
10480 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
104a0 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 tlib.inline".......].....},.....
104c0 7b 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",
104e0 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f ......."metadata":.{},......."so
10500 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 73 6d 6f 6f 74 68 20 urce":.[........."\n#.1D.smooth.
10520 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d optimal.transport\n\n\nThis.exam
10540 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 ple.illustrates.the.computation.
10560 6f 66 20 45 4d 44 2c 20 53 69 6e 6b 68 6f 72 6e 20 61 6e 64 20 73 6d 6f 6f 74 68 20 4f 54 20 70 of.EMD,.Sinkhorn.and.smooth.OT.p
10580 6c 61 6e 73 5c 6e 61 6e 64 20 74 68 65 69 72 20 76 69 73 75 61 6c 69 7a 61 74 69 6f 6e 2e 5c 6e lans\nand.their.visualization.\n
105a0 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 \n\n".......].....},.....{......
105c0 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 ."cell_type":."code",......."exe
105e0 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 cution_count":.null,......."meta
10600 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
10620 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d lse.......},......."outputs":.[]
10640 2c 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 41 ,......."source":.[........."#.A
10660 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 72 uthor:.Remi.Flamary.<remi.flamar
10680 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 4c y@unice.fr>\n#\n#.License:.MIT.L
106a0 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 6d icense\n\nimport.numpy.as.np\nim
106c0 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
106e0 6f 72 74 20 6f 74 5c 6e 69 6d 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 5c 6e 66 72 6f 6d 20 6f 74 2e ort.ot\nimport.ot.plot\nfrom.ot.
10700 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 20 61 73 datasets.import.make_1D_gauss.as
10720 20 67 61 75 73 73 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 .gauss".......].....},.....{....
10740 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 0a 20 20 20 20 ..."cell_type":."markdown",.....
10760 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 .."metadata":.{},......."source"
10780 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 47 65 6e 65 72 61 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d :.[........."Generate.data\n----
107a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 ---------\n\n".......].....},...
107c0 20 20 7b 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 0a 20 ..{......."cell_type":."code",..
107e0 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 0a 20 20 ....."execution_count":.null,...
10800 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 61 ...."metadata":.{........."colla
10820 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 psed":.false.......},......."out
10840 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 puts":.[],......."source":.[....
10860 20 20 20 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 ....."#%%.parameters\n\nn.=.100.
10880 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
108a0 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 36 34 .=.np.arange(n,.dtype=np.float64
108c0 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 6f 6e 73 5c 6e 61 )\n\n#.Gaussian.distributions\na
108e0 20 3d 20 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 .=.gauss(n,.m=20,.s=5)..#.m=.mea
10900 6e 2c 20 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 n,.s=.std\nb.=.gauss(n,.m=60,.s=
10920 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 69 73 10)\n\n#.loss.matrix\nM.=.ot.dis
10940 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 28 28 t(x.reshape((n,.1)),.x.reshape((
10960 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 0a 20 n,.1)))\nM./=.M.max()".......]..
10980 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
109a0 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c markdown",......."metadata":.{},
109c0 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 50 6c 6f 74 ......."source":.[........."Plot
109e0 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 74 72 69 78 5c 6e .distributions.and.loss.matrix\n
10a00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
10a20 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 --\n\n".......].....},.....{....
10a40 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 ..."cell_type":."code",......."e
10a60 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 xecution_count":.null,......."me
10a80 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":.
10aa0 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 false.......},......."outputs":.
10ac0 5b 5d 2c 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 [],......."source":.[........."#
10ae0 25 25 20 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 %%.plot.the.distributions\n\npl.
10b00 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 29 29 5c 6e 70 6c 2e figure(1,.figsize=(6.4,.3))\npl.
10b20 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
10b40 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 2c 20 27 72 27 2c stribution')\npl.plot(x,.b,.'r',
10b60 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 .label='Target.distribution')\np
10b80 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 l.legend()\n\n#%%.plot.distribut
10ba0 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 ions.and.loss.matrix\n\npl.figur
10bc0 65 28 32 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 70 6c e(2,.figsize=(5,.5))\not.plot.pl
10be0 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 4d 2c 20 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d ot1D_mat(a,.b,.M,.'Cost.matrix.M
10c00 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 ')".......].....},.....{......."
10c20 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d cell_type":."markdown",......."m
10c40 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a etadata":.{},......."source":.[.
10c60 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 45 4d 44 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c ........"Solve.EMD\n---------\n\
10c80 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 n".......].....},.....{......."c
10ca0 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 ell_type":."code",......."execut
10cc0 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ion_count":.null,......."metadat
10ce0 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 73 65 a":.{........."collapsed":.false
10d00 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 .......},......."outputs":.[],..
10d20 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 45 4d ....."source":.[........."#%%.EM
10d40 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 6c 2e D\n\nG0.=.ot.emd(a,.b,.M)\n\npl.
10d60 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 70 6c figure(3,.figsize=(5,.5))\not.pl
10d80 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 74 72 ot.plot1D_mat(a,.b,.G0,.'OT.matr
10da0 69 78 20 47 30 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 ix.G0')".......].....},.....{...
10dc0 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 0a 20 20 20 ...."cell_type":."markdown",....
10de0 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ..."metadata":.{},......."source
10e00 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 53 69 6e 6b 68 6f 72 6e 5c 6e 2d 2d ":.[........."Solve.Sinkhorn\n--
10e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c ------------\n\n".......].....},
10e40 0a 20 20 20 20 7b 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 .....{......."cell_type":."code"
10e60 2c 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,
10e80 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
10ea0 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 llapsed":.false.......},......."
10ec0 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a outputs":.[],......."source":.[.
10ee0 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 62 64 20 3d ........"#%%.Sinkhorn\n\nlambd.=
10f00 20 32 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 2c 20 4d 2c .2e-3\nGs.=.ot.sinkhorn(a,.b,.M,
10f20 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 66 69 67 75 .lambd,.verbose=True)\n\npl.figu
10f40 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 6f 74 2e 70 re(4,.figsize=(5,.5))\not.plot.p
10f60 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 69 78 20 53 lot1D_mat(a,.b,.Gs,.'OT.matrix.S
10f80 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 20 20 5d 0a inkhorn')\n\npl.show()".......].
10fa0 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ....},.....{......."cell_type":.
10fc0 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d "markdown",......."metadata":.{}
10fe0 2c 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
11000 76 65 20 53 6d 6f 6f 74 68 20 4f 54 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e ve.Smooth.OT\n--------------\n\n
11020 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 ".......].....},.....{......."ce
11040 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 ll_type":."code",......."executi
11060 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 on_count":.null,......."metadata
11080 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.
110a0 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 ......},......."outputs":.[],...
110c0 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 53 6d 6f ...."source":.[........."#%%.Smo
110e0 6f 74 68 20 4f 54 20 77 69 74 68 20 4b 4c 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 5c oth.OT.with.KL.regularization\n\
11100 6e 6c 61 6d 62 64 20 3d 20 32 65 2d 33 5c 6e 47 73 6d 20 3d 20 6f 74 2e 73 6d 6f 6f 74 68 2e 73 nlambd.=.2e-3\nGsm.=.ot.smooth.s
11120 6d 6f 6f 74 68 5f 6f 74 5f 64 75 61 6c 28 61 2c 20 62 2c 20 4d 2c 20 6c 61 6d 62 64 2c 20 72 65 mooth_ot_dual(a,.b,.M,.lambd,.re
11140 67 5f 74 79 70 65 3d 27 6b 6c 27 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 35 2c 20 66 69 67 g_type='kl')\n\npl.figure(5,.fig
11160 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 size=(5,.5))\not.plot.plot1D_mat
11180 28 61 2c 20 62 2c 20 47 73 6d 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 53 6d 6f 6f 74 68 20 4f 54 (a,.b,.Gsm,.'OT.matrix.Smooth.OT
111a0 20 4b 4c 20 72 65 67 2e 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 5c 6e 5c 6e 5c 6e 23 25 25 .KL.reg.')\n\npl.show()\n\n\n#%%
111c0 20 53 6d 6f 6f 74 68 20 4f 54 20 77 69 74 68 20 4b 4c 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f .Smooth.OT.with.KL.regularizatio
111e0 6e 5c 6e 5c 6e 6c 61 6d 62 64 20 3d 20 31 65 2d 31 5c 6e 47 73 6d 20 3d 20 6f 74 2e 73 6d 6f 6f n\n\nlambd.=.1e-1\nGsm.=.ot.smoo
11200 74 68 2e 73 6d 6f 6f 74 68 5f 6f 74 5f 64 75 61 6c 28 61 2c 20 62 2c 20 4d 2c 20 6c 61 6d 62 64 th.smooth_ot_dual(a,.b,.M,.lambd
11220 2c 20 72 65 67 5f 74 79 70 65 3d 27 6c 32 27 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 36 2c ,.reg_type='l2')\n\npl.figure(6,
11240 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 70 6c 6f 74 31 44 .figsize=(5,.5))\not.plot.plot1D
11260 5f 6d 61 74 28 61 2c 20 62 2c 20 47 73 6d 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 53 6d 6f 6f 74 _mat(a,.b,.Gsm,.'OT.matrix.Smoot
11280 68 20 4f 54 20 6c 32 20 72 65 67 2e 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 h.OT.l2.reg.')\n\npl.show()"....
112a0 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a ...].....}...],..."metadata":.{.
112c0 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
112e0 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e ay_name":."Python.3",......."lan
11300 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 guage":."python",......."name":.
11320 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 "python3".....},....."language_i
11340 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a nfo":.{......."codemirror_mode":
11360 20 7b 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 2c 0a 20 20 .{........."name":."ipython",...
11380 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 ......"version":.3.......},.....
113a0 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 0a 20 20 20 20 20 .."file_extension":.".py",......
113c0 20 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 0a 20 20 ."mimetype":."text/x-python",...
113e0 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 ...."name":."python",......."nbc
11400 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 0a 20 20 20 20 onvert_exporter":."python",.....
11420 20 20 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 33 22 2c 0a .."pygments_lexer":."ipython3",.
11440 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 ......"version":."3.6.5".....}..
11460 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 .},..."nbformat":.4,..."nbformat
11480 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 77 6d 7d 4e 80 8e 14 e4 3b 18 _minor":.0.}PK........wm}N....;.
114a0 00 00 3b 18 00 00 25 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f ..;...%...plot_otda_mapping_colo
114c0 72 73 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 rs_images.ipynb{..."cells":.[...
114e0 20 20 7b 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 0a 20 ..{......."cell_type":."code",..
11500 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 0a 20 20 ....."execution_count":.null,...
11520 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 61 ...."metadata":.{........."colla
11540 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 psed":.false.......},......."out
11560 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 puts":.[],......."source":.[....
11580 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".......
115a0 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ].....},.....{......."cell_type"
115c0 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 :."markdown",......."metadata":.
115e0 7b 7d 2c 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":.[........."\
11600 6e 23 20 4f 54 20 66 6f 72 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e n#.OT.for.image.color.adaptation
11620 20 77 69 74 68 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 5c 6e 5c 6e 5c 6e 4f 54 .with.mapping.estimation\n\n\nOT
11640 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 74 68 20 69 6d 61 67 .for.domain.adaptation.with.imag
11660 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 74 68 20 6d 61 70 70 e.color.adaptation.[6].with.mapp
11680 69 6e 67 5c 6e 65 73 74 69 6d 61 74 69 6f 6e 20 5b 38 5d 2e 5c 6e 5c 6e 5b 36 5d 20 46 65 72 72 ing\nestimation.[8].\n\n[6].Ferr
116a0 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 72 65 2c adans,.S.,.Papadakis,.N.,.Peyre,
116c0 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 65 67 75 .G.,.&.Aujol,.J..F..(2014)..Regu
116e0 6c 61 72 69 7a 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 larized\n....discrete.optimal.tr
11700 61 6e 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 ansport..SIAM.Journal.on.Imaging
11720 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 5c 6e 20 20 20 20 31 38 35 33 2d 31 38 38 32 2e .Sciences,.7(3),\n....1853-1882.
11740 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 20 46 \n[8].M..Perrot,.N..Courty,.R..F
11760 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 20 5c 22 4d 61 70 70 69 6e 67 20 65 73 lamary,.A..Habrard,.\"Mapping.es
11780 74 69 6d 61 74 69 6f 6e 20 66 6f 72 5c 6e 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d timation.for\n....discrete.optim
117a0 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 22 2c 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 al.transport\",.Neural.Informati
117c0 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 50 53 29 2c 5c 6e 20 on.Processing.Systems.(NIPS),\n.
117e0 20 20 20 32 30 31 36 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 ...2016.\n\n\n".......].....},..
11800 20 20 20 7b 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 0a ...{......."cell_type":."code",.
11820 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 0a 20 ......"execution_count":.null,..
11840 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
11860 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 apsed":.false.......},......."ou
11880 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 tputs":.[],......."source":.[...
118a0 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 79 20 3c ......"#.Authors:.Remi.Flamary.<
118c0 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 20 20 20 remi.flamary@unice.fr>\n#.......
118e0 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 61 6d 62 ...Stanislas.Chambon.<stan.chamb
11900 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 4d 49 54 on@gmail.com>\n#\n#.License:.MIT
11920 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 6e 70 5c 6e .License\n\nimport.numpy.as.np\n
11940 66 72 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 from.scipy.import.ndimage\nimpor
11960 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 72 74 t.matplotlib.pylab.as.pl\nimport
11980 20 6f 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 .ot\n\nr.=.np.random.RandomState
119a0 28 34 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 (42)\n\n\ndef.im2mat(I):\n....\"
119c0 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 69 78 \"\"Converts.and.image.to.matrix
119e0 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 20 20 .(one.pixel.per.line)\"\"\"\n...
11a00 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 20 2a 20 .return.I.reshape((I.shape[0].*.
11a20 49 2e 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 I.shape[1],.I.shape[2]))\n\n\nde
11a40 66 20 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 f.mat2im(X,.shape):\n....\"\"\"C
11a60 6f 6e 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 onverts.back.a.matrix.to.an.imag
11a80 65 5c 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 e\"\"\"\n....return.X.reshape(sh
11aa0 61 70 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 ape)\n\n\ndef.minmax(I):\n....re
11ac0 74 75 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 0a 20 turn.np.clip(I,.0,.1)".......]..
11ae0 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
11b00 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c markdown",......."metadata":.{},
11b20 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 65 ......."source":.[........."Gene
11b40 72 61 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 rate.data\n-------------\n\n"...
11b60 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ....].....},.....{......."cell_t
11b80 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 ype":."code",......."execution_c
11ba0 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ount":.null,......."metadata":.{
11bc0 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.....
11be0 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 ..},......."outputs":.[],.......
11c00 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 64 69 6e 67 20 69 "source":.[........."#.Loading.i
11c20 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 28 27 2e 2e 2f 64 mages\nI1.=.ndimage.imread('../d
11c40 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 28 6e 70 2e 66 6c ata/ocean_day.jpg').astype(np.fl
11c60 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 2e 69 6d 72 65 61 oat64)./.256\nI2.=.ndimage.imrea
11c80 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 2e 61 73 d('../data/ocean_sunset.jpg').as
11ca0 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 5c 6e 58 31 20 3d type(np.float64)./.256\n\n\nX1.=
11cc0 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 32 29 5c 6e 5c 6e .im2mat(I1)\nX2.=.im2mat(I2)\n\n
11ce0 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 30 30 30 5c 6e 69 #.training.samples\nnb.=.1000\ni
11d00 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 5d 2c 20 73 69 7a dx1.=.r.randint(X1.shape[0],.siz
11d20 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 28 58 32 2e 73 68 e=(nb,))\nidx2.=.r.randint(X2.sh
11d40 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 3d 20 58 31 5b 69 ape[0],.size=(nb,))\n\nXs.=.X1[i
11d60 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 0a 20 20 20 20 20 dx1,.:]\nXt.=.X2[idx2,.:]"......
11d80 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 .].....},.....{......."cell_type
11da0 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a ":."markdown",......."metadata":
11dc0 20 7b 7d 2c 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 .{},......."source":.[........."
11de0 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 74 Domain.adaptation.for.pixel.dist
11e00 72 69 62 75 74 69 6f 6e 20 74 72 61 6e 73 66 65 72 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ribution.transfer\n-------------
11e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11e40 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 ----\n\n".......].....},.....{..
11e60 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 0a 20 20 20 20 20 20 ....."cell_type":."code",.......
11e80 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 "execution_count":.null,......."
11ea0 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"
11ec0 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 :.false.......},......."outputs"
11ee0 3a 20 5b 5d 2c 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":.[.........
11f00 22 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 "#.EMDTransport\not_emd.=.ot.da.
11f20 45 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 EMDTransport()\not_emd.fit(Xs=Xs
11f40 2c 20 58 74 3d 58 74 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 ,.Xt=Xt)\ntransp_Xs_emd.=.ot_emd
11f60 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 49 6d 61 67 65 5f 65 6d 64 20 3d 20 6d .transform(Xs=X1)\nImage_emd.=.m
11f80 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 20 49 31 2e 73 inmax(mat2im(transp_Xs_emd,.I1.s
11fa0 68 61 70 65 29 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 6f hape))\n\n#.SinkhornTransport\no
11fc0 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 73 t_sinkhorn.=.ot.da.SinkhornTrans
11fe0 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 69 port(reg_e=1e-1)\not_sinkhorn.fi
12000 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 73 69 6e 6b 68 t(Xs=Xs,.Xt=Xt)\ntransp_Xs_sinkh
12020 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 73 3d 58 orn.=.ot_sinkhorn.transform(Xs=X
12040 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 28 6d 61 74 32 1)\nImage_sinkhorn.=.minmax(mat2
12060 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 68 61 70 65 29 im(transp_Xs_sinkhorn,.I1.shape)
12080 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 2e 64 61 2e 4d )\n\not_mapping_linear.=.ot.da.M
120a0 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 30 2c 20 65 74 appingTransport(\n....mu=1e0,.et
120c0 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 3d 32 30 2c 20 a=1e-8,.bias=True,.max_iter=20,.
120e0 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 69 6e 65 61 72 verbose=True)\not_mapping_linear
12100 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 3d 20 6f 74 5f .fit(Xs=Xs,.Xt=Xt)\n\nX1tl.=.ot_
12120 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 31 29 5c mapping_linear.transform(Xs=X1)\
12140 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 6d 61 78 28 6d nImage_mapping_linear.=.minmax(m
12160 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 74 5f 6d 61 70 at2im(X1tl,.I1.shape))\n\not_map
12180 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 6e 67 54 72 61 ping_gaussian.=.ot.da.MappingTra
121a0 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 2d 32 2c 20 73 nsport(\n....mu=1e0,.eta=1e-2,.s
121c0 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 72 3d 31 30 2c igma=1,.bias=False,.max_iter=10,
121e0 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 67 61 75 73 73 .verbose=True)\not_mapping_gauss
12200 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 74 6e 20 3d 20 ian.fit(Xs=Xs,.Xt=Xt)\n\nX1tn.=.
12220 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 72 6d 28 58 73 ot_mapping_gaussian.transform(Xs
12240 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 61 70 70 69 6e =X1)..#.use.the.estimated.mappin
12260 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 20 6d 69 6e 6d g\nImage_mapping_gaussian.=.minm
12280 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 0a 20 20 20 20 ax(mat2im(X1tn,.I1.shape))".....
122a0 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 ..].....},.....{......."cell_typ
122c0 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 e":."markdown",......."metadata"
122e0 3a 20 7b 7d 2c 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":.[.........
12300 22 50 6c 6f 74 20 6f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d "Plot.original.images\n---------
12320 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a -----------\n\n".......].....},.
12340 20 20 20 20 7b 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 ....{......."cell_type":."code",
12360 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 0a ......."execution_count":.null,.
12380 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 6c ......"metadata":.{........."col
123a0 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
123c0 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
123e0 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 7a 65 3d 28 36 2e ......."pl.figure(1,.figsize=(6.
12400 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 29 5c 6e 70 6c 2e 4,.3))\npl.subplot(1,.2,.1)\npl.
12420 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 70 6c 2e 74 imshow(I1)\npl.axis('off')\npl.t
12440 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 74 28 31 2c itle('Image.1')\n\npl.subplot(1,
12460 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 61 78 69 73 28 27 .2,.2)\npl.imshow(I2)\npl.axis('
12480 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 5c 6e 70 6c 2e 74 off')\npl.title('Image.2')\npl.t
124a0 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 ight_layout()".......].....},...
124c0 20 20 7b 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
124e0 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 ",......."metadata":.{},......."
12500 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 70 69 78 65 6c 20 76 source":.[........."Plot.pixel.v
12520 61 6c 75 65 73 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d alues.distribution\n------------
12540 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a ------------------\n\n".......].
12560 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ....},.....{......."cell_type":.
12580 22 63 6f 64 65 22 2c 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 "code",......."execution_count":
125a0 20 6e 75 6c 6c 2c 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 .null,......."metadata":.{......
125c0 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 2c 0a 20 ..."collapsed":.false.......},..
125e0 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ....."outputs":.[],......."sourc
12600 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 32 2c 20 66 69 67 73 e":.[........."pl.figure(2,.figs
12620 69 7a 65 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 ize=(6.4,.5))\n\npl.subplot(1,.2
12640 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 20 58 73 5b 3a 2c ,.1)\npl.scatter(Xs[:,.0],.Xs[:,
12660 20 32 5d 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 .2],.c=Xs)\npl.axis([0,.1,.0,.1]
12680 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 28 27 )\npl.xlabel('Red')\npl.ylabel('
126a0 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 6e 70 Blue')\npl.title('Image.1')\n\np
126c0 6c 2e 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 58 l.subplot(1,.2,.2)\npl.scatter(X
126e0 74 5b 3a 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 t[:,.0],.Xt[:,.2],.c=Xt)\npl.axi
12700 73 28 5b 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 s([0,.1,.0,.1])\npl.xlabel('Red'
12720 29 5c 6e 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 )\npl.ylabel('Blue')\npl.title('
12740 49 6d 61 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 Image.2')\npl.tight_layout()"...
12760 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ....].....},.....{......."cell_t
12780 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ype":."markdown",......."metadat
127a0 61 22 3a 20 7b 7d 2c 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 a":.{},......."source":.[.......
127c0 20 20 22 50 6c 6f 74 20 74 72 61 6e 73 66 6f 72 6d 65 64 20 69 6d 61 67 65 73 5c 6e 2d 2d 2d 2d .."Plot.transformed.images\n----
127e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d -------------------\n\n".......]
12800 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
12820 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 ."code",......."execution_count"
12840 3a 20 6e 75 6c 6c 2c 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 :.null,......."metadata":.{.....
12860 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 2c 0a ...."collapsed":.false.......},.
12880 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ......"outputs":.[],......."sour
128a0 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 32 2c 20 66 69 67 ce":.[........."pl.figure(2,.fig
128c0 73 69 7a 65 3d 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 size=(10,.5))\n\npl.subplot(2,.3
128e0 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 73 28 27 6f 66 ,.1)\npl.imshow(I1)\npl.axis('of
12900 66 27 29 5c 6e 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 f')\npl.title('Im..1')\n\npl.sub
12920 70 6c 6f 74 28 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 plot(2,.3,.4)\npl.imshow(I2)\npl
12940 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 2e 20 32 27 29 5c .axis('off')\npl.title('Im..2')\
12960 6e 5c 6e 70 6c 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 n\npl.subplot(2,.3,.2)\npl.imsho
12980 77 28 49 6d 61 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 w(Image_emd)\npl.axis('off')\npl
129a0 2e 74 69 74 6c 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 .title('EmdTransport')\n\npl.sub
129c0 70 6c 6f 74 28 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 plot(2,.3,.5)\npl.imshow(Image_s
129e0 69 6e 6b 68 6f 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 inkhorn)\npl.axis('off')\npl.tit
12a00 6c 65 28 27 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 le('SinkhornTransport')\n\npl.su
12a20 62 70 6c 6f 74 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 bplot(2,.3,.3)\npl.imshow(Image_
12a40 6d 61 70 70 69 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 mapping_linear)\npl.axis('off')\
12a60 6e 70 6c 2e 74 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 npl.title('MappingTransport.(lin
12a80 65 61 72 29 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 6e 70 ear)')\n\npl.subplot(2,.3,.6)\np
12aa0 6c 2e 69 6d 73 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 l.imshow(Image_mapping_gaussian)
12ac0 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 4d 61 70 70 \npl.axis('off')\npl.title('Mapp
12ae0 69 6e 67 54 72 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 ingTransport.(gaussian)')\npl.ti
12b00 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()"......
12b20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 .].....}...],..."metadata":.{...
12b40 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
12b60 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 _name":."Python.3",......."langu
12b80 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 age":."python",......."name":."p
12ba0 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 ython3".....},....."language_inf
12bc0 6f 22 3a 20 7b 0a 20 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 o":.{......."codemirror_mode":.{
12be0 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 2c 0a 20 20 20 20 ........."name":."ipython",.....
12c00 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 ...."version":.3.......},.......
12c20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 "file_extension":.".py",......."
12c40 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 0a 20 20 20 20 mimetype":."text/x-python",.....
12c60 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e .."name":."python",......."nbcon
12c80 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 0a 20 20 20 20 20 20 vert_exporter":."python",.......
12ca0 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 33 22 2c 0a 20 20 "pygments_lexer":."ipython3",...
12cc0 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 37 22 0a 20 20 20 20 7d 0a 20 20 7d ...."version":."3.6.7".....}...}
12ce0 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d ,..."nbformat":.4,..."nbformat_m
12d00 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 ec 45 43 4d c7 ed 71 d0 e2 0d 00 00 inor":.0.}PK.........ECM..q.....
12d20 e2 0d 00 00 22 00 00 00 70 6c 6f 74 5f 66 72 65 65 5f 73 75 70 70 6f 72 74 5f 62 61 72 79 63 65 ...."...plot_free_support_baryce
12d40 6e 74 65 72 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 nter.ipynb{..."cells":.[.....{..
12d60 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 0a 20 20 20 20 20 20 ....."cell_type":."code",.......
12d80 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 "execution_count":.null,......."
12da0 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"
12dc0 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 :.false.......},......."outputs"
12de0 3a 20 5b 5d 2c 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":.[.........
12e00 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 0a 20 20 20 "%matplotlib.inline".......]....
12e20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 .},.....{......."cell_type":."ma
12e40 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 rkdown",......."metadata":.{},..
12e60 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 32 44 ....."source":.[........."\n#.2D
12e80 20 66 72 65 65 20 73 75 70 70 6f 72 74 20 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 .free.support.Wasserstein.baryce
12ea0 6e 74 65 72 73 20 6f 66 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e 49 6c 6c 75 nters.of.distributions\n\n\nIllu
12ec0 73 74 72 61 74 69 6f 6e 20 6f 66 20 32 44 20 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 stration.of.2D.Wasserstein.baryc
12ee0 65 6e 74 65 72 73 20 69 66 20 64 69 73 63 72 69 62 75 74 69 6f 6e 73 20 74 68 61 74 20 61 72 65 enters.if.discributions.that.are
12f00 20 77 65 69 67 68 74 65 64 5c 6e 73 75 6d 20 6f 66 20 64 69 72 61 63 73 2e 5c 6e 5c 6e 5c 6e 22 .weighted\nsum.of.diracs.\n\n\n"
12f20 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c .......].....},.....{......."cel
12f40 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f l_type":."code",......."executio
12f60 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 n_count":.null,......."metadata"
12f80 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..
12fa0 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 .....},......."outputs":.[],....
12fc0 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
12fe0 3a 20 56 69 76 69 65 6e 20 53 65 67 75 79 20 3c 76 69 76 69 65 6e 2e 73 65 67 75 79 40 69 69 70 :.Vivien.Seguy.<vivien.seguy@iip
13000 2e 69 73 74 2e 69 2e 6b 79 6f 74 6f 2d 75 2e 61 63 2e 6a 70 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 .ist.i.kyoto-u.ac.jp>\n#\n#.Lice
13020 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 79 nse:.MIT.License\n\nimport.numpy
13040 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 79 6c 61 62 20 .as.np\nimport.matplotlib.pylab.
13060 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 0a 20 20 20 20 7d 2c as.pl\nimport.ot".......].....},
13080 0a 20 20 20 20 7b 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 .....{......."cell_type":."markd
130a0 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 own",......."metadata":.{},.....
130c0 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 61 74 65 20 .."source":.[........."Generate.
130e0 64 61 74 61 5c 6e 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 25 25 20 70 61 72 61 6d 65 74 data\n.-------------\n%%.paramet
13100 65 72 73 20 61 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e 5c 6e 5c 6e 22 0a 20 20 20 ers.and.data.generation\n\n"....
13120 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 ...].....},.....{......."cell_ty
13140 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f pe":."code",......."execution_co
13160 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a unt":.null,......."metadata":.{.
13180 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......
131a0 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 .},......."outputs":.[],......."
131c0 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 4e 20 3d 20 33 5c 6e 64 20 3d 20 32 source":.[........."N.=.3\nd.=.2
131e0 5c 6e 6d 65 61 73 75 72 65 73 5f 6c 6f 63 61 74 69 6f 6e 73 20 3d 20 5b 5d 5c 6e 6d 65 61 73 75 \nmeasures_locations.=.[]\nmeasu
13200 72 65 73 5f 77 65 69 67 68 74 73 20 3d 20 5b 5d 5c 6e 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e res_weights.=.[]\n\nfor.i.in.ran
13220 67 65 28 4e 29 3a 5c 6e 5c 6e 20 20 20 20 6e 5f 69 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 ge(N):\n\n....n_i.=.np.random.ra
13240 6e 64 69 6e 74 28 6c 6f 77 3d 31 2c 20 68 69 67 68 3d 32 30 29 20 20 23 20 6e 62 20 73 61 6d 70 ndint(low=1,.high=20)..#.nb.samp
13260 6c 65 73 5c 6e 5c 6e 20 20 20 20 6d 75 5f 69 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 6e 6f 72 6d les\n\n....mu_i.=.np.random.norm
13280 61 6c 28 30 2e 2c 20 34 2e 2c 20 28 64 2c 29 29 20 20 23 20 47 61 75 73 73 69 61 6e 20 6d 65 61 al(0.,.4.,.(d,))..#.Gaussian.mea
132a0 6e 5c 6e 5c 6e 20 20 20 20 41 5f 69 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 28 64 2c n\n\n....A_i.=.np.random.rand(d,
132c0 20 64 29 5c 6e 20 20 20 20 63 6f 76 5f 69 20 3d 20 6e 70 2e 64 6f 74 28 41 5f 69 2c 20 41 5f 69 .d)\n....cov_i.=.np.dot(A_i,.A_i
132e0 2e 74 72 61 6e 73 70 6f 73 65 28 29 29 20 20 23 20 47 61 75 73 73 69 61 6e 20 63 6f 76 61 72 69 .transpose())..#.Gaussian.covari
13300 61 6e 63 65 20 6d 61 74 72 69 78 5c 6e 5c 6e 20 20 20 20 78 5f 69 20 3d 20 6f 74 2e 64 61 74 61 ance.matrix\n\n....x_i.=.ot.data
13320 73 65 74 73 2e 6d 61 6b 65 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 5f 69 2c 20 sets.make_2D_samples_gauss(n_i,.
13340 6d 75 5f 69 2c 20 63 6f 76 5f 69 29 20 20 23 20 44 69 72 61 63 20 6c 6f 63 61 74 69 6f 6e 73 5c mu_i,.cov_i)..#.Dirac.locations\
13360 6e 20 20 20 20 62 5f 69 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 75 6e 69 66 6f 72 6d 28 30 2e 2c n....b_i.=.np.random.uniform(0.,
13380 20 31 2e 2c 20 28 6e 5f 69 2c 29 29 5c 6e 20 20 20 20 62 5f 69 20 3d 20 62 5f 69 20 2f 20 6e 70 .1.,.(n_i,))\n....b_i.=.b_i./.np
133a0 2e 73 75 6d 28 62 5f 69 29 20 20 23 20 44 69 72 61 63 20 77 65 69 67 68 74 73 5c 6e 5c 6e 20 20 .sum(b_i)..#.Dirac.weights\n\n..
133c0 20 20 6d 65 61 73 75 72 65 73 5f 6c 6f 63 61 74 69 6f 6e 73 2e 61 70 70 65 6e 64 28 78 5f 69 29 ..measures_locations.append(x_i)
133e0 5c 6e 20 20 20 20 6d 65 61 73 75 72 65 73 5f 77 65 69 67 68 74 73 2e 61 70 70 65 6e 64 28 62 5f \n....measures_weights.append(b_
13400 69 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 i)".......].....},.....{......."
13420 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d cell_type":."markdown",......."m
13440 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a etadata":.{},......."source":.[.
13460 20 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 66 72 65 65 20 73 75 70 70 6f 72 74 20 62 61 ........"Compute.free.support.ba
13480 72 79 63 65 6e 74 65 72 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 rycenter\n-------------\n\n"....
134a0 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 ...].....},.....{......."cell_ty
134c0 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f pe":."code",......."execution_co
134e0 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a unt":.null,......."metadata":.{.
13500 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......
13520 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 .},......."outputs":.[],......."
13540 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6b 20 3d 20 31 30 20 20 23 20 6e 75 source":.[........."k.=.10..#.nu
13560 6d 62 65 72 20 6f 66 20 44 69 72 61 63 73 20 6f 66 20 74 68 65 20 62 61 72 79 63 65 6e 74 65 72 mber.of.Diracs.of.the.barycenter
13580 5c 6e 58 5f 69 6e 69 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 6e 6f 72 6d 61 6c 28 30 2e 2c 20 \nX_init.=.np.random.normal(0.,.
135a0 31 2e 2c 20 28 6b 2c 20 64 29 29 20 20 23 20 69 6e 69 74 69 61 6c 20 44 69 72 61 63 20 6c 6f 63 1.,.(k,.d))..#.initial.Dirac.loc
135c0 61 74 69 6f 6e 73 5c 6e 62 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 6b 2c 29 29 20 2f 20 6b 20 20 23 ations\nb.=.np.ones((k,))./.k..#
135e0 20 77 65 69 67 68 74 73 20 6f 66 20 74 68 65 20 62 61 72 79 63 65 6e 74 65 72 20 28 69 74 20 77 .weights.of.the.barycenter.(it.w
13600 69 6c 6c 20 6e 6f 74 20 62 65 20 6f 70 74 69 6d 69 7a 65 64 2c 20 6f 6e 6c 79 20 74 68 65 20 6c ill.not.be.optimized,.only.the.l
13620 6f 63 61 74 69 6f 6e 73 20 61 72 65 20 6f 70 74 69 6d 69 7a 65 64 29 5c 6e 5c 6e 58 20 3d 20 6f ocations.are.optimized)\n\nX.=.o
13640 74 2e 6c 70 2e 66 72 65 65 5f 73 75 70 70 6f 72 74 5f 62 61 72 79 63 65 6e 74 65 72 28 6d 65 61 t.lp.free_support_barycenter(mea
13660 73 75 72 65 73 5f 6c 6f 63 61 74 69 6f 6e 73 2c 20 6d 65 61 73 75 72 65 73 5f 77 65 69 67 68 74 sures_locations,.measures_weight
13680 73 2c 20 58 5f 69 6e 69 74 2c 20 62 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 s,.X_init,.b)".......].....},...
136a0 20 20 7b 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
136c0 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 ",......."metadata":.{},......."
136e0 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 61 74 61 5c 6e 2d source":.[........."Plot.data\n-
13700 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 --------\n\n".......].....},....
13720 20 7b 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 0a 20 20 .{......."cell_type":."code",...
13740 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 0a 20 20 20 ...."execution_count":.null,....
13760 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
13780 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 sed":.false.......},......."outp
137a0 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 uts":.[],......."source":.[.....
137c0 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 31 29 5c 6e 66 6f 72 20 28 78 5f 69 2c 20 62 5f 69 ...."pl.figure(1)\nfor.(x_i,.b_i
137e0 29 20 69 6e 20 7a 69 70 28 6d 65 61 73 75 72 65 73 5f 6c 6f 63 61 74 69 6f 6e 73 2c 20 6d 65 61 ).in.zip(measures_locations,.mea
13800 73 75 72 65 73 5f 77 65 69 67 68 74 73 29 3a 5c 6e 20 20 20 20 63 6f 6c 6f 72 20 3d 20 6e 70 2e sures_weights):\n....color.=.np.
13820 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 6c 6f 77 3d 31 2c 20 68 69 67 68 3d 31 30 20 2a 20 random.randint(low=1,.high=10.*.
13840 4e 29 5c 6e 20 20 20 20 70 6c 2e 73 63 61 74 74 65 72 28 78 5f 69 5b 3a 2c 20 30 5d 2c 20 78 5f N)\n....pl.scatter(x_i[:,.0],.x_
13860 69 5b 3a 2c 20 31 5d 2c 20 73 3d 62 20 2a 20 31 30 30 30 2c 20 6c 61 62 65 6c 3d 27 69 6e 70 75 i[:,.1],.s=b.*.1000,.label='inpu
13880 74 20 6d 65 61 73 75 72 65 27 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 5b 3a 2c 20 30 5d 2c t.measure')\npl.scatter(X[:,.0],
138a0 20 58 5b 3a 2c 20 31 5d 2c 20 73 3d 62 20 2a 20 31 30 30 30 2c 20 63 3d 27 62 6c 61 63 6b 27 2c .X[:,.1],.s=b.*.1000,.c='black',
138c0 20 6d 61 72 6b 65 72 3d 27 5e 27 2c 20 6c 61 62 65 6c 3d 27 32 2d 57 61 73 73 65 72 73 74 65 69 .marker='^',.label='2-Wasserstei
138e0 6e 20 62 61 72 79 63 65 6e 74 65 72 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 44 61 74 61 20 6d n.barycenter')\npl.title('Data.m
13900 65 61 73 75 72 65 73 20 61 6e 64 20 74 68 65 69 72 20 62 61 72 79 63 65 6e 74 65 72 27 29 5c 6e easures.and.their.barycenter')\n
13920 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 pl.legend(loc=0)\npl.show()"....
13940 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a ...].....}...],..."metadata":.{.
13960 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
13980 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e ay_name":."Python.3",......."lan
139a0 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 guage":."python",......."name":.
139c0 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 "python3".....},....."language_i
139e0 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a nfo":.{......."codemirror_mode":
13a00 20 7b 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 2c 0a 20 20 .{........."name":."ipython",...
13a20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 ......"version":.3.......},.....
13a40 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 0a 20 20 20 20 20 .."file_extension":.".py",......
13a60 20 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 0a 20 20 ."mimetype":."text/x-python",...
13a80 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 ...."name":."python",......."nbc
13aa0 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 0a 20 20 20 20 onvert_exporter":."python",.....
13ac0 20 20 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 33 22 2c 0a .."pygments_lexer":."ipython3",.
13ae0 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 ......"version":."3.6.5".....}..
13b00 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 .},..."nbformat":.4,..."nbformat
13b20 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 89 74 d9 4e 76 0a 6d b5 0e 1a _minor":.0.}PK.........t.Nv.m...
13b40 00 00 0e 1a 00 00 0e 00 00 00 70 6c 6f 74 5f 66 67 77 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c ..........plot_fgw.ipynb{..."cel
13b60 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ls":.[.....{......."cell_type":.
13b80 22 63 6f 64 65 22 2c 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 "code",......."execution_count":
13ba0 20 6e 75 6c 6c 2c 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 .null,......."metadata":.{......
13bc0 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 2c 0a 20 ..."collapsed":.false.......},..
13be0 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ....."outputs":.[],......."sourc
13c00 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
13c20 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 e".......].....},.....{......."c
13c40 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 ell_type":."markdown",......."me
13c60 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 tadata":.{},......."source":.[..
13c80 20 20 20 20 20 20 20 22 5c 6e 23 20 50 6c 6f 74 20 46 75 73 65 64 2d 67 72 6f 6d 6f 76 2d 57 61 ......."\n#.Plot.Fused-gromov-Wa
13ca0 73 73 65 72 73 74 65 69 6e 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 sserstein\n\n\nThis.example.illu
13cc0 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 46 47 57 20 66 strates.the.computation.of.FGW.f
13ce0 6f 72 20 31 44 20 6d 65 61 73 75 72 65 73 5b 31 38 5d 2e 5c 6e 5c 6e 2e 2e 20 5b 31 38 5d 20 56 or.1D.measures[18].\n\n...[18].V
13d00 61 79 65 72 20 54 69 74 6f 75 61 6e 2c 20 43 68 61 70 65 6c 20 4c 61 65 74 69 74 69 61 2c 20 46 ayer.Titouan,.Chapel.Laetitia,.F
13d20 6c 61 6d 61 72 79 20 52 7b 27 65 7d 6d 69 2c 20 54 61 76 65 6e 61 72 64 20 52 6f 6d 61 69 6e 5c lamary.R{'e}mi,.Tavenard.Romain\
13d40 6e 20 20 20 20 20 20 61 6e 64 20 43 6f 75 72 74 79 20 4e 69 63 6f 6c 61 73 5c 6e 20 20 20 20 5c n......and.Courty.Nicolas\n....\
13d60 22 4f 70 74 69 6d 61 6c 20 54 72 61 6e 73 70 6f 72 74 20 66 6f 72 20 73 74 72 75 63 74 75 72 65 "Optimal.Transport.for.structure
13d80 64 20 64 61 74 61 20 77 69 74 68 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6f 6e 20 67 72 61 70 68 d.data.with.application.on.graph
13da0 73 5c 22 5c 6e 20 20 20 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20 43 6f 6e 66 65 72 65 6e 63 s\"\n....International.Conferenc
13dc0 65 20 6f 6e 20 4d 61 63 68 69 6e 65 20 4c 65 61 72 6e 69 6e 67 20 28 49 43 4d 4c 29 2e 20 32 30 e.on.Machine.Learning.(ICML)..20
13de0 31 39 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 19.\n\n\n".......].....},.....{.
13e00 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 0a 20 20 20 20 20 ......"cell_type":."code",......
13e20 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 0a 20 20 20 20 20 20 ."execution_count":.null,.......
13e40 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
13e60 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 ":.false.......},......."outputs
13e80 22 3a 20 5b 5d 2c 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":.[........
13ea0 20 22 23 20 41 75 74 68 6f 72 3a 20 54 69 74 6f 75 61 6e 20 56 61 79 65 72 20 3c 74 69 74 6f 75 ."#.Author:.Titouan.Vayer.<titou
13ec0 61 6e 2e 76 61 79 65 72 40 69 72 69 73 61 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 an.vayer@irisa.fr>\n#\n#.License
13ee0 3a 20 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 :.MIT.License\n\nimport.matplotl
13f00 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 ib.pyplot.as.pl\nimport.numpy.as
13f20 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 66 72 6f 6d 20 6f 74 2e 67 72 6f 6d 6f 76 20 69 .np\nimport.ot\nfrom.ot.gromov.i
13f40 6d 70 6f 72 74 20 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 65 69 6e 2c 20 66 75 73 65 64 5f mport.gromov_wasserstein,.fused_
13f60 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 65 69 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 gromov_wasserstein".......].....
13f80 7d 2c 0a 20 20 20 20 7b 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
13fa0 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 kdown",......."metadata":.{},...
13fc0 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 61 74 ...."source":.[........."Generat
13fe0 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 e.data\n---------\n\n".......]..
14000 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
14020 63 6f 64 65 22 2c 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 code",......."execution_count":.
14040 6e 75 6c 6c 2c 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 null,......."metadata":.{.......
14060 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 2c 0a 20 20 .."collapsed":.false.......},...
14080 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ...."outputs":.[],......."source
140a0 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 23 20 ":.[........."#%%.parameters\n#.
140c0 57 65 20 63 72 65 61 74 65 20 74 77 6f 20 31 44 20 72 61 6e 64 6f 6d 20 6d 65 61 73 75 72 65 73 We.create.two.1D.random.measures
140e0 5c 6e 6e 20 3d 20 32 30 20 20 23 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 69 6e 74 73 20 69 6e 20 \nn.=.20..#.number.of.points.in.
14100 74 68 65 20 66 69 72 73 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5c 6e 6e 32 20 3d 20 33 30 20 the.first.distribution\nn2.=.30.
14120 20 23 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 69 6e 74 73 20 69 6e 20 74 68 65 20 73 65 63 6f 6e .#.number.of.points.in.the.secon
14140 64 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5c 6e 73 69 67 20 3d 20 31 20 20 23 20 73 74 64 20 6f d.distribution\nsig.=.1..#.std.o
14160 66 20 66 69 72 73 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5c 6e 73 69 67 32 20 3d 20 30 2e 31 f.first.distribution\nsig2.=.0.1
14180 20 20 23 20 73 74 64 20 6f 66 20 73 65 63 6f 6e 64 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5c 6e ..#.std.of.second.distribution\n
141a0 5c 6e 6e 70 2e 72 61 6e 64 6f 6d 2e 73 65 65 64 28 30 29 5c 6e 5c 6e 70 68 69 20 3d 20 6e 70 2e \nnp.random.seed(0)\n\nphi.=.np.
141c0 61 72 61 6e 67 65 28 6e 29 5b 3a 2c 20 4e 6f 6e 65 5d 5c 6e 78 73 20 3d 20 70 68 69 20 2b 20 73 arange(n)[:,.None]\nxs.=.phi.+.s
141e0 69 67 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 31 29 5c 6e 79 73 20 3d ig.*.np.random.randn(n,.1)\nys.=
14200 20 6e 70 2e 76 73 74 61 63 6b 28 28 6e 70 2e 6f 6e 65 73 28 28 6e 20 2f 2f 20 32 2c 20 31 29 29 .np.vstack((np.ones((n.//.2,.1))
14220 2c 20 30 20 2a 20 6e 70 2e 6f 6e 65 73 28 28 6e 20 2f 2f 20 32 2c 20 31 29 29 29 29 20 2b 20 73 ,.0.*.np.ones((n.//.2,.1)))).+.s
14240 69 67 32 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 31 29 5c 6e 5c 6e 70 ig2.*.np.random.randn(n,.1)\n\np
14260 68 69 32 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 32 29 5b 3a 2c 20 4e 6f 6e 65 5d 5c 6e 78 74 hi2.=.np.arange(n2)[:,.None]\nxt
14280 20 3d 20 70 68 69 32 20 2b 20 73 69 67 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 .=.phi2.+.sig.*.np.random.randn(
142a0 6e 32 2c 20 31 29 5c 6e 79 74 20 3d 20 6e 70 2e 76 73 74 61 63 6b 28 28 6e 70 2e 6f 6e 65 73 28 n2,.1)\nyt.=.np.vstack((np.ones(
142c0 28 6e 32 20 2f 2f 20 32 2c 20 31 29 29 2c 20 30 20 2a 20 6e 70 2e 6f 6e 65 73 28 28 6e 32 20 2f (n2.//.2,.1)),.0.*.np.ones((n2./
142e0 2f 20 32 2c 20 31 29 29 29 29 20 2b 20 73 69 67 32 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 /.2,.1)))).+.sig2.*.np.random.ra
14300 6e 64 6e 28 6e 32 2c 20 31 29 5c 6e 79 74 20 3d 20 79 74 5b 3a 3a 2d 31 2c 20 3a 5d 5c 6e 5c 6e ndn(n2,.1)\nyt.=.yt[::-1,.:]\n\n
14320 70 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 29 5c 6e 71 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 32 29 22 p.=.ot.unif(n)\nq.=.ot.unif(n2)"
14340 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c .......].....},.....{......."cel
14360 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 l_type":."markdown",......."meta
14380 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 data":.{},......."source":.[....
143a0 20 20 20 20 20 22 50 6c 6f 74 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a ....."Plot.data\n---------\n\n".
143c0 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
143e0 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e _type":."code",......."execution
14400 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a _count":.null,......."metadata":
14420 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...
14440 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 ....},......."outputs":.[],.....
14460 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 70 6c 6f 74 20 .."source":.[........."#%%.plot.
14480 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 63 6c 6f 73 65 28 31 30 the.distributions\n\npl.close(10
144a0 29 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 30 2c 20 28 37 2c 20 37 29 29 5c 6e 5c 6e 70 6c 2e 73 )\npl.figure(10,.(7,.7))\n\npl.s
144c0 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 31 29 5c 6e 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 79 73 ubplot(2,.1,.1)\n\npl.scatter(ys
144e0 2c 20 78 73 2c 20 63 3d 70 68 69 2c 20 73 3d 37 30 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 27 46 ,.xs,.c=phi,.s=70)\npl.ylabel('F
14500 65 61 74 75 72 65 20 76 61 6c 75 65 20 61 27 2c 20 66 6f 6e 74 73 69 7a 65 3d 32 30 29 5c 6e 70 eature.value.a',.fontsize=20)\np
14520 6c 2e 74 69 74 6c 65 28 27 24 5c 5c 6d 75 3d 5c 5c 73 75 6d 5f 69 20 5c 5c 64 65 6c 74 61 5f 7b l.title('$\\mu=\\sum_i.\\delta_{
14540 78 5f 69 2c 61 5f 69 7d 24 27 2c 20 66 6f 6e 74 73 69 7a 65 3d 32 35 2c 20 75 73 65 74 65 78 3d x_i,a_i}$',.fontsize=25,.usetex=
14560 54 72 75 65 2c 20 79 3d 31 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 28 29 29 5c 6e 70 6c 2e 79 74 True,.y=1)\npl.xticks(())\npl.yt
14580 69 63 6b 73 28 28 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 32 29 5c 6e 70 icks(())\npl.subplot(2,.1,.2)\np
145a0 6c 2e 73 63 61 74 74 65 72 28 79 74 2c 20 78 74 2c 20 63 3d 70 68 69 32 2c 20 73 3d 37 30 29 5c l.scatter(yt,.xt,.c=phi2,.s=70)\
145c0 6e 70 6c 2e 78 6c 61 62 65 6c 28 27 63 6f 6f 72 64 69 6e 61 74 65 73 20 78 2f 79 27 2c 20 66 6f npl.xlabel('coordinates.x/y',.fo
145e0 6e 74 73 69 7a 65 3d 32 35 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 27 46 65 61 74 75 72 65 20 76 ntsize=25)\npl.ylabel('Feature.v
14600 61 6c 75 65 20 62 27 2c 20 66 6f 6e 74 73 69 7a 65 3d 32 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 alue.b',.fontsize=20)\npl.title(
14620 27 24 5c 5c 5c 5c 6e 75 3d 5c 5c 73 75 6d 5f 6a 20 5c 5c 64 65 6c 74 61 5f 7b 79 5f 6a 2c 62 5f '$\\\\nu=\\sum_j.\\delta_{y_j,b_
14640 6a 7d 24 27 2c 20 66 6f 6e 74 73 69 7a 65 3d 32 35 2c 20 75 73 65 74 65 78 3d 54 72 75 65 2c 20 j}$',.fontsize=25,.usetex=True,.
14660 79 3d 31 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 28 29 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 y=1)\npl.yticks(())\npl.tight_la
14680 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 0a 20 20 20 20 7d yout()\npl.show()".......].....}
146a0 2c 0a 20 20 20 20 7b 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
146c0 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 down",......."metadata":.{},....
146e0 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 72 65 61 74 65 20 73 ..."source":.[........."Create.s
14700 74 72 75 63 74 75 72 65 20 6d 61 74 72 69 63 65 73 20 61 6e 64 20 61 63 72 6f 73 73 2d 66 65 61 tructure.matrices.and.across-fea
14720 74 75 72 65 20 64 69 73 74 61 6e 63 65 20 6d 61 74 72 69 78 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c ture.distance.matrix\n---------\
14740 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 n\n".......].....},.....{.......
14760 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 "cell_type":."code",......."exec
14780 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 ution_count":.null,......."metad
147a0 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
147c0 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c se.......},......."outputs":.[],
147e0 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":.[........."#%%.
14800 53 74 72 75 63 74 75 72 65 20 6d 61 74 72 69 63 65 73 20 61 6e 64 20 61 63 72 6f 73 73 2d 66 65 Structure.matrices.and.across-fe
14820 61 74 75 72 65 73 20 64 69 73 74 61 6e 63 65 20 6d 61 74 72 69 78 5c 6e 43 31 20 3d 20 6f 74 2e atures.distance.matrix\nC1.=.ot.
14840 64 69 73 74 28 78 73 29 5c 6e 43 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 74 29 5c 6e 4d 20 3d 20 dist(xs)\nC2.=.ot.dist(xt)\nM.=.
14860 6f 74 2e 64 69 73 74 28 79 73 2c 20 79 74 29 5c 6e 77 31 20 3d 20 6f 74 2e 75 6e 69 66 28 43 31 ot.dist(ys,.yt)\nw1.=.ot.unif(C1
14880 2e 73 68 61 70 65 5b 30 5d 29 5c 6e 77 32 20 3d 20 6f 74 2e 75 6e 69 66 28 43 32 2e 73 68 61 70 .shape[0])\nw2.=.ot.unif(C2.shap
148a0 65 5b 30 5d 29 5c 6e 47 6f 74 20 3d 20 6f 74 2e 65 6d 64 28 5b 5d 2c 20 5b 5d 2c 20 4d 29 22 0a e[0])\nGot.=.ot.emd([],.[],.M)".
148c0 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
148e0 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 _type":."markdown",......."metad
14900 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ata":.{},......."source":.[.....
14920 20 20 20 20 22 50 6c 6f 74 20 6d 61 74 72 69 63 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c ...."Plot.matrices\n---------\n\
14940 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 n".......].....},.....{......."c
14960 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 ell_type":."code",......."execut
14980 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ion_count":.null,......."metadat
149a0 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 73 65 a":.{........."collapsed":.false
149c0 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 .......},......."outputs":.[],..
149e0 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 5c 6e 63 ....."source":.[........."#%%\nc
14a00 6d 61 70 20 3d 20 27 52 65 64 73 27 5c 6e 70 6c 2e 63 6c 6f 73 65 28 31 30 29 5c 6e 70 6c 2e 66 map.=.'Reds'\npl.close(10)\npl.f
14a20 69 67 75 72 65 28 31 30 2c 20 28 35 2c 20 35 29 29 5c 6e 66 73 20 3d 20 31 35 5c 6e 6c 5f 78 20 igure(10,.(5,.5))\nfs.=.15\nl_x.
14a40 3d 20 5b 30 2c 20 35 2c 20 31 30 2c 20 31 35 5d 5c 6e 6c 5f 79 20 3d 20 5b 30 2c 20 35 2c 20 31 =.[0,.5,.10,.15]\nl_y.=.[0,.5,.1
14a60 30 2c 20 31 35 2c 20 32 30 2c 20 32 35 5d 5c 6e 67 73 20 3d 20 70 6c 2e 47 72 69 64 53 70 65 63 0,.15,.20,.25]\ngs.=.pl.GridSpec
14a80 28 35 2c 20 35 29 5c 6e 5c 6e 61 78 31 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 28 67 73 5b 33 3a (5,.5)\n\nax1.=.pl.subplot(gs[3:
14aa0 2c 20 3a 32 5d 29 5c 6e 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 43 31 2c 20 63 6d 61 70 3d 63 6d 61 ,.:2])\n\npl.imshow(C1,.cmap=cma
14ac0 70 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 5c 6e 70 6c 2e p,.interpolation='nearest')\npl.
14ae0 74 69 74 6c 65 28 5c 22 24 43 5f 31 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 title(\"$C_1$\",.fontsize=fs)\np
14b00 6c 2e 78 6c 61 62 65 6c 28 5c 22 24 6b 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e l.xlabel(\"$k$\",.fontsize=fs)\n
14b20 70 6c 2e 79 6c 61 62 65 6c 28 5c 22 24 69 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c pl.ylabel(\"$i$\",.fontsize=fs)\
14b40 6e 70 6c 2e 78 74 69 63 6b 73 28 6c 5f 78 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 6c 5f 78 29 5c npl.xticks(l_x)\npl.yticks(l_x)\
14b60 6e 5c 6e 61 78 32 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 28 67 73 5b 3a 33 2c 20 32 3a 5d 29 5c n\nax2.=.pl.subplot(gs[:3,.2:])\
14b80 6e 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 43 32 2c 20 63 6d 61 70 3d 63 6d 61 70 2c 20 69 6e 74 65 n\npl.imshow(C2,.cmap=cmap,.inte
14ba0 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 5c rpolation='nearest')\npl.title(\
14bc0 22 24 43 5f 32 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 79 6c 61 62 65 "$C_2$\",.fontsize=fs)\npl.ylabe
14be0 6c 28 5c 22 24 6c 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 23 70 6c 2e 79 6c 61 l(\"$l$\",.fontsize=fs)\n#pl.yla
14c00 62 65 6c 28 5c 22 24 6c 24 5c 22 2c 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 78 74 69 bel(\"$l$\",fontsize=fs)\npl.xti
14c20 63 6b 73 28 28 29 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 6c 5f 79 29 5c 6e 61 78 32 2e 73 65 74 cks(())\npl.yticks(l_y)\nax2.set
14c40 5f 61 73 70 65 63 74 28 27 61 75 74 6f 27 29 5c 6e 5c 6e 61 78 33 20 3d 20 70 6c 2e 73 75 62 70 _aspect('auto')\n\nax3.=.pl.subp
14c60 6c 6f 74 28 67 73 5b 33 3a 2c 20 32 3a 5d 2c 20 73 68 61 72 65 78 3d 61 78 32 2c 20 73 68 61 72 lot(gs[3:,.2:],.sharex=ax2,.shar
14c80 65 79 3d 61 78 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 20 63 6d 61 70 3d 63 6d 61 70 2c ey=ax1)\npl.imshow(M,.cmap=cmap,
14ca0 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 70 6c 2e 79 74 .interpolation='nearest')\npl.yt
14cc0 69 63 6b 73 28 6c 5f 78 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 6c 5f 79 29 5c 6e 70 6c 2e 79 6c icks(l_x)\npl.xticks(l_y)\npl.yl
14ce0 61 62 65 6c 28 5c 22 24 69 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 74 abel(\"$i$\",.fontsize=fs)\npl.t
14d00 69 74 6c 65 28 5c 22 24 4d 5f 7b 41 42 7d 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c itle(\"$M_{AB}$\",.fontsize=fs)\
14d20 6e 70 6c 2e 78 6c 61 62 65 6c 28 5c 22 24 6a 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 npl.xlabel(\"$j$\",.fontsize=fs)
14d40 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 61 78 33 2e 73 65 74 5f 61 73 70 \npl.tight_layout()\nax3.set_asp
14d60 65 63 74 28 27 61 75 74 6f 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a ect('auto')\npl.show()".......].
14d80 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ....},.....{......."cell_type":.
14da0 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d "markdown",......."metadata":.{}
14dc0 2c 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 43 6f 6d ,......."source":.[........."Com
14de0 70 75 74 65 20 46 47 57 2f 47 57 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 pute.FGW/GW\n---------\n\n".....
14e00 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 ..].....},.....{......."cell_typ
14e20 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 e":."code",......."execution_cou
14e40 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 nt":.null,......."metadata":.{..
14e60 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.......
14e80 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 },......."outputs":.[],......."s
14ea0 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 43 6f 6d 70 75 74 69 6e 67 ource":.[........."#%%.Computing
14ec0 20 46 47 57 20 61 6e 64 20 47 57 5c 6e 61 6c 70 68 61 20 3d 20 31 65 2d 33 5c 6e 5c 6e 6f 74 2e .FGW.and.GW\nalpha.=.1e-3\n\not.
14ee0 74 69 63 28 29 5c 6e 47 77 67 2c 20 6c 6f 67 77 20 3d 20 66 75 73 65 64 5f 67 72 6f 6d 6f 76 5f tic()\nGwg,.logw.=.fused_gromov_
14f00 77 61 73 73 65 72 73 74 65 69 6e 28 4d 2c 20 43 31 2c 20 43 32 2c 20 70 2c 20 71 2c 20 6c 6f 73 wasserstein(M,.C1,.C2,.p,.q,.los
14f20 73 5f 66 75 6e 3d 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 61 6c 70 68 61 3d 61 6c 70 68 61 s_fun='square_loss',.alpha=alpha
14f40 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 2c 20 6c 6f 67 3d 54 72 75 65 29 5c 6e 6f 74 2e 74 6f ,.verbose=True,.log=True)\not.to
14f60 63 28 29 5c 6e 5c 6e 23 25 72 65 6c 6f 61 64 5f 65 78 74 20 57 47 57 5c 6e 47 67 2c 20 6c 6f 67 c()\n\n#%reload_ext.WGW\nGg,.log
14f80 20 3d 20 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 65 69 6e 28 43 31 2c 20 43 32 2c 20 70 2c .=.gromov_wasserstein(C1,.C2,.p,
14fa0 20 71 2c 20 6c 6f 73 73 5f 66 75 6e 3d 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 76 65 72 62 .q,.loss_fun='square_loss',.verb
14fc0 6f 73 65 3d 54 72 75 65 2c 20 6c 6f 67 3d 54 72 75 65 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 ose=True,.log=True)".......]....
14fe0 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 .},.....{......."cell_type":."ma
15000 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 rkdown",......."metadata":.{},..
15020 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 56 69 73 75 61 6c ....."source":.[........."Visual
15040 69 7a 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 61 74 72 69 63 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d ize.transport.matrices\n--------
15060 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 -\n\n".......].....},.....{.....
15080 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 .."cell_type":."code",......."ex
150a0 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 ecution_count":.null,......."met
150c0 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
150e0 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b alse.......},......."outputs":.[
15100 5d 2c 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 ],......."source":.[........."#%
15120 25 20 76 69 73 75 20 4f 54 20 6d 61 74 72 69 78 5c 6e 63 6d 61 70 20 3d 20 27 42 6c 75 65 73 27 %.visu.OT.matrix\ncmap.=.'Blues'
15140 5c 6e 66 73 20 3d 20 31 35 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 28 31 33 2c 20 35 29 29 \nfs.=.15\npl.figure(2,.(13,.5))
15160 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 5c \npl.clf()\npl.subplot(1,.3,.1)\
15180 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 6f 74 2c 20 63 6d 61 70 3d 63 6d 61 70 2c 20 69 6e 74 65 72 npl.imshow(Got,.cmap=cmap,.inter
151a0 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 78 6c 61 62 65 6c 28 polation='nearest')\n#pl.xlabel(
151c0 5c 22 24 79 24 5c 22 2c 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 \"$y$\",fontsize=fs)\npl.ylabel(
151e0 5c 22 24 69 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 \"$i$\",.fontsize=fs)\npl.xticks
15200 28 28 29 29 5c 6e 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 57 61 73 73 65 72 73 74 65 69 6e 20 28 24 (())\n\npl.title('Wasserstein.($
15220 4d 24 20 6f 6e 6c 79 29 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 M$.only)')\n\npl.subplot(1,.3,.2
15240 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 67 2c 20 63 6d 61 70 3d 63 6d 61 70 2c 20 69 6e 74 65 )\npl.imshow(Gg,.cmap=cmap,.inte
15260 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 27 rpolation='nearest')\npl.title('
15280 47 72 6f 6d 6f 76 20 28 24 43 5f 31 2c 43 5f 32 24 20 6f 6e 6c 79 29 27 29 5c 6e 70 6c 2e 78 74 Gromov.($C_1,C_2$.only)')\npl.xt
152a0 69 63 6b 73 28 28 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 5c 6e 70 icks(())\npl.subplot(1,.3,.3)\np
152c0 6c 2e 69 6d 73 68 6f 77 28 47 77 67 2c 20 63 6d 61 70 3d 63 6d 61 70 2c 20 69 6e 74 65 72 70 6f l.imshow(Gwg,.cmap=cmap,.interpo
152e0 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 46 47 57 lation='nearest')\npl.title('FGW
15300 20 20 28 24 4d 2b 43 5f 31 2c 43 5f 32 24 29 27 29 5c 6e 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 5c ..($M+C_1,C_2$)')\n\npl.xlabel(\
15320 22 24 6a 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 "$j$\",.fontsize=fs)\npl.ylabel(
15340 5c 22 24 69 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 5c 6e 70 6c 2e 74 69 67 68 \"$i$\",.fontsize=fs)\n\npl.tigh
15360 74 5f 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 0a 20 t_layout()\npl.show()".......]..
15380 20 20 20 7d 0a 20 20 5d 2c 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
153a0 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
153c0 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 e":."Python.3",......."language"
153e0 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f :."python",......."name":."pytho
15400 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 n3".....},....."language_info":.
15420 7b 0a 20 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 {......."codemirror_mode":.{....
15440 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 ....."name":."ipython",.........
15460 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c "version":.3.......},......."fil
15480 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 e_extension":.".py",......."mime
154a0 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e type":."text/x-python",......."n
154c0 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 ame":."python",......."nbconvert
154e0 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 _exporter":."python",......."pyg
15500 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 ments_lexer":."ipython3",.......
15520 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 38 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 "version":."3.6.8".....}...},...
15540 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 "nbformat":.4,..."nbformat_minor
15560 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 89 74 d9 4e 2a a3 88 70 7d 20 00 00 7d 20 00 00 ":.0.}PK.........t.N*..p}...}...
15580 19 00 00 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 66 67 77 2e 69 70 79 6e 62 7b 0a 20 ....plot_barycenter_fgw.ipynb{..
155a0 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 63 65 6c 6c 5f 74 79 ."cells":.[.....{......."cell_ty
155c0 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f pe":."code",......."execution_co
155e0 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a unt":.null,......."metadata":.{.
15600 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......
15620 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 .},......."outputs":.[],......."
15640 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 20 source":.[........."%matplotlib.
15660 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 inline".......].....},.....{....
15680 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 0a 20 20 20 20 ..."cell_type":."markdown",.....
156a0 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 .."metadata":.{},......."source"
156c0 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=================
156e0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 50 6c 6f 74 20 67 72 61 70 68 73 27 20 62 ================\nPlot.graphs'.b
15700 61 72 79 63 65 6e 74 65 72 20 75 73 69 6e 67 20 46 47 57 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d arycenter.using.FGW\n===========
15720 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 54 68 69 73 20 65 ======================\n\nThis.e
15740 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 xample.illustrates.the.computati
15760 6f 6e 20 62 61 72 79 63 65 6e 74 65 72 20 6f 66 20 6c 61 62 65 6c 65 64 20 67 72 61 70 68 73 20 on.barycenter.of.labeled.graphs.
15780 75 73 69 6e 67 20 46 47 57 5c 6e 5c 6e 52 65 71 75 69 72 65 73 20 6e 65 74 77 6f 72 6b 78 20 3e using.FGW\n\nRequires.networkx.>
157a0 3d 32 5c 6e 5c 6e 2e 2e 20 5b 31 38 5d 20 56 61 79 65 72 20 54 69 74 6f 75 61 6e 2c 20 43 68 61 =2\n\n...[18].Vayer.Titouan,.Cha
157c0 70 65 6c 20 4c 61 65 74 69 74 69 61 2c 20 46 6c 61 6d 61 72 79 20 52 7b 27 65 7d 6d 69 2c 20 54 pel.Laetitia,.Flamary.R{'e}mi,.T
157e0 61 76 65 6e 61 72 64 20 52 6f 6d 61 69 6e 5c 6e 20 20 20 20 20 20 61 6e 64 20 43 6f 75 72 74 79 avenard.Romain\n......and.Courty
15800 20 4e 69 63 6f 6c 61 73 5c 6e 20 20 20 20 5c 22 4f 70 74 69 6d 61 6c 20 54 72 61 6e 73 70 6f 72 .Nicolas\n....\"Optimal.Transpor
15820 74 20 66 6f 72 20 73 74 72 75 63 74 75 72 65 64 20 64 61 74 61 20 77 69 74 68 20 61 70 70 6c 69 t.for.structured.data.with.appli
15840 63 61 74 69 6f 6e 20 6f 6e 20 67 72 61 70 68 73 5c 22 5c 6e 20 20 20 20 49 6e 74 65 72 6e 61 74 cation.on.graphs\"\n....Internat
15860 69 6f 6e 61 6c 20 43 6f 6e 66 65 72 65 6e 63 65 20 6f 6e 20 4d 61 63 68 69 6e 65 20 4c 65 61 72 ional.Conference.on.Machine.Lear
15880 6e 69 6e 67 20 28 49 43 4d 4c 29 2e 20 32 30 31 39 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 ning.(ICML)..2019.\n\n\n".......
158a0 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ].....},.....{......."cell_type"
158c0 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 :."code",......."execution_count
158e0 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 ":.null,......."metadata":.{....
15900 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 2c ....."collapsed":.false.......},
15920 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 ......."outputs":.[],......."sou
15940 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 20 54 69 74 6f 75 rce":.[........."#.Author:.Titou
15960 61 6e 20 56 61 79 65 72 20 3c 74 69 74 6f 75 61 6e 2e 76 61 79 65 72 40 69 72 69 73 61 2e 66 72 an.Vayer.<titouan.vayer@irisa.fr
15980 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 5c 6e 5c 6e >\n#\n#.License:.MIT.License\n\n
159a0 23 25 25 20 6c 6f 61 64 20 6c 69 62 72 61 72 69 65 73 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 #%%.load.libraries\nimport.numpy
159c0 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 79 70 6c 6f 74 .as.np\nimport.matplotlib.pyplot
159e0 20 61 73 20 70 6c 74 5c 6e 69 6d 70 6f 72 74 20 6e 65 74 77 6f 72 6b 78 20 61 73 20 6e 78 5c 6e .as.plt\nimport.networkx.as.nx\n
15a00 69 6d 70 6f 72 74 20 6d 61 74 68 5c 6e 66 72 6f 6d 20 73 63 69 70 79 2e 73 70 61 72 73 65 2e 63 import.math\nfrom.scipy.sparse.c
15a20 73 67 72 61 70 68 20 69 6d 70 6f 72 74 20 73 68 6f 72 74 65 73 74 5f 70 61 74 68 5c 6e 69 6d 70 sgraph.import.shortest_path\nimp
15a40 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 63 6f 6c 6f 72 73 20 61 73 20 6d 63 6f 6c 5c 6e 66 ort.matplotlib.colors.as.mcol\nf
15a60 72 6f 6d 20 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6d 70 6f 72 74 20 63 6d 5c 6e 66 72 6f 6d 20 6f rom.matplotlib.import.cm\nfrom.o
15a80 74 2e 67 72 6f 6d 6f 76 20 69 6d 70 6f 72 74 20 66 67 77 5f 62 61 72 79 63 65 6e 74 65 72 73 5c t.gromov.import.fgw_barycenters\
15aa0 6e 23 25 25 20 47 72 61 70 68 20 66 75 6e 63 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e 64 65 66 20 66 69 n#%%.Graph.functions\n\n\ndef.fi
15ac0 6e 64 5f 74 68 72 65 73 68 28 43 2c 20 69 6e 66 3d 30 2e 35 2c 20 73 75 70 3d 33 2c 20 73 74 65 nd_thresh(C,.inf=0.5,.sup=3,.ste
15ae0 70 3d 31 30 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 20 54 72 69 63 6b 20 74 6f 20 66 69 6e 64 p=10):\n....\"\"\".Trick.to.find
15b00 20 74 68 65 20 61 64 65 71 75 61 74 65 20 74 68 72 65 73 68 6f 6c 64 73 20 66 72 6f 6d 20 77 68 .the.adequate.thresholds.from.wh
15b20 65 72 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 43 20 6d 61 74 72 69 78 20 61 72 65 20 63 6f ere.value.of.the.C.matrix.are.co
15b40 6e 73 69 64 65 72 65 64 20 63 6c 6f 73 65 20 65 6e 6f 75 67 68 20 74 6f 20 73 61 79 20 74 68 61 nsidered.close.enough.to.say.tha
15b60 74 20 6e 6f 64 65 73 20 61 72 65 20 63 6f 6e 6e 65 63 74 65 64 5c 6e 20 20 20 20 20 20 20 20 54 t.nodes.are.connected\n........T
15b80 74 68 65 20 74 68 72 65 73 68 6f 6c 64 20 69 73 20 66 6f 75 6e 64 20 62 79 20 61 20 6c 69 6e 65 the.threshold.is.found.by.a.line
15ba0 73 65 61 72 63 68 20 62 65 74 77 65 65 6e 20 76 61 6c 75 65 73 20 5c 22 69 6e 66 5c 22 20 61 6e search.between.values.\"inf\".an
15bc0 64 20 5c 22 73 75 70 5c 22 20 77 69 74 68 20 5c 22 73 74 65 70 5c 22 20 74 68 72 65 73 68 6f 6c d.\"sup\".with.\"step\".threshol
15be0 64 73 20 74 65 73 74 65 64 2e 5c 6e 20 20 20 20 20 20 20 20 54 68 65 20 6f 70 74 69 6d 61 6c 20 ds.tested.\n........The.optimal.
15c00 74 68 72 65 73 68 6f 6c 64 20 69 73 20 74 68 65 20 6f 6e 65 20 77 68 69 63 68 20 6d 69 6e 69 6d threshold.is.the.one.which.minim
15c20 69 7a 65 73 20 74 68 65 20 72 65 63 6f 6e 73 74 72 75 63 74 69 6f 6e 20 65 72 72 6f 72 20 62 65 izes.the.reconstruction.error.be
15c40 74 77 65 65 6e 20 74 68 65 20 73 68 6f 72 74 65 73 74 5f 70 61 74 68 20 6d 61 74 72 69 78 20 63 tween.the.shortest_path.matrix.c
15c60 6f 6d 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 74 68 72 65 73 68 6f 6c 64 65 64 20 61 64 6a 65 6e oming.from.the.thresholded.adjen
15c80 63 79 20 6d 61 74 72 69 78 5c 6e 20 20 20 20 20 20 20 20 61 6e 64 20 74 68 65 20 6f 72 69 67 69 cy.matrix\n........and.the.origi
15ca0 6e 61 6c 20 6d 61 74 72 69 78 2e 5c 6e 20 20 20 20 50 61 72 61 6d 65 74 65 72 73 5c 6e 20 20 20 nal.matrix.\n....Parameters\n...
15cc0 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 20 20 20 20 43 20 3a 20 6e 64 61 72 72 61 79 2c 20 73 68 .----------\n....C.:.ndarray,.sh
15ce0 61 70 65 20 28 6e 5f 6e 6f 64 65 73 2c 6e 5f 6e 6f 64 65 73 29 5c 6e 20 20 20 20 20 20 20 20 20 ape.(n_nodes,n_nodes)\n.........
15d00 20 20 20 54 68 65 20 73 74 72 75 63 74 75 72 65 20 6d 61 74 72 69 78 20 74 6f 20 74 68 72 65 73 ...The.structure.matrix.to.thres
15d20 68 6f 6c 64 5c 6e 20 20 20 20 69 6e 66 20 3a 20 66 6c 6f 61 74 5c 6e 20 20 20 20 20 20 20 20 20 hold\n....inf.:.float\n.........
15d40 20 54 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6c 69 6e 65 73 65 61 72 63 68 .The.beginning.of.the.linesearch
15d60 5c 6e 20 20 20 20 73 75 70 20 3a 20 66 6c 6f 61 74 5c 6e 20 20 20 20 20 20 20 20 20 20 54 68 65 \n....sup.:.float\n..........The
15d80 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 6e 65 73 65 61 72 63 68 5c 6e 20 20 20 20 73 74 65 70 .end.of.the.linesearch\n....step
15da0 20 3a 20 69 6e 74 65 67 65 72 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 4e 75 6d 62 65 72 20 6f .:.integer\n............Number.o
15dc0 66 20 74 68 72 65 73 68 6f 6c 64 73 20 74 65 73 74 65 64 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 5c f.thresholds.tested\n....\"\"\"\
15de0 6e 20 20 20 20 64 69 73 74 20 3d 20 5b 5d 5c 6e 20 20 20 20 73 65 61 72 63 68 20 3d 20 6e 70 2e n....dist.=.[]\n....search.=.np.
15e00 6c 69 6e 73 70 61 63 65 28 69 6e 66 2c 20 73 75 70 2c 20 73 74 65 70 29 5c 6e 20 20 20 20 66 6f linspace(inf,.sup,.step)\n....fo
15e20 72 20 74 68 72 65 73 68 20 69 6e 20 73 65 61 72 63 68 3a 5c 6e 20 20 20 20 20 20 20 20 43 70 72 r.thresh.in.search:\n........Cpr
15e40 69 6d 65 20 3d 20 73 70 5f 74 6f 5f 61 64 6a 65 6e 63 79 28 43 2c 20 30 2c 20 74 68 72 65 73 68 ime.=.sp_to_adjency(C,.0,.thresh
15e60 29 5c 6e 20 20 20 20 20 20 20 20 53 43 20 3d 20 73 68 6f 72 74 65 73 74 5f 70 61 74 68 28 43 70 )\n........SC.=.shortest_path(Cp
15e80 72 69 6d 65 2c 20 6d 65 74 68 6f 64 3d 27 44 27 29 5c 6e 20 20 20 20 20 20 20 20 53 43 5b 53 43 rime,.method='D')\n........SC[SC
15ea0 20 3d 3d 20 66 6c 6f 61 74 28 27 69 6e 66 27 29 5d 20 3d 20 31 30 30 5c 6e 20 20 20 20 20 20 20 .==.float('inf')].=.100\n.......
15ec0 20 64 69 73 74 2e 61 70 70 65 6e 64 28 6e 70 2e 6c 69 6e 61 6c 67 2e 6e 6f 72 6d 28 53 43 20 2d .dist.append(np.linalg.norm(SC.-
15ee0 20 43 29 29 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 73 65 61 72 63 68 5b 6e 70 2e 61 72 67 6d 69 .C))\n....return.search[np.argmi
15f00 6e 28 64 69 73 74 29 5d 2c 20 64 69 73 74 5c 6e 5c 6e 5c 6e 64 65 66 20 73 70 5f 74 6f 5f 61 64 n(dist)],.dist\n\n\ndef.sp_to_ad
15f20 6a 65 6e 63 79 28 43 2c 20 74 68 72 65 73 68 69 6e 66 3d 30 2e 32 2c 20 74 68 72 65 73 68 73 75 jency(C,.threshinf=0.2,.threshsu
15f40 70 3d 31 2e 38 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 20 54 68 72 65 73 68 6f 6c 64 73 20 74 p=1.8):\n....\"\"\".Thresholds.t
15f60 68 65 20 73 74 72 75 63 74 75 72 65 20 6d 61 74 72 69 78 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 he.structure.matrix.in.order.to.
15f80 63 6f 6d 70 75 74 65 20 61 6e 20 61 64 6a 65 6e 63 79 20 6d 61 74 72 69 78 2e 5c 6e 20 20 20 20 compute.an.adjency.matrix.\n....
15fa0 41 6c 6c 20 76 61 6c 75 65 73 20 62 65 74 77 65 65 6e 20 74 68 72 65 73 68 69 6e 66 20 61 6e 64 All.values.between.threshinf.and
15fc0 20 74 68 72 65 73 68 73 75 70 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20 72 65 70 72 65 73 .threshsup.are.considered.repres
15fe0 65 6e 74 69 6e 67 20 63 6f 6e 6e 65 63 74 65 64 20 6e 6f 64 65 73 20 61 6e 64 20 73 65 74 20 74 enting.connected.nodes.and.set.t
16000 6f 20 31 2e 20 45 6c 73 65 20 61 72 65 20 73 65 74 20 74 6f 20 30 5c 6e 20 20 20 20 50 61 72 61 o.1..Else.are.set.to.0\n....Para
16020 6d 65 74 65 72 73 5c 6e 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 20 20 20 20 43 20 3a 20 meters\n....----------\n....C.:.
16040 6e 64 61 72 72 61 79 2c 20 73 68 61 70 65 20 28 6e 5f 6e 6f 64 65 73 2c 6e 5f 6e 6f 64 65 73 29 ndarray,.shape.(n_nodes,n_nodes)
16060 5c 6e 20 20 20 20 20 20 20 20 54 68 65 20 73 74 72 75 63 74 75 72 65 20 6d 61 74 72 69 78 20 74 \n........The.structure.matrix.t
16080 6f 20 74 68 72 65 73 68 6f 6c 64 5c 6e 20 20 20 20 74 68 72 65 73 68 69 6e 66 20 3a 20 66 6c 6f o.threshold\n....threshinf.:.flo
160a0 61 74 5c 6e 20 20 20 20 20 20 20 20 54 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 at\n........The.minimum.value.of
160c0 20 64 69 73 74 61 6e 63 65 20 66 72 6f 6d 20 77 68 69 63 68 20 74 68 65 20 6e 65 77 20 76 61 6c .distance.from.which.the.new.val
160e0 75 65 20 69 73 20 73 65 74 20 74 6f 20 31 5c 6e 20 20 20 20 74 68 72 65 73 68 73 75 70 20 3a 20 ue.is.set.to.1\n....threshsup.:.
16100 66 6c 6f 61 74 5c 6e 20 20 20 20 20 20 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 float\n........The.maximum.value
16120 20 6f 66 20 64 69 73 74 61 6e 63 65 20 66 72 6f 6d 20 77 68 69 63 68 20 74 68 65 20 6e 65 77 20 .of.distance.from.which.the.new.
16140 76 61 6c 75 65 20 69 73 20 73 65 74 20 74 6f 20 31 5c 6e 20 20 20 20 52 65 74 75 72 6e 73 5c 6e value.is.set.to.1\n....Returns\n
16160 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 5c 6e 20 20 20 20 43 20 3a 20 6e 64 61 72 72 61 79 2c 20 73 68 ....-------\n....C.:.ndarray,.sh
16180 61 70 65 20 28 6e 5f 6e 6f 64 65 73 2c 6e 5f 6e 6f 64 65 73 29 5c 6e 20 20 20 20 20 20 20 20 54 ape.(n_nodes,n_nodes)\n........T
161a0 68 65 20 74 68 72 65 73 68 6f 6c 64 20 6d 61 74 72 69 78 2e 20 45 61 63 68 20 65 6c 65 6d 65 6e he.threshold.matrix..Each.elemen
161c0 74 20 69 73 20 69 6e 20 7b 30 2c 31 7d 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 48 t.is.in.{0,1}\n....\"\"\"\n....H
161e0 20 3d 20 6e 70 2e 7a 65 72 6f 73 5f 6c 69 6b 65 28 43 29 5c 6e 20 20 20 20 6e 70 2e 66 69 6c 6c .=.np.zeros_like(C)\n....np.fill
16200 5f 64 69 61 67 6f 6e 61 6c 28 48 2c 20 6e 70 2e 64 69 61 67 6f 6e 61 6c 28 43 29 29 5c 6e 20 20 _diagonal(H,.np.diagonal(C))\n..
16220 20 20 43 20 3d 20 43 20 2d 20 48 5c 6e 20 20 20 20 43 20 3d 20 6e 70 2e 6d 69 6e 69 6d 75 6d 28 ..C.=.C.-.H\n....C.=.np.minimum(
16240 6e 70 2e 6d 61 78 69 6d 75 6d 28 43 2c 20 74 68 72 65 73 68 69 6e 66 29 2c 20 74 68 72 65 73 68 np.maximum(C,.threshinf),.thresh
16260 73 75 70 29 5c 6e 20 20 20 20 43 5b 43 20 3d 3d 20 74 68 72 65 73 68 73 75 70 5d 20 3d 20 30 5c sup)\n....C[C.==.threshsup].=.0\
16280 6e 20 20 20 20 43 5b 43 20 21 3d 20 30 5d 20 3d 20 31 5c 6e 5c 6e 20 20 20 20 72 65 74 75 72 6e n....C[C.!=.0].=.1\n\n....return
162a0 20 43 5c 6e 5c 6e 5c 6e 64 65 66 20 62 75 69 6c 64 5f 6e 6f 69 73 79 5f 63 69 72 63 75 6c 61 72 .C\n\n\ndef.build_noisy_circular
162c0 5f 67 72 61 70 68 28 4e 3d 32 30 2c 20 6d 75 3d 30 2c 20 73 69 67 6d 61 3d 30 2e 33 2c 20 77 69 _graph(N=20,.mu=0,.sigma=0.3,.wi
162e0 74 68 5f 6e 6f 69 73 65 3d 46 61 6c 73 65 2c 20 73 74 72 75 63 74 75 72 65 5f 6e 6f 69 73 65 3d th_noise=False,.structure_noise=
16300 46 61 6c 73 65 2c 20 70 3d 4e 6f 6e 65 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 20 43 72 65 61 False,.p=None):\n....\"\"\".Crea
16320 74 65 20 61 20 6e 6f 69 73 79 20 63 69 72 63 75 6c 61 72 20 67 72 61 70 68 5c 6e 20 20 20 20 5c te.a.noisy.circular.graph\n....\
16340 22 5c 22 5c 22 5c 6e 20 20 20 20 67 20 3d 20 6e 78 2e 47 72 61 70 68 28 29 5c 6e 20 20 20 20 67 "\"\"\n....g.=.nx.Graph()\n....g
16360 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 6c 69 73 74 28 72 61 6e 67 65 28 4e 29 29 29 5c .add_nodes_from(list(range(N)))\
16380 6e 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 4e 29 3a 5c 6e 20 20 20 20 20 20 20 n....for.i.in.range(N):\n.......
163a0 20 6e 6f 69 73 65 20 3d 20 66 6c 6f 61 74 28 6e 70 2e 72 61 6e 64 6f 6d 2e 6e 6f 72 6d 61 6c 28 .noise.=.float(np.random.normal(
163c0 6d 75 2c 20 73 69 67 6d 61 2c 20 31 29 29 5c 6e 20 20 20 20 20 20 20 20 69 66 20 77 69 74 68 5f mu,.sigma,.1))\n........if.with_
163e0 6e 6f 69 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 67 2e 61 64 64 5f 6e 6f 64 65 28 69 noise:\n............g.add_node(i
16400 2c 20 61 74 74 72 5f 6e 61 6d 65 3d 6d 61 74 68 2e 73 69 6e 28 28 32 20 2a 20 69 20 2a 20 6d 61 ,.attr_name=math.sin((2.*.i.*.ma
16420 74 68 2e 70 69 20 2f 20 4e 29 29 20 2b 20 6e 6f 69 73 65 29 5c 6e 20 20 20 20 20 20 20 20 65 6c th.pi./.N)).+.noise)\n........el
16440 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 67 2e 61 64 64 5f 6e 6f 64 65 28 69 2c 20 61 se:\n............g.add_node(i,.a
16460 74 74 72 5f 6e 61 6d 65 3d 6d 61 74 68 2e 73 69 6e 28 32 20 2a 20 69 20 2a 20 6d 61 74 68 2e 70 ttr_name=math.sin(2.*.i.*.math.p
16480 69 20 2f 20 4e 29 29 5c 6e 20 20 20 20 20 20 20 20 67 2e 61 64 64 5f 65 64 67 65 28 69 2c 20 69 i./.N))\n........g.add_edge(i,.i
164a0 20 2b 20 31 29 5c 6e 20 20 20 20 20 20 20 20 69 66 20 73 74 72 75 63 74 75 72 65 5f 6e 6f 69 73 .+.1)\n........if.structure_nois
164c0 65 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 72 61 6e 64 6f 6d 69 6e 74 20 3d 20 6e 70 2e 72 e:\n............randomint.=.np.r
164e0 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 30 2c 20 70 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 andom.randint(0,.p)\n...........
16500 20 69 66 20 72 61 6e 64 6f 6d 69 6e 74 20 3d 3d 20 30 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 .if.randomint.==.0:\n...........
16520 20 20 20 20 20 69 66 20 69 20 3c 3d 20 4e 20 2d 20 33 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 .....if.i.<=.N.-.3:\n...........
16540 20 20 20 20 20 20 20 20 20 67 2e 61 64 64 5f 65 64 67 65 28 69 2c 20 69 20 2b 20 32 29 5c 6e 20 .........g.add_edge(i,.i.+.2)\n.
16560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 20 3d 3d 20 4e 20 2d 20 32 3a 5c 6e 20 ...............if.i.==.N.-.2:\n.
16580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 2e 61 64 64 5f 65 64 67 65 28 69 2c ...................g.add_edge(i,
165a0 20 30 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 20 3d 3d 20 4e 20 2d .0)\n................if.i.==.N.-
165c0 20 31 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 2e 61 64 64 5f 65 .1:\n....................g.add_e
165e0 64 67 65 28 69 2c 20 31 29 5c 6e 20 20 20 20 67 2e 61 64 64 5f 65 64 67 65 28 4e 2c 20 30 29 5c dge(i,.1)\n....g.add_edge(N,.0)\
16600 6e 20 20 20 20 6e 6f 69 73 65 20 3d 20 66 6c 6f 61 74 28 6e 70 2e 72 61 6e 64 6f 6d 2e 6e 6f 72 n....noise.=.float(np.random.nor
16620 6d 61 6c 28 6d 75 2c 20 73 69 67 6d 61 2c 20 31 29 29 5c 6e 20 20 20 20 69 66 20 77 69 74 68 5f mal(mu,.sigma,.1))\n....if.with_
16640 6e 6f 69 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 67 2e 61 64 64 5f 6e 6f 64 65 28 4e 2c 20 61 74 noise:\n........g.add_node(N,.at
16660 74 72 5f 6e 61 6d 65 3d 6d 61 74 68 2e 73 69 6e 28 28 32 20 2a 20 4e 20 2a 20 6d 61 74 68 2e 70 tr_name=math.sin((2.*.N.*.math.p
16680 69 20 2f 20 4e 29 29 20 2b 20 6e 6f 69 73 65 29 5c 6e 20 20 20 20 65 6c 73 65 3a 5c 6e 20 20 20 i./.N)).+.noise)\n....else:\n...
166a0 20 20 20 20 20 67 2e 61 64 64 5f 6e 6f 64 65 28 4e 2c 20 61 74 74 72 5f 6e 61 6d 65 3d 6d 61 74 .....g.add_node(N,.attr_name=mat
166c0 68 2e 73 69 6e 28 32 20 2a 20 4e 20 2a 20 6d 61 74 68 2e 70 69 20 2f 20 4e 29 29 5c 6e 20 20 20 h.sin(2.*.N.*.math.pi./.N))\n...
166e0 20 72 65 74 75 72 6e 20 67 5c 6e 5c 6e 5c 6e 64 65 66 20 67 72 61 70 68 5f 63 6f 6c 6f 72 73 28 .return.g\n\n\ndef.graph_colors(
16700 6e 78 5f 67 72 61 70 68 2c 20 76 6d 69 6e 3d 30 2c 20 76 6d 61 78 3d 37 29 3a 5c 6e 20 20 20 20 nx_graph,.vmin=0,.vmax=7):\n....
16720 63 6e 6f 72 6d 20 3d 20 6d 63 6f 6c 2e 4e 6f 72 6d 61 6c 69 7a 65 28 76 6d 69 6e 3d 76 6d 69 6e cnorm.=.mcol.Normalize(vmin=vmin
16740 2c 20 76 6d 61 78 3d 76 6d 61 78 29 5c 6e 20 20 20 20 63 70 69 63 6b 20 3d 20 63 6d 2e 53 63 61 ,.vmax=vmax)\n....cpick.=.cm.Sca
16760 6c 61 72 4d 61 70 70 61 62 6c 65 28 6e 6f 72 6d 3d 63 6e 6f 72 6d 2c 20 63 6d 61 70 3d 27 76 69 larMappable(norm=cnorm,.cmap='vi
16780 72 69 64 69 73 27 29 5c 6e 20 20 20 20 63 70 69 63 6b 2e 73 65 74 5f 61 72 72 61 79 28 5b 5d 29 ridis')\n....cpick.set_array([])
167a0 5c 6e 20 20 20 20 76 61 6c 5f 6d 61 70 20 3d 20 7b 7d 5c 6e 20 20 20 20 66 6f 72 20 6b 2c 20 76 \n....val_map.=.{}\n....for.k,.v
167c0 20 69 6e 20 6e 78 2e 67 65 74 5f 6e 6f 64 65 5f 61 74 74 72 69 62 75 74 65 73 28 6e 78 5f 67 72 .in.nx.get_node_attributes(nx_gr
167e0 61 70 68 2c 20 27 61 74 74 72 5f 6e 61 6d 65 27 29 2e 69 74 65 6d 73 28 29 3a 5c 6e 20 20 20 20 aph,.'attr_name').items():\n....
16800 20 20 20 20 76 61 6c 5f 6d 61 70 5b 6b 5d 20 3d 20 63 70 69 63 6b 2e 74 6f 5f 72 67 62 61 28 76 ....val_map[k].=.cpick.to_rgba(v
16820 29 5c 6e 20 20 20 20 63 6f 6c 6f 72 73 20 3d 20 5b 5d 5c 6e 20 20 20 20 66 6f 72 20 6e 6f 64 65 )\n....colors.=.[]\n....for.node
16840 20 69 6e 20 6e 78 5f 67 72 61 70 68 2e 6e 6f 64 65 73 28 29 3a 5c 6e 20 20 20 20 20 20 20 20 63 .in.nx_graph.nodes():\n........c
16860 6f 6c 6f 72 73 2e 61 70 70 65 6e 64 28 76 61 6c 5f 6d 61 70 5b 6e 6f 64 65 5d 29 5c 6e 20 20 20 olors.append(val_map[node])\n...
16880 20 72 65 74 75 72 6e 20 63 6f 6c 6f 72 73 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 .return.colors".......].....},..
168a0 20 20 20 7b 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
168c0 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 n",......."metadata":.{},.......
168e0 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
16900 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 ta\n-------------\n\n".......]..
16920 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
16940 63 6f 64 65 22 2c 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 code",......."execution_count":.
16960 6e 75 6c 6c 2c 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 null,......."metadata":.{.......
16980 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 2c 0a 20 20 .."collapsed":.false.......},...
169a0 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ...."outputs":.[],......."source
169c0 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 63 69 72 63 75 6c 61 72 20 64 61 74 61 73 ":.[........."#%%.circular.datas
169e0 65 74 5c 6e 23 20 57 65 20 62 75 69 6c 64 20 61 20 64 61 74 61 73 65 74 20 6f 66 20 6e 6f 69 73 et\n#.We.build.a.dataset.of.nois
16a00 79 20 63 69 72 63 75 6c 61 72 20 67 72 61 70 68 73 2e 5c 6e 23 20 4e 6f 69 73 65 20 69 73 20 61 y.circular.graphs.\n#.Noise.is.a
16a20 64 64 65 64 20 6f 6e 20 74 68 65 20 73 74 72 75 63 74 75 72 65 73 20 62 79 20 72 61 6e 64 6f 6d dded.on.the.structures.by.random
16a40 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64 20 6f 6e 20 74 68 65 20 66 65 61 74 75 72 65 73 .connections.and.on.the.features
16a60 20 62 79 20 67 61 75 73 73 69 61 6e 20 6e 6f 69 73 65 2e 5c 6e 5c 6e 5c 6e 6e 70 2e 72 61 6e 64 .by.gaussian.noise.\n\n\nnp.rand
16a80 6f 6d 2e 73 65 65 64 28 33 30 29 5c 6e 58 30 20 3d 20 5b 5d 5c 6e 66 6f 72 20 6b 20 69 6e 20 72 om.seed(30)\nX0.=.[]\nfor.k.in.r
16aa0 61 6e 67 65 28 39 29 3a 5c 6e 20 20 20 20 58 30 2e 61 70 70 65 6e 64 28 62 75 69 6c 64 5f 6e 6f ange(9):\n....X0.append(build_no
16ac0 69 73 79 5f 63 69 72 63 75 6c 61 72 5f 67 72 61 70 68 28 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e isy_circular_graph(np.random.ran
16ae0 64 69 6e 74 28 31 35 2c 20 32 35 29 2c 20 77 69 74 68 5f 6e 6f 69 73 65 3d 54 72 75 65 2c 20 73 dint(15,.25),.with_noise=True,.s
16b00 74 72 75 63 74 75 72 65 5f 6e 6f 69 73 65 3d 54 72 75 65 2c 20 70 3d 33 29 29 22 0a 20 20 20 20 tructure_noise=True,.p=3))".....
16b20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 ..].....},.....{......."cell_typ
16b40 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 e":."markdown",......."metadata"
16b60 3a 20 7b 7d 2c 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":.[.........
16b80 22 50 6c 6f 74 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 "Plot.data\n---------\n\n"......
16ba0 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 .].....},.....{......."cell_type
16bc0 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e ":."code",......."execution_coun
16be0 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 t":.null,......."metadata":.{...
16c00 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.......}
16c20 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f ,......."outputs":.[],......."so
16c40 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 50 6c 6f 74 20 67 72 61 70 68 urce":.[........."#%%.Plot.graph
16c60 73 5c 6e 5c 6e 70 6c 74 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 38 2c 20 31 30 29 29 s\n\nplt.figure(figsize=(8,.10))
16c80 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 58 30 29 29 3a 5c 6e 20 20 20 20 \nfor.i.in.range(len(X0)):\n....
16ca0 70 6c 74 2e 73 75 62 70 6c 6f 74 28 33 2c 20 33 2c 20 69 20 2b 20 31 29 5c 6e 20 20 20 20 67 20 plt.subplot(3,.3,.i.+.1)\n....g.
16cc0 3d 20 58 30 5b 69 5d 5c 6e 20 20 20 20 70 6f 73 20 3d 20 6e 78 2e 6b 61 6d 61 64 61 5f 6b 61 77 =.X0[i]\n....pos.=.nx.kamada_kaw
16ce0 61 69 5f 6c 61 79 6f 75 74 28 67 29 5c 6e 20 20 20 20 6e 78 2e 64 72 61 77 28 67 2c 20 70 6f 73 ai_layout(g)\n....nx.draw(g,.pos
16d00 3d 70 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 67 72 61 70 68 5f 63 6f 6c 6f 72 73 28 67 2c =pos,.node_color=graph_colors(g,
16d20 20 76 6d 69 6e 3d 2d 31 2c 20 76 6d 61 78 3d 31 29 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 .vmin=-1,.vmax=1),.with_labels=F
16d40 61 6c 73 65 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 31 30 30 29 5c 6e 70 6c 74 2e 73 75 70 74 69 74 alse,.node_size=100)\nplt.suptit
16d60 6c 65 28 27 44 61 74 61 73 65 74 20 6f 66 20 6e 6f 69 73 79 20 67 72 61 70 68 73 2e 20 43 6f 6c le('Dataset.of.noisy.graphs..Col
16d80 6f 72 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 6c 61 62 65 6c 27 2c 20 66 6f 6e 74 73 69 7a or.indicates.the.label',.fontsiz
16da0 65 3d 32 30 29 5c 6e 70 6c 74 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d e=20)\nplt.show()".......].....}
16dc0 2c 0a 20 20 20 20 7b 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
16de0 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 down",......."metadata":.{},....
16e00 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 42 61 72 79 63 65 6e 74 ..."source":.[........."Barycent
16e20 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d er.computation\n----------------
16e40 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b ------\n\n".......].....},.....{
16e60 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 0a 20 20 20 20 ......."cell_type":."code",.....
16e80 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 0a 20 20 20 20 20 .."execution_count":.null,......
16ea0 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
16ec0 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 d":.false.......},......."output
16ee0 73 22 3a 20 5b 5d 2c 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 s":.[],......."source":.[.......
16f00 20 20 22 23 25 25 20 57 65 20 63 6f 6d 70 75 74 65 20 74 68 65 20 62 61 72 79 63 65 6e 74 65 72 .."#%%.We.compute.the.barycenter
16f20 20 75 73 69 6e 67 20 46 47 57 2e 20 53 74 72 75 63 74 75 72 65 20 6d 61 74 72 69 63 65 73 20 61 .using.FGW..Structure.matrices.a
16f40 72 65 20 63 6f 6d 70 75 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 73 68 6f 72 74 65 73 74 5f 70 re.computed.using.the.shortest_p
16f60 61 74 68 20 64 69 73 74 61 6e 63 65 20 69 6e 20 74 68 65 20 67 72 61 70 68 5c 6e 23 20 46 65 61 ath.distance.in.the.graph\n#.Fea
16f80 74 75 72 65 73 20 64 69 73 74 61 6e 63 65 73 20 61 72 65 20 74 68 65 20 65 75 63 6c 69 64 65 61 tures.distances.are.the.euclidea
16fa0 6e 20 64 69 73 74 61 6e 63 65 73 5c 6e 43 73 20 3d 20 5b 73 68 6f 72 74 65 73 74 5f 70 61 74 68 n.distances\nCs.=.[shortest_path
16fc0 28 6e 78 2e 61 64 6a 61 63 65 6e 63 79 5f 6d 61 74 72 69 78 28 78 29 29 20 66 6f 72 20 78 20 69 (nx.adjacency_matrix(x)).for.x.i
16fe0 6e 20 58 30 5d 5c 6e 70 73 20 3d 20 5b 6e 70 2e 6f 6e 65 73 28 6c 65 6e 28 78 2e 6e 6f 64 65 73 n.X0]\nps.=.[np.ones(len(x.nodes
17000 28 29 29 29 20 2f 20 6c 65 6e 28 78 2e 6e 6f 64 65 73 28 29 29 20 66 6f 72 20 78 20 69 6e 20 58 ()))./.len(x.nodes()).for.x.in.X
17020 30 5d 5c 6e 59 73 20 3d 20 5b 6e 70 2e 61 72 72 61 79 28 5b 76 20 66 6f 72 20 28 6b 2c 20 76 29 0]\nYs.=.[np.array([v.for.(k,.v)
17040 20 69 6e 20 6e 78 2e 67 65 74 5f 6e 6f 64 65 5f 61 74 74 72 69 62 75 74 65 73 28 78 2c 20 27 61 .in.nx.get_node_attributes(x,.'a
17060 74 74 72 5f 6e 61 6d 65 27 29 2e 69 74 65 6d 73 28 29 5d 29 2e 72 65 73 68 61 70 65 28 2d 31 2c ttr_name').items()]).reshape(-1,
17080 20 31 29 20 66 6f 72 20 78 20 69 6e 20 58 30 5d 5c 6e 6c 61 6d 62 64 61 73 20 3d 20 6e 70 2e 61 .1).for.x.in.X0]\nlambdas.=.np.a
170a0 72 72 61 79 28 5b 6e 70 2e 6f 6e 65 73 28 6c 65 6e 28 59 73 29 29 20 2f 20 6c 65 6e 28 59 73 29 rray([np.ones(len(Ys))./.len(Ys)
170c0 5d 29 2e 72 61 76 65 6c 28 29 5c 6e 73 69 7a 65 62 61 72 79 20 3d 20 31 35 20 20 23 20 77 65 20 ]).ravel()\nsizebary.=.15..#.we.
170e0 63 68 6f 6f 73 65 20 61 20 62 61 72 79 63 65 6e 74 65 72 20 77 69 74 68 20 31 35 20 6e 6f 64 65 choose.a.barycenter.with.15.node
17100 73 5c 6e 5c 6e 41 2c 20 43 2c 20 6c 6f 67 20 3d 20 66 67 77 5f 62 61 72 79 63 65 6e 74 65 72 73 s\n\nA,.C,.log.=.fgw_barycenters
17120 28 73 69 7a 65 62 61 72 79 2c 20 59 73 2c 20 43 73 2c 20 70 73 2c 20 6c 61 6d 62 64 61 73 2c 20 (sizebary,.Ys,.Cs,.ps,.lambdas,.
17140 61 6c 70 68 61 3d 30 2e 39 35 2c 20 6c 6f 67 3d 54 72 75 65 29 22 0a 20 20 20 20 20 20 5d 0a 20 alpha=0.95,.log=True)".......]..
17160 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
17180 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c markdown",......."metadata":.{},
171a0 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 50 6c 6f 74 ......."source":.[........."Plot
171c0 20 42 61 72 79 63 65 6e 74 65 72 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .Barycenter\n-------------------
171e0 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b ------\n\n".......].....},.....{
17200 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 0a 20 20 20 20 ......."cell_type":."code",.....
17220 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 0a 20 20 20 20 20 .."execution_count":.null,......
17240 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
17260 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 d":.false.......},......."output
17280 73 22 3a 20 5b 5d 2c 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 s":.[],......."source":.[.......
172a0 20 20 22 23 25 25 20 43 72 65 61 74 65 20 74 68 65 20 62 61 72 79 63 65 6e 74 65 72 5c 6e 62 61 .."#%%.Create.the.barycenter\nba
172c0 72 79 20 3d 20 6e 78 2e 66 72 6f 6d 5f 6e 75 6d 70 79 5f 6d 61 74 72 69 78 28 73 70 5f 74 6f 5f ry.=.nx.from_numpy_matrix(sp_to_
172e0 61 64 6a 65 6e 63 79 28 43 2c 20 74 68 72 65 73 68 69 6e 66 3d 30 2c 20 74 68 72 65 73 68 73 75 adjency(C,.threshinf=0,.threshsu
17300 70 3d 66 69 6e 64 5f 74 68 72 65 73 68 28 43 2c 20 73 75 70 3d 31 30 30 2c 20 73 74 65 70 3d 31 p=find_thresh(C,.sup=100,.step=1
17320 30 30 29 5b 30 5d 29 29 5c 6e 66 6f 72 20 69 2c 20 76 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 00)[0]))\nfor.i,.v.in.enumerate(
17340 41 2e 72 61 76 65 6c 28 29 29 3a 5c 6e 20 20 20 20 62 61 72 79 2e 61 64 64 5f 6e 6f 64 65 28 69 A.ravel()):\n....bary.add_node(i
17360 2c 20 61 74 74 72 5f 6e 61 6d 65 3d 76 29 5c 6e 5c 6e 23 25 25 5c 6e 70 6f 73 20 3d 20 6e 78 2e ,.attr_name=v)\n\n#%%\npos.=.nx.
17380 6b 61 6d 61 64 61 5f 6b 61 77 61 69 5f 6c 61 79 6f 75 74 28 62 61 72 79 29 5c 6e 6e 78 2e 64 72 kamada_kawai_layout(bary)\nnx.dr
173a0 61 77 28 62 61 72 79 2c 20 70 6f 73 3d 70 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 67 72 61 aw(bary,.pos=pos,.node_color=gra
173c0 70 68 5f 63 6f 6c 6f 72 73 28 62 61 72 79 2c 20 76 6d 69 6e 3d 2d 31 2c 20 76 6d 61 78 3d 31 29 ph_colors(bary,.vmin=-1,.vmax=1)
173e0 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 29 5c 6e 70 6c 74 2e 73 75 70 74 69 74 ,.with_labels=False)\nplt.suptit
17400 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 27 2c 20 66 6f 6e 74 73 69 7a 65 3d 32 30 29 5c 6e 70 le('Barycenter',.fontsize=20)\np
17420 6c 74 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 lt.show()".......].....}...],...
17440 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":.
17460 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.
17480 33 22 2c 0a 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 2c 0a 3",......."language":."python",.
174a0 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 ......"name":."python3".....},..
174c0 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 63 6f 64 ..."language_info":.{......."cod
174e0 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 6e 61 6d 65 22 3a emirror_mode":.{........."name":
17500 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 ."ipython",........."version":.3
17520 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 .......},......."file_extension"
17540 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 :.".py",......."mimetype":."text
17560 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f /x-python",......."name":."pytho
17580 6e 22 2c 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 72 22 3a 20 n",......."nbconvert_exporter":.
175a0 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 "python",......."pygments_lexer"
175c0 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 :."ipython3",......."version":."
175e0 33 2e 36 2e 38 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 3.6.8".....}...},..."nbformat":.
17600 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 4,..."nbformat_minor":.0.}PK....
17620 00 00 00 00 2d 60 cb 4c 3e 1d 30 6f d5 1a 00 00 d5 1a 00 00 16 00 00 00 70 6c 6f 74 5f 4f 54 5f ....-`.L>.0o............plot_OT_
17640 4c 31 5f 76 73 5f 4c 32 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 L1_vs_L2.ipynb{..."cells":.[....
17660 20 7b 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 0a 20 20 .{......."cell_type":."code",...
17680 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 0a 20 20 20 ...."execution_count":.null,....
176a0 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
176c0 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 sed":.false.......},......."outp
176e0 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 uts":.[],......."source":.[.....
17700 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".......]
17720 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
17740 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ."markdown",......."metadata":.{
17760 7d 2c 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 },......."source":.[........."\n
17780 23 20 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 66 6f 72 20 64 69 66 66 65 #.2D.Optimal.transport.for.diffe
177a0 72 65 6e 74 20 6d 65 74 72 69 63 73 5c 6e 5c 6e 5c 6e 32 44 20 4f 54 20 6f 6e 20 65 6d 70 69 72 rent.metrics\n\n\n2D.OT.on.empir
177c0 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 20 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74 ical.distributio..with.different
177e0 20 67 6f 75 6e 64 20 6d 65 74 72 69 63 2e 5c 6e 5c 6e 53 74 6f 6c 65 20 74 68 65 20 66 69 67 75 .gound.metric.\n\nStole.the.figu
17800 72 65 20 69 64 65 61 20 66 72 6f 6d 20 46 69 67 2e 20 31 20 61 6e 64 20 32 20 69 6e 5c 6e 68 74 re.idea.from.Fig..1.and.2.in\nht
17820 74 70 73 3a 2f 2f 61 72 78 69 76 2e 6f 72 67 2f 70 64 66 2f 31 37 30 36 2e 30 37 36 35 30 2e 70 tps://arxiv.org/pdf/1706.07650.p
17840 64 66 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b df\n\n\n\n".......].....},.....{
17860 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 0a 20 20 20 20 ......."cell_type":."code",.....
17880 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 0a 20 20 20 20 20 .."execution_count":.null,......
178a0 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
178c0 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 d":.false.......},......."output
178e0 73 22 3a 20 5b 5d 2c 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 s":.[],......."source":.[.......
17900 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.
17920 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:
17940 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.
17960 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
17980 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 69 6d 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 22 0a 20 20 l\nimport.ot\nimport.ot.plot"...
179a0 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ....].....},.....{......."cell_t
179c0 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ype":."markdown",......."metadat
179e0 61 22 3a 20 7b 7d 2c 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 a":.{},......."source":.[.......
17a00 20 20 22 44 61 74 61 73 65 74 20 31 20 3a 20 75 6e 69 66 6f 72 6d 20 73 61 6d 70 6c 69 6e 67 5c .."Dataset.1.:.uniform.sampling\
17a20 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c n----------------------------\n\
17a40 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 n".......].....},.....{......."c
17a60 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 ell_type":."code",......."execut
17a80 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ion_count":.null,......."metadat
17aa0 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 73 65 a":.{........."collapsed":.false
17ac0 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 .......},......."outputs":.[],..
17ae0 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 20 3d 20 32 30 ....."source":.[........."n.=.20
17b00 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 5c 6e 78 73 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e ..#.nb.samples\nxs.=.np.zeros((n
17b20 2c 20 32 29 29 5c 6e 78 73 5b 3a 2c 20 30 5d 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b ,.2))\nxs[:,.0].=.np.arange(n).+
17b40 20 31 5c 6e 78 73 5b 3a 2c 20 31 5d 20 3d 20 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 31 .1\nxs[:,.1].=.(np.arange(n).+.1
17b60 29 20 2a 20 2d 30 2e 30 30 31 20 20 23 20 74 6f 20 6d 61 6b 65 20 69 74 20 73 74 72 69 63 74 6c ).*.-0.001..#.to.make.it.strictl
17b80 79 20 63 6f 6e 76 65 78 2e 2e 2e 5c 6e 5c 6e 78 74 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c y.convex...\n\nxt.=.np.zeros((n,
17ba0 20 32 29 29 5c 6e 78 74 5b 3a 2c 20 31 5d 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 .2))\nxt[:,.1].=.np.arange(n).+.
17bc0 31 5c 6e 5c 6e 61 2c 20 62 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 29 2c 20 6f 74 2e 75 6e 69 66 28 1\n\na,.b.=.ot.unif(n),.ot.unif(
17be0 6e 29 20 20 23 20 75 6e 69 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 n)..#.uniform.distribution.on.sa
17c00 6d 70 6c 65 73 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 31 20 3d 20 6f 74 2e mples\n\n#.loss.matrix\nM1.=.ot.
17c20 64 69 73 74 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 dist(xs,.xt,.metric='euclidean')
17c40 5c 6e 4d 31 20 2f 3d 20 4d 31 2e 6d 61 78 28 29 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 \nM1./=.M1.max()\n\n#.loss.matri
17c60 78 5c 6e 4d 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 3d 27 x\nM2.=.ot.dist(xs,.xt,.metric='
17c80 73 71 65 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 5c sqeuclidean')\nM2./=.M2.max()\n\
17ca0 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 70 20 3d 20 6e 70 2e 73 71 72 74 28 6f 74 2e n#.loss.matrix\nMp.=.np.sqrt(ot.
17cc0 64 69 73 74 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 dist(xs,.xt,.metric='euclidean')
17ce0 29 5c 6e 4d 70 20 2f 3d 20 4d 70 2e 6d 61 78 28 29 5c 6e 5c 6e 23 20 44 61 74 61 5c 6e 70 6c 2e )\nMp./=.Mp.max()\n\n#.Data\npl.
17d00 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 70 6c 2e 63 6c figure(1,.figsize=(7,.3))\npl.cl
17d20 66 28 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 31 5d 2c f()\npl.plot(xs[:,.0],.xs[:,.1],
17d40 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 29 5c 6e .'+b',.label='Source.samples')\n
17d60 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 78 72 27 pl.plot(xt[:,.0],.xt[:,.1],.'xr'
17d80 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 61 78 ,.label='Target.samples')\npl.ax
17da0 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e is('equal')\npl.title('Source.an
17dc0 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 23 20 d.target.distributions')\n\n\n#.
17de0 43 6f 73 74 20 6d 61 74 72 69 63 65 73 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 Cost.matrices\npl.figure(2,.figs
17e00 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 ize=(7,.3))\n\npl.subplot(1,.3,.
17e20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 31 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 1)\npl.imshow(M1,.interpolation=
17e40 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 45 75 63 6c 69 64 65 61 6e 20 'nearest')\npl.title('Euclidean.
17e60 63 6f 73 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c 6e 70 cost')\n\npl.subplot(1,.3,.2)\np
17e80 6c 2e 69 6d 73 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 l.imshow(M2,.interpolation='near
17ea0 65 73 74 27 29 5c 6e 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 est')\npl.title('Squared.Euclide
17ec0 61 6e 20 63 6f 73 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 an.cost')\n\npl.subplot(1,.3,.3)
17ee0 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 70 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e \npl.imshow(Mp,.interpolation='n
17f00 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 71 72 74 20 45 75 63 6c 69 64 65 earest')\npl.title('Sqrt.Euclide
17f20 61 6e 20 63 6f 73 74 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 an.cost')\npl.tight_layout()"...
17f40 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ....].....},.....{......."cell_t
17f60 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ype":."markdown",......."metadat
17f80 61 22 3a 20 7b 7d 2c 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 a":.{},......."source":.[.......
17fa0 20 20 22 44 61 74 61 73 65 74 20 31 20 3a 20 50 6c 6f 74 20 4f 54 20 4d 61 74 72 69 63 65 73 5c .."Dataset.1.:.Plot.OT.Matrices\
17fc0 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c n----------------------------\n\
17fe0 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 n".......].....},.....{......."c
18000 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 ell_type":."code",......."execut
18020 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ion_count":.null,......."metadat
18040 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 73 65 a":.{........."collapsed":.false
18060 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 .......},......."outputs":.[],..
18080 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 45 4d ....."source":.[........."#%%.EM
180a0 44 5c 6e 47 31 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 31 29 5c 6e 47 32 20 3d 20 6f D\nG1.=.ot.emd(a,.b,.M1)\nG2.=.o
180c0 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 32 29 5c 6e 47 70 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 t.emd(a,.b,.M2)\nGp.=.ot.emd(a,.
180e0 62 2c 20 4d 70 29 5c 6e 5c 6e 23 20 4f 54 20 6d 61 74 72 69 63 65 73 5c 6e 70 6c 2e 66 69 67 75 b,.Mp)\n\n#.OT.matrices\npl.figu
18100 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 re(3,.figsize=(7,.3))\n\npl.subp
18120 6c 6f 74 28 31 2c 20 33 2c 20 31 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d lot(1,.3,.1)\not.plot.plot2D_sam
18140 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 31 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 ples_mat(xs,.xt,.G1,.c=[.5,..5,.
18160 31 5d 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 31 5d 2c 1])\npl.plot(xs[:,.0],.xs[:,.1],
18180 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 29 5c 6e .'+b',.label='Source.samples')\n
181a0 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 78 72 27 pl.plot(xt[:,.0],.xt[:,.1],.'xr'
181c0 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 61 78 ,.label='Target.samples')\npl.ax
181e0 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c is('equal')\n#.pl.legend(loc=0)\
18200 6e 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 70 6c 2e npl.title('OT.Euclidean')\n\npl.
18220 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 subplot(1,.3,.2)\not.plot.plot2D
18240 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 32 2c 20 63 3d 5b 2e 35 2c 20 _samples_mat(xs,.xt,.G2,.c=[.5,.
18260 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 73 5b 3a 2c .5,.1])\npl.plot(xs[:,.0],.xs[:,
18280 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 70 6c 65 73 .1],.'+b',.label='Source.samples
182a0 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 31 5d 2c 20 ')\npl.plot(xt[:,.0],.xt[:,.1],.
182c0 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 29 5c 6e 70 'xr',.label='Target.samples')\np
182e0 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 l.axis('equal')\n#.pl.legend(loc
18300 3d 30 29 5c 6e 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 =0)\npl.title('OT.squared.Euclid
18320 65 61 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 5c 6e 6f 74 ean')\n\npl.subplot(1,.3,.3)\not
18340 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 20 78 74 2c .plot.plot2D_samples_mat(xs,.xt,
18360 20 47 70 2c 20 63 3d 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 .Gp,.c=[.5,..5,.1])\npl.plot(xs[
18380 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 6f :,.0],.xs[:,.1],.'+b',.label='So
183a0 75 72 63 65 20 73 61 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 urce.samples')\npl.plot(xt[:,.0]
183c0 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 72 67 65 74 20 ,.xt[:,.1],.'xr',.label='Target.
183e0 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 23 20 70 samples')\npl.axis('equal')\n#.p
18400 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 54 20 73 71 l.legend(loc=0)\npl.title('OT.sq
18420 72 74 20 45 75 63 6c 69 64 65 61 6e 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 rt.Euclidean')\npl.tight_layout(
18440 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 )\n\npl.show()".......].....},..
18460 20 20 20 7b 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
18480 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 n",......."metadata":.{},.......
184a0 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 44 61 74 61 73 65 74 20 32 20 3a "source":.[........."Dataset.2.:
184c0 20 50 61 72 74 69 61 6c 20 63 69 72 63 6c 65 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .Partial.circle\n---------------
184e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a -----------\n\n".......].....},.
18500 20 20 20 20 7b 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 ....{......."cell_type":."code",
18520 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 0a ......."execution_count":.null,.
18540 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 6c ......"metadata":.{........."col
18560 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
18580 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
185a0 20 20 20 20 20 20 20 22 6e 20 3d 20 35 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 5c 6e 78 74 ......."n.=.50..#.nb.samples\nxt
185c0 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 78 74 6f 74 5b ot.=.np.zeros((n.+.1,.2))\nxtot[
185e0 3a 2c 20 30 5d 20 3d 20 6e 70 2e 63 6f 73 28 5c 6e 20 20 20 20 28 6e 70 2e 61 72 61 6e 67 65 28 :,.0].=.np.cos(\n....(np.arange(
18600 6e 20 2b 20 31 29 20 2b 20 31 2e 30 29 20 2a 20 30 2e 39 20 2f 20 28 6e 20 2b 20 32 29 20 2a 20 n.+.1).+.1.0).*.0.9./.(n.+.2).*.
18620 32 20 2a 20 6e 70 2e 70 69 29 5c 6e 78 74 6f 74 5b 3a 2c 20 31 5d 20 3d 20 6e 70 2e 73 69 6e 28 2.*.np.pi)\nxtot[:,.1].=.np.sin(
18640 5c 6e 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 \n....(np.arange(n.+.1).+.1.0).*
18660 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 78 .0.9./.(n.+.2).*.2.*.np.pi)\n\nx
18680 73 20 3d 20 78 74 6f 74 5b 3a 6e 2c 20 3a 5d 5c 6e 78 74 20 3d 20 78 74 6f 74 5b 31 3a 2c 20 3a s.=.xtot[:n,.:]\nxt.=.xtot[1:,.:
186a0 5d 5c 6e 5c 6e 61 2c 20 62 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 29 2c 20 6f 74 2e 75 6e 69 66 28 ]\n\na,.b.=.ot.unif(n),.ot.unif(
186c0 6e 29 20 20 23 20 75 6e 69 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 n)..#.uniform.distribution.on.sa
186e0 6d 70 6c 65 73 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 31 20 3d 20 6f 74 2e mples\n\n#.loss.matrix\nM1.=.ot.
18700 64 69 73 74 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 dist(xs,.xt,.metric='euclidean')
18720 5c 6e 4d 31 20 2f 3d 20 4d 31 2e 6d 61 78 28 29 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 \nM1./=.M1.max()\n\n#.loss.matri
18740 78 5c 6e 4d 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 3d 27 x\nM2.=.ot.dist(xs,.xt,.metric='
18760 73 71 65 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 5c sqeuclidean')\nM2./=.M2.max()\n\
18780 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 70 20 3d 20 6e 70 2e 73 71 72 74 28 6f 74 2e n#.loss.matrix\nMp.=.np.sqrt(ot.
187a0 64 69 73 74 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 dist(xs,.xt,.metric='euclidean')
187c0 29 5c 6e 4d 70 20 2f 3d 20 4d 70 2e 6d 61 78 28 29 5c 6e 5c 6e 5c 6e 23 20 44 61 74 61 5c 6e 70 )\nMp./=.Mp.max()\n\n\n#.Data\np
187e0 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 70 6c 2e l.figure(4,.figsize=(7,.3))\npl.
18800 63 6c 66 28 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 31 clf()\npl.plot(xs[:,.0],.xs[:,.1
18820 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 29 ],.'+b',.label='Source.samples')
18840 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 78 \npl.plot(xt[:,.0],.xt[:,.1],.'x
18860 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 2e r',.label='Target.samples')\npl.
18880 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 axis('equal')\npl.title('Source.
188a0 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 5c 6e 5c 6e 5c 6e and.traget.distributions')\n\n\n
188c0 23 20 43 6f 73 74 20 6d 61 74 72 69 63 65 73 5c 6e 70 6c 2e 66 69 67 75 72 65 28 35 2c 20 66 69 #.Cost.matrices\npl.figure(5,.fi
188e0 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 gsize=(7,.3))\n\npl.subplot(1,.3
18900 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 31 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f ,.1)\npl.imshow(M1,.interpolatio
18920 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 45 75 63 6c 69 64 65 61 n='nearest')\npl.title('Euclidea
18940 6e 20 63 6f 73 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c n.cost')\n\npl.subplot(1,.3,.2)\
18960 6e 70 6c 2e 69 6d 73 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 npl.imshow(M2,.interpolation='ne
18980 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 arest')\npl.title('Squared.Eucli
189a0 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 dean.cost')\n\npl.subplot(1,.3,.
189c0 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 70 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 3)\npl.imshow(Mp,.interpolation=
189e0 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 71 72 74 20 45 75 63 6c 69 'nearest')\npl.title('Sqrt.Eucli
18a00 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a dean.cost')\npl.tight_layout()".
18a20 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
18a40 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 _type":."markdown",......."metad
18a60 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ata":.{},......."source":.[.....
18a80 20 20 20 20 22 44 61 74 61 73 65 74 20 32 20 3a 20 50 6c 6f 74 20 20 4f 54 20 4d 61 74 72 69 63 ...."Dataset.2.:.Plot..OT.Matric
18aa0 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d es\n----------------------------
18ac0 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 -\n\n".......].....},.....{.....
18ae0 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 .."cell_type":."code",......."ex
18b00 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 ecution_count":.null,......."met
18b20 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
18b40 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b alse.......},......."outputs":.[
18b60 5d 2c 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 ],......."source":.[........."#%
18b80 25 20 45 4d 44 5c 6e 47 31 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 31 29 5c 6e 47 32 %.EMD\nG1.=.ot.emd(a,.b,.M1)\nG2
18ba0 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 32 29 5c 6e 47 70 20 3d 20 6f 74 2e 65 6d 64 .=.ot.emd(a,.b,.M2)\nGp.=.ot.emd
18bc0 28 61 2c 20 62 2c 20 4d 70 29 5c 6e 5c 6e 23 20 4f 54 20 6d 61 74 72 69 63 65 73 5c 6e 70 6c 2e (a,.b,.Mp)\n\n#.OT.matrices\npl.
18be0 66 69 67 75 72 65 28 36 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 5c 6e 70 6c 2e figure(6,.figsize=(7,.3))\n\npl.
18c00 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 subplot(1,.3,.1)\not.plot.plot2D
18c20 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 31 2c 20 63 3d 5b 2e 35 2c 20 _samples_mat(xs,.xt,.G1,.c=[.5,.
18c40 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 73 5b 3a 2c .5,.1])\npl.plot(xs[:,.0],.xs[:,
18c60 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 70 6c 65 73 .1],.'+b',.label='Source.samples
18c80 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 31 5d 2c 20 ')\npl.plot(xt[:,.0],.xt[:,.1],.
18ca0 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 29 5c 6e 70 'xr',.label='Target.samples')\np
18cc0 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 l.axis('equal')\n#.pl.legend(loc
18ce0 3d 30 29 5c 6e 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 =0)\npl.title('OT.Euclidean')\n\
18d00 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c npl.subplot(1,.3,.2)\not.plot.pl
18d20 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 2c 20 63 3d 5b ot2D_samples_mat(xs,.xt,.G2,.c=[
18d40 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
18d60 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
18d80 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[:,.
18da0 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'
18dc0 29 5c 6e 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 23 20 70 6c 2e 6c 65 67 65 6e 64 )\npl.axis('equal')\n#.pl.legend
18de0 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 73 71 75 61 72 65 64 20 45 75 (loc=0)\npl.title('OT.squared.Eu
18e00 63 6c 69 64 65 61 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 clidean')\n\npl.subplot(1,.3,.3)
18e20 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 61 74 28 78 73 2c \not.plot.plot2D_samples_mat(xs,
18e40 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 70 6c 2e 70 6c 6f 74 .xt,.Gp,.c=[.5,..5,.1])\npl.plot
18e60 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 6c 61 62 65 6c (xs[:,.0],.xs[:,.1],.'+b',.label
18e80 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a ='Source.samples')\npl.plot(xt[:
18ea0 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 72 ,.0],.xt[:,.1],.'xr',.label='Tar
18ec0 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c get.samples')\npl.axis('equal')\
18ee0 6e 23 20 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 n#.pl.legend(loc=0)\npl.title('O
18f00 54 20 73 71 72 74 20 45 75 63 6c 69 64 65 61 6e 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 T.sqrt.Euclidean')\npl.tight_lay
18f20 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 0a 20 20 20 20 out()\n\npl.show()".......].....
18f40 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e }...],..."metadata":.{....."kern
18f60 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 22 3a elspec":.{......."display_name":
18f80 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 ."Python.3",......."language":."
18fa0 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 python",......."name":."python3"
18fc0 0a 20 20 20 20 7d 2c 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 .....},....."language_info":.{..
18fe0 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":.{.......
19000 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 .."name":."ipython",........."ve
19020 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 rsion":.3.......},......."file_e
19040 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 xtension":.".py",......."mimetyp
19060 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 e":."text/x-python",......."name
19080 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 ":."python",......."nbconvert_ex
190a0 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e porter":."python",......."pygmen
190c0 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 ts_lexer":."ipython3",......."ve
190e0 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 rsion":."3.6.5".....}...},..."nb
19100 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 format":.4,..."nbformat_minor":.
19120 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 2d 60 cb 4c f9 b0 b7 c4 b9 1d 00 00 b9 1d 00 00 24 00 00 0.}PK........-`.L............$..
19140 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 6c 70 5f 76 73 5f 65 6e 74 72 6f 70 69 63 2e .plot_barycenter_lp_vs_entropic.
19160 69 70 79 6e 62 7b 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 ipynb{..."cells":.[.....{.......
19180 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 "cell_type":."code",......."exec
191a0 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 ution_count":.null,......."metad
191c0 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
191e0 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c se.......},......."outputs":.[],
19200 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 25 6d 61 74 ......."source":.[........."%mat
19220 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 plotlib.inline".......].....},..
19240 20 20 20 7b 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
19260 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 n",......."metadata":.{},.......
19280 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 57 61 73 73 "source":.[........."\n#.1D.Wass
192a0 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 61 72 69 73 6f 6e 20 62 65 erstein.barycenter.comparison.be
192c0 74 77 65 65 6e 20 65 78 61 63 74 20 4c 50 20 61 6e 64 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 tween.exact.LP.and.entropic.regu
192e0 6c 61 72 69 7a 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 6c 6c larization\n\n\nThis.example.ill
19300 75 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 72 65 67 75 ustrates.the.computation.of.regu
19320 6c 61 72 69 7a 65 64 20 57 61 73 73 65 72 73 74 65 69 6e 20 42 61 72 79 63 65 6e 74 65 72 5c 6e larized.Wasserstein.Barycenter\n
19340 61 73 20 70 72 6f 70 6f 73 65 64 20 69 6e 20 5b 33 5d 20 61 6e 64 20 65 78 61 63 74 20 4c 50 20 as.proposed.in.[3].and.exact.LP.
19360 62 61 72 79 63 65 6e 74 65 72 73 20 75 73 69 6e 67 20 73 74 61 6e 64 61 72 64 20 4c 50 20 73 6f barycenters.using.standard.LP.so
19380 6c 76 65 72 2e 5c 6e 5c 6e 49 74 20 72 65 70 72 6f 64 75 63 65 73 20 61 70 70 72 6f 78 69 6d 61 lver.\n\nIt.reproduces.approxima
193a0 74 65 6c 79 20 46 69 67 75 72 65 20 33 2e 31 20 61 6e 64 20 33 2e 32 20 66 72 6f 6d 20 74 68 65 tely.Figure.3.1.and.3.2.from.the
193c0 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 70 65 72 3a 5c 6e 43 75 74 75 72 69 2c 20 4d 2e 2c 20 26 .following.paper:\nCuturi,.M.,.&
193e0 20 50 65 79 72 5c 75 30 30 65 39 2c 20 47 2e 20 28 32 30 31 36 29 2e 20 41 20 73 6d 6f 6f 74 68 .Peyr\u00e9,.G..(2016)..A.smooth
19400 65 64 20 64 75 61 6c 20 61 70 70 72 6f 61 63 68 20 66 6f 72 20 76 61 72 69 61 74 69 6f 6e 61 6c ed.dual.approach.for.variational
19420 5c 6e 57 61 73 73 65 72 73 74 65 69 6e 20 70 72 6f 62 6c 65 6d 73 2e 20 53 49 41 4d 20 4a 6f 75 \nWasserstein.problems..SIAM.Jou
19440 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 39 28 31 29 2c 20 rnal.on.Imaging.Sciences,.9(1),.
19460 33 32 30 2d 33 34 33 2e 5c 6e 5c 6e 5b 33 5d 20 42 65 6e 61 6d 6f 75 2c 20 4a 2e 20 44 2e 2c 20 320-343.\n\n[3].Benamou,.J..D.,.
19480 43 61 72 6c 69 65 72 2c 20 47 2e 2c 20 43 75 74 75 72 69 2c 20 4d 2e 2c 20 4e 65 6e 6e 61 2c 20 Carlier,.G.,.Cuturi,.M.,.Nenna,.
194a0 4c 2e 2c 20 26 20 50 65 79 72 5c 75 30 30 65 39 2c 20 47 2e 20 28 32 30 31 35 29 2e 5c 6e 49 74 L.,.&.Peyr\u00e9,.G..(2015).\nIt
194c0 65 72 61 74 69 76 65 20 42 72 65 67 6d 61 6e 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 66 6f 72 20 erative.Bregman.projections.for.
194e0 72 65 67 75 6c 61 72 69 7a 65 64 20 74 72 61 6e 73 70 6f 72 74 61 74 69 6f 6e 20 70 72 6f 62 6c regularized.transportation.probl
19500 65 6d 73 5c 6e 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 53 63 69 65 6e 74 69 66 69 63 20 ems\nSIAM.Journal.on.Scientific.
19520 43 6f 6d 70 75 74 69 6e 67 2c 20 33 37 28 32 29 2c 20 41 31 31 31 31 2d 41 31 31 33 38 2e 5c 6e Computing,.37(2),.A1111-A1138.\n
19540 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 \n\n".......].....},.....{......
19560 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 ."cell_type":."code",......."exe
19580 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 cution_count":.null,......."meta
195a0 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
195c0 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d lse.......},......."outputs":.[]
195e0 2c 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 41 ,......."source":.[........."#.A
19600 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 72 uthor:.Remi.Flamary.<remi.flamar
19620 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 4c y@unice.fr>\n#\n#.License:.MIT.L
19640 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 6d icense\n\nimport.numpy.as.np\nim
19660 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
19680 6f 72 74 20 6f 74 5c 6e 23 20 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 33 64 20 70 6c 6f 74 20 ort.ot\n#.necessary.for.3d.plot.
196a0 65 76 65 6e 20 69 66 20 6e 6f 74 20 75 73 65 64 5c 6e 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b even.if.not.used\nfrom.mpl_toolk
196c0 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 65 73 33 44 20 20 23 20 6e 6f 71 its.mplot3d.import.Axes3D..#.noq
196e0 61 5c 6e 66 72 6f 6d 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 69 a\nfrom.matplotlib.collections.i
19700 6d 70 6f 72 74 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 20 20 23 20 6e 6f 71 61 5c 6e 5c 6e mport.PolyCollection..#.noqa\n\n
19720 23 69 6d 70 6f 72 74 20 6f 74 2e 6c 70 2e 63 76 78 20 61 73 20 63 76 78 22 0a 20 20 20 20 20 20 #import.ot.lp.cvx.as.cvx".......
19740 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ].....},.....{......."cell_type"
19760 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 :."markdown",......."metadata":.
19780 7b 7d 2c 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 {},......."source":.[........."G
197a0 61 75 73 73 69 61 6e 20 44 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 aussian.Data\n-------------\n\n"
197c0 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c .......].....},.....{......."cel
197e0 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f l_type":."code",......."executio
19800 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 n_count":.null,......."metadata"
19820 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..
19840 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 .....},......."outputs":.[],....
19860 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 70 61 72 61 ..."source":.[........."#%%.para
19880 6d 65 74 65 72 73 5c 6e 5c 6e 70 72 6f 62 6c 65 6d 73 20 3d 20 5b 5d 5c 6e 5c 6e 6e 20 3d 20 31 meters\n\nproblems.=.[]\n\nn.=.1
198a0 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 6f 6e 73 00..#.nb.bins\n\n#.bin.positions
198c0 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 6c 6f 61 \nx.=.np.arange(n,.dtype=np.floa
198e0 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 6f 6e 73 t64)\n\n#.Gaussian.distributions
19900 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 31 20 3d \n#.Gaussian.distributions\na1.=
19920 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d .ot.datasets.make_1D_gauss(n,.m=
19940 32 30 2c 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 61 32 20 20,.s=5)..#.m=.mean,.s=.std\na2.
19960 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d =.ot.datasets.make_1D_gauss(n,.m
19980 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 61 74 72 69 78 20 41 =60,.s=8)\n\n#.creating.matrix.A
199a0 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 69 6f 6e 73 5c 6e 41 .containing.all.distributions\nA
199c0 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 6e 6e 5f 64 69 73 74 .=.np.vstack((a1,.a2)).T\nn_dist
199e0 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 6e 23 20 6c 6f 73 73 ributions.=.A.shape[1]\n\n#.loss
19a00 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 4d 20 3d 20 6f 74 2e .matrix.+.normalization\nM.=.ot.
19a20 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 78 28 29 5c 6e 5c 6e utils.dist0(n)\nM./=.M.max()\n\n
19a40 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 73 5c 6e 5c 6e \n#%%.plot.the.distributions\n\n
19a60 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 29 29 5c 6e pl.figure(1,.figsize=(6.4,.3))\n
19a80 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 6f 6e 73 29 3a for.i.in.range(n_distributions):
19aa0 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 70 6c 2e 74 69 \n....pl.plot(x,.A[:,.i])\npl.ti
19ac0 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 67 68 74 5f 6c tle('Distributions')\npl.tight_l
19ae0 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 6f 6d 70 75 74 ayout()\n\n#%%.barycenter.comput
19b00 61 74 69 6f 6e 5c 6e 5c 6e 61 6c 70 68 61 20 3d 20 30 2e 35 20 20 23 20 30 3c 3d 61 6c 70 68 61 ation\n\nalpha.=.0.5..#.0<=alpha
19b20 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 2d 20 61 6c 70 <=1\nweights.=.np.array([1.-.alp
19b40 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 72 79 5f 6c 32 ha,.alpha])\n\n#.l2bary\nbary_l2
19b60 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 65 72 73 74 65 .=.A.dot(weights)\n\n#.wasserste
19b80 69 6e 5c 6e 72 65 67 20 3d 20 31 65 2d 33 5c 6e 6f 74 2e 74 69 63 28 29 5c 6e 62 61 72 79 5f 77 in\nreg.=.1e-3\not.tic()\nbary_w
19ba0 61 73 73 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 20 4d ass.=.ot.bregman.barycenter(A,.M
19bc0 2c 20 72 65 67 2c 20 77 65 69 67 68 74 73 29 5c 6e 6f 74 2e 74 6f 63 28 29 5c 6e 5c 6e 5c 6e 6f ,.reg,.weights)\not.toc()\n\n\no
19be0 74 2e 74 69 63 28 29 5c 6e 62 61 72 79 5f 77 61 73 73 32 20 3d 20 6f 74 2e 6c 70 2e 62 61 72 79 t.tic()\nbary_wass2.=.ot.lp.bary
19c00 63 65 6e 74 65 72 28 41 2c 20 4d 2c 20 77 65 69 67 68 74 73 2c 20 73 6f 6c 76 65 72 3d 27 69 6e center(A,.M,.weights,.solver='in
19c20 74 65 72 69 6f 72 2d 70 6f 69 6e 74 27 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f 74 terior-point',.verbose=True)\not
19c40 2e 74 6f 63 28 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 63 6c 66 28 29 .toc()\n\npl.figure(2)\npl.clf()
19c60 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 20 69 6e 20 \npl.subplot(2,.1,.1)\nfor.i.in.
19c80 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 20 70 6c 2e range(n_distributions):\n....pl.
19ca0 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 44 69 73 74 plot(x,.A[:,.i])\npl.title('Dist
19cc0 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 20 31 2c 20 ributions')\n\npl.subplot(2,.1,.
19ce0 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 20 6c 61 62 2)\npl.plot(x,.bary_l2,.'r',.lab
19d00 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 73 73 2c 20 el='l2')\npl.plot(x,.bary_wass,.
19d20 27 67 27 2c 20 6c 61 62 65 6c 3d 27 52 65 67 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 'g',.label='Reg.Wasserstein')\np
19d40 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 73 73 32 2c 20 27 62 27 2c 20 6c 61 62 65 6c l.plot(x,.bary_wass2,.'b',.label
19d60 3d 27 4c 50 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c ='LP.Wasserstein')\npl.legend()\
19d80 6e 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 73 27 29 5c 6e 70 6c 2e 74 69 67 npl.title('Barycenters')\npl.tig
19da0 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 72 6f 62 6c 65 6d 73 2e 61 70 70 65 6e 64 28 5b ht_layout()\n\nproblems.append([
19dc0 41 2c 20 5b 62 61 72 79 5f 6c 32 2c 20 62 61 72 79 5f 77 61 73 73 2c 20 62 61 72 79 5f 77 61 73 A,.[bary_l2,.bary_wass,.bary_was
19de0 73 32 5d 5d 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 s2]])".......].....},.....{.....
19e00 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 0a 20 20 20 20 20 .."cell_type":."markdown",......
19e20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a ."metadata":.{},......."source":
19e40 20 5b 0a 20 20 20 20 20 20 20 20 22 44 69 72 61 63 20 44 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d .[........."Dirac.Data\n--------
19e60 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 --\n\n".......].....},.....{....
19e80 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 ..."cell_type":."code",......."e
19ea0 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 xecution_count":.null,......."me
19ec0 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":.
19ee0 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 false.......},......."outputs":.
19f00 5b 5d 2c 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 [],......."source":.[........."#
19f20 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 61 31 20 3d 20 31 2e 30 20 2a 20 28 78 20 3e %%.parameters\n\na1.=.1.0.*.(x.>
19f40 20 31 30 29 20 2a 20 28 78 20 3c 20 35 30 29 5c 6e 61 32 20 3d 20 31 2e 30 20 2a 20 28 78 20 3e .10).*.(x.<.50)\na2.=.1.0.*.(x.>
19f60 20 36 30 29 20 2a 20 28 78 20 3c 20 38 30 29 5c 6e 5c 6e 61 31 20 2f 3d 20 61 31 2e 73 75 6d 28 .60).*.(x.<.80)\n\na1./=.a1.sum(
19f80 29 5c 6e 61 32 20 2f 3d 20 61 32 2e 73 75 6d 28 29 5c 6e 5c 6e 23 20 63 72 65 61 74 69 6e 67 20 )\na2./=.a2.sum()\n\n#.creating.
19fa0 6d 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 matrix.A.containing.all.distribu
19fc0 74 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 tions\nA.=.np.vstack((a1,.a2)).T
19fe0 5c 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 \nn_distributions.=.A.shape[1]\n
1a000 5c 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 \n#.loss.matrix.+.normalization\
1a020 6e 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 nM.=.ot.utils.dist0(n)\nM./=.M.m
1a040 61 78 28 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 ax()\n\n\n#%%.plot.the.distribut
1a060 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 65 3d 28 36 2e ions\n\npl.figure(1,.figsize=(6.
1a080 34 2c 20 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 4,.3))\nfor.i.in.range(n_distrib
1a0a0 75 74 69 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 utions):\n....pl.plot(x,.A[:,.i]
1a0c0 29 5c 6e 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 )\npl.title('Distributions')\npl
1a0e0 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 5c 6e 23 25 25 20 62 61 72 79 63 65 6e .tight_layout()\n\n\n#%%.barycen
1a100 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 5c 6e 5c 6e 61 6c 70 68 61 20 3d 20 30 2e 35 20 20 ter.computation\n\nalpha.=.0.5..
1a120 23 20 30 3c 3d 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 #.0<=alpha<=1\nweights.=.np.arra
1a140 79 28 5b 31 20 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 y([1.-.alpha,.alpha])\n\n#.l2bar
1a160 79 5c 6e 62 61 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 y\nbary_l2.=.A.dot(weights)\n\n#
1a180 20 77 61 73 73 65 72 73 74 65 69 6e 5c 6e 72 65 67 20 3d 20 31 65 2d 33 5c 6e 6f 74 2e 74 69 63 .wasserstein\nreg.=.1e-3\not.tic
1a1a0 28 29 5c 6e 62 61 72 79 5f 77 61 73 73 20 3d 20 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 61 72 79 63 ()\nbary_wass.=.ot.bregman.baryc
1a1c0 65 6e 74 65 72 28 41 2c 20 4d 2c 20 72 65 67 2c 20 77 65 69 67 68 74 73 29 5c 6e 6f 74 2e 74 6f enter(A,.M,.reg,.weights)\not.to
1a1e0 63 28 29 5c 6e 5c 6e 5c 6e 6f 74 2e 74 69 63 28 29 5c 6e 62 61 72 79 5f 77 61 73 73 32 20 3d 20 c()\n\n\not.tic()\nbary_wass2.=.
1a200 6f 74 2e 6c 70 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 20 4d 2c 20 77 65 69 67 68 74 73 2c 20 ot.lp.barycenter(A,.M,.weights,.
1a220 73 6f 6c 76 65 72 3d 27 69 6e 74 65 72 69 6f 72 2d 70 6f 69 6e 74 27 2c 20 76 65 72 62 6f 73 65 solver='interior-point',.verbose
1a240 3d 54 72 75 65 29 5c 6e 6f 74 2e 74 6f 63 28 29 5c 6e 5c 6e 5c 6e 70 72 6f 62 6c 65 6d 73 2e 61 =True)\not.toc()\n\n\nproblems.a
1a260 70 70 65 6e 64 28 5b 41 2c 20 5b 62 61 72 79 5f 6c 32 2c 20 62 61 72 79 5f 77 61 73 73 2c 20 62 ppend([A,.[bary_l2,.bary_wass,.b
1a280 61 72 79 5f 77 61 73 73 32 5d 5d 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c ary_wass2]])\n\npl.figure(2)\npl
1a2a0 2e 63 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 .clf()\npl.subplot(2,.1,.1)\nfor
1a2c0 20 69 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 .i.in.range(n_distributions):\n.
1a2e0 20 20 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 ...pl.plot(x,.A[:,.i])\npl.title
1a300 28 27 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 ('Distributions')\n\npl.subplot(
1a320 32 2c 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 2,.1,.2)\npl.plot(x,.bary_l2,.'r
1a340 27 2c 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 ',.label='l2')\npl.plot(x,.bary_
1a360 77 61 73 73 2c 20 27 67 27 2c 20 6c 61 62 65 6c 3d 27 52 65 67 20 57 61 73 73 65 72 73 74 65 69 wass,.'g',.label='Reg.Wasserstei
1a380 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 73 73 32 2c 20 27 62 27 2c n')\npl.plot(x,.bary_wass2,.'b',
1a3a0 20 6c 61 62 65 6c 3d 27 4c 50 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 6c 65 67 .label='LP.Wasserstein')\npl.leg
1a3c0 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 73 27 29 5c 6e end()\npl.title('Barycenters')\n
1a3e0 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 70 61 72 61 6d 65 74 pl.tight_layout()\n\n#%%.paramet
1a400 65 72 73 5c 6e 5c 6e 61 31 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 6e 29 5c 6e 61 32 20 3d 20 6e 70 ers\n\na1.=.np.zeros(n)\na2.=.np
1a420 2e 7a 65 72 6f 73 28 6e 29 5c 6e 5c 6e 61 31 5b 31 30 5d 20 3d 20 2e 32 35 5c 6e 61 31 5b 32 30 .zeros(n)\n\na1[10].=..25\na1[20
1a440 5d 20 3d 20 2e 35 5c 6e 61 31 5b 33 30 5d 20 3d 20 2e 32 35 5c 6e 61 32 5b 38 30 5d 20 3d 20 31 ].=..5\na1[30].=..25\na2[80].=.1
1a460 5c 6e 5c 6e 5c 6e 61 31 20 2f 3d 20 61 31 2e 73 75 6d 28 29 5c 6e 61 32 20 2f 3d 20 61 32 2e 73 \n\n\na1./=.a1.sum()\na2./=.a2.s
1a480 75 6d 28 29 5c 6e 5c 6e 23 20 63 72 65 61 74 69 6e 67 20 6d 61 74 72 69 78 20 41 20 63 6f 6e 74 um()\n\n#.creating.matrix.A.cont
1a4a0 61 69 6e 69 6e 67 20 61 6c 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 41 20 3d 20 6e 70 aining.all.distributions\nA.=.np
1a4c0 2e 76 73 74 61 63 6b 28 28 61 31 2c 20 61 32 29 29 2e 54 5c 6e 6e 5f 64 69 73 74 72 69 62 75 74 .vstack((a1,.a2)).T\nn_distribut
1a4e0 69 6f 6e 73 20 3d 20 41 2e 73 68 61 70 65 5b 31 5d 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 ions.=.A.shape[1]\n\n#.loss.matr
1a500 69 78 20 2b 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 5c 6e 4d 20 3d 20 6f 74 2e 75 74 69 6c 73 ix.+.normalization\nM.=.ot.utils
1a520 2e 64 69 73 74 30 28 6e 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 5c 6e 5c 6e 5c 6e 23 25 25 .dist0(n)\nM./=.M.max()\n\n\n#%%
1a540 20 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 .plot.the.distributions\n\npl.fi
1a560 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 66 6f 72 20 69 gure(1,.figsize=(6.4,.3))\nfor.i
1a580 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...
1a5a0 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('
1a5c0 44 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 75 74 Distributions')\npl.tight_layout
1a5e0 28 29 5c 6e 5c 6e 5c 6e 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 ()\n\n\n#%%.barycenter.computati
1a600 6f 6e 5c 6e 5c 6e 61 6c 70 68 61 20 3d 20 30 2e 35 20 20 23 20 30 3c 3d 61 6c 70 68 61 3c 3d 31 on\n\nalpha.=.0.5..#.0<=alpha<=1
1a620 5c 6e 77 65 69 67 68 74 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 31 20 2d 20 61 6c 70 68 61 2c \nweights.=.np.array([1.-.alpha,
1a640 20 61 6c 70 68 61 5d 29 5c 6e 5c 6e 23 20 6c 32 62 61 72 79 5c 6e 62 61 72 79 5f 6c 32 20 3d 20 .alpha])\n\n#.l2bary\nbary_l2.=.
1a660 41 2e 64 6f 74 28 77 65 69 67 68 74 73 29 5c 6e 5c 6e 23 20 77 61 73 73 65 72 73 74 65 69 6e 5c A.dot(weights)\n\n#.wasserstein\
1a680 6e 72 65 67 20 3d 20 31 65 2d 33 5c 6e 6f 74 2e 74 69 63 28 29 5c 6e 62 61 72 79 5f 77 61 73 73 nreg.=.1e-3\not.tic()\nbary_wass
1a6a0 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 20 4d 2c 20 72 .=.ot.bregman.barycenter(A,.M,.r
1a6c0 65 67 2c 20 77 65 69 67 68 74 73 29 5c 6e 6f 74 2e 74 6f 63 28 29 5c 6e 5c 6e 5c 6e 6f 74 2e 74 eg,.weights)\not.toc()\n\n\not.t
1a6e0 69 63 28 29 5c 6e 62 61 72 79 5f 77 61 73 73 32 20 3d 20 6f 74 2e 6c 70 2e 62 61 72 79 63 65 6e ic()\nbary_wass2.=.ot.lp.barycen
1a700 74 65 72 28 41 2c 20 4d 2c 20 77 65 69 67 68 74 73 2c 20 73 6f 6c 76 65 72 3d 27 69 6e 74 65 72 ter(A,.M,.weights,.solver='inter
1a720 69 6f 72 2d 70 6f 69 6e 74 27 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f 74 2e 74 6f ior-point',.verbose=True)\not.to
1a740 63 28 29 5c 6e 5c 6e 5c 6e 70 72 6f 62 6c 65 6d 73 2e 61 70 70 65 6e 64 28 5b 41 2c 20 5b 62 61 c()\n\n\nproblems.append([A,.[ba
1a760 72 79 5f 6c 32 2c 20 62 61 72 79 5f 77 61 73 73 2c 20 62 61 72 79 5f 77 61 73 73 32 5d 5d 29 5c ry_l2,.bary_wass,.bary_wass2]])\
1a780 6e 5c 6e 70 6c 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 n\npl.figure(2)\npl.clf()\npl.su
1a7a0 62 70 6c 6f 74 28 32 2c 20 31 2c 20 31 29 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e bplot(2,.1,.1)\nfor.i.in.range(n
1a7c0 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 29 3a 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c _distributions):\n....pl.plot(x,
1a7e0 20 41 5b 3a 2c 20 69 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f .A[:,.i])\npl.title('Distributio
1a800 6e 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 32 29 5c 6e 70 6c 2e ns')\n\npl.subplot(2,.1,.2)\npl.
1a820 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 6c 32 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 6c 32 27 plot(x,.bary_l2,.'r',.label='l2'
1a840 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 73 73 2c 20 27 67 27 2c 20 6c 61 )\npl.plot(x,.bary_wass,.'g',.la
1a860 62 65 6c 3d 27 52 65 67 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 bel='Reg.Wasserstein')\npl.plot(
1a880 78 2c 20 62 61 72 79 5f 77 61 73 73 32 2c 20 27 62 27 2c 20 6c 61 62 65 6c 3d 27 4c 50 20 57 61 x,.bary_wass2,.'b',.label='LP.Wa
1a8a0 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 70 6c 2e 74 69 74 sserstein')\npl.legend()\npl.tit
1a8c0 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 73 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f le('Barycenters')\npl.tight_layo
1a8e0 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 ut()".......].....},.....{......
1a900 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 0a 20 20 20 20 20 20 ."cell_type":."markdown",.......
1a920 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 "metadata":.{},......."source":.
1a940 5b 0a 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 20 66 69 67 75 72 65 5c 6e 2d 2d 2d 2d 2d 2d 2d [........."Final.figure\n-------
1a960 2d 2d 2d 2d 2d 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 -----\n\n\n".......].....},.....
1a980 7b 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 0a 20 20 20 {......."cell_type":."code",....
1a9a0 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 0a 20 20 20 20 ..."execution_count":.null,.....
1a9c0 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
1a9e0 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 ed":.false.......},......."outpu
1aa00 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 ts":.[],......."source":.[......
1aa20 20 20 20 22 23 25 25 20 70 6c 6f 74 5c 6e 5c 6e 6e 62 6d 20 3d 20 6c 65 6e 28 70 72 6f 62 6c 65 ..."#%%.plot\n\nnbm.=.len(proble
1aa40 6d 73 29 5c 6e 6e 62 6d 32 20 3d 20 28 6e 62 6d 20 2f 2f 20 32 29 5c 6e 5c 6e 5c 6e 70 6c 2e 66 ms)\nnbm2.=.(nbm.//.2)\n\n\npl.f
1aa60 69 67 75 72 65 28 32 2c 20 28 32 30 2c 20 36 29 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 5c 6e 66 igure(2,.(20,.6))\npl.clf()\n\nf
1aa80 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 62 6d 29 3a 5c 6e 5c 6e 20 20 20 20 41 20 3d 20 70 or.i.in.range(nbm):\n\n....A.=.p
1aaa0 72 6f 62 6c 65 6d 73 5b 69 5d 5b 30 5d 5c 6e 20 20 20 20 62 61 72 79 5f 6c 32 20 3d 20 70 72 6f roblems[i][0]\n....bary_l2.=.pro
1aac0 62 6c 65 6d 73 5b 69 5d 5b 31 5d 5b 30 5d 5c 6e 20 20 20 20 62 61 72 79 5f 77 61 73 73 20 3d 20 blems[i][1][0]\n....bary_wass.=.
1aae0 70 72 6f 62 6c 65 6d 73 5b 69 5d 5b 31 5d 5b 31 5d 5c 6e 20 20 20 20 62 61 72 79 5f 77 61 73 73 problems[i][1][1]\n....bary_wass
1ab00 32 20 3d 20 70 72 6f 62 6c 65 6d 73 5b 69 5d 5b 31 5d 5b 32 5d 5c 6e 5c 6e 20 20 20 20 70 6c 2e 2.=.problems[i][1][2]\n\n....pl.
1ab20 73 75 62 70 6c 6f 74 28 32 2c 20 6e 62 6d 2c 20 31 20 2b 20 69 29 5c 6e 20 20 20 20 66 6f 72 20 subplot(2,.nbm,.1.+.i)\n....for.
1ab40 6a 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 j.in.range(n_distributions):\n..
1ab60 20 20 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 41 5b 3a 2c 20 6a 5d 29 5c 6e 20 20 20 20 69 ......pl.plot(x,.A[:,.j])\n....i
1ab80 66 20 69 20 3d 3d 20 6e 62 6d 32 3a 5c 6e 20 20 20 20 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 f.i.==.nbm2:\n........pl.title('
1aba0 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 20 20 20 20 70 6c 2e 78 74 69 63 6b 73 28 28 Distributions')\n....pl.xticks((
1abc0 29 29 5c 6e 20 20 20 20 70 6c 2e 79 74 69 63 6b 73 28 28 29 29 5c 6e 5c 6e 20 20 20 20 70 6c 2e ))\n....pl.yticks(())\n\n....pl.
1abe0 73 75 62 70 6c 6f 74 28 32 2c 20 6e 62 6d 2c 20 31 20 2b 20 69 20 2b 20 6e 62 6d 29 5c 6e 5c 6e subplot(2,.nbm,.1.+.i.+.nbm)\n\n
1ac00 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 6c 32 2c 20 27 72 27 2c 20 6c 61 62 ....pl.plot(x,.bary_l2,.'r',.lab
1ac20 65 6c 3d 27 4c 32 20 28 45 75 63 6c 69 64 65 61 6e 29 27 29 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f el='L2.(Euclidean)')\n....pl.plo
1ac40 74 28 78 2c 20 62 61 72 79 5f 77 61 73 73 2c 20 27 67 27 2c 20 6c 61 62 65 6c 3d 27 52 65 67 20 t(x,.bary_wass,.'g',.label='Reg.
1ac60 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 Wasserstein')\n....pl.plot(x,.ba
1ac80 72 79 5f 77 61 73 73 32 2c 20 27 62 27 2c 20 6c 61 62 65 6c 3d 27 4c 50 20 57 61 73 73 65 72 73 ry_wass2,.'b',.label='LP.Wassers
1aca0 74 65 69 6e 27 29 5c 6e 20 20 20 20 69 66 20 69 20 3d 3d 20 6e 62 6d 20 2d 20 31 3a 5c 6e 20 20 tein')\n....if.i.==.nbm.-.1:\n..
1acc0 20 20 20 20 20 20 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 20 20 20 20 69 66 20 69 20 3d 3d 20 6e ......pl.legend()\n....if.i.==.n
1ace0 62 6d 32 3a 5c 6e 20 20 20 20 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 bm2:\n........pl.title('Barycent
1ad00 65 72 73 27 29 5c 6e 5c 6e 20 20 20 20 70 6c 2e 78 74 69 63 6b 73 28 28 29 29 5c 6e 20 20 20 20 ers')\n\n....pl.xticks(())\n....
1ad20 70 6c 2e 79 74 69 63 6b 73 28 28 29 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d pl.yticks(())".......].....}...]
1ad40 2c 0a 20 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 ,..."metadata":.{....."kernelspe
1ad60 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 22 3a 20 22 50 79 74 c":.{......."display_name":."Pyt
1ad80 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f hon.3",......."language":."pytho
1ada0 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 n",......."name":."python3".....
1adc0 7d 2c 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":.{.......
1ade0 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 6e 61 "codemirror_mode":.{........."na
1ae00 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e me":."ipython",........."version
1ae20 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 ":.3.......},......."file_extens
1ae40 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 ion":.".py",......."mimetype":."
1ae60 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 text/x-python",......."name":."p
1ae80 79 74 68 6f 6e 22 2c 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 ython",......."nbconvert_exporte
1aea0 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 r":."python",......."pygments_le
1aec0 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e xer":."ipython3",......."version
1aee0 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 ":."3.6.5".....}...},..."nbforma
1af00 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b t":.4,..."nbformat_minor":.0.}PK
1af20 03 04 14 00 00 00 00 00 89 74 d9 4e 43 f7 2c fd 72 13 00 00 72 13 00 00 18 00 00 00 70 6c 6f 74 .........t.NC.,.r...r.......plot
1af40 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a _OT_2D_samples.ipynb{..."cells":
1af60 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 .[.....{......."cell_type":."cod
1af80 65 22 2c 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 e",......."execution_count":.nul
1afa0 6c 2c 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 l,......."metadata":.{........."
1afc0 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 2c 0a 20 20 20 20 20 collapsed":.false.......},......
1afe0 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 ."outputs":.[],......."source":.
1b000 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"..
1b020 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f .....].....},.....{......."cell_
1b040 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 type":."markdown",......."metada
1b060 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 ta":.{},......."source":.[......
1b080 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 62 65 74 ..."\n#.2D.Optimal.transport.bet
1b0a0 77 65 65 6e 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 ween.empirical.distributions\n\n
1b0c0 5c 6e 49 6c 6c 75 73 74 72 61 74 69 6f 6e 20 6f 66 20 32 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 \nIllustration.of.2D.optimal.tra
1b0e0 6e 73 70 6f 72 74 20 62 65 74 77 65 65 6e 20 64 69 73 63 72 69 62 75 74 69 6f 6e 73 20 74 68 61 nsport.between.discributions.tha
1b100 74 20 61 72 65 20 77 65 69 67 68 74 65 64 5c 6e 73 75 6d 20 6f 66 20 64 69 72 61 63 73 2e 20 54 t.are.weighted\nsum.of.diracs..T
1b120 68 65 20 4f 54 20 6d 61 74 72 69 78 20 69 73 20 70 6c 6f 74 74 65 64 20 77 69 74 68 20 74 68 65 he.OT.matrix.is.plotted.with.the
1b140 20 73 61 6d 70 6c 65 73 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a .samples.\n\n\n".......].....},.
1b160 20 20 20 20 7b 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 ....{......."cell_type":."code",
1b180 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 0a ......."execution_count":.null,.
1b1a0 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 6c ......"metadata":.{........."col
1b1c0 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
1b1e0 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
1b200 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 61 6d 61 72 79 20 3c ......."#.Author:.Remi.Flamary.<
1b220 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 20 20 20 remi.flamary@unice.fr>\n#.......
1b240 20 20 4b 69 6c 69 61 6e 20 46 61 74 72 61 73 20 3c 6b 69 6c 69 61 6e 2e 66 61 74 72 61 73 40 69 ..Kilian.Fatras.<kilian.fatras@i
1b260 72 69 73 61 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 risa.fr>\n#\n#.License:.MIT.Lice
1b280 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 6d 70 6f 72 nse\n\nimport.numpy.as.np\nimpor
1b2a0 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 72 74 t.matplotlib.pylab.as.pl\nimport
1b2c0 20 6f 74 5c 6e 69 6d 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 .ot\nimport.ot.plot".......]....
1b2e0 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 .},.....{......."cell_type":."ma
1b300 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 rkdown",......."metadata":.{},..
1b320 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 61 ....."source":.[........."Genera
1b340 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 te.data\n-------------\n\n".....
1b360 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 ..].....},.....{......."cell_typ
1b380 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 e":."code",......."execution_cou
1b3a0 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 nt":.null,......."metadata":.{..
1b3c0 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.......
1b3e0 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 },......."outputs":.[],......."s
1b400 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 70 61 72 61 6d 65 74 65 72 ource":.[........."#%%.parameter
1b420 73 20 61 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 s.and.data.generation\n\nn.=.50.
1b440 20 23 20 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 .#.nb.samples\n\nmu_s.=.np.array
1b460 28 5b 30 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 ([0,.0])\ncov_s.=.np.array([[1,.
1b480 30 5d 2c 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 0],.[0,.1]])\n\nmu_t.=.np.array(
1b4a0 5b 34 2c 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 [4,.4])\ncov_t.=.np.array([[1,.-
1b4c0 2e 38 5d 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 .8],.[-.8,.1]])\n\nxs.=.ot.datas
1b4e0 65 74 73 2e 6d 61 6b 65 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 20 6d 75 5f ets.make_2D_samples_gauss(n,.mu_
1b500 73 2c 20 63 6f 76 5f 73 29 5c 6e 78 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 s,.cov_s)\nxt.=.ot.datasets.make
1b520 5f 32 44 5f 73 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 _2D_samples_gauss(n,.mu_t,.cov_t
1b540 29 5c 6e 5c 6e 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 )\n\na,.b.=.np.ones((n,))./.n,.n
1b560 70 2e 6f 6e 65 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 p.ones((n,))./.n..#.uniform.dist
1b580 72 69 62 75 74 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 ribution.on.samples\n\n#.loss.ma
1b5a0 74 72 69 78 5c 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 trix\nM.=.ot.dist(xs,.xt)\nM./=.
1b5c0 4d 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 M.max()".......].....},.....{...
1b5e0 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 0a 20 20 20 ...."cell_type":."markdown",....
1b600 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ..."metadata":.{},......."source
1b620 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d ":.[........."Plot.data\n-------
1b640 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 --\n\n".......].....},.....{....
1b660 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 ..."cell_type":."code",......."e
1b680 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 xecution_count":.null,......."me
1b6a0 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":.
1b6c0 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 false.......},......."outputs":.
1b6e0 5b 5d 2c 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 [],......."source":.[........."#
1b700 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 29 5c %%.plot.samples\n\npl.figure(1)\
1b720 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 31 5d 2c 20 27 2b 62 npl.plot(xs[:,.0],.xs[:,.1],.'+b
1b740 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 70 ',.label='Source.samples')\npl.p
1b760 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 61 lot(xt[:,.0],.xt[:,.1],.'xr',.la
1b780 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 6c 65 67 65 6e 64 bel='Target.samples')\npl.legend
1b7a0 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 64 20 74 61 (loc=0)\npl.title('Source.and.ta
1b7c0 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 6c 2e 66 69 67 75 72 rget.distributions')\n\npl.figur
1b7e0 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 6f 6c 61 74 69 6f 6e e(2)\npl.imshow(M,.interpolation
1b800 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 73 74 20 6d 61 74 72 ='nearest')\npl.title('Cost.matr
1b820 69 78 20 4d 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 ix.M')".......].....},.....{....
1b840 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 0a 20 20 20 20 ..."cell_type":."markdown",.....
1b860 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 .."metadata":.{},......."source"
1b880 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 45 4d 44 5c 6e 2d 2d 2d 2d 2d 2d :.[........."Compute.EMD\n------
1b8a0 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a -----\n\n".......].....},.....{.
1b8c0 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 0a 20 20 20 20 20 ......"cell_type":."code",......
1b8e0 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 0a 20 20 20 20 20 20 ."execution_count":.null,.......
1b900 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
1b920 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 ":.false.......},......."outputs
1b940 22 3a 20 5b 5d 2c 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":.[........
1b960 20 22 23 25 25 20 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 ."#%%.EMD\n\nG0.=.ot.emd(a,.b,.M
1b980 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c )\n\npl.figure(3)\npl.imshow(G0,
1b9a0 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 70 6c 2e 74 69 .interpolation='nearest')\npl.ti
1b9c0 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 tle('OT.matrix.G0')\n\npl.figure
1b9e0 28 34 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 61 74 28 (4)\not.plot.plot2D_samples_mat(
1ba00 78 73 2c 20 78 74 2c 20 47 30 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e 70 xs,.xt,.G0,.c=[.5,..5,.1])\npl.p
1ba20 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 6c 61 lot(xs[:,.0],.xs[:,.1],.'+b',.la
1ba40 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 70 6c 6f 74 28 78 bel='Source.samples')\npl.plot(x
1ba60 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 61 62 65 6c 3d 27 t[:,.0],.xt[:,.1],.'xr',.label='
1ba80 54 61 72 67 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 Target.samples')\npl.legend(loc=
1baa0 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 77 69 74 68 20 73 61 6d 0)\npl.title('OT.matrix.with.sam
1bac0 70 6c 65 73 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 ples')".......].....},.....{....
1bae0 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 0a 20 20 20 20 ..."cell_type":."markdown",.....
1bb00 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 .."metadata":.{},......."source"
1bb20 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 53 69 6e 6b 68 6f 72 6e 5c 6e 2d :.[........."Compute.Sinkhorn\n-
1bb40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 ---------------\n\n".......]....
1bb60 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f .},.....{......."cell_type":."co
1bb80 64 65 22 2c 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 de",......."execution_count":.nu
1bba0 6c 6c 2c 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 ll,......."metadata":.{.........
1bbc0 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 2c 0a 20 20 20 20 "collapsed":.false.......},.....
1bbe0 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a .."outputs":.[],......."source":
1bc00 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 73 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 23 20 72 65 .[........."#%%.sinkhorn\n\n#.re
1bc20 67 20 74 65 72 6d 5c 6e 6c 61 6d 62 64 20 3d 20 31 65 2d 33 5c 6e 5c 6e 47 73 20 3d 20 6f 74 2e g.term\nlambd.=.1e-3\n\nGs.=.ot.
1bc40 73 69 6e 6b 68 6f 72 6e 28 61 2c 20 62 2c 20 4d 2c 20 6c 61 6d 62 64 29 5c 6e 5c 6e 70 6c 2e 66 sinkhorn(a,.b,.M,.lambd)\n\npl.f
1bc60 69 67 75 72 65 28 35 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 73 2c 20 69 6e 74 65 72 70 6f 6c igure(5)\npl.imshow(Gs,.interpol
1bc80 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 4f 54 20 6d ation='nearest')\npl.title('OT.m
1bca0 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 36 29 atrix.sinkhorn')\n\npl.figure(6)
1bcc0 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 61 74 28 78 73 2c \not.plot.plot2D_samples_mat(xs,
1bce0 20 78 74 2c 20 47 73 2c 20 63 6f 6c 6f 72 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e .xt,.Gs,.color=[.5,..5,.1])\npl.
1bd00 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 6c plot(xs[:,.0],.xs[:,.1],.'+b',.l
1bd20 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 70 6c 6f 74 28 abel='Source.samples')\npl.plot(
1bd40 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 61 62 65 6c 3d xt[:,.0],.xt[:,.1],.'xr',.label=
1bd60 27 54 61 72 67 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 'Target.samples')\npl.legend(loc
1bd80 3d 30 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 =0)\npl.title('OT.matrix.Sinkhor
1bda0 6e 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 n.with.samples')\n\npl.show()"..
1bdc0 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f .....].....},.....{......."cell_
1bde0 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 type":."markdown",......."metada
1be00 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 ta":.{},......."source":.[......
1be20 20 20 20 22 45 6d 70 72 69 72 69 63 61 6c 20 53 69 6e 6b 68 6f 72 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d ..."Emprirical.Sinkhorn\n-------
1be40 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 ---------\n\n".......].....},...
1be60 20 20 7b 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 0a 20 ..{......."cell_type":."code",..
1be80 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 0a 20 20 ....."execution_count":.null,...
1bea0 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 61 ...."metadata":.{........."colla
1bec0 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 psed":.false.......},......."out
1bee0 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 puts":.[],......."source":.[....
1bf00 20 20 20 20 20 22 23 25 25 20 73 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 23 20 72 65 67 20 74 65 72 6d ....."#%%.sinkhorn\n\n#.reg.term
1bf20 5c 6e 6c 61 6d 62 64 20 3d 20 31 65 2d 33 5c 6e 5c 6e 47 65 73 20 3d 20 6f 74 2e 62 72 65 67 6d \nlambd.=.1e-3\n\nGes.=.ot.bregm
1bf40 61 6e 2e 65 6d 70 69 72 69 63 61 6c 5f 73 69 6e 6b 68 6f 72 6e 28 78 73 2c 20 78 74 2c 20 6c 61 an.empirical_sinkhorn(xs,.xt,.la
1bf60 6d 62 64 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 37 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 mbd)\n\npl.figure(7)\npl.imshow(
1bf80 47 65 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 29 5c 6e 70 Ges,.interpolation='nearest')\np
1bfa0 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 65 6d 70 69 72 69 63 61 6c 20 73 69 6e l.title('OT.matrix.empirical.sin
1bfc0 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 38 29 5c 6e 6f 74 2e 70 6c 6f 74 khorn')\n\npl.figure(8)\not.plot
1bfe0 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 65 73 2c .plot2D_samples_mat(xs,.xt,.Ges,
1c000 20 63 6f 6c 6f 72 3d 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 .color=[.5,..5,.1])\npl.plot(xs[
1c020 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 6f :,.0],.xs[:,.1],.'+b',.label='So
1c040 75 72 63 65 20 73 61 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 urce.samples')\npl.plot(xt[:,.0]
1c060 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 72 67 65 74 20 ,.xt[:,.1],.'xr',.label='Target.
1c080 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 2e samples')\npl.legend(loc=0)\npl.
1c0a0 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 20 66 72 6f 6d 20 73 title('OT.matrix.Sinkhorn.from.s
1c0c0 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 amples')\n\npl.show()".......]..
1c0e0 20 20 20 7d 0a 20 20 5d 2c 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
1c100 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
1c120 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 e":."Python.3",......."language"
1c140 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f :."python",......."name":."pytho
1c160 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 n3".....},....."language_info":.
1c180 7b 0a 20 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 {......."codemirror_mode":.{....
1c1a0 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 ....."name":."ipython",.........
1c1c0 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c "version":.3.......},......."fil
1c1e0 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 e_extension":.".py",......."mime
1c200 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e type":."text/x-python",......."n
1c220 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 ame":."python",......."nbconvert
1c240 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 _exporter":."python",......."pyg
1c260 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 ments_lexer":."ipython3",.......
1c280 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 38 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 "version":."3.6.8".....}...},...
1c2a0 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 "nbformat":.4,..."nbformat_minor
1c2c0 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 2d 60 cb 4c b5 c3 fd 1f 0a 15 00 00 0a 15 00 00 ":.0.}PK........-`.L............
1c2e0 1e 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 6c 69 6e 65 61 72 5f 6d 61 70 70 69 6e 67 2e 69 70 79 ....plot_otda_linear_mapping.ipy
1c300 6e 62 7b 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 63 65 nb{..."cells":.[.....{......."ce
1c320 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 ll_type":."code",......."executi
1c340 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 on_count":.null,......."metadata
1c360 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.
1c380 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 ......},......."outputs":.[],...
1c3a0 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
1c3c0 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 tlib.inline".......].....},.....
1c3e0 7b 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",
1c400 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f ......."metadata":.{},......."so
1c420 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4c 69 6e 65 61 72 20 4f 54 20 urce":.[........."\n#.Linear.OT.
1c440 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 5c 6e 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 mapping.estimation\n\n\n\n\n"...
1c460 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 ....].....},.....{......."cell_t
1c480 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 ype":."code",......."execution_c
1c4a0 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ount":.null,......."metadata":.{
1c4c0 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.....
1c4e0 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 ..},......."outputs":.[],.......
1c500 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 20 52 "source":.[........."#.Author:.R
1c520 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.
1c540 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 5c 6e fr>\n#\n#.License:.MIT.License\n
1c560 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 70 79 6c \nimport.numpy.as.np\nimport.pyl
1c580 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 0a 20 20 20 ab.as.pl\nimport.ot".......]....
1c5a0 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 .},.....{......."cell_type":."ma
1c5c0 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 rkdown",......."metadata":.{},..
1c5e0 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 61 ....."source":.[........."Genera
1c600 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 te.data\n-------------\n\n".....
1c620 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 ..].....},.....{......."cell_typ
1c640 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 e":."code",......."execution_cou
1c660 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 nt":.null,......."metadata":.{..
1c680 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.......
1c6a0 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 },......."outputs":.[],......."s
1c6c0 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6e 20 3d 20 31 30 30 30 5c 6e 64 20 3d ource":.[........."n.=.1000\nd.=
1c6e0 20 32 5c 6e 73 69 67 6d 61 20 3d 20 2e 31 5c 6e 5c 6e 23 20 73 6f 75 72 63 65 20 73 61 6d 70 6c .2\nsigma.=..1\n\n#.source.sampl
1c700 65 73 5c 6e 61 6e 67 6c 65 73 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 28 6e 2c 20 31 es\nangles.=.np.random.rand(n,.1
1c720 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 5c 6e 78 73 20 3d 20 6e 70 2e 63 6f 6e 63 61 74 65 6e 61 ).*.2.*.np.pi\nxs.=.np.concatena
1c740 74 65 28 28 6e 70 2e 73 69 6e 28 61 6e 67 6c 65 73 29 2c 20 6e 70 2e 63 6f 73 28 61 6e 67 6c 65 te((np.sin(angles),.np.cos(angle
1c760 73 29 29 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 78 69 73 3d 31 s)),\n....................axis=1
1c780 29 20 2b 20 73 69 67 6d 61 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 32 ).+.sigma.*.np.random.randn(n,.2
1c7a0 29 5c 6e 78 73 5b 3a 6e 20 2f 2f 20 32 2c 20 31 5d 20 2b 3d 20 32 5c 6e 5c 6e 5c 6e 23 20 74 61 )\nxs[:n.//.2,.1].+=.2\n\n\n#.ta
1c7c0 72 67 65 74 20 73 61 6d 70 6c 65 73 5c 6e 61 6e 67 6c 65 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d rget.samples\nanglet.=.np.random
1c7e0 2e 72 61 6e 64 28 6e 2c 20 31 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 5c 6e 78 74 20 3d 20 6e 70 .rand(n,.1).*.2.*.np.pi\nxt.=.np
1c800 2e 63 6f 6e 63 61 74 65 6e 61 74 65 28 28 6e 70 2e 73 69 6e 28 61 6e 67 6c 65 74 29 2c 20 6e 70 .concatenate((np.sin(anglet),.np
1c820 2e 63 6f 73 28 61 6e 67 6c 65 74 29 29 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .cos(anglet)),\n................
1c840 20 20 20 20 61 78 69 73 3d 31 29 20 2b 20 73 69 67 6d 61 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e ....axis=1).+.sigma.*.np.random.
1c860 72 61 6e 64 6e 28 6e 2c 20 32 29 5c 6e 78 74 5b 3a 6e 20 2f 2f 20 32 2c 20 31 5d 20 2b 3d 20 32 randn(n,.2)\nxt[:n.//.2,.1].+=.2
1c880 5c 6e 5c 6e 5c 6e 41 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 5b 31 2e 35 2c 20 2e 37 5d 2c 20 5b \n\n\nA.=.np.array([[1.5,..7],.[
1c8a0 2e 37 2c 20 31 2e 35 5d 5d 29 5c 6e 62 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 5b 34 2c 20 32 5d .7,.1.5]])\nb.=.np.array([[4,.2]
1c8c0 5d 29 5c 6e 78 74 20 3d 20 78 74 2e 64 6f 74 28 41 29 20 2b 20 62 22 0a 20 20 20 20 20 20 5d 0a ])\nxt.=.xt.dot(A).+.b".......].
1c8e0 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ....},.....{......."cell_type":.
1c900 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d "markdown",......."metadata":.{}
1c920 2c 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 50 6c 6f ,......."source":.[........."Plo
1c940 74 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 t.data\n---------\n\n".......]..
1c960 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
1c980 63 6f 64 65 22 2c 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 code",......."execution_count":.
1c9a0 6e 75 6c 6c 2c 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 null,......."metadata":.{.......
1c9c0 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 2c 0a 20 20 .."collapsed":.false.......},...
1c9e0 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ...."outputs":.[],......."source
1ca00 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 28 35 2c 20 35 ":.[........."pl.figure(1,.(5,.5
1ca20 29 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 31 5d 2c 20 ))\npl.plot(xs[:,.0],.xs[:,.1],.
1ca40 27 2b 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 31 5d '+')\npl.plot(xt[:,.0],.xt[:,.1]
1ca60 2c 20 27 6f 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 ,.'o')".......].....},.....{....
1ca80 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 0a 20 20 20 20 ..."cell_type":."markdown",.....
1caa0 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 .."metadata":.{},......."source"
1cac0 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 45 73 74 69 6d 61 74 65 20 6c 69 6e 65 61 72 20 6d 61 70 :.[........."Estimate.linear.map
1cae0 70 69 6e 67 20 61 6e 64 20 74 72 61 6e 73 70 6f 72 74 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ping.and.transport\n------------
1cb00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 -------------------------\n\n"..
1cb20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f .....].....},.....{......."cell_
1cb40 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f type":."code",......."execution_
1cb60 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 count":.null,......."metadata":.
1cb80 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....
1cba0 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 ...},......."outputs":.[],......
1cbc0 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 41 65 2c 20 62 65 20 3d 20 6f ."source":.[........."Ae,.be.=.o
1cbe0 74 2e 64 61 2e 4f 54 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 28 78 73 2c 20 78 74 29 5c 6e t.da.OT_mapping_linear(xs,.xt)\n
1cc00 5c 6e 78 73 74 20 3d 20 78 73 2e 64 6f 74 28 41 65 29 20 2b 20 62 65 22 0a 20 20 20 20 20 20 5d \nxst.=.xs.dot(Ae).+.be".......]
1cc20 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
1cc40 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ."markdown",......."metadata":.{
1cc60 7d 2c 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 50 6c },......."source":.[........."Pl
1cc80 6f 74 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d ot.transported.samples\n--------
1cca0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 ----------------\n\n".......]...
1ccc0 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 ..},.....{......."cell_type":."c
1cce0 6f 64 65 22 2c 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 ode",......."execution_count":.n
1cd00 75 6c 6c 2c 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 ull,......."metadata":.{........
1cd20 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 2c 0a 20 20 20 ."collapsed":.false.......},....
1cd40 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 ..."outputs":.[],......."source"
1cd60 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 28 35 2c 20 35 29 :.[........."pl.figure(1,.(5,.5)
1cd80 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 )\npl.clf()\npl.plot(xs[:,.0],.x
1cda0 73 5b 3a 2c 20 31 5d 2c 20 27 2b 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c s[:,.1],.'+')\npl.plot(xt[:,.0],
1cdc0 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 6f 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 74 5b 3a 2c 20 .xt[:,.1],.'o')\npl.plot(xst[:,.
1cde0 30 5d 2c 20 78 73 74 5b 3a 2c 20 31 5d 2c 20 27 2b 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 0],.xst[:,.1],.'+')\n\npl.show()
1ce00 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 ".......].....},.....{......."ce
1ce20 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 ll_type":."markdown",......."met
1ce40 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 adata":.{},......."source":.[...
1ce60 20 20 20 20 20 20 22 4c 6f 61 64 20 69 6d 61 67 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d ......"Load.image.data\n--------
1ce80 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 -------\n\n".......].....},.....
1cea0 7b 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 0a 20 20 20 {......."cell_type":."code",....
1cec0 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 0a 20 20 20 20 ..."execution_count":.null,.....
1cee0 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
1cf00 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 ed":.false.......},......."outpu
1cf20 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 ts":.[],......."source":.[......
1cf40 20 20 20 22 64 65 66 20 69 6d 32 6d 61 74 28 49 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f ..."def.im2mat(I):\n....\"\"\"Co
1cf60 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 6f 6e 65 20 nverts.and.image.to.matrix.(one.
1cf80 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 65 74 75 72 pixel.per.line)\"\"\"\n....retur
1cfa0 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 73 68 61 70 n.I.reshape((I.shape[0].*.I.shap
1cfc0 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 6d 61 74 32 e[1],.I.shape[2]))\n\n\ndef.mat2
1cfe0 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 76 65 72 74 im(X,.shape):\n....\"\"\"Convert
1d000 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 22 5c s.back.a.matrix.to.an.image\"\"\
1d020 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 5c 6e "\n....return.X.reshape(shape)\n
1d040 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
1d060 70 2e 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 5c 6e 5c 6e 5c 6e 23 20 4c 6f 61 64 69 6e 67 20 69 p.clip(I,.0,.1)\n\n\n#.Loading.i
1d080 6d 61 67 65 73 5c 6e 49 31 20 3d 20 70 6c 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f mages\nI1.=.pl.imread('../data/o
1d0a0 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 cean_day.jpg').astype(np.float64
1d0c0 29 20 2f 20 32 35 36 5c 6e 49 32 20 3d 20 70 6c 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 )./.256\nI2.=.pl.imread('../data
1d0e0 2f 6f 63 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 /ocean_sunset.jpg').astype(np.fl
1d100 6f 61 74 36 34 29 20 2f 20 32 35 36 5c 6e 5c 6e 5c 6e 58 31 20 3d 20 69 6d 32 6d 61 74 28 49 31 oat64)./.256\n\n\nX1.=.im2mat(I1
1d120 29 5c 6e 58 32 20 3d 20 69 6d 32 6d 61 74 28 49 32 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 )\nX2.=.im2mat(I2)".......].....
1d140 7d 2c 0a 20 20 20 20 7b 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
1d160 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 kdown",......."metadata":.{},...
1d180 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 45 73 74 69 6d 61 74 ...."source":.[........."Estimat
1d1a0 65 20 6d 61 70 70 69 6e 67 20 61 6e 64 20 61 64 61 70 74 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d e.mapping.and.adapt\n-----------
1d1c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 -----------------\n\n".......]..
1d1e0 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
1d200 63 6f 64 65 22 2c 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 code",......."execution_count":.
1d220 6e 75 6c 6c 2c 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 null,......."metadata":.{.......
1d240 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 2c 0a 20 20 .."collapsed":.false.......},...
1d260 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ...."outputs":.[],......."source
1d280 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6d 61 70 70 69 6e 67 20 3d 20 6f 74 2e 64 61 2e 4c 69 ":.[........."mapping.=.ot.da.Li
1d2a0 6e 65 61 72 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e 5c 6e 6d 61 70 70 69 6e 67 2e 66 69 74 28 58 nearTransport()\n\nmapping.fit(X
1d2c0 73 3d 58 31 2c 20 58 74 3d 58 32 29 5c 6e 5c 6e 5c 6e 78 73 74 20 3d 20 6d 61 70 70 69 6e 67 2e s=X1,.Xt=X2)\n\n\nxst.=.mapping.
1d2e0 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 78 74 73 20 3d 20 6d 61 70 70 69 6e 67 2e transform(Xs=X1)\nxts.=.mapping.
1d300 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 74 20 inverse_transform(Xt=X2)\n\nI1t.
1d320 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 78 73 74 2c 20 49 31 2e 73 68 61 70 65 29 29 5c =.minmax(mat2im(xst,.I1.shape))\
1d340 6e 49 32 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 78 74 73 2c 20 49 32 2e 73 68 61 nI2t.=.minmax(mat2im(xts,.I2.sha
1d360 70 65 29 29 5c 6e 5c 6e 23 20 25 25 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 pe))\n\n#.%%".......].....},....
1d380 20 7b 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"
1d3a0 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 ,......."metadata":.{},......."s
1d3c0 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 74 72 61 6e 73 66 6f 72 ource":.[........."Plot.transfor
1d3e0 6d 65 64 20 69 6d 61 67 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d med.images\n--------------------
1d400 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 ---\n\n".......].....},.....{...
1d420 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 ...."cell_type":."code",......."
1d440 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d execution_count":.null,......."m
1d460 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":
1d480 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a .false.......},......."outputs":
1d4a0 20 5b 5d 2c 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 .[],......."source":.[........."
1d4c0 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 37 29 29 5c 6e 5c pl.figure(2,.figsize=(10,.7))\n\
1d4e0 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 npl.subplot(2,.2,.1)\npl.imshow(
1d500 49 31 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 I1)\npl.axis('off')\npl.title('I
1d520 6d 2e 20 31 27 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 m..1')\n\npl.subplot(2,.2,.2)\np
1d540 6c 2e 69 6d 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 l.imshow(I2)\npl.axis('off')\npl
1d560 2e 74 69 74 6c 65 28 27 49 6d 2e 20 32 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c .title('Im..2')\n\npl.subplot(2,
1d580 20 32 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 29 5c 6e 70 6c 2e 61 78 69 73 28 .2,.3)\npl.imshow(I1t)\npl.axis(
1d5a0 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 20 49 6d 2e 20 31 27 'off')\npl.title('Mapping.Im..1'
1d5c0 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 34 29 5c 6e 70 6c 2e 69 6d 73 )\n\npl.subplot(2,.2,.4)\npl.ims
1d5e0 68 6f 77 28 49 32 74 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 how(I2t)\npl.axis('off')\npl.tit
1d600 6c 65 28 27 49 6e 76 65 72 73 65 20 6d 61 70 70 69 6e 67 20 49 6d 2e 20 32 27 29 22 0a 20 20 20 le('Inverse.mapping.Im..2')"....
1d620 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a ...].....}...],..."metadata":.{.
1d640 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
1d660 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e ay_name":."Python.3",......."lan
1d680 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 guage":."python",......."name":.
1d6a0 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 "python3".....},....."language_i
1d6c0 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a nfo":.{......."codemirror_mode":
1d6e0 20 7b 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 2c 0a 20 20 .{........."name":."ipython",...
1d700 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 ......"version":.3.......},.....
1d720 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 0a 20 20 20 20 20 .."file_extension":.".py",......
1d740 20 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 0a 20 20 ."mimetype":."text/x-python",...
1d760 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 ...."name":."python",......."nbc
1d780 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 0a 20 20 20 20 onvert_exporter":."python",.....
1d7a0 20 20 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 33 22 2c 0a .."pygments_lexer":."ipython3",.
1d7c0 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 ......"version":."3.6.5".....}..
1d7e0 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 .},..."nbformat":.4,..."nbformat
1d800 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 2d 60 cb 4c 49 c5 7b 83 fa 16 _minor":.0.}PK........-`.LI.{...
1d820 00 00 fa 16 00 00 17 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 2e 69 70 79 6e ..........plot_otda_mapping.ipyn
1d840 62 7b 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 63 65 6c b{..."cells":.[.....{......."cel
1d860 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f l_type":."code",......."executio
1d880 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 n_count":.null,......."metadata"
1d8a0 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..
1d8c0 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 .....},......."outputs":.[],....
1d8e0 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 74 ..."source":.[........."%matplot
1d900 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b lib.inline".......].....},.....{
1d920 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 0a ......."cell_type":."markdown",.
1d940 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 ......"metadata":.{},......."sou
1d960 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 6d 61 70 70 69 6e 67 20 rce":.[........."\n#.OT.mapping.
1d980 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 6e estimation.for.domain.adaptation
1d9a0 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 70 72 65 73 65 6e 74 73 20 68 6f 77 20 \n\n\nThis.example.presents.how.
1d9c0 74 6f 20 75 73 65 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 74 6f 20 65 73 74 69 6d to.use.MappingTransport.to.estim
1d9e0 61 74 65 20 61 74 20 74 68 65 20 73 61 6d 65 5c 6e 74 69 6d 65 20 62 6f 74 68 20 74 68 65 20 63 ate.at.the.same\ntime.both.the.c
1da00 6f 75 70 6c 69 6e 67 20 74 72 61 6e 73 70 6f 72 74 20 61 6e 64 20 61 70 70 72 6f 78 69 6d 61 74 oupling.transport.and.approximat
1da20 65 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 61 70 20 77 69 74 68 20 65 69 74 68 65 72 5c e.the.transport.map.with.either\
1da40 6e 61 20 6c 69 6e 65 61 72 20 6f 72 20 61 20 6b 65 72 6e 65 6c 69 7a 65 64 20 6d 61 70 70 69 6e na.linear.or.a.kernelized.mappin
1da60 67 20 61 73 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e 20 5b 38 5d 2e 5c 6e 5c 6e 5b 38 5d 20 4d g.as.introduced.in.[8].\n\n[8].M
1da80 2e 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 ..Perrot,.N..Courty,.R..Flamary,
1daa0 20 41 2e 20 48 61 62 72 61 72 64 2c 5c 6e 20 20 20 20 5c 22 4d 61 70 70 69 6e 67 20 65 73 74 69 .A..Habrard,\n....\"Mapping.esti
1dac0 6d 61 74 69 6f 6e 20 66 6f 72 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e mation.for.discrete.optimal.tran
1dae0 73 70 6f 72 74 5c 22 2c 5c 6e 20 20 20 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 6f 6e sport\",\n....Neural.Information
1db00 20 50 72 6f 63 65 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 .Processing.Systems.(NIPS),.2016
1db20 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 .\n\n".......].....},.....{.....
1db40 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 .."cell_type":."code",......."ex
1db60 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 ecution_count":.null,......."met
1db80 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
1dba0 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b alse.......},......."outputs":.[
1dbc0 5d 2c 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":.[........."#.
1dbe0 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 6d 69 2e 66 6c 61 6d Authors:.Remi.Flamary.<remi.flam
1dc00 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 20 53 74 61 6e 69 73 ary@unice.fr>\n#..........Stanis
1dc20 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 40 67 6d 61 69 6c 2e las.Chambon.<stan.chambon@gmail.
1dc40 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 69 63 65 6e 73 65 5c com>\n#\n#.License:.MIT.License\
1dc60 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 61 n\nimport.numpy.as.np\nimport.ma
1dc80 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 74 22 tplotlib.pylab.as.pl\nimport.ot"
1dca0 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c .......].....},.....{......."cel
1dcc0 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 l_type":."markdown",......."meta
1dce0 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 data":.{},......."source":.[....
1dd00 20 20 20 20 20 22 47 65 6e 65 72 61 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ....."Generate.data\n-----------
1dd20 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 --\n\n".......].....},.....{....
1dd40 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 ..."cell_type":."code",......."e
1dd60 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 xecution_count":.null,......."me
1dd80 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":.
1dda0 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 false.......},......."outputs":.
1ddc0 5b 5d 2c 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
1dde0 5f 73 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 _source_samples.=.100\nn_target_
1de00 73 61 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 samples.=.100\ntheta.=.2.*.np.pi
1de20 20 2f 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 ./.20\nnoise_level.=.0.1\n\nXs,.
1de40 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 64 61 74 61 5f 63 6c 61 73 73 ys.=.ot.datasets.make_data_class
1de60 69 66 28 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 if(\n....'gaussrot',.n_source_sa
1de80 6d 70 6c 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 mples,.nz=noise_level)\nXs_new,.
1dea0 5f 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 64 61 74 61 5f 63 6c 61 73 73 69 _.=.ot.datasets.make_data_classi
1dec0 66 28 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 f(\n....'gaussrot',.n_source_sam
1dee0 70 6c 65 73 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 ples,.nz=noise_level)\nXt,.yt.=.
1df00 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 5c 6e ot.datasets.make_data_classif(\n
1df20 20 20 20 20 27 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 ....'gaussrot',.n_target_samples
1df40 2c 20 74 68 65 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 ,.theta=theta,.nz=noise_level)\n
1df60 5c 6e 23 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 \n#.one.of.the.target.mode.chang
1df80 65 73 20 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 es.its.variance.(no.linear.mappi
1dfa0 6e 67 29 5c 6e 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 ng)\nXt[yt.==.2].*=.3\nXt.=.Xt.+
1dfc0 20 34 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 .4".......].....},.....{......."
1dfe0 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d cell_type":."markdown",......."m
1e000 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a etadata":.{},......."source":.[.
1e020 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c ........"Plot.data\n---------\n\
1e040 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 n".......].....},.....{......."c
1e060 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 ell_type":."code",......."execut
1e080 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ion_count":.null,......."metadat
1e0a0 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 73 65 a":.{........."collapsed":.false
1e0c0 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 .......},......."outputs":.[],..
1e0e0 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 67 ....."source":.[........."pl.fig
1e100 75 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 ure(1,.(10,.5))\npl.clf()\npl.sc
1e120 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 20 atter(Xs[:,.0],.Xs[:,.1],.c=ys,.
1e140 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 65 marker='+',.label='Source.sample
1e160 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 20 s')\npl.scatter(Xt[:,.0],.Xt[:,.
1e180 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 72 1],.c=yt,.marker='o',.label='Tar
1e1a0 67 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 get.samples')\npl.legend(loc=0)\
1e1c0 6e 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 npl.title('Source.and.target.dis
1e1e0 74 72 69 62 75 74 69 6f 6e 73 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 tributions')".......].....},....
1e200 20 7b 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"
1e220 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 ,......."metadata":.{},......."s
1e240 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 61 74 65 20 74 ource":.[........."Instantiate.t
1e260 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 72 69 74 68 6d he.different.transport.algorithm
1e280 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d s.and.fit.them\n----------------
1e2a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
1e2c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a -----------\n\n".......].....},.
1e2e0 20 20 20 20 7b 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 ....{......."cell_type":."code",
1e300 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 0a ......."execution_count":.null,.
1e320 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 6c ......"metadata":.{........."col
1e340 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f lapsed":.false.......},......."o
1e360 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 utputs":.[],......."source":.[..
1e380 20 20 20 20 20 20 20 22 23 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 ......."#.MappingTransport.with.
1e3a0 6c 69 6e 65 61 72 20 6b 65 72 6e 65 6c 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 linear.kernel\not_mapping_linear
1e3c0 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 5c 6e 20 20 20 20 .=.ot.da.MappingTransport(\n....
1e3e0 6b 65 72 6e 65 6c 3d 5c 22 6c 69 6e 65 61 72 5c 22 2c 20 6d 75 3d 31 65 30 2c 20 65 74 61 3d 31 kernel=\"linear\",.mu=1e0,.eta=1
1e400 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 5c 6e 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 32 30 e-8,.bias=True,\n....max_iter=20
1e420 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 ,.verbose=True)\n\not_mapping_li
1e440 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 23 20 66 6f 72 20 near.fit(Xs=Xs,.Xt=Xt)\n\n#.for.
1e460 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f original.source.samples,.transfo
1e480 72 6d 20 61 70 70 6c 69 65 73 20 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 5c 6e rm.applies.barycentric.mapping\n
1e4a0 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 transp_Xs_linear.=.ot_mapping_li
1e4c0 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 5c 6e 23 20 66 6f 72 20 6f near.transform(Xs=Xs)\n\n#.for.o
1e4e0 75 74 20 6f 66 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 ut.of.source.samples,.transform.
1e500 61 70 70 6c 69 65 73 20 74 68 65 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e applies.the.linear.mapping\ntran
1e520 73 70 5f 58 73 5f 6c 69 6e 65 61 72 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 sp_Xs_linear_new.=.ot_mapping_li
1e540 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 5c 6e 5c 6e 5c 6e 23 near.transform(Xs=Xs_new)\n\n\n#
1e560 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 67 61 75 73 73 69 61 6e 20 .MappingTransport.with.gaussian.
1e580 6b 65 72 6e 65 6c 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 3d 20 6f 74 kernel\not_mapping_gaussian.=.ot
1e5a0 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 6b 65 72 6e 65 .da.MappingTransport(\n....kerne
1e5c0 6c 3d 5c 22 67 61 75 73 73 69 61 6e 5c 22 2c 20 65 74 61 3d 31 65 2d 35 2c 20 6d 75 3d 31 65 2d l=\"gaussian\",.eta=1e-5,.mu=1e-
1e5e0 31 2c 20 62 69 61 73 3d 54 72 75 65 2c 20 73 69 67 6d 61 3d 31 2c 5c 6e 20 20 20 20 6d 61 78 5f 1,.bias=True,.sigma=1,\n....max_
1e600 69 74 65 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 iter=10,.verbose=True)\not_mappi
1e620 6e 67 5f 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 ng_gaussian.fit(Xs=Xs,.Xt=Xt)\n\
1e640 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 65 73 2c 20 n#.for.original.source.samples,.
1e660 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 63 20 6d 61 transform.applies.barycentric.ma
1e680 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 73 69 61 6e 20 3d 20 6f 74 5f 6d pping\ntransp_Xs_gaussian.=.ot_m
1e6a0 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 apping_gaussian.transform(Xs=Xs)
1e6c0 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,
1e6e0 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 74 68 65 20 67 61 75 73 73 69 61 6e 20 .transform.applies.the.gaussian.
1e700 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 73 69 61 6e 5f 6e 65 77 20 mapping\ntransp_Xs_gaussian_new.
1e720 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 72 6d 28 =.ot_mapping_gaussian.transform(
1e740 58 73 3d 58 73 5f 6e 65 77 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b Xs=Xs_new)".......].....},.....{
1e760 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 0a ......."cell_type":."markdown",.
1e780 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 ......"metadata":.{},......."sou
1e7a0 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 74 72 61 6e 73 70 6f 72 74 65 rce":.[........."Plot.transporte
1e7c0 64 20 73 61 6d 70 6c 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d d.samples\n---------------------
1e7e0 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 ---\n\n".......].....},.....{...
1e800 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 ...."cell_type":."code",......."
1e820 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d execution_count":.null,......."m
1e840 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":
1e860 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a .false.......},......."outputs":
1e880 20 5b 5d 2c 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 .[],......."source":.[........."
1e8a0 70 6c 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 pl.figure(2)\npl.clf()\npl.subpl
1e8c0 6f 74 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 ot(2,.2,.1)\npl.scatter(Xt[:,.0]
1e8e0 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 5c 6e 20 ,.Xt[:,.1],.c=yt,.marker='o',\n.
1e900 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 65 73 27 ..........label='Target.samples'
1e920 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 61 6e 73 70 5f 58 ,.alpha=.2)\npl.scatter(transp_X
1e940 73 5f 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 s_linear[:,.0],.transp_Xs_linear
1e960 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 5c 6e 20 20 20 20 20 [:,.1],.c=ys,.marker='+',\n.....
1e980 20 20 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 ......label='Mapped.source.sampl
1e9a0 65 73 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 es')\npl.title(\"Bary..mapping.(
1e9c0 6c 69 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 linear)\")\npl.legend(loc=0)\n\n
1e9e0 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 74 74 65 72 28 pl.subplot(2,.2,.2)\npl.scatter(
1ea00 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 65 72 Xt[:,.0],.Xt[:,.1],.c=yt,.marker
1ea20 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 74 20 ='o',\n...........label='Target.
1ea40 73 61 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 samples',.alpha=.2)\npl.scatter(
1ea60 74 72 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 transp_Xs_linear_new[:,.0],.tran
1ea80 73 70 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 sp_Xs_linear_new[:,.1],\n.......
1eaa0 20 20 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 ....c=ys,.marker='+',.label='Lea
1eac0 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 6d rned.mapping')\npl.title(\"Estim
1eae0 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 70 ..mapping.(linear)\")\n\npl.subp
1eb00 6c 6f 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 lot(2,.2,.3)\npl.scatter(Xt[:,.0
1eb20 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 5c 6e ],.Xt[:,.1],.c=yt,.marker='o',\n
1eb40 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 65 73 ...........label='Target.samples
1eb60 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 61 6e 73 70 5f ',.alpha=.2)\npl.scatter(transp_
1eb80 58 73 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 Xs_gaussian[:,.0],.transp_Xs_gau
1eba0 73 73 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 ssian[:,.1],.c=ys,\n...........m
1ebc0 61 72 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 arker='+',.label='barycentric.ma
1ebe0 70 70 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 pping')\npl.title(\"Bary..mappin
1ec00 67 20 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 g.(kernel)\")\n\npl.subplot(2,.2
1ec20 2c 20 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 ,.4)\npl.scatter(Xt[:,.0],.Xt[:,
1ec40 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 20 20 20 .1],.c=yt,.marker='o',\n........
1ec60 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 70 68 61 ...label='Target.samples',.alpha
1ec80 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 67 61 75 73 73 =.2)\npl.scatter(transp_Xs_gauss
1eca0 69 61 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 ian_new[:,.0],.transp_Xs_gaussia
1ecc0 6e 5f 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 n_new[:,.1],.c=ys,\n...........m
1ece0 61 72 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 arker='+',.label='Learned.mappin
1ed00 67 27 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 g')\npl.title(\"Estim..mapping.(
1ed20 6b 65 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 kernel)\")\npl.tight_layout()\n\
1ed40 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 npl.show()".......].....}...],..
1ed60 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":
1ed80 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
1eda0 20 33 22 2c 0a 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 2c .3",......."language":."python",
1edc0 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a ......."name":."python3".....},.
1ede0 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 63 6f ...."language_info":.{......."co
1ee00 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 6e 61 6d 65 22 demirror_mode":.{........."name"
1ee20 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 :."ipython",........."version":.
1ee40 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 3.......},......."file_extension
1ee60 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 ":.".py",......."mimetype":."tex
1ee80 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 t/x-python",......."name":."pyth
1eea0 6f 6e 22 2c 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 72 22 3a on",......."nbconvert_exporter":
1eec0 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 ."python",......."pygments_lexer
1eee0 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 ":."ipython3",......."version":.
1ef00 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a "3.6.5".....}...},..."nbformat":
1ef20 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 .4,..."nbformat_minor":.0.}PK...
1ef40 00 00 00 00 00 2d 60 cb 4c e5 eb aa 89 7c 10 00 00 7c 10 00 00 16 00 00 00 70 6c 6f 74 5f 63 6f .....-`.L....|...|.......plot_co
1ef60 6d 70 75 74 65 5f 65 6d 64 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 mpute_emd.ipynb{..."cells":.[...
1ef80 20 20 7b 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 0a 20 ..{......."cell_type":."code",..
1efa0 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 0a 20 20 ....."execution_count":.null,...
1efc0 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 61 ...."metadata":.{........."colla
1efe0 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 psed":.false.......},......."out
1f000 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 puts":.[],......."source":.[....
1f020 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".......
1f040 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ].....},.....{......."cell_type"
1f060 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 :."markdown",......."metadata":.
1f080 7b 7d 2c 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":.[........."\
1f0a0 6e 23 20 50 6c 6f 74 20 6d 75 6c 74 69 70 6c 65 20 45 4d 44 5c 6e 5c 6e 5c 6e 53 68 6f 77 73 20 n#.Plot.multiple.EMD\n\n\nShows.
1f0c0 68 6f 77 20 74 6f 20 63 6f 6d 70 75 74 65 20 6d 75 6c 74 69 70 6c 65 20 45 4d 44 20 61 6e 64 20 how.to.compute.multiple.EMD.and.
1f0e0 53 69 6e 6b 68 6f 72 6e 20 77 69 74 68 20 74 77 6f 20 64 69 66 66 65 72 6e 74 5c 6e 67 72 6f 75 Sinkhorn.with.two.differnt\ngrou
1f100 6e 64 20 6d 65 74 72 69 63 73 20 61 6e 64 20 70 6c 6f 74 20 74 68 65 69 72 20 76 61 6c 75 65 73 nd.metrics.and.plot.their.values
1f120 20 66 6f 72 20 64 69 66 66 65 65 6e 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 2e 5c 6e 5c 6e .for.diffeent.distributions.\n\n
1f140 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 \n\n".......].....},.....{......
1f160 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 ."cell_type":."code",......."exe
1f180 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 cution_count":.null,......."meta
1f1a0 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
1f1c0 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d lse.......},......."outputs":.[]
1f1e0 2c 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 41 ,......."source":.[........."#.A
1f200 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 72 uthor:.Remi.Flamary.<remi.flamar
1f220 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 4c y@unice.fr>\n#\n#.License:.MIT.L
1f240 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 6d icense\n\nimport.numpy.as.np\nim
1f260 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
1f280 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 20 ort.ot\nfrom.ot.datasets.import.
1f2a0 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 22 0a 20 20 20 20 20 20 5d 0a make_1D_gauss.as.gauss".......].
1f2c0 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ....},.....{......."cell_type":.
1f2e0 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d "markdown",......."metadata":.{}
1f300 2c 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
1f320 65 72 61 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 erate.data\n-------------\n\n"..
1f340 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f .....].....},.....{......."cell_
1f360 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f type":."code",......."execution_
1f380 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 count":.null,......."metadata":.
1f3a0 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....
1f3c0 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 ...},......."outputs":.[],......
1f3e0 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 70 61 72 61 6d 65 ."source":.[........."#%%.parame
1f400 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 5c 6e 6e 5f 74 61 ters\n\nn.=.100..#.nb.bins\nn_ta
1f420 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 74 72 69 62 75 74 rget.=.50..#.nb.target.distribut
1f440 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 6e 78 20 3d 20 6e ions\n\n\n#.bin.positions\nx.=.n
1f460 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\
1f480 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 30 2c 20 6e 5f 74 nlst_m.=.np.linspace(20,.90,.n_t
1f4a0 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 69 62 75 74 69 6f arget)\n\n#.Gaussian.distributio
1f4c0 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 29 20 20 23 20 6d ns\na.=.gauss(n,.m=20,.s=5)..#.m
1f4e0 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 65 72 6f 73 28 28 =.mean,.s=.std\n\nB.=.np.zeros((
1f500 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 69 6e 20 65 6e 75 n,.n_target))\n\nfor.i,.m.in.enu
1f520 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 5d 20 3d 20 67 61 merate(lst_m):\n....B[:,.i].=.ga
1f540 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 20 6d 61 74 72 69 uss(n,.m=m,.s=5)\n\n#.loss.matri
1f560 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 74 2e 64 69 73 74 x.and.normalization\nM.=.ot.dist
1f580 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 28 28 6e (x.reshape((n,.1)),.x.reshape((n
1f5a0 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 4d 2e 6d 61 78 28 ,.1)),.'euclidean')\nM./=.M.max(
1f5c0 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 28 6e 2c 20 31 29 )\nM2.=.ot.dist(x.reshape((n,.1)
1f5e0 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 75 63 6c 69 64 65 ),.x.reshape((n,.1)),.'sqeuclide
1f600 61 6e 27 29 5c 6e 4d 32 20 2f 3d 20 4d 32 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 an')\nM2./=.M2.max()".......]...
1f620 20 20 7d 2c 0a 20 20 20 20 7b 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
1f640 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a arkdown",......."metadata":.{},.
1f660 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 50 6c 6f 74 20 ......"source":.[........."Plot.
1f680 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 data\n---------\n\n".......]....
1f6a0 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f .},.....{......."cell_type":."co
1f6c0 64 65 22 2c 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 de",......."execution_count":.nu
1f6e0 6c 6c 2c 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 ll,......."metadata":.{.........
1f700 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 2c 0a 20 20 20 20 "collapsed":.false.......},.....
1f720 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a .."outputs":.[],......."source":
1f740 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 72 69 62 .[........."#%%.plot.the.distrib
1f760 75 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 73 75 62 70 6c utions\n\npl.figure(1)\npl.subpl
1f780 6f 74 28 32 2c 20 31 2c 20 31 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 61 2c 20 27 62 27 2c 20 ot(2,.1,.1)\npl.plot(x,.a,.'b',.
1f7a0 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
1f7c0 2e 74 69 74 6c 65 28 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 .title('Source.distribution')\np
1f7e0 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 32 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 42 l.subplot(2,.1,.2)\npl.plot(x,.B
1f800 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c ,.label='Target.distributions')\
1f820 6e 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 npl.title('Target.distributions'
1f840 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 20 5d 0a 20 20 )\npl.tight_layout()".......]...
1f860 20 20 7d 2c 0a 20 20 20 20 7b 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
1f880 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a arkdown",......."metadata":.{},.
1f8a0 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 43 6f 6d 70 75 ......"source":.[........."Compu
1f8c0 74 65 20 45 4d 44 20 66 6f 72 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 6c 6f 73 73 65 73 5c te.EMD.for.the.different.losses\
1f8e0 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d n-------------------------------
1f900 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a -----\n\n".......].....},.....{.
1f920 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 0a 20 20 20 20 20 ......"cell_type":."code",......
1f940 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 0a 20 20 20 20 20 20 ."execution_count":.null,.......
1f960 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
1f980 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 ":.false.......},......."outputs
1f9a0 22 3a 20 5b 5d 2c 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":.[........
1f9c0 20 22 23 25 25 20 43 6f 6d 70 75 74 65 20 61 6e 64 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 ."#%%.Compute.and.plot.distribut
1f9e0 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 65 6d 64 20 3d 20 ions.and.loss.matrix\n\nd_emd.=.
1fa00 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 20 63 6f 6d 70 75 ot.emd2(a,.B,.M)..#.direct.compu
1fa20 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 2e 65 6d 64 32 28 tation.of.EMD\nd_emd2.=.ot.emd2(
1fa40 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 61 74 69 6f 6e 20 a,.B,.M2)..#.direct.computation.
1fa60 6f 66 20 45 4d 44 20 77 69 74 68 20 6c 6f 73 73 20 4d 32 5c 6e 5c 6e 5c 6e 70 6c 2e 66 69 67 75 of.EMD.with.loss.M2\n\n\npl.figu
1fa80 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 6c 3d 27 45 75 63 re(2)\npl.plot(d_emd,.label='Euc
1faa0 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 64 32 2c 20 6c 61 lidean.EMD')\npl.plot(d_emd2,.la
1fac0 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 27 29 5c 6e 70 6c bel='Squared.Euclidean.EMD')\npl
1fae0 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 6c 2e 6c 65 67 65 .title('EMD.distances')\npl.lege
1fb00 6e 64 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 nd()".......].....},.....{......
1fb20 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 0a 20 20 20 20 20 20 ."cell_type":."markdown",.......
1fb40 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 "metadata":.{},......."source":.
1fb60 5b 0a 20 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 53 69 6e 6b 68 6f 72 6e 20 66 6f 72 20 [........."Compute.Sinkhorn.for.
1fb80 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 6c 6f 73 73 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d the.different.losses\n----------
1fba0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c -------------------------------\
1fbc0 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 n\n".......].....},.....{.......
1fbe0 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 "cell_type":."code",......."exec
1fc00 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 ution_count":.null,......."metad
1fc20 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
1fc40 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c se.......},......."outputs":.[],
1fc60 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 5c ......."source":.[........."#%%\
1fc80 6e 72 65 67 20 3d 20 31 65 2d 32 5c 6e 64 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 73 69 6e nreg.=.1e-2\nd_sinkhorn.=.ot.sin
1fca0 6b 68 6f 72 6e 32 28 61 2c 20 42 2c 20 4d 2c 20 72 65 67 29 5c 6e 64 5f 73 69 6e 6b 68 6f 72 6e khorn2(a,.B,.M,.reg)\nd_sinkhorn
1fcc0 32 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 32 28 61 2c 20 42 2c 20 4d 32 2c 20 72 65 67 29 5c 2.=.ot.sinkhorn2(a,.B,.M2,.reg)\
1fce0 6e 5c 6e 70 6c 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 70 6c n\npl.figure(2)\npl.clf()\npl.pl
1fd00 6f 74 28 64 5f 65 6d 64 2c 20 6c 61 62 65 6c 3d 27 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 ot(d_emd,.label='Euclidean.EMD')
1fd20 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 32 2c 20 6c 61 62 65 6c 3d 27 53 71 75 61 72 65 64 \npl.plot(d_emd2,.label='Squared
1fd40 20 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 73 69 6e 6b .Euclidean.EMD')\npl.plot(d_sink
1fd60 68 6f 72 6e 2c 20 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 45 75 63 6c 69 64 65 61 6e 20 53 69 6e 6b horn,.'+',.label='Euclidean.Sink
1fd80 68 6f 72 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 73 69 6e 6b 68 6f 72 6e 32 2c 20 27 2b 27 horn')\npl.plot(d_sinkhorn2,.'+'
1fda0 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 53 69 6e 6b 68 ,.label='Squared.Euclidean.Sinkh
1fdc0 6f 72 6e 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 orn')\npl.title('EMD.distances')
1fde0 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 \npl.legend()\n\npl.show()".....
1fe00 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 ..].....}...],..."metadata":.{..
1fe20 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 61 ..."kernelspec":.{......."displa
1fe40 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 y_name":."Python.3",......."lang
1fe60 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 uage":."python",......."name":."
1fe80 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e python3".....},....."language_in
1fea0 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 fo":.{......."codemirror_mode":.
1fec0 7b 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 2c 0a 20 20 20 {........."name":."ipython",....
1fee0 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 ....."version":.3.......},......
1ff00 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 0a 20 20 20 20 20 20 ."file_extension":.".py",.......
1ff20 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 0a 20 20 20 "mimetype":."text/x-python",....
1ff40 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f ..."name":."python",......."nbco
1ff60 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 0a 20 20 20 20 20 nvert_exporter":."python",......
1ff80 20 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 33 22 2c 0a 20 ."pygments_lexer":."ipython3",..
1ffa0 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 ....."version":."3.6.5".....}...
1ffc0 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f },..."nbformat":.4,..."nbformat_
1ffe0 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 ec 45 43 4d 58 b0 17 7b e5 0e 00 minor":.0.}PK.........ECMX..{...
20000 00 e5 0e 00 00 23 00 00 00 70 6c 6f 74 5f 63 6f 6e 76 6f 6c 75 74 69 6f 6e 61 6c 5f 62 61 72 79 .....#...plot_convolutional_bary
20020 63 65 6e 74 65 72 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b center.ipynb{..."cells":.[.....{
20040 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 0a 20 20 20 20 ......."cell_type":."code",.....
20060 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 0a 20 20 20 20 20 .."execution_count":.null,......
20080 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
200a0 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 d":.false.......},......."output
200c0 73 22 3a 20 5b 5d 2c 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 s":.[],......."source":.[.......
200e0 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 0a 20 .."%matplotlib.inline".......]..
20100 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
20120 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c markdown",......."metadata":.{},
20140 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 20 ......."source":.[........."\n#.
20160 43 6f 6e 76 6f 6c 75 74 69 6f 6e 61 6c 20 57 61 73 73 65 72 73 74 65 69 6e 20 42 61 72 79 63 65 Convolutional.Wasserstein.Baryce
20180 6e 74 65 72 20 65 78 61 6d 70 6c 65 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 nter.example\n\n\nThis.example.i
201a0 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20 69 6c 6c 75 73 74 72 61 74 65 20 68 6f 77 20 74 68 65 s.designed.to.illustrate.how.the
201c0 20 43 6f 6e 76 6f 6c 75 74 69 6f 6e 61 6c 20 57 61 73 73 65 72 73 74 65 69 6e 20 42 61 72 79 63 .Convolutional.Wasserstein.Baryc
201e0 65 6e 74 65 72 5c 6e 66 75 6e 63 74 69 6f 6e 20 6f 66 20 50 4f 54 20 77 6f 72 6b 73 2e 5c 6e 5c enter\nfunction.of.POT.works.\n\
20200 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 n".......].....},.....{......."c
20220 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 ell_type":."code",......."execut
20240 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 ion_count":.null,......."metadat
20260 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 73 65 a":.{........."collapsed":.false
20280 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 .......},......."outputs":.[],..
202a0 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 41 75 74 68 ....."source":.[........."#.Auth
202c0 6f 72 3a 20 4e 69 63 6f 6c 61 73 20 43 6f 75 72 74 79 20 3c 6e 63 6f 75 72 74 79 40 69 72 69 73 or:.Nicolas.Courty.<ncourty@iris
202e0 61 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 a.fr>\n#\n#.License:.MIT.License
20300 5c 6e 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 \n\n\nimport.numpy.as.np\nimport
20320 20 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".......]
20340 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
20360 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ."markdown",......."metadata":.{
20380 7d 2c 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 44 61 },......."source":.[........."Da
203a0 74 61 20 70 72 65 70 61 72 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ta.preparation\n----------------
203c0 5c 6e 5c 6e 54 68 65 20 66 6f 75 72 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 72 65 20 63 \n\nThe.four.distributions.are.c
203e0 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 34 20 73 69 6d 70 6c 65 20 69 6d 61 67 65 73 5c onstructed.from.4.simple.images\
20400 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 n\n".......].....},.....{.......
20420 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 "cell_type":."code",......."exec
20440 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 ution_count":.null,......."metad
20460 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
20480 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c se.......},......."outputs":.[],
204a0 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 66 31 20 3d ......."source":.[........."f1.=
204c0 20 31 20 2d 20 70 6c 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 72 65 64 63 72 6f 73 73 .1.-.pl.imread('../data/redcross
204e0 2e 70 6e 67 27 29 5b 3a 2c 20 3a 2c 20 32 5d 5c 6e 66 32 20 3d 20 31 20 2d 20 70 6c 2e 69 6d 72 .png')[:,.:,.2]\nf2.=.1.-.pl.imr
20500 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 64 75 63 6b 2e 70 6e 67 27 29 5b 3a 2c 20 3a 2c 20 32 5d ead('../data/duck.png')[:,.:,.2]
20520 5c 6e 66 33 20 3d 20 31 20 2d 20 70 6c 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 68 65 \nf3.=.1.-.pl.imread('../data/he
20540 61 72 74 2e 70 6e 67 27 29 5b 3a 2c 20 3a 2c 20 32 5d 5c 6e 66 34 20 3d 20 31 20 2d 20 70 6c 2e art.png')[:,.:,.2]\nf4.=.1.-.pl.
20560 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 74 6f 6f 74 68 2e 70 6e 67 27 29 5b 3a 2c 20 3a imread('../data/tooth.png')[:,.:
20580 2c 20 32 5d 5c 6e 5c 6e 41 20 3d 20 5b 5d 5c 6e 66 31 20 3d 20 66 31 20 2f 20 6e 70 2e 73 75 6d ,.2]\n\nA.=.[]\nf1.=.f1./.np.sum
205a0 28 66 31 29 5c 6e 66 32 20 3d 20 66 32 20 2f 20 6e 70 2e 73 75 6d 28 66 32 29 5c 6e 66 33 20 3d (f1)\nf2.=.f2./.np.sum(f2)\nf3.=
205c0 20 66 33 20 2f 20 6e 70 2e 73 75 6d 28 66 33 29 5c 6e 66 34 20 3d 20 66 34 20 2f 20 6e 70 2e 73 .f3./.np.sum(f3)\nf4.=.f4./.np.s
205e0 75 6d 28 66 34 29 5c 6e 41 2e 61 70 70 65 6e 64 28 66 31 29 5c 6e 41 2e 61 70 70 65 6e 64 28 66 um(f4)\nA.append(f1)\nA.append(f
20600 32 29 5c 6e 41 2e 61 70 70 65 6e 64 28 66 33 29 5c 6e 41 2e 61 70 70 65 6e 64 28 66 34 29 5c 6e 2)\nA.append(f3)\nA.append(f4)\n
20620 41 20 3d 20 6e 70 2e 61 72 72 61 79 28 41 29 5c 6e 5c 6e 6e 62 5f 69 6d 61 67 65 73 20 3d 20 35 A.=.np.array(A)\n\nnb_images.=.5
20640 5c 6e 5c 6e 23 20 74 68 6f 73 65 20 61 72 65 20 74 68 65 20 66 6f 75 72 20 63 6f 72 6e 65 72 73 \n\n#.those.are.the.four.corners
20660 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 69 6e 74 65 72 70 .coordinates.that.will.be.interp
20680 6f 6c 61 74 65 64 20 62 79 20 62 69 6c 69 6e 65 61 72 5c 6e 23 20 69 6e 74 65 72 70 6f 6c 61 74 olated.by.bilinear\n#.interpolat
206a0 69 6f 6e 5c 6e 76 31 20 3d 20 6e 70 2e 61 72 72 61 79 28 28 31 2c 20 30 2c 20 30 2c 20 30 29 29 ion\nv1.=.np.array((1,.0,.0,.0))
206c0 5c 6e 76 32 20 3d 20 6e 70 2e 61 72 72 61 79 28 28 30 2c 20 31 2c 20 30 2c 20 30 29 29 5c 6e 76 \nv2.=.np.array((0,.1,.0,.0))\nv
206e0 33 20 3d 20 6e 70 2e 61 72 72 61 79 28 28 30 2c 20 30 2c 20 31 2c 20 30 29 29 5c 6e 76 34 20 3d 3.=.np.array((0,.0,.1,.0))\nv4.=
20700 20 6e 70 2e 61 72 72 61 79 28 28 30 2c 20 30 2c 20 30 2c 20 31 29 29 22 0a 20 20 20 20 20 20 5d .np.array((0,.0,.0,.1))".......]
20720 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
20740 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ."markdown",......."metadata":.{
20760 7d 2c 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 42 61 },......."source":.[........."Ba
20780 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 61 6e 64 20 76 69 73 75 61 6c 69 rycenter.computation.and.visuali
207a0 7a 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d zation\n------------------------
207c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a ----------------\n\n\n".......].
207e0 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ....},.....{......."cell_type":.
20800 22 63 6f 64 65 22 2c 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 "code",......."execution_count":
20820 20 6e 75 6c 6c 2c 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 .null,......."metadata":.{......
20840 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 2c 0a 20 ..."collapsed":.false.......},..
20860 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ....."outputs":.[],......."sourc
20880 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 66 69 67 73 69 7a 65 e":.[........."pl.figure(figsize
208a0 3d 28 31 30 2c 20 31 30 29 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 43 6f 6e 76 6f 6c 75 74 69 6f =(10,.10))\npl.title('Convolutio
208c0 6e 61 6c 20 57 61 73 73 65 72 73 74 65 69 6e 20 42 61 72 79 63 65 6e 74 65 72 73 20 69 6e 20 50 nal.Wasserstein.Barycenters.in.P
208e0 4f 54 27 29 5c 6e 63 6d 20 3d 20 27 42 6c 75 65 73 27 5c 6e 23 20 72 65 67 75 6c 61 72 69 7a 61 OT')\ncm.=.'Blues'\n#.regulariza
20900 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 5c 6e 72 65 67 20 3d 20 30 2e 30 30 34 5c 6e 66 6f 72 tion.parameter\nreg.=.0.004\nfor
20920 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 62 5f 69 6d 61 67 65 73 29 3a 5c 6e 20 20 20 20 66 6f 72 .i.in.range(nb_images):\n....for
20940 20 6a 20 69 6e 20 72 61 6e 67 65 28 6e 62 5f 69 6d 61 67 65 73 29 3a 5c 6e 20 20 20 20 20 20 20 .j.in.range(nb_images):\n.......
20960 20 70 6c 2e 73 75 62 70 6c 6f 74 28 6e 62 5f 69 6d 61 67 65 73 2c 20 6e 62 5f 69 6d 61 67 65 73 .pl.subplot(nb_images,.nb_images
20980 2c 20 69 20 2a 20 6e 62 5f 69 6d 61 67 65 73 20 2b 20 6a 20 2b 20 31 29 5c 6e 20 20 20 20 20 20 ,.i.*.nb_images.+.j.+.1)\n......
209a0 20 20 74 78 20 3d 20 66 6c 6f 61 74 28 69 29 20 2f 20 28 6e 62 5f 69 6d 61 67 65 73 20 2d 20 31 ..tx.=.float(i)./.(nb_images.-.1
209c0 29 5c 6e 20 20 20 20 20 20 20 20 74 79 20 3d 20 66 6c 6f 61 74 28 6a 29 20 2f 20 28 6e 62 5f 69 )\n........ty.=.float(j)./.(nb_i
209e0 6d 61 67 65 73 20 2d 20 31 29 5c 6e 5c 6e 20 20 20 20 20 20 20 20 23 20 77 65 69 67 68 74 73 20 mages.-.1)\n\n........#.weights.
20a00 61 72 65 20 63 6f 6e 73 74 72 75 63 74 65 64 20 62 79 20 62 69 6c 69 6e 65 61 72 20 69 6e 74 65 are.constructed.by.bilinear.inte
20a20 72 70 6f 6c 61 74 69 6f 6e 5c 6e 20 20 20 20 20 20 20 20 74 6d 70 31 20 3d 20 28 31 20 2d 20 74 rpolation\n........tmp1.=.(1.-.t
20a40 78 29 20 2a 20 76 31 20 2b 20 74 78 20 2a 20 76 32 5c 6e 20 20 20 20 20 20 20 20 74 6d 70 32 20 x).*.v1.+.tx.*.v2\n........tmp2.
20a60 3d 20 28 31 20 2d 20 74 78 29 20 2a 20 76 33 20 2b 20 74 78 20 2a 20 76 34 5c 6e 20 20 20 20 20 =.(1.-.tx).*.v3.+.tx.*.v4\n.....
20a80 20 20 20 77 65 69 67 68 74 73 20 3d 20 28 31 20 2d 20 74 79 29 20 2a 20 74 6d 70 31 20 2b 20 74 ...weights.=.(1.-.ty).*.tmp1.+.t
20aa0 79 20 2a 20 74 6d 70 32 5c 6e 5c 6e 20 20 20 20 20 20 20 20 69 66 20 69 20 3d 3d 20 30 20 61 6e y.*.tmp2\n\n........if.i.==.0.an
20ac0 64 20 6a 20 3d 3d 20 30 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 d.j.==.0:\n............pl.imshow
20ae0 28 66 31 2c 20 63 6d 61 70 3d 63 6d 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 61 78 (f1,.cmap=cm)\n............pl.ax
20b00 69 73 28 27 6f 66 66 27 29 5c 6e 20 20 20 20 20 20 20 20 65 6c 69 66 20 69 20 3d 3d 20 30 20 61 is('off')\n........elif.i.==.0.a
20b20 6e 64 20 6a 20 3d 3d 20 28 6e 62 5f 69 6d 61 67 65 73 20 2d 20 31 29 3a 5c 6e 20 20 20 20 20 20 nd.j.==.(nb_images.-.1):\n......
20b40 20 20 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 66 33 2c 20 63 6d 61 70 3d 63 6d 29 5c 6e 20 20 ......pl.imshow(f3,.cmap=cm)\n..
20b60 20 20 20 20 20 20 20 20 20 20 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 20 20 20 20 20 20 ..........pl.axis('off')\n......
20b80 20 20 65 6c 69 66 20 69 20 3d 3d 20 28 6e 62 5f 69 6d 61 67 65 73 20 2d 20 31 29 20 61 6e 64 20 ..elif.i.==.(nb_images.-.1).and.
20ba0 6a 20 3d 3d 20 30 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 66 j.==.0:\n............pl.imshow(f
20bc0 32 2c 20 63 6d 61 70 3d 63 6d 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 61 78 69 73 2,.cmap=cm)\n............pl.axis
20be0 28 27 6f 66 66 27 29 5c 6e 20 20 20 20 20 20 20 20 65 6c 69 66 20 69 20 3d 3d 20 28 6e 62 5f 69 ('off')\n........elif.i.==.(nb_i
20c00 6d 61 67 65 73 20 2d 20 31 29 20 61 6e 64 20 6a 20 3d 3d 20 28 6e 62 5f 69 6d 61 67 65 73 20 2d mages.-.1).and.j.==.(nb_images.-
20c20 20 31 29 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 66 34 2c 20 .1):\n............pl.imshow(f4,.
20c40 63 6d 61 70 3d 63 6d 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 61 78 69 73 28 27 6f cmap=cm)\n............pl.axis('o
20c60 66 66 27 29 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 ff')\n........else:\n...........
20c80 20 23 20 63 61 6c 6c 20 74 6f 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f .#.call.to.barycenter.computatio
20ca0 6e 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 2e 62 72 65 67 n\n............pl.imshow(ot.breg
20cc0 6d 61 6e 2e 63 6f 6e 76 6f 6c 75 74 69 6f 6e 61 6c 5f 62 61 72 79 63 65 6e 74 65 72 32 64 28 41 man.convolutional_barycenter2d(A
20ce0 2c 20 72 65 67 2c 20 77 65 69 67 68 74 73 29 2c 20 63 6d 61 70 3d 63 6d 29 5c 6e 20 20 20 20 20 ,.reg,.weights),.cmap=cm)\n.....
20d00 20 20 20 20 20 20 20 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 .......pl.axis('off')\npl.show()
20d20 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 ".......].....}...],..."metadata
20d40 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 20 22 ":.{....."kernelspec":.{......."
20d60 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 display_name":."Python.3",......
20d80 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 ."language":."python",......."na
20da0 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 me":."python3".....},....."langu
20dc0 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d age_info":.{......."codemirror_m
20de0 6f 64 65 22 3a 20 7b 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 ode":.{........."name":."ipython
20e00 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c ",........."version":.3.......},
20e20 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 22 2e 70 79 22 2c 0a ......."file_extension":.".py",.
20e40 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 74 68 6f 6e ......"mimetype":."text/x-python
20e60 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 ",......."name":."python",......
20e80 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",
20ea0 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 74 68 6f ......."pygments_lexer":."ipytho
20ec0 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 n3",......."version":."3.6.5"...
20ee0 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 ..}...},..."nbformat":.4,..."nbf
20f00 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 db 74 d9 4e c1 ormat_minor":.0.}PK.........t.N.
20f20 fa b5 ab 13 16 00 00 13 16 00 00 1c 00 00 00 70 6c 6f 74 5f 55 4f 54 5f 62 61 72 79 63 65 6e 74 ...............plot_UOT_barycent
20f40 65 72 5f 31 44 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a er_1D.ipynb{..."cells":.[.....{.
20f60 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 0a 20 20 20 20 20 ......"cell_type":."code",......
20f80 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 0a 20 20 20 20 20 20 ."execution_count":.null,.......
20fa0 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
20fc0 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 ":.false.......},......."outputs
20fe0 22 3a 20 5b 5d 2c 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":.[........
21000 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 0a 20 20 ."%matplotlib.inline".......]...
21020 20 20 7d 2c 0a 20 20 20 20 7b 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
21040 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a arkdown",......."metadata":.{},.
21060 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 20 31 ......"source":.[........."\n#.1
21080 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 6f 20 66 6f D.Wasserstein.barycenter.demo.fo
210a0 72 20 55 6e 62 61 6c 61 6e 63 65 64 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e r.Unbalanced.distributions\n\n\n
210c0 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d This.example.illustrates.the.com
210e0 70 75 74 61 74 69 6f 6e 20 6f 66 20 72 65 67 75 6c 61 72 69 7a 65 64 20 57 61 73 73 65 72 73 79 putation.of.regularized.Wassersy
21100 65 69 6e 20 42 61 72 79 63 65 6e 74 65 72 5c 6e 61 73 20 70 72 6f 70 6f 73 65 64 20 69 6e 20 5b ein.Barycenter\nas.proposed.in.[
21120 31 30 5d 20 66 6f 72 20 55 6e 62 61 6c 61 6e 63 65 64 20 69 6e 70 75 74 73 2e 5c 6e 5c 6e 5c 6e 10].for.Unbalanced.inputs.\n\n\n
21140 5b 31 30 5d 20 43 68 69 7a 61 74 2c 20 4c 2e 2c 20 50 65 79 72 5c 75 30 30 65 39 2c 20 47 2e 2c [10].Chizat,.L.,.Peyr\u00e9,.G.,
21160 20 53 63 68 6d 69 74 7a 65 72 2c 20 42 2e 2c 20 26 20 56 69 61 6c 61 72 64 2c 20 46 2e 20 58 2e .Schmitzer,.B.,.&.Vialard,.F..X.
21180 20 28 32 30 31 36 29 2e 20 53 63 61 6c 69 6e 67 20 61 6c 67 6f 72 69 74 68 6d 73 20 66 6f 72 20 .(2016)..Scaling.algorithms.for.
211a0 75 6e 62 61 6c 61 6e 63 65 64 20 74 72 61 6e 73 70 6f 72 74 20 70 72 6f 62 6c 65 6d 73 2e 20 61 unbalanced.transport.problems..a
211c0 72 58 69 76 20 70 72 65 70 72 69 6e 74 20 61 72 58 69 76 3a 31 36 30 37 2e 30 35 38 31 36 2e 5c rXiv.preprint.arXiv:1607.05816.\
211e0 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 n\n\n".......].....},.....{.....
21200 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 .."cell_type":."code",......."ex
21220 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 ecution_count":.null,......."met
21240 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
21260 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b alse.......},......."outputs":.[
21280 5d 2c 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":.[........."#.
212a0 41 75 74 68 6f 72 3a 20 48 69 63 68 61 6d 20 4a 61 6e 61 74 69 20 3c 68 69 63 68 61 6d 2e 6a 61 Author:.Hicham.Janati.<hicham.ja
212c0 6e 61 74 69 40 69 6e 72 69 61 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 nati@inria.fr>\n#\n#.License:.MI
212e0 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 6e 70 5c T.License\n\nimport.numpy.as.np\
21300 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 6c 5c 6e nimport.matplotlib.pylab.as.pl\n
21320 69 6d 70 6f 72 74 20 6f 74 5c 6e 23 20 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 33 64 20 70 6c import.ot\n#.necessary.for.3d.pl
21340 6f 74 20 65 76 65 6e 20 69 66 20 6e 6f 74 20 75 73 65 64 5c 6e 66 72 6f 6d 20 6d 70 6c 5f 74 6f ot.even.if.not.used\nfrom.mpl_to
21360 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 65 73 33 44 20 20 23 20 olkits.mplot3d.import.Axes3D..#.
21380 6e 6f 71 61 5c 6e 66 72 6f 6d 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 63 6f 6c 6c 65 63 74 69 6f 6e noqa\nfrom.matplotlib.collection
213a0 73 20 69 6d 70 6f 72 74 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 22 0a 20 20 20 20 20 20 5d s.import.PolyCollection".......]
213c0 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
213e0 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b ."markdown",......."metadata":.{
21400 7d 2c 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 },......."source":.[........."Ge
21420 6e 65 72 61 74 65 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a nerate.data\n-------------\n\n".
21440 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
21460 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e _type":."code",......."execution
21480 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a _count":.null,......."metadata":
214a0 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...
214c0 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 ....},......."outputs":.[],.....
214e0 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 70 61 72 61 6d 65 74 .."source":.[........."#.paramet
21500 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 5c 6e 5c 6e 23 20 62 ers\n\nn.=.100..#.nb.bins\n\n#.b
21520 69 6e 20 70 6f 73 69 74 69 6f 6e 73 5c 6e 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 in.positions\nx.=.np.arange(n,.d
21540 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c 6e 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 type=np.float64)\n\n#.Gaussian.d
21560 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 61 31 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d istributions\na1.=.ot.datasets.m
21580 61 6b 65 5f 31 44 5f 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 ake_1D_gauss(n,.m=20,.s=5)..#.m=
215a0 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 5c 6e 61 32 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e .mean,.s=.std\na2.=.ot.datasets.
215c0 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 38 29 5c 6e 5c 6e 23 make_1D_gauss(n,.m=60,.s=8)\n\n#
215e0 20 6d 61 6b 65 20 75 6e 62 61 6c 61 6e 63 65 64 20 64 69 73 74 73 5c 6e 61 32 20 2a 3d 20 33 2e .make.unbalanced.dists\na2.*=.3.
21600 5c 6e 5c 6e 23 20 63 72 65 61 74 69 6e 67 20 6d 61 74 72 69 78 20 41 20 63 6f 6e 74 61 69 6e 69 \n\n#.creating.matrix.A.containi
21620 6e 67 20 61 6c 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 41 20 3d 20 6e 70 2e 76 73 74 ng.all.distributions\nA.=.np.vst
21640 61 63 6b 28 28 61 31 2c 20 61 32 29 29 2e 54 5c 6e 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 ack((a1,.a2)).T\nn_distributions
21660 20 3d 20 41 2e 73 68 61 70 65 5b 31 5d 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 20 2b .=.A.shape[1]\n\n#.loss.matrix.+
21680 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 5c 6e 4d 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 64 69 73 .normalization\nM.=.ot.utils.dis
216a0 74 30 28 6e 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 t0(n)\nM./=.M.max()".......]....
216c0 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 .},.....{......."cell_type":."ma
216e0 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 rkdown",......."metadata":.{},..
21700 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 50 6c 6f 74 20 64 ....."source":.[........."Plot.d
21720 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 ata\n---------\n\n".......].....
21740 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 },.....{......."cell_type":."cod
21760 65 22 2c 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 e",......."execution_count":.nul
21780 6c 2c 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 l,......."metadata":.{........."
217a0 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 2c 0a 20 20 20 20 20 collapsed":.false.......},......
217c0 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 ."outputs":.[],......."source":.
217e0 5b 0a 20 20 20 20 20 20 20 20 22 23 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 [........."#.plot.the.distributi
21800 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 65 3d 28 36 2e 34 ons\n\npl.figure(1,.figsize=(6.4
21820 2c 20 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 ,.3))\nfor.i.in.range(n_distribu
21840 74 69 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 tions):\n....pl.plot(x,.A[:,.i])
21860 5c 6e 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 \npl.title('Distributions')\npl.
21880 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 tight_layout()".......].....},..
218a0 20 20 20 7b 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
218c0 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 n",......."metadata":.{},.......
218e0 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 42 61 72 79 63 65 6e 74 65 72 20 "source":.[........."Barycenter.
21900 63 6f 6d 70 75 74 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d computation\n-------------------
21920 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 ---\n\n".......].....},.....{...
21940 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 ...."cell_type":."code",......."
21960 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d execution_count":.null,......."m
21980 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":
219a0 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a .false.......},......."outputs":
219c0 20 5b 5d 2c 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 .[],......."source":.[........."
219e0 23 20 6e 6f 6e 20 77 65 69 67 68 74 65 64 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 #.non.weighted.barycenter.comput
21a00 61 74 69 6f 6e 5c 6e 5c 6e 77 65 69 67 68 74 20 3d 20 30 2e 35 20 20 23 20 30 3c 3d 77 65 69 67 ation\n\nweight.=.0.5..#.0<=weig
21a20 68 74 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 2d 20 77 ht<=1\nweights.=.np.array([1.-.w
21a40 65 69 67 68 74 2c 20 77 65 69 67 68 74 5d 29 5c 6e 5c 6e 23 20 6c 32 62 61 72 79 5c 6e 62 61 72 eight,.weight])\n\n#.l2bary\nbar
21a60 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 65 y_l2.=.A.dot(weights)\n\n#.wasse
21a80 72 73 74 65 69 6e 5c 6e 72 65 67 20 3d 20 31 65 2d 33 5c 6e 61 6c 70 68 61 20 3d 20 31 2e 5c 6e rstein\nreg.=.1e-3\nalpha.=.1.\n
21aa0 5c 6e 62 61 72 79 5f 77 61 73 73 20 3d 20 6f 74 2e 75 6e 62 61 6c 61 6e 63 65 64 2e 62 61 72 79 \nbary_wass.=.ot.unbalanced.bary
21ac0 63 65 6e 74 65 72 5f 75 6e 62 61 6c 61 6e 63 65 64 28 41 2c 20 4d 2c 20 72 65 67 2c 20 61 6c 70 center_unbalanced(A,.M,.reg,.alp
21ae0 68 61 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 ha,.weights)\n\npl.figure(2)\npl
21b00 2e 63 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 .clf()\npl.subplot(2,.1,.1)\nfor
21b20 20 69 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 .i.in.range(n_distributions):\n.
21b40 20 20 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 ...pl.plot(x,.A[:,.i])\npl.title
21b60 28 27 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 ('Distributions')\n\npl.subplot(
21b80 32 2c 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 2,.1,.2)\npl.plot(x,.bary_l2,.'r
21ba0 27 2c 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 ',.label='l2')\npl.plot(x,.bary_
21bc0 77 61 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 wass,.'g',.label='Wasserstein')\
21be0 6e 70 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 npl.legend()\npl.title('Barycent
21c00 65 72 73 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 20 ers')\npl.tight_layout()".......
21c20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ].....},.....{......."cell_type"
21c40 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 :."markdown",......."metadata":.
21c60 7b 7d 2c 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 42 {},......."source":.[........."B
21c80 61 72 79 63 65 6e 74 72 69 63 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d arycentric.interpolation\n------
21ca0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d -------------------\n\n".......]
21cc0 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a .....},.....{......."cell_type":
21ce0 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 ."code",......."execution_count"
21d00 3a 20 6e 75 6c 6c 2c 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 :.null,......."metadata":.{.....
21d20 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 2c 0a ...."collapsed":.false.......},.
21d40 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 ......"outputs":.[],......."sour
21d60 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 62 61 72 79 63 65 6e 74 65 72 20 69 6e 74 ce":.[........."#.barycenter.int
21d80 65 72 70 6f 6c 61 74 69 6f 6e 5c 6e 5c 6e 6e 5f 77 65 69 67 68 74 20 3d 20 31 31 5c 6e 77 65 69 erpolation\n\nn_weight.=.11\nwei
21da0 67 68 74 5f 6c 69 73 74 20 3d 20 6e 70 2e 6c 69 6e 73 70 61 63 65 28 30 2c 20 31 2c 20 6e 5f 77 ght_list.=.np.linspace(0,.1,.n_w
21dc0 65 69 67 68 74 29 5c 6e 5c 6e 5c 6e 42 5f 6c 32 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 20 eight)\n\n\nB_l2.=.np.zeros((n,.
21de0 6e 5f 77 65 69 67 68 74 29 29 5c 6e 5c 6e 42 5f 77 61 73 73 20 3d 20 6e 70 2e 63 6f 70 79 28 42 n_weight))\n\nB_wass.=.np.copy(B
21e00 5f 6c 32 29 5c 6e 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 30 2c 20 6e 5f 77 65 69 67 _l2)\n\nfor.i.in.range(0,.n_weig
21e20 68 74 29 3a 5c 6e 20 20 20 20 77 65 69 67 68 74 20 3d 20 77 65 69 67 68 74 5f 6c 69 73 74 5b 69 ht):\n....weight.=.weight_list[i
21e40 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 31 20 2d 20 77 ]\n....weights.=.np.array([1.-.w
21e60 65 69 67 68 74 2c 20 77 65 69 67 68 74 5d 29 5c 6e 20 20 20 20 42 5f 6c 32 5b 3a 2c 20 69 5d 20 eight,.weight])\n....B_l2[:,.i].
21e80 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 3a 2c 20 =.A.dot(weights)\n....B_wass[:,.
21ea0 69 5d 20 3d 20 6f 74 2e 75 6e 62 61 6c 61 6e 63 65 64 2e 62 61 72 79 63 65 6e 74 65 72 5f 75 6e i].=.ot.unbalanced.barycenter_un
21ec0 62 61 6c 61 6e 63 65 64 28 41 2c 20 4d 2c 20 72 65 67 2c 20 61 6c 70 68 61 2c 20 77 65 69 67 68 balanced(A,.M,.reg,.alpha,.weigh
21ee0 74 73 29 5c 6e 5c 6e 5c 6e 23 20 70 6c 6f 74 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 5c 6e 5c ts)\n\n\n#.plot.interpolation\n\
21f00 6e 70 6c 2e 66 69 67 75 72 65 28 33 29 5c 6e 5c 6e 63 6d 61 70 20 3d 20 70 6c 2e 63 6d 2e 67 65 npl.figure(3)\n\ncmap.=.pl.cm.ge
21f20 74 5f 63 6d 61 70 28 27 76 69 72 69 64 69 73 27 29 5c 6e 76 65 72 74 73 20 3d 20 5b 5d 5c 6e 7a t_cmap('viridis')\nverts.=.[]\nz
21f40 73 20 3d 20 77 65 69 67 68 74 5f 6c 69 73 74 5c 6e 66 6f 72 20 69 2c 20 7a 20 69 6e 20 65 6e 75 s.=.weight_list\nfor.i,.z.in.enu
21f60 6d 65 72 61 74 65 28 7a 73 29 3a 5c 6e 20 20 20 20 79 73 20 3d 20 42 5f 6c 32 5b 3a 2c 20 69 5d merate(zs):\n....ys.=.B_l2[:,.i]
21f80 5c 6e 20 20 20 20 76 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 \n....verts.append(list(zip(x,.y
21fa0 73 29 29 29 5c 6e 5c 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 s)))\n\nax.=.pl.gcf().gca(projec
21fc0 74 69 6f 6e 3d 27 33 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 tion='3d')\n\npoly.=.PolyCollect
21fe0 69 6f 6e 28 76 65 72 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 ion(verts,.facecolors=[cmap(a).f
22000 6f 72 20 61 20 69 6e 20 77 65 69 67 68 74 5f 6c 69 73 74 5d 29 5c 6e 70 6f 6c 79 2e 73 65 74 5f or.a.in.weight_list])\npoly.set_
22020 61 6c 70 68 61 28 30 2e 37 29 5c 6e 61 78 2e 61 64 64 5f 63 6f 6c 6c 65 63 74 69 6f 6e 33 64 28 alpha(0.7)\nax.add_collection3d(
22040 70 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 5c 6e 61 78 2e 73 65 74 5f 78 poly,.zs=zs,.zdir='y')\nax.set_x
22060 6c 61 62 65 6c 28 27 78 27 29 5c 6e 61 78 2e 73 65 74 5f 78 6c 69 6d 33 64 28 30 2c 20 6e 29 5c label('x')\nax.set_xlim3d(0,.n)\
22080 6e 61 78 2e 73 65 74 5f 79 6c 61 62 65 6c 28 72 27 24 5c 5c 61 6c 70 68 61 24 27 29 5c 6e 61 78 nax.set_ylabel(r'$\\alpha$')\nax
220a0 2e 73 65 74 5f 79 6c 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 .set_ylim3d(0,.1)\nax.set_zlabel
220c0 28 27 27 29 5c 6e 61 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 ('')\nax.set_zlim3d(0,.B_l2.max(
220e0 29 20 2a 20 31 2e 30 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 ).*.1.01)\npl.title('Barycenter.
22100 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 77 69 74 68 20 6c 32 27 29 5c 6e 70 6c 2e 74 69 67 68 interpolation.with.l2')\npl.tigh
22120 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 29 5c 6e 63 6d 61 70 t_layout()\n\npl.figure(4)\ncmap
22140 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 6e 76 65 .=.pl.cm.get_cmap('viridis')\nve
22160 72 74 73 20 3d 20 5b 5d 5c 6e 7a 73 20 3d 20 77 65 69 67 68 74 5f 6c 69 73 74 5c 6e 66 6f 72 20 rts.=.[]\nzs.=.weight_list\nfor.
22180 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 20 3d i,.z.in.enumerate(zs):\n....ys.=
221a0 20 42 5f 77 61 73 73 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_wass[:,.i]\n....verts.append(
221c0 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
221e0 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.
22200 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
22220 72 73 3d 5b 63 6d 61 70 28 61 29 20 66 6f 72 20 61 20 69 6e 20 77 65 69 67 68 74 5f 6c 69 73 74 rs=[cmap(a).for.a.in.weight_list
22240 5d 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 ])\npoly.set_alpha(0.7)\nax.add_
22260 63 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 collection3d(poly,.zs=zs,.zdir='
22280 79 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 y')\nax.set_xlabel('x')\nax.set_
222a0 78 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 72 27 24 5c xlim3d(0,.n)\nax.set_ylabel(r'$\
222c0 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
222e0 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
22300 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
22320 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.
22340 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 Wasserstein')\npl.tight_layout()
22360 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d \n\npl.show()".......].....}...]
22380 2c 0a 20 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 ,..."metadata":.{....."kernelspe
223a0 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 22 3a 20 22 50 79 74 c":.{......."display_name":."Pyt
223c0 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f hon.3",......."language":."pytho
223e0 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 n",......."name":."python3".....
22400 7d 2c 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":.{.......
22420 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 6e 61 "codemirror_mode":.{........."na
22440 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e me":."ipython",........."version
22460 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 ":.3.......},......."file_extens
22480 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 ion":.".py",......."mimetype":."
224a0 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 text/x-python",......."name":."p
224c0 79 74 68 6f 6e 22 2c 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 ython",......."nbconvert_exporte
224e0 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 r":."python",......."pygments_le
22500 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e xer":."ipython3",......."version
22520 22 3a 20 22 33 2e 36 2e 38 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 ":."3.6.8".....}...},..."nbforma
22540 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b t":.4,..."nbformat_minor":.0.}PK
22560 03 04 14 00 00 00 00 00 77 6d 7d 4e a0 07 79 4d 23 16 00 00 23 16 00 00 1c 00 00 00 70 6c 6f 74 ........wm}N..yM#...#.......plot
22580 5f 6f 74 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 63 65 6c _otda_color_images.ipynb{..."cel
225a0 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 ls":.[.....{......."cell_type":.
225c0 22 63 6f 64 65 22 2c 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 "code",......."execution_count":
225e0 20 6e 75 6c 6c 2c 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 .null,......."metadata":.{......
22600 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 2c 0a 20 ..."collapsed":.false.......},..
22620 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ....."outputs":.[],......."sourc
22640 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
22660 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 e".......].....},.....{......."c
22680 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 ell_type":."markdown",......."me
226a0 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 tadata":.{},......."source":.[..
226c0 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 66 6f 72 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 ......."\n#.OT.for.image.color.a
226e0 64 61 70 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 70 72 65 73 daptation\n\n\nThis.example.pres
22700 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 6f 72 ents.a.way.of.transferring.color
22720 73 20 62 65 74 77 65 65 6e 20 74 77 6f 20 69 6d 61 67 65 73 5c 6e 77 69 74 68 20 4f 70 74 69 6d s.between.two.images\nwith.Optim
22740 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 36 al.Transport.as.introduced.in.[6
22760 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 69 ]\n\n[6].Ferradans,.S.,.Papadaki
22780 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 2e s,.N.,.Peyre,.G.,.&.Aujol,.J..F.
227a0 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 6f .(2014).\nRegularized.discrete.o
227c0 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 20 ptimal.transport.\nSIAM.Journal.
227e0 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 2d on.Imaging.Sciences,.7(3),.1853-
22800 31 38 38 32 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 1882.\n\n".......].....},.....{.
22820 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 0a 20 20 20 20 20 ......"cell_type":."code",......
22840 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 0a 20 20 20 20 20 20 ."execution_count":.null,.......
22860 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
22880 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 ":.false.......},......."outputs
228a0 22 3a 20 5b 5d 2c 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":.[........
228c0 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 6d 69 2e ."#.Authors:.Remi.Flamary.<remi.
228e0 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 20 53 74 flamary@unice.fr>\n#..........St
22900 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 40 67 6d anislas.Chambon.<stan.chambon@gm
22920 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 69 63 65 ail.com>\n#\n#.License:.MIT.Lice
22940 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 6f 6d 20 nse\n\nimport.numpy.as.np\nfrom.
22960 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 6d 61 74 scipy.import.ndimage\nimport.mat
22980 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
229a0 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 32 \n\nr.=.np.random.RandomState(42
229c0 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 5c )\n\n\ndef.im2mat(I):\n....\"\"\
229e0 22 43 6f 6e 76 65 72 74 73 20 61 6e 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e "Converts.an.image.to.matrix.(on
22a00 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 65 74 e.pixel.per.line)\"\"\"\n....ret
22a20 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 73 68 urn.I.reshape((I.shape[0].*.I.sh
22a40 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 6d 61 ape[1],.I.shape[2]))\n\n\ndef.ma
22a60 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 76 65 t2im(X,.shape):\n....\"\"\"Conve
22a80 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\"\
22aa0 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)
22ac0 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 72 6e \n\n\ndef.minmax(I):\n....return
22ae0 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 0a 20 20 20 20 7d .np.clip(I,.0,.1)".......].....}
22b00 2c 0a 20 20 20 20 7b 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
22b20 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 down",......."metadata":.{},....
22b40 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 61 74 65 ..."source":.[........."Generate
22b60 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 .data\n-------------\n\n".......
22b80 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ].....},.....{......."cell_type"
22ba0 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 :."code",......."execution_count
22bc0 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 ":.null,......."metadata":.{....
22be0 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 2c ....."collapsed":.false.......},
22c00 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 ......."outputs":.[],......."sou
22c20 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 rce":.[........."#.Loading.image
22c40 73 5c 6e 49 31 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 s\nI1.=.ndimage.imread('../data/
22c60 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 ocean_day.jpg').astype(np.float6
22c80 34 29 20 2f 20 32 35 36 5c 6e 49 32 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 4)./.256\nI2.=.ndimage.imread('.
22ca0 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 2e 61 73 74 79 70 65 ./data/ocean_sunset.jpg').astype
22cc0 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 5c 6e 5c 6e 58 31 20 3d 20 69 6d 32 6d 61 (np.float64)./.256\n\nX1.=.im2ma
22ce0 74 28 49 31 29 5c 6e 58 32 20 3d 20 69 6d 32 6d 61 74 28 49 32 29 5c 6e 5c 6e 23 20 74 72 61 69 t(I1)\nX2.=.im2mat(I2)\n\n#.trai
22d00 6e 69 6e 67 20 73 61 6d 70 6c 65 73 5c 6e 6e 62 20 3d 20 31 30 30 30 5c 6e 69 64 78 31 20 3d 20 ning.samples\nnb.=.1000\nidx1.=.
22d20 72 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c r.randint(X1.shape[0],.size=(nb,
22d40 29 29 5c 6e 69 64 78 32 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d ))\nidx2.=.r.randint(X2.shape[0]
22d60 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 5c 6e 58 73 20 3d 20 58 31 5b 69 64 78 31 2c 20 3a ,.size=(nb,))\n\nXs.=.X1[idx1,.:
22d80 5d 5c 6e 58 74 20 3d 20 58 32 5b 69 64 78 32 2c 20 3a 5d 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 ]\nXt.=.X2[idx2,.:]".......]....
22da0 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 .},.....{......."cell_type":."ma
22dc0 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 rkdown",......."metadata":.{},..
22de0 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 50 6c 6f 74 20 6f ....."source":.[........."Plot.o
22e00 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d riginal.image\n-----------------
22e20 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 --\n\n".......].....},.....{....
22e40 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 0a 20 20 20 20 20 20 22 65 ..."cell_type":."code",......."e
22e60 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 22 6d 65 xecution_count":.null,......."me
22e80 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":.
22ea0 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 false.......},......."outputs":.
22ec0 5b 5d 2c 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 [],......."source":.[........."p
22ee0 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 29 29 5c 6e 5c l.figure(1,.figsize=(6.4,.3))\n\
22f00 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 69 6d 73 68 6f 77 28 npl.subplot(1,.2,.1)\npl.imshow(
22f20 49 31 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 I1)\npl.axis('off')\npl.title('I
22f40 6d 61 67 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 mage.1')\n\npl.subplot(1,.2,.2)\
22f60 6e 70 6c 2e 69 6d 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 npl.imshow(I2)\npl.axis('off')\n
22f80 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 pl.title('Image.2')".......]....
22fa0 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 .},.....{......."cell_type":."ma
22fc0 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 rkdown",......."metadata":.{},..
22fe0 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 63 61 74 74 65 ....."source":.[........."Scatte
23000 72 20 70 6c 6f 74 20 6f 66 20 63 6f 6c 6f 72 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d r.plot.of.colors\n--------------
23020 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 --------\n\n".......].....},....
23040 20 7b 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 0a 20 20 .{......."cell_type":."code",...
23060 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 0a 20 20 20 ...."execution_count":.null,....
23080 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
230a0 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 sed":.false.......},......."outp
230c0 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 uts":.[],......."source":.[.....
230e0 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 28 36 2e 34 2c 20 ...."pl.figure(2,.figsize=(6.4,.
23100 33 29 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 3))\n\npl.subplot(1,.2,.1)\npl.s
23120 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 2c 20 63 3d 58 73 29 catter(Xs[:,.0],.Xs[:,.2],.c=Xs)
23140 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 61 62 \npl.axis([0,.1,.0,.1])\npl.xlab
23160 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 6c el('Red')\npl.ylabel('Blue')\npl
23180 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 74 28 .title('Image.1')\n\npl.subplot(
231a0 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 2c 20 30 5d 2c 20 58 1,.2,.2)\npl.scatter(Xt[:,.0],.X
231c0 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 30 2c 20 31 2c 20 30 t[:,.2],.c=Xt)\npl.axis([0,.1,.0
231e0 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 6c 2e 79 6c 61 62 ,.1])\npl.xlabel('Red')\npl.ylab
23200 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 32 27 29 5c el('Blue')\npl.title('Image.2')\
23220 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 0a 20 20 20 20 npl.tight_layout()".......].....
23240 7d 2c 0a 20 20 20 20 7b 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
23260 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 kdown",......."metadata":.{},...
23280 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 6e 73 74 61 6e 74 ...."source":.[........."Instant
232a0 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 72 74 20 61 6c 67 iate.the.different.transport.alg
232c0 6f 72 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d orithms.and.fit.them\n----------
232e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
23300 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 -----------------\n\n".......]..
23320 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ...},.....{......."cell_type":."
23340 63 6f 64 65 22 2c 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 code",......."execution_count":.
23360 6e 75 6c 6c 2c 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 null,......."metadata":.{.......
23380 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 2c 0a 20 20 .."collapsed":.false.......},...
233a0 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 ...."outputs":.[],......."source
233c0 22 3a 20 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 ":.[........."#.EMDTransport\not
233e0 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 29 5c 6e 6f 74 5f _emd.=.ot.da.EMDTransport()\not_
23400 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 20 53 69 6e 6b 68 emd.fit(Xs=Xs,.Xt=Xt)\n\n#.Sinkh
23420 6f 72 6e 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 ornTransport\not_sinkhorn.=.ot.d
23440 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)\
23460 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
23480 5c 6e 23 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 28 75 \n#.prediction.between.images.(u
234a0 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 61 73 sing.out.of.sample.prediction.as
234c0 20 69 6e 20 5b 36 5d 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 .in.[6])\ntransp_Xs_emd.=.ot_emd
234e0 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 74 72 61 6e 73 70 5f 58 74 5f 65 6d 64 .transform(Xs=X1)\ntransp_Xt_emd
23500 20 3d 20 6f 74 5f 65 6d 64 2e 69 6e 76 65 72 73 65 5f 74 72 61 6e 73 66 6f 72 6d 28 58 74 3d 58 .=.ot_emd.inverse_transform(Xt=X
23520 32 29 5c 6e 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 2)\n\ntransp_Xs_sinkhorn.=.ot_si
23540 6e 6b 68 6f 72 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 74 72 61 6e 73 70 5f nkhorn.transform(Xs=X1)\ntransp_
23560 58 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 69 6e 76 65 72 73 Xt_sinkhorn.=.ot_sinkhorn.invers
23580 65 5f 74 72 61 6e 73 66 6f 72 6d 28 58 74 3d 58 32 29 5c 6e 5c 6e 49 31 74 20 3d 20 6d 69 6e 6d e_transform(Xt=X2)\n\nI1t.=.minm
235a0 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 2c 20 49 31 2e 73 68 61 70 ax(mat2im(transp_Xs_emd,.I1.shap
235c0 65 29 29 5c 6e 49 32 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 e))\nI2t.=.minmax(mat2im(transp_
235e0 58 74 5f 65 6d 64 2c 20 49 32 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 49 31 74 65 20 3d 20 6d 69 6e Xt_emd,.I2.shape))\n\nI1te.=.min
23600 6d 61 78 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 max(mat2im(transp_Xs_sinkhorn,.I
23620 31 2e 73 68 61 70 65 29 29 5c 6e 49 32 74 65 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 1.shape))\nI2te.=.minmax(mat2im(
23640 74 72 61 6e 73 70 5f 58 74 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 32 2e 73 68 61 70 65 29 29 22 0a transp_Xt_sinkhorn,.I2.shape))".
23660 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c ......].....},.....{......."cell
23680 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 0a 20 20 20 20 20 20 22 6d 65 74 61 64 _type":."markdown",......."metad
236a0 61 74 61 22 3a 20 7b 7d 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 ata":.{},......."source":.[.....
236c0 20 20 20 20 22 50 6c 6f 74 20 6e 65 77 20 69 6d 61 67 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...."Plot.new.images\n----------
236e0 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a -----\n\n".......].....},.....{.
23700 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 0a 20 20 20 20 20 ......"cell_type":."code",......
23720 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 0a 20 20 20 20 20 20 ."execution_count":.null,.......
23740 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
23760 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 ":.false.......},......."outputs
23780 22 3a 20 5b 5d 2c 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":.[........
237a0 20 22 70 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 38 2c 20 34 29 29 5c 6e ."pl.figure(3,.figsize=(8,.4))\n
237c0 5c 6e 70 6c 2e 73 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 \npl.subplot(2,.3,.1)\npl.imshow
237e0 28 49 31 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 (I1)\npl.axis('off')\npl.title('
23800 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 32 29 Image.1')\n\npl.subplot(2,.3,.2)
23820 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 \npl.imshow(I1t)\npl.axis('off')
23840 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 27 29 5c 6e 5c 6e 70 \npl.title('Image.1.Adapt')\n\np
23860 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 l.subplot(2,.3,.3)\npl.imshow(I1
23880 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 65 28 27 49 te)\npl.axis('off')\npl.title('I
238a0 6d 61 67 65 20 31 20 41 64 61 70 74 20 28 72 65 67 29 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c mage.1.Adapt.(reg)')\n\npl.subpl
238c0 6f 74 28 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 ot(2,.3,.4)\npl.imshow(I2)\npl.a
238e0 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 5c xis('off')\npl.title('Image.2')\
23900 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 35 29 5c 6e 70 6c 2e 69 6d 73 68 6f n\npl.subplot(2,.3,.5)\npl.imsho
23920 77 28 49 32 74 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 w(I2t)\npl.axis('off')\npl.title
23940 28 27 49 6d 61 67 65 20 32 20 41 64 61 70 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 ('Image.2.Adapt')\n\npl.subplot(
23960 32 2c 20 33 2c 20 36 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 65 29 5c 6e 70 6c 2e 61 78 2,.3,.6)\npl.imshow(I2te)\npl.ax
23980 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 20 41 64 61 is('off')\npl.title('Image.2.Ada
239a0 70 74 20 28 72 65 67 29 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c pt.(reg)')\npl.tight_layout()\n\
239c0 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 npl.show()".......].....}...],..
239e0 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":
23a00 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
23a20 20 33 22 2c 0a 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 2c .3",......."language":."python",
23a40 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a ......."name":."python3".....},.
23a60 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 63 6f ...."language_info":.{......."co
23a80 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 6e 61 6d 65 22 demirror_mode":.{........."name"
23aa0 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 :."ipython",........."version":.
23ac0 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 3.......},......."file_extension
23ae0 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 ":.".py",......."mimetype":."tex
23b00 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 t/x-python",......."name":."pyth
23b20 6f 6e 22 2c 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 72 22 3a on",......."nbconvert_exporter":
23b40 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 ."python",......."pygments_lexer
23b60 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 ":."ipython3",......."version":.
23b80 22 33 2e 36 2e 37 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a "3.6.7".....}...},..."nbformat":
23ba0 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 01 02 14 .4,..."nbformat_minor":.0.}PK...
23bc0 03 14 00 00 00 00 00 da 74 d9 4e b2 b7 a9 98 a6 0c 00 00 a6 0c 00 00 11 00 00 00 00 00 00 00 00 ........t.N.....................
23be0 00 00 00 b4 81 00 00 00 00 70 6c 6f 74 5f 55 4f 54 5f 31 44 2e 69 70 79 6e 62 50 4b 01 02 14 03 .........plot_UOT_1D.ipynbPK....
23c00 14 00 00 00 00 00 2d 60 cb 4c 88 ac 62 ba 81 11 00 00 81 11 00 00 11 00 00 00 00 00 00 00 00 00 ......-`.L..b...................
23c20 00 00 b4 81 d5 0c 00 00 70 6c 6f 74 5f 67 72 6f 6d 6f 76 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 ........plot_gromov.ipynbPK.....
23c40 00 00 00 00 00 a7 6e a2 4c ae 38 61 57 26 14 00 00 26 14 00 00 0e 00 00 00 00 00 00 00 00 00 00 ......n.L.8aW&...&..............
23c60 00 b4 81 85 1e 00 00 70 6c 6f 74 5f 57 44 41 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 .......plot_WDA.ipynbPK.........
23c80 00 18 7f a2 4c aa d3 d6 af 27 23 00 00 27 23 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 b4 81 d7 ....L....'#..'#.................
23ca0 32 00 00 70 6c 6f 74 5f 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 2e 69 70 79 6e 62 50 2..plot_gromov_barycenter.ipynbP
23cc0 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 17 03 7f 9a 5e 13 00 00 5e 13 00 00 16 00 00 00 00 K..........-`.L....^...^........
23ce0 00 00 00 00 00 00 00 b4 81 38 56 00 00 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e 69 70 .........8V..plot_optim_OTreg.ip
23d00 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c d1 72 b5 4d f4 1c 00 00 f4 1c 00 00 12 ynbPK..........-`.L.r.M.........
23d20 00 00 00 00 00 00 00 00 00 00 00 b4 81 ca 69 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 64 32 2e 69 70 ..............i..plot_otda_d2.ip
23d40 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c a9 b8 76 f6 f8 19 00 00 f8 19 00 00 1f ynbPK..........-`.L..v..........
23d60 00 00 00 00 00 00 00 00 00 00 00 b4 81 ee 86 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 73 65 6d 69 5f .................plot_otda_semi_
23d80 73 75 70 65 72 76 69 73 65 64 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c supervised.ipynbPK..........-`.L
23da0 27 4a df 9c 9d 0d 00 00 9d 0d 00 00 10 00 00 00 00 00 00 00 00 00 00 00 b4 81 23 a1 00 00 70 6c 'J........................#...pl
23dc0 6f 74 5f 4f 54 5f 31 44 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 77 6d 7d 4e 6b b3 ot_OT_1D.ipynbPK..........wm}Nk.
23de0 7a d2 55 26 00 00 55 26 00 00 15 00 00 00 00 00 00 00 00 00 00 00 b4 81 ee ae 00 00 70 6c 6f 74 z.U&..U&....................plot
23e00 5f 73 74 6f 63 68 61 73 74 69 63 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 ec 45 43 _stochastic.ipynbPK...........EC
23e20 4d 80 1a 80 7c 9f 15 00 00 9f 15 00 00 18 00 00 00 00 00 00 00 00 00 00 00 b4 81 76 d5 00 00 70 M...|......................v...p
23e40 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 14 00 00 lot_barycenter_1D.ipynbPK.......
23e60 00 00 00 2d 60 cb 4c cc bf 84 66 2d 18 00 00 2d 18 00 00 17 00 00 00 00 00 00 00 00 00 00 00 b4 ...-`.L...f-...-................
23e80 81 4b eb 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 63 6c 61 73 73 65 73 2e 69 70 79 6e 62 50 4b 01 02 .K...plot_otda_classes.ipynbPK..
23ea0 14 03 14 00 00 00 00 00 ec 45 43 4d df ba b4 fb aa 10 00 00 aa 10 00 00 17 00 00 00 00 00 00 00 .........ECM....................
23ec0 00 00 00 00 b4 81 ad 03 01 00 70 6c 6f 74 5f 4f 54 5f 31 44 5f 73 6d 6f 6f 74 68 2e 69 70 79 6e ..........plot_OT_1D_smooth.ipyn
23ee0 62 50 4b 01 02 14 03 14 00 00 00 00 00 77 6d 7d 4e 80 8e 14 e4 3b 18 00 00 3b 18 00 00 25 00 00 bPK..........wm}N....;...;...%..
23f00 00 00 00 00 00 00 00 00 00 b4 81 8c 14 01 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 ...............plot_otda_mapping
23f20 5f 63 6f 6c 6f 72 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 _colors_images.ipynbPK..........
23f40 ec 45 43 4d c7 ed 71 d0 e2 0d 00 00 e2 0d 00 00 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 0a 2d .ECM..q........."..............-
23f60 01 00 70 6c 6f 74 5f 66 72 65 65 5f 73 75 70 70 6f 72 74 5f 62 61 72 79 63 65 6e 74 65 72 2e 69 ..plot_free_support_barycenter.i
23f80 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 89 74 d9 4e 76 0a 6d b5 0e 1a 00 00 0e 1a 00 00 pynbPK...........t.Nv.m.........
23fa0 0e 00 00 00 00 00 00 00 00 00 00 00 b4 81 2c 3b 01 00 70 6c 6f 74 5f 66 67 77 2e 69 70 79 6e 62 ..............,;..plot_fgw.ipynb
23fc0 50 4b 01 02 14 03 14 00 00 00 00 00 89 74 d9 4e 2a a3 88 70 7d 20 00 00 7d 20 00 00 19 00 00 00 PK...........t.N*..p}...}.......
23fe0 00 00 00 00 00 00 00 00 b4 81 66 55 01 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 66 67 ..........fU..plot_barycenter_fg
24000 77 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 3e 1d 30 6f d5 1a 00 00 d5 w.ipynbPK..........-`.L>.0o.....
24020 1a 00 00 16 00 00 00 00 00 00 00 00 00 00 00 b4 81 1a 76 01 00 70 6c 6f 74 5f 4f 54 5f 4c 31 5f ..................v..plot_OT_L1_
24040 76 73 5f 4c 32 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c f9 b0 b7 c4 b9 vs_L2.ipynbPK..........-`.L.....
24060 1d 00 00 b9 1d 00 00 24 00 00 00 00 00 00 00 00 00 00 00 b4 81 23 91 01 00 70 6c 6f 74 5f 62 61 .......$.............#...plot_ba
24080 72 79 63 65 6e 74 65 72 5f 6c 70 5f 76 73 5f 65 6e 74 72 6f 70 69 63 2e 69 70 79 6e 62 50 4b 01 rycenter_lp_vs_entropic.ipynbPK.
240a0 02 14 03 14 00 00 00 00 00 89 74 d9 4e 43 f7 2c fd 72 13 00 00 72 13 00 00 18 00 00 00 00 00 00 ..........t.NC.,.r...r..........
240c0 00 00 00 00 00 b4 81 1e af 01 00 70 6c 6f 74 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 69 70 ...........plot_OT_2D_samples.ip
240e0 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c b5 c3 fd 1f 0a 15 00 00 0a 15 00 00 1e ynbPK..........-`.L.............
24100 00 00 00 00 00 00 00 00 00 00 00 b4 81 c6 c2 01 00 70 6c 6f 74 5f 6f 74 64 61 5f 6c 69 6e 65 61 .................plot_otda_linea
24120 72 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 2d 60 cb 4c 49 r_mapping.ipynbPK..........-`.LI
24140 c5 7b 83 fa 16 00 00 fa 16 00 00 17 00 00 00 00 00 00 00 00 00 00 00 b4 81 0c d8 01 00 70 6c 6f .{...........................plo
24160 74 5f 6f 74 64 61 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 t_otda_mapping.ipynbPK..........
24180 2d 60 cb 4c e5 eb aa 89 7c 10 00 00 7c 10 00 00 16 00 00 00 00 00 00 00 00 00 00 00 b4 81 3b ef -`.L....|...|.................;.
241a0 01 00 70 6c 6f 74 5f 63 6f 6d 70 75 74 65 5f 65 6d 64 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 ..plot_compute_emd.ipynbPK......
241c0 00 00 00 00 ec 45 43 4d 58 b0 17 7b e5 0e 00 00 e5 0e 00 00 23 00 00 00 00 00 00 00 00 00 00 00 .....ECMX..{........#...........
241e0 b4 81 eb ff 01 00 70 6c 6f 74 5f 63 6f 6e 76 6f 6c 75 74 69 6f 6e 61 6c 5f 62 61 72 79 63 65 6e ......plot_convolutional_barycen
24200 74 65 72 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 db 74 d9 4e c1 fa b5 ab 13 16 00 ter.ipynbPK...........t.N.......
24220 00 13 16 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 b4 81 11 0f 02 00 70 6c 6f 74 5f 55 4f 54 5f .......................plot_UOT_
24240 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 14 00 00 00 00 00 77 barycenter_1D.ipynbPK..........w
24260 6d 7d 4e a0 07 79 4d 23 16 00 00 23 16 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 b4 81 5e 25 02 m}N..yM#...#.................^%.
24280 00 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 62 50 4b 05 .plot_otda_color_images.ipynbPK.
242a0 06 00 00 00 00 19 00 19 00 e2 06 00 00 bb 3b 02 00 00 00 ..............;....