summaryrefslogtreecommitdiff
path: root/docs/source/auto_examples/auto_examples_jupyter.zip
blob: 304bb06a0a489d3811c988f55097c2191ee78370 (plain)
ofshex dumpascii
0000 50 4b 03 04 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 70 6c PK........-`.L..b.............pl
0020 6f 74 5f 67 72 6f 6d 6f 76 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 ot_gromov.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 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 65 78 61 6d 70 6c 65 5c 6e 5c n#.Gromov-Wasserstein.example\n\
0180 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20 73 n\nThis.example.is.designed.to.s
01a0 68 6f 77 20 68 6f 77 20 74 6f 20 75 73 65 20 74 68 65 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 how.how.to.use.the.Gromov-Wasser
01c0 74 73 65 69 6e 20 64 69 73 74 61 6e 63 65 5c 6e 63 6f 6d 70 75 74 61 74 69 6f 6e 20 69 6e 20 50 tsein.distance\ncomputation.in.P
01e0 4f 54 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 OT.\n\n".......].....},.....{...
0200 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",......."
0220 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
0240 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":
0260 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":
0280 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":.[........."
02a0 23 20 41 75 74 68 6f 72 3a 20 45 72 77 61 6e 20 56 61 75 74 69 65 72 20 3c 65 72 77 61 6e 2e 76 #.Author:.Erwan.Vautier.<erwan.v
02c0 61 75 74 69 65 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 4e 69 63 autier@gmail.com>\n#.........Nic
02e0 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 61 2e 66 72 3e 5c 6e olas.Courty.<ncourty@irisa.fr>\n
0300 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 6d 70 #\n#.License:.MIT.License\n\nimp
0320 6f 72 74 20 73 63 69 70 79 20 61 73 20 73 70 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 ort.scipy.as.sp\nimport.numpy.as
0340 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.
0360 70 6c 5c 6e 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d pl\nfrom.mpl_toolkits.mplot3d.im
0380 70 6f 72 74 20 41 78 65 73 33 44 20 20 23 20 6e 6f 71 61 5c 6e 69 6d 70 6f 72 74 20 6f 74 22 0a port.Axes3D..#.noqa\nimport.ot".
03a0 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
03c0 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
03e0 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":.[.....
0400 20 20 20 20 22 53 61 6d 70 6c 65 20 74 77 6f 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 ...."Sample.two.Gaussian.distrib
0420 75 74 69 6f 6e 73 20 28 32 44 20 61 6e 64 20 33 44 29 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d utions.(2D.and.3D)\n------------
0440 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 --------------------------------
0460 2d 5c 6e 5c 6e 54 68 65 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 64 69 73 74 -\n\nThe.Gromov-Wasserstein.dist
0480 61 6e 63 65 20 61 6c 6c 6f 77 73 20 74 6f 20 63 6f 6d 70 75 74 65 20 64 69 73 74 61 6e 63 65 73 ance.allows.to.compute.distances
04a0 20 77 69 74 68 20 73 61 6d 70 6c 65 73 20 74 68 61 74 5c 6e 64 6f 20 6e 6f 74 20 62 65 6c 6f 6e .with.samples.that\ndo.not.belon
04c0 67 20 74 6f 20 74 68 65 20 73 61 6d 65 20 6d 65 74 72 69 63 20 73 70 61 63 65 2e 20 46 6f 72 20 g.to.the.same.metric.space..For.
04e0 64 65 6d 6f 6e 73 74 72 61 74 69 6f 6e 20 70 75 72 70 6f 73 65 2c 20 77 65 20 73 61 6d 70 6c 65 demonstration.purpose,.we.sample
0500 5c 6e 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 69 6e 20 \ntwo.Gaussian.distributions.in.
0520 32 2d 20 61 6e 64 20 33 2d 64 69 6d 65 6e 73 69 6f 6e 61 6c 20 73 70 61 63 65 73 2e 5c 6e 5c 6e 2-.and.3-dimensional.spaces.\n\n
0540 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
0560 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
0580 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
05a0 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.
05c0 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":.[],...
05e0 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 61 6d 70 6c ...."source":.[........."n_sampl
0600 65 73 20 3d 20 33 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 6d 75 5f 73 20 3d 20 es.=.30..#.nb.samples\n\nmu_s.=.
0620 6e 70 2e 61 72 72 61 79 28 5b 30 2c 20 30 5d 29 5c 6e 63 6f 76 5f 73 20 3d 20 6e 70 2e 61 72 72 np.array([0,.0])\ncov_s.=.np.arr
0640 61 79 28 5b 5b 31 2c 20 30 5d 2c 20 5b 30 2c 20 31 5d 5d 29 5c 6e 5c 6e 6d 75 5f 74 20 3d 20 6e ay([[1,.0],.[0,.1]])\n\nmu_t.=.n
0660 70 2e 61 72 72 61 79 28 5b 34 2c 20 34 2c 20 34 5d 29 5c 6e 63 6f 76 5f 74 20 3d 20 6e 70 2e 61 p.array([4,.4,.4])\ncov_t.=.np.a
0680 72 72 61 79 28 5b 5b 31 2c 20 30 2c 20 30 5d 2c 20 5b 30 2c 20 31 2c 20 30 5d 2c 20 5b 30 2c 20 rray([[1,.0,.0],.[0,.1,.0],.[0,.
06a0 30 2c 20 31 5d 5d 29 5c 6e 5c 6e 5c 6e 78 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 0,.1]])\n\n\nxs.=.ot.datasets.ma
06c0 6b 65 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 6d ke_2D_samples_gauss(n_samples,.m
06e0 75 5f 73 2c 20 63 6f 76 5f 73 29 5c 6e 50 20 3d 20 73 70 2e 6c 69 6e 61 6c 67 2e 73 71 72 74 6d u_s,.cov_s)\nP.=.sp.linalg.sqrtm
0700 28 63 6f 76 5f 74 29 5c 6e 78 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 5f (cov_t)\nxt.=.np.random.randn(n_
0720 73 61 6d 70 6c 65 73 2c 20 33 29 2e 64 6f 74 28 50 29 20 2b 20 6d 75 5f 74 22 0a 20 20 20 20 20 samples,.3).dot(P).+.mu_t"......
0740 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
0760 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":
0780 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":.[........."
07a0 50 6c 6f 74 74 69 6e 67 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 2d 2d 2d 2d Plotting.the.distributions\n----
07c0 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 20 20 20 ----------------------\n\n".....
07e0 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
0800 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
0820 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":.{..
0840 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.......
0860 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
0880 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 66 69 67 20 3d 20 70 6c 2e 66 69 67 75 ource":.[........."fig.=.pl.figu
08a0 72 65 28 29 5c 6e 61 78 31 20 3d 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 31 32 31 29 re()\nax1.=.fig.add_subplot(121)
08c0 5c 6e 61 78 31 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 \nax1.plot(xs[:,.0],.xs[:,.1],.'
08e0 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 61 78 +b',.label='Source.samples')\nax
0900 32 20 3d 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 28 31 32 32 2c 20 70 72 6f 6a 65 63 74 2.=.fig.add_subplot(122,.project
0920 69 6f 6e 3d 27 33 64 27 29 5c 6e 61 78 32 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 20 30 5d 2c ion='3d')\nax2.scatter(xt[:,.0],
0940 20 78 74 5b 3a 2c 20 31 5d 2c 20 78 74 5b 3a 2c 20 32 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 5c .xt[:,.1],.xt[:,.2],.color='r')\
0960 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 20 20 20 7b npl.show()".......].....},.....{
0980 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",.
09a0 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
09c0 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 64 69 73 74 61 6e 63 rce":.[........."Compute.distanc
09e0 65 20 6b 65 72 6e 65 6c 73 2c 20 6e 6f 72 6d 61 6c 69 7a 65 20 74 68 65 6d 20 61 6e 64 20 74 68 e.kernels,.normalize.them.and.th
0a00 65 6e 20 64 69 73 70 6c 61 79 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d en.display\n--------------------
0a20 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 --------------------------------
0a40 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".......].....},.....{.
0a60 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",......
0a80 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,.......
0aa0 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
0ac0 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
0ae0 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":.[........
0b00 20 22 43 31 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 ."C1.=.sp.spatial.distance.cdist
0b20 28 78 73 2c 20 78 73 29 5c 6e 43 32 20 3d 20 73 70 2e 73 70 61 74 69 61 6c 2e 64 69 73 74 61 6e (xs,.xs)\nC2.=.sp.spatial.distan
0b40 63 65 2e 63 64 69 73 74 28 78 74 2c 20 78 74 29 5c 6e 5c 6e 43 31 20 2f 3d 20 43 31 2e 6d 61 78 ce.cdist(xt,.xt)\n\nC1./=.C1.max
0b60 28 29 5c 6e 43 32 20 2f 3d 20 43 32 2e 6d 61 78 28 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 ()\nC2./=.C2.max()\n\npl.figure(
0b80 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 32 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 43 31 )\npl.subplot(121)\npl.imshow(C1
0ba0 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 32 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 43 32 )\npl.subplot(122)\npl.imshow(C2
0bc0 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 2c 0a 20 20 20 )\npl.show()".......].....},....
0be0 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"
0c00 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
0c20 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 47 72 6f 6d 6f ource":.[........."Compute.Gromo
0c40 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 70 6c 61 6e 73 20 61 6e 64 20 64 69 73 74 61 6e 63 65 v-Wasserstein.plans.and.distance
0c60 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------------------------------
0c80 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".......]....
0ca0 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
0cc0 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
0ce0 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":.{.........
0d00 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.......},.....
0d20 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":
0d40 20 5b 0a 20 20 20 20 20 20 20 20 22 70 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 5f 73 61 6d 70 6c 65 .[........."p.=.ot.unif(n_sample
0d60 73 29 5c 6e 71 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 5f 73 61 6d 70 6c 65 73 29 5c 6e 5c 6e 67 77 s)\nq.=.ot.unif(n_samples)\n\ngw
0d80 30 2c 20 6c 6f 67 30 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d 6f 76 5f 77 61 73 73 65 0,.log0.=.ot.gromov.gromov_wasse
0da0 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 71 75 61 rstein(\n....C1,.C2,.p,.q,.'squa
0dc0 72 65 5f 6c 6f 73 73 27 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 2c 20 6c 6f 67 3d 54 72 75 65 re_loss',.verbose=True,.log=True
0de0 29 5c 6e 5c 6e 67 77 2c 20 6c 6f 67 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 65 6e 74 72 6f 70 69 )\n\ngw,.log.=.ot.gromov.entropi
0e00 63 5f 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 65 69 6e 28 5c 6e 20 20 20 20 43 31 2c 20 43 c_gromov_wasserstein(\n....C1,.C
0e20 32 2c 20 70 2c 20 71 2c 20 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 65 70 73 69 6c 6f 6e 3d 2,.p,.q,.'square_loss',.epsilon=
0e40 35 65 2d 34 2c 20 6c 6f 67 3d 54 72 75 65 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 5e-4,.log=True,.verbose=True)\n\
0e60 6e 5c 6e 70 72 69 6e 74 28 27 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 64 69 73 n\nprint('Gromov-Wasserstein.dis
0e80 74 61 6e 63 65 73 3a 20 27 20 2b 20 73 74 72 28 6c 6f 67 30 5b 27 67 77 5f 64 69 73 74 27 5d 29 tances:.'.+.str(log0['gw_dist'])
0ea0 29 5c 6e 70 72 69 6e 74 28 27 45 6e 74 72 6f 70 69 63 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 )\nprint('Entropic.Gromov-Wasser
0ec0 73 74 65 69 6e 20 64 69 73 74 61 6e 63 65 73 3a 20 27 20 2b 20 73 74 72 28 6c 6f 67 5b 27 67 77 stein.distances:.'.+.str(log['gw
0ee0 5f 64 69 73 74 27 5d 29 29 5c 6e 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 28 31 30 2c _dist']))\n\n\npl.figure(1,.(10,
0f00 20 35 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e .5))\n\npl.subplot(1,.2,.1)\npl.
0f20 69 6d 73 68 6f 77 28 67 77 30 2c 20 63 6d 61 70 3d 27 6a 65 74 27 29 5c 6e 70 6c 2e 74 69 74 6c imshow(gw0,.cmap='jet')\npl.titl
0f40 65 28 27 47 72 6f 6d 6f 76 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 75 e('Gromov.Wasserstein')\n\npl.su
0f60 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 67 77 2c 20 63 6d bplot(1,.2,.2)\npl.imshow(gw,.cm
0f80 61 70 3d 27 6a 65 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 45 6e 74 72 6f 70 69 63 20 47 72 ap='jet')\npl.title('Entropic.Gr
0fa0 6f 6d 6f 76 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 omov.Wasserstein')\n\npl.show()"
0fc0 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 22 .......].....}...],..."metadata"
0fe0 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 :.{....."kernelspec":.{......."d
1000 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 20 isplay_name":."Python.3",.......
1020 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 6d "language":."python",......."nam
1040 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 61 e":."python3".....},....."langua
1060 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 6f ge_info":.{......."codemirror_mo
1080 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 22 de":.{........."name":."ipython"
10a0 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 0a ,........."version":.3.......},.
10c0 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 20 ......"file_extension":.".py",..
10e0 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 22 ....."mimetype":."text/x-python"
1100 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 20 ,......."name":."python",.......
1120 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 0a "nbconvert_exporter":."python",.
1140 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 6e ......"pygments_lexer":."ipython
1160 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 20 3",......."version":."3.6.5"....
1180 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 6f .}...},..."nbformat":.4,..."nbfo
11a0 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 a7 6e a2 4c ae 38 rmat_minor":.0.}PK.........n.L.8
11c0 61 57 26 14 00 00 26 14 00 00 0e 00 00 00 70 6c 6f 74 5f 57 44 41 2e 69 70 79 6e 62 7b 0a 20 20 aW&...&.......plot_WDA.ipynb{...
11e0 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 "nbformat_minor":.0,...."nbforma
1200 74 22 3a 20 34 2c 20 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 t":.4,...."cells":.[.....{......
1220 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,.......
1240 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
1260 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e urce":.[........."%matplotlib.in
1280 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a line".......],........"outputs":
12a0 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 .[],........"metadata":.{.......
12c0 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 .."collapsed":.false.......}....
12e0 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 .},......{......."source":.[....
1300 20 20 20 20 20 22 5c 6e 23 20 57 61 73 73 65 72 73 74 65 69 6e 20 44 69 73 63 72 69 6d 69 6e 61 ....."\n#.Wasserstein.Discrimina
1320 6e 74 20 41 6e 61 6c 79 73 69 73 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c nt.Analysis\n\n\nThis.example.il
1340 6c 75 73 74 72 61 74 65 20 74 68 65 20 75 73 65 20 6f 66 20 57 44 41 20 61 73 20 70 72 6f 70 6f lustrate.the.use.of.WDA.as.propo
1360 73 65 64 20 69 6e 20 5b 31 31 5d 2e 5c 6e 5c 6e 5c 6e 5b 31 31 5d 20 46 6c 61 6d 61 72 79 2c 20 sed.in.[11].\n\n\n[11].Flamary,.
1380 52 2e 2c 20 43 75 74 75 72 69 2c 20 4d 2e 2c 20 43 6f 75 72 74 79 2c 20 4e 2e 2c 20 26 20 52 61 R.,.Cuturi,.M.,.Courty,.N.,.&.Ra
13a0 6b 6f 74 6f 6d 61 6d 6f 6e 6a 79 2c 20 41 2e 20 28 32 30 31 36 29 2e 5c 6e 57 61 73 73 65 72 73 kotomamonjy,.A..(2016).\nWassers
13c0 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 2e 5c 6e 5c 6e 5c tein.Discriminant.Analysis.\n\n\
13e0 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 n".......],........"cell_type":.
1400 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b "markdown",........"metadata":.{
1420 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e }.....},......{......."execution
1440 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
1460 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":.[...
1480 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 72 ......"#.Author:.Remi.Flamary.<r
14a0 65 6d 69 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 emi.flamary@unice.fr>\n#\n#.Lice
14c0 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
14e0 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.
1500 61 73 20 70 6c 5c 6e 5c 6e 66 72 6f 6d 20 6f 74 2e 64 72 20 69 6d 70 6f 72 74 20 77 64 61 2c 20 as.pl\n\nfrom.ot.dr.import.wda,.
1520 66 64 61 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 fda".......],........"outputs":.
1540 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 20 [],........"metadata":.{........
1560 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 ."collapsed":.false.......}.....
1580 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 },......{......."source":.[.....
15a0 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------------
15c0 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 74 79 70 -\n\n".......],........"cell_typ
15e0 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 e":."markdown",........"metadata
1600 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 ":.{}.....},......{......."execu
1620 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f tion_count":.null,........"cell_
1640 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 type":."code",........"source":.
1660 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 20 3d [........."#%%.parameters\n\nn.=
1680 20 31 30 30 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 20 69 6e 20 73 6f 75 72 63 65 20 61 6e .1000..#.nb.samples.in.source.an
16a0 64 20 74 61 72 67 65 74 20 64 61 74 61 73 65 74 73 5c 6e 6e 7a 20 3d 20 30 2e 32 5c 6e 5c 6e 23 d.target.datasets\nnz.=.0.2\n\n#
16c0 20 67 65 6e 65 72 61 74 65 20 63 69 72 63 6c 65 20 64 61 74 61 73 65 74 5c 6e 74 20 3d 20 6e 70 .generate.circle.dataset\nt.=.np
16e0 2e 72 61 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 73 20 .random.rand(n).*.2.*.np.pi\nys.
1700 3d 20 6e 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 =.np.floor((np.arange(n).*.1.0./
1720 20 6e 20 2a 20 33 29 29 20 2b 20 31 5c 6e 78 73 20 3d 20 6e 70 2e 63 6f 6e 63 61 74 65 6e 61 74 .n.*.3)).+.1\nxs.=.np.concatenat
1740 65 28 5c 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 e(\n....(np.cos(t).reshape((-1,.
1760 31 29 29 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 1)),.np.sin(t).reshape((-1,.1)))
1780 2c 20 31 29 5c 6e 78 73 20 3d 20 78 73 20 2a 20 79 73 2e 72 65 73 68 61 70 65 28 2d 31 2c 20 31 ,.1)\nxs.=.xs.*.ys.reshape(-1,.1
17a0 29 20 2b 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 ).+.nz.*.np.random.randn(n,.2)\n
17c0 5c 6e 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 28 6e 29 20 2a 20 32 20 2a 20 6e 70 \nt.=.np.random.rand(n).*.2.*.np
17e0 2e 70 69 5c 6e 79 74 20 3d 20 6e 70 2e 66 6c 6f 6f 72 28 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 .pi\nyt.=.np.floor((np.arange(n)
1800 20 2a 20 31 2e 30 20 2f 20 6e 20 2a 20 33 29 29 20 2b 20 31 5c 6e 78 74 20 3d 20 6e 70 2e 63 6f .*.1.0./.n.*.3)).+.1\nxt.=.np.co
1820 6e 63 61 74 65 6e 61 74 65 28 5c 6e 20 20 20 20 28 6e 70 2e 63 6f 73 28 74 29 2e 72 65 73 68 61 ncatenate(\n....(np.cos(t).resha
1840 70 65 28 28 2d 31 2c 20 31 29 29 2c 20 6e 70 2e 73 69 6e 28 74 29 2e 72 65 73 68 61 70 65 28 28 pe((-1,.1)),.np.sin(t).reshape((
1860 2d 31 2c 20 31 29 29 29 2c 20 31 29 5c 6e 78 74 20 3d 20 78 74 20 2a 20 79 74 2e 72 65 73 68 61 -1,.1))),.1)\nxt.=.xt.*.yt.resha
1880 70 65 28 2d 31 2c 20 31 29 20 2b 20 6e 7a 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e pe(-1,.1).+.nz.*.np.random.randn
18a0 28 6e 2c 20 32 29 5c 6e 5c 6e 6e 62 6e 6f 69 73 65 20 3d 20 38 5c 6e 5c 6e 78 73 20 3d 20 6e 70 (n,.2)\n\nnbnoise.=.8\n\nxs.=.np
18c0 2e 68 73 74 61 63 6b 28 28 78 73 2c 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 .hstack((xs,.np.random.randn(n,.
18e0 6e 62 6e 6f 69 73 65 29 29 29 5c 6e 78 74 20 3d 20 6e 70 2e 68 73 74 61 63 6b 28 28 78 74 2c 20 nbnoise)))\nxt.=.np.hstack((xt,.
1900 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 22 0a 20 np.random.randn(n,.nbnoise)))"..
1920 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 .....],........"outputs":.[],...
1940 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
1960 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 apsed":.false.......}.....},....
1980 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 ..{......."source":.[........."P
19a0 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 20 5d lot.data\n---------\n\n".......]
19c0 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 ,........"cell_type":."markdown"
19e0 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a ,........"metadata":.{}.....},..
1a00 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
1a20 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c ull,........"cell_type":."code",
1a40 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 ........"source":.[........."#%%
1a60 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 .plot.samples\npl.figure(1,.figs
1a80 69 7a 65 3d 28 36 2e 34 2c 20 33 2e 35 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c ize=(6.4,.3.5))\n\npl.subplot(1,
1aa0 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b .2,.1)\npl.scatter(xt[:,.0],.xt[
1ac0 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='
1ae0 53 6f 75 72 63 65 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 Source.samples')\npl.legend(loc=
1b00 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 64 69 6d 65 6e 0)\npl.title('Discriminant.dimen
1b20 73 69 6f 6e 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e sions')\n\npl.subplot(1,.2,.2)\n
1b40 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 20 32 5d 2c 20 78 74 5b 3a 2c 20 33 5d 2c 20 63 pl.scatter(xt[:,.2],.xt[:,.3],.c
1b60 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 75 72 63 65 20 73 =ys,.marker='+',.label='Source.s
1b80 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 amples')\npl.legend(loc=0)\npl.t
1ba0 69 74 6c 65 28 27 4f 74 68 65 72 20 64 69 6d 65 6e 73 69 6f 6e 73 27 29 5c 6e 70 6c 2e 74 69 67 itle('Other.dimensions')\npl.tig
1bc0 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 ht_layout()".......],........"ou
1be0 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b tputs":.[],........"metadata":.{
1c00 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.....
1c20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 ..}.....},......{......."source"
1c40 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 46 69 73 68 65 72 20 44 69 73 63 :.[........."Compute.Fisher.Disc
1c60 72 69 6d 69 6e 61 6e 74 20 41 6e 61 6c 79 73 69 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d riminant.Analysis\n-------------
1c80 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 20 20 -----------------------\n\n"....
1ca0 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 ...],........"cell_type":."markd
1cc0 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 own",........"metadata":.{}.....
1ce0 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 },......{......."execution_count
1d00 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f ":.null,........"cell_type":."co
1d20 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 de",........"source":.[.........
1d40 22 23 25 25 20 43 6f 6d 70 75 74 65 20 46 44 41 5c 6e 70 20 3d 20 32 5c 6e 5c 6e 50 66 64 61 2c "#%%.Compute.FDA\np.=.2\n\nPfda,
1d60 20 70 72 6f 6a 66 64 61 20 3d 20 66 64 61 28 78 73 2c 20 79 73 2c 20 70 29 22 0a 20 20 20 20 20 .projfda.=.fda(xs,.ys,.p)"......
1d80 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":.[],.......
1da0 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
1dc0 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.......}.....},......{.
1de0 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
1e00 74 65 20 57 61 73 73 65 72 73 74 65 69 6e 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 41 6e 61 6c te.Wasserstein.Discriminant.Anal
1e20 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 2d 2d ysis\n--------------------------
1e40 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 2c 20 0a 20 ---------------\n\n".......],...
1e60 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 ....."cell_type":."markdown",...
1e80 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 ....."metadata":.{}.....},......
1ea0 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c {......."execution_count":.null,
1ec0 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 ........"cell_type":."code",....
1ee0 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 43 6f 6d ...."source":.[........."#%%.Com
1f00 70 75 74 65 20 57 44 41 5c 6e 70 20 3d 20 32 5c 6e 72 65 67 20 3d 20 31 65 30 5c 6e 6b 20 3d 20 pute.WDA\np.=.2\nreg.=.1e0\nk.=.
1f20 31 30 5c 6e 6d 61 78 69 74 65 72 20 3d 20 31 30 30 5c 6e 5c 6e 50 77 64 61 2c 20 70 72 6f 6a 77 10\nmaxiter.=.100\n\nPwda,.projw
1f40 64 61 20 3d 20 77 64 61 28 78 73 2c 20 79 73 2c 20 70 2c 20 72 65 67 2c 20 6b 2c 20 6d 61 78 69 da.=.wda(xs,.ys,.p,.reg,.k,.maxi
1f60 74 65 72 3d 6d 61 78 69 74 65 72 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f ter=maxiter)".......],........"o
1f80 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 utputs":.[],........"metadata":.
1fa0 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....
1fc0 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 63 65 ...}.....},......{......."source
1fe0 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 32 44 20 70 72 6f 6a 65 63 74 69 6f 6e ":.[........."Plot.2D.projection
2000 73 5c 6e 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 s\n-------------------\n\n".....
2020 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
2040 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":.{}.....}
2060 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"
2080 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
20a0 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":.[........."
20c0 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 78 73 70 20 3d 20 70 72 6f 6a 66 64 #%%.plot.samples\n\nxsp.=.projfd
20e0 61 28 78 73 29 5c 6e 78 74 70 20 3d 20 70 72 6f 6a 66 64 61 28 78 74 29 5c 6e 5c 6e 78 73 70 77 a(xs)\nxtp.=.projfda(xt)\n\nxspw
2100 20 3d 20 70 72 6f 6a 77 64 61 28 78 73 29 5c 6e 78 74 70 77 20 3d 20 70 72 6f 6a 77 64 61 28 78 .=.projwda(xs)\nxtpw.=.projwda(x
2120 74 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 t)\n\npl.figure(2)\n\npl.subplot
2140 28 32 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 78 73 70 5b 3a 2c 20 30 5d 2c (2,.2,.1)\npl.scatter(xsp[:,.0],
2160 20 78 73 70 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 .xsp[:,.1],.c=ys,.marker='+',.la
2180 62 65 6c 3d 27 50 72 6f 6a 65 63 74 65 64 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 bel='Projected.samples')\npl.leg
21a0 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 50 72 6f 6a 65 63 74 65 64 20 end(loc=0)\npl.title('Projected.
21c0 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 20 46 44 41 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 training.samples.FDA')\n\npl.sub
21e0 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 78 74 70 5b 3a 2c plot(2,.2,.2)\npl.scatter(xtp[:,
2200 20 30 5d 2c 20 78 74 70 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],.xtp[:,.1],.c=ys,.marker='+'
2220 2c 20 6c 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 ,.label='Projected.samples')\npl
2240 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 50 72 6f 6a 65 63 .legend(loc=0)\npl.title('Projec
2260 74 65 64 20 74 65 73 74 20 73 61 6d 70 6c 65 73 20 46 44 41 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 ted.test.samples.FDA')\n\npl.sub
2280 70 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 78 73 70 77 5b 3a plot(2,.2,.3)\npl.scatter(xspw[:
22a0 2c 20 30 5d 2c 20 78 73 70 77 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 ,.0],.xspw[:,.1],.c=ys,.marker='
22c0 2b 27 2c 20 6c 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 +',.label='Projected.samples')\n
22e0 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 50 72 6f 6a pl.legend(loc=0)\npl.title('Proj
2300 65 63 74 65 64 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 20 57 44 41 27 29 5c 6e 5c 6e ected.training.samples.WDA')\n\n
2320 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 34 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 pl.subplot(2,.2,.4)\npl.scatter(
2340 78 74 70 77 5b 3a 2c 20 30 5d 2c 20 78 74 70 77 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 xtpw[:,.0],.xtpw[:,.1],.c=ys,.ma
2360 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 50 72 6f 6a 65 63 74 65 64 20 73 61 6d 70 6c rker='+',.label='Projected.sampl
2380 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 65 es')\npl.legend(loc=0)\npl.title
23a0 28 27 50 72 6f 6a 65 63 74 65 64 20 74 65 73 74 20 73 61 6d 70 6c 65 73 20 57 44 41 27 29 5c 6e ('Projected.test.samples.WDA')\n
23c0 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a pl.tight_layout()\n\npl.show()".
23e0 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a ......],........"outputs":.[],..
2400 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
2420 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 0a 20 20 5d lapsed":.false.......}.....}...]
2440 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 ,...."metadata":.{....."kernelsp
2460 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 20 22 50 79 ec":.{......."display_name":."Py
2480 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 32 thon.2",........"name":."python2
24a0 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 ",........"language":."python"..
24c0 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 ...},......"language_info":.{...
24e0 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 22 2c ...."mimetype":."text/x-python",
2500 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 ........"nbconvert_exporter":."p
2520 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c ython",........"name":."python",
2540 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c ........"file_extension":.".py",
2560 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 32 22 2c 20 0a 20 20 ........"version":."2.7.12",....
2580 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 32 22 ...."pygments_lexer":."ipython2"
25a0 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 ,........"codemirror_mode":.{...
25c0 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 20 20 20 20 22 6e 61 ......"version":.2,.........."na
25e0 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d me":."ipython".......}.....}...}
2600 0a 7d 50 4b 03 04 14 00 00 00 00 00 18 7f a2 4c aa d3 d6 af 27 23 00 00 27 23 00 00 1c 00 00 00 .}PK...........L....'#..'#......
2620 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 7b 0a 20 20 plot_gromov_barycenter.ipynb{...
2640 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f "cells":.[.....{......."executio
2660 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"
2680 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..
26a0 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":.[],....
26c0 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
26e0 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 20 20 20 22 63 65 6c 6c lib.inline".......],......."cell
2700 5f 74 79 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 _type":."code".....},.....{.....
2720 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"
2740 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 61 73 73 65 72 73 74 :.[........."\n#.Gromov-Wasserst
2760 65 69 6e 20 42 61 72 79 63 65 6e 74 65 72 20 65 78 61 6d 70 6c 65 5c 6e 5c 6e 5c 6e 54 68 69 73 ein.Barycenter.example\n\n\nThis
2780 20 65 78 61 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 .example.is.designed.to.show.how
27a0 20 74 6f 20 75 73 65 20 74 68 65 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 64 .to.use.the.Gromov-Wasserstein.d
27c0 69 73 74 61 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 istance\ncomputation.in.POT.\n\n
27e0 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 6d ".......],......."cell_type":."m
2800 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 65 arkdown".....},.....{......."exe
2820 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
2840 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
2860 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":.[]
2880 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
28a0 75 74 68 6f 72 3a 20 45 72 77 61 6e 20 56 61 75 74 69 65 72 20 3c 65 72 77 61 6e 2e 76 61 75 74 uthor:.Erwan.Vautier.<erwan.vaut
28c0 69 65 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 4e 69 63 6f 6c 61 ier@gmail.com>\n#.........Nicola
28e0 73 20 43 6f 75 72 74 79 20 3c 6e 63 6f 75 72 74 79 40 69 72 69 73 61 2e 66 72 3e 5c 6e 23 5c 6e s.Courty.<ncourty@irisa.fr>\n#\n
2900 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 5c 6e 69 6d 70 6f #.License:.MIT.License\n\n\nimpo
2920 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 73 63 69 70 79 20 61 73 20 rt.numpy.as.np\nimport.scipy.as.
2940 73 70 5c 6e 5c 6e 69 6d 70 6f 72 74 20 73 63 69 70 79 2e 6e 64 69 6d 61 67 65 20 61 73 20 73 70 sp\n\nimport.scipy.ndimage.as.sp
2960 69 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 6c i\nimport.matplotlib.pylab.as.pl
2980 5c 6e 66 72 6f 6d 20 73 6b 6c 65 61 72 6e 20 69 6d 70 6f 72 74 20 6d 61 6e 69 66 6f 6c 64 5c 6e \nfrom.sklearn.import.manifold\n
29a0 66 72 6f 6d 20 73 6b 6c 65 61 72 6e 2e 64 65 63 6f 6d 70 6f 73 69 74 69 6f 6e 20 69 6d 70 6f 72 from.sklearn.decomposition.impor
29c0 74 20 50 43 41 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6f 74 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 t.PCA\n\nimport.ot".......],....
29e0 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".....},...
2a00 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":.{},.......
2a20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 6d 61 63 6f 66 20 4d 44 53 5c "source":.[........."Smacof.MDS\
2a40 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61 6c 6c n----------\n\nThis.function.all
2a60 6f 77 73 20 74 6f 20 66 69 6e 64 20 61 6e 20 65 6d 62 65 64 64 69 6e 67 20 6f 66 20 70 6f 69 6e ows.to.find.an.embedding.of.poin
2a80 74 73 20 67 69 76 65 6e 20 61 20 64 69 73 73 69 6d 69 6c 61 72 69 74 79 20 6d 61 74 72 69 78 5c ts.given.a.dissimilarity.matrix\
2aa0 6e 74 68 61 74 20 77 69 6c 6c 20 62 65 20 67 69 76 65 6e 20 62 79 20 74 68 65 20 6f 75 74 70 75 nthat.will.be.given.by.the.outpu
2ac0 74 20 6f 66 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c t.of.the.algorithm\n\n".......],
2ae0 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 0a 20 ......."cell_type":."markdown"..
2b00 20 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 ...},.....{......."execution_cou
2b20 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":.{..
2b40 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.......
2b60 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
2b80 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 64 65 66 20 73 6d 61 63 6f 66 5f 6d 64 ource":.[........."def.smacof_md
2ba0 73 28 43 2c 20 64 69 6d 2c 20 6d 61 78 5f 69 74 65 72 3d 33 30 30 30 2c 20 65 70 73 3d 31 65 2d s(C,.dim,.max_iter=3000,.eps=1e-
2bc0 39 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 52 65 74 75 72 6e 73 20 61 6e 20 9):\n....\"\"\"\n....Returns.an.
2be0 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 66 6f 6c 6c 6f 77 69 interpolated.point.cloud.followi
2c00 6e 67 20 74 68 65 20 64 69 73 73 69 6d 69 6c 61 72 69 74 79 20 6d 61 74 72 69 78 20 43 5c 6e 20 ng.the.dissimilarity.matrix.C\n.
2c20 20 20 20 75 73 69 6e 67 20 53 4d 41 43 4f 46 20 6d 75 6c 74 69 64 69 6d 65 6e 73 69 6f 6e 61 6c ...using.SMACOF.multidimensional
2c40 20 73 63 61 6c 69 6e 67 20 28 4d 44 53 29 20 69 6e 20 73 70 65 63 69 66 69 63 20 64 69 6d 65 6e .scaling.(MDS).in.specific.dimen
2c60 73 69 6f 6e 6e 65 64 5c 6e 20 20 20 20 74 61 72 67 65 74 20 73 70 61 63 65 5c 6e 5c 6e 20 20 20 sionned\n....target.space\n\n...
2c80 20 50 61 72 61 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 .Parameters\n....----------\n...
2ca0 20 43 20 3a 20 6e 64 61 72 72 61 79 2c 20 73 68 61 70 65 20 28 6e 73 2c 20 6e 73 29 5c 6e 20 20 .C.:.ndarray,.shape.(ns,.ns)\n..
2cc0 20 20 20 20 20 20 64 69 73 73 69 6d 69 6c 61 72 69 74 79 20 6d 61 74 72 69 78 5c 6e 20 20 20 20 ......dissimilarity.matrix\n....
2ce0 64 69 6d 20 3a 20 69 6e 74 5c 6e 20 20 20 20 20 20 20 20 20 20 64 69 6d 65 6e 73 69 6f 6e 20 6f dim.:.int\n..........dimension.o
2d00 66 20 74 68 65 20 74 61 72 67 65 74 65 64 20 73 70 61 63 65 5c 6e 20 20 20 20 6d 61 78 5f 69 74 f.the.targeted.space\n....max_it
2d20 65 72 20 3a 20 20 69 6e 74 5c 6e 20 20 20 20 20 20 20 20 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 er.:..int\n........Maximum.numbe
2d40 72 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 4d 41 43 4f 46 20 61 6c r.of.iterations.of.the.SMACOF.al
2d60 67 6f 72 69 74 68 6d 20 66 6f 72 20 61 20 73 69 6e 67 6c 65 20 72 75 6e 5c 6e 20 20 20 20 65 70 gorithm.for.a.single.run\n....ep
2d80 73 20 3a 20 66 6c 6f 61 74 5c 6e 20 20 20 20 20 20 20 20 72 65 6c 61 74 69 76 65 20 74 6f 6c 65 s.:.float\n........relative.tole
2da0 72 61 6e 63 65 20 77 2e 72 2e 74 20 73 74 72 65 73 73 20 74 6f 20 64 65 63 6c 61 72 65 20 63 6f rance.w.r.t.stress.to.declare.co
2dc0 6e 76 65 72 67 65 5c 6e 5c 6e 20 20 20 20 52 65 74 75 72 6e 73 5c 6e 20 20 20 20 2d 2d 2d 2d 2d nverge\n\n....Returns\n....-----
2de0 2d 2d 5c 6e 20 20 20 20 6e 70 6f 73 20 3a 20 6e 64 61 72 72 61 79 2c 20 73 68 61 70 65 20 28 52 --\n....npos.:.ndarray,.shape.(R
2e00 2c 20 64 69 6d 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 45 6d 62 65 64 64 65 64 20 63 6f 6f 72 ,.dim)\n...........Embedded.coor
2e20 64 69 6e 61 74 65 73 20 6f 66 20 74 68 65 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 70 6f 69 6e dinates.of.the.interpolated.poin
2e40 74 20 63 6c 6f 75 64 20 28 64 65 66 69 6e 65 64 20 77 69 74 68 5c 6e 20 20 20 20 20 20 20 20 20 t.cloud.(defined.with\n.........
2e60 20 20 6f 6e 65 20 69 73 6f 6d 65 74 72 79 29 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 5c 6e 5c 6e 20 ..one.isometry)\n....\"\"\"\n\n.
2e80 20 20 20 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 73 ...rng.=.np.random.RandomState(s
2ea0 65 65 64 3d 33 29 5c 6e 5c 6e 20 20 20 20 6d 64 73 20 3d 20 6d 61 6e 69 66 6f 6c 64 2e 4d 44 53 eed=3)\n\n....mds.=.manifold.MDS
2ec0 28 5c 6e 20 20 20 20 20 20 20 20 64 69 6d 2c 5c 6e 20 20 20 20 20 20 20 20 6d 61 78 5f 69 74 65 (\n........dim,\n........max_ite
2ee0 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 65 2d 39 2c 5c 6e r=max_iter,\n........eps=1e-9,\n
2f00 20 20 20 20 20 20 20 20 64 69 73 73 69 6d 69 6c 61 72 69 74 79 3d 27 70 72 65 63 6f 6d 70 75 74 ........dissimilarity='precomput
2f20 65 64 27 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 70 6f 73 ed',\n........n_init=1)\n....pos
2f40 20 3d 20 6d 64 73 2e 66 69 74 28 43 29 2e 65 6d 62 65 64 64 69 6e 67 5f 5c 6e 5c 6e 20 20 20 20 .=.mds.fit(C).embedding_\n\n....
2f60 6e 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 32 2c nmds.=.manifold.MDS(\n........2,
2f80 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 5c 6e 20 20 \n........max_iter=max_iter,\n..
2fa0 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 73 69 6d 69 ......eps=1e-9,\n........dissimi
2fc0 6c 61 72 69 74 79 3d 5c 22 70 72 65 63 6f 6d 70 75 74 65 64 5c 22 2c 5c 6e 20 20 20 20 20 20 20 larity=\"precomputed\",\n.......
2fe0 20 72 61 6e 64 6f 6d 5f 73 74 61 74 65 3d 72 6e 67 2c 5c 6e 20 20 20 20 20 20 20 20 6e 5f 69 6e .random_state=rng,\n........n_in
3000 69 74 3d 31 29 5c 6e 20 20 20 20 6e 70 6f 73 20 3d 20 6e 6d 64 73 2e 66 69 74 5f 74 72 61 6e 73 it=1)\n....npos.=.nmds.fit_trans
3020 66 6f 72 6d 28 43 2c 20 69 6e 69 74 3d 70 6f 73 29 5c 6e 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 form(C,.init=pos)\n\n....return.
3040 6e 70 6f 73 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 npos".......],......."cell_type"
3060 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 6d 65 74 :."code".....},.....{......."met
3080 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":.[...
30a0 20 20 20 20 20 20 22 44 61 74 61 20 70 72 65 70 61 72 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d ......"Data.preparation\n-------
30c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 54 68 65 20 66 6f 75 72 20 64 69 73 74 72 69 62 75 74 69 ---------\n\nThe.four.distributi
30e0 6f 6e 73 20 61 72 65 20 63 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 34 20 73 69 6d 70 6c ons.are.constructed.from.4.simpl
3100 65 20 69 6d 61 67 65 73 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 0a 20 20 20 20 20 20 22 63 65 e.images\n\n".......],......."ce
3120 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 0a 20 20 20 20 ll_type":."markdown".....},.....
3140 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c {......."execution_count":.null,
3160 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
3180 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.......},......."
31a0 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":.[.
31c0 20 20 20 20 20 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 ........"def.im2mat(I):\n....\"\
31e0 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 20 "\"Converts.and.image.to.matrix.
3200 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 20 (one.pixel.per.line)\"\"\"\n....
3220 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 49 return.I.reshape((I.shape[0].*.I
3240 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 73 71 75 .shape[1],.I.shape[2]))\n\n\nsqu
3260 61 72 65 20 3d 20 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 73 71 75 61 72 65 are.=.spi.imread('../data/square
3280 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)[:,.:,.
32a0 32 5d 20 2f 20 32 35 36 5c 6e 63 72 6f 73 73 20 3d 20 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2]./.256\ncross.=.spi.imread('..
32c0 2f 64 61 74 61 2f 63 72 6f 73 73 2e 70 6e 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 /data/cross.png').astype(np.floa
32e0 74 36 34 29 5b 3a 2c 20 3a 2c 20 32 5d 20 2f 20 32 35 36 5c 6e 74 72 69 61 6e 67 6c 65 20 3d 20 t64)[:,.:,.2]./.256\ntriangle.=.
3300 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 74 72 69 61 6e 67 6c 65 2e 70 6e 67 spi.imread('../data/triangle.png
3320 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 32 5d 20 2f ').astype(np.float64)[:,.:,.2]./
3340 20 32 35 36 5c 6e 73 74 61 72 20 3d 20 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 .256\nstar.=.spi.imread('../data
3360 2f 73 74 61 72 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 /star.png').astype(np.float64)[:
3380 2c 20 3a 2c 20 32 5d 20 2f 20 32 35 36 5c 6e 5c 6e 73 68 61 70 65 73 20 3d 20 5b 73 71 75 61 72 ,.:,.2]./.256\n\nshapes.=.[squar
33a0 65 2c 20 63 72 6f 73 73 2c 20 74 72 69 61 6e 67 6c 65 2c 20 73 74 61 72 5d 5c 6e 5c 6e 53 20 3d e,.cross,.triangle,.star]\n\nS.=
33c0 20 34 5c 6e 78 73 20 3d 20 5b 5b 5d 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 5c .4\nxs.=.[[].for.i.in.range(S)]\
33e0 6e 5c 6e 5c 6e 66 6f 72 20 6e 62 20 69 6e 20 72 61 6e 67 65 28 34 29 3a 5c 6e 20 20 20 20 66 6f n\n\nfor.nb.in.range(4):\n....fo
3400 72 20 69 20 69 6e 20 72 61 6e 67 65 28 38 29 3a 5c 6e 20 20 20 20 20 20 20 20 66 6f 72 20 6a 20 r.i.in.range(8):\n........for.j.
3420 69 6e 20 72 61 6e 67 65 28 38 29 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 68 61 in.range(8):\n............if.sha
3440 70 65 73 5b 6e 62 5d 5b 69 2c 20 6a 5d 20 3c 20 30 2e 39 35 3a 5c 6e 20 20 20 20 20 20 20 20 20 pes[nb][i,.j].<.0.95:\n.........
3460 20 20 20 20 20 20 20 78 73 5b 6e 62 5d 2e 61 70 70 65 6e 64 28 5b 6a 2c 20 38 20 2d 20 69 5d 29 .......xs[nb].append([j,.8.-.i])
3480 5c 6e 5c 6e 78 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 6e 70 2e 61 72 72 61 79 28 78 73 5b 30 \n\nxs.=.np.array([np.array(xs[0
34a0 5d 29 2c 20 6e 70 2e 61 72 72 61 79 28 78 73 5b 31 5d 29 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 ]),.np.array(xs[1]),\n..........
34c0 20 20 20 20 20 6e 70 2e 61 72 72 61 79 28 78 73 5b 32 5d 29 2c 20 6e 70 2e 61 72 72 61 79 28 78 .....np.array(xs[2]),.np.array(x
34e0 73 5b 33 5d 29 5d 29 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 s[3])])".......],......."cell_ty
3500 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".....},.....{......."
3520 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":.[
3540 0a 20 20 20 20 20 20 20 20 22 42 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e ........."Barycenter.computation
3560 5c 6e 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 20 \n----------------------\n\n"...
3580 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 6d 61 72 6b 64 ....],......."cell_type":."markd
35a0 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 65 63 75 74 69 own".....},.....{......."executi
35c0 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
35e0 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.
3600 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":.[],...
3620 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 73 20 3d 20 5b 6c ...."source":.[........."ns.=.[l
3640 65 6e 28 78 73 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 5c 6e 6e 5f en(xs[s]).for.s.in.range(S)]\nn_
3660 73 61 6d 70 6c 65 73 20 3d 20 33 30 5c 6e 5c 6e 5c 22 5c 22 5c 22 43 6f 6d 70 75 74 65 20 61 6c samples.=.30\n\n\"\"\"Compute.al
3680 6c 20 64 69 73 74 61 6e 63 65 73 20 6d 61 74 72 69 63 65 73 20 66 6f 72 20 74 68 65 20 66 6f 75 l.distances.matrices.for.the.fou
36a0 72 20 73 68 61 70 65 73 5c 22 5c 22 5c 22 5c 6e 43 73 20 3d 20 5b 73 70 2e 73 70 61 74 69 61 6c r.shapes\"\"\"\nCs.=.[sp.spatial
36c0 2e 64 69 73 74 61 6e 63 65 2e 63 64 69 73 74 28 78 73 5b 73 5d 2c 20 78 73 5b 73 5d 29 20 66 6f .distance.cdist(xs[s],.xs[s]).fo
36e0 72 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 5c 6e 43 73 20 3d 20 5b 63 73 20 2f 20 63 73 2e r.s.in.range(S)]\nCs.=.[cs./.cs.
3700 6d 61 78 28 29 20 66 6f 72 20 63 73 20 69 6e 20 43 73 5d 5c 6e 5c 6e 70 73 20 3d 20 5b 6f 74 2e max().for.cs.in.Cs]\n\nps.=.[ot.
3720 75 6e 69 66 28 6e 73 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 5c 6e unif(ns[s]).for.s.in.range(S)]\n
3740 70 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 5f 73 61 6d 70 6c 65 73 29 5c 6e 5c 6e 5c 6e 6c 61 6d 62 p.=.ot.unif(n_samples)\n\n\nlamb
3760 64 61 73 74 20 3d 20 5b 5b 66 6c 6f 61 74 28 69 29 20 2f 20 33 2c 20 66 6c 6f 61 74 28 33 20 2d dast.=.[[float(i)./.3,.float(3.-
3780 20 69 29 20 2f 20 33 5d 20 66 6f 72 20 69 20 69 6e 20 5b 31 2c 20 32 5d 5d 5c 6e 5c 6e 43 74 30 .i)./.3].for.i.in.[1,.2]]\n\nCt0
37a0 31 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 6e 66 6f 72 20 69 1.=.[0.for.i.in.range(2)]\nfor.i
37c0 20 69 6e 20 72 61 6e 67 65 28 32 29 3a 5c 6e 20 20 20 20 43 74 30 31 5b 69 5d 20 3d 20 6f 74 2e .in.range(2):\n....Ct01[i].=.ot.
37e0 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 6e 5f 73 61 6d 70 gromov.gromov_barycenters(n_samp
3800 6c 65 73 2c 20 5b 43 73 5b 30 5d 2c 20 43 73 5b 31 5d 5d 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 les,.[Cs[0],.Cs[1]],\n..........
3820 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 ................................
3840 20 5b 70 73 5b 30 5d 2c 20 70 73 5b 31 5d 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .[ps[0],.ps[1]\n................
3860 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 5d 2c 20 70 ............................],.p
3880 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 73 27 2c 20 20 23 ,.lambdast[i],.'square_loss',..#
38a0 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 20 20 20 20 20 20 .5e-4,\n........................
38c0 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 72 3d 31 30 30 2c ...................max_iter=100,
38e0 20 74 6f 6c 3d 31 65 2d 33 29 5c 6e 5c 6e 43 74 30 32 20 3d 20 5b 30 20 66 6f 72 20 69 20 69 6e .tol=1e-3)\n\nCt02.=.[0.for.i.in
3900 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 29 3a 5c 6e .range(2)]\nfor.i.in.range(2):\n
3920 20 20 20 20 43 74 30 32 5b 69 5d 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d 6f 76 5f 62 ....Ct02[i].=.ot.gromov.gromov_b
3940 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 2c 20 43 73 arycenters(n_samples,.[Cs[0],.Cs
3960 5b 32 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 20 20 20 20 [2]],\n.........................
3980 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 5b 32 5d 5c ..................[ps[0],.ps[2]\
39a0 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 20 n...............................
39c0 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 69 5d 2c 20 .............],.p,.lambdast[i],.
39e0 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 20 20 20 20 'square_loss',..#.5e-4,\n.......
3a00 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 ................................
3a20 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 6e 5c 6e 43 ....max_iter=100,.tol=1e-3)\n\nC
3a40 74 31 33 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 6e 66 6f 72 t13.=.[0.for.i.in.range(2)]\nfor
3a60 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 3a 5c 6e 20 20 20 20 43 74 31 33 5b 69 5d 20 3d 20 6f .i.in.range(2):\n....Ct13[i].=.o
3a80 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 6e 5f 73 61 t.gromov.gromov_barycenters(n_sa
3aa0 6d 70 6c 65 73 2c 20 5b 43 73 5b 31 5d 2c 20 43 73 5b 33 5d 5d 2c 5c 6e 20 20 20 20 20 20 20 20 mples,.[Cs[1],.Cs[3]],\n........
3ac0 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 ................................
3ae0 20 20 20 5b 70 73 5b 31 5d 2c 20 70 73 5b 33 5d 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...[ps[1],.ps[3]\n..............
3b00 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 5d 2c ..............................],
3b20 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 73 27 2c 20 .p,.lambdast[i],.'square_loss',.
3b40 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 20 20 20 20 .#.5e-4,\n......................
3b60 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 72 3d 31 30 .....................max_iter=10
3b80 30 2c 20 74 6f 6c 3d 31 65 2d 33 29 5c 6e 5c 6e 43 74 32 33 20 3d 20 5b 30 20 66 6f 72 20 69 20 0,.tol=1e-3)\n\nCt23.=.[0.for.i.
3ba0 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 29 3a in.range(2)]\nfor.i.in.range(2):
3bc0 5c 6e 20 20 20 20 43 74 32 33 5b 69 5d 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d 6f 76 \n....Ct23[i].=.ot.gromov.gromov
3be0 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 32 5d 2c 20 _barycenters(n_samples,.[Cs[2],.
3c00 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 20 20 20 20 Cs[3]],\n.......................
3c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 70 73 5b 32 5d 2c 20 70 73 5b 33 ....................[ps[2],.ps[3
3c40 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 20 20 ]\n.............................
3c60 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 69 5d ...............],.p,.lambdast[i]
3c80 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 20 20 ,.'square_loss',..#.5e-4,\n.....
3ca0 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 ................................
3cc0 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 22 0a 20 ......max_iter=100,.tol=1e-3)"..
3ce0 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 64 65 .....],......."cell_type":."code
3d00 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 22 3a ".....},.....{......."metadata":
3d20 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":.[........."
3d40 56 69 73 75 61 6c 69 7a 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e Visualization\n-------------\n\n
3d60 54 68 65 20 50 43 41 20 68 65 6c 70 73 20 69 6e 20 67 65 74 74 69 6e 67 20 63 6f 6e 73 69 73 74 The.PCA.helps.in.getting.consist
3d80 65 6e 63 79 20 62 65 74 77 65 65 6e 20 74 68 65 20 72 6f 74 61 74 69 6f 6e 73 5c 6e 5c 6e 22 0a ency.between.the.rotations\n\n".
3da0 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 6d 61 72 ......],......."cell_type":."mar
3dc0 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 65 63 75 kdown".....},.....{......."execu
3de0 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
3e00 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
3e20 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":.[],.
3e40 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 63 6c 66 20 3d ......"source":.[........."clf.=
3e60 20 50 43 41 28 6e 5f 63 6f 6d 70 6f 6e 65 6e 74 73 3d 32 29 5c 6e 6e 70 6f 73 20 3d 20 5b 30 2c .PCA(n_components=2)\nnpos.=.[0,
3e80 20 30 2c 20 30 2c 20 30 5d 5c 6e 6e 70 6f 73 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 73 .0,.0,.0]\nnpos.=.[smacof_mds(Cs
3ea0 5b 73 5d 2c 20 32 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 5c 6e 5c 6e 6e 70 [s],.2).for.s.in.range(S)]\n\nnp
3ec0 6f 73 74 30 31 20 3d 20 5b 30 2c 20 30 5d 5c 6e 6e 70 6f 73 74 30 31 20 3d 20 5b 73 6d 61 63 6f ost01.=.[0,.0]\nnpost01.=.[smaco
3ee0 66 5f 6d 64 73 28 43 74 30 31 5b 73 5d 2c 20 32 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 f_mds(Ct01[s],.2).for.s.in.range
3f00 28 32 29 5d 5c 6e 6e 70 6f 73 74 30 31 20 3d 20 5b 63 6c 66 2e 66 69 74 5f 74 72 61 6e 73 66 6f (2)]\nnpost01.=.[clf.fit_transfo
3f20 72 6d 28 6e 70 6f 73 74 30 31 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 rm(npost01[s]).for.s.in.range(2)
3f40 5d 5c 6e 5c 6e 6e 70 6f 73 74 30 32 20 3d 20 5b 30 2c 20 30 5d 5c 6e 6e 70 6f 73 74 30 32 20 3d ]\n\nnpost02.=.[0,.0]\nnpost02.=
3f60 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 74 30 32 5b 73 5d 2c 20 32 29 20 66 6f 72 20 73 20 69 .[smacof_mds(Ct02[s],.2).for.s.i
3f80 6e 20 72 61 6e 67 65 28 32 29 5d 5c 6e 6e 70 6f 73 74 30 32 20 3d 20 5b 63 6c 66 2e 66 69 74 5f n.range(2)]\nnpost02.=.[clf.fit_
3fa0 74 72 61 6e 73 66 6f 72 6d 28 6e 70 6f 73 74 30 32 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 transform(npost02[s]).for.s.in.r
3fc0 61 6e 67 65 28 32 29 5d 5c 6e 5c 6e 6e 70 6f 73 74 31 33 20 3d 20 5b 30 2c 20 30 5d 5c 6e 6e 70 ange(2)]\n\nnpost13.=.[0,.0]\nnp
3fe0 6f 73 74 31 33 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 74 31 33 5b 73 5d 2c 20 32 29 20 ost13.=.[smacof_mds(Ct13[s],.2).
4000 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 31 33 20 3d 20 5b 63 for.s.in.range(2)]\nnpost13.=.[c
4020 6c 66 2e 66 69 74 5f 74 72 61 6e 73 66 6f 72 6d 28 6e 70 6f 73 74 31 33 5b 73 5d 29 20 66 6f 72 lf.fit_transform(npost13[s]).for
4040 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 5c 6e 5c 6e 6e 70 6f 73 74 32 33 20 3d 20 5b 30 2c .s.in.range(2)]\n\nnpost23.=.[0,
4060 20 30 5d 5c 6e 6e 70 6f 73 74 32 33 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 74 32 33 5b .0]\nnpost23.=.[smacof_mds(Ct23[
4080 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
40a0 32 33 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 32 33 5b 23.=.[clf.fit_transform(npost23[
40c0 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 5c 6e 66 69 67 20 s]).for.s.in.range(2)]\n\n\nfig.
40e0 3d 20 70 6c 2e 66 69 67 75 72 65 28 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 31 30 29 29 5c 6e 5c =.pl.figure(figsize=(10,.10))\n\
4100 6e 61 78 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 nax1.=.pl.subplot2grid((4,.4),.(
4120 30 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 0,.0))\npl.xlim((-1,.1))\npl.yli
4140 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 31 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 5b 30 5d 5b m((-1,.1))\nax1.scatter(npos[0][
4160 3a 2c 20 30 5d 2c 20 6e 70 6f 73 5b 30 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 :,.0],.npos[0][:,.1],.color='r')
4180 5c 6e 5c 6e 61 78 32 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 \n\nax2.=.pl.subplot2grid((4,.4)
41a0 2c 20 28 30 2c 20 31 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 ,.(0,.1))\npl.xlim((-1,.1))\npl.
41c0 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 32 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 ylim((-1,.1))\nax2.scatter(npost
41e0 30 31 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 30 31 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 01[1][:,.0],.npost01[1][:,.1],.c
4200 6f 6c 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 33 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 olor='b')\n\nax3.=.pl.subplot2gr
4220 69 64 28 28 34 2c 20 34 29 2c 20 28 30 2c 20 32 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c id((4,.4),.(0,.2))\npl.xlim((-1,
4240 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 33 2e 73 63 61 74 .1))\npl.ylim((-1,.1))\nax3.scat
4260 74 65 72 28 6e 70 6f 73 74 30 31 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 30 31 5b 30 5d ter(npost01[0][:,.0],.npost01[0]
4280 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 34 20 3d 20 70 6c 2e 73 [:,.1],.color='b')\n\nax4.=.pl.s
42a0 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 30 2c 20 33 29 29 5c 6e 70 6c 2e ubplot2grid((4,.4),.(0,.3))\npl.
42c0 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))\
42e0 6e 61 78 34 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 nax4.scatter(npos[1][:,.0],.npos
4300 5b 31 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 35 20 3d 20 70 [1][:,.1],.color='r')\n\nax5.=.p
4320 6c 2e 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 30 29 29 5c 6e l.subplot2grid((4,.4),.(1,.0))\n
4340 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
4360 29 29 5c 6e 61 78 35 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 30 32 5b 31 5d 5b 3a 2c 20 30 5d ))\nax5.scatter(npost02[1][:,.0]
4380 2c 20 6e 70 6f 73 74 30 32 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 5c 6e ,.npost02[1][:,.1],.color='b')\n
43a0 5c 6e 61 78 36 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 \nax6.=.pl.subplot2grid((4,.4),.
43c0 28 31 2c 20 33 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 (1,.3))\npl.xlim((-1,.1))\npl.yl
43e0 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 36 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 31 33 im((-1,.1))\nax6.scatter(npost13
4400 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 31 33 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c [1][:,.0],.npost13[1][:,.1],.col
4420 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 37 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 or='b')\n\nax7.=.pl.subplot2grid
4440 28 28 34 2c 20 34 29 2c 20 28 32 2c 20 30 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 ((4,.4),.(2,.0))\npl.xlim((-1,.1
4460 29 29 5c 6e 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 37 2e 73 63 61 74 74 65 ))\npl.ylim((-1,.1))\nax7.scatte
4480 72 28 6e 70 6f 73 74 30 32 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 30 32 5b 30 5d 5b 3a r(npost02[0][:,.0],.npost02[0][:
44a0 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 38 20 3d 20 70 6c 2e 73 75 62 ,.1],.color='b')\n\nax8.=.pl.sub
44c0 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 32 2c 20 33 29 29 5c 6e 70 6c 2e 78 6c plot2grid((4,.4),.(2,.3))\npl.xl
44e0 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 6e 61 im((-1,.1))\npl.ylim((-1,.1))\na
4500 78 38 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 31 33 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f x8.scatter(npost13[0][:,.0],.npo
4520 73 74 31 33 5b 30 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 39 st13[0][:,.1],.color='b')\n\nax9
4540 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 33 2c 20 30 .=.pl.subplot2grid((4,.4),.(3,.0
4560 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 28 28 2d ))\npl.xlim((-1,.1))\npl.ylim((-
4580 31 2c 20 31 29 29 5c 6e 61 78 39 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 5b 32 5d 5b 3a 2c 20 30 1,.1))\nax9.scatter(npos[2][:,.0
45a0 5d 2c 20 6e 70 6f 73 5b 32 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 5c 6e 5c 6e ],.npos[2][:,.1],.color='r')\n\n
45c0 61 78 31 30 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 ax10.=.pl.subplot2grid((4,.4),.(
45e0 33 2c 20 31 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,.1))\npl.xlim((-1,.1))\npl.yli
4600 6d 28 28 2d 31 2c 20 31 29 29 5c 6e 61 78 31 30 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 32 33 m((-1,.1))\nax10.scatter(npost23
4620 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 32 33 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c [1][:,.0],.npost23[1][:,.1],.col
4640 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 31 31 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 or='b')\n\nax11.=.pl.subplot2gri
4660 64 28 28 34 2c 20 34 29 2c 20 28 33 2c 20 32 29 29 5c 6e 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 d((4,.4),.(3,.2))\npl.xlim((-1,.
4680 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 31 2e 73 63 61 74 1))\npl.ylim((-1,.1))\nax11.scat
46a0 74 65 72 28 6e 70 6f 73 74 32 33 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 32 33 5b 30 5d ter(npost23[0][:,.0],.npost23[0]
46c0 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 5c 6e 5c 6e 61 78 31 32 20 3d 20 70 6c 2e [:,.1],.color='b')\n\nax12.=.pl.
46e0 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 33 2c 20 33 29 29 5c 6e 70 6c subplot2grid((4,.4),.(3,.3))\npl
4700 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))
4720 5c 6e 61 78 31 32 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 5b 33 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 \nax12.scatter(npos[3][:,.0],.np
4740 6f 73 5b 33 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 22 0a 20 20 20 20 20 20 5d os[3][:,.1],.color='r')".......]
4760 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 20 20 ,......."cell_type":."code".....
4780 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 6c 61 6e 67 }...],..."metadata":.{....."lang
47a0 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 uage_info":.{......."name":."pyt
47c0 68 6f 6e 22 2c 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 hon",......."codemirror_mode":.{
47e0 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",.....
4800 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.......},.......
4820 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 0a "nbconvert_exporter":."python",.
4840 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 35 2e 32 22 2c 0a 20 20 20 20 20 20 ......"version":."3.5.2",.......
4860 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",...
4880 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",....
48a0 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 0a 20 ..."mimetype":."text/x-python"..
48c0 20 20 20 7d 2c 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 ...},....."kernelspec":.{.......
48e0 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 20 20 20 "display_name":."Python.3",.....
4900 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 .."name":."python3",......."lang
4920 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 uage":."python".....}...},..."nb
4940 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 format_minor":.0,..."nbformat":.
4960 34 0a 7d 50 4b 03 04 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 4.}PK........-`.L....^...^......
4980 00 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c .plot_optim_OTreg.ipynb{..."cell
49a0 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 22 s":.[.....{......."cell_type":."
49c0 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":.
49e0 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":.{.......
4a00 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.......},...
4a20 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
4a40 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 65 ":.[........."%matplotlib.inline
4a60 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
4a80 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
4aa0 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":.[...
4ac0 20 20 20 20 20 20 22 5c 6e 23 20 52 65 67 75 6c 61 72 69 7a 65 64 20 4f 54 20 77 69 74 68 20 67 ......"\n#.Regularized.OT.with.g
4ae0 65 6e 65 72 69 63 20 73 6f 6c 76 65 72 5c 6e 5c 6e 5c 6e 49 6c 6c 75 73 74 72 61 74 65 73 20 74 eneric.solver\n\n\nIllustrates.t
4b00 68 65 20 75 73 65 20 6f 66 20 74 68 65 20 67 65 6e 65 72 69 63 20 73 6f 6c 76 65 72 20 66 6f 72 he.use.of.the.generic.solver.for
4b20 20 72 65 67 75 6c 61 72 69 7a 65 64 20 4f 54 20 77 69 74 68 5c 6e 75 73 65 72 2d 64 65 73 69 67 .regularized.OT.with\nuser-desig
4b40 6e 65 64 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 74 65 72 6d 2e 20 49 74 20 75 73 65 73 ned.regularization.term..It.uses
4b60 20 43 6f 6e 64 69 74 69 6f 6e 61 6c 20 67 72 61 64 69 65 6e 74 20 61 73 20 69 6e 20 5b 36 5d 20 .Conditional.gradient.as.in.[6].
4b80 61 6e 64 5c 6e 67 65 6e 65 72 61 6c 69 7a 65 64 20 43 6f 6e 64 69 74 69 6f 6e 61 6c 20 47 72 61 and\ngeneralized.Conditional.Gra
4ba0 64 69 65 6e 74 20 61 73 20 70 72 6f 70 6f 73 65 64 20 69 6e 20 5b 35 5d 5b 37 5d 2e 5c 6e 5c 6e dient.as.proposed.in.[5][7].\n\n
4bc0 5c 6e 5b 35 5d 20 4e 2e 20 43 6f 75 72 74 79 3b 20 52 2e 20 46 6c 61 6d 61 72 79 3b 20 44 2e 20 \n[5].N..Courty;.R..Flamary;.D..
4be0 54 75 69 61 3b 20 41 2e 20 52 61 6b 6f 74 6f 6d 61 6d 6f 6e 6a 79 2c 20 4f 70 74 69 6d 61 6c 20 Tuia;.A..Rakotomamonjy,.Optimal.
4c00 54 72 61 6e 73 70 6f 72 74 20 66 6f 72 5c 6e 44 6f 6d 61 69 6e 20 41 64 61 70 74 61 74 69 6f 6e Transport.for\nDomain.Adaptation
4c20 2c 20 69 6e 20 49 45 45 45 20 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f 6e 20 50 61 74 74 65 72 ,.in.IEEE.Transactions.on.Patter
4c40 6e 20 41 6e 61 6c 79 73 69 73 20 61 6e 64 20 4d 61 63 68 69 6e 65 5c 6e 49 6e 74 65 6c 6c 69 67 n.Analysis.and.Machine\nIntellig
4c60 65 6e 63 65 20 2c 20 76 6f 6c 2e 50 50 2c 20 6e 6f 2e 39 39 2c 20 70 70 2e 31 2d 31 2e 5c 6e 5c ence.,.vol.PP,.no.99,.pp.1-1.\n\
4c80 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 73 2c 20 4e n[6].Ferradans,.S.,.Papadakis,.N
4ca0 2e 2c 20 50 65 79 72 5c 75 30 30 65 39 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 .,.Peyr\u00e9,.G.,.&.Aujol,.J..F
4cc0 2e 20 28 32 30 31 34 29 2e 5c 6e 52 65 67 75 6c 61 72 69 7a 65 64 20 64 69 73 63 72 65 74 65 20 ..(2014).\nRegularized.discrete.
4ce0 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 optimal.transport..SIAM.Journal.
4d00 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 5c 6e 37 28 33 29 2c 20 31 38 35 33 on.Imaging.Sciences,\n7(3),.1853
4d20 2d 31 38 38 32 2e 5c 6e 5c 6e 5b 37 5d 20 52 61 6b 6f 74 6f 6d 61 6d 6f 6e 6a 79 2c 20 41 2e 2c -1882.\n\n[7].Rakotomamonjy,.A.,
4d40 20 46 6c 61 6d 61 72 79 2c 20 52 2e 2c 20 26 20 43 6f 75 72 74 79 2c 20 4e 2e 20 28 32 30 31 35 .Flamary,.R.,.&.Courty,.N..(2015
4d60 29 2e 20 47 65 6e 65 72 61 6c 69 7a 65 64 5c 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 67 72 61 64 )..Generalized\nconditional.grad
4d80 69 65 6e 74 3a 20 61 6e 61 6c 79 73 69 73 20 6f 66 20 63 6f 6e 76 65 72 67 65 6e 63 65 20 61 6e ient:.analysis.of.convergence.an
4da0 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 5c 6e 61 72 58 69 76 20 70 72 65 70 72 69 6e 74 20 d.applications.\narXiv.preprint.
4dc0 61 72 58 69 76 3a 31 35 31 30 2e 30 36 35 36 37 2e 5c 6e 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 arXiv:1510.06567.\n\n\n\n\n"....
4de0 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
4e00 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
4e20 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":.{.
4e40 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......
4e60 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":.[],......."
4e80 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 69 6d 70 6f 72 74 20 6e 75 6d 70 79 source":.[........."import.numpy
4ea0 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.
4ec0 61 73 20 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 as.pl\nimport.ot\nimport.ot.plot
4ee0 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
4f00 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
4f20 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":.[...
4f40 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 2d 2d 2d 2d 2d 2d ......"Generate.data\n----------
4f60 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".......].....},.....{...
4f80 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",......."
4fa0 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
4fc0 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":
4fe0 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":
5000 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":.[........."
5020 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 #%%.parameters\n\nn.=.100..#.nb.
5040 62 69 6e 73 5c 6e 5c 6e 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 5c 6e 78 20 3d 20 6e 70 2e bins\n\n#.bin.positions\nx.=.np.
5060 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 6e 23 arange(n,.dtype=np.float64)\n\n#
5080 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 61 20 3d 20 6f 74 2e .Gaussian.distributions\na.=.ot.
50a0 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 32 30 2c 20 datasets.make_1D_gauss(n,.m=20,.
50c0 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 5c 6e 62 20 3d 20 6f 74 2e s=5)..#.m=.mean,.s=.std\nb.=.ot.
50e0 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 36 30 2c 20 datasets.make_1D_gauss(n,.m=60,.
5100 73 3d 31 30 29 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 20 3d 20 6f 74 2e 64 s=10)\n\n#.loss.matrix\nM.=.ot.d
5120 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 61 70 65 ist(x.reshape((n,.1)),.x.reshape
5140 28 28 6e 2c 20 31 29 29 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 20 5d ((n,.1)))\nM./=.M.max()".......]
5160 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":
5180 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":.{
51a0 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
51c0 6c 76 65 20 45 4d 44 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 lve.EMD\n---------\n\n".......].
51e0 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":.
5200 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":
5220 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":.{......
5240 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.......},..
5260 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
5280 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 4d 44 5c 6e 5c 6e 47 30 20 3d 20 6f e":.[........."#%%.EMD\n\nG0.=.o
52a0 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 t.emd(a,.b,.M)\n\npl.figure(3,.f
52c0 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
52e0 61 74 28 61 2c 20 62 2c 20 47 30 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 22 0a 20 20 at(a,.b,.G0,.'OT.matrix.G0')"...
5300 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
5320 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
5340 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":.[.......
5360 20 20 22 53 6f 6c 76 65 20 45 4d 44 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d .."Solve.EMD.with.Frobenius.norm
5380 20 72 65 67 75 6c 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 .regularization\n---------------
53a0 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\
53c0 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
53e0 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
5400 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
5420 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
5440 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":.[],..
5460 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 78 ....."source":.[........."#%%.Ex
5480 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 72 65 67 75 6c 61 ample.with.Frobenius.norm.regula
54a0 72 69 7a 61 74 69 6f 6e 5c 6e 5c 6e 5c 6e 64 65 66 20 66 28 47 29 3a 5c 6e 20 20 20 20 72 65 74 rization\n\n\ndef.f(G):\n....ret
54c0 75 72 6e 20 30 2e 35 20 2a 20 6e 70 2e 73 75 6d 28 47 2a 2a 32 29 5c 6e 5c 6e 5c 6e 64 65 66 20 urn.0.5.*.np.sum(G**2)\n\n\ndef.
54e0 64 66 28 47 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 47 5c 6e 5c 6e 5c 6e 72 65 67 20 3d 20 df(G):\n....return.G\n\n\nreg.=.
5500 31 65 2d 31 5c 6e 5c 6e 47 6c 32 20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 63 67 28 61 2c 20 62 2c 20 1e-1\n\nGl2.=.ot.optim.cg(a,.b,.
5520 4d 2c 20 72 65 67 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e M,.reg,.f,.df,.verbose=True)\n\n
5540 70 6c 2e 66 69 67 75 72 65 28 33 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 pl.figure(3)\not.plot.plot1D_mat
5560 28 61 2c 20 62 2c 20 47 6c 32 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 (a,.b,.Gl2,.'OT.matrix.Frob..reg
5580 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 ')".......].....},.....{......."
55a0 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
55c0 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":.[.
55e0 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 45 4d 44 20 77 69 74 68 20 65 6e 74 72 6f 70 69 63 ........"Solve.EMD.with.entropic
5600 20 72 65 67 75 6c 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 .regularization\n---------------
5620 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 20 20 -----------------------\n\n"....
5640 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
5660 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
5680 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":.{.
56a0 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......
56c0 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":.[],......."
56e0 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 78 61 6d 70 6c 65 20 source":.[........."#%%.Example.
5700 77 69 74 68 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 5c 6e with.entropic.regularization\n\n
5720 5c 6e 64 65 66 20 66 28 47 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 73 75 6d 28 47 \ndef.f(G):\n....return.np.sum(G
5740 20 2a 20 6e 70 2e 6c 6f 67 28 47 29 29 5c 6e 5c 6e 5c 6e 64 65 66 20 64 66 28 47 29 3a 5c 6e 20 .*.np.log(G))\n\n\ndef.df(G):\n.
5760 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 6c 6f 67 28 47 29 20 2b 20 31 2e 5c 6e 5c 6e 5c 6e 72 65 ...return.np.log(G).+.1.\n\n\nre
5780 67 20 3d 20 31 65 2d 33 5c 6e 5c 6e 47 65 20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 63 67 28 61 2c 20 g.=.1e-3\n\nGe.=.ot.optim.cg(a,.
57a0 62 2c 20 4d 2c 20 72 65 67 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c b,.M,.reg,.f,.df,.verbose=True)\
57c0 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 29 29 5c n\npl.figure(4,.figsize=(5,.5))\
57e0 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 65 2c 20 27 4f not.plot.plot1D_mat(a,.b,.Ge,.'O
5800 54 20 6d 61 74 72 69 78 20 45 6e 74 72 6f 70 2e 20 72 65 67 27 29 22 0a 20 20 20 20 20 20 5d 0a T.matrix.Entrop..reg')".......].
5820 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":.
5840 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":.{}
5860 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
5880 76 65 20 45 4d 44 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 2b 20 65 6e 74 ve.EMD.with.Frobenius.norm.+.ent
58a0 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ropic.regularization\n----------
58c0 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 --------------------------------
58e0 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 7d -------------\n\n".......].....}
5900 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 65 ,.....{......."cell_type":."code
5920 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 6c ",......."execution_count":.null
5940 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 63 ,......."metadata":.{........."c
5960 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 20 ollapsed":.false.......},.......
5980 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 5b "outputs":.[],......."source":.[
59a0 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 ........."#%%.Example.with.Frobe
59c0 6e 69 75 73 20 6e 6f 72 6d 20 2b 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 nius.norm.+.entropic.regularizat
59e0 69 6f 6e 20 77 69 74 68 20 67 63 67 5c 6e 5c 6e 5c 6e 64 65 66 20 66 28 47 29 3a 5c 6e 20 20 20 ion.with.gcg\n\n\ndef.f(G):\n...
5a00 20 72 65 74 75 72 6e 20 30 2e 35 20 2a 20 6e 70 2e 73 75 6d 28 47 2a 2a 32 29 5c 6e 5c 6e 5c 6e .return.0.5.*.np.sum(G**2)\n\n\n
5a20 64 65 66 20 64 66 28 47 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 47 5c 6e 5c 6e 5c 6e 72 65 def.df(G):\n....return.G\n\n\nre
5a40 67 31 20 3d 20 31 65 2d 33 5c 6e 72 65 67 32 20 3d 20 31 65 2d 31 5c 6e 5c 6e 47 65 6c 32 20 3d g1.=.1e-3\nreg2.=.1e-1\n\nGel2.=
5a60 20 6f 74 2e 6f 70 74 69 6d 2e 67 63 67 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 31 2c 20 72 65 67 .ot.optim.gcg(a,.b,.M,.reg1,.reg
5a80 32 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 70 6c 2e 66 69 2,.f,.df,.verbose=True)\n\npl.fi
5aa0 67 75 72 65 28 35 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 gure(5,.figsize=(5,.5))\not.plot
5ac0 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 65 6c 32 2c 20 27 4f 54 20 65 6e 74 72 .plot1D_mat(a,.b,.Gel2,.'OT.entr
5ae0 6f 70 69 63 20 2b 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 5c 6e 70 6c 2e 73 68 opic.+.matrix.Frob..reg')\npl.sh
5b00 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
5b20 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":.{....
5b40 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",..
5b60 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",......
5b80 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
5ba0 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
5bc0 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
5be0 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.....
5c00 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
5c20 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
5c40 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",..
5c60 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
5c80 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
5ca0 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 35 ython3",......."version":."3.6.5
5cc0 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,...
5ce0 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........-
5d00 60 cb 4c d1 72 b5 4d f4 1c 00 00 f4 1c 00 00 12 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 64 32 2e `.L.r.M............plot_otda_d2.
5d20 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":.[.....{.......
5d40 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
5d60 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
5d80 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
5da0 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":.[],
5dc0 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
5de0 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".......].....},..
5e00 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
5e20 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":.{},.......
5e40 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 66 6f 72 20 "source":.[........."\n#.OT.for.
5e60 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 6f 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 domain.adaptation.on.empirical.d
5e80 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 istributions\n\n\nThis.example.i
5ea0 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
5ec0 20 61 20 32 44 20 73 65 74 74 69 6e 67 2e 20 49 74 20 65 78 70 6c 69 63 69 74 73 5c 6e 74 68 65 .a.2D.setting..It.explicits\nthe
5ee0 20 70 72 6f 62 6c 65 6d 20 6f 66 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 61 6e .problem.of.domain.adaptation.an
5f00 64 20 69 6e 74 72 6f 64 75 63 65 73 20 73 6f 6d 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 d.introduces.some.optimal.transp
5f20 6f 72 74 5c 6e 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 ort\napproaches.to.solve.it.\n\n
5f40 51 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 Quantities.such.as.optimal.coupl
5f60 69 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 ings,.greater.coupling.coefficie
5f80 6e 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 nts.and\ntransported.samples.are
5fa0 20 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 .represented.in.order.to.give.a.
5fc0 76 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 visual.understanding\nof.what.th
5fe0 65 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 e.transport.methods.are.doing.\n
6000 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".......].....},.....{......."
6020 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
6040 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
6060 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
6080 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":.[],.
60a0 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 74 ......"source":.[........."#.Aut
60c0 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 61 72 79 hors:.Remi.Flamary.<remi.flamary
60e0 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 6c 61 73 @unice.fr>\n#..........Stanislas
6100 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 63 6f 6d .Chambon.<stan.chambon@gmail.com
6120 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
6140 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 import.matplotlib.pylab.as.pl\ni
6160 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 20 mport.ot\nimport.ot.plot".......
6180 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"
61a0 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":.
61c0 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 67 {},......."source":.[........."g
61e0 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 2d 5c 6e 5c 6e 22 enerate.data\n-------------\n\n"
6200 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
6220 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
6240 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"
6260 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..
6280 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":.[],....
62a0 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 61 6d 70 6c 65 ..."source":.[........."n_sample
62c0 73 5f 73 6f 75 72 63 65 20 3d 20 31 35 30 5c 6e 6e 5f 73 61 6d 70 6c 65 73 5f 74 61 72 67 65 74 s_source.=.150\nn_samples_target
62e0 20 3d 20 31 35 30 5c 6e 5c 6e 58 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d .=.150\n\nXs,.ys.=.ot.datasets.m
6300 61 6b 65 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 20 6e 5f 73 61 6d ake_data_classif('3gauss',.n_sam
6320 70 6c 65 73 5f 73 6f 75 72 63 65 29 5c 6e 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 ples_source)\nXt,.yt.=.ot.datase
6340 74 73 2e 6d 61 6b 65 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 20 ts.make_data_classif('3gauss2',.
6360 6e 5f 73 61 6d 70 6c 65 73 5f 74 61 72 67 65 74 29 5c 6e 5c 6e 23 20 43 6f 73 74 20 6d 61 74 72 n_samples_target)\n\n#.Cost.matr
6380 69 78 5c 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 58 73 2c 20 58 74 2c 20 6d 65 74 72 69 63 3d 27 ix\nM.=.ot.dist(Xs,.Xt,.metric='
63a0 73 71 65 75 63 6c 69 64 65 61 6e 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 sqeuclidean')".......].....},...
63c0 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
63e0 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":.{},......."
6400 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 6e 74 69 61 74 65 20 source":.[........."Instantiate.
6420 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c 67 6f 72 69 74 68 the.different.transport.algorith
6440 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 2d 2d 2d 2d 2d ms.and.fit.them\n---------------
6460 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 --------------------------------
6480 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".......].....},
64a0 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"
64c0 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,
64e0 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
6500 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.......},......."
6520 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":.[.
6540 20 20 20 20 20 20 20 20 22 23 20 45 4d 44 20 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 65 6d 64 ........"#.EMD.Transport\not_emd
6560 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e 6f 74 5f 65 6d 64 2e .=.ot.da.EMDTransport()\not_emd.
6580 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 53 69 6e 6b 68 6f 72 6e 20 fit(Xs=Xs,.Xt=Xt)\n\n#.Sinkhorn.
65a0 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 61 2e 53 Transport\not_sinkhorn.=.ot.da.S
65c0 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 6e 6f 74 inkhornTransport(reg_e=1e-1)\not
65e0 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 5c 6e 23 _sinkhorn.fit(Xs=Xs,.Xt=Xt)\n\n#
6600 20 53 69 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 47 72 6f 75 70 20 6c .Sinkhorn.Transport.with.Group.l
6620 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 6f 74 5f 6c 70 6c 31 20 3d 20 6f asso.regularization\not_lpl1.=.o
6640 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 t.da.SinkhornLpl1Transport(reg_e
6660 3d 31 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 31 65 30 29 5c 6e 6f 74 5f 6c 70 6c 31 2e 66 69 74 28 =1e-1,.reg_cl=1e0)\not_lpl1.fit(
6680 58 73 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 74 72 61 6e 73 70 Xs=Xs,.ys=ys,.Xt=Xt)\n\n#.transp
66a0 6f 72 74 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 20 6f 6e 74 6f 20 74 61 72 67 65 74 20 73 ort.source.samples.onto.target.s
66c0 61 6d 70 6c 65 73 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 74 amples\ntransp_Xs_emd.=.ot_emd.t
66e0 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 ransform(Xs=Xs)\ntransp_Xs_sinkh
6700 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
6720 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 20 3d 20 6f 74 5f 6c 70 6c 31 2e 74 72 61 s)\ntransp_Xs_lpl1.=.ot_lpl1.tra
6740 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 20 20 7d 2c 0a 20 20 nsform(Xs=Xs)".......].....},...
6760 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
6780 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":.{},......."
67a0 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 46 69 67 20 31 20 3a 20 70 6c 6f 74 source":.[........."Fig.1.:.plot
67c0 73 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 20 2b 20 6d 61 s.source.and.target.samples.+.ma
67e0 74 72 69 78 20 6f 66 20 70 61 69 72 77 69 73 65 20 64 69 73 74 61 6e 63 65 5c 6e 2d 2d 2d 2d 2d trix.of.pairwise.distance\n-----
6800 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 --------------------------------
6820 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 --------------------------------
6840 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".......].....},.....{......
6860 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
6880 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
68a0 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
68c0 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":.[]
68e0 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 6c 2e ,......."source":.[........."pl.
6900 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 31 30 29 29 5c 6e 70 6c 2e figure(1,.figsize=(10,.10))\npl.
6920 73 75 62 70 6c 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 73 5b subplot(2,.2,.1)\npl.scatter(Xs[
6940 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b :,.0],.Xs[:,.1],.c=ys,.marker='+
6960 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 78 ',.label='Source.samples')\npl.x
6980 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 6c 65 67 ticks([])\npl.yticks([])\npl.leg
69a0 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 73 61 end(loc=0)\npl.title('Source..sa
69c0 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 32 29 5c 6e mples')\n\npl.subplot(2,.2,.2)\n
69e0 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
6a00 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 =yt,.marker='o',.label='Target.s
6a20 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 2e 79 74 69 63 amples')\npl.xticks([])\npl.ytic
6a40 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 6e 70 6c 2e 74 69 74 ks([])\npl.legend(loc=0)\npl.tit
6a60 6c 65 28 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c le('Target.samples')\n\npl.subpl
6a80 6f 74 28 32 2c 20 32 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 20 69 6e 74 65 72 70 ot(2,.2,.3)\npl.imshow(M,.interp
6aa0 6f 6c 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 olation='nearest')\npl.xticks([]
6ac0 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4d 61 74 72 )\npl.yticks([])\npl.title('Matr
6ae0 69 78 20 6f 66 20 70 61 69 72 77 69 73 65 20 64 69 73 74 61 6e 63 65 73 27 29 5c 6e 70 6c 2e 74 ix.of.pairwise.distances')\npl.t
6b00 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()".......].....},...
6b20 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
6b40 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":.{},......."
6b60 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 70 6c 6f 74 source":.[........."Fig.2.:.plot
6b80 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 68 65 20 64 69 66 66 s.optimal.couplings.for.the.diff
6ba0 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 2d 2d 2d 2d 2d 2d 2d erent.methods\n-----------------
6bc0 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 --------------------------------
6be0 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".......].....},....
6c00 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",...
6c20 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,....
6c40 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
6c60 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
6c80 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":.[.....
6ca0 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 31 30 2c 20 36 ...."pl.figure(2,.figsize=(10,.6
6cc0 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 31 29 5c 6e 70 6c 2e 69 6d ))\n\npl.subplot(2,.3,.1)\npl.im
6ce0 73 68 6f 77 28 6f 74 5f 65 6d 64 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 show(ot_emd.coupling_,.interpola
6d00 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 6e tion='nearest')\npl.xticks([])\n
6d20 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c pl.yticks([])\npl.title('Optimal
6d40 20 63 6f 75 70 6c 69 6e 67 5c 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c .coupling\\nEMDTransport')\n\npl
6d60 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f .subplot(2,.3,.2)\npl.imshow(ot_
6d80 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f sinkhorn.coupling_,.interpolatio
6da0 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.
6dc0 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f yticks([])\npl.title('Optimal.co
6de0 75 70 6c 69 6e 67 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 upling\\nSinkhornTransport')\n\n
6e00 70 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 6f pl.subplot(2,.3,.3)\npl.imshow(o
6e20 74 5f 6c 70 6c 31 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 t_lpl1.coupling_,.interpolation=
6e40 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 79 74 'nearest')\npl.xticks([])\npl.yt
6e60 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 70 icks([])\npl.title('Optimal.coup
6e80 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 27 29 5c 6e ling\\nSinkhornLpl1Transport')\n
6ea0 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 34 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 \npl.subplot(2,.3,.4)\not.plot.p
6ec0 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 65 6d 64 lot2D_samples_mat(Xs,.Xt,.ot_emd
6ee0 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e 73 .coupling_,.c=[.5,..5,.1])\npl.s
6f00 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,
6f20 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
6f40 65 73 27 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c es')\npl.scatter(Xt[:,.0],.Xt[:,
6f60 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 .1],.c=yt,.marker='o',.label='Ta
6f80 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 rget.samples')\npl.xticks([])\np
6fa0 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4d 61 69 6e 20 63 6f 75 l.yticks([])\npl.title('Main.cou
6fc0 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 5c 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 pling.coefficients\\nEMDTranspor
6fe0 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 35 29 5c 6e 6f 74 2e 70 t')\n\npl.subplot(2,.3,.5)\not.p
7000 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 74 2c 20 6f lot.plot2D_samples_mat(Xs,.Xt,.o
7020 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c t_sinkhorn.coupling_,.c=[.5,..5,
7040 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[:,
7060 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
7080 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[:,
70a0 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',
70c0 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
70e0 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
7100 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
7120 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 inkhornTransport')\n\npl.subplot
7140 28 32 2c 20 33 2c 20 36 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 (2,.3,.6)\not.plot.plot2D_sample
7160 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 6c 70 6c 31 2e 63 6f 75 70 6c 69 6e 67 5f 2c s_mat(Xs,.Xt,.ot_lpl1.coupling_,
7180 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[:
71a0 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='+'
71c0 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
71e0 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,.
7200 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
7220 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([]
7240 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
7260 69 63 69 65 6e 74 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 icients\\nSinkhornLpl1Transport'
7280 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()".......]...
72a0 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
72c0 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":.{},.
72e0 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 33 ......"source":.[........."Fig.3
7300 20 3a 20 70 6c 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 .:.plot.transported.samples\n---
7320 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\
7340 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
7360 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
7380 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
73a0 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
73c0 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":.[],..
73e0 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 64 69 73 70 ....."source":.[........."#.disp
7400 6c 61 79 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 70 6c 2e 66 69 67 75 lay.transported.samples\npl.figu
7420 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 34 29 29 5c 6e 70 6c 2e 73 75 62 70 6c re(4,.figsize=(10,.4))\npl.subpl
7440 6f 74 28 31 2c 20 33 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(1,.3,.1)\npl.scatter(Xt[:,.0]
7460 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.
7480 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'
74a0 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 72 61 6e 73 70 5f ,.alpha=0.5)\npl.scatter(transp_
74c0 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 3a 2c 20 31 Xs_emd[:,.0],.transp_Xs_emd[:,.1
74e0 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 2c ],.c=ys,\n...........marker='+',
7500 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 6e .label='Transp.samples',.s=30)\n
7520 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 6e pl.title('Transported.samples\\n
7540 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 30 29 EmdTransport')\npl.legend(loc=0)
7560 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e \npl.xticks([])\npl.yticks([])\n
7580 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 \npl.subplot(1,.3,.2)\npl.scatte
75a0 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b r(Xt[:,.0],.Xt[:,.1],.c=yt,.mark
75c0 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 er='o',\n...........label='Targe
75e0 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 35 29 5c 6e 70 6c 2e 73 63 61 74 74 t.samples',.alpha=0.5)\npl.scatt
7600 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5b 3a 2c 20 30 5d 2c 20 74 72 61 er(transp_Xs_sinkhorn[:,.0],.tra
7620 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 nsp_Xs_sinkhorn[:,.1],.c=ys,\n..
7640 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 6e .........marker='+',.label='Tran
7660 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 72 sp.samples',.s=30)\npl.title('Tr
7680 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e ansported.samples\\nSinkhornTran
76a0 73 70 6f 72 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 sport')\npl.xticks([])\npl.ytick
76c0 73 28 5b 5d 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 5c 6e 70 6c s([])\n\npl.subplot(1,.3,.3)\npl
76e0 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 .scatter(Xt[:,.0],.Xt[:,.1],.c=y
7700 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 65 6c t,.marker='o',\n...........label
7720 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 6e 70 ='Target.samples',.alpha=0.5)\np
7740 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 5b 3a 2c 20 30 5d 2c 20 l.scatter(transp_Xs_lpl1[:,.0],.
7760 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 transp_Xs_lpl1[:,.1],.c=ys,\n...
7780 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 6e 73 ........marker='+',.label='Trans
77a0 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 72 61 p.samples',.s=30)\npl.title('Tra
77c0 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 nsported.samples\\nSinkhornLpl1T
77e0 72 61 6e 73 70 6f 72 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 ransport')\npl.xticks([])\npl.yt
7800 69 63 6b 73 28 5b 5d 29 5c 6e 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 70 icks([])\n\npl.tight_layout()\np
7820 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 20 22 l.show()".......].....}...],..."
7840 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b metadata":.{....."kernelspec":.{
7860 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 33 ......."display_name":."Python.3
7880 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 20 ",......."language":."python",..
78a0 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 20 ....."name":."python3".....},...
78c0 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 65 .."language_info":.{......."code
78e0 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 20 mirror_mode":.{........."name":.
7900 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 0a "ipython",........."version":.3.
7920 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 3a ......},......."file_extension":
7940 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 2f .".py",......."mimetype":."text/
7960 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 6e x-python",......."name":."python
7980 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 22 ",......."nbconvert_exporter":."
79a0 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 3a python",......."pygments_lexer":
79c0 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 33 ."ipython3",......."version":."3
79e0 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 20 34 .6.5".....}...},..."nbformat":.4
7a00 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 00 ,..."nbformat_minor":.0.}PK.....
7a20 00 00 00 2d 60 cb 4c a9 b8 76 f6 f8 19 00 00 f8 19 00 00 1f 00 00 00 70 6c 6f 74 5f 6f 74 64 61 ...-`.L..v.............plot_otda
7a40 5f 73 65 6d 69 5f 73 75 70 65 72 76 69 73 65 64 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 _semi_supervised.ipynb{..."cells
7a60 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 22 63 ":.[.....{......."cell_type":."c
7a80 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
7aa0 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":.{........
7ac0 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.......},....
7ae0 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"
7b00 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"
7b20 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
7b40 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
7b60 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":.[....
7b80 20 20 20 20 20 22 5c 6e 23 20 4f 54 44 41 20 75 6e 73 75 70 65 72 76 69 73 65 64 20 76 73 20 73 ....."\n#.OTDA.unsupervised.vs.s
7ba0 65 6d 69 2d 73 75 70 65 72 76 69 73 65 64 20 73 65 74 74 69 6e 67 5c 6e 5c 6e 5c 6e 54 68 69 73 emi-supervised.setting\n\n\nThis
7bc0 20 65 78 61 6d 70 6c 65 20 69 6e 74 72 6f 64 75 63 65 73 20 61 20 73 65 6d 69 20 73 75 70 65 72 .example.introduces.a.semi.super
7be0 76 69 73 65 64 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 vised.domain.adaptation.in.a.2D.
7c00 73 65 74 74 69 6e 67 2e 5c 6e 49 74 20 65 78 70 6c 69 63 69 74 73 20 74 68 65 20 70 72 6f 62 6c setting.\nIt.explicits.the.probl
7c20 65 6d 20 6f 66 20 73 65 6d 69 20 73 75 70 65 72 76 69 73 65 64 20 64 6f 6d 61 69 6e 20 61 64 61 em.of.semi.supervised.domain.ada
7c40 70 74 61 74 69 6f 6e 20 61 6e 64 20 69 6e 74 72 6f 64 75 63 65 73 5c 6e 73 6f 6d 65 20 6f 70 74 ptation.and.introduces\nsome.opt
7c60 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 61 70 70 72 6f 61 63 68 65 73 20 74 6f 20 73 6f 6c imal.transport.approaches.to.sol
7c80 76 65 20 69 74 2e 5c 6e 5c 6e 51 75 61 6e 74 69 74 69 65 73 20 73 75 63 68 20 61 73 20 6f 70 74 ve.it.\n\nQuantities.such.as.opt
7ca0 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 2c 20 67 72 65 61 74 65 72 20 63 6f 75 70 6c 69 6e 67 imal.couplings,.greater.coupling
7cc0 20 63 6f 65 66 66 69 63 69 65 6e 74 73 20 61 6e 64 5c 6e 74 72 61 6e 73 70 6f 72 74 65 64 20 73 .coefficients.and\ntransported.s
7ce0 61 6d 70 6c 65 73 20 61 72 65 20 72 65 70 72 65 73 65 6e 74 65 64 20 69 6e 20 6f 72 64 65 72 20 amples.are.represented.in.order.
7d00 74 6f 20 67 69 76 65 20 61 20 76 69 73 75 61 6c 20 75 6e 64 65 72 73 74 61 6e 64 69 6e 67 5c 6e to.give.a.visual.understanding\n
7d20 6f 66 20 77 68 61 74 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 65 74 68 6f 64 73 20 61 72 of.what.the.transport.methods.ar
7d40 65 20 64 6f 69 6e 67 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 e.doing.\n\n".......].....},....
7d60 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",...
7d80 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,....
7da0 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
7dc0 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
7de0 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":.[.....
7e00 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 ...."#.Authors:.Remi.Flamary.<re
7e20 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 mi.flamary@unice.fr>\n#.........
7e40 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e .Stanislas.Chambon.<stan.chambon
7e60 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c @gmail.com>\n#\n#.License:.MIT.L
7e80 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 79 6c 61 icense\n\nimport.matplotlib.pyla
7ea0 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 20 b.as.pl\nimport.ot".......].....
7ec0 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
7ee0 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":.{},...
7f00 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
7f20 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 20 e.data\n-------------\n\n"......
7f40 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
7f60 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
7f80 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":.{...
7fa0 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.......}
7fc0 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
7fe0 75 72 63 65 22 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 urce":.[........."n_samples_sour
8000 63 65 20 3d 20 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 ce.=.150\nn_samples_target.=.150
8020 5c 6e 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 \n\nXs,.ys.=.ot.datasets.make_da
8040 74 61 5f 63 6c 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 ta_classif('3gauss',.n_samples_s
8060 6f 75 72 63 65 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 ource)\nXt,.yt.=.ot.datasets.mak
8080 65 5f 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 73 61 6d 70 e_data_classif('3gauss2',.n_samp
80a0 6c 65 73 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 les_target)".......].....},.....
80c0 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",
80e0 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
8100 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 54 72 61 6e 73 70 6f 72 74 20 73 6f 75 72 urce":.[........."Transport.sour
8120 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 65 73 5c 6e ce.samples.onto.target.samples\n
8140 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 --------------------------------
8160 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".......].....},
8180 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"
81a0 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,
81c0 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
81e0 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.......},......."
8200 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":.[.
8220 20 20 20 20 20 20 20 20 22 23 20 75 6e 73 75 70 65 72 76 69 73 65 64 20 64 6f 6d 61 69 6e 20 61 ........"#.unsupervised.domain.a
8240 64 61 70 74 61 74 69 6f 6e 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 20 3d 20 6f 74 2e 64 daptation\not_sinkhorn_un.=.ot.d
8260 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)\
8280 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 not_sinkhorn_un.fit(Xs=Xs,.Xt=Xt
82a0 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 20 3d 20 6f 74 5f 73 69 )\ntransp_Xs_sinkhorn_un.=.ot_si
82c0 6e 6b 68 6f 72 6e 5f 75 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 5c 6e 23 20 nkhorn_un.transform(Xs=Xs)\n\n#.
82e0 73 65 6d 69 2d 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 semi-supervised.domain.adaptatio
8300 6e 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b n\not_sinkhorn_semi.=.ot.da.Sink
8320 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 5c 6e 6f 74 5f 73 69 hornTransport(reg_e=1e-1)\not_si
8340 6e 6b 68 6f 72 6e 5f 73 65 6d 69 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 2c 20 79 73 nkhorn_semi.fit(Xs=Xs,.Xt=Xt,.ys
8360 3d 79 73 2c 20 79 74 3d 79 74 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f =ys,.yt=yt)\ntransp_Xs_sinkhorn_
8380 73 65 6d 69 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 2e 74 72 61 6e 73 66 6f 72 semi.=.ot_sinkhorn_semi.transfor
83a0 6d 28 58 73 3d 58 73 29 5c 6e 5c 6e 23 20 73 65 6d 69 20 73 75 70 65 72 76 69 73 65 64 20 44 41 m(Xs=Xs)\n\n#.semi.supervised.DA
83c0 20 75 73 65 73 20 61 76 61 69 6c 61 62 6c 65 20 6c 61 62 61 6c 65 64 20 74 61 72 67 65 74 20 73 .uses.available.labaled.target.s
83e0 61 6d 70 6c 65 73 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 63 6f 73 74 5c 6e 23 20 6d 61 74 amples.to.modify.the.cost\n#.mat
8400 72 69 78 20 69 6e 76 6f 6c 76 65 64 20 69 6e 20 74 68 65 20 4f 54 20 70 72 6f 62 6c 65 6d 2e 20 rix.involved.in.the.OT.problem..
8420 54 68 65 20 63 6f 73 74 20 6f 66 20 74 72 61 6e 73 70 6f 72 74 69 6e 67 20 61 20 73 6f 75 72 63 The.cost.of.transporting.a.sourc
8440 65 20 73 61 6d 70 6c 65 5c 6e 23 20 6f 66 20 63 6c 61 73 73 20 41 20 6f 6e 74 6f 20 61 20 74 61 e.sample\n#.of.class.A.onto.a.ta
8460 72 67 65 74 20 73 61 6d 70 6c 65 20 6f 66 20 63 6c 61 73 73 20 42 20 21 3d 20 41 20 69 73 20 73 rget.sample.of.class.B.!=.A.is.s
8480 65 74 20 74 6f 20 69 6e 66 69 6e 69 74 65 2c 20 6f 72 20 61 5c 6e 23 20 76 65 72 79 20 6c 61 72 et.to.infinite,.or.a\n#.very.lar
84a0 67 65 20 76 61 6c 75 65 5c 6e 5c 6e 23 20 6e 6f 74 65 20 74 68 61 74 20 69 6e 20 74 68 65 20 70 ge.value\n\n#.note.that.in.the.p
84c0 72 65 73 65 6e 74 20 63 61 73 65 20 77 65 20 63 6f 6e 73 69 64 65 72 20 74 68 61 74 20 61 6c 6c resent.case.we.consider.that.all
84e0 20 74 68 65 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 20 61 72 65 5c 6e 23 20 6c 61 62 65 6c .the.target.samples.are\n#.label
8500 65 64 2e 20 46 6f 72 20 64 61 69 6c 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 73 6f 6d 65 ed..For.daily.applications,.some
8520 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 20 6d 69 67 68 74 20 6e 6f 74 20 68 61 76 65 20 6c 61 .target.sample.might.not.have.la
8540 62 65 6c 73 2c 5c 6e 23 20 69 6e 20 74 68 69 73 20 63 61 73 65 20 74 68 65 20 65 6c 65 6d 65 6e bels,\n#.in.this.case.the.elemen
8560 74 20 6f 66 20 79 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 73 65 20 73 t.of.yt.corresponding.to.these.s
8580 61 6d 70 6c 65 73 20 73 68 6f 75 6c 64 20 62 65 5c 6e 23 20 66 69 6c 6c 65 64 20 77 69 74 68 20 amples.should.be\n#.filled.with.
85a0 2d 31 2e 5c 6e 5c 6e 23 20 57 61 72 6e 69 6e 67 3a 20 77 65 20 72 65 63 61 6c 6c 20 74 68 61 74 -1.\n\n#.Warning:.we.recall.that
85c0 20 2d 31 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 61 73 20 61 20 63 6c 61 73 73 20 6c 61 .-1.cannot.be.used.as.a.class.la
85e0 62 65 6c 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 bel".......].....},.....{.......
8600 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",......."
8620 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":.[
8640 0a 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 ........."Fig.1.:.plots.source.a
8660 6e 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 nd.target.samples.+.matrix.of.pa
8680 69 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 irwise.distance\n---------------
86a0 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 --------------------------------
86c0 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 20 20 20 ----------------------\n\n".....
86e0 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
8700 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
8720 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":.{..
8740 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.......
8760 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
8780 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 ource":.[........."pl.figure(1,.
87a0 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 31 30 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c figsize=(10,.10))\npl.subplot(2,
87c0 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b .2,.1)\npl.scatter(Xs[:,.0],.Xs[
87e0 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='
8800 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c Source.samples')\npl.xticks([])\
8820 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 30 29 npl.yticks([])\npl.legend(loc=0)
8840 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c \npl.title('Source..samples')\n\
8860 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 npl.subplot(2,.2,.2)\npl.scatter
8880 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 (Xt[:,.0],.Xt[:,.1],.c=yt,.marke
88a0 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e r='o',.label='Target.samples')\n
88c0 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 6c pl.xticks([])\npl.yticks([])\npl
88e0 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 67 65 74 .legend(loc=0)\npl.title('Target
8900 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 33 .samples')\n\npl.subplot(2,.2,.3
8920 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 75 6e 2e 63 6f 73 74 )\npl.imshow(ot_sinkhorn_un.cost
8940 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 6c 2e _,.interpolation='nearest')\npl.
8960 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 69 xticks([])\npl.yticks([])\npl.ti
8980 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 20 2d 20 75 6e 73 75 70 65 72 76 69 73 65 64 20 tle('Cost.matrix.-.unsupervised.
89a0 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 34 29 5c 6e 70 6c 2e DA')\n\npl.subplot(2,.2,.4)\npl.
89c0 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 6f 73 74 5f 2c 20 69 imshow(ot_sinkhorn_semi.cost_,.i
89e0 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 78 74 69 63 nterpolation='nearest')\npl.xtic
8a00 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 28 ks([])\npl.yticks([])\npl.title(
8a20 27 43 6f 73 74 20 6d 61 74 72 69 78 20 2d 20 73 65 6d 69 73 75 70 65 72 76 69 73 65 64 20 44 41 'Cost.matrix.-.semisupervised.DA
8a40 27 29 5c 6e 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 23 20 74 68 65 ')\n\npl.tight_layout()\n\n#.the
8a60 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 20 69 6e 20 74 68 65 20 73 65 6d 69 2d 73 75 .optimal.coupling.in.the.semi-su
8a80 70 65 72 76 69 73 65 64 20 44 41 20 63 61 73 65 20 77 69 6c 6c 20 65 78 68 69 62 69 74 20 5c 22 pervised.DA.case.will.exhibit.\"
8aa0 20 73 68 61 70 65 5c 6e 23 20 73 69 6d 69 6c 61 72 5c 22 20 74 6f 20 74 68 65 20 63 6f 73 74 20 .shape\n#.similar\".to.the.cost.
8ac0 6d 61 74 72 69 78 2c 20 28 62 6c 6f 63 6b 20 64 69 61 67 6f 6e 61 6c 20 6d 61 74 72 69 78 29 22 matrix,.(block.diagonal.matrix)"
8ae0 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
8b00 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
8b20 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":.[....
8b40 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 6f 75 70 ....."Fig.2.:.plots.optimal.coup
8b60 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 64 73 5c lings.for.the.different.methods\
8b80 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-------------------------------
8ba0 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".
8bc0 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
8be0 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
8c00 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":
8c20 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...
8c40 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":.[],.....
8c60 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 .."source":.[........."pl.figure
8c80 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 38 2c 20 34 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f (2,.figsize=(8,.4))\n\npl.subplo
8ca0 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 t(1,.2,.1)\npl.imshow(ot_sinkhor
8cc0 6e 5f 75 6e 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 n_un.coupling_,.interpolation='n
8ce0 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 79 74 69 63 earest')\npl.xticks([])\npl.ytic
8d00 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 70 6c 69 ks([])\npl.title('Optimal.coupli
8d20 6e 67 5c 5c 6e 55 6e 73 75 70 65 72 76 69 73 65 64 20 44 41 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 ng\\nUnsupervised.DA')\n\npl.sub
8d40 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 69 6e 6b plot(1,.2,.2)\npl.imshow(ot_sink
8d60 68 6f 72 6e 5f 73 65 6d 69 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 horn_semi.coupling_,.interpolati
8d80 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 6e 70 6c on='nearest')\npl.xticks([])\npl
8da0 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 63 .yticks([])\npl.title('Optimal.c
8dc0 6f 75 70 6c 69 6e 67 5c 5c 6e 53 65 6d 69 2d 73 75 70 65 72 76 69 73 65 64 20 44 41 27 29 5c 6e oupling\\nSemi-supervised.DA')\n
8de0 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 20 \npl.tight_layout()".......]....
8e00 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
8e20 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":.{},..
8e40 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 33 20 ....."source":.[........."Fig.3.
8e60 3a 20 70 6c 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 :.plot.transported.samples\n----
8e80 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 6e ----------------------------\n\n
8ea0 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
8ec0 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
8ee0 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
8f00 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.
8f20 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":.[],...
8f40 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 64 69 73 70 6c ...."source":.[........."#.displ
8f60 61 79 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 70 6c 2e 66 69 67 75 72 ay.transported.samples\npl.figur
8f80 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 38 2c 20 34 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 e(4,.figsize=(8,.4))\npl.subplot
8fa0 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 (1,.2,.1)\npl.scatter(Xt[:,.0],.
8fc0 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 Xt[:,.1],.c=yt,.marker='o',\n...
8fe0 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 ........label='Target.samples',.
9000 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 73 alpha=0.5)\npl.scatter(transp_Xs
9020 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 73 69 _sinkhorn_un[:,.0],.transp_Xs_si
9040 6e 6b 68 6f 72 6e 5f 75 6e 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 nkhorn_un[:,.1],.c=ys,\n........
9060 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d ...marker='+',.label='Transp.sam
9080 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 72 61 6e 73 70 6f 72 ples',.s=30)\npl.title('Transpor
90a0 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 74 27 29 5c 6e 70 6c ted.samples\\nEmdTransport')\npl
90c0 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 28 5b 5d 29 5c 6e 70 .legend(loc=0)\npl.xticks([])\np
90e0 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c l.yticks([])\n\npl.subplot(1,.2,
9100 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 74 5b 3a 2c 20 .2)\npl.scatter(Xt[:,.0],.Xt[:,.
9120 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 20 1],.c=yt,.marker='o',\n.........
9140 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 3d ..label='Target.samples',.alpha=
9160 30 2e 35 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 0.5)\npl.scatter(transp_Xs_sinkh
9180 6f 72 6e 5f 73 65 6d 69 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f orn_semi[:,.0],.transp_Xs_sinkho
91a0 72 6e 5f 73 65 6d 69 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 rn_semi[:,.1],.c=ys,\n..........
91c0 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c .marker='+',.label='Transp.sampl
91e0 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 es',.s=30)\npl.title('Transporte
9200 64 20 73 61 6d 70 6c 65 73 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 5c d.samples\\nSinkhornTransport')\
9220 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\
9240 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()"..
9260 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":.
9280 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
92a0 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
92c0 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"
92e0 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
9300 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
9320 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",.
9340 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.......},...
9360 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",....
9380 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",.
93a0 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
93c0 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",...
93e0 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"
9400 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".....}
9420 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
9440 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 27 4a df 9c at_minor":.0.}PK........-`.L'J..
9460 9d 0d 00 00 9d 0d 00 00 10 00 00 00 70 6c 6f 74 5f 4f 54 5f 31 44 2e 69 70 79 6e 62 7b 0a 20 20 ............plot_OT_1D.ipynb{...
9480 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 70 "cells":.[.....{......."cell_typ
94a0 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
94c0 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":.{..
94e0 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.......
9500 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
9520 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 ource":.[........."%matplotlib.i
9540 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 20 nline".......].....},.....{.....
9560 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",......
9580 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":
95a0 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 31 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 .[........."\n#.1D.optimal.trans
95c0 70 6f 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 port\n\n\nThis.example.illustrat
95e0 65 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 45 4d 44 20 61 6e 64 20 53 69 es.the.computation.of.EMD.and.Si
9600 6e 6b 68 6f 72 6e 20 74 72 61 6e 73 70 6f 72 74 20 70 6c 61 6e 73 5c 6e 61 6e 64 20 74 68 65 69 nkhorn.transport.plans\nand.thei
9620 72 20 76 69 73 75 61 6c 69 7a 61 74 69 6f 6e 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a r.visualization.\n\n\n".......].
9640 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":.
9660 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":
9680 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":.{......
96a0 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.......},..
96c0 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
96e0 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c e":.[........."#.Author:.Remi.Fl
9700 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 amary.<remi.flamary@unice.fr>\n#
9720 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f \n#.License:.MIT.License\n\nimpo
9740 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 rt.numpy.as.np\nimport.matplotli
9760 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 6d 70 6f 72 74 b.pylab.as.pl\nimport.ot\nimport
9780 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 20 69 6d 70 6f 72 .ot.plot\nfrom.ot.datasets.impor
97a0 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 20 20 20 20 20 20 t.make_1D_gauss.as.gauss".......
97c0 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"
97e0 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":.
9800 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
9820 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 2d 5c 6e 5c 6e 22 enerate.data\n-------------\n\n"
9840 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
9860 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
9880 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"
98a0 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..
98c0 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":.[],....
98e0 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
9900 6d 65 74 65 72 73 5c 6e 5c 6e 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 5c 6e 5c 6e meters\n\nn.=.100..#.nb.bins\n\n
9920 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 61 6e 67 65 28 6e #.bin.positions\nx.=.np.arange(n
9940 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 61 75 73 73 69 61 ,.dtype=np.float64)\n\n#.Gaussia
9960 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 28 6e 2c 20 6d 3d n.distributions\na.=.gauss(n,.m=
9980 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 62 20 3d 20,.s=5)..#.m=.mean,.s=.std\nb.=
99a0 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 20 6c 6f 73 73 20 .gauss(n,.m=60,.s=10)\n\n#.loss.
99c0 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 70 65 28 28 6e matrix\nM.=.ot.dist(x.reshape((n
99e0 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 4d 20 2f 3d 20 ,.1)),.x.reshape((n,.1)))\nM./=.
9a00 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()".......].....},.....{...
9a20 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",....
9a40 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
9a60 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 ":.[........."Plot.distributions
9a80 20 61 6e 64 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .and.loss.matrix\n--------------
9aa0 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 20 --------------------\n\n".......
9ac0 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"
9ae0 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
9b00 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":.{....
9b20 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.......},
9b40 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
9b60 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 74 68 65 20 64 69 rce":.[........."#%%.plot.the.di
9b80 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 stributions\n\npl.figure(1,.figs
9ba0 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 61 2c 20 27 62 27 ize=(6.4,.3))\npl.plot(x,.a,.'b'
9bc0 2c 20 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 ,.label='Source.distribution')\n
9be0 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 pl.plot(x,.b,.'r',.label='Target
9c00 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 5c 6e .distribution')\npl.legend()\n\n
9c20 23 25 25 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 #%%.plot.distributions.and.loss.
9c40 6d 61 74 72 69 78 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 matrix\n\npl.figure(2,.figsize=(
9c60 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 2c 5,.5))\not.plot.plot1D_mat(a,.b,
9c80 20 4d 2c 20 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 .M,.'Cost.matrix.M')".......]...
9ca0 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
9cc0 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":.{},.
9ce0 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 76 65 ......"source":.[........."Solve
9d00 20 45 4d 44 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 .EMD\n---------\n\n".......]....
9d20 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
9d40 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
9d60 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":.{.........
9d80 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.......},.....
9da0 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":
9dc0 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 4d 44 5c 6e 5c 6e 47 30 20 3d 20 6f 74 2e 65 .[........."#%%.EMD\n\nG0.=.ot.e
9de0 6d 64 28 61 2c 20 62 2c 20 4d 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 69 67 73 md(a,.b,.M)\n\npl.figure(3,.figs
9e00 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 28 ize=(5,.5))\not.plot.plot1D_mat(
9e20 61 2c 20 62 2c 20 47 30 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 22 0a 20 20 20 20 20 a,.b,.G0,.'OT.matrix.G0')"......
9e40 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
9e60 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":
9e80 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":.[........."
9ea0 53 6f 6c 76 65 20 53 69 6e 6b 68 6f 72 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e Solve.Sinkhorn\n--------------\n
9ec0 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".......].....},.....{......."
9ee0 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
9f00 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
9f20 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
9f40 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":.[],.
9f60 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 53 ......"source":.[........."#%%.S
9f80 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 6c 61 6d 62 64 20 3d 20 31 65 2d 33 5c 6e 47 73 20 3d 20 6f 74 inkhorn\n\nlambd.=.1e-3\nGs.=.ot
9fa0 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 20 62 2c 20 4d 2c 20 6c 61 6d 62 64 2c 20 76 65 72 62 6f 73 .sinkhorn(a,.b,.M,.lambd,.verbos
9fc0 65 3d 54 72 75 65 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d e=True)\n\npl.figure(4,.figsize=
9fe0 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
a000 2c 20 47 73 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 5c 6e 70 ,.Gs,.'OT.matrix.Sinkhorn')\n\np
a020 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 20 22 l.show()".......].....}...],..."
a040 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b metadata":.{....."kernelspec":.{
a060 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 33 ......."display_name":."Python.3
a080 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 20 ",......."language":."python",..
a0a0 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 20 ....."name":."python3".....},...
a0c0 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 65 .."language_info":.{......."code
a0e0 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 20 mirror_mode":.{........."name":.
a100 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 0a "ipython",........."version":.3.
a120 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 3a ......},......."file_extension":
a140 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 2f .".py",......."mimetype":."text/
a160 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 6e x-python",......."name":."python
a180 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 22 ",......."nbconvert_exporter":."
a1a0 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 3a python",......."pygments_lexer":
a1c0 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 33 ."ipython3",......."version":."3
a1e0 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 20 34 .6.5".....}...},..."nbformat":.4
a200 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 00 ,..."nbformat_minor":.0.}PK.....
a220 00 00 00 33 55 38 4d fe 7f 06 c6 4c 28 00 00 4c 28 00 00 15 00 00 00 70 6c 6f 74 5f 73 74 6f 63 ...3U8M....L(..L(......plot_stoc
a240 68 61 73 74 69 63 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 hastic.ipynb{..."cells":.[.....{
a260 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",.....
a280 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,......
a2a0 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
a2c0 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
a2e0 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":.[.......
a300 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".......]..
a320 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":."
a340 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":.{},
a360 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#.
a380 53 74 6f 63 68 61 73 74 69 63 20 65 78 61 6d 70 6c 65 73 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 Stochastic.examples\n\n\nThis.ex
a3a0 61 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 ample.is.designed.to.show.how.to
a3c0 20 75 73 65 20 74 68 65 20 73 74 6f 63 68 61 74 69 63 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 5c .use.the.stochatic.optimization\
a3e0 6e 61 6c 67 6f 72 69 74 68 6d 73 20 66 6f 72 20 64 65 73 63 72 65 74 65 20 61 6e 64 20 73 65 6d nalgorithms.for.descrete.and.sem
a400 69 63 6f 6e 74 69 6e 6f 75 73 20 6d 65 61 73 75 72 65 73 20 66 72 6f 6d 20 74 68 65 20 50 4f 54 icontinous.measures.from.the.POT
a420 20 6c 69 62 72 61 72 79 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a .library.\n\n\n".......].....},.
a440 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",
a460 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,.
a480 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
a4a0 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
a4c0 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":.[..
a4e0 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a 20 4b 69 6c 69 61 6e 20 46 61 74 72 61 73 20 ......."#.Author:.Kilian.Fatras.
a500 3c 6b 69 6c 69 61 6e 2e 66 61 74 72 61 73 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 20 <kilian.fatras@gmail.com>\n#\n#.
a520 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6d License:.MIT.License\n\nimport.m
a540 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6e 75 atplotlib.pylab.as.pl\nimport.nu
a560 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 69 6d 70 6f 72 74 20 6f 74 2e mpy.as.np\nimport.ot\nimport.ot.
a580 70 6c 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 20 20 20 plot".......].....},.....{......
a5a0 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",.......
a5c0 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":.
a5e0 5b 0a 20 20 20 20 20 20 20 20 22 43 4f 4d 50 55 54 45 20 54 52 41 4e 53 50 4f 52 54 41 54 49 4f [........."COMPUTE.TRANSPORTATIO
a600 4e 20 4d 41 54 52 49 58 20 46 4f 52 20 53 45 4d 49 2d 44 55 41 4c 20 50 52 4f 42 4c 45 4d 5c 6e N.MATRIX.FOR.SEMI-DUAL.PROBLEM\n
a620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
a640 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
a660 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c ############\n\n".......].....},
a680 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"
a6a0 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,
a6c0 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
a6e0 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.......},......."
a700 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":.[.
a720 20 20 20 20 20 20 20 20 22 70 72 69 6e 74 28 5c 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 53 45 4d ........"print(\"------------SEM
a740 49 2d 44 55 41 4c 20 50 52 4f 42 4c 45 4d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 22 29 22 0a 20 I-DUAL.PROBLEM------------\")"..
a760 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_
a780 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
a7a0 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":.[......
a7c0 20 20 20 22 44 49 53 43 52 45 54 45 20 43 41 53 45 5c 6e 53 61 6d 70 6c 65 20 74 77 6f 20 64 69 ..."DISCRETE.CASE\nSample.two.di
a7e0 73 63 72 65 74 65 20 6d 65 61 73 75 72 65 73 20 66 6f 72 20 74 68 65 20 64 69 73 63 72 65 74 65 screte.measures.for.the.discrete
a800 20 63 61 73 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 .case\n-------------------------
a820 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 44 65 66 69 6e 65 20 32 --------------------\n\nDefine.2
a840 20 64 69 73 63 72 65 74 65 20 6d 65 61 73 75 72 65 73 20 61 20 61 6e 64 20 62 2c 20 74 68 65 20 .discrete.measures.a.and.b,.the.
a860 70 6f 69 6e 74 73 20 77 68 65 72 65 20 61 72 65 20 64 65 66 69 6e 65 64 20 74 68 65 20 73 6f 75 points.where.are.defined.the.sou
a880 72 63 65 5c 6e 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 rce\nand.the.target.measures.and
a8a0 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 5c 6e 5c 6e 22 .finally.the.cost.matrix.c.\n\n"
a8c0 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
a8e0 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
a900 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"
a920 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..
a940 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":.[],....
a960 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 6f 75 72 63 65 ..."source":.[........."n_source
a980 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 5c 6e 6e 75 6d .=.7\nn_target.=.4\nreg.=.1\nnum
a9a0 49 74 65 72 6d 61 78 20 3d 20 31 30 30 30 5c 6e 5c 6e 61 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 75 Itermax.=.1000\n\na.=.ot.utils.u
a9c0 6e 69 66 28 6e 5f 73 6f 75 72 63 65 29 5c 6e 62 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 75 6e 69 66 nif(n_source)\nb.=.ot.utils.unif
a9e0 28 6e 5f 74 61 72 67 65 74 29 5c 6e 5c 6e 72 6e 67 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 52 61 (n_target)\n\nrng.=.np.random.Ra
aa00 6e 64 6f 6d 53 74 61 74 65 28 30 29 5c 6e 58 5f 73 6f 75 72 63 65 20 3d 20 72 6e 67 2e 72 61 6e ndomState(0)\nX_source.=.rng.ran
aa20 64 6e 28 6e 5f 73 6f 75 72 63 65 2c 20 32 29 5c 6e 59 5f 74 61 72 67 65 74 20 3d 20 72 6e 67 2e dn(n_source,.2)\nY_target.=.rng.
aa40 72 61 6e 64 6e 28 6e 5f 74 61 72 67 65 74 2c 20 32 29 5c 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 randn(n_target,.2)\nM.=.ot.dist(
aa60 58 5f 73 6f 75 72 63 65 2c 20 59 5f 74 61 72 67 65 74 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 X_source,.Y_target)".......]....
aa80 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
aaa0 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":.{},..
aac0 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 61 6c 6c 20 74 ....."source":.[........."Call.t
aae0 68 65 20 5c 22 53 41 47 5c 22 20 6d 65 74 68 6f 64 20 74 6f 20 66 69 6e 64 20 74 68 65 20 74 72 he.\"SAG\".method.to.find.the.tr
ab00 61 6e 73 70 6f 72 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 69 6e 20 74 68 65 20 64 69 73 63 72 ansportation.matrix.in.the.discr
ab20 65 74 65 20 63 61 73 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 ete.case\n----------------------
ab40 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 44 65 66 69 6e -----------------------\n\nDefin
ab60 65 20 74 68 65 20 6d 65 74 68 6f 64 20 5c 22 53 41 47 5c 22 2c 20 63 61 6c 6c 20 6f 74 2e 73 6f e.the.method.\"SAG\",.call.ot.so
ab80 6c 76 65 5f 73 65 6d 69 5f 64 75 61 6c 5f 65 6e 74 72 6f 70 69 63 20 61 6e 64 20 70 6c 6f 74 20 lve_semi_dual_entropic.and.plot.
aba0 74 68 65 5c 6e 72 65 73 75 6c 74 73 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d the\nresults.\n\n".......].....}
abc0 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 65 ,.....{......."cell_type":."code
abe0 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 6c ",......."execution_count":.null
ac00 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 63 ,......."metadata":.{........."c
ac20 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 20 ollapsed":.false.......},.......
ac40 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 5b "outputs":.[],......."source":.[
ac60 0a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 20 3d 20 5c 22 53 41 47 5c 22 5c 6e 73 61 67 5f ........."method.=.\"SAG\"\nsag_
ac80 70 69 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 pi.=.ot.stochastic.solve_semi_du
aca0 61 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 al_entropic(a,.b,.M,.reg,.method
acc0 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 20 20 20 20 20 20 ,\n.............................
ace0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6d 49 74 65 72 6d 61 78 29 5c 6e ...................numItermax)\n
ad00 70 72 69 6e 74 28 73 61 67 5f 70 69 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 print(sag_pi)".......].....},...
ad20 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
ad40 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":.{},......."
ad60 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 45 4d 49 43 4f 4e 54 49 4e 4f 55 source":.[........."SEMICONTINOU
ad80 53 20 43 41 53 45 5c 6e 53 61 6d 70 6c 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 6d 65 61 73 75 S.CASE\nSample.one.general.measu
ada0 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 20 66 6f re.a,.one.discrete.measures.b.fo
adc0 72 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 2d r.the.semicontinous\ncase\n-----
ade0 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 --------------------------------
ae00 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 44 65 66 69 6e 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 6d --------\n\nDefine.one.general.m
ae20 65 61 73 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 easure.a,.one.discrete.measures.
ae40 62 2c 20 74 68 65 20 70 6f 69 6e 74 73 20 77 68 65 72 65 5c 6e 61 72 65 20 64 65 66 69 6e 65 64 b,.the.points.where\nare.defined
ae60 20 74 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 .the.source.and.the.target.measu
ae80 72 65 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 res.and.finally.the.cost.matrix.
aea0 63 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 c.\n\n".......].....},.....{....
aec0 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
aee0 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
af00 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":.
af20 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":.
af40 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
af60 5f 73 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 _source.=.7\nn_target.=.4\nreg.=
af80 20 31 5c 6e 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 30 30 5c 6e 6c 6f 67 20 3d 20 54 72 75 .1\nnumItermax.=.1000\nlog.=.Tru
afa0 65 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 65 29 e\n\na.=.ot.utils.unif(n_source)
afc0 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 6e 5c \nb.=.ot.utils.unif(n_target)\n\
afe0 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 29 5c nrng.=.np.random.RandomState(0)\
b000 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 2c 20 nX_source.=.rng.randn(n_source,.
b020 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 67 65 2)\nY_target.=.rng.randn(n_targe
b040 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 5f 74 t,.2)\nM.=.ot.dist(X_source,.Y_t
b060 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 20 20 arget)".......].....},.....{....
b080 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",.....
b0a0 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"
b0c0 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 61 6c 6c 20 74 68 65 20 5c 22 41 53 47 44 5c 22 20 6d :.[........."Call.the.\"ASGD\".m
b0e0 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 6e ethod.to.find.the.transportation
b100 20 6d 61 74 72 69 78 20 69 6e 20 74 68 65 20 73 65 6d 69 63 6f 6e 74 69 6e 6f 75 73 5c 6e 63 61 .matrix.in.the.semicontinous\nca
b120 73 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 2d 2d se\n----------------------------
b140 2d 2d 2d 2d 2d 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 -----------------\n\nDefine.the.
b160 6d 65 74 68 6f 64 20 5c 22 41 53 47 44 5c 22 2c 20 63 61 6c 6c 20 6f 74 2e 73 6f 6c 76 65 5f 73 method.\"ASGD\",.call.ot.solve_s
b180 65 6d 69 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 5c 6e emi_dual_entropic.and.plot.the\n
b1a0 72 65 73 75 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 results.\n\n".......].....},....
b1c0 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",...
b1e0 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,....
b200 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
b220 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
b240 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":.[.....
b260 20 20 20 20 22 6d 65 74 68 6f 64 20 3d 20 5c 22 41 53 47 44 5c 22 5c 6e 61 73 67 64 5f 70 69 2c ...."method.=.\"ASGD\"\nasgd_pi,
b280 20 6c 6f 67 5f 61 73 67 64 20 3d 20 6f 74 2e 73 74 6f 63 68 61 73 74 69 63 2e 73 6f 6c 76 65 5f .log_asgd.=.ot.stochastic.solve_
b2a0 73 65 6d 69 5f 64 75 61 6c 5f 65 6e 74 72 6f 70 69 63 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 2c semi_dual_entropic(a,.b,.M,.reg,
b2c0 20 6d 65 74 68 6f 64 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 .method,\n......................
b2e0 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 ................................
b300 20 20 20 20 20 6e 75 6d 49 74 65 72 6d 61 78 2c 20 6c 6f 67 3d 6c 6f 67 29 5c 6e 70 72 69 6e 74 .....numItermax,.log=log)\nprint
b320 28 6c 6f 67 5f 61 73 67 64 5b 27 61 6c 70 68 61 27 5d 2c 20 6c 6f 67 5f 61 73 67 64 5b 27 62 65 (log_asgd['alpha'],.log_asgd['be
b340 74 61 27 5d 29 5c 6e 70 72 69 6e 74 28 61 73 67 64 5f 70 69 29 22 0a 20 20 20 20 20 20 5d 0a 20 ta'])\nprint(asgd_pi)".......]..
b360 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":."
b380 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":.{},
b3a0 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 70 ......."source":.[........."Comp
b3c0 61 72 65 20 74 68 65 20 72 65 73 75 6c 74 73 20 77 69 74 68 20 74 68 65 20 53 69 6e 6b 68 6f 72 are.the.results.with.the.Sinkhor
b3e0 6e 20 61 6c 67 6f 72 69 74 68 6d 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d n.algorithm\n-------------------
b400 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 43 61 --------------------------\n\nCa
b420 6c 6c 20 74 68 65 20 53 69 6e 6b 68 6f 72 6e 20 61 6c 67 6f 72 69 74 68 6d 20 66 72 6f 6d 20 50 ll.the.Sinkhorn.algorithm.from.P
b440 4f 54 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 OT\n\n".......].....},.....{....
b460 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
b480 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
b4a0 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":.
b4c0 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":.
b4e0 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 73 [],......."source":.[........."s
b500 69 6e 6b 68 6f 72 6e 5f 70 69 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 20 62 2c 20 4d inkhorn_pi.=.ot.sinkhorn(a,.b,.M
b520 2c 20 72 65 67 29 5c 6e 70 72 69 6e 74 28 73 69 6e 6b 68 6f 72 6e 5f 70 69 29 22 0a 20 20 20 20 ,.reg)\nprint(sinkhorn_pi)".....
b540 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
b560 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"
b580 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":.[.........
b5a0 22 50 4c 4f 54 20 54 52 41 4e 53 50 4f 52 54 41 54 49 4f 4e 20 4d 41 54 52 49 58 5c 6e 23 23 23 "PLOT.TRANSPORTATION.MATRIX\n###
b5c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b5e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b600 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 ##########\n\n".......].....},..
b620 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
b640 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":.{},.......
b660 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 41 47 20 72 65 "source":.[........."Plot.SAG.re
b680 73 75 6c 74 73 5c 6e 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 sults\n----------------\n\n"....
b6a0 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
b6c0 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
b6e0 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":.{.
b700 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......
b720 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":.[],......."
b740 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 34 2c source":.[........."pl.figure(4,
b760 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
b780 5f 6d 61 74 28 61 2c 20 62 2c 20 73 61 67 5f 70 69 2c 20 27 73 65 6d 69 2d 64 75 61 6c 20 3a 20 _mat(a,.b,.sag_pi,.'semi-dual.:.
b7a0 4f 54 20 6d 61 74 72 69 78 20 53 41 47 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 OT.matrix.SAG')\npl.show()".....
b7c0 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
b7e0 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"
b800 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":.[.........
b820 22 50 6c 6f 74 20 41 53 47 44 20 72 65 73 75 6c 74 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d "Plot.ASGD.results\n------------
b840 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".......].....},.....{.
b860 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",......
b880 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,.......
b8a0 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
b8c0 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
b8e0 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":.[........
b900 20 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 ."pl.figure(4,.figsize=(5,.5))\n
b920 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 61 73 67 64 5f 70 69 ot.plot.plot1D_mat(a,.b,.asgd_pi
b940 2c 20 27 73 65 6d 69 2d 64 75 61 6c 20 3a 20 4f 54 20 6d 61 74 72 69 78 20 41 53 47 44 27 29 5c ,.'semi-dual.:.OT.matrix.ASGD')\
b960 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 20 20 20 7b npl.show()".......].....},.....{
b980 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",.
b9a0 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
b9c0 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 6b 68 6f 72 6e 20 72 rce":.[........."Plot.Sinkhorn.r
b9e0 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 2d 2d 2d 2d 5c 6e 5c esults\n---------------------\n\
ba00 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
ba20 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
ba40 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
ba60 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
ba80 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":.[],..
baa0 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
bac0 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.
bae0 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 5f 70 69 2c 20 27 4f plot1D_mat(a,.b,.sinkhorn_pi,.'O
bb00 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 68 6f 77 28 29 22 0a T.matrix.Sinkhorn')\npl.show()".
bb20 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
bb40 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
bb60 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":.[.....
bb80 20 20 20 20 22 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 ...."COMPUTE.TRANSPORTATION.MATR
bba0 49 58 20 46 4f 52 20 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 IX.FOR.DUAL.PROBLEM\n###########
bbc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
bbe0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
bc00 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 20 #\n\n".......].....},.....{.....
bc20 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
bc40 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
bc60 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
bc80 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":.[
bca0 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 72 ],......."source":.[........."pr
bcc0 69 6e 74 28 5c 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 44 55 41 4c 20 50 52 4f 42 4c 45 4d 2d 2d int(\"------------DUAL.PROBLEM--
bce0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 22 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 ----------\")".......].....},...
bd00 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
bd20 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":.{},......."
bd40 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 45 4d 49 43 4f 4e 54 49 4e 4f 55 source":.[........."SEMICONTINOU
bd60 53 20 43 41 53 45 5c 6e 53 61 6d 70 6c 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 6d 65 61 73 75 S.CASE\nSample.one.general.measu
bd80 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 20 66 6f re.a,.one.discrete.measures.b.fo
bda0 72 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 2d r.the.semicontinous\ncase\n-----
bdc0 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 --------------------------------
bde0 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 44 65 66 69 6e 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 6d --------\n\nDefine.one.general.m
be00 65 61 73 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 easure.a,.one.discrete.measures.
be20 62 2c 20 74 68 65 20 70 6f 69 6e 74 73 20 77 68 65 72 65 5c 6e 61 72 65 20 64 65 66 69 6e 65 64 b,.the.points.where\nare.defined
be40 20 74 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 .the.source.and.the.target.measu
be60 72 65 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 res.and.finally.the.cost.matrix.
be80 63 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 c.\n\n".......].....},.....{....
bea0 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
bec0 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
bee0 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":.
bf00 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":.
bf20 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
bf40 5f 73 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 _source.=.7\nn_target.=.4\nreg.=
bf60 20 31 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 .1\nnumItermax.=.100000\nlr.=.0.
bf80 31 5c 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 1\nbatch_size.=.3\nlog.=.True\n\
bfa0 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 65 29 5c 6e 62 20 na.=.ot.utils.unif(n_source)\nb.
bfc0 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 6e 5c 6e 72 6e 67 =.ot.utils.unif(n_target)\n\nrng
bfe0 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 29 5c 6e 58 5f 73 .=.np.random.RandomState(0)\nX_s
c000 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 2c 20 32 29 5c 6e ource.=.rng.randn(n_source,.2)\n
c020 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 67 65 74 2c 20 32 Y_target.=.rng.randn(n_target,.2
c040 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 5f 74 61 72 67 65 )\nM.=.ot.dist(X_source,.Y_targe
c060 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 20 20 20 20 20 22 t)".......].....},.....{......."
c080 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
c0a0 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":.[.
c0c0 20 20 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 ........"Call.the.\"SGD\".dual.m
c0e0 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 6e ethod.to.find.the.transportation
c100 20 6d 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 .matrix.in.the\nsemicontinous.ca
c120 73 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 2d 2d se\n----------------------------
c140 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 6f 74 2e 73 6f 6c -----------------\n\nCall.ot.sol
c160 76 65 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 ve_dual_entropic.and.plot.the.re
c180 73 75 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 sults.\n\n".......].....},.....{
c1a0 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",.....
c1c0 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,......
c1e0 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
c200 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
c220 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":.[.......
c240 20 20 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 .."sgd_dual_pi,.log_sgd.=.ot.sto
c260 63 68 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 chastic.solve_dual_entropic(a,.b
c280 2c 20 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 ,.M,.reg,\n.....................
c2a0 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 ................................
c2c0 20 20 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 ....batch_size,.numItermax,\n...
c2e0 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 ................................
c300 20 20 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 ......................lr,.log=lo
c320 67 29 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 g)\nprint(log_sgd['alpha'],.log_
c340 73 67 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 sgd['beta'])\nprint(sgd_dual_pi)
c360 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
c380 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
c3a0 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":.[...
c3c0 20 20 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 ......"Compare.the.results.with.
c3e0 74 68 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 the.Sinkhorn.algorithm\n--------
c400 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 --------------------------------
c420 2d 2d 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 -----\n\nCall.the.Sinkhorn.algor
c440 69 74 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 ithm.from.POT\n\n".......].....}
c460 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 65 ,.....{......."cell_type":."code
c480 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 6c ",......."execution_count":.null
c4a0 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 63 ,......."metadata":.{........."c
c4c0 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 20 ollapsed":.false.......},.......
c4e0 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 5b "outputs":.[],......."source":.[
c500 0a 20 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 ........."sinkhorn_pi.=.ot.sinkh
c520 6f 72 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 orn(a,.b,.M,.reg)\nprint(sinkhor
c540 6e 5f 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 n_pi)".......].....},.....{.....
c560 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",......
c580 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":
c5a0 20 5b 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 .[........."Plot..SGD.results\n-
c5c0 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".......]...
c5e0 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
c600 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
c620 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":.{........
c640 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.......},....
c660 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"
c680 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 69 67 73 69 7a :.[........."pl.figure(4,.figsiz
c6a0 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 28 61 2c e=(5,.5))\not.plot.plot1D_mat(a,
c6c0 20 62 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 .b,.sgd_dual_pi,.'dual.:.OT.matr
c6e0 69 78 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 ix.SGD')\npl.show()".......]....
c700 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
c720 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":.{},..
c740 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 53 ....."source":.[........."Plot.S
c760 69 6e 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 inkhorn.results\n---------------
c780 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".......].....},.....{
c7a0 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",.....
c7c0 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,......
c7e0 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
c800 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
c820 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":.[.......
c840 20 20 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 .."pl.figure(4,.figsize=(5,.5))\
c860 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 73 69 6e 6b 68 6f not.plot.plot1D_mat(a,.b,.sinkho
c880 72 6e 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 rn_pi,.'OT.matrix.Sinkhorn')\npl
c8a0 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 22 6d .show()".......].....}...],..."m
c8c0 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a etadata":.{....."kernelspec":.{.
c8e0 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 33 22 ......"display_name":."Python.3"
c900 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 20 20 ,......."language":."python",...
c920 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 20 20 ...."name":."python3".....},....
c940 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 65 6d ."language_info":.{......."codem
c960 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 20 22 irror_mode":.{........."name":."
c980 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 0a 20 ipython",........."version":.3..
c9a0 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 3a 20 .....},......."file_extension":.
c9c0 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 2f 78 ".py",......."mimetype":."text/x
c9e0 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 6e 22 -python",......."name":."python"
ca00 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 22 70 ,......."nbconvert_exporter":."p
ca20 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 3a 20 ython",......."pygments_lexer":.
ca40 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 33 2e "ipython3",......."version":."3.
ca60 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 20 34 2c 6.5".....}...},..."nbformat":.4,
ca80 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 00 00 ..."nbformat_minor":.0.}PK......
caa0 00 00 33 55 38 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 ..3U8M...|............plot_baryc
cac0 65 6e 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 enter_1D.ipynb{..."cells":.[....
cae0 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",...
cb00 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,....
cb20 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
cb40 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
cb60 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":.[.....
cb80 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".......]
cba0 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":
cbc0 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":.{
cbe0 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
cc00 23 20 31 44 20 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e 74 65 72 20 64 65 6d 6f #.1D.Wasserstein.barycenter.demo
cc20 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 20 74 \n\n\nThis.example.illustrates.t
cc40 68 65 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 he.computation.of.regularized.Wa
cc60 73 73 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 ssersyein.Barycenter\nas.propose
cc80 64 20 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 d.in.[3].\n\n\n[3].Benamou,.J..D
cca0 2e 2c 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 .,.Carlier,.G.,.Cuturi,.M.,.Nenn
ccc0 61 2c 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 a,.L.,.&.Peyr\u00e9,.G..(2015).\
cce0 6e 49 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 nIterative.Bregman.projections.f
cd00 6f 72 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 or.regularized.transportation.pr
cd20 6f 62 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 oblems\nSIAM.Journal.on.Scientif
cd40 69 63 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 ic.Computing,.37(2),.A1111-A1138
cd60 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 20 20 .\n\n\n".......].....},.....{...
cd80 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",......."
cda0 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
cdc0 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":
cde0 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":
ce00 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":.[........."
ce20 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 66 6c 61 #.Author:.Remi.Flamary.<remi.fla
ce40 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 20 4d 49 mary@unice.fr>\n#\n#.License:.MI
ce60 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\
ce80 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
cea0 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
cec0 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
cee0 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..#.
cf00 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
cf20 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".......]
cf40 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":
cf60 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":.{
cf80 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
cfa0 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".
cfc0 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
cfe0 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
d000 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":
d020 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...
d040 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":.[],.....
d060 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 6d .."source":.[........."#%%.param
d080 65 74 65 72 73 5c 6e 5c 6e 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 5c 6e 5c 6e 23 eters\n\nn.=.100..#.nb.bins\n\n#
d0a0 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 61 6e 67 65 28 6e 2c .bin.positions\nx.=.np.arange(n,
d0c0 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 61 75 73 73 69 61 6e .dtype=np.float64)\n\n#.Gaussian
d0e0 20 64 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 .distributions\na1.=.ot.datasets
d100 2e 6d 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 .make_1D_gauss(n,.m=20,.s=5)..#.
d120 6d 3d 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 m=.mean,.s=.std\na2.=.ot.dataset
d140 73 2e 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 s.make_1D_gauss(n,.m=60,.s=8)\n\
d160 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 6e 67 20 n#.creating.matrix.A.containing.
d180 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 61 63 6b all.distributions\nA.=.np.vstack
d1a0 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 20 3d 20 ((a1,.a2)).T\nn_distributions.=.
d1c0 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 20 6e 6f A.shape[1]\n\n#.loss.matrix.+.no
d1e0 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 74 30 28 rmalization\nM.=.ot.utils.dist0(
d200 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 20 7d 2c n)\nM./=.M.max()".......].....},
d220 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
d240 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":.{},.....
d260 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 61 74 61 .."source":.[........."Plot.data
d280 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 7d 2c 0a \n---------\n\n".......].....},.
d2a0 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",
d2c0 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,.
d2e0 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
d300 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
d320 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":.[..
d340 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 75 74 69 6f ......."#%%.plot.the.distributio
d360 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 2c ns\n\npl.figure(1,.figsize=(6.4,
d380 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 74 .3))\nfor.i.in.range(n_distribut
d3a0 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 5c ions):\n....pl.plot(x,.A[:,.i])\
d3c0 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 74 npl.title('Distributions')\npl.t
d3e0 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()".......].....},...
d400 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
d420 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":.{},......."
d440 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 63 source":.[........."Barycenter.c
d460 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 2d omputation\n--------------------
d480 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".......].....},.....{....
d4a0 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
d4c0 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
d4e0 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":.
d500 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":.
d520 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":.[........."#
d540 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 5c 6e 5c 6e 61 6c 70 %%.barycenter.computation\n\nalp
d560 68 61 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 ha.=.0.2..#.0<=alpha<=1\nweights
d580 20 3d 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 .=.np.array([1.-.alpha,.alpha])\
d5a0 6e 5c 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 n\n#.l2bary\nbary_l2.=.A.dot(wei
d5c0 67 68 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 ghts)\n\n#.wasserstein\nreg.=.1e
d5e0 2d 33 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 -3\nbary_wass.=.ot.bregman.baryc
d600 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 5c 6e 70 6c 2e enter(A,.M,.reg,.weights)\n\npl.
d620 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 figure(2)\npl.clf()\npl.subplot(
d640 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 5f 64 69 73 74 72 2,.1,.1)\nfor.i.in.range(n_distr
d660 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 20 41 5b 3a 2c 20 ibutions):\n....pl.plot(x,.A[:,.
d680 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 6e 73 27 29 5c 6e i])\npl.title('Distributions')\n
d6a0 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 70 6c 6f 74 28 78 \npl.subplot(2,.1,.2)\npl.plot(x
d6c0 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 29 5c 6e 70 6c 2e ,.bary_l2,.'r',.label='l2')\npl.
d6e0 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 62 65 6c 3d 27 57 plot(x,.bary_wass,.'g',.label='W
d700 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 6e 70 6c 2e 74 69 asserstein')\npl.legend()\npl.ti
d720 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 68 74 5f 6c 61 79 tle('Barycenters')\npl.tight_lay
d740 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 20 20 20 out()".......].....},.....{.....
d760 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",......
d780 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":
d7a0 20 5b 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 .[........."Barycentric.interpol
d7c0 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 2d ation\n-------------------------
d7e0 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".......].....},.....{......
d800 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
d820 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
d840 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
d860 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":.[]
d880 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":.[........."#%%
d8a0 20 62 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 .barycenter.interpolation\n\nn_a
d8c0 6c 70 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 lpha.=.11\nalpha_list.=.np.linsp
d8e0 61 63 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 ace(0,.1,.n_alpha)\n\n\nB_l2.=.n
d900 70 2e 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 p.zeros((n,.n_alpha))\n\nB_wass.
d920 3d 20 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 =.np.copy(B_l2)\n\nfor.i.in.rang
d940 65 28 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 e(0,.n_alpha):\n....alpha.=.alph
d960 61 5f 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 a_list[i]\n....weights.=.np.arra
d980 79 28 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 y([1.-.alpha,.alpha])\n....B_l2[
d9a0 3a 2c 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 :,.i].=.A.dot(weights)\n....B_wa
d9c0 73 73 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 ss[:,.i].=.ot.bregman.barycenter
d9e0 28 41 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 (A,.M,.reg,.weights)\n\n#%%.plot
da00 20 69 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 .interpolation\n\npl.figure(3)\n
da20 5c 6e 63 6d 61 70 20 3d 20 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 70 28 27 76 69 72 69 64 69 73 \ncmap.=.pl.cm.get_cmap('viridis
da40 27 29 5c 6e 76 65 72 74 73 20 3d 20 5b 5d 5c 6e 7a 73 20 3d 20 61 6c 70 68 61 5f 6c 69 73 74 5c ')\nverts.=.[]\nzs.=.alpha_list\
da60 6e 66 6f 72 20 69 2c 20 7a 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a 5c 6e 20 20 20 nfor.i,.z.in.enumerate(zs):\n...
da80 20 79 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 .ys.=.B_l2[:,.i]\n....verts.appe
daa0 6e 64 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 nd(list(zip(x,.ys)))\n\nax.=.pl.
dac0 67 63 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 gcf().gca(projection='3d')\n\npo
dae0 6c 79 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 ly.=.PolyCollection(verts,.facec
db00 6f 6c 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 olors=[cmap(a).for.a.in.alpha_li
db20 73 74 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 st])\npoly.set_alpha(0.7)\nax.ad
db40 64 5f 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 d_collection3d(poly,.zs=zs,.zdir
db60 3d 27 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 ='y')\nax.set_xlabel('x')\nax.se
db80 74 5f 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 t_xlim3d(0,.n)\nax.set_ylabel('$
dba0 5c 5c 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 \\\\alpha$')\nax.set_ylim3d(0,.1
dbc0 29 5c 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 )\nax.set_zlabel('')\nax.set_zli
dbe0 6d 33 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 m3d(0,.B_l2.max().*.1.01)\npl.ti
dc00 74 6c 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 tle('Barycenter.interpolation.wi
dc20 74 68 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 th.l2')\npl.tight_layout()\n\npl
dc40 2e 66 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 .figure(4)\ncmap.=.pl.cm.get_cma
dc60 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 73 20 3d 20 61 p('viridis')\nverts.=.[]\nzs.=.a
dc80 6c 70 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 lpha_list\nfor.i,.z.in.enumerate
dca0 28 7a 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 (zs):\n....ys.=.B_wass[:,.i]\n..
dcc0 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 73 29 29 29 ..verts.append(list(zip(x,.ys)))
dce0 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 74 69 6f 6e \n\nax.=.pl.gcf().gca(projection
dd00 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 69 6f 6e 28 ='3d')\n\npoly.=.PolyCollection(
dd20 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 6f 72 20 61 verts,.facecolors=[cmap(a).for.a
dd40 20 69 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 .in.alpha_list])\npoly.set_alpha
dd60 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 70 6f 6c 79 2c (0.7)\nax.add_collection3d(poly,
dd80 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 6c 61 62 65 6c .zs=zs,.zdir='y')\nax.set_xlabel
dda0 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 6e 61 78 2e 73 ('x')\nax.set_xlim3d(0,.n)\nax.s
ddc0 65 74 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 et_ylabel('$\\\\alpha$')\nax.set
dde0 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 28 27 27 29 _ylim3d(0,.1)\nax.set_zlabel('')
de00 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 29 20 2a 20 \nax.set_zlim3d(0,.B_l2.max().*.
de20 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 69 6e 74 65 1.01)\npl.title('Barycenter.inte
de40 72 70 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 rpolation.with.Wasserstein')\npl
de60 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()"...
de80 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":.{
dea0 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
dec0 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
dee0 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":
df00 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_
df20 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"
df40 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",..
df60 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.......},....
df80 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",.....
dfa0 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",..
dfc0 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
dfe0 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",....
e000 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",
e020 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".....}.
e040 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
e060 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 cc bf 84 66 2d t_minor":.0.}PK........-`.L...f-
e080 18 00 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 ...-.......plot_otda_classes.ipy
e0a0 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
e0c0 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
e0e0 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
e100 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.
e120 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":.[],...
e140 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
e160 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".......].....},.....
e180 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",
e1a0 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
e1c0 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 66 6f 72 20 64 6f 6d urce":.[........."\n#.OT.for.dom
e1e0 61 69 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 ain.adaptation\n\n\nThis.example
e200 20 69 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 .introduces.a.domain.adaptation.
e220 69 6e 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 in.a.2D.setting.and.the.4.OTDA\n
e240 61 70 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 approaches.currently.supported.i
e260 6e 20 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 n.POT.\n\n\n".......].....},....
e280 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",...
e2a0 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,....
e2c0 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
e2e0 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
e300 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":.[.....
e320 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 ...."#.Authors:.Remi.Flamary.<re
e340 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 mi.flamary@unice.fr>\n#.........
e360 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e .Stanislas.Chambon.<stan.chambon
e380 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c @gmail.com>\n#\n#.License:.MIT.L
e3a0 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 79 6c 61 icense\n\nimport.matplotlib.pyla
e3c0 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 20 b.as.pl\nimport.ot".......].....
e3e0 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
e400 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":.{},...
e420 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
e440 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 20 e.data\n-------------\n\n"......
e460 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
e480 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
e4a0 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":.{...
e4c0 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.......}
e4e0 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
e500 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 5f 73 61 6d 70 6c urce":.[........."n_source_sampl
e520 65 73 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 es.=.150\nn_target_samples.=.150
e540 5c 6e 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 \n\nXs,.ys.=.ot.datasets.make_da
e560 74 61 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 ta_classif('3gauss',.n_source_sa
e580 6d 70 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 mples)\nXt,.yt.=.ot.datasets.mak
e5a0 65 5f 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 e_data_classif('3gauss2',.n_targ
e5c0 65 74 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 et_samples)".......].....},.....
e5e0 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",
e600 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
e620 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 68 urce":.[........."Instantiate.th
e640 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 73 e.different.transport.algorithms
e660 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 2d .and.fit.them\n-----------------
e680 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 --------------------------------
e6a0 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".......].....},..
e6c0 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",.
e6e0 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,..
e700 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
e720 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
e740 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":.[...
e760 20 20 20 20 20 20 22 23 20 45 4d 44 20 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 65 6d 64 20 3d ......"#.EMD.Transport\not_emd.=
e780 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e 6f 74 5f 65 6d 64 2e 66 69 .ot.da.EMDTransport()\not_emd.fi
e7a0 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 72 t(Xs=Xs,.Xt=Xt)\n\n#.Sinkhorn.Tr
e7c0 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 64 61 2e 53 69 6e ansport\not_sinkhorn.=.ot.da.Sin
e7e0 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 5c 6e 6f 74 5f 73 khornTransport(reg_e=1e-1)\not_s
e800 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 5c 6e 23 20 53 inkhorn.fit(Xs=Xs,.Xt=Xt)\n\n#.S
e820 69 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 47 72 6f 75 70 20 6c 61 73 inkhorn.Transport.with.Group.las
e840 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 6f 74 5f 6c 70 6c 31 20 3d 20 6f 74 2e so.regularization\not_lpl1.=.ot.
e860 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 da.SinkhornLpl1Transport(reg_e=1
e880 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 31 65 30 29 5c 6e 6f 74 5f 6c 70 6c 31 2e 66 69 74 28 58 73 e-1,.reg_cl=1e0)\not_lpl1.fit(Xs
e8a0 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 53 69 6e 6b 68 6f 72 6e =Xs,.ys=ys,.Xt=Xt)\n\n#.Sinkhorn
e8c0 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 20 72 65 67 75 .Transport.with.Group.lasso.regu
e8e0 6c 61 72 69 7a 61 74 69 6f 6e 20 6c 31 6c 32 5c 6e 6f 74 5f 6c 31 6c 32 20 3d 20 6f 74 2e 64 61 larization.l1l2\not_l1l2.=.ot.da
e900 2e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d .SinkhornL1l2Transport(reg_e=1e-
e920 31 2c 20 72 65 67 5f 63 6c 3d 32 65 30 2c 20 6d 61 78 5f 69 74 65 72 3d 32 30 2c 5c 6e 20 20 20 1,.reg_cl=2e0,.max_iter=20,\n...
e940 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 ................................
e960 20 20 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f 74 5f 6c 31 6c 32 2e 66 69 74 28 58 73 ...verbose=True)\not_l1l2.fit(Xs
e980 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 74 72 61 6e 73 70 6f 72 =Xs,.ys=ys,.Xt=Xt)\n\n#.transpor
e9a0 74 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 20 6f 6e 74 6f 20 74 61 72 67 65 74 20 73 61 6d t.source.samples.onto.target.sam
e9c0 70 6c 65 73 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 ples\ntransp_Xs_emd.=.ot_emd.tra
e9e0 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 nsform(Xs=Xs)\ntransp_Xs_sinkhor
ea00 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 73 29 n.=.ot_sinkhorn.transform(Xs=Xs)
ea20 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 20 3d 20 6f 74 5f 6c 70 6c 31 2e 74 72 61 6e 73 \ntransp_Xs_lpl1.=.ot_lpl1.trans
ea40 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 20 3d 20 6f 74 form(Xs=Xs)\ntransp_Xs_l1l2.=.ot
ea60 5f 6c 31 6c 32 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 22 0a 20 20 20 20 20 20 5d 0a _l1l2.transform(Xs=Xs)".......].
ea80 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":.
eaa0 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":.{}
eac0 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 69 67 ,......."source":.[........."Fig
eae0 20 31 20 3a 20 70 6c 6f 74 73 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 73 61 6d .1.:.plots.source.and.target.sam
eb00 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 2d 2d 2d 2d 2d ples\n--------------------------
eb20 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 7d -------------\n\n".......].....}
eb40 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 65 ,.....{......."cell_type":."code
eb60 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 6c ",......."execution_count":.null
eb80 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 63 ,......."metadata":.{........."c
eba0 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 20 ollapsed":.false.......},.......
ebc0 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 5b "outputs":.[],......."source":.[
ebe0 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 ........."pl.figure(1,.figsize=(
ec00 31 30 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 10,.5))\npl.subplot(1,.2,.1)\npl
ec20 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 .scatter(Xs[:,.0],.Xs[:,.1],.c=y
ec40 73 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 s,.marker='+',.label='Source.sam
ec60 70 6c 65 73 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 ples')\npl.xticks([])\npl.yticks
ec80 28 5b 5d 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 ([])\npl.legend(loc=0)\npl.title
eca0 28 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 ('Source..samples')\n\npl.subplo
ecc0 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c t(1,.2,.2)\npl.scatter(Xt[:,.0],
ece0 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 20 6c 61 62 .Xt[:,.1],.c=yt,.marker='o',.lab
ed00 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 63 6b 73 28 el='Target.samples')\npl.xticks(
ed20 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f [])\npl.yticks([])\npl.legend(lo
ed40 63 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 c=0)\npl.title('Target.samples')
ed60 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 20 \npl.tight_layout()".......]....
ed80 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
eda0 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":.{},..
edc0 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 20 ....."source":.[........."Fig.2.
ede0 3a 20 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 :.plot.optimal.couplings.and.tra
ee00 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--------------
ee20 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 --------------------------------
ee40 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".......].....},....
ee60 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",...
ee80 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,....
eea0 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
eec0 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
eee0 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":.[.....
ef00 20 20 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 ...."param_img.=.{'interpolation
ef20 27 3a 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 ':.'nearest'}\n\npl.figure(2,.fi
ef40 67 73 69 7a 65 3d 28 31 35 2c 20 38 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c gsize=(15,.8))\npl.subplot(2,.4,
ef60 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 65 6d 64 2e 63 6f 75 70 6c 69 6e 67 5f 2c .1)\npl.imshow(ot_emd.coupling_,
ef80 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 6c .**param_img)\npl.xticks([])\npl
efa0 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 63 .yticks([])\npl.title('Optimal.c
efc0 6f 75 70 6c 69 6e 67 5c 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 oupling\\nEMDTransport')\n\npl.s
efe0 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 69 ubplot(2,.4,.2)\npl.imshow(ot_si
f000 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e nkhorn.coupling_,.**param_img)\n
f020 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 6c pl.xticks([])\npl.yticks([])\npl
f040 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 68 .title('Optimal.coupling\\nSinkh
f060 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 32 2c 20 ornTransport')\n\npl.subplot(2,.
f080 34 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 6c 70 6c 31 2e 63 6f 75 70 6c 69 6e 4,.3)\npl.imshow(ot_lpl1.couplin
f0a0 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c g_,.**param_img)\npl.xticks([])\
f0c0 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 npl.yticks([])\npl.title('Optima
f0e0 6c 20 63 6f 75 70 6c 69 6e 67 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f l.coupling\\nSinkhornLpl1Transpo
f100 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 34 29 5c 6e 70 6c 2e rt')\n\npl.subplot(2,.4,.4)\npl.
f120 69 6d 73 68 6f 77 28 6f 74 5f 6c 31 6c 32 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 imshow(ot_l1l2.coupling_,.**para
f140 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 74 69 63 6b 73 m_img)\npl.xticks([])\npl.yticks
f160 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 70 6c 69 6e 67 ([])\npl.title('Optimal.coupling
f180 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 5c 6e 70 6c \\nSinkhornL1l2Transport')\n\npl
f1a0 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 35 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 .subplot(2,.4,.5)\npl.scatter(Xt
f1c0 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='
f1e0 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
f200 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 mples',.alpha=0.3)\npl.scatter(t
f220 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 65 6d ransp_Xs_emd[:,.0],.transp_Xs_em
f240 64 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 d[:,.1],.c=ys,\n...........marke
f260 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 73 r='+',.label='Transp.samples',.s
f280 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 5b =30)\npl.xticks([])\npl.yticks([
f2a0 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 65 ])\npl.title('Transported.sample
f2c0 73 5c 5c 6e 45 6d 64 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f s\\nEmdTransport')\npl.legend(lo
f2e0 63 3d 5c 22 6c 6f 77 65 72 20 6c 65 66 74 5c 22 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 c=\"lower.left\")\n\npl.subplot(
f300 32 2c 20 34 2c 20 36 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 2,.4,.6)\npl.scatter(Xt[:,.0],.X
f320 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 t[:,.1],.c=yt,.marker='o',\n....
f340 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 .......label='Target.samples',.a
f360 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 70 5f 58 73 5f lpha=0.3)\npl.scatter(transp_Xs_
f380 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 68 6f sinkhorn[:,.0],.transp_Xs_sinkho
f3a0 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 72 6b rn[:,.1],.c=ys,\n...........mark
f3c0 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',.
f3e0 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(
f400 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
f420 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 5c 6e 70 6c 2e 73 es\\nSinkhornTransport')\n\npl.s
f440 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 37 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a ubplot(2,.4,.7)\npl.scatter(Xt[:
f460 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'
f480 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
f4a0 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
f4c0 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 70 6c nsp_Xs_lpl1[:,.0],.transp_Xs_lpl
f4e0 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 6b 65 1[:,.1],.c=ys,\n...........marke
f500 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 73 r='+',.label='Transp.samples',.s
f520 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 5b =30)\npl.xticks([])\npl.yticks([
f540 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 65 ])\npl.title('Transported.sample
f560 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 6e 5c 6e 70 s\\nSinkhornLpl1Transport')\n\np
f580 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 38 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 l.subplot(2,.4,.8)\npl.scatter(X
f5a0 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 3d t[:,.0],.Xt[:,.1],.c=yt,.marker=
f5c0 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 73 'o',\n...........label='Target.s
f5e0 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 amples',.alpha=0.3)\npl.scatter(
f600 74 72 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f transp_Xs_l1l2[:,.0],.transp_Xs_
f620 6c 31 6c 32 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6d 61 l1l2[:,.1],.c=ys,\n...........ma
f640 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'
f660 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b ,.s=30)\npl.xticks([])\npl.ytick
f680 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d s([])\npl.title('Transported.sam
f6a0 70 6c 65 73 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e ples\\nSinkhornL1l2Transport')\n
f6c0 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a pl.tight_layout()\n\npl.show()".
f6e0 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 22 3a ......].....}...],..."metadata":
f700 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 .{....."kernelspec":.{......."di
f720 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 20 22 splay_name":."Python.3",......."
f740 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 6d 65 language":."python",......."name
f760 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 61 67 ":."python3".....},....."languag
f780 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 6f 64 e_info":.{......."codemirror_mod
f7a0 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 22 2c e":.{........."name":."ipython",
f7c0 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 0a 20 ........."version":.3.......},..
f7e0 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 20 20 ....."file_extension":.".py",...
f800 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 22 2c ...."mimetype":."text/x-python",
f820 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 20 22 ......."name":."python",......."
f840 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 0a 20 nbconvert_exporter":."python",..
f860 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 6e 33 ....."pygments_lexer":."ipython3
f880 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 20 20 ",......."version":."3.6.5".....
f8a0 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 6f 72 }...},..."nbformat":.4,..."nbfor
f8c0 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 33 55 38 4d df ba b4 mat_minor":.0.}PK........3U8M...
f8e0 fb aa 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 .............plot_OT_1D_smooth.i
f900 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":.[.....{......."
f920 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
f940 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
f960 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
f980 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":.[],.
f9a0 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
f9c0 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".......].....},...
f9e0 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
fa00 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":.{},......."
fa20 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 73 6d 6f 6f 74 source":.[........."\n#.1D.smoot
fa40 68 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 68 69 73 20 65 78 h.optimal.transport\n\n\nThis.ex
fa60 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 6f ample.illustrates.the.computatio
fa80 6e 20 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 n.of.EMD,.Sinkhorn.and.smooth.OT
faa0 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 74 69 6f 6e 2e .plans\nand.their.visualization.
fac0 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 20 20 20 \n\n\n".......].....},.....{....
fae0 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
fb00 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
fb20 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":.
fb40 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":.
fb60 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":.[........."#
fb80 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 66 6c 61 6d .Author:.Remi.Flamary.<remi.flam
fba0 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 20 4d 49 54 ary@unice.fr>\n#\n#.License:.MIT
fbc0 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
fbe0 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 import.matplotlib.pylab.as.pl\ni
fc00 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 72 6f 6d 20 6f mport.ot\nimport.ot.plot\nfrom.o
fc20 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 61 75 73 73 20 t.datasets.import.make_1D_gauss.
fc40 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 20 20 7b 0a 20 as.gauss".......].....},.....{..
fc60 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",...
fc80 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
fca0 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 61 5c 6e 2d 2d e":.[........."Generate.data\n--
fcc0 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".......].....},.
fce0 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",
fd00 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,.
fd20 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
fd40 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
fd60 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":.[..
fd80 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 20 3d 20 31 30 ......."#%%.parameters\n\nn.=.10
fda0 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 5c 0..#.nb.bins\n\n#.bin.positions\
fdc0 6e 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 nx.=.np.arange(n,.dtype=np.float
fde0 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 5c 64)\n\n#.Gaussian.distributions\
fe00 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 3d 20 6d na.=.gauss(n,.m=20,.s=5)..#.m=.m
fe20 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 3d 36 30 2c 20 ean,.s=.std\nb.=.gauss(n,.m=60,.
fe40 73 3d 31 30 29 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 20 3d 20 6f 74 2e 64 s=10)\n\n#.loss.matrix\nM.=.ot.d
fe60 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 61 70 65 ist(x.reshape((n,.1)),.x.reshape
fe80 28 28 6e 2c 20 31 29 29 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 20 5d ((n,.1)))\nM./=.M.max()".......]
fea0 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":
fec0 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":.{
fee0 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
ff00 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 69 78 ot.distributions.and.loss.matrix
ff20 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------------------------------
ff40 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".......].....},.....{..
ff60 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",.......
ff80 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,......."
ffa0 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"
ffc0 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"
ffe0 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":.[.........
10000 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 6e 70 "#%%.plot.the.distributions\n\np
10020 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 70 l.figure(1,.figsize=(6.4,.3))\np
10040 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 65 20 l.plot(x,.a,.'b',.label='Source.
10060 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 27 72 distribution')\npl.plot(x,.b,.'r
10080 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 29 5c ',.label='Target.distribution')\
100a0 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 73 74 72 69 62 npl.legend()\n\n#%%.plot.distrib
100c0 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
100e0 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.
10100 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
10120 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')".......].....},.....{......
10140 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",.......
10160 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":.
10180 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 2d 2d 2d 2d 5c [........."Solve.EMD\n---------\
101a0 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".......].....},.....{.......
101c0 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
101e0 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
10200 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
10220 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":.[],
10240 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":.[........."#%%.
10260 45 4d 44 5c 6e 5c 6e 47 30 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 29 5c 6e 5c 6e 70 EMD\n\nG0.=.ot.emd(a,.b,.M)\n\np
10280 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e l.figure(3,.figsize=(5,.5))\not.
102a0 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 30 2c 20 27 4f 54 20 6d 61 plot.plot1D_mat(a,.b,.G0,.'OT.ma
102c0 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 20 20 20 7b 0a trix.G0')".......].....},.....{.
102e0 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",..
10300 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
10320 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 6f 72 6e 5c 6e ce":.[........."Solve.Sinkhorn\n
10340 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".......].....
10360 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
10380 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
103a0 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":.{........."
103c0 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.......},......
103e0 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":.
10400 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 53 69 6e 6b 68 6f 72 6e 5c 6e 5c 6e 6c 61 6d 62 64 [........."#%%.Sinkhorn\n\nlambd
10420 20 3d 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 .=.2e-3\nGs.=.ot.sinkhorn(a,.b,.
10440 4d 2c 20 6c 61 6d 62 64 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 70 6c 2e 66 69 M,.lambd,.verbose=True)\n\npl.fi
10460 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 gure(4,.figsize=(5,.5))\not.plot
10480 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 73 2c 20 27 4f 54 20 6d 61 74 72 69 78 .plot1D_mat(a,.b,.Gs,.'OT.matrix
104a0 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 .Sinkhorn')\n\npl.show()".......
104c0 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"
104e0 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":.
10500 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 53 {},......."source":.[........."S
10520 6f 6c 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 olve.Smooth.OT\n--------------\n
10540 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".......].....},.....{......."
10560 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
10580 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
105a0 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
105c0 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":.[],.
105e0 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 53 ......"source":.[........."#%%.S
10600 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 6e 5c mooth.OT.with.KL.regularization\
10620 6e 5c 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 n\nlambd.=.2e-3\nGsm.=.ot.smooth
10640 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 2c 20 .smooth_ot_dual(a,.b,.M,.lambd,.
10660 72 65 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 reg_type='kl')\n\npl.figure(5,.f
10680 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
106a0 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 68 20 at(a,.b,.Gsm,.'OT.matrix.Smooth.
106c0 4f 54 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 OT.KL.reg.')\n\npl.show()\n\n\n#
106e0 25 25 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 %%.Smooth.OT.with.KL.regularizat
10700 69 6f 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 ion\n\nlambd.=.1e-1\nGsm.=.ot.sm
10720 6f 6f 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 ooth.smooth_ot_dual(a,.b,.M,.lam
10740 62 64 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 bd,.reg_type='l2')\n\npl.figure(
10760 36 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 6f 74 6,.figsize=(5,.5))\not.plot.plot
10780 31 44 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 1D_mat(a,.b,.Gsm,.'OT.matrix.Smo
107a0 6f 74 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 oth.OT.l2.reg.')\n\npl.show()"..
107c0 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":.
107e0 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
10800 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
10820 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"
10840 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
10860 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
10880 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",.
108a0 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.......},...
108c0 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",....
108e0 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",.
10900 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
10920 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",...
10940 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"
10960 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".....}
10980 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
109a0 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 a7 6e a2 4c ee 5d c2 9b at_minor":.0.}PK.........n.L.]..
109c0 78 18 00 00 78 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 x...x...%...plot_otda_mapping_co
109e0 6c 6f 72 73 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d lors_images.ipynb{..."nbformat_m
10a00 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,...."
10a20 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
10a40 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
10a60 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":.[...
10a80 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"......
10aa0 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":.[],.......
10ac0 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
10ae0 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.......}.....},......{.
10b00 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
10b20 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 20 77 69 74 T.for.image.color.adaptation.wit
10b40 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 20 66 6f 72 h.mapping.estimation\n\n\nOT.for
10b60 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 74 68 20 69 6d 61 67 65 20 63 6f .domain.adaptation.with.image.co
10b80 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 20 77 69 74 68 20 6d 61 70 70 69 6e 67 5c lor.adaptation.[6].with.mapping\
10ba0 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 61 64 61 6e nestimation.[8].\n\n[6].Ferradan
10bc0 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 20 47 2e 2c s,.S.,.Papadakis,.N.,.Peyre,.G.,
10be0 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 6c 61 72 69 .&.Aujol,.J..F..(2014)..Regulari
10c00 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 61 6e 73 70 zed\n....discrete.optimal.transp
10c20 6f 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 ort..SIAM.Journal.on.Imaging.Sci
10c40 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 5c 6e 5b 38 ences,.7(3),\n....1853-1882.\n[8
10c60 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 6c 61 6d 61 ].M..Perrot,.N..Courty,.R..Flama
10c80 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 74 69 6d 61 ry,.A..Habrard,.\"Mapping.estima
10ca0 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 61 6c 20 74 tion.for\n....discrete.optimal.t
10cc0 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 6f 6e 20 50 ransport\",.Neural.Information.P
10ce0 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 20 20 20 32 rocessing.Systems.(NIPS),\n....2
10d00 30 31 36 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 016.\n\n\n".......],........"cel
10d20 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 l_type":."markdown",........"met
10d40 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 adata":.{}.....},......{......."
10d60 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 execution_count":.null,........"
10d80 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 cell_type":."code",........"sour
10da0 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.
10dc0 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>\
10de0 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
10e00 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
10e20 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 ense:.MIT.License\n\nimport.nump
10e40 79 20 61 73 20 6e 70 5c 6e 66 72 6f 6d 20 73 63 69 70 79 20 69 6d 70 6f 72 74 20 6e 64 69 6d 61 y.as.np\nfrom.scipy.import.ndima
10e60 67 65 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 ge\nimport.matplotlib.pylab.as.p
10e80 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 5c 6e 72 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 52 61 l\nimport.ot\n\nr.=.np.random.Ra
10ea0 6e 64 6f 6d 53 74 61 74 65 28 34 32 29 5c 6e 5c 6e 5c 6e 64 65 66 20 69 6d 32 6d 61 74 28 49 29 ndomState(42)\n\n\ndef.im2mat(I)
10ec0 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 :\n....\"\"\"Converts.and.image.
10ee0 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 5c 22 to.matrix.(one.pixel.per.line)\"
10f00 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 \"\"\n....return.I.reshape((I.sh
10f20 61 70 65 5b 30 5d 20 2a 20 49 2e 73 68 61 70 65 5b 31 5d 2c 20 49 2e 73 68 61 70 65 5b 32 5d 29 ape[0].*.I.shape[1],.I.shape[2])
10f40 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 20 73 68 61 70 65 29 3a 5c 6e 20 20 )\n\n\ndef.mat2im(X,.shape):\n..
10f60 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 ..\"\"\"Converts.back.a.matrix.t
10f80 6f 20 61 6e 20 69 6d 61 67 65 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 o.an.image\"\"\"\n....return.X.r
10fa0 65 73 68 61 70 65 28 73 68 61 70 65 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 eshape(shape)\n\n\ndef.minmax(I)
10fc0 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 22 0a :\n....return.np.clip(I,.0,.1)".
10fe0 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a ......],........"outputs":.[],..
11000 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
11020 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 lapsed":.false.......}.....},...
11040 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 ...{......."source":.[........."
11060 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 2d 5c 6e 5c 6e Generate.data\n-------------\n\n
11080 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 ".......],........"cell_type":."
110a0 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d markdown",........"metadata":.{}
110c0 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f .....},......{......."execution_
110e0 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 count":.null,........"cell_type"
11100 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 :."code",........"source":.[....
11120 20 20 20 20 20 22 23 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 5c 6e 49 31 20 3d 20 6e 64 69 ....."#.Loading.images\nI1.=.ndi
11140 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a mage.imread('../data/ocean_day.j
11160 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 5c 6e 49 pg').astype(np.float64)./.256\nI
11180 32 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 2.=.ndimage.imread('../data/ocea
111a0 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 n_sunset.jpg').astype(np.float64
111c0 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 29 5c 6e 58 32 )./.256\n\n\nX1.=.im2mat(I1)\nX2
111e0 20 3d 20 69 6d 32 6d 61 74 28 49 32 29 5c 6e 5c 6e 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 .=.im2mat(I2)\n\n#.training.samp
11200 6c 65 73 5c 6e 6e 62 20 3d 20 31 30 30 30 5c 6e 69 64 78 31 20 3d 20 72 2e 72 61 6e 64 69 6e 74 les\nnb.=.1000\nidx1.=.r.randint
11220 28 58 31 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 69 64 78 32 20 (X1.shape[0],.size=(nb,))\nidx2.
11240 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e =.r.randint(X2.shape[0],.size=(n
11260 62 2c 29 29 5c 6e 5c 6e 58 73 20 3d 20 58 31 5b 69 64 78 31 2c 20 3a 5d 5c 6e 58 74 20 3d 20 58 b,))\n\nXs.=.X1[idx1,.:]\nXt.=.X
11280 32 5b 69 64 78 32 2c 20 3a 5d 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 2[idx2,.:]".......],........"out
112a0 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a puts":.[],........"metadata":.{.
112c0 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......
112e0 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a .}.....},......{......."source":
11300 20 5b 0a 20 20 20 20 20 20 20 20 22 44 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 66 6f .[........."Domain.adaptation.fo
11320 72 20 70 69 78 65 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 74 72 61 6e 73 66 65 72 5c 6e 2d r.pixel.distribution.transfer\n-
11340 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 --------------------------------
11360 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 2c 20 0a ----------------\n\n".......],..
11380 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a ......"cell_type":."markdown",..
113a0 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 ......"metadata":.{}.....},.....
113c0 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c .{......."execution_count":.null
113e0 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 ,........"cell_type":."code",...
11400 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 45 4d 44 54 ....."source":.[........."#.EMDT
11420 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 44 54 72 61 6e ransport\not_emd.=.ot.da.EMDTran
11440 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 58 74 3d 58 74 sport()\not_emd.fit(Xs=Xs,.Xt=Xt
11460 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 2e 74 72 61 6e 73 66 )\ntransp_Xs_emd.=.ot_emd.transf
11480 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 69 6e 6d 61 78 28 6d orm(Xs=X1)\nImage_emd.=.minmax(m
114a0 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 65 29 29 5c at2im(transp_Xs_emd,.I1.shape))\
114c0 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 74 5f 73 69 6e 6b 68 n\n#.SinkhornTransport\not_sinkh
114e0 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 70 6f 72 74 28 72 65 orn.=.ot.da.SinkhornTransport(re
11500 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 74 28 58 73 3d 58 73 g_e=1e-1)\not_sinkhorn.fit(Xs=Xs
11520 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 6f 72 6e 20 3d 20 6f ,.Xt=Xt)\ntransp_Xs_sinkhorn.=.o
11540 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 49 6d 61 67 65 5f 73 69 t_emd.transform(Xs=X1)\nImage_si
11560 6e 6b 68 6f 72 6e 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 nkhorn.=.minmax(mat2im(transp_Xs
11580 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 31 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 6f 74 5f 6d 61 70 70 _sinkhorn,.I1.shape))\n\not_mapp
115a0 69 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 ing_linear.=.ot.da.MappingTransp
115c0 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 38 2c 20 62 69 61 73 ort(\n....mu=1e0,.eta=1e-8,.bias
115e0 3d 54 72 75 65 2c 20 6d 61 78 5f 69 74 65 72 3d 32 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 =True,.max_iter=20,.verbose=True
11600 29 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 66 69 74 28 58 73 3d 58 73 2c 20 )\not_mapping_linear.fit(Xs=Xs,.
11620 58 74 3d 58 74 29 5c 6e 5c 6e 58 31 74 6c 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 Xt=Xt)\n\nX1tl.=.ot_mapping_line
11640 61 72 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 6d 61 70 70 69 ar.transform(Xs=X1)\nImage_mappi
11660 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6c 2c 20 ng_linear.=.minmax(mat2im(X1tl,.
11680 49 31 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 I1.shape))\n\not_mapping_gaussia
116a0 6e 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 5c 6e 20 20 20 n.=.ot.da.MappingTransport(\n...
116c0 20 6d 75 3d 31 65 30 2c 20 65 74 61 3d 31 65 2d 32 2c 20 73 69 67 6d 61 3d 31 2c 20 62 69 61 73 .mu=1e0,.eta=1e-2,.sigma=1,.bias
116e0 3d 46 61 6c 73 65 2c 20 6d 61 78 5f 69 74 65 72 3d 31 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 =False,.max_iter=10,.verbose=Tru
11700 65 29 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 66 69 74 28 58 73 3d 58 e)\not_mapping_gaussian.fit(Xs=X
11720 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 58 31 74 6e 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 s,.Xt=Xt)\n\nX1tn.=.ot_mapping_g
11740 61 75 73 73 69 61 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 20 20 23 20 75 73 65 20 aussian.transform(Xs=X1)..#.use.
11760 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 5c 6e 49 6d 61 67 65 5f 6d 61 70 the.estimated.mapping\nImage_map
11780 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 ping_gaussian.=.minmax(mat2im(X1
117a0 74 6e 2c 20 49 31 2e 73 68 61 70 65 29 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 tn,.I1.shape))".......],........
117c0 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"
117e0 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..
11800 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
11820 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 6f 72 69 67 69 6e 61 6c 20 69 6d ce":.[........."Plot.original.im
11840 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 5c 6e 5c 6e 22 0a ages\n--------------------\n\n".
11860 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 ......],........"cell_type":."ma
11880 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 rkdown",........"metadata":.{}..
118a0 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f ...},......{......."execution_co
118c0 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 unt":.null,........"cell_type":.
118e0 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 "code",........"source":.[......
11900 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 34 2c 20 33 ..."pl.figure(1,.figsize=(6.4,.3
11920 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 69 6d 73 68 ))\npl.subplot(1,.2,.1)\npl.imsh
11940 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 69 74 6c 65 ow(I1)\npl.axis('off')\npl.title
11960 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 20 32 2c 20 ('Image.1')\n\npl.subplot(1,.2,.
11980 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 6f 66 66 27 2)\npl.imshow(I2)\npl.axis('off'
119a0 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 69 67 68 74 )\npl.title('Image.2')\npl.tight
119c0 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 _layout()".......],........"outp
119e0 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 uts":.[],........"metadata":.{..
11a00 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.......
11a20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 }.....},......{......."source":.
11a40 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 70 69 78 65 6c 20 76 61 6c 75 65 73 20 64 69 73 [........."Plot.pixel.values.dis
11a60 74 72 69 62 75 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 tribution\n---------------------
11a80 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 20 22 ---------\n\n".......],........"
11aa0 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 cell_type":."markdown",........"
11ac0 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 metadata":.{}.....},......{.....
11ae0 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 .."execution_count":.null,......
11b00 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 .."cell_type":."code",........"s
11b20 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 ource":.[........."pl.figure(2,.
11b40 66 69 67 73 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 figsize=(6.4,.5))\n\npl.subplot(
11b60 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 1,.2,.1)\npl.scatter(Xs[:,.0],.X
11b80 73 5b 3a 2c 20 32 5d 2c 20 63 3d 58 73 29 5c 6e 70 6c 2e 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 s[:,.2],.c=Xs)\npl.axis([0,.1,.0
11ba0 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
11bc0 65 6c 28 27 42 6c 75 65 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c el('Blue')\npl.title('Image.1')\
11be0 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 74 74 n\npl.subplot(1,.2,.2)\npl.scatt
11c00 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 32 5d 2c 20 63 3d 58 74 29 5c 6e 70 6c er(Xt[:,.0],.Xt[:,.2],.c=Xt)\npl
11c20 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 65 6c 28 27 .axis([0,.1,.0,.1])\npl.xlabel('
11c40 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 2e 74 69 74 Red')\npl.ylabel('Blue')\npl.tit
11c60 6c 65 28 27 49 6d 61 67 65 20 32 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 le('Image.2')\npl.tight_layout()
11c80 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":.[],
11ca0 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
11cc0 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.......}.....},.
11ce0 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":.[........
11d00 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 2d ."Plot.transformed.images\n-----
11d20 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 2c ------------------\n\n".......],
11d40 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",
11d60 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":.{}.....},...
11d80 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
11da0 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",.
11dc0 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 ......."source":.[........."pl.f
11de0 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 35 29 29 5c 6e 5c 6e 70 6c 2e igure(2,.figsize=(10,.5))\n\npl.
11e00 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 28 49 31 29 5c subplot(2,.3,.1)\npl.imshow(I1)\
11e20 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 6d 2e 20 31 npl.axis('off')\npl.title('Im..1
11e40 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 34 29 5c 6e 70 6c 2e 69 6d ')\n\npl.subplot(2,.3,.4)\npl.im
11e60 73 68 6f 77 28 49 32 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 show(I2)\npl.axis('off')\npl.tit
11e80 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 20 33 2c 20 le('Im..2')\n\npl.subplot(2,.3,.
11ea0 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 6d 61 67 65 5f 65 6d 64 29 5c 6e 70 6c 2e 61 78 69 2)\npl.imshow(Image_emd)\npl.axi
11ec0 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 45 6d 64 54 72 61 6e 73 70 6f 72 74 s('off')\npl.title('EmdTransport
11ee0 27 29 5c 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 ')\n\npl.subplot(2,.3,.5)\npl.im
11f00 73 68 6f 77 28 49 6d 61 67 65 5f 73 69 6e 6b 68 6f 72 6e 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f show(Image_sinkhorn)\npl.axis('o
11f20 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 ff')\npl.title('SinkhornTranspor
11f40 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 33 29 5c 6e 70 6c 2e 69 t')\n\npl.subplot(2,.3,.3)\npl.i
11f60 6d 73 68 6f 77 28 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 29 5c 6e 70 6c 2e mshow(Image_mapping_linear)\npl.
11f80 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4d 61 70 70 69 6e 67 54 72 axis('off')\npl.title('MappingTr
11fa0 61 6e 73 70 6f 72 74 20 28 6c 69 6e 65 61 72 29 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 ansport.(linear)')\n\npl.subplot
11fc0 28 32 2c 20 33 2c 20 36 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 6d 61 67 65 5f 6d 61 70 70 69 (2,.3,.6)\npl.imshow(Image_mappi
11fe0 6e 67 5f 67 61 75 73 73 69 61 6e 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c ng_gaussian)\npl.axis('off')\npl
12000 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 67 61 75 73 73 69 .title('MappingTransport.(gaussi
12020 61 6e 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 6e 70 6c 2e 73 an)')\npl.tight_layout()\n\npl.s
12040 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 how()".......],........"outputs"
12060 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 :.[],........"metadata":.{......
12080 20 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 ..."collapsed":.false.......}...
120a0 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b ..}...],...."metadata":.{....."k
120c0 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
120e0 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 e":."Python.2",........"name":."
12100 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 python2",........"language":."py
12120 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f thon".....},......"language_info
12140 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 ":.{......."mimetype":."text/x-p
12160 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 ython",........"nbconvert_export
12180 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 er":."python",........"name":."p
121a0 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a ython",........"file_extension":
121c0 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 2e 37 2e 31 .".py",........"version":."2.7.1
121e0 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 2",........"pygments_lexer":."ip
12200 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 ython2",........"codemirror_mode
12220 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a 20 20 20 20 ":.{........."version":.2,......
12240 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 7d 0a 20 20 ...."name":."ipython".......}...
12260 20 20 7d 0a 20 20 7d 0a 7d 50 4b 03 04 14 00 00 00 00 00 33 55 38 4d c7 ed 71 d0 e2 0d 00 00 e2 ..}...}.}PK........3U8M..q......
12280 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 6e ..."...plot_free_support_barycen
122a0 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 20 ter.ipynb{..."cells":.[.....{...
122c0 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",......."
122e0 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
12300 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":
12320 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":
12340 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":.[........."
12360 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 20 %matplotlib.inline".......].....
12380 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
123a0 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":.{},...
123c0 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 20 ...."source":.[........."\n#.2D.
123e0 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 6e free.support.Wasserstein.barycen
12400 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 73 ters.of.distributions\n\n\nIllus
12420 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 65 tration.of.2D.Wasserstein.baryce
12440 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 20 nters.if.discributions.that.are.
12460 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 0a weighted\nsum.of.diracs.\n\n\n".
12480 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
124a0 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
124c0 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":
124e0 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...
12500 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":.[],.....
12520 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a .."source":.[........."#.Author:
12540 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 2e .Vivien.Seguy.<vivien.seguy@iip.
12560 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 6e ist.i.kyoto-u.ac.jp>\n#\n#.Licen
12580 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 20 se:.MIT.License\n\nimport.numpy.
125a0 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 61 as.np\nimport.matplotlib.pylab.a
125c0 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 0a s.pl\nimport.ot".......].....},.
125e0 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 6f ....{......."cell_type":."markdo
12600 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 20 wn",......."metadata":.{},......
12620 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 64 ."source":.[........."Generate.d
12640 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 65 ata\n.-------------\n%%.paramete
12660 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 20 rs.and.data.generation\n\n".....
12680 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
126a0 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
126c0 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":.{..
126e0 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.......
12700 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
12720 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 5c ource":.[........."N.=.3\nd.=.2\
12740 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 72 nmeasures_locations.=.[]\nmeasur
12760 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 67 es_weights.=.[]\n\nfor.i.in.rang
12780 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 6e e(N):\n\n....n_i.=.np.random.ran
127a0 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 6c dint(low=1,.high=20)..#.nb.sampl
127c0 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 61 es\n\n....mu_i.=.np.random.norma
127e0 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 6e l(0.,.4.,.(d,))..#.Gaussian.mean
12800 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 20 \n\n....A_i.=.np.random.rand(d,.
12820 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 2e d)\n....cov_i.=.np.dot(A_i,.A_i.
12840 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 61 transpose())..#.Gaussian.covaria
12860 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 73 nce.matrix\n\n....x_i.=.ot.datas
12880 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 6d ets.make_2D_samples_gauss(n_i,.m
128a0 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 6e u_i,.cov_i)..#.Dirac.locations\n
128c0 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 20 ....b_i.=.np.random.uniform(0.,.
128e0 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 2e 1.,.(n_i,))\n....b_i.=.b_i./.np.
12900 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 20 sum(b_i)..#.Dirac.weights\n\n...
12920 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 5c .measures_locations.append(x_i)\
12940 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 69 n....measures_weights.append(b_i
12960 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
12980 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
129a0 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":.[..
129c0 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 72 ......."Compute.free.support.bar
129e0 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 20 ycenter\n-------------\n\n".....
12a00 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
12a20 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
12a40 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":.{..
12a60 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.......
12a80 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
12aa0 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 6d ource":.[........."k.=.10..#.num
12ac0 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 5c ber.of.Diracs.of.the.barycenter\
12ae0 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 31 nX_init.=.np.random.normal(0.,.1
12b00 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 61 .,.(k,.d))..#.initial.Dirac.loca
12b20 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 20 tions\nb.=.np.ones((k,))./.k..#.
12b40 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 69 weights.of.the.barycenter.(it.wi
12b60 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 6f ll.not.be.optimized,.only.the.lo
12b80 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 74 cations.are.optimized)\n\nX.=.ot
12ba0 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 73 .lp.free_support_barycenter(meas
12bc0 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 73 ures_locations,.measures_weights
12be0 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 20 ,.X_init,.b)".......].....},....
12c00 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"
12c20 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
12c40 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 2d ource":.[........."Plot.data\n--
12c60 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".......].....},.....
12c80 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",....
12ca0 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,.....
12cc0 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
12ce0 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
12d00 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":.[......
12d20 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 29 ..."pl.figure(1)\nfor.(x_i,.b_i)
12d40 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 73 .in.zip(measures_locations,.meas
12d60 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 72 ures_weights):\n....color.=.np.r
12d80 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 4e andom.randint(low=1,.high=10.*.N
12da0 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 69 )\n....pl.scatter(x_i[:,.0],.x_i
12dc0 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 74 [:,.1],.s=b.*.1000,.label='input
12de0 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 20 .measure')\npl.scatter(X[:,.0],.
12e00 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 20 X[:,.1],.s=b.*.1000,.c='black',.
12e20 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 6e marker='^',.label='2-Wasserstein
12e40 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 65 .barycenter')\npl.title('Data.me
12e60 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 70 asures.and.their.barycenter')\np
12e80 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 20 l.legend(loc=0)\npl.show()".....
12ea0 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":.{..
12ec0 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
12ee0 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
12f00 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":."
12f20 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
12f40 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":.
12f60 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",....
12f80 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.......},......
12fa0 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",.......
12fc0 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",....
12fe0 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
13000 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",......
13020 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",..
13040 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".....}...
13060 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_
13080 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 3e 1d 30 6f d5 1a 00 minor":.0.}PK........-`.L>.0o...
130a0 00 d5 1a 00 00 16 00 00 00 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 73 5f 4c 32 2e 69 70 79 6e 62 7b .........plot_OT_L1_vs_L2.ipynb{
130c0 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 5f ..."cells":.[.....{......."cell_
130e0 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_
13100 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":.
13120 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....
13140 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":.[],......
13160 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 ."source":.[........."%matplotli
13180 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 20 b.inline".......].....},.....{..
131a0 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",...
131c0 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
131e0 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 e":.[........."\n#.2D.Optimal.tr
13200 61 6e 73 70 6f 72 74 20 66 6f 72 20 64 69 66 66 65 72 65 6e 74 20 6d 65 74 72 69 63 73 5c 6e 5c ansport.for.different.metrics\n\
13220 6e 5c 6e 32 44 20 4f 54 20 6f 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 n\n2D.OT.on.empirical.distributi
13240 6f 20 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74 20 67 6f 75 6e 64 20 6d 65 74 72 69 63 2e 5c o..with.different.gound.metric.\
13260 6e 5c 6e 53 74 6f 6c 65 20 74 68 65 20 66 69 67 75 72 65 20 69 64 65 61 20 66 72 6f 6d 20 46 69 n\nStole.the.figure.idea.from.Fi
13280 67 2e 20 31 20 61 6e 64 20 32 20 69 6e 5c 6e 68 74 74 70 73 3a 2f 2f 61 72 78 69 76 2e 6f 72 67 g..1.and.2.in\nhttps://arxiv.org
132a0 2f 70 64 66 2f 31 37 30 36 2e 30 37 36 35 30 2e 70 64 66 5c 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 /pdf/1706.07650.pdf\n\n\n\n"....
132c0 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
132e0 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
13300 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":.{.
13320 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......
13340 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":.[],......."
13360 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 65 source":.[........."#.Author:.Re
13380 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 66 mi.Flamary.<remi.flamary@unice.f
133a0 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 5c r>\n#\n#.License:.MIT.License\n\
133c0 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 70 nimport.numpy.as.np\nimport.matp
133e0 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
13400 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".......].....},...
13420 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
13440 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":.{},......."
13460 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 31 20 3a 20 source":.[........."Dataset.1.:.
13480 75 6e 69 66 6f 72 6d 20 73 61 6d 70 6c 69 6e 67 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d uniform.sampling\n--------------
134a0 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".......].....
134c0 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
134e0 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
13500 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":.{........."
13520 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.......},......
13540 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":.
13560 5b 0a 20 20 20 20 20 20 20 20 22 6e 20 3d 20 32 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 5c [........."n.=.20..#.nb.samples\
13580 6e 78 73 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 20 32 29 29 5c 6e 78 73 5b 3a 2c 20 30 5d nxs.=.np.zeros((n,.2))\nxs[:,.0]
135a0 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 31 5c 6e 78 73 5b 3a 2c 20 31 5d 20 3d 20 .=.np.arange(n).+.1\nxs[:,.1].=.
135c0 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 31 29 20 2a 20 2d 30 2e 30 30 31 20 20 23 20 74 (np.arange(n).+.1).*.-0.001..#.t
135e0 6f 20 6d 61 6b 65 20 69 74 20 73 74 72 69 63 74 6c 79 20 63 6f 6e 76 65 78 2e 2e 2e 5c 6e 5c 6e o.make.it.strictly.convex...\n\n
13600 78 74 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 20 32 29 29 5c 6e 78 74 5b 3a 2c 20 31 5d 20 xt.=.np.zeros((n,.2))\nxt[:,.1].
13620 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 31 5c 6e 5c 6e 61 2c 20 62 20 3d 20 6f 74 2e =.np.arange(n).+.1\n\na,.b.=.ot.
13640 75 6e 69 66 28 6e 29 2c 20 6f 74 2e 75 6e 69 66 28 6e 29 20 20 23 20 75 6e 69 66 6f 72 6d 20 64 unif(n),.ot.unif(n)..#.uniform.d
13660 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 23 20 6c 6f 73 73 istribution.on.samples\n\n#.loss
13680 20 6d 61 74 72 69 78 5c 6e 4d 31 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 .matrix\nM1.=.ot.dist(xs,.xt,.me
136a0 74 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 5c 6e 4d 31 20 2f 3d 20 4d 31 2e 6d 61 78 28 tric='euclidean')\nM1./=.M1.max(
136c0 29 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 32 20 3d 20 6f 74 2e 64 69 73 74 )\n\n#.loss.matrix\nM2.=.ot.dist
136e0 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 3d 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 5c 6e (xs,.xt,.metric='sqeuclidean')\n
13700 4d 32 20 2f 3d 20 4d 32 2e 6d 61 78 28 29 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c M2./=.M2.max()\n\n#.loss.matrix\
13720 6e 4d 70 20 3d 20 6e 70 2e 73 71 72 74 28 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 nMp.=.np.sqrt(ot.dist(xs,.xt,.me
13740 74 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 29 5c 6e 4d 70 20 2f 3d 20 4d 70 2e 6d 61 78 tric='euclidean'))\nMp./=.Mp.max
13760 28 29 5c 6e 5c 6e 23 20 44 61 74 61 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 ()\n\n#.Data\npl.figure(1,.figsi
13780 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 ze=(7,.3))\npl.clf()\npl.plot(xs
137a0 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 [:,.0],.xs[:,.1],.'+b',.label='S
137c0 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 2c 20 30 ource.samples')\npl.plot(xt[:,.0
137e0 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 67 65 74 ],.xt[:,.1],.'xr',.label='Target
13800 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 6e 70 6c .samples')\npl.axis('equal')\npl
13820 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 69 73 74 72 69 .title('Source.and.target.distri
13840 62 75 74 69 6f 6e 73 27 29 5c 6e 5c 6e 5c 6e 23 20 43 6f 73 74 20 6d 61 74 72 69 63 65 73 5c 6e butions')\n\n\n#.Cost.matrices\n
13860 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 5c 6e pl.figure(2,.figsize=(7,.3))\n\n
13880 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d pl.subplot(1,.3,.1)\npl.imshow(M
138a0 31 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 1,.interpolation='nearest')\npl.
138c0 74 69 74 6c 65 28 27 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 title('Euclidean.cost')\n\npl.su
138e0 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 32 2c 20 69 6e bplot(1,.3,.2)\npl.imshow(M2,.in
13900 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 74 6c 65 terpolation='nearest')\npl.title
13920 28 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 5c 6e 70 6c ('Squared.Euclidean.cost')\n\npl
13940 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 70 2c .subplot(1,.3,.3)\npl.imshow(Mp,
13960 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
13980 74 6c 65 28 27 53 71 72 74 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 70 6c 2e 74 tle('Sqrt.Euclidean.cost')\npl.t
139a0 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()".......].....},...
139c0 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
139e0 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":.{},......."
13a00 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 31 20 3a 20 source":.[........."Dataset.1.:.
13a20 50 6c 6f 74 20 4f 54 20 4d 61 74 72 69 63 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d Plot.OT.Matrices\n--------------
13a40 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".......].....
13a60 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
13a80 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
13aa0 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":.{........."
13ac0 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.......},......
13ae0 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":.
13b00 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 4d 44 5c 6e 47 31 20 3d 20 6f 74 2e 65 6d 64 28 [........."#%%.EMD\nG1.=.ot.emd(
13b20 61 2c 20 62 2c 20 4d 31 29 5c 6e 47 32 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 32 29 a,.b,.M1)\nG2.=.ot.emd(a,.b,.M2)
13b40 5c 6e 47 70 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 70 29 5c 6e 5c 6e 23 20 4f 54 20 \nGp.=.ot.emd(a,.b,.Mp)\n\n#.OT.
13b60 6d 61 74 72 69 63 65 73 5c 6e 70 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 matrices\npl.figure(3,.figsize=(
13b80 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 31 29 5c 6e 6f 7,.3))\n\npl.subplot(1,.3,.1)\no
13ba0 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 20 78 74 t.plot.plot2D_samples_mat(xs,.xt
13bc0 2c 20 47 31 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 ,.G1,.c=[.5,..5,.1])\npl.plot(xs
13be0 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 [:,.0],.xs[:,.1],.'+b',.label='S
13c00 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 2c 20 30 ource.samples')\npl.plot(xt[:,.0
13c20 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 67 65 74 ],.xt[:,.1],.'xr',.label='Target
13c40 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 6e 23 20 .samples')\npl.axis('equal')\n#.
13c60 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 54 20 45 pl.legend(loc=0)\npl.title('OT.E
13c80 75 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 32 uclidean')\n\npl.subplot(1,.3,.2
13ca0 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 78 73 )\not.plot.plot2D_samples_mat(xs
13cc0 2c 20 78 74 2c 20 47 32 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e 70 6c 6f ,.xt,.G2,.c=[.5,..5,.1])\npl.plo
13ce0 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 62 65 t(xs[:,.0],.xs[:,.1],.'+b',.labe
13d00 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 74 5b l='Source.samples')\npl.plot(xt[
13d20 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 :,.0],.xt[:,.1],.'xr',.label='Ta
13d40 72 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 rget.samples')\npl.axis('equal')
13d60 5c 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 \n#.pl.legend(loc=0)\npl.title('
13d80 4f 54 20 73 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 OT.squared.Euclidean')\n\npl.sub
13da0 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 plot(1,.3,.3)\not.plot.plot2D_sa
13dc0 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 70 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c mples_mat(xs,.xt,.Gp,.c=[.5,..5,
13de0 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 20 31 5d .1])\npl.plot(xs[:,.0],.xs[:,.1]
13e00 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 5c ,.'+b',.label='Source.samples')\
13e20 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 72 npl.plot(xt[:,.0],.xt[:,.1],.'xr
13e40 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 61 ',.label='Target.samples')\npl.a
13e60 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 3d 30 29 xis('equal')\n#.pl.legend(loc=0)
13e80 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 73 71 72 74 20 45 75 63 6c 69 64 65 61 6e 27 29 5c \npl.title('OT.sqrt.Euclidean')\
13ea0 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 npl.tight_layout()\n\npl.show()"
13ec0 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
13ee0 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
13f00 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":.[....
13f20 20 20 20 20 20 22 44 61 74 61 73 65 74 20 32 20 3a 20 50 61 72 74 69 61 6c 20 63 69 72 63 6c 65 ....."Dataset.2.:.Partial.circle
13f40 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 5c 6e 5c 6e \n--------------------------\n\n
13f60 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
13f80 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
13fa0 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
13fc0 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.
13fe0 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":.[],...
14000 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 35 30 20 ...."source":.[........."n.=.50.
14020 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 5c 6e 78 74 6f 74 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 .#.nb.samples\nxtot.=.np.zeros((
14040 6e 20 2b 20 31 2c 20 32 29 29 5c 6e 78 74 6f 74 5b 3a 2c 20 30 5d 20 3d 20 6e 70 2e 63 6f 73 28 n.+.1,.2))\nxtot[:,.0].=.np.cos(
14060 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).*
14080 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 78 74 6f .0.9./.(n.+.2).*.2.*.np.pi)\nxto
140a0 74 5b 3a 2c 20 31 5d 20 3d 20 6e 70 2e 73 69 6e 28 5c 6e 20 20 20 20 28 6e 70 2e 61 72 61 6e 67 t[:,.1].=.np.sin(\n....(np.arang
140c0 65 28 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 e(n.+.1).+.1.0).*.0.9./.(n.+.2).
140e0 2a 20 32 20 2a 20 6e 70 2e 70 69 29 5c 6e 5c 6e 78 73 20 3d 20 78 74 6f 74 5b 3a 6e 2c 20 3a 5d *.2.*.np.pi)\n\nxs.=.xtot[:n,.:]
14100 5c 6e 78 74 20 3d 20 78 74 6f 74 5b 31 3a 2c 20 3a 5d 5c 6e 5c 6e 61 2c 20 62 20 3d 20 6f 74 2e \nxt.=.xtot[1:,.:]\n\na,.b.=.ot.
14120 75 6e 69 66 28 6e 29 2c 20 6f 74 2e 75 6e 69 66 28 6e 29 20 20 23 20 75 6e 69 66 6f 72 6d 20 64 unif(n),.ot.unif(n)..#.uniform.d
14140 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 23 20 6c 6f 73 73 istribution.on.samples\n\n#.loss
14160 20 6d 61 74 72 69 78 5c 6e 4d 31 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 .matrix\nM1.=.ot.dist(xs,.xt,.me
14180 74 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 5c 6e 4d 31 20 2f 3d 20 4d 31 2e 6d 61 78 28 tric='euclidean')\nM1./=.M1.max(
141a0 29 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 32 20 3d 20 6f 74 2e 64 69 73 74 )\n\n#.loss.matrix\nM2.=.ot.dist
141c0 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 3d 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 5c 6e (xs,.xt,.metric='sqeuclidean')\n
141e0 4d 32 20 2f 3d 20 4d 32 2e 6d 61 78 28 29 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c M2./=.M2.max()\n\n#.loss.matrix\
14200 6e 4d 70 20 3d 20 6e 70 2e 73 71 72 74 28 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 nMp.=.np.sqrt(ot.dist(xs,.xt,.me
14220 74 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 29 5c 6e 4d 70 20 2f 3d 20 4d 70 2e 6d 61 78 tric='euclidean'))\nMp./=.Mp.max
14240 28 29 5c 6e 5c 6e 5c 6e 23 20 44 61 74 61 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 ()\n\n\n#.Data\npl.figure(4,.fig
14260 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 70 6c 6f 74 28 size=(7,.3))\npl.clf()\npl.plot(
14280 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=
142a0 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 2c 'Source.samples')\npl.plot(xt[:,
142c0 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 67 .0],.xt[:,.1],.'xr',.label='Targ
142e0 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 6e et.samples')\npl.axis('equal')\n
14300 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 72 61 67 65 74 20 64 69 73 74 pl.title('Source.and.traget.dist
14320 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 5c 6e 5c 6e 23 20 43 6f 73 74 20 6d 61 74 72 69 63 65 73 ributions')\n\n\n#.Cost.matrices
14340 5c 6e 70 6c 2e 66 69 67 75 72 65 28 35 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 5c 6e \npl.figure(5,.figsize=(7,.3))\n
14360 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 \npl.subplot(1,.3,.1)\npl.imshow
14380 28 4d 31 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 (M1,.interpolation='nearest')\np
143a0 6c 2e 74 69 74 6c 65 28 27 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 5c 6e 70 6c 2e l.title('Euclidean.cost')\n\npl.
143c0 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 32 2c 20 subplot(1,.3,.2)\npl.imshow(M2,.
143e0 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 74 interpolation='nearest')\npl.tit
14400 6c 65 28 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 5c 6e le('Squared.Euclidean.cost')\n\n
14420 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d pl.subplot(1,.3,.3)\npl.imshow(M
14440 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.
14460 74 69 74 6c 65 28 27 53 71 72 74 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 5c 6e 70 6c title('Sqrt.Euclidean.cost')\npl
14480 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 2c 0a .tight_layout()".......].....},.
144a0 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 6f ....{......."cell_type":."markdo
144c0 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 20 wn",......."metadata":.{},......
144e0 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 73 65 74 20 32 20 ."source":.[........."Dataset.2.
14500 3a 20 50 6c 6f 74 20 20 4f 54 20 4d 61 74 72 69 63 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d :.Plot..OT.Matrices\n-----------
14520 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".......].
14540 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":.
14560 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":
14580 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":.{......
145a0 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.......},..
145c0 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
145e0 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 45 4d 44 5c 6e 47 31 20 3d 20 6f 74 2e e":.[........."#%%.EMD\nG1.=.ot.
14600 65 6d 64 28 61 2c 20 62 2c 20 4d 31 29 5c 6e 47 32 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c emd(a,.b,.M1)\nG2.=.ot.emd(a,.b,
14620 20 4d 32 29 5c 6e 47 70 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 70 29 5c 6e 5c 6e 23 .M2)\nGp.=.ot.emd(a,.b,.Mp)\n\n#
14640 20 4f 54 20 6d 61 74 72 69 63 65 73 5c 6e 70 6c 2e 66 69 67 75 72 65 28 36 2c 20 66 69 67 73 69 .OT.matrices\npl.figure(6,.figsi
14660 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 31 ze=(7,.3))\n\npl.subplot(1,.3,.1
14680 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 78 73 )\not.plot.plot2D_samples_mat(xs
146a0 2c 20 78 74 2c 20 47 31 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e 70 6c 6f ,.xt,.G1,.c=[.5,..5,.1])\npl.plo
146c0 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 62 65 t(xs[:,.0],.xs[:,.1],.'+b',.labe
146e0 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 74 5b l='Source.samples')\npl.plot(xt[
14700 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 :,.0],.xt[:,.1],.'xr',.label='Ta
14720 72 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 rget.samples')\npl.axis('equal')
14740 5c 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 \n#.pl.legend(loc=0)\npl.title('
14760 4f 54 20 45 75 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 OT.Euclidean')\n\npl.subplot(1,.
14780 33 2c 20 32 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 3,.2)\not.plot.plot2D_samples_ma
147a0 74 28 78 73 2c 20 78 74 2c 20 47 32 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c t(xs,.xt,.G2,.c=[.5,..5,.1])\npl
147c0 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 .plot(xs[:,.0],.xs[:,.1],.'+b',.
147e0 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 6c 6f 74 label='Source.samples')\npl.plot
14800 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 62 65 6c (xt[:,.0],.xt[:,.1],.'xr',.label
14820 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 69 73 28 27 65 71 75 ='Target.samples')\npl.axis('equ
14840 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 6e 70 6c 2e 74 69 74 al')\n#.pl.legend(loc=0)\npl.tit
14860 6c 65 28 27 4f 54 20 73 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 27 29 5c 6e 5c 6e 70 6c le('OT.squared.Euclidean')\n\npl
14880 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 .subplot(1,.3,.3)\not.plot.plot2
148a0 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 70 2c 20 63 3d 5b 2e 35 2c D_samples_mat(xs,.xt,.Gp,.c=[.5,
148c0 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 73 5b 3a ..5,.1])\npl.plot(xs[:,.0],.xs[:
148e0 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 70 6c 65 ,.1],.'+b',.label='Source.sample
14900 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 31 5d 2c s')\npl.plot(xt[:,.0],.xt[:,.1],
14920 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 29 5c 6e .'xr',.label='Target.samples')\n
14940 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 28 6c 6f pl.axis('equal')\n#.pl.legend(lo
14960 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 73 71 72 74 20 45 75 63 6c 69 64 65 61 c=0)\npl.title('OT.sqrt.Euclidea
14980 6e 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f n')\npl.tight_layout()\n\npl.sho
149a0 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 64 w()".......].....}...],..."metad
149c0 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":.{.....
149e0 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 20 .."display_name":."Python.3",...
14a00 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 20 ...."language":."python",.......
14a20 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 61 "name":."python3".....},....."la
14a40 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 6f nguage_info":.{......."codemirro
14a60 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 74 r_mode":.{........."name":."ipyt
14a80 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 20 hon",........."version":.3......
14aa0 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 79 .},......."file_extension":.".py
14ac0 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 74 ",......."mimetype":."text/x-pyt
14ae0 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 20 hon",......."name":."python",...
14b00 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f ...."nbconvert_exporter":."pytho
14b20 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 79 n",......."pygments_lexer":."ipy
14b40 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 35 22 thon3",......."version":."3.6.5"
14b60 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 22 .....}...},..."nbformat":.4,..."
14b80 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 60 nbformat_minor":.0.}PK........-`
14ba0 cb 4c f9 b0 b7 c4 b9 1d 00 00 b9 1d 00 00 24 00 00 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 .L............$...plot_barycente
14bc0 72 5f 6c 70 5f 76 73 5f 65 6e 74 72 6f 70 69 63 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 r_lp_vs_entropic.ipynb{..."cells
14be0 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 22 63 ":.[.....{......."cell_type":."c
14c00 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
14c20 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":.{........
14c40 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.......},....
14c60 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"
14c80 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"
14ca0 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
14cc0 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
14ce0 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":.[....
14d00 20 20 20 20 20 22 5c 6e 23 20 31 44 20 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e ....."\n#.1D.Wasserstein.barycen
14d20 74 65 72 20 63 6f 6d 70 61 72 69 73 6f 6e 20 62 65 74 77 65 65 6e 20 65 78 61 63 74 20 4c 50 20 ter.comparison.between.exact.LP.
14d40 61 6e 64 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 5c 6e 5c and.entropic.regularization\n\n\
14d60 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 20 63 6f nThis.example.illustrates.the.co
14d80 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 65 72 73 mputation.of.regularized.Wassers
14da0 74 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 tein.Barycenter\nas.proposed.in.
14dc0 5b 33 5d 20 61 6e 64 20 65 78 61 63 74 20 4c 50 20 62 61 72 79 63 65 6e 74 65 72 73 20 75 73 69 [3].and.exact.LP.barycenters.usi
14de0 6e 67 20 73 74 61 6e 64 61 72 64 20 4c 50 20 73 6f 6c 76 65 72 2e 5c 6e 5c 6e 49 74 20 72 65 70 ng.standard.LP.solver.\n\nIt.rep
14e00 72 6f 64 75 63 65 73 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 20 46 69 67 75 72 65 20 33 2e 31 roduces.approximately.Figure.3.1
14e20 20 61 6e 64 20 33 2e 32 20 66 72 6f 6d 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 70 65 .and.3.2.from.the.following.pape
14e40 72 3a 5c 6e 43 75 74 75 72 69 2c 20 4d 2e 2c 20 26 20 50 65 79 72 5c 75 30 30 65 39 2c 20 47 2e r:\nCuturi,.M.,.&.Peyr\u00e9,.G.
14e60 20 28 32 30 31 36 29 2e 20 41 20 73 6d 6f 6f 74 68 65 64 20 64 75 61 6c 20 61 70 70 72 6f 61 63 .(2016)..A.smoothed.dual.approac
14e80 68 20 66 6f 72 20 76 61 72 69 61 74 69 6f 6e 61 6c 5c 6e 57 61 73 73 65 72 73 74 65 69 6e 20 70 h.for.variational\nWasserstein.p
14ea0 72 6f 62 6c 65 6d 73 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 roblems..SIAM.Journal.on.Imaging
14ec0 20 53 63 69 65 6e 63 65 73 2c 20 39 28 31 29 2c 20 33 32 30 2d 33 34 33 2e 5c 6e 5c 6e 5b 33 5d .Sciences,.9(1),.320-343.\n\n[3]
14ee0 20 42 65 6e 61 6d 6f 75 2c 20 4a 2e 20 44 2e 2c 20 43 61 72 6c 69 65 72 2c 20 47 2e 2c 20 43 75 .Benamou,.J..D.,.Carlier,.G.,.Cu
14f00 74 75 72 69 2c 20 4d 2e 2c 20 4e 65 6e 6e 61 2c 20 4c 2e 2c 20 26 20 50 65 79 72 5c 75 30 30 65 turi,.M.,.Nenna,.L.,.&.Peyr\u00e
14f20 39 2c 20 47 2e 20 28 32 30 31 35 29 2e 5c 6e 49 74 65 72 61 74 69 76 65 20 42 72 65 67 6d 61 6e 9,.G..(2015).\nIterative.Bregman
14f40 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 66 6f 72 20 72 65 67 75 6c 61 72 69 7a 65 64 20 74 72 61 .projections.for.regularized.tra
14f60 6e 73 70 6f 72 74 61 74 69 6f 6e 20 70 72 6f 62 6c 65 6d 73 5c 6e 53 49 41 4d 20 4a 6f 75 72 6e nsportation.problems\nSIAM.Journ
14f80 61 6c 20 6f 6e 20 53 63 69 65 6e 74 69 66 69 63 20 43 6f 6d 70 75 74 69 6e 67 2c 20 33 37 28 32 al.on.Scientific.Computing,.37(2
14fa0 29 2c 20 41 31 31 31 31 2d 41 31 31 33 38 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 ),.A1111-A1138.\n\n\n".......]..
14fc0 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":."
14fe0 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":.
15000 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":.{.......
15020 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.......},...
15040 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
15060 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 ":.[........."#.Author:.Remi.Fla
15080 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 5c mary.<remi.flamary@unice.fr>\n#\
150a0 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 n#.License:.MIT.License\n\nimpor
150c0 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 t.numpy.as.np\nimport.matplotlib
150e0 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 23 20 6e 65 63 65 73 .pylab.as.pl\nimport.ot\n#.neces
15100 73 61 72 79 20 66 6f 72 20 33 64 20 70 6c 6f 74 20 65 76 65 6e 20 69 66 20 6e 6f 74 20 75 73 65 sary.for.3d.plot.even.if.not.use
15120 64 5c 6e 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d 70 d\nfrom.mpl_toolkits.mplot3d.imp
15140 6f 72 74 20 41 78 65 73 33 44 20 20 23 20 6e 6f 71 61 5c 6e 66 72 6f 6d 20 6d 61 74 70 6c 6f 74 ort.Axes3D..#.noqa\nfrom.matplot
15160 6c 69 62 2e 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 69 6d 70 6f 72 74 20 50 6f 6c 79 43 6f 6c 6c 65 lib.collections.import.PolyColle
15180 63 74 69 6f 6e 20 20 23 20 6e 6f 71 61 5c 6e 5c 6e 23 69 6d 70 6f 72 74 20 6f 74 2e 6c 70 2e 63 ction..#.noqa\n\n#import.ot.lp.c
151a0 76 78 20 61 73 20 63 76 78 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a vx.as.cvx".......].....},.....{.
151c0 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",..
151e0 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
15200 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 47 61 75 73 73 69 61 6e 20 44 61 74 61 5c 6e 2d ce":.[........."Gaussian.Data\n-
15220 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".......].....},
15240 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"
15260 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,
15280 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
152a0 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.......},......."
152c0 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":.[.
152e0 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 70 72 6f 62 6c ........"#%%.parameters\n\nprobl
15300 65 6d 73 20 3d 20 5b 5d 5c 6e 5c 6e 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 5c 6e ems.=.[]\n\nn.=.100..#.nb.bins\n
15320 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 61 6e 67 65 \n#.bin.positions\nx.=.np.arange
15340 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 61 75 73 73 (n,.dtype=np.float64)\n\n#.Gauss
15360 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 69 ian.distributions\n#.Gaussian.di
15380 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 61 stributions\na1.=.ot.datasets.ma
153a0 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=.
153c0 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 6d mean,.s=.std\na2.=.ot.datasets.m
153e0 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 20 ake_1D_gauss(n,.m=60,.s=8)\n\n#.
15400 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 6c creating.matrix.A.containing.all
15420 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 61 .distributions\nA.=.np.vstack((a
15440 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 73 1,.a2)).T\nn_distributions.=.A.s
15460 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 61 hape[1]\n\n#.loss.matrix.+.norma
15480 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 5c lization\nM.=.ot.utils.dist0(n)\
154a0 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 5c 6e 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 74 68 65 20 nM./=.M.max()\n\n\n#%%.plot.the.
154c0 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 distributions\n\npl.figure(1,.fi
154e0 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 gsize=(6.4,.3))\nfor.i.in.range(
15500 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 70 6c 6f 74 28 78 n_distributions):\n....pl.plot(x
15520 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 72 69 62 75 74 69 ,.A[:,.i])\npl.title('Distributi
15540 6f 6e 73 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 23 25 25 20 ons')\npl.tight_layout()\n\n#%%.
15560 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 20 barycenter.computation\n\nalpha.
15580 3d 20 30 2e 35 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 20 =.0.5..#.0<=alpha<=1\nweights.=.
155a0 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 6e np.array([1.-.alpha,.alpha])\n\n
155c0 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 74 #.l2bary\nbary_l2.=.A.dot(weight
155e0 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 5c s)\n\n#.wasserstein\nreg.=.1e-3\
15600 6e 6f 74 2e 74 69 63 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 not.tic()\nbary_wass.=.ot.bregma
15620 6e 2e 62 61 72 79 63 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 n.barycenter(A,.M,.reg,.weights)
15640 5c 6e 6f 74 2e 74 6f 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 \not.toc()\n\n\not.tic()\nbary_w
15660 61 73 73 32 20 3d 20 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 ass2.=.ot.lp.barycenter(A,.M,.we
15680 69 67 68 74 73 2c 20 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 ights,.solver='interior-point',.
156a0 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f 74 2e 74 6f 63 28 29 5c 6e 5c 6e 70 6c 2e 66 69 verbose=True)\not.toc()\n\npl.fi
156c0 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,
156e0 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
15700 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]
15720 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
15740 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,.
15760 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
15780 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 52 65 67 ot(x,.bary_wass,.'g',.label='Reg
157a0 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f .Wasserstein')\npl.plot(x,.bary_
157c0 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 74 65 69 wass2,.'b',.label='LP.Wasserstei
157e0 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 65 28 27 42 61 72 79 n')\npl.legend()\npl.title('Bary
15800 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 74 28 29 5c 6e 5c 6e centers')\npl.tight_layout()\n\n
15820 70 72 6f 62 6c 65 6d 73 2e 61 70 70 65 6e 64 28 5b 41 2c 20 5b 62 61 72 79 5f 6c 32 2c 20 62 61 problems.append([A,.[bary_l2,.ba
15840 72 79 5f 77 61 73 73 2c 20 62 61 72 79 5f 77 61 73 73 32 5d 5d 29 22 0a 20 20 20 20 20 20 5d 0a ry_wass,.bary_wass2]])".......].
15860 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":.
15880 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":.{}
158a0 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 69 72 ,......."source":.[........."Dir
158c0 61 63 20 44 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d ac.Data\n----------\n\n".......]
158e0 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":
15900 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"
15920 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":.{.....
15940 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.......},.
15960 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
15980 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 73 5c 6e ce":.[........."#%%.parameters\n
159a0 5c 6e 61 31 20 3d 20 31 2e 30 20 2a 20 28 78 20 3e 20 31 30 29 20 2a 20 28 78 20 3c 20 35 30 29 \na1.=.1.0.*.(x.>.10).*.(x.<.50)
159c0 5c 6e 61 32 20 3d 20 31 2e 30 20 2a 20 28 78 20 3e 20 36 30 29 20 2a 20 28 78 20 3c 20 38 30 29 \na2.=.1.0.*.(x.>.60).*.(x.<.80)
159e0 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 75 6d \n\na1./=.a1.sum()\na2./=.a2.sum
15a00 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 61 69 ()\n\n#.creating.matrix.A.contai
15a20 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 2e 76 ning.all.distributions\nA.=.np.v
15a40 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 69 6f stack((a1,.a2)).T\nn_distributio
15a60 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 69 78 ns.=.A.shape[1]\n\n#.loss.matrix
15a80 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 2e 64 .+.normalization\nM.=.ot.utils.d
15aa0 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 20 70 ist0(n)\nM./=.M.max()\n\n\n#%%.p
15ac0 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 lot.the.distributions\n\npl.figu
15ae0 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 20 69 re(1,.figsize=(6.4,.3))\nfor.i.i
15b00 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 20 70 n.range(n_distributions):\n....p
15b20 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 44 69 l.plot(x,.A[:,.i])\npl.title('Di
15b40 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 28 29 stributions')\npl.tight_layout()
15b60 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 6f 6e \n\n\n#%%.barycenter.computation
15b80 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 5c 6e \n\nalpha.=.0.5..#.0<=alpha<=1\n
15ba0 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 20 61 weights.=.np.array([1.-.alpha,.a
15bc0 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 41 2e lpha])\n\n#.l2bary\nbary_l2.=.A.
15be0 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 6e 72 dot(weights)\n\n#.wasserstein\nr
15c00 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 20 3d eg.=.1e-3\not.tic()\nbary_wass.=
15c20 20 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 20 4d 2c 20 72 65 67 .ot.bregman.barycenter(A,.M,.reg
15c40 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 69 63 ,.weights)\not.toc()\n\n\not.tic
15c60 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 74 65 ()\nbary_wass2.=.ot.lp.barycente
15c80 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 69 6f r(A,.M,.weights,.solver='interio
15ca0 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 63 28 r-point',.verbose=True)\not.toc(
15cc0 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 72 79 )\n\n\nproblems.append([A,.[bary
15ce0 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 6e 5c _l2,.bary_wass,.bary_wass2]])\n\
15d00 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 62 70 npl.figure(2)\npl.clf()\npl.subp
15d20 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 5f 64 lot(2,.1,.1)\nfor.i.in.range(n_d
15d40 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 20 41 istributions):\n....pl.plot(x,.A
15d60 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 6e 73 [:,.i])\npl.title('Distributions
15d80 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 70 6c ')\n\npl.subplot(2,.1,.2)\npl.pl
15da0 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 29 5c ot(x,.bary_l2,.'r',.label='l2')\
15dc0 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 62 65 npl.plot(x,.bary_wass,.'g',.labe
15de0 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 78 2c l='Reg.Wasserstein')\npl.plot(x,
15e00 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 73 73 .bary_wass2,.'b',.label='LP.Wass
15e20 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 65 erstein')\npl.legend()\npl.title
15e40 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 74 ('Barycenters')\npl.tight_layout
15e60 28 29 5c 6e 5c 6e 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 61 31 20 3d 20 6e 70 2e ()\n\n#%%.parameters\n\na1.=.np.
15e80 7a 65 72 6f 73 28 6e 29 5c 6e 61 32 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 6e 29 5c 6e 5c 6e 61 31 zeros(n)\na2.=.np.zeros(n)\n\na1
15ea0 5b 31 30 5d 20 3d 20 2e 32 35 5c 6e 61 31 5b 32 30 5d 20 3d 20 2e 35 5c 6e 61 31 5b 33 30 5d 20 [10].=..25\na1[20].=..5\na1[30].
15ec0 3d 20 2e 32 35 5c 6e 61 32 5b 38 30 5d 20 3d 20 31 5c 6e 5c 6e 5c 6e 61 31 20 2f 3d 20 61 31 2e =..25\na2[80].=.1\n\n\na1./=.a1.
15ee0 73 75 6d 28 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 sum()\na2./=.a2.sum()\n\n#.creat
15f00 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 6c 20 64 69 73 74 ing.matrix.A.containing.all.dist
15f20 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 61 31 2c 20 61 32 ributions\nA.=.np.vstack((a1,.a2
15f40 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 73 68 61 70 65 5b )).T\nn_distributions.=.A.shape[
15f60 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 61 6c 69 7a 61 74 1]\n\n#.loss.matrix.+.normalizat
15f80 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 5c 6e 4d 20 2f 3d ion\nM.=.ot.utils.dist0(n)\nM./=
15fa0 20 4d 2e 6d 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 .M.max()\n\n\n#%%.plot.the.distr
15fc0 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 ibutions\n\npl.figure(1,.figsize
15fe0 3d 28 36 2e 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 =(6.4,.3))\nfor.i.in.range(n_dis
16000 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 20 41 5b 3a tributions):\n....pl.plot(x,.A[:
16020 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 6e 73 27 29 ,.i])\npl.title('Distributions')
16040 5c 6e 70 6c 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 \npl.tight_layout()\n\n\n#%%.bar
16060 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 20 3d 20 30 ycenter.computation\n\nalpha.=.0
16080 2e 35 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 20 6e 70 2e .5..#.0<=alpha<=1\nweights.=.np.
160a0 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 6e 23 20 6c array([1.-.alpha,.alpha])\n\n#.l
160c0 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 74 73 29 5c 2bary\nbary_l2.=.A.dot(weights)\
160e0 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 5c 6e 6f 74 n\n#.wasserstein\nreg.=.1e-3\not
16100 2e 74 69 63 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 .tic()\nbary_wass.=.ot.bregman.b
16120 61 72 79 63 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 arycenter(A,.M,.reg,.weights)\no
16140 74 2e 74 6f 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 t.toc()\n\n\not.tic()\nbary_wass
16160 32 20 3d 20 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 2.=.ot.lp.barycenter(A,.M,.weigh
16180 74 73 2c 20 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 ts,.solver='interior-point',.ver
161a0 62 6f 73 65 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 bose=True)\not.toc()\n\n\nproble
161c0 6d 73 2e 61 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 ms.append([A,.[bary_l2,.bary_was
161e0 73 2c 20 62 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 s,.bary_wass2]])\n\npl.figure(2)
16200 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 20 31 2c 20 31 29 5c \npl.clf()\npl.subplot(2,.1,.1)\
16220 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 6e 73 29 nfor.i.in.range(n_distributions)
16240 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 6c 2e 74 :\n....pl.plot(x,.A[:,.i])\npl.t
16260 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 70 6c 2e 73 75 62 70 itle('Distributions')\n\npl.subp
16280 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 62 61 72 79 5f 6c 32 lot(2,.1,.2)\npl.plot(x,.bary_l2
162a0 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 6f 74 28 78 2c 20 62 ,.'r',.label='l2')\npl.plot(x,.b
162c0 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 57 61 73 73 65 72 ary_wass,.'g',.label='Reg.Wasser
162e0 73 74 65 69 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 stein')\npl.plot(x,.bary_wass2,.
16300 27 62 27 2c 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 'b',.label='LP.Wasserstein')\npl
16320 2e 6c 65 67 65 6e 64 28 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 73 .legend()\npl.title('Barycenters
16340 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 5d 0a 20 ')\npl.tight_layout()".......]..
16360 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":."
16380 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":.{},
163a0 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 46 69 6e 61 ......."source":.[........."Fina
163c0 6c 20 66 69 67 75 72 65 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 5c 6e 22 0a 20 20 l.figure\n------------\n\n\n"...
163e0 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
16400 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
16420 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":.{
16440 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.....
16460 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":.[],.......
16480 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 5c 6e 5c "source":.[........."#%%.plot\n\
164a0 6e 6e 62 6d 20 3d 20 6c 65 6e 28 70 72 6f 62 6c 65 6d 73 29 5c 6e 6e 62 6d 32 20 3d 20 28 6e 62 nnbm.=.len(problems)\nnbm2.=.(nb
164c0 6d 20 2f 2f 20 32 29 5c 6e 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 28 32 30 2c 20 36 m.//.2)\n\n\npl.figure(2,.(20,.6
164e0 29 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e ))\npl.clf()\n\nfor.i.in.range(n
16500 62 6d 29 3a 5c 6e 5c 6e 20 20 20 20 41 20 3d 20 70 72 6f 62 6c 65 6d 73 5b 69 5d 5b 30 5d 5c 6e bm):\n\n....A.=.problems[i][0]\n
16520 20 20 20 20 62 61 72 79 5f 6c 32 20 3d 20 70 72 6f 62 6c 65 6d 73 5b 69 5d 5b 31 5d 5b 30 5d 5c ....bary_l2.=.problems[i][1][0]\
16540 6e 20 20 20 20 62 61 72 79 5f 77 61 73 73 20 3d 20 70 72 6f 62 6c 65 6d 73 5b 69 5d 5b 31 5d 5b n....bary_wass.=.problems[i][1][
16560 31 5d 5c 6e 20 20 20 20 62 61 72 79 5f 77 61 73 73 32 20 3d 20 70 72 6f 62 6c 65 6d 73 5b 69 5d 1]\n....bary_wass2.=.problems[i]
16580 5b 31 5d 5b 32 5d 5c 6e 5c 6e 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 6e 62 6d 2c [1][2]\n\n....pl.subplot(2,.nbm,
165a0 20 31 20 2b 20 69 29 5c 6e 20 20 20 20 66 6f 72 20 6a 20 69 6e 20 72 61 6e 67 65 28 6e 5f 64 69 .1.+.i)\n....for.j.in.range(n_di
165c0 73 74 72 69 62 75 74 69 6f 6e 73 29 3a 5c 6e 20 20 20 20 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 stributions):\n........pl.plot(x
165e0 2c 20 41 5b 3a 2c 20 6a 5d 29 5c 6e 20 20 20 20 69 66 20 69 20 3d 3d 20 6e 62 6d 32 3a 5c 6e 20 ,.A[:,.j])\n....if.i.==.nbm2:\n.
16600 20 20 20 20 20 20 20 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 .......pl.title('Distributions')
16620 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 70 6c 2e 79 74 69 63 \n....pl.xticks(())\n....pl.ytic
16640 6b 73 28 28 29 29 5c 6e 5c 6e 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 6e 62 6d 2c ks(())\n\n....pl.subplot(2,.nbm,
16660 20 31 20 2b 20 69 20 2b 20 6e 62 6d 29 5c 6e 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 .1.+.i.+.nbm)\n\n....pl.plot(x,.
16680 62 61 72 79 5f 6c 32 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 4c 32 20 28 45 75 63 6c 69 64 65 bary_l2,.'r',.label='L2.(Euclide
166a0 61 6e 29 27 29 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 73 73 2c an)')\n....pl.plot(x,.bary_wass,
166c0 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 6e 27 29 5c 6e .'g',.label='Reg.Wasserstein')\n
166e0 20 20 20 20 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 20 ....pl.plot(x,.bary_wass2,.'b',.
16700 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 20 20 20 20 69 66 20 label='LP.Wasserstein')\n....if.
16720 69 20 3d 3d 20 6e 62 6d 20 2d 20 31 3a 5c 6e 20 20 20 20 20 20 20 20 70 6c 2e 6c 65 67 65 6e 64 i.==.nbm.-.1:\n........pl.legend
16740 28 29 5c 6e 20 20 20 20 69 66 20 69 20 3d 3d 20 6e 62 6d 32 3a 5c 6e 20 20 20 20 20 20 20 20 70 ()\n....if.i.==.nbm2:\n........p
16760 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 73 27 29 5c 6e 5c 6e 20 20 20 20 70 6c l.title('Barycenters')\n\n....pl
16780 2e 78 74 69 63 6b 73 28 28 29 29 5c 6e 20 20 20 20 70 6c 2e 79 74 69 63 6b 73 28 28 29 29 22 0a .xticks(())\n....pl.yticks(())".
167a0 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 22 3a ......].....}...],..."metadata":
167c0 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 .{....."kernelspec":.{......."di
167e0 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 20 22 splay_name":."Python.3",......."
16800 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 6d 65 language":."python",......."name
16820 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 61 67 ":."python3".....},....."languag
16840 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 6f 64 e_info":.{......."codemirror_mod
16860 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 22 2c e":.{........."name":."ipython",
16880 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 0a 20 ........."version":.3.......},..
168a0 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 20 20 ....."file_extension":.".py",...
168c0 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 22 2c ...."mimetype":."text/x-python",
168e0 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 20 22 ......."name":."python",......."
16900 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 0a 20 nbconvert_exporter":."python",..
16920 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 6e 33 ....."pygments_lexer":."ipython3
16940 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 20 20 ",......."version":."3.6.5".....
16960 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 6f 72 }...},..."nbformat":.4,..."nbfor
16980 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 60 cb 4c 17 38 53 mat_minor":.0.}PK........-`.L.8S
169a0 24 28 10 00 00 28 10 00 00 18 00 00 00 70 6c 6f 74 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e $(...(.......plot_OT_2D_samples.
169c0 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":.[.....{.......
169e0 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
16a00 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
16a20 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
16a40 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":.[],
16a60 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
16a80 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".......].....},..
16aa0 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
16ac0 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":.{},.......
16ae0 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 20 4f 70 74 69 "source":.[........."\n#.2D.Opti
16b00 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 62 65 74 77 65 65 6e 20 65 6d 70 69 72 69 63 61 6c 20 mal.transport.between.empirical.
16b20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e 49 6c 6c 75 73 74 72 61 74 69 6f 6e 20 distributions\n\n\nIllustration.
16b40 6f 66 20 32 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 62 65 74 77 65 65 6e 20 of.2D.optimal.transport.between.
16b60 64 69 73 63 72 69 62 75 74 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 77 65 69 67 68 74 65 64 5c discributions.that.are.weighted\
16b80 6e 73 75 6d 20 6f 66 20 64 69 72 61 63 73 2e 20 54 68 65 20 4f 54 20 6d 61 74 72 69 78 20 69 73 nsum.of.diracs..The.OT.matrix.is
16ba0 20 70 6c 6f 74 74 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6d 70 6c 65 73 2e 5c 6e 5c 6e 5c 6e .plotted.with.the.samples.\n\n\n
16bc0 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
16be0 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
16c00 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
16c20 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.
16c40 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":.[],...
16c60 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 6f ...."source":.[........."#.Autho
16c80 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 40 75 6e r:.Remi.Flamary.<remi.flamary@un
16ca0 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 63 65 6e ice.fr>\n#\n#.License:.MIT.Licen
16cc0 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 74 se\n\nimport.numpy.as.np\nimport
16ce0 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 .matplotlib.pylab.as.pl\nimport.
16d00 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 20 ot\nimport.ot.plot".......].....
16d20 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
16d40 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":.{},...
16d60 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
16d80 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 20 e.data\n-------------\n\n"......
16da0 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
16dc0 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
16de0 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":.{...
16e00 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.......}
16e20 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
16e40 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 73 urce":.[........."#%%.parameters
16e60 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 20 .and.data.generation\n\nn.=.50..
16e80 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 28 #.nb.samples\n\nmu_s.=.np.array(
16ea0 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 30 [0,.0])\ncov_s.=.np.array([[1,.0
16ec0 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 5b ],.[0,.1]])\n\nmu_t.=.np.array([
16ee0 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 2e 4,.4])\ncov_t.=.np.array([[1,.-.
16f00 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 65 8],.[-.8,.1]])\n\nxs.=.ot.datase
16f20 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 73 ts.make_2D_samples_gauss(n,.mu_s
16f40 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 5f ,.cov_s)\nxt.=.ot.datasets.make_
16f60 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 29 2D_samples_gauss(n,.mu_t,.cov_t)
16f80 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 70 \n\na,.b.=.np.ones((n,))./.n,.np
16fa0 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 72 .ones((n,))./.n..#.uniform.distr
16fc0 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 74 ibution.on.samples\n\n#.loss.mat
16fe0 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 4d rix\nM.=.ot.dist(xs,.xt)\nM./=.M
17000 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 20 .max()".......].....},.....{....
17020 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",.....
17040 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"
17060 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 2d :.[........."Plot.data\n--------
17080 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".......].....},.....{.....
170a0 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
170c0 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
170e0 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
17100 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":.[
17120 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":.[........."#%
17140 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 6e %.plot.samples\n\npl.figure(1)\n
17160 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 27 pl.plot(xs[:,.0],.xs[:,.1],.'+b'
17180 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 6c ,.label='Source.samples')\npl.pl
171a0 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 62 ot(xt[:,.0],.xt[:,.1],.'xr',.lab
171c0 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 28 el='Target.samples')\npl.legend(
171e0 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 72 loc=0)\npl.title('Source.and.tar
17200 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 65 get.distributions')\n\npl.figure
17220 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 3d (2)\npl.imshow(M,.interpolation=
17240 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 69 'nearest')\npl.title('Cost.matri
17260 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 20 x.M')".......].....},.....{.....
17280 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",......
172a0 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":
172c0 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 2d .[........."Compute.EMD\n-------
172e0 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".......].....},.....{..
17300 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",.......
17320 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,......."
17340 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"
17360 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"
17380 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":.[.........
173a0 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)
173c0 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 20 \n\npl.figure(3)\npl.imshow(G0,.
173e0 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 74 interpolation='nearest')\npl.tit
17400 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 28 le('OT.matrix.G0')\n\npl.figure(
17420 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 78 4)\not.plot.plot2D_samples_mat(x
17440 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 6c s,.xt,.G0,.c=[.5,..5,.1])\npl.pl
17460 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 62 ot(xs[:,.0],.xs[:,.1],.'+b',.lab
17480 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 74 el='Source.samples')\npl.plot(xt
174a0 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 54 [:,.0],.xt[:,.1],.'xr',.label='T
174c0 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 30 arget.samples')\npl.legend(loc=0
174e0 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 70 )\npl.title('OT.matrix.with.samp
17500 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 20 les')".......].....},.....{.....
17520 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",......
17540 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":
17560 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 2d .[........."Compute.Sinkhorn\n--
17580 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".......].....
175a0 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
175c0 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
175e0 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":.{........."
17600 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.......},......
17620 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":.
17640 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 67 [........."#%%.sinkhorn\n\n#.reg
17660 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 73 .term\nlambd.=.1e-3\n\nGs.=.ot.s
17680 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 69 inkhorn(a,.b,.M,.lambd)\n\npl.fi
176a0 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 61 gure(5)\npl.imshow(Gs,.interpola
176c0 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 61 tion='nearest')\npl.title('OT.ma
176e0 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 5c trix.sinkhorn')\n\npl.figure(6)\
17700 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 20 not.plot.plot2D_samples_mat(xs,.
17720 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 70 xt,.Gs,.color=[.5,..5,.1])\npl.p
17740 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
17760 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
17780 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='
177a0 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=
177c0 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 6e 0)\npl.title('OT.matrix.Sinkhorn
177e0 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 20 .with.samples')\n\npl.show()"...
17800 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":.{
17820 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
17840 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
17860 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":
17880 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_
178a0 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"
178c0 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",..
178e0 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.......},....
17900 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",.....
17920 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",..
17940 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
17960 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",....
17980 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",
179a0 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".....}.
179c0 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
179e0 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 b5 c3 fd 1f 0a t_minor":.0.}PK........-`.L.....
17a00 15 00 00 0a 15 00 00 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 ...........plot_otda_linear_mapp
17a20 69 6e 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 0a 20 20 ing.ipynb{..."cells":.[.....{...
17a40 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",......."
17a60 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
17a80 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":
17aa0 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":
17ac0 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":.[........."
17ae0 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 20 %matplotlib.inline".......].....
17b00 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
17b20 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":.{},...
17b40 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 4c 69 6e ...."source":.[........."\n#.Lin
17b60 65 61 72 20 4f 54 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 5c ear.OT.mapping.estimation\n\n\n\
17b80 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".......].....},.....{.......
17ba0 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
17bc0 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
17be0 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
17c00 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":.[],
17c20 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
17c40 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
17c60 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
17c80 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
17ca0 6f 72 74 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 ort.pylab.as.pl\nimport.ot".....
17cc0 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
17ce0 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"
17d00 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":.[.........
17d20 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 2d 5c 6e 5c "Generate.data\n-------------\n\
17d40 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
17d60 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
17d80 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
17da0 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
17dc0 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":.[],..
17de0 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 31 30 ....."source":.[........."n.=.10
17e00 30 30 5c 6e 64 20 3d 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 00\nd.=.2\nsigma.=..1\n\n#.sourc
17e20 65 20 73 61 6d 70 6c 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 e.samples\nangles.=.np.random.ra
17e40 6e 64 28 6e 2c 20 31 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 nd(n,.1).*.2.*.np.pi\nxs.=.np.co
17e60 6e 63 61 74 65 6e 61 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 ncatenate((np.sin(angles),.np.co
17e80 73 28 61 6e 67 6c 65 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 s(angles)),\n...................
17ea0 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 72 61 6e .axis=1).+.sigma.*.np.random.ran
17ec0 64 6e 28 6e 2c 20 32 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 dn(n,.2)\nxs[:n.//.2,.1].+=.2\n\
17ee0 6e 5c 6e 23 20 74 61 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 n\n#.target.samples\nanglet.=.np
17f00 2e 72 61 6e 64 6f 6d 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 .random.rand(n,.1).*.2.*.np.pi\n
17f20 78 74 20 3d 20 6e 70 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 xt.=.np.concatenate((np.sin(angl
17f40 65 74 29 2c 20 6e 70 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 et),.np.cos(anglet)),\n.........
17f60 20 20 20 20 20 20 20 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 ...........axis=1).+.sigma.*.np.
17f80 72 61 6e 64 6f 6d 2e 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 random.randn(n,.2)\nxt[:n.//.2,.
17fa0 31 5d 20 2b 3d 20 32 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 1].+=.2\n\n\nA.=.np.array([[1.5,
17fc0 20 2e 37 5d 2c 20 5b 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 ..7],.[.7,.1.5]])\nb.=.np.array(
17fe0 5b 5b 34 2c 20 32 5d 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 [[4,.2]])\nxt.=.xt.dot(A).+.b"..
18000 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_
18020 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
18040 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":.[......
18060 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 20 20 ..."Plot.data\n---------\n\n"...
18080 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
180a0 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
180c0 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":.{
180e0 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.....
18100 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":.[],.......
18120 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 31 "source":.[........."pl.figure(1
18140 2c 20 28 35 2c 20 35 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 ,.(5,.5))\npl.plot(xs[:,.0],.xs[
18160 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 20 78 :,.1],.'+')\npl.plot(xt[:,.0],.x
18180 74 5b 3a 2c 20 31 5d 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 t[:,.1],.'o')".......].....},...
181a0 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
181c0 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":.{},......."
181e0 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 65 20 6c 69 6e source":.[........."Estimate.lin
18200 65 61 72 20 6d 61 70 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 ear.mapping.and.transport\n-----
18220 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 --------------------------------
18240 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".......].....},.....{......
18260 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
18280 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
182a0 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
182c0 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":.[]
182e0 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 41 65 2c ,......."source":.[........."Ae,
18300 20 62 65 20 3d 20 6f 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 .be.=.ot.da.OT_mapping_linear(xs
18320 2c 20 78 74 29 5c 6e 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 ,.xt)\n\nxst.=.xs.dot(Ae).+.be".
18340 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
18360 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
18380 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":.[.....
183a0 20 20 20 20 22 50 6c 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 ...."Plot.transported.samples\n-
183c0 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 20 20 -----------------------\n\n"....
183e0 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
18400 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
18420 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":.{.
18440 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......
18460 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":.[],......."
18480 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 31 2c source":.[........."pl.figure(1,
184a0 20 28 35 2c 20 35 29 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 .(5,.5))\npl.clf()\npl.plot(xs[:
184c0 2c 20 30 5d 2c 20 78 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 ,.0],.xs[:,.1],.'+')\npl.plot(xt
184e0 5b 3a 2c 20 30 5d 2c 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 [:,.0],.xt[:,.1],.'o')\npl.plot(
18500 78 73 74 5b 3a 2c 20 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 xst[:,.0],.xst[:,.1],.'+')\n\npl
18520 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 20 20 20 7b 0a 20 20 .show()".......].....},.....{...
18540 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",....
18560 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
18580 22 3a 20 5b 0a 20 20 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 ":.[........."Load.image.data\n-
185a0 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".......].....
185c0 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
185e0 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
18600 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":.{........."
18620 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.......},......
18640 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":.
18660 5b 0a 20 20 20 20 20 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 [........."def.im2mat(I):\n....\
18680 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 69 "\"\"Converts.and.image.to.matri
186a0 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 5c 22 5c 22 5c 22 5c 6e 20 20 x.(one.pixel.per.line)\"\"\"\n..
186c0 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 20 2a ..return.I.reshape((I.shape[0].*
186e0 20 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 .I.shape[1],.I.shape[2]))\n\n\nd
18700 65 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 ef.mat2im(X,.shape):\n....\"\"\"
18720 43 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 Converts.back.a.matrix.to.an.ima
18740 67 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 ge\"\"\"\n....return.X.reshape(s
18760 68 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 hape)\n\n\ndef.minmax(I):\n....r
18780 65 74 75 72 6e 20 6e 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 eturn.np.clip(I,.0,.1)\n\n\n#.Lo
187a0 61 64 69 6e 67 20 69 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 ading.images\nI1.=.pl.imread('..
187c0 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e /data/ocean_day.jpg').astype(np.
187e0 66 6c 6f 61 74 36 34 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 float64)./.256\nI2.=.pl.imread('
18800 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 74 79 70 ../data/ocean_sunset.jpg').astyp
18820 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 20 69 6d e(np.float64)./.256\n\n\nX1.=.im
18840 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 22 0a 20 20 20 20 20 2mat(I1)\nX2.=.im2mat(I2)"......
18860 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
18880 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":
188a0 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":.[........."
188c0 45 73 74 69 6d 61 74 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 Estimate.mapping.and.adapt\n----
188e0 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 20 ------------------------\n\n"...
18900 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
18920 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
18940 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":.{
18960 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.....
18980 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":.[],.......
189a0 22 73 6f 75 72 63 65 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 "source":.[........."mapping.=.o
189c0 74 2e 64 61 2e 4c 69 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 t.da.LinearTransport()\n\nmappin
189e0 67 2e 66 69 74 28 58 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 g.fit(Xs=X1,.Xt=X2)\n\n\nxst.=.m
18a00 61 70 70 69 6e 67 2e 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 apping.transform(Xs=X1)\nxts.=.m
18a20 61 70 70 69 6e 67 2e 69 6e 76 65 72 73 65 5f 74 72 61 6e 73 66 6f 72 6d 28 58 74 3d 58 32 29 5c apping.inverse_transform(Xt=X2)\
18a40 6e 5c 6e 49 31 74 20 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 n\nI1t.=.minmax(mat2im(xst,.I1.s
18a60 68 61 70 65 29 29 5c 6e 49 32 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 78 74 73 2c hape))\nI2t.=.minmax(mat2im(xts,
18a80 20 49 32 2e 73 68 61 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 .I2.shape))\n\n#.%%".......]....
18aa0 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
18ac0 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":.{},..
18ae0 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 74 ....."source":.[........."Plot.t
18b00 72 61 6e 73 66 6f 72 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 ransformed.images\n-------------
18b20 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".......].....},..
18b40 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",.
18b60 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,..
18b80 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
18ba0 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
18bc0 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":.[...
18be0 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c ......"pl.figure(2,.figsize=(10,
18c00 20 37 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e .7))\n\npl.subplot(2,.2,.1)\npl.
18c20 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
18c40 69 74 6c 65 28 27 49 6d 2e 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 itle('Im..1')\n\npl.subplot(2,.2
18c60 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 6f 66 ,.2)\npl.imshow(I2)\npl.axis('of
18c80 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 32 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 f')\npl.title('Im..2')\n\npl.sub
18ca0 70 6c 6f 74 28 32 2c 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 plot(2,.2,.3)\npl.imshow(I1t)\np
18cc0 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 69 6e 67 l.axis('off')\npl.title('Mapping
18ce0 20 49 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 34 29 5c .Im..1')\n\npl.subplot(2,.2,.4)\
18d00 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c npl.imshow(I2t)\npl.axis('off')\
18d20 6e 70 6c 2e 74 69 74 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 npl.title('Inverse.mapping.Im..2
18d40 27 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 64 61 ')".......].....}...],..."metada
18d60 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 ta":.{....."kernelspec":.{......
18d80 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 20 20 ."display_name":."Python.3",....
18da0 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 20 22 ..."language":."python",......."
18dc0 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 61 6e name":."python3".....},....."lan
18de0 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 6f 72 guage_info":.{......."codemirror
18e00 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 74 68 _mode":.{........."name":."ipyth
18e20 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 20 20 on",........."version":.3.......
18e40 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 79 22 },......."file_extension":.".py"
18e60 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 74 68 ,......."mimetype":."text/x-pyth
18e80 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 20 20 on",......."name":."python",....
18ea0 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e ..."nbconvert_exporter":."python
18ec0 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 79 74 ",......."pygments_lexer":."ipyt
18ee0 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 35 22 0a hon3",......."version":."3.6.5".
18f00 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 22 6e ....}...},..."nbformat":.4,..."n
18f20 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 60 cb bformat_minor":.0.}PK........-`.
18f40 4c 49 c5 7b 83 fa 16 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 LI.{.............plot_otda_mappi
18f60 6e 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 0a 20 20 20 ng.ipynb{..."cells":.[.....{....
18f80 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
18fa0 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
18fc0 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":.
18fe0 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":.
19000 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 25 [],......."source":.[........."%
19020 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 20 7d matplotlib.inline".......].....}
19040 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
19060 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":.{},....
19080 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 6d ..."source":.[........."\n#.OT.m
190a0 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 apping.estimation.for.domain.ada
190c0 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 65 6e ptation\n\n\nThis.example.presen
190e0 74 73 20 68 6f 77 20 74 6f 20 75 73 65 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 74 ts.how.to.use.MappingTransport.t
19100 6f 20 65 73 74 69 6d 61 74 65 20 61 74 20 74 68 65 20 73 61 6d 65 5c 6e 74 69 6d 65 20 62 6f 74 o.estimate.at.the.same\ntime.bot
19120 68 20 74 68 65 20 63 6f 75 70 6c 69 6e 67 20 74 72 61 6e 73 70 6f 72 74 20 61 6e 64 20 61 70 70 h.the.coupling.transport.and.app
19140 72 6f 78 69 6d 61 74 65 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 61 70 20 77 69 74 68 20 roximate.the.transport.map.with.
19160 65 69 74 68 65 72 5c 6e 61 20 6c 69 6e 65 61 72 20 6f 72 20 61 20 6b 65 72 6e 65 6c 69 7a 65 64 either\na.linear.or.a.kernelized
19180 20 6d 61 70 70 69 6e 67 20 61 73 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e 20 5b 38 5d 2e 5c 6e .mapping.as.introduced.in.[8].\n
191a0 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
191c0 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 5c 6e 20 20 20 20 5c 22 4d 61 70 70 69 lamary,.A..Habrard,\n....\"Mappi
191e0 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d ng.estimation.for.discrete.optim
19200 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 22 2c 5c 6e 20 20 20 20 4e 65 75 72 61 6c 20 49 6e 66 6f al.transport\",\n....Neural.Info
19220 72 6d 61 74 69 6f 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 79 73 74 65 6d 73 20 28 4e 49 50 53 rmation.Processing.Systems.(NIPS
19240 29 2c 20 32 30 31 36 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 ),.2016.\n\n".......].....},....
19260 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",...
19280 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,....
192a0 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
192c0 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
192e0 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":.[.....
19300 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 ...."#.Authors:.Remi.Flamary.<re
19320 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 mi.flamary@unice.fr>\n#.........
19340 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e .Stanislas.Chambon.<stan.chambon
19360 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c @gmail.com>\n#\n#.License:.MIT.L
19380 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
193a0 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
193c0 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 20 ort.ot".......].....},.....{....
193e0 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",.....
19400 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"
19420 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----
19440 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".......].....},...
19460 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",..
19480 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,...
194a0 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
194c0 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
194e0 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":.[....
19500 20 20 20 20 20 22 6e 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 ....."n_source_samples.=.100\nn_
19520 74 61 72 67 65 74 5f 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 target_samples.=.100\ntheta.=.2.
19540 2a 20 6e 70 2e 70 69 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 *.np.pi./.20\nnoise_level.=.0.1\
19560 6e 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 n\nXs,.ys.=.ot.datasets.make_dat
19580 61 5f 63 6c 61 73 73 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 a_classif(\n....'gaussrot',.n_so
195a0 75 72 63 65 5f 73 61 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 urce_samples,.nz=noise_level)\nX
195c0 73 5f 6e 65 77 2c 20 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 s_new,._.=.ot.datasets.make_data
195e0 5f 63 6c 61 73 73 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 _classif(\n....'gaussrot',.n_sou
19600 72 63 65 5f 73 61 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 74 rce_samples,.nz=noise_level)\nXt
19620 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 61 5f 63 6c 61 ,.yt.=.ot.datasets.make_data_cla
19640 73 73 69 66 28 5c 6e 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 ssif(\n....'gaussrot',.n_target_
19660 73 61 6d 70 6c 65 73 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 samples,.theta=theta,.nz=noise_l
19680 65 76 65 6c 29 5c 6e 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 evel)\n\n#.one.of.the.target.mod
196a0 65 20 63 68 61 6e 67 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 e.changes.its.variance.(no.linea
196c0 72 20 6d 61 70 70 69 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 r.mapping)\nXt[yt.==.2].*=.3\nXt
196e0 20 3d 20 58 74 20 2b 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 .=.Xt.+.4".......].....},.....{.
19700 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",..
19720 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
19740 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 2d 2d 2d 2d ce":.[........."Plot.data\n-----
19760 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".......].....},.....{..
19780 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",.......
197a0 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,......."
197c0 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"
197e0 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"
19800 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":.[.........
19820 22 70 6c 2e 66 69 67 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 "pl.figure(1,.(10,.5))\npl.clf()
19840 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c \npl.scatter(Xs[:,.0],.Xs[:,.1],
19860 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 75 72 63 65 .c=ys,.marker='+',.label='Source
19880 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 20 30 5d 2c .samples')\npl.scatter(Xt[:,.0],
198a0 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 20 6c 61 62 .Xt[:,.1],.c=yt,.marker='o',.lab
198c0 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 28 el='Target.samples')\npl.legend(
198e0 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 72 loc=0)\npl.title('Source.and.tar
19900 67 65 74 20 64 69 73 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 get.distributions')".......]....
19920 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
19940 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":.{},..
19960 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 6e ....."source":.[........."Instan
19980 74 69 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c tiate.the.different.transport.al
199a0 67 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 gorithms.and.fit.them\n---------
199c0 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 --------------------------------
199e0 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".......].
19a00 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":.
19a20 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":
19a40 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":.{......
19a60 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.......},..
19a80 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
19aa0 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 e":.[........."#.MappingTranspor
19ac0 74 20 77 69 74 68 20 6c 69 6e 65 61 72 20 6b 65 72 6e 65 6c 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 t.with.linear.kernel\not_mapping
19ae0 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 _linear.=.ot.da.MappingTransport
19b00 28 5c 6e 20 20 20 20 6b 65 72 6e 65 6c 3d 5c 22 6c 69 6e 65 61 72 5c 22 2c 20 6d 75 3d 31 65 30 (\n....kernel=\"linear\",.mu=1e0
19b20 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 5c 6e 20 20 20 20 6d 61 78 5f ,.eta=1e-8,.bias=True,\n....max_
19b40 69 74 65 72 3d 32 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 6f 74 5f 6d 61 70 iter=20,.verbose=True)\n\not_map
19b60 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c ping_linear.fit(Xs=Xs,.Xt=Xt)\n\
19b80 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,.
19ba0 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
19bc0 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 5f 6d 61 70 pping\ntransp_Xs_linear.=.ot_map
19be0 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 5c 6e ping_linear.transform(Xs=Xs)\n\n
19c00 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 20 74 72 61 #.for.out.of.source.samples,.tra
19c20 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 74 68 65 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e nsform.applies.the.linear.mappin
19c40 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 g\ntransp_Xs_linear_new.=.ot_map
19c60 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 ping_linear.transform(Xs=Xs_new)
19c80 5c 6e 5c 6e 5c 6e 23 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 67 61 \n\n\n#.MappingTransport.with.ga
19ca0 75 73 73 69 61 6e 20 6b 65 72 6e 65 6c 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 ussian.kernel\not_mapping_gaussi
19cc0 61 6e 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 5c 6e 20 20 an.=.ot.da.MappingTransport(\n..
19ce0 20 20 6b 65 72 6e 65 6c 3d 5c 22 67 61 75 73 73 69 61 6e 5c 22 2c 20 65 74 61 3d 31 65 2d 35 2c ..kernel=\"gaussian\",.eta=1e-5,
19d00 20 6d 75 3d 31 65 2d 31 2c 20 62 69 61 73 3d 54 72 75 65 2c 20 73 69 67 6d 61 3d 31 2c 5c 6e 20 .mu=1e-1,.bias=True,.sigma=1,\n.
19d20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f ...max_iter=10,.verbose=True)\no
19d40 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 t_mapping_gaussian.fit(Xs=Xs,.Xt
19d60 3d 58 74 29 5c 6e 5c 6e 23 20 66 6f 72 20 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 63 65 20 73 61 =Xt)\n\n#.for.original.source.sa
19d80 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 62 61 72 79 63 65 6e mples,.transform.applies.barycen
19da0 74 72 69 63 20 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 73 69 61 6e tric.mapping\ntransp_Xs_gaussian
19dc0 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 72 61 6e 73 66 6f 72 6d .=.ot_mapping_gaussian.transform
19de0 28 58 73 3d 58 73 29 5c 6e 5c 6e 23 20 66 6f 72 20 6f 75 74 20 6f 66 20 73 6f 75 72 63 65 20 73 (Xs=Xs)\n\n#.for.out.of.source.s
19e00 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 74 68 65 20 67 61 amples,.transform.applies.the.ga
19e20 75 73 73 69 61 6e 20 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 73 69 ussian.mapping\ntransp_Xs_gaussi
19e40 61 6e 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 72 61 an_new.=.ot_mapping_gaussian.tra
19e60 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d nsform(Xs=Xs_new)".......].....}
19e80 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
19ea0 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":.{},....
19ec0 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 74 72 61 ..."source":.[........."Plot.tra
19ee0 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--------------
19f00 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".......].....},..
19f20 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",.
19f40 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,..
19f60 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
19f80 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
19fa0 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":.[...
19fc0 20 20 20 20 20 20 22 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 ......"pl.figure(2)\npl.clf()\np
19fe0 6c 2e 73 75 62 70 6c 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 l.subplot(2,.2,.1)\npl.scatter(X
1a000 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 3d t[:,.0],.Xt[:,.1],.c=yt,.marker=
1a020 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 73 'o',\n...........label='Target.s
1a040 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 74 amples',.alpha=.2)\npl.scatter(t
1a060 72 61 6e 73 70 5f 58 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 ransp_Xs_linear[:,.0],.transp_Xs
1a080 5f 6c 69 6e 65 61 72 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 _linear[:,.1],.c=ys,.marker='+',
1a0a0 5c 6e 20 20 20 20 20 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 \n...........label='Mapped.sourc
1a0c0 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 42 61 72 79 2e 20 6d 61 e.samples')\npl.title(\"Bary..ma
1a0e0 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 5c 22 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 pping.(linear)\")\npl.legend(loc
1a100 3d 30 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 73 =0)\n\npl.subplot(2,.2,.2)\npl.s
1a120 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c catter(Xt[:,.0],.Xt[:,.1],.c=yt,
1a140 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 65 6c 3d 27 .marker='o',\n...........label='
1a160 54 61 72 67 65 74 20 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 Target.samples',.alpha=.2)\npl.s
1a180 63 61 74 74 65 72 28 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 catter(transp_Xs_linear_new[:,.0
1a1a0 5d 2c 20 74 72 61 6e 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 ],.transp_Xs_linear_new[:,.1],\n
1a1c0 20 20 20 20 20 20 20 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 ...........c=ys,.marker='+',.lab
1a1e0 65 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 el='Learned.mapping')\npl.title(
1a200 5c 22 45 73 74 69 6d 2e 20 6d 61 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 5c 22 29 5c 6e 5c 6e \"Estim..mapping.(linear)\")\n\n
1a220 70 6c 2e 73 75 62 70 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 pl.subplot(2,.2,.3)\npl.scatter(
1a240 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
1a260 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.
1a280 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(
1a2a0 74 72 61 6e 73 70 5f 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 transp_Xs_gaussian[:,.0],.transp
1a2c0 5f 58 73 5f 67 61 75 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 _Xs_gaussian[:,.1],.c=ys,\n.....
1a2e0 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 62 61 72 79 63 65 6e ......marker='+',.label='barycen
1a300 74 72 69 63 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 42 61 72 79 2e tric.mapping')\npl.title(\"Bary.
1a320 20 6d 61 70 70 69 6e 67 20 28 6b 65 72 6e 65 6c 29 5c 22 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c .mapping.(kernel)\")\n\npl.subpl
1a340 6f 74 28 32 2c 20 32 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 ot(2,.2,.4)\npl.scatter(Xt[:,.0]
1a360 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.
1a380 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'
1a3a0 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
1a3c0 73 5f 67 61 75 73 73 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 s_gaussian_new[:,.0],.transp_Xs_
1a3e0 67 61 75 73 73 69 61 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 gaussian_new[:,.1],.c=ys,\n.....
1a400 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 4c 65 61 72 6e 65 64 ......marker='+',.label='Learned
1a420 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 45 73 74 69 6d 2e 20 6d 61 .mapping')\npl.title(\"Estim..ma
1a440 70 70 69 6e 67 20 28 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 pping.(kernel)\")\npl.tight_layo
1a460 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 7d ut()\n\npl.show()".......].....}
1a480 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 65 ...],..."metadata":.{....."kerne
1a4a0 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 20 lspec":.{......."display_name":.
1a4c0 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 70 "Python.3",......."language":."p
1a4e0 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 0a ython",......."name":."python3".
1a500 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 20 ....},....."language_info":.{...
1a520 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 ...."codemirror_mode":.{........
1a540 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 72 ."name":."ipython",........."ver
1a560 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 78 sion":.3.......},......."file_ex
1a580 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 65 tension":.".py",......."mimetype
1a5a0 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 22 ":."text/x-python",......."name"
1a5c0 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 70 :."python",......."nbconvert_exp
1a5e0 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 74 orter":."python",......."pygment
1a600 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 72 s_lexer":."ipython3",......."ver
1a620 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 66 sion":."3.6.5".....}...},..."nbf
1a640 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 30 ormat":.4,..."nbformat_minor":.0
1a660 0a 7d 50 4b 03 04 14 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 .}PK........-`.L....|...|.......
1a680 70 6c 6f 74 5f 63 6f 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 plot_compute_emd.ipynb{..."cells
1a6a0 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 22 63 ":.[.....{......."cell_type":."c
1a6c0 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
1a6e0 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":.{........
1a700 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.......},....
1a720 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"
1a740 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"
1a760 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
1a780 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
1a7a0 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":.[....
1a7c0 20 20 20 20 20 22 5c 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 ....."\n#.Plot.multiple.EMD\n\n\
1a7e0 6e 53 68 6f 77 73 20 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 nShows.how.to.compute.multiple.E
1a800 4d 44 20 61 6e 64 20 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 MD.and.Sinkhorn.with.two.differn
1a820 74 5c 6e 67 72 6f 75 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 t\nground.metrics.and.plot.their
1a840 20 76 61 6c 75 65 73 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 .values.for.diffeent.distributio
1a860 6e 73 2e 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 ns.\n\n\n\n".......].....},.....
1a880 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",....
1a8a0 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,.....
1a8c0 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
1a8e0 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
1a900 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":.[......
1a920 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
1a940 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
1a960 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
1a980 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.
1a9a0 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 20 pl\nimport.ot\nfrom.ot.datasets.
1a9c0 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 20 import.make_1D_gauss.as.gauss"..
1a9e0 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_
1aa00 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
1aa20 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":.[......
1aa40 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 2d ..."Generate.data\n-------------
1aa60 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".......].....},.....{......
1aa80 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
1aaa0 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
1aac0 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
1aae0 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":.[]
1ab00 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":.[........."#%%
1ab20 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 6e .parameters\n\nn.=.100..#.nb.bin
1ab40 73 5c 6e 6e 5f 74 61 72 67 65 74 20 3d 20 35 30 20 20 23 20 6e 62 20 74 61 72 67 65 74 20 64 69 s\nn_target.=.50..#.nb.target.di
1ab60 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e 5c 6e 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 stributions\n\n\n#.bin.positions
1ab80 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
1aba0 74 36 34 29 5c 6e 5c 6e 6c 73 74 5f 6d 20 3d 20 6e 70 2e 6c 69 6e 73 70 61 63 65 28 32 30 2c 20 t64)\n\nlst_m.=.np.linspace(20,.
1abc0 39 30 2c 20 6e 5f 74 61 72 67 65 74 29 5c 6e 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 90,.n_target)\n\n#.Gaussian.dist
1abe0 72 69 62 75 74 69 6f 6e 73 5c 6e 61 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d ributions\na.=.gauss(n,.m=20,.s=
1ac00 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 5c 6e 5c 6e 42 20 3d 20 6e 70 2e 5)..#.m=.mean,.s=.std\n\nB.=.np.
1ac20 7a 65 72 6f 73 28 28 6e 2c 20 6e 5f 74 61 72 67 65 74 29 29 5c 6e 5c 6e 66 6f 72 20 69 2c 20 6d zeros((n,.n_target))\n\nfor.i,.m
1ac40 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 6c 73 74 5f 6d 29 3a 5c 6e 20 20 20 20 42 5b 3a 2c 20 .in.enumerate(lst_m):\n....B[:,.
1ac60 69 5d 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 6d 2c 20 73 3d 35 29 5c 6e 5c 6e 23 20 6c 6f 73 i].=.gauss(n,.m=m,.s=5)\n\n#.los
1ac80 73 20 6d 61 74 72 69 78 20 61 6e 64 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 5c 6e 4d 20 3d 20 s.matrix.and.normalization\nM.=.
1aca0 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 73 ot.dist(x.reshape((n,.1)),.x.res
1acc0 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 27 65 75 63 6c 69 64 65 61 6e 27 29 5c 6e 4d 20 2f 3d hape((n,.1)),.'euclidean')\nM./=
1ace0 20 4d 2e 6d 61 78 28 29 5c 6e 4d 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 .M.max()\nM2.=.ot.dist(x.reshape
1ad00 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 2c 20 27 73 71 ((n,.1)),.x.reshape((n,.1)),.'sq
1ad20 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 22 0a 20 20 20 euclidean')\nM2./=.M2.max()"....
1ad40 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
1ad60 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 61 pe":."markdown",......."metadata
1ad80 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":.[........
1ada0 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 20 20 20 20 ."Plot.data\n---------\n\n".....
1adc0 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
1ade0 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
1ae00 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":.{..
1ae20 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.......
1ae40 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
1ae60 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 74 68 65 20 ource":.[........."#%%.plot.the.
1ae80 64 69 73 74 72 69 62 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 distributions\n\npl.figure(1)\np
1aea0 6c 2e 73 75 62 70 6c 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 l.subplot(2,.1,.1)\npl.plot(x,.a
1aec0 2c 20 27 62 27 2c 20 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 ,.'b',.label='Source.distributio
1aee0 6e 27 29 5c 6e 70 6c 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 n')\npl.title('Source.distributi
1af00 6f 6e 27 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 6c 2e 70 6c on')\npl.subplot(2,.1,.2)\npl.pl
1af20 6f 74 28 78 2c 20 42 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 ot(x,.B,.label='Target.distribut
1af40 69 6f 6e 73 27 29 5c 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 ions')\npl.title('Target.distrib
1af60 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 28 29 22 0a 20 20 20 utions')\npl.tight_layout()"....
1af80 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
1afa0 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 61 pe":."markdown",......."metadata
1afc0 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":.[........
1afe0 20 22 43 6f 6d 70 75 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 ."Compute.EMD.for.the.different.
1b000 6c 6f 73 73 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 losses\n------------------------
1b020 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".......].....},
1b040 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"
1b060 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,
1b080 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
1b0a0 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.......},......."
1b0c0 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":.[.
1b0e0 20 20 20 20 20 20 20 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 ........"#%%.Compute.and.plot.di
1b100 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 64 stributions.and.loss.matrix\n\nd
1b120 5f 65 6d 64 20 3d 20 6f 74 2e 65 6d 64 32 28 61 2c 20 42 2c 20 4d 29 20 20 23 20 64 69 72 65 63 _emd.=.ot.emd2(a,.B,.M)..#.direc
1b140 74 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 45 4d 44 5c 6e 64 5f 65 6d 64 32 20 3d 20 6f t.computation.of.EMD\nd_emd2.=.o
1b160 74 2e 65 6d 64 32 28 61 2c 20 42 2c 20 4d 32 29 20 20 23 20 64 69 72 65 63 74 20 63 6f 6d 70 75 t.emd2(a,.B,.M2)..#.direct.compu
1b180 74 61 74 69 6f 6e 20 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 tation.of.EMD.with.loss.M2\n\n\n
1b1a0 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 2c 20 6c 61 62 pl.figure(2)\npl.plot(d_emd,.lab
1b1c0 65 6c 3d 27 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 65 el='Euclidean.EMD')\npl.plot(d_e
1b1e0 6d 64 32 2c 20 6c 61 62 65 6c 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 45 4d md2,.label='Squared.Euclidean.EM
1b200 44 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 45 4d 44 20 64 69 73 74 61 6e 63 65 73 27 29 5c 6e D')\npl.title('EMD.distances')\n
1b220 70 6c 2e 6c 65 67 65 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 pl.legend()".......].....},.....
1b240 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",
1b260 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
1b280 75 72 63 65 22 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 urce":.[........."Compute.Sinkho
1b2a0 72 6e 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 6e 2d 2d 2d rn.for.the.different.losses\n---
1b2c0 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 --------------------------------
1b2e0 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".......].....},.....{
1b300 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",.....
1b320 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,......
1b340 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
1b360 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
1b380 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":.[.......
1b3a0 20 20 22 23 25 25 5c 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 .."#%%\nreg.=.1e-2\nd_sinkhorn.=
1b3c0 20 6f 74 2e 73 69 6e 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 .ot.sinkhorn2(a,.B,.M,.reg)\nd_s
1b3e0 69 6e 6b 68 6f 72 6e 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 inkhorn2.=.ot.sinkhorn2(a,.B,.M2
1b400 2c 20 72 65 67 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 ,.reg)\n\npl.figure(2)\npl.clf()
1b420 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 6c 69 64 65 61 \npl.plot(d_emd,.label='Euclidea
1b440 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 62 65 6c 3d 27 n.EMD')\npl.plot(d_emd2,.label='
1b460 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 2e 70 6c 6f 74 Squared.Euclidean.EMD')\npl.plot
1b480 28 64 5f 73 69 6e 6b 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 (d_sinkhorn,.'+',.label='Euclide
1b4a0 61 6e 20 53 69 6e 6b 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 an.Sinkhorn')\npl.plot(d_sinkhor
1b4c0 6e 32 2c 20 27 2b 27 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 n2,.'+',.label='Squared.Euclidea
1b4e0 6e 20 53 69 6e 6b 68 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 n.Sinkhorn')\npl.title('EMD.dist
1b500 61 6e 63 65 73 27 29 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 ances')\npl.legend()\n\npl.show(
1b520 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 64 61 74 )".......].....}...],..."metadat
1b540 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 a":.{....."kernelspec":.{.......
1b560 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 20 20 20 "display_name":."Python.3",.....
1b580 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 20 22 6e .."language":."python",......."n
1b5a0 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 61 6e 67 ame":."python3".....},....."lang
1b5c0 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 6f 72 5f uage_info":.{......."codemirror_
1b5e0 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 74 68 6f mode":.{........."name":."ipytho
1b600 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 20 20 7d n",........."version":.3.......}
1b620 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 79 22 2c ,......."file_extension":.".py",
1b640 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 74 68 6f ......."mimetype":."text/x-pytho
1b660 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 20 20 20 n",......."name":."python",.....
1b680 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 .."nbconvert_exporter":."python"
1b6a0 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 79 74 68 ,......."pygments_lexer":."ipyth
1b6c0 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 35 22 0a 20 on3",......."version":."3.6.5"..
1b6e0 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 22 6e 62 ...}...},..."nbformat":.4,..."nb
1b700 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 f7 56 38 4d format_minor":.0.}PK.........V8M
1b720 58 b0 17 7b e5 0e 00 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 X..{........#...plot_convolution
1b740 61 6c 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 al_barycenter.ipynb{..."cells":.
1b760 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 65 [.....{......."cell_type":."code
1b780 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 6c ",......."execution_count":.null
1b7a0 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 63 ,......."metadata":.{........."c
1b7c0 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 20 ollapsed":.false.......},.......
1b7e0 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 5b "outputs":.[],......."source":.[
1b800 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 20 ........."%matplotlib.inline"...
1b820 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
1b840 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
1b860 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":.[.......
1b880 20 20 22 5c 6e 23 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 .."\n#.Convolutional.Wasserstein
1b8a0 20 42 61 72 79 63 65 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 .Barycenter.example\n\n\nThis.ex
1b8c0 61 6d 70 6c 65 20 69 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 ample.is.designed.to.illustrate.
1b8e0 68 6f 77 20 74 68 65 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 how.the.Convolutional.Wasserstei
1b900 6e 20 42 61 72 79 63 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 n.Barycenter\nfunction.of.POT.wo
1b920 72 6b 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 rks.\n\n".......].....},.....{..
1b940 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",.......
1b960 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,......."
1b980 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"
1b9a0 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"
1b9c0 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":.[.........
1b9e0 22 23 20 41 75 74 68 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 "#.Author:.Nicolas.Courty.<ncour
1ba00 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 4d 49 54 20 ty@irisa.fr>\n#\n#.License:.MIT.
1ba20 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 20 6e 70 5c License\n\n\nimport.numpy.as.np\
1ba40 6e 69 6d 70 6f 72 74 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 nimport.pylab.as.pl\nimport.ot".
1ba60 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
1ba80 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
1baa0 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":.[.....
1bac0 20 20 20 20 22 44 61 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 ...."Data.preparation\n---------
1bae0 2d 2d 2d 2d 2d 2d 2d 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 -------\n\nThe.four.distribution
1bb00 73 20 61 72 65 20 63 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 s.are.constructed.from.4.simple.
1bb20 69 6d 61 67 65 73 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 images\n\n".......].....},.....{
1bb40 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",.....
1bb60 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,......
1bb80 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
1bba0 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
1bbc0 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":.[.......
1bbe0 20 20 22 66 31 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 72 .."f1.=.1.-.pl.imread('../data/r
1bc00 65 64 63 72 6f 73 73 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 edcross.png')[:,.:,.2]\nf2.=.1.-
1bc20 20 70 6c 2e 69 6d 72 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 .pl.imread('../data/duck.png')[:
1bc40 2c 20 3a 2c 20 32 5d 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 ,.:,.2]\nf3.=.1.-.pl.imread('../
1bc60 64 61 74 61 2f 68 65 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 data/heart.png')[:,.:,.2]\nf4.=.
1bc80 31 20 2d 20 70 6c 2e 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 1.-.pl.imread('../data/tooth.png
1bca0 27 29 5b 3a 2c 20 3a 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 ')[:,.:,.2]\n\nA.=.[]\nf1.=.f1./
1bcc0 20 6e 70 2e 73 75 6d 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 .np.sum(f1)\nf2.=.f2./.np.sum(f2
1bce0 29 5c 6e 66 33 20 3d 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 )\nf3.=.f3./.np.sum(f3)\nf4.=.f4
1bd00 20 2f 20 6e 70 2e 73 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 ./.np.sum(f4)\nA.append(f1)\nA.a
1bd20 70 70 65 6e 64 28 66 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 ppend(f2)\nA.append(f3)\nA.appen
1bd40 64 28 66 34 29 5c 6e 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 d(f4)\nA.=.np.array(A)\n\nnb_ima
1bd60 67 65 73 20 3d 20 35 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 ges.=.5\n\n#.those.are.the.four.
1bd80 63 6f 72 6e 65 72 73 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 corners.coordinates.that.will.be
1bda0 20 69 6e 74 65 72 70 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 .interpolated.by.bilinear\n#.int
1bdc0 65 72 70 6f 6c 61 74 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 erpolation\nv1.=.np.array((1,.0,
1bde0 20 30 2c 20 30 29 29 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 .0,.0))\nv2.=.np.array((0,.1,.0,
1be00 20 30 29 29 5c 6e 76 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 .0))\nv3.=.np.array((0,.0,.1,.0)
1be20 29 5c 6e 76 34 20 3d 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 )\nv4.=.np.array((0,.0,.0,.1))".
1be40 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
1be60 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
1be80 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":.[.....
1bea0 20 20 20 20 22 42 61 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 ...."Barycenter.computation.and.
1bec0 76 69 73 75 61 6c 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 visualization\n-----------------
1bee0 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 5c 6e 22 0a 20 -----------------------\n\n\n"..
1bf00 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_
1bf20 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_
1bf40 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":.
1bf60 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....
1bf80 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":.[],......
1bfa0 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 ."source":.[........."pl.figure(
1bfc0 66 69 67 73 69 7a 65 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 figsize=(10,.10))\npl.title('Con
1bfe0 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 6e 74 65 volutional.Wasserstein.Barycente
1c000 72 73 20 69 6e 20 50 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 rs.in.POT')\ncm.=.'Blues'\n#.reg
1c020 75 6c 61 72 69 7a 61 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 ularization.parameter\nreg.=.0.0
1c040 30 34 5c 6e 66 6f 72 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 04\nfor.i.in.range(nb_images):\n
1c060 20 20 20 20 66 6f 72 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 ....for.j.in.range(nb_images):\n
1c080 20 20 20 20 20 20 20 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 ........pl.subplot(nb_images,.nb
1c0a0 5f 69 6d 61 67 65 73 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 _images,.i.*.nb_images.+.j.+.1)\
1c0c0 6e 20 20 20 20 20 20 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 n........tx.=.float(i)./.(nb_ima
1c0e0 67 65 73 20 2d 20 31 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 ges.-.1)\n........ty.=.float(j).
1c100 2f 20 28 6e 62 5f 69 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 /.(nb_images.-.1)\n\n........#.w
1c120 65 69 67 68 74 73 20 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 eights.are.constructed.by.biline
1c140 61 72 20 69 6e 74 65 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 ar.interpolation\n........tmp1.=
1c160 20 28 31 20 2d 20 74 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 .(1.-.tx).*.v1.+.tx.*.v2\n......
1c180 20 20 74 6d 70 32 20 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 ..tmp2.=.(1.-.tx).*.v3.+.tx.*.v4
1c1a0 5c 6e 20 20 20 20 20 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 \n........weights.=.(1.-.ty).*.t
1c1c0 6d 70 31 20 2b 20 74 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 mp1.+.ty.*.tmp2\n\n........if.i.
1c1e0 3d 3d 20 30 20 61 6e 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 ==.0.and.j.==.0:\n............pl
1c200 2e 69 6d 73 68 6f 77 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 .imshow(f1,.cmap=cm)\n..........
1c220 20 20 70 6c 2e 61 78 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 ..pl.axis('off')\n........elif.i
1c240 20 3d 3d 20 30 20 61 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 .==.0.and.j.==.(nb_images.-.1):\
1c260 6e 20 20 20 20 20 20 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 n............pl.imshow(f3,.cmap=
1c280 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 66 66 27 29 5c cm)\n............pl.axis('off')\
1c2a0 6e 20 20 20 20 20 20 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 n........elif.i.==.(nb_images.-.
1c2c0 31 29 20 61 6e 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 1).and.j.==.0:\n............pl.i
1c2e0 6d 73 68 6f 77 28 66 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 mshow(f2,.cmap=cm)\n............
1c300 70 6c 2e 61 78 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 pl.axis('off')\n........elif.i.=
1c320 3d 20 28 6e 62 5f 69 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 =.(nb_images.-.1).and.j.==.(nb_i
1c340 6d 61 67 65 73 20 2d 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 mages.-.1):\n............pl.imsh
1c360 6f 77 28 66 34 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 ow(f4,.cmap=cm)\n............pl.
1c380 61 78 69 73 28 27 6f 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 axis('off')\n........else:\n....
1c3a0 20 20 20 20 20 20 20 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 ........#.call.to.barycenter.com
1c3c0 70 75 74 61 74 69 6f 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 putation\n............pl.imshow(
1c3e0 6f 74 2e 62 72 65 67 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 ot.bregman.convolutional_barycen
1c400 74 65 72 32 64 28 41 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 ter2d(A,.reg,.weights),.cmap=cm)
1c420 5c 6e 20 20 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 70 6c \n............pl.axis('off')\npl
1c440 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 22 6d .show()".......].....}...],..."m
1c460 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a etadata":.{....."kernelspec":.{.
1c480 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 33 22 ......"display_name":."Python.3"
1c4a0 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 20 20 ,......."language":."python",...
1c4c0 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 20 20 ...."name":."python3".....},....
1c4e0 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 65 6d ."language_info":.{......."codem
1c500 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 20 22 irror_mode":.{........."name":."
1c520 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 0a 20 ipython",........."version":.3..
1c540 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 3a 20 .....},......."file_extension":.
1c560 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 2f 78 ".py",......."mimetype":."text/x
1c580 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 6e 22 -python",......."name":."python"
1c5a0 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 22 70 ,......."nbconvert_exporter":."p
1c5c0 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 3a 20 ython",......."pygments_lexer":.
1c5e0 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 33 2e "ipython3",......."version":."3.
1c600 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 20 34 2c 6.5".....}...},..."nbformat":.4,
1c620 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 00 00 ..."nbformat_minor":.0.}PK......
1c640 00 00 a7 6e a2 4c b3 d8 ae 69 5b 16 00 00 5b 16 00 00 1c 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f ...n.L...i[...[.......plot_otda_
1c660 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f color_images.ipynb{..."nbformat_
1c680 6d 69 6e 6f 72 22 3a 20 30 2c 20 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 20 0a 20 20 minor":.0,...."nbformat":.4,....
1c6a0 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f "cells":.[.....{......."executio
1c6c0 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 n_count":.null,........"cell_typ
1c6e0 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 e":."code",........"source":.[..
1c700 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".....
1c720 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 ..],........"outputs":.[],......
1c740 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
1c760 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b ed":.false.......}.....},......{
1c780 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#.
1c7a0 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 5c 6e 5c OT.for.image.color.adaptation\n\
1c7c0 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 61 20 77 61 79 20 6f n\nThis.example.presents.a.way.o
1c7e0 66 20 74 72 61 6e 73 66 65 72 72 69 6e 67 20 63 6f 6c 6f 72 73 20 62 65 74 77 65 65 6e 20 74 77 f.transferring.colors.between.tw
1c800 6f 20 69 6d 61 67 65 5c 6e 77 69 74 68 20 4f 70 74 69 6d 61 6c 20 54 72 61 6e 73 70 6f 72 74 20 o.image\nwith.Optimal.Transport.
1c820 61 73 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e 20 5b 36 5d 5c 6e 5c 6e 5b 36 5d 20 46 65 72 72 as.introduced.in.[6]\n\n[6].Ferr
1c840 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,
1c860 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 52 65 67 .G.,.&.Aujol,.J..F..(2014).\nReg
1c880 75 6c 61 72 69 7a 65 64 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 ularized.discrete.optimal.transp
1c8a0 6f 72 74 2e 5c 6e 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 ort.\nSIAM.Journal.on.Imaging.Sc
1c8c0 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 20 31 38 35 33 2d 31 38 38 32 2e 5c 6e 5c 6e 22 0a 20 20 iences,.7(3),.1853-1882.\n\n"...
1c8e0 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b ....],........"cell_type":."mark
1c900 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 down",........"metadata":.{}....
1c920 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e .},......{......."execution_coun
1c940 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 t":.null,........"cell_type":."c
1c960 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 ode",........"source":.[........
1c980 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.
1c9a0 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
1c9c0 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
1c9e0 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
1ca00 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.
1ca20 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
1ca40 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
1ca60 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
1ca80 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....\"\"\
1caa0 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f "Converts.and.image.to.matrix.(o
1cac0 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 ne.pixel.per.line)\"\"\"\n....re
1cae0 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 20 2a 20 49 2e 73 turn.I.reshape((I.shape[0].*.I.s
1cb00 68 61 70 65 5b 31 5d 2c 20 49 2e 73 68 61 70 65 5b 32 5d 29 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d hape[1],.I.shape[2]))\n\n\ndef.m
1cb20 61 74 32 69 6d 28 58 2c 20 73 68 61 70 65 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 at2im(X,.shape):\n....\"\"\"Conv
1cb40 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 65 5c 22 erts.back.a.matrix.to.an.image\"
1cb60 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 \"\"\n....return.X.reshape(shape
1cb80 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 )\n\n\ndef.minmax(I):\n....retur
1cba0 6e 20 6e 70 2e 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 n.np.clip(I,.0,.1)".......],....
1cbc0 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
1cbe0 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
1cc00 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.......}.....},......{......."
1cc20 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
1cc40 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 2c 20 0a a\n-------------\n\n".......],..
1cc60 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a ......"cell_type":."markdown",..
1cc80 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 ......"metadata":.{}.....},.....
1cca0 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c .{......."execution_count":.null
1ccc0 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 ,........"cell_type":."code",...
1cce0 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 4c 6f 61 64 ....."source":.[........."#.Load
1cd00 69 6e 67 20 69 6d 61 67 65 73 5c 6e 49 31 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 ing.images\nI1.=.ndimage.imread(
1cd20 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 '../data/ocean_day.jpg').astype(
1cd40 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 5c 6e 49 32 20 3d 20 6e 64 69 6d 61 67 65 2e np.float64)./.256\nI2.=.ndimage.
1cd60 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 imread('../data/ocean_sunset.jpg
1cd80 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 5c 6e 5c 6e 58 ').astype(np.float64)./.256\n\nX
1cda0 31 20 3d 20 69 6d 32 6d 61 74 28 49 31 29 5c 6e 58 32 20 3d 20 69 6d 32 6d 61 74 28 49 32 29 5c 1.=.im2mat(I1)\nX2.=.im2mat(I2)\
1cdc0 6e 5c 6e 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 5c 6e 6e 62 20 3d 20 31 30 30 30 n\n#.training.samples\nnb.=.1000
1cde0 5c 6e 69 64 78 31 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 5d 2c 20 \nidx1.=.r.randint(X1.shape[0],.
1ce00 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 69 64 78 32 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 32 size=(nb,))\nidx2.=.r.randint(X2
1ce20 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 5c 6e 58 73 20 3d 20 58 .shape[0],.size=(nb,))\n\nXs.=.X
1ce40 31 5b 69 64 78 31 2c 20 3a 5d 5c 6e 58 74 20 3d 20 58 32 5b 69 64 78 32 2c 20 3a 5d 22 0a 20 20 1[idx1,.:]\nXt.=.X2[idx2,.:]"...
1ce60 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 ....],........"outputs":.[],....
1ce80 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
1cea0 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 psed":.false.......}.....},.....
1cec0 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c .{......."source":.[........."Pl
1cee0 6f 74 20 6f 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 ot.original.image\n-------------
1cf00 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 65 6c ------\n\n".......],........"cel
1cf20 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 l_type":."markdown",........"met
1cf40 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 adata":.{}.....},......{......."
1cf60 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 execution_count":.null,........"
1cf80 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 cell_type":."code",........"sour
1cfa0 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 69 67 ce":.[........."pl.figure(1,.fig
1cfc0 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 size=(6.4,.3))\n\npl.subplot(1,.
1cfe0 32 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 2,.1)\npl.imshow(I1)\npl.axis('o
1d000 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e ff')\npl.title('Image.1')\n\npl.
1d020 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 5c subplot(1,.2,.2)\npl.imshow(I2)\
1d040 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 6d 61 67 65 npl.axis('off')\npl.title('Image
1d060 20 32 27 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a .2')".......],........"outputs":
1d080 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 20 20 .[],........"metadata":.{.......
1d0a0 20 20 22 63 6f 6c 6c 61 70 73 65 64 22 3a 20 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 .."collapsed":.false.......}....
1d0c0 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 .},......{......."source":.[....
1d0e0 20 20 20 20 20 22 53 63 61 74 74 65 72 20 70 6c 6f 74 20 6f 66 20 63 6f 6c 6f 72 73 5c 6e 2d 2d ....."Scatter.plot.of.colors\n--
1d100 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 20 --------------------\n\n".......
1d120 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e ],........"cell_type":."markdown
1d140 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 ",........"metadata":.{}.....},.
1d160 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":.
1d180 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 null,........"cell_type":."code"
1d1a0 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c ,........"source":.[........."pl
1d1c0 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 33 29 29 5c 6e 5c 6e .figure(2,.figsize=(6.4,.3))\n\n
1d1e0 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 pl.subplot(1,.2,.1)\npl.scatter(
1d200 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 5c 6e 70 6c 2e 61 78 Xs[:,.0],.Xs[:,.2],.c=Xs)\npl.ax
1d220 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 65 6c 28 27 52 65 64 is([0,.1,.0,.1])\npl.xlabel('Red
1d240 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 2e 74 69 74 6c 65 28 ')\npl.ylabel('Blue')\npl.title(
1d260 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 20 32 2c 20 32 'Image.1')\n\npl.subplot(1,.2,.2
1d280 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 32 5d )\npl.scatter(Xt[:,.0],.Xt[:,.2]
1d2a0 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 2c 20 31 5d 29 5c 6e ,.c=Xt)\npl.axis([0,.1,.0,.1])\n
1d2c0 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 pl.xlabel('Red')\npl.ylabel('Blu
1d2e0 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 6e 70 6c 2e 74 69 67 e')\npl.title('Image.2')\npl.tig
1d300 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 ht_layout()".......],........"ou
1d320 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b tputs":.[],........"metadata":.{
1d340 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.....
1d360 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 ..}.....},......{......."source"
1d380 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 64 69 66 :.[........."Instantiate.the.dif
1d3a0 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 6e 64 20 ferent.transport.algorithms.and.
1d3c0 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 2d 2d 2d fit.them\n----------------------
1d3e0 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 --------------------------------
1d400 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 65 6c 6c -----\n\n".......],........"cell
1d420 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 _type":."markdown",........"meta
1d440 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 data":.{}.....},......{......."e
1d460 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 xecution_count":.null,........"c
1d480 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 ell_type":."code",........"sourc
1d4a0 65 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 e":.[........."#.EMDTransport\no
1d4c0 74 5f 65 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e 6f 74 t_emd.=.ot.da.EMDTransport()\not
1d4e0 5f 65 6d 64 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 53 69 6e 6b _emd.fit(Xs=Xs,.Xt=Xt)\n\n#.Sink
1d500 68 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 hornTransport\not_sinkhorn.=.ot.
1d520 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 da.SinkhornTransport(reg_e=1e-1)
1d540 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c \not_sinkhorn.fit(Xs=Xs,.Xt=Xt)\
1d560 6e 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 n\n#.prediction.between.images.(
1d580 75 73 69 6e 67 20 6f 75 74 20 6f 66 20 73 61 6d 70 6c 65 20 70 72 65 64 69 63 74 69 6f 6e 20 61 using.out.of.sample.prediction.a
1d5a0 73 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 s.in.[6])\ntransp_Xs_emd.=.ot_em
1d5c0 64 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 d.transform(Xs=X1)\ntransp_Xt_em
1d5e0 64 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 d.=.ot_emd.inverse_transform(Xt=
1d600 58 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 65 X2)\n\ntransp_Xs_sinkhorn.=.ot_e
1d620 6d 64 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 73 md.transform(Xs=X1)\ntransp_Xt_s
1d640 69 6e 6b 68 6f 72 6e 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 inkhorn.=.ot_emd.inverse_transfo
1d660 72 6d 28 58 74 3d 58 32 29 5c 6e 5c 6e 49 31 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d rm(Xt=X2)\n\nI1t.=.minmax(mat2im
1d680 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 2c 20 49 31 2e 73 68 61 70 65 29 29 5c 6e 49 32 74 20 (transp_Xs_emd,.I1.shape))\nI2t.
1d6a0 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 74 5f 65 6d 64 2c 20 49 =.minmax(mat2im(transp_Xt_emd,.I
1d6c0 32 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 49 31 74 65 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 2.shape))\n\nI1te.=.minmax(mat2i
1d6e0 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 29 m(transp_Xs_sinkhorn,.I1.shape))
1d700 5c 6e 49 32 74 65 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 74 \nI2te.=.minmax(mat2im(transp_Xt
1d720 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 32 2e 73 68 61 70 65 29 29 22 0a 20 20 20 20 20 20 5d 2c 20 _sinkhorn,.I2.shape))".......],.
1d740 0a 20 20 20 20 20 20 22 6f 75 74 70 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 ......."outputs":.[],........"me
1d760 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":.
1d780 66 61 6c 73 65 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 false.......}.....},......{.....
1d7a0 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 6e 65 77 20 .."source":.[........."Plot.new.
1d7c0 69 6d 61 67 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 images\n---------------\n\n"....
1d7e0 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 6d 61 72 6b 64 ...],........"cell_type":."markd
1d800 6f 77 6e 22 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 7d 0a 20 20 20 20 own",........"metadata":.{}.....
1d820 7d 2c 20 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 65 78 65 63 75 74 69 6f 6e 5f 63 6f 75 6e 74 },......{......."execution_count
1d840 22 3a 20 6e 75 6c 6c 2c 20 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a 20 22 63 6f ":.null,........"cell_type":."co
1d860 64 65 22 2c 20 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 de",........"source":.[.........
1d880 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 5c "pl.figure(3,.figsize=(8,.4))\n\
1d8a0 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 28 npl.subplot(2,.3,.1)\npl.imshow(
1d8c0 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
1d8e0 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 5c mage.1')\n\npl.subplot(2,.3,.2)\
1d900 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 5c npl.imshow(I1t)\npl.axis('off')\
1d920 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 6c npl.title('Image.1.Adapt')\n\npl
1d940 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 74 .subplot(2,.3,.3)\npl.imshow(I1t
1d960 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 6d e)\npl.axis('off')\npl.title('Im
1d980 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 6f age.1.Adapt.(reg)')\n\npl.subplo
1d9a0 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 78 t(2,.3,.4)\npl.imshow(I2)\npl.ax
1d9c0 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 6e is('off')\npl.title('Image.2')\n
1d9e0 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 77 \npl.subplot(2,.3,.5)\npl.imshow
1da00 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 28 (I2t)\npl.axis('off')\npl.title(
1da20 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 32 'Image.2.Adapt')\n\npl.subplot(2
1da40 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 69 ,.3,.6)\npl.imshow(I2te)\npl.axi
1da60 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 70 s('off')\npl.title('Image.2.Adap
1da80 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 6e t.(reg)')\npl.tight_layout()\n\n
1daa0 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 2c 20 0a 20 20 20 20 20 20 22 6f 75 74 70 pl.show()".......],........"outp
1dac0 75 74 73 22 3a 20 5b 5d 2c 20 0a 20 20 20 20 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 uts":.[],........"metadata":.{..
1dae0 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.......
1db00 7d 0a 20 20 20 20 7d 0a 20 20 5d 2c 20 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 }.....}...],...."metadata":.{...
1db20 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
1db40 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 32 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 _name":."Python.2",........"name
1db60 22 3a 20 22 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a ":."python2",........"language":
1db80 20 22 70 79 74 68 6f 6e 22 0a 20 20 20 20 7d 2c 20 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f ."python".....},......"language_
1dba0 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 info":.{......."mimetype":."text
1dbc0 2f 78 2d 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 /x-python",........"nbconvert_ex
1dbe0 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 porter":."python",........"name"
1dc00 3a 20 22 70 79 74 68 6f 6e 22 2c 20 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 :."python",........"file_extensi
1dc20 6f 6e 22 3a 20 22 2e 70 79 22 2c 20 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 32 on":.".py",........"version":."2
1dc40 2e 37 2e 31 32 22 2c 20 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a .7.12",........"pygments_lexer":
1dc60 20 22 69 70 79 74 68 6f 6e 32 22 2c 20 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f ."ipython2",........"codemirror_
1dc80 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 32 2c 20 0a mode":.{........."version":.2,..
1dca0 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 0a 20 20 20 20 20 20 ........"name":."ipython".......
1dcc0 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 88 ac 62 }.....}...}.}PK..........-`.L..b
1dce0 ba 81 11 00 00 81 11 00 00 11 00 00 00 00 00 00 00 00 00 00 00 b4 81 00 00 00 00 70 6c 6f 74 5f ...........................plot_
1dd00 67 72 6f 6d 6f 76 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 a7 6e a2 4c ae 38 61 57 gromov.ipynbPK...........n.L.8aW
1dd20 26 14 00 00 26 14 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 b4 81 b0 11 00 00 70 6c 6f 74 5f 57 &...&.....................plot_W
1dd40 44 41 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 18 7f a2 4c aa d3 d6 af 27 23 00 00 DA.ipynbPK.............L....'#..
1dd60 27 23 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 b4 81 02 26 00 00 70 6c 6f 74 5f 67 72 6f 6d 6f '#.................&..plot_gromo
1dd80 76 5f 62 61 72 79 63 65 6e 74 65 72 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 v_barycenter.ipynbPK..........-`
1dda0 cb 4c 17 03 7f 9a 5e 13 00 00 5e 13 00 00 16 00 00 00 00 00 00 00 00 00 00 00 b4 81 63 49 00 00 .L....^...^.................cI..
1ddc0 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 plot_optim_OTreg.ipynbPK........
1dde0 00 00 2d 60 cb 4c d1 72 b5 4d f4 1c 00 00 f4 1c 00 00 12 00 00 00 00 00 00 00 00 00 00 00 b4 81 ..-`.L.r.M......................
1de00 f5 5c 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 64 32 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 .\..plot_otda_d2.ipynbPK........
1de20 00 00 2d 60 cb 4c a9 b8 76 f6 f8 19 00 00 f8 19 00 00 1f 00 00 00 00 00 00 00 00 00 00 00 b4 81 ..-`.L..v.......................
1de40 19 7a 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 73 65 6d 69 5f 73 75 70 65 72 76 69 73 65 64 2e 69 70 .z..plot_otda_semi_supervised.ip
1de60 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 27 4a df 9c 9d 0d 00 00 9d 0d 00 00 10 ynbPK..........-`.L'J...........
1de80 00 00 00 00 00 00 00 00 00 00 00 b4 81 4e 94 00 00 70 6c 6f 74 5f 4f 54 5f 31 44 2e 69 70 79 6e .............N...plot_OT_1D.ipyn
1dea0 62 50 4b 01 02 14 03 14 00 00 00 00 00 33 55 38 4d fe 7f 06 c6 4c 28 00 00 4c 28 00 00 15 00 00 bPK..........3U8M....L(..L(.....
1dec0 00 00 00 00 00 00 00 00 00 b4 81 19 a2 00 00 70 6c 6f 74 5f 73 74 6f 63 68 61 73 74 69 63 2e 69 ...............plot_stochastic.i
1dee0 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 33 55 38 4d 80 1a 80 7c 9f 15 00 00 9f 15 00 00 pynbPK..........3U8M...|........
1df00 18 00 00 00 00 00 00 00 00 00 00 00 b4 81 98 ca 00 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 ..................plot_barycente
1df20 72 5f 31 44 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c cc bf 84 66 2d 18 r_1D.ipynbPK..........-`.L...f-.
1df40 00 00 2d 18 00 00 17 00 00 00 00 00 00 00 00 00 00 00 b4 81 6d e0 00 00 70 6c 6f 74 5f 6f 74 64 ..-.................m...plot_otd
1df60 61 5f 63 6c 61 73 73 65 73 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 33 55 38 4d df a_classes.ipynbPK..........3U8M.
1df80 ba b4 fb aa 10 00 00 aa 10 00 00 17 00 00 00 00 00 00 00 00 00 00 00 b4 81 cf f8 00 00 70 6c 6f .............................plo
1dfa0 74 5f 4f 54 5f 31 44 5f 73 6d 6f 6f 74 68 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 t_OT_1D_smooth.ipynbPK..........
1dfc0 a7 6e a2 4c ee 5d c2 9b 78 18 00 00 78 18 00 00 25 00 00 00 00 00 00 00 00 00 00 00 b4 81 ae 09 .n.L.]..x...x...%...............
1dfe0 01 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 73 5f 69 6d 61 67 65 ..plot_otda_mapping_colors_image
1e000 73 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 33 55 38 4d c7 ed 71 d0 e2 0d 00 00 e2 s.ipynbPK..........3U8M..q......
1e020 0d 00 00 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 69 22 01 00 70 6c 6f 74 5f 66 72 65 65 5f 73 ...".............i"..plot_free_s
1e040 75 70 70 6f 72 74 5f 62 61 72 79 63 65 6e 74 65 72 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 upport_barycenter.ipynbPK.......
1e060 00 00 00 2d 60 cb 4c 3e 1d 30 6f d5 1a 00 00 d5 1a 00 00 16 00 00 00 00 00 00 00 00 00 00 00 b4 ...-`.L>.0o.....................
1e080 81 8b 30 01 00 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 73 5f 4c 32 2e 69 70 79 6e 62 50 4b 01 02 14 ..0..plot_OT_L1_vs_L2.ipynbPK...
1e0a0 03 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 00 00 00 00 00 00 .......-`.L............$........
1e0c0 00 00 00 b4 81 94 4b 01 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 6c 70 5f 76 73 5f 65 ......K..plot_barycenter_lp_vs_e
1e0e0 6e 74 72 6f 70 69 63 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 17 38 53 ntropic.ipynbPK..........-`.L.8S
1e100 24 28 10 00 00 28 10 00 00 18 00 00 00 00 00 00 00 00 00 00 00 b4 81 8f 69 01 00 70 6c 6f 74 5f $(...(..................i..plot_
1e120 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d OT_2D_samples.ipynbPK..........-
1e140 60 cb 4c b5 c3 fd 1f 0a 15 00 00 0a 15 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 b4 81 ed 79 01 `.L...........................y.
1e160 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 6e 62 50 .plot_otda_linear_mapping.ipynbP
1e180 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 49 c5 7b 83 fa 16 00 00 fa 16 00 00 17 00 00 00 00 K..........-`.LI.{..............
1e1a0 00 00 00 00 00 00 00 b4 81 33 8f 01 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 2e 69 .........3...plot_otda_mapping.i
1e1c0 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c e5 eb aa 89 7c 10 00 00 7c 10 00 00 pynbPK..........-`.L....|...|...
1e1e0 16 00 00 00 00 00 00 00 00 00 00 00 b4 81 62 a6 01 00 70 6c 6f 74 5f 63 6f 6d 70 75 74 65 5f 65 ..............b...plot_compute_e
1e200 6d 64 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 f7 56 38 4d 58 b0 17 7b e5 0e 00 00 md.ipynbPK...........V8MX..{....
1e220 e5 0e 00 00 23 00 00 00 00 00 00 00 00 00 00 00 b4 81 12 b7 01 00 70 6c 6f 74 5f 63 6f 6e 76 6f ....#.................plot_convo
1e240 6c 75 74 69 6f 6e 61 6c 5f 62 61 72 79 63 65 6e 74 65 72 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 lutional_barycenter.ipynbPK.....
1e260 00 00 00 00 00 a7 6e a2 4c b3 d8 ae 69 5b 16 00 00 5b 16 00 00 1c 00 00 00 00 00 00 00 00 00 00 ......n.L...i[...[..............
1e280 00 b4 81 38 c6 01 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 ...8...plot_otda_color_images.ip
1e2a0 79 6e 62 50 4b 05 06 00 00 00 00 15 00 15 00 d6 05 00 00 cd dc 01 00 00 00 ynbPK....................