summaryrefslogtreecommitdiff
path: root/docs/source/auto_examples/auto_examples_jupyter.zip
blob: a3a7c29e53a9b07dd79bfdcce0e2f4f6bcb17b5a (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 77 6d 7d 4e 6b b3 7a d2 55 26 00 00 55 26 00 00 15 00 00 00 70 6c 6f 74 5f 73 74 6f 63 ...wm}Nk.z.U&..U&......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 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ############\n##################
a680 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
a6a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 20 44 49 53 ##########################\n.DIS
a6c0 43 52 45 54 45 20 43 41 53 45 3a 5c 6e 5c 6e 20 53 61 6d 70 6c 65 20 74 77 6f 20 64 69 73 63 72 CRETE.CASE:\n\n.Sample.two.discr
a6e0 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 20 63 61 ete.measures.for.the.discrete.ca
a700 73 65 5c 6e 20 2d 2d 2d 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.---------------------------
a720 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 20 44 65 66 69 6e 65 20 32 20 ------------------\n\n.Define.2.
a740 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 70 discrete.measures.a.and.b,.the.p
a760 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 72 oints.where.are.defined.the.sour
a780 63 65 5c 6e 20 61 6e 64 20 74 68 65 20 74 61 72 67 65 74 20 6d 65 61 73 75 72 65 73 20 61 6e 64 ce\n.and.the.target.measures.and
a7a0 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"
a7c0 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
a7e0 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
a800 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"
a820 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..
a840 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":.[],....
a860 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
a880 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
a8a0 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
a8c0 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
a8e0 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
a900 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
a920 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.
a940 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(
a960 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)".......]....
a980 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
a9a0 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":.{},..
a9c0 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
a9e0 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
aa00 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
aa20 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----------------------
aa40 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
aa60 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
aa80 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.
aaa0 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".......].....}
aac0 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
aae0 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
ab00 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
ab20 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.......},.......
ab40 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":.[
ab60 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_
ab80 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
aba0 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
abc0 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.............................
abe0 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
ac00 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)".......].....},...
ac20 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
ac40 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":.{},......."
ac60 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
ac80 53 20 43 41 53 45 3a 5c 6e 5c 6e 53 61 6d 70 6c 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 6d 65 S.CASE:\n\nSample.one.general.me
aca0 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 62 asure.a,.one.discrete.measures.b
acc0 20 66 6f 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 .for.the.semicontinous\ncase\n--
ace0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ad00 2d 2d 2d 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 -----------\n\nDefine.one.genera
ad20 6c 20 6d 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 l.measure.a,.one.discrete.measur
ad40 65 73 20 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 es.b,.the.points.where\nare.defi
ad60 6e 65 64 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 ned.the.source.and.the.target.me
ad80 61 73 75 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 asures.and.finally.the.cost.matr
ada0 69 78 20 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 ix.c.\n\n".......].....},.....{.
adc0 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",......
ade0 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,.......
ae00 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
ae20 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
ae40 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":.[........
ae60 20 22 6e 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 ."n_source.=.7\nn_target.=.4\nre
ae80 67 20 3d 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 g.=.1\nnumItermax.=.1000\nlog.=.
aea0 54 72 75 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 True\n\na.=.ot.utils.unif(n_sour
aec0 63 65 29 5c 6e 62 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 75 6e 69 66 28 6e 5f 74 61 72 67 65 74 29 ce)\nb.=.ot.utils.unif(n_target)
aee0 5c 6e 5c 6e 72 6e 67 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 52 61 6e 64 6f 6d 53 74 61 74 65 28 \n\nrng.=.np.random.RandomState(
af00 30 29 5c 6e 58 5f 73 6f 75 72 63 65 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f 73 6f 75 72 63 0)\nX_source.=.rng.randn(n_sourc
af20 65 2c 20 32 29 5c 6e 59 5f 74 61 72 67 65 74 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f 74 61 e,.2)\nY_target.=.rng.randn(n_ta
af40 72 67 65 74 2c 20 32 29 5c 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 58 5f 73 6f 75 72 63 65 2c 20 rget,.2)\nM.=.ot.dist(X_source,.
af60 59 5f 74 61 72 67 65 74 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a Y_target)".......].....},.....{.
af80 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",..
afa0 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
afc0 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 61 6c 6c 20 74 68 65 20 5c 22 41 53 47 44 5c ce":.[........."Call.the.\"ASGD\
afe0 22 20 6d 65 74 68 6f 64 20 74 6f 20 66 69 6e 64 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 61 74 ".method.to.find.the.transportat
b000 69 6f 6e 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 ion.matrix.in.the.semicontinous\
b020 6e 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 ncase\n-------------------------
b040 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 74 --------------------\n\nDefine.t
b060 68 65 20 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 he.method.\"ASGD\",.call.ot.solv
b080 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 74 68 e_semi_dual_entropic.and.plot.th
b0a0 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 2c 0a e\nresults.\n\n".......].....},.
b0c0 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",
b0e0 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,.
b100 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
b120 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
b140 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":.[..
b160 20 20 20 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 ......."method.=.\"ASGD\"\nasgd_
b180 70 69 2c 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 pi,.log_asgd.=.ot.stochastic.sol
b1a0 76 65 5f 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 ve_semi_dual_entropic(a,.b,.M,.r
b1c0 65 67 2c 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 eg,.method,\n...................
b1e0 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 ................................
b200 20 20 20 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 ........numItermax,.log=log)\npr
b220 69 6e 74 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 int(log_asgd['alpha'],.log_asgd[
b240 27 62 65 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 'beta'])\nprint(asgd_pi)".......
b260 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"
b280 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":.
b2a0 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 43 {},......."source":.[........."C
b2c0 6f 6d 70 61 72 65 20 74 68 65 20 72 65 73 75 6c 74 73 20 77 69 74 68 20 74 68 65 20 53 69 6e 6b ompare.the.results.with.the.Sink
b2e0 68 6f 72 6e 20 61 6c 67 6f 72 69 74 68 6d 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d horn.algorithm\n----------------
b300 2d 2d 2d 2d 2d 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\
b320 6e 43 61 6c 6c 20 74 68 65 20 53 69 6e 6b 68 6f 72 6e 20 61 6c 67 6f 72 69 74 68 6d 20 66 72 6f nCall.the.Sinkhorn.algorithm.fro
b340 6d 20 50 4f 54 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a m.POT\n\n".......].....},.....{.
b360 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",......
b380 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,.......
b3a0 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
b3c0 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
b3e0 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":.[........
b400 20 22 73 69 6e 6b 68 6f 72 6e 5f 70 69 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 20 62 ."sinkhorn_pi.=.ot.sinkhorn(a,.b
b420 2c 20 4d 2c 20 72 65 67 29 5c 6e 70 72 69 6e 74 28 73 69 6e 6b 68 6f 72 6e 5f 70 69 29 22 0a 20 ,.M,.reg)\nprint(sinkhorn_pi)"..
b440 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_
b460 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
b480 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":.[......
b4a0 20 20 20 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 ..."PLOT.TRANSPORTATION.MATRIX\n
b4c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b4e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
b500 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d #############\n\n".......].....}
b520 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
b540 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":.{},....
b560 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 41 47 ..."source":.[........."Plot.SAG
b580 20 72 65 73 75 6c 74 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a .results\n----------------\n\n".
b5a0 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
b5c0 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
b5e0 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":
b600 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...
b620 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":.[],.....
b640 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
b660 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f (4,.figsize=(5,.5))\not.plot.plo
b680 74 31 44 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 t1D_mat(a,.b,.sag_pi,.'semi-dual
b6a0 20 3a 20 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 .:.OT.matrix.SAG')\npl.show()"..
b6c0 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_
b6e0 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
b700 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":.[......
b720 20 20 20 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 ..."Plot.ASGD.results\n---------
b740 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".......].....},....
b760 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",...
b780 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,....
b7a0 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
b7c0 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
b7e0 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":.[.....
b800 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 ...."pl.figure(4,.figsize=(5,.5)
b820 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 61 73 67 64 )\not.plot.plot1D_mat(a,.b,.asgd
b840 5f 70 69 2c 20 27 73 65 6d 69 2d 64 75 61 6c 20 3a 20 4f 54 20 6d 61 74 72 69 78 20 41 53 47 44 _pi,.'semi-dual.:.OT.matrix.ASGD
b860 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 ')\npl.show()".......].....},...
b880 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
b8a0 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":.{},......."
b8c0 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 53 69 6e 6b 68 6f 72 source":.[........."Plot.Sinkhor
b8e0 6e 20 72 65 73 75 6c 74 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d n.results\n---------------------
b900 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".......].....},.....{......
b920 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
b940 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
b960 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
b980 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":.[]
b9a0 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.
b9c0 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c figure(4,.figsize=(5,.5))\not.pl
b9e0 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 73 69 6e 6b 68 6f 72 6e 5f 70 69 2c ot.plot1D_mat(a,.b,.sinkhorn_pi,
ba00 20 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 .'OT.matrix.Sinkhorn')\npl.show(
ba20 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
ba40 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
ba60 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":.[..
ba80 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 4e 20 4d ......."COMPUTE.TRANSPORTATION.M
baa0 41 54 52 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 ATRIX.FOR.DUAL.PROBLEM\n########
bac0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
bae0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
bb00 23 23 23 23 5c 6e 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ####\n##########################
bb20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
bb40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 5c 6e 20 53 45 4d 49 43 4f 4e 54 49 4e 4f ##################\n.SEMICONTINO
bb60 55 53 20 43 41 53 45 3a 5c 6e 5c 6e 20 53 61 6d 70 6c 65 20 6f 6e 65 20 67 65 6e 65 72 61 6c 20 US.CASE:\n\n.Sample.one.general.
bb80 6d 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 measure.a,.one.discrete.measures
bba0 20 62 20 66 6f 72 20 74 68 65 20 73 65 6d 69 63 6f 6e 74 69 6e 6f 75 73 5c 6e 20 63 61 73 65 5c .b.for.the.semicontinous\n.case\
bbc0 6e 20 2d 2d 2d 2d 2d 2d 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.------------------------------
bbe0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 20 44 65 66 69 6e 65 20 6f 6e 65 20 67 ---------------\n\n.Define.one.g
bc00 65 6e 65 72 61 6c 20 6d 65 61 73 75 72 65 20 61 2c 20 6f 6e 65 20 64 69 73 63 72 65 74 65 20 6d eneral.measure.a,.one.discrete.m
bc20 65 61 73 75 72 65 73 20 62 2c 20 74 68 65 20 70 6f 69 6e 74 73 20 77 68 65 72 65 5c 6e 20 61 72 easures.b,.the.points.where\n.ar
bc40 65 20 64 65 66 69 6e 65 64 20 74 68 65 20 73 6f 75 72 63 65 20 61 6e 64 20 74 68 65 20 74 61 72 e.defined.the.source.and.the.tar
bc60 67 65 74 20 6d 65 61 73 75 72 65 73 20 61 6e 64 20 66 69 6e 61 6c 6c 79 20 74 68 65 20 63 6f 73 get.measures.and.finally.the.cos
bc80 74 20 6d 61 74 72 69 78 20 63 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a t.matrix.c.\n\n".......].....},.
bca0 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",
bcc0 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,.
bce0 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
bd00 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
bd20 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":.[..
bd40 20 20 20 20 20 20 20 22 6e 5f 73 6f 75 72 63 65 20 3d 20 37 5c 6e 6e 5f 74 61 72 67 65 74 20 3d ......."n_source.=.7\nn_target.=
bd60 20 34 5c 6e 72 65 67 20 3d 20 31 5c 6e 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 30 30 30 30 .4\nreg.=.1\nnumItermax.=.100000
bd80 5c 6e 6c 72 20 3d 20 30 2e 31 5c 6e 62 61 74 63 68 5f 73 69 7a 65 20 3d 20 33 5c 6e 6c 6f 67 20 \nlr.=.0.1\nbatch_size.=.3\nlog.
bda0 3d 20 54 72 75 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 =.True\n\na.=.ot.utils.unif(n_so
bdc0 75 72 63 65 29 5c 6e 62 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 75 6e 69 66 28 6e 5f 74 61 72 67 65 urce)\nb.=.ot.utils.unif(n_targe
bde0 74 29 5c 6e 5c 6e 72 6e 67 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 52 61 6e 64 6f 6d 53 74 61 74 t)\n\nrng.=.np.random.RandomStat
be00 65 28 30 29 5c 6e 58 5f 73 6f 75 72 63 65 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f 73 6f 75 e(0)\nX_source.=.rng.randn(n_sou
be20 72 63 65 2c 20 32 29 5c 6e 59 5f 74 61 72 67 65 74 20 3d 20 72 6e 67 2e 72 61 6e 64 6e 28 6e 5f rce,.2)\nY_target.=.rng.randn(n_
be40 74 61 72 67 65 74 2c 20 32 29 5c 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 58 5f 73 6f 75 72 63 65 target,.2)\nM.=.ot.dist(X_source
be60 2c 20 59 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 ,.Y_target)".......].....},.....
be80 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",
bea0 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
bec0 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 61 6c 6c 20 74 68 65 20 5c 22 53 47 44 urce":.[........."Call.the.\"SGD
bee0 5c 22 20 64 75 61 6c 20 6d 65 74 68 6f 64 20 74 6f 20 66 69 6e 64 20 74 68 65 20 74 72 61 6e 73 \".dual.method.to.find.the.trans
bf00 70 6f 72 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 20 69 6e 20 74 68 65 5c 6e 73 65 6d 69 63 6f 6e portation.matrix.in.the\nsemicon
bf20 74 69 6e 6f 75 73 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 tinous.case\n-------------------
bf40 2d 2d 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
bf60 6c 6c 20 6f 74 2e 73 6f 6c 76 65 5f 64 75 61 6c 5f 65 6e 74 72 6f 70 69 63 20 61 6e 64 20 70 6c ll.ot.solve_dual_entropic.and.pl
bf80 6f 74 20 74 68 65 20 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 ot.the.results.\n\n".......]....
bfa0 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
bfc0 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
bfe0 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":.{.........
c000 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.......},.....
c020 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":
c040 20 5b 0a 20 20 20 20 20 20 20 20 22 73 67 64 5f 64 75 61 6c 5f 70 69 2c 20 6c 6f 67 5f 73 67 64 .[........."sgd_dual_pi,.log_sgd
c060 20 3d 20 6f 74 2e 73 74 6f 63 68 61 73 74 69 63 2e 73 6f 6c 76 65 5f 64 75 61 6c 5f 65 6e 74 72 .=.ot.stochastic.solve_dual_entr
c080 6f 70 69 63 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 opic(a,.b,.M,.reg,\n............
c0a0 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 ................................
c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 74 63 68 5f 73 69 7a 65 2c 20 6e 75 6d 49 74 65 72 .............batch_size,.numIter
c0e0 6d 61 78 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 max,\n..........................
c100 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 6c ...............................l
c120 72 2c 20 6c 6f 67 3d 6c 6f 67 29 5c 6e 70 72 69 6e 74 28 6c 6f 67 5f 73 67 64 5b 27 61 6c 70 68 r,.log=log)\nprint(log_sgd['alph
c140 61 27 5d 2c 20 6c 6f 67 5f 73 67 64 5b 27 62 65 74 61 27 5d 29 5c 6e 70 72 69 6e 74 28 73 67 64 a'],.log_sgd['beta'])\nprint(sgd
c160 5f 64 75 61 6c 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 _dual_pi)".......].....},.....{.
c180 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",..
c1a0 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
c1c0 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 43 6f 6d 70 61 72 65 20 74 68 65 20 72 65 73 75 ce":.[........."Compare.the.resu
c1e0 6c 74 73 20 77 69 74 68 20 74 68 65 20 53 69 6e 6b 68 6f 72 6e 20 61 6c 67 6f 72 69 74 68 6d 5c lts.with.the.Sinkhorn.algorithm\
c200 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-------------------------------
c220 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 43 61 6c 6c 20 74 68 65 20 53 69 6e 6b 68 --------------\n\nCall.the.Sinkh
c240 6f 72 6e 20 61 6c 67 6f 72 69 74 68 6d 20 66 72 6f 6d 20 50 4f 54 5c 6e 5c 6e 22 0a 20 20 20 20 orn.algorithm.from.POT\n\n".....
c260 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
c280 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
c2a0 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":.{..
c2c0 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.......
c2e0 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
c300 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 73 69 6e 6b 68 6f 72 6e 5f 70 69 20 3d ource":.[........."sinkhorn_pi.=
c320 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 29 5c 6e 70 72 69 6e .ot.sinkhorn(a,.b,.M,.reg)\nprin
c340 74 28 73 69 6e 6b 68 6f 72 6e 5f 70 69 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 t(sinkhorn_pi)".......].....},..
c360 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
c380 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":.{},.......
c3a0 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 20 53 47 44 20 72 "source":.[........."Plot..SGD.r
c3c0 65 73 75 6c 74 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 esults\n-----------------\n\n"..
c3e0 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_
c400 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_
c420 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":.
c440 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....
c460 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":.[],......
c480 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(
c4a0 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 4,.figsize=(5,.5))\not.plot.plot
c4c0 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 73 67 64 5f 64 75 61 6c 5f 70 69 2c 20 27 64 75 61 6c 20 1D_mat(a,.b,.sgd_dual_pi,.'dual.
c4e0 3a 20 4f 54 20 6d 61 74 72 69 78 20 53 47 44 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 :.OT.matrix.SGD')\npl.show()"...
c500 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
c520 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
c540 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":.[.......
c560 20 20 22 50 6c 6f 74 20 53 69 6e 6b 68 6f 72 6e 20 72 65 73 75 6c 74 73 5c 6e 2d 2d 2d 2d 2d 2d .."Plot.Sinkhorn.results\n------
c580 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".......]....
c5a0 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
c5c0 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
c5e0 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":.{.........
c600 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.......},.....
c620 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":
c640 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 .[........."pl.figure(4,.figsize
c660 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 =(5,.5))\not.plot.plot1D_mat(a,.
c680 62 2c 20 73 69 6e 6b 68 6f 72 6e 5f 70 69 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 b,.sinkhorn_pi,.'OT.matrix.Sinkh
c6a0 6f 72 6e 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a orn')\npl.show()".......].....}.
c6c0 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 6c ..],..."metadata":.{....."kernel
c6e0 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 22 spec":.{......."display_name":."
c700 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 79 Python.3",......."language":."py
c720 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 20 thon",......."name":."python3"..
c740 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 20 ...},....."language_info":.{....
c760 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 ..."codemirror_mode":.{.........
c780 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 73 "name":."ipython",........."vers
c7a0 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 74 ion":.3.......},......."file_ext
c7c0 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 22 ension":.".py",......."mimetype"
c7e0 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 3a :."text/x-python",......."name":
c800 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 6f ."python",......."nbconvert_expo
c820 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 73 rter":."python",......."pygments
c840 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 73 _lexer":."ipython3",......."vers
c860 69 6f 6e 22 3a 20 22 33 2e 36 2e 37 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f ion":."3.6.7".....}...},..."nbfo
c880 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 0a rmat":.4,..."nbformat_minor":.0.
c8a0 7d 50 4b 03 04 14 00 00 00 00 00 ec 45 43 4d 80 1a 80 7c 9f 15 00 00 9f 15 00 00 18 00 00 00 70 }PK.........ECM...|............p
c8c0 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 31 44 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c lot_barycenter_1D.ipynb{..."cell
c8e0 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":."
c900 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":.
c920 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":.{.......
c940 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.......},...
c960 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
c980 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
c9a0 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
c9c0 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
c9e0 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":.[...
ca00 20 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 ......"\n#.1D.Wasserstein.baryce
ca20 6e 74 65 72 20 64 65 6d 6f 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 nter.demo\n\n\nThis.example.illu
ca40 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 72 65 67 75 6c strates.the.computation.of.regul
ca60 61 72 69 7a 65 64 20 57 61 73 73 65 72 73 79 65 69 6e 20 42 61 72 79 63 65 6e 74 65 72 5c 6e 61 arized.Wassersyein.Barycenter\na
ca80 73 20 70 72 6f 70 6f 73 65 64 20 69 6e 20 5b 33 5d 2e 5c 6e 5c 6e 5c 6e 5b 33 5d 20 42 65 6e 61 s.proposed.in.[3].\n\n\n[3].Bena
caa0 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 74 75 72 69 2c mou,.J..D.,.Carlier,.G.,.Cuturi,
cac0 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 39 2c 20 47 2e .M.,.Nenna,.L.,.&.Peyr\u00e9,.G.
cae0 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 20 70 72 6f 6a .(2015).\nIterative.Bregman.proj
cb00 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 6e 73 70 6f 72 ections.for.regularized.transpor
cb20 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 61 6c 20 6f 6e tation.problems\nSIAM.Journal.on
cb40 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 29 2c 20 41 31 .Scientific.Computing,.37(2),.A1
cb60 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 20 20 20 7d 2c 111-A1138.\n\n\n".......].....},
cb80 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"
cba0 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,
cbc0 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
cbe0 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.......},......."
cc00 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":.[.
cc20 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 6d 61 72 79 20 ........"#.Author:.Remi.Flamary.
cc40 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 6e 23 20 4c 69 <remi.flamary@unice.fr>\n#\n#.Li
cc60 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 6e 75 6d cense:.MIT.License\n\nimport.num
cc80 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 py.as.np\nimport.matplotlib.pyla
cca0 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 73 61 72 79 20 b.as.pl\nimport.ot\n#.necessary.
ccc0 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 64 5c 6e 66 72 for.3d.plot.even.if.not.used\nfr
cce0 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 6f 72 74 20 41 om.mpl_toolkits.mplot3d.import.A
cd00 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 6c 69 62 2e 63 xes3D..#.noqa\nfrom.matplotlib.c
cd20 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 63 74 69 6f 6e ollections.import.PolyCollection
cd40 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
cd60 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
cd80 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":.[...
cda0 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----------
cdc0 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".......].....},.....{...
cde0 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",......."
ce00 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
ce20 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":
ce40 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":
ce60 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":.[........."
ce80 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.
cea0 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.
cec0 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#
cee0 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 61 31 20 3d 20 6f 74 .Gaussian.distributions\na1.=.ot
cf00 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c .datasets.make_1D_gauss(n,.m=20,
cf20 20 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 5c 6e 61 32 20 3d 20 6f .s=5)..#.m=.mean,.s=.std\na2.=.o
cf40 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 t.datasets.make_1D_gauss(n,.m=60
cf60 2c 20 73 3d 38 29 5c 6e 5c 6e 23 20 63 72 65 61 74 69 6e 67 20 6d 61 74 72 69 78 20 41 20 63 6f ,.s=8)\n\n#.creating.matrix.A.co
cf80 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 41 20 3d 20 ntaining.all.distributions\nA.=.
cfa0 6e 70 2e 76 73 74 61 63 6b 28 28 61 31 2c 20 61 32 29 29 2e 54 5c 6e 6e 5f 64 69 73 74 72 69 62 np.vstack((a1,.a2)).T\nn_distrib
cfc0 75 74 69 6f 6e 73 20 3d 20 41 2e 73 68 61 70 65 5b 31 5d 5c 6e 5c 6e 23 20 6c 6f 73 73 20 6d 61 utions.=.A.shape[1]\n\n#.loss.ma
cfe0 74 72 69 78 20 2b 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 5c 6e 4d 20 3d 20 6f 74 2e 75 74 69 trix.+.normalization\nM.=.ot.uti
d000 6c 73 2e 64 69 73 74 30 28 6e 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 22 0a 20 20 20 20 20 ls.dist0(n)\nM./=.M.max()"......
d020 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
d040 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":
d060 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":.[........."
d080 50 6c 6f 74 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 Plot.data\n---------\n\n".......
d0a0 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"
d0c0 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
d0e0 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":.{....
d100 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.......},
d120 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
d140 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
d160 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
d180 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 6e 5f ize=(6.4,.3))\nfor.i.in.range(n_
d1a0 64 69 73 74 72 69 62 75 74 69 6f 6e 73 29 3a 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 distributions):\n....pl.plot(x,.
d1c0 41 5b 3a 2c 20 69 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f 6e A[:,.i])\npl.title('Distribution
d1e0 73 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a s')\npl.tight_layout()".......].
d200 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":.
d220 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":.{}
d240 2c 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 42 61 72 ,......."source":.[........."Bar
d260 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ycenter.computation\n-----------
d280 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".......].....},.
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 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 ......."#%%.barycenter.computati
d360 6f 6e 5c 6e 5c 6e 61 6c 70 68 61 20 3d 20 30 2e 32 20 20 23 20 30 3c 3d 61 6c 70 68 61 3c 3d 31 on\n\nalpha.=.0.2..#.0<=alpha<=1
d380 5c 6e 77 65 69 67 68 74 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 31 20 2d 20 61 6c 70 68 61 2c \nweights.=.np.array([1.-.alpha,
d3a0 20 61 6c 70 68 61 5d 29 5c 6e 5c 6e 23 20 6c 32 62 61 72 79 5c 6e 62 61 72 79 5f 6c 32 20 3d 20 .alpha])\n\n#.l2bary\nbary_l2.=.
d3c0 41 2e 64 6f 74 28 77 65 69 67 68 74 73 29 5c 6e 5c 6e 23 20 77 61 73 73 65 72 73 74 65 69 6e 5c A.dot(weights)\n\n#.wasserstein\
d3e0 6e 72 65 67 20 3d 20 31 65 2d 33 5c 6e 62 61 72 79 5f 77 61 73 73 20 3d 20 6f 74 2e 62 72 65 67 nreg.=.1e-3\nbary_wass.=.ot.breg
d400 6d 61 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 man.barycenter(A,.M,.reg,.weight
d420 73 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 5c 6e 70 6c s)\n\npl.figure(2)\npl.clf()\npl
d440 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 31 29 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 .subplot(2,.1,.1)\nfor.i.in.rang
d460 65 28 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 29 3a 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 e(n_distributions):\n....pl.plot
d480 28 78 2c 20 41 5b 3a 2c 20 69 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 (x,.A[:,.i])\npl.title('Distribu
d4a0 74 69 6f 6e 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 32 29 5c 6e tions')\n\npl.subplot(2,.1,.2)\n
d4c0 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 6c 32 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 pl.plot(x,.bary_l2,.'r',.label='
d4e0 6c 32 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 73 73 2c 20 27 67 27 2c l2')\npl.plot(x,.bary_wass,.'g',
d500 20 6c 61 62 65 6c 3d 27 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 .label='Wasserstein')\npl.legend
d520 28 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 73 27 29 5c 6e 70 6c 2e ()\npl.title('Barycenters')\npl.
d540 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 tight_layout()".......].....},..
d560 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
d580 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":.{},.......
d5a0 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 42 61 72 79 63 65 6e 74 72 69 63 "source":.[........."Barycentric
d5c0 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .interpolation\n----------------
d5e0 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".......].....},...
d600 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",..
d620 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,...
d640 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
d660 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
d680 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":.[....
d6a0 20 20 20 20 20 22 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 69 6e 74 65 72 70 6f 6c 61 74 69 ....."#%%.barycenter.interpolati
d6c0 6f 6e 5c 6e 5c 6e 6e 5f 61 6c 70 68 61 20 3d 20 31 31 5c 6e 61 6c 70 68 61 5f 6c 69 73 74 20 3d on\n\nn_alpha.=.11\nalpha_list.=
d6e0 20 6e 70 2e 6c 69 6e 73 70 61 63 65 28 30 2c 20 31 2c 20 6e 5f 61 6c 70 68 61 29 5c 6e 5c 6e 5c .np.linspace(0,.1,.n_alpha)\n\n\
d700 6e 42 5f 6c 32 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 20 6e 5f 61 6c 70 68 61 29 29 5c 6e nB_l2.=.np.zeros((n,.n_alpha))\n
d720 5c 6e 42 5f 77 61 73 73 20 3d 20 6e 70 2e 63 6f 70 79 28 42 5f 6c 32 29 5c 6e 5c 6e 66 6f 72 20 \nB_wass.=.np.copy(B_l2)\n\nfor.
d740 69 20 69 6e 20 72 61 6e 67 65 28 30 2c 20 6e 5f 61 6c 70 68 61 29 3a 5c 6e 20 20 20 20 61 6c 70 i.in.range(0,.n_alpha):\n....alp
d760 68 61 20 3d 20 61 6c 70 68 61 5f 6c 69 73 74 5b 69 5d 5c 6e 20 20 20 20 77 65 69 67 68 74 73 20 ha.=.alpha_list[i]\n....weights.
d780 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 6e =.np.array([1.-.alpha,.alpha])\n
d7a0 20 20 20 20 42 5f 6c 32 5b 3a 2c 20 69 5d 20 3d 20 41 2e 64 6f 74 28 77 65 69 67 68 74 73 29 5c ....B_l2[:,.i].=.A.dot(weights)\
d7c0 6e 20 20 20 20 42 5f 77 61 73 73 5b 3a 2c 20 69 5d 20 3d 20 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 n....B_wass[:,.i].=.ot.bregman.b
d7e0 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 5c arycenter(A,.M,.reg,.weights)\n\
d800 6e 23 25 25 20 70 6c 6f 74 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 5c 6e 5c 6e 70 6c 2e 66 69 n#%%.plot.interpolation\n\npl.fi
d820 67 75 72 65 28 33 29 5c 6e 5c 6e 63 6d 61 70 20 3d 20 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 70 gure(3)\n\ncmap.=.pl.cm.get_cmap
d840 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 6c ('viridis')\nverts.=.[]\nzs.=.al
d860 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 28 pha_list\nfor.i,.z.in.enumerate(
d880 7a 73 29 3a 5c 6e 20 20 20 20 79 73 20 3d 20 42 5f 6c 32 5b 3a 2c 20 69 5d 5c 6e 20 20 20 20 76 zs):\n....ys.=.B_l2[:,.i]\n....v
d8a0 65 72 74 73 2e 61 70 70 65 6e 64 28 6c 69 73 74 28 7a 69 70 28 78 2c 20 79 73 29 29 29 5c 6e 5c erts.append(list(zip(x,.ys)))\n\
d8c0 6e 61 78 20 3d 20 70 6c 2e 67 63 66 28 29 2e 67 63 61 28 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 nax.=.pl.gcf().gca(projection='3
d8e0 64 27 29 5c 6e 5c 6e 70 6f 6c 79 20 3d 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 28 76 65 72 d')\n\npoly.=.PolyCollection(ver
d900 74 73 2c 20 66 61 63 65 63 6f 6c 6f 72 73 3d 5b 63 6d 61 70 28 61 29 20 66 6f 72 20 61 20 69 6e ts,.facecolors=[cmap(a).for.a.in
d920 20 61 6c 70 68 61 5f 6c 69 73 74 5d 29 5c 6e 70 6f 6c 79 2e 73 65 74 5f 61 6c 70 68 61 28 30 2e .alpha_list])\npoly.set_alpha(0.
d940 37 29 5c 6e 61 78 2e 61 64 64 5f 63 6f 6c 6c 65 63 74 69 6f 6e 33 64 28 70 6f 6c 79 2c 20 7a 73 7)\nax.add_collection3d(poly,.zs
d960 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 5c 6e 61 78 2e 73 65 74 5f 78 6c 61 62 65 6c 28 27 78 =zs,.zdir='y')\nax.set_xlabel('x
d980 27 29 5c 6e 61 78 2e 73 65 74 5f 78 6c 69 6d 33 64 28 30 2c 20 6e 29 5c 6e 61 78 2e 73 65 74 5f ')\nax.set_xlim3d(0,.n)\nax.set_
d9a0 79 6c 61 62 65 6c 28 27 24 5c 5c 5c 5c 61 6c 70 68 61 24 27 29 5c 6e 61 78 2e 73 65 74 5f 79 6c ylabel('$\\\\alpha$')\nax.set_yl
d9c0 69 6d 33 64 28 30 2c 20 31 29 5c 6e 61 78 2e 73 65 74 5f 7a 6c 61 62 65 6c 28 27 27 29 5c 6e 61 im3d(0,.1)\nax.set_zlabel('')\na
d9e0 78 2e 73 65 74 5f 7a 6c 69 6d 33 64 28 30 2c 20 42 5f 6c 32 2e 6d 61 78 28 29 20 2a 20 31 2e 30 x.set_zlim3d(0,.B_l2.max().*.1.0
da00 31 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 20 69 6e 74 65 72 70 6f 1)\npl.title('Barycenter.interpo
da20 6c 61 74 69 6f 6e 20 77 69 74 68 20 6c 32 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 lation.with.l2')\npl.tight_layou
da40 74 28 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 29 5c 6e 63 6d 61 70 20 3d 20 70 6c 2e 63 t()\n\npl.figure(4)\ncmap.=.pl.c
da60 6d 2e 67 65 74 5f 63 6d 61 70 28 27 76 69 72 69 64 69 73 27 29 5c 6e 76 65 72 74 73 20 3d 20 5b m.get_cmap('viridis')\nverts.=.[
da80 5d 5c 6e 7a 73 20 3d 20 61 6c 70 68 61 5f 6c 69 73 74 5c 6e 66 6f 72 20 69 2c 20 7a 20 69 6e 20 ]\nzs.=.alpha_list\nfor.i,.z.in.
daa0 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a 5c 6e 20 20 20 20 79 73 20 3d 20 42 5f 77 61 73 73 5b enumerate(zs):\n....ys.=.B_wass[
dac0 3a 2c 20 69 5d 5c 6e 20 20 20 20 76 65 72 74 73 2e 61 70 70 65 6e 64 28 6c 69 73 74 28 7a 69 70 :,.i]\n....verts.append(list(zip
dae0 28 78 2c 20 79 73 29 29 29 5c 6e 5c 6e 61 78 20 3d 20 70 6c 2e 67 63 66 28 29 2e 67 63 61 28 70 (x,.ys)))\n\nax.=.pl.gcf().gca(p
db00 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 5c 6e 5c 6e 70 6f 6c 79 20 3d 20 50 6f 6c 79 43 6f rojection='3d')\n\npoly.=.PolyCo
db20 6c 6c 65 63 74 69 6f 6e 28 76 65 72 74 73 2c 20 66 61 63 65 63 6f 6c 6f 72 73 3d 5b 63 6d 61 70 llection(verts,.facecolors=[cmap
db40 28 61 29 20 66 6f 72 20 61 20 69 6e 20 61 6c 70 68 61 5f 6c 69 73 74 5d 29 5c 6e 70 6f 6c 79 2e (a).for.a.in.alpha_list])\npoly.
db60 73 65 74 5f 61 6c 70 68 61 28 30 2e 37 29 5c 6e 61 78 2e 61 64 64 5f 63 6f 6c 6c 65 63 74 69 6f set_alpha(0.7)\nax.add_collectio
db80 6e 33 64 28 70 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 5c 6e 61 78 2e 73 n3d(poly,.zs=zs,.zdir='y')\nax.s
dba0 65 74 5f 78 6c 61 62 65 6c 28 27 78 27 29 5c 6e 61 78 2e 73 65 74 5f 78 6c 69 6d 33 64 28 30 2c et_xlabel('x')\nax.set_xlim3d(0,
dbc0 20 6e 29 5c 6e 61 78 2e 73 65 74 5f 79 6c 61 62 65 6c 28 27 24 5c 5c 5c 5c 61 6c 70 68 61 24 27 .n)\nax.set_ylabel('$\\\\alpha$'
dbe0 29 5c 6e 61 78 2e 73 65 74 5f 79 6c 69 6d 33 64 28 30 2c 20 31 29 5c 6e 61 78 2e 73 65 74 5f 7a )\nax.set_ylim3d(0,.1)\nax.set_z
dc00 6c 61 62 65 6c 28 27 27 29 5c 6e 61 78 2e 73 65 74 5f 7a 6c 69 6d 33 64 28 30 2c 20 42 5f 6c 32 label('')\nax.set_zlim3d(0,.B_l2
dc20 2e 6d 61 78 28 29 20 2a 20 31 2e 30 31 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 .max().*.1.01)\npl.title('Baryce
dc40 6e 74 65 72 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 77 69 74 68 20 57 61 73 73 65 72 73 74 nter.interpolation.with.Wasserst
dc60 65 69 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 ein')\npl.tight_layout()\n\npl.s
dc80 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 how()".......].....}...],..."met
dca0 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 adata":.{....."kernelspec":.{...
dcc0 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a ...."display_name":."Python.3",.
dce0 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 ......"language":."python",.....
dd00 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 .."name":."python3".....},....."
dd20 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 language_info":.{......."codemir
dd40 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 ror_mode":.{........."name":."ip
dd60 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 ython",........."version":.3....
dd80 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e ...},......."file_extension":.".
dda0 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 py",......."mimetype":."text/x-p
ddc0 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a ython",......."name":."python",.
dde0 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 ......"nbconvert_exporter":."pyt
de00 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 hon",......."pygments_lexer":."i
de20 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e python3",......."version":."3.6.
de40 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 0a 20 5".....}...},..."nbformat":.4,..
de60 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 ."nbformat_minor":.0.}PK........
de80 2d 60 cb 4c cc bf 84 66 2d 18 00 00 2d 18 00 00 17 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 63 6c -`.L...f-...-.......plot_otda_cl
dea0 61 73 73 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a asses.ipynb{..."cells":.[.....{.
dec0 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",......
dee0 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,.......
df00 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
df20 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
df40 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":.[........
df60 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 ."%matplotlib.inline".......]...
df80 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
dfa0 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":.{},.
dfc0 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
dfe0 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 5c 6e 5c 6e 5c 6e 54 68 69 T.for.domain.adaptation\n\n\nThi
e000 73 20 65 78 61 6d 70 6c 65 20 69 6e 74 72 6f 64 75 63 65 73 20 61 20 64 6f 6d 61 69 6e 20 61 64 s.example.introduces.a.domain.ad
e020 61 70 74 61 74 69 6f 6e 20 69 6e 20 61 20 32 44 20 73 65 74 74 69 6e 67 20 61 6e 64 20 74 68 65 aptation.in.a.2D.setting.and.the
e040 20 34 20 4f 54 44 41 5c 6e 61 70 70 72 6f 61 63 68 65 73 20 63 75 72 72 65 6e 74 6c 79 20 73 75 .4.OTDA\napproaches.currently.su
e060 70 70 6f 72 74 65 64 20 69 6e 20 50 4f 54 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 pported.in.POT.\n\n\n".......]..
e080 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":."
e0a0 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":.
e0c0 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":.{.......
e0e0 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.......},...
e100 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
e120 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 46 6c ":.[........."#.Authors:.Remi.Fl
e140 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#
e160 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 74 61 ..........Stanislas.Chambon.<sta
e180 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 65 6e n.chambon@gmail.com>\n#\n#.Licen
e1a0 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f se:.MIT.License\n\nimport.matplo
e1c0 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 22 0a 20 20 20 tlib.pylab.as.pl\nimport.ot"....
e1e0 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
e200 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
e220 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":.[........
e240 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 5c 6e ."Generate.data\n-------------\n
e260 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".......].....},.....{......."
e280 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
e2a0 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
e2c0 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
e2e0 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":.[],.
e300 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6e 5f 73 6f 75 ......"source":.[........."n_sou
e320 72 63 65 5f 73 61 6d 70 6c 65 73 20 3d 20 31 35 30 5c 6e 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 rce_samples.=.150\nn_target_samp
e340 6c 65 73 20 3d 20 31 35 30 5c 6e 5c 6e 58 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 les.=.150\n\nXs,.ys.=.ot.dataset
e360 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 27 2c 20 6e 5f s.make_data_classif('3gauss',.n_
e380 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 29 5c 6e 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 source_samples)\nXt,.yt.=.ot.dat
e3a0 61 73 65 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 asets.make_data_classif('3gauss2
e3c0 27 2c 20 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 6c 65 73 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 ',.n_target_samples)".......]...
e3e0 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
e400 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":.{},.
e420 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 ......"source":.[........."Insta
e440 6e 74 69 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 61 ntiate.the.different.transport.a
e460 6c 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 lgorithms.and.fit.them\n--------
e480 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
e4a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d -------------------\n\n".......]
e4c0 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":
e4e0 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"
e500 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":.{.....
e520 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.......},.
e540 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
e560 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 45 4d 44 20 54 72 61 6e 73 70 6f 72 74 5c ce":.[........."#.EMD.Transport\
e580 6e 6f 74 5f 65 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e not_emd.=.ot.da.EMDTransport()\n
e5a0 6f 74 5f 65 6d 64 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 53 69 ot_emd.fit(Xs=Xs,.Xt=Xt)\n\n#.Si
e5c0 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 nkhorn.Transport\not_sinkhorn.=.
e5e0 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 ot.da.SinkhornTransport(reg_e=1e
e600 2d 31 29 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 -1)\not_sinkhorn.fit(Xs=Xs,.Xt=X
e620 74 29 5c 6e 5c 6e 23 20 53 69 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 t)\n\n#.Sinkhorn.Transport.with.
e640 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 6f 74 5f 6c Group.lasso.regularization\not_l
e660 70 6c 31 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 pl1.=.ot.da.SinkhornLpl1Transpor
e680 74 28 72 65 67 5f 65 3d 31 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 31 65 30 29 5c 6e 6f 74 5f 6c 70 t(reg_e=1e-1,.reg_cl=1e0)\not_lp
e6a0 6c 31 2e 66 69 74 28 58 73 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 l1.fit(Xs=Xs,.ys=ys,.Xt=Xt)\n\n#
e6c0 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
e6e0 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 6c 31 6c 32 5c 6e 6f 74 5f 6c 31 6c asso.regularization.l1l2\not_l1l
e700 32 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 61 6e 73 70 6f 72 74 28 2.=.ot.da.SinkhornL1l2Transport(
e720 72 65 67 5f 65 3d 31 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 32 65 30 2c 20 6d 61 78 5f 69 74 65 72 reg_e=1e-1,.reg_cl=2e0,.max_iter
e740 3d 32 30 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,\n..........................
e760 20 20 20 20 20 20 20 20 20 20 20 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f 74 5f 6c 31 ............verbose=True)\not_l1
e780 6c 32 2e 66 69 74 28 58 73 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 l2.fit(Xs=Xs,.ys=ys,.Xt=Xt)\n\n#
e7a0 20 74 72 61 6e 73 70 6f 72 74 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 20 6f 6e 74 6f 20 74 .transport.source.samples.onto.t
e7c0 61 72 67 65 74 20 73 61 6d 70 6c 65 73 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f arget.samples\ntransp_Xs_emd.=.o
e7e0 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 t_emd.transform(Xs=Xs)\ntransp_X
e800 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 74 72 61 6e 73 66 6f s_sinkhorn.=.ot_sinkhorn.transfo
e820 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 20 3d 20 6f 74 5f 6c rm(Xs=Xs)\ntransp_Xs_lpl1.=.ot_l
e840 70 6c 31 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f pl1.transform(Xs=Xs)\ntransp_Xs_
e860 6c 31 6c 32 20 3d 20 6f 74 5f 6c 31 6c 32 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 22 l1l2.=.ot_l1l2.transform(Xs=Xs)"
e880 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
e8a0 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
e8c0 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":.[....
e8e0 20 20 20 20 20 22 46 69 67 20 31 20 3a 20 70 6c 6f 74 73 20 73 6f 75 72 63 65 20 61 6e 64 20 74 ....."Fig.1.:.plots.source.and.t
e900 61 72 67 65 74 20 73 61 6d 70 6c 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d arget.samples\n-----------------
e920 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".....
e940 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
e960 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
e980 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":.{..
e9a0 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.......
e9c0 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
e9e0 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,.
ea00 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 35 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 figsize=(10,.5))\npl.subplot(1,.
ea20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2,.1)\npl.scatter(Xs[:,.0],.Xs[:
ea40 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 ,.1],.c=ys,.marker='+',.label='S
ea60 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e ource.samples')\npl.xticks([])\n
ea80 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c pl.yticks([])\npl.legend(loc=0)\
eaa0 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e npl.title('Source..samples')\n\n
eac0 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 pl.subplot(1,.2,.2)\npl.scatter(
eae0 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
eb00 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 ='o',.label='Target.samples')\np
eb20 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e l.xticks([])\npl.yticks([])\npl.
eb40 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 67 65 74 20 legend(loc=0)\npl.title('Target.
eb60 73 61 6d 70 6c 65 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 samples')\npl.tight_layout()"...
eb80 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
eba0 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
ebc0 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":.[.......
ebe0 20 20 22 46 69 67 20 32 20 3a 20 70 6c 6f 74 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 .."Fig.2.:.plot.optimal.coupling
ec00 73 20 61 6e 64 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 2d 2d 2d 2d 2d s.and.transported.samples\n-----
ec20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
ec40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 -----------------\n\n".......]..
ec60 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":."
ec80 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":.
eca0 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":.{.......
ecc0 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.......},...
ece0 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
ed00 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 61 72 61 6d 5f 69 6d 67 20 3d 20 7b 27 69 6e 74 65 ":.[........."param_img.=.{'inte
ed20 72 70 6f 6c 61 74 69 6f 6e 27 3a 20 27 6e 65 61 72 65 73 74 27 7d 5c 6e 5c 6e 70 6c 2e 66 69 67 rpolation':.'nearest'}\n\npl.fig
ed40 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 35 2c 20 38 29 29 5c 6e 70 6c 2e 73 75 62 70 ure(2,.figsize=(15,.8))\npl.subp
ed60 6c 6f 74 28 32 2c 20 34 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 65 6d 64 2e 63 lot(2,.4,.1)\npl.imshow(ot_emd.c
ed80 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 78 74 69 63 6b oupling_,.**param_img)\npl.xtick
eda0 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 s([])\npl.yticks([])\npl.title('
edc0 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 27 Optimal.coupling\\nEMDTransport'
ede0 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 )\n\npl.subplot(2,.4,.2)\npl.ims
ee00 68 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 how(ot_sinkhorn.coupling_,.**par
ee20 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b am_img)\npl.xticks([])\npl.ytick
ee40 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 6e s([])\npl.title('Optimal.couplin
ee60 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 70 6c 2e 73 75 g\\nSinkhornTransport')\n\npl.su
ee80 62 70 6c 6f 74 28 32 2c 20 34 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 6c 70 6c bplot(2,.4,.3)\npl.imshow(ot_lpl
eea0 31 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 5c 6e 70 6c 2e 78 74 1.coupling_,.**param_img)\npl.xt
eec0 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c icks([])\npl.yticks([])\npl.titl
eee0 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 e('Optimal.coupling\\nSinkhornLp
ef00 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 l1Transport')\n\npl.subplot(2,.4
ef20 2c 20 34 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 6c 31 6c 32 2e 63 6f 75 70 6c 69 6e 67 ,.4)\npl.imshow(ot_l1l2.coupling
ef40 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 6e _,.**param_img)\npl.xticks([])\n
ef60 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
ef80 20 63 6f 75 70 6c 69 6e 67 5c 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 61 6e 73 70 6f 72 .coupling\\nSinkhornL1l2Transpor
efa0 74 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 35 29 5c 6e 70 6c 2e 73 t')\n\npl.subplot(2,.4,.5)\npl.s
efc0 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,
efe0 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='
f000 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 33 29 5c 6e 70 6c 2e Target.samples',.alpha=0.3)\npl.
f020 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 30 5d 2c 20 74 72 61 scatter(transp_Xs_emd[:,.0],.tra
f040 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 20 20 20 nsp_Xs_emd[:,.1],.c=ys,\n.......
f060 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 ....marker='+',.label='Transp.sa
f080 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c mples',.s=30)\npl.xticks([])\npl
f0a0 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 .yticks([])\npl.title('Transport
f0c0 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 2e ed.samples\\nEmdTransport')\npl.
f0e0 6c 65 67 65 6e 64 28 6c 6f 63 3d 5c 22 6c 6f 77 65 72 20 6c 65 66 74 5c 22 29 5c 6e 5c 6e 70 6c legend(loc=\"lower.left\")\n\npl
f100 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 36 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 .subplot(2,.4,.6)\npl.scatter(Xt
f120 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='
f140 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
f160 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
f180 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 6e 73 70 5f ransp_Xs_sinkhorn[:,.0],.transp_
f1a0 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 20 20 20 20 Xs_sinkhorn[:,.1],.c=ys,\n......
f1c0 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 70 20 73 .....marker='+',.label='Transp.s
f1e0 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 amples',.s=30)\npl.xticks([])\np
f200 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 l.yticks([])\npl.title('Transpor
f220 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 73 70 6f 72 74 27 ted.samples\\nSinkhornTransport'
f240 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 37 29 5c 6e 70 6c 2e 73 63 61 )\n\npl.subplot(2,.4,.7)\npl.sca
f260 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d tter(Xt[:,.0],.Xt[:,.1],.c=yt,.m
f280 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 arker='o',\n...........label='Ta
f2a0 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 33 29 5c 6e 70 6c 2e 73 63 rget.samples',.alpha=0.3)\npl.sc
f2c0 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 74 72 61 6e atter(transp_Xs_lpl1[:,.0],.tran
f2e0 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 20 20 20 20 sp_Xs_lpl1[:,.1],.c=ys,\n.......
f300 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 ....marker='+',.label='Transp.sa
f320 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c mples',.s=30)\npl.xticks([])\npl
f340 2e 79 74 69 63 6b 73 28 5b 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 .yticks([])\npl.title('Transport
f360 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 72 61 6e 73 70 6f ed.samples\\nSinkhornLpl1Transpo
f380 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 38 29 5c 6e 70 6c 2e rt')\n\npl.subplot(2,.4,.8)\npl.
f3a0 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 74 scatter(Xt[:,.0],.Xt[:,.1],.c=yt
f3c0 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 3d ,.marker='o',\n...........label=
f3e0 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 33 29 5c 6e 70 6c 'Target.samples',.alpha=0.3)\npl
f400 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 5b 3a 2c 20 30 5d 2c 20 74 .scatter(transp_Xs_l1l2[:,.0],.t
f420 72 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 5c 6e 20 20 20 20 ransp_Xs_l1l2[:,.1],.c=ys,\n....
f440 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 70 .......marker='+',.label='Transp
f460 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 5c .samples',.s=30)\npl.xticks([])\
f480 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 54 72 61 6e 73 70 npl.yticks([])\npl.title('Transp
f4a0 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 31 6c 32 54 72 61 6e orted.samples\\nSinkhornL1l2Tran
f4c0 73 70 6f 72 74 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c sport')\npl.tight_layout()\n\npl
f4e0 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
f500 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":.{.
f520 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"
f540 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",...
f560 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".....},....
f580 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
f5a0 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":."
f5c0 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..
f5e0 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":.
f600 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
f620 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"
f640 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
f660 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":.
f680 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.
f6a0 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,
f6c0 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......
f6e0 00 00 ec 45 43 4d df ba b4 fb aa 10 00 00 aa 10 00 00 17 00 00 00 70 6c 6f 74 5f 4f 54 5f 31 44 ...ECM................plot_OT_1D
f700 5f 73 6d 6f 6f 74 68 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 _smooth.ipynb{..."cells":.[.....
f720 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",....
f740 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,.....
f760 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
f780 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
f7a0 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":.[......
f7c0 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 0a ..."%matplotlib.inline".......].
f7e0 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":.
f800 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":.{}
f820 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 23 ,......."source":.[........."\n#
f840 20 31 44 20 73 6d 6f 6f 74 68 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 6e 5c 6e .1D.smooth.optimal.transport\n\n
f860 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 63 \nThis.example.illustrates.the.c
f880 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 45 4d 44 2c 20 53 69 6e 6b 68 6f 72 6e 20 61 6e 64 20 omputation.of.EMD,.Sinkhorn.and.
f8a0 73 6d 6f 6f 74 68 20 4f 54 20 70 6c 61 6e 73 5c 6e 61 6e 64 20 74 68 65 69 72 20 76 69 73 75 61 smooth.OT.plans\nand.their.visua
f8c0 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 20 20 20 20 7d 2c 0a lization.\n\n\n".......].....},.
f8e0 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",
f900 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,.
f920 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
f940 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
f960 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":.[..
f980 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c ......."#.Author:.Remi.Flamary.<
f9a0 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 6e 23 20 4c 69 63 remi.flamary@unice.fr>\n#\n#.Lic
f9c0 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
f9e0 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 y.as.np\nimport.matplotlib.pylab
fa00 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 20 6f 74 2e 70 6c 6f .as.pl\nimport.ot\nimport.ot.plo
fa20 74 5c 6e 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 6d 61 6b 65 5f t\nfrom.ot.datasets.import.make_
fa40 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 1D_gauss.as.gauss".......].....}
fa60 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
fa80 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":.{},....
faa0 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 47 65 6e 65 72 61 74 65 ..."source":.[........."Generate
fac0 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 .data\n-------------\n\n".......
fae0 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"
fb00 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
fb20 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":.{....
fb40 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.......},
fb60 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
fb80 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 5c rce":.[........."#%%.parameters\
fba0 6e 5c 6e 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 5c 6e 5c 6e 23 20 62 69 6e 20 70 n\nn.=.100..#.nb.bins\n\n#.bin.p
fbc0 6f 73 69 74 69 6f 6e 73 5c 6e 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 ositions\nx.=.np.arange(n,.dtype
fbe0 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c 6e 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 =np.float64)\n\n#.Gaussian.distr
fc00 69 62 75 74 69 6f 6e 73 5c 6e 61 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 ibutions\na.=.gauss(n,.m=20,.s=5
fc20 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 67 61 75 73 73 28 )..#.m=.mean,.s=.std\nb.=.gauss(
fc40 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 6d 61 74 72 69 78 5c n,.m=60,.s=10)\n\n#.loss.matrix\
fc60 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 2c 20 31 29 29 2c 20 nM.=.ot.dist(x.reshape((n,.1)),.
fc80 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 4d 2e 6d 61 78 28 29 x.reshape((n,.1)))\nM./=.M.max()
fca0 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
fcc0 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
fce0 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":.[...
fd00 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 20 61 6e 64 20 6c 6f ......"Plot.distributions.and.lo
fd20 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 2d 2d 2d 2d 2d 2d 2d ss.matrix\n---------------------
fd40 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".......].....}
fd60 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
fd80 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
fda0 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
fdc0 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.......},.......
fde0 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":.[
fe00 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 ........."#%%.plot.the.distribut
fe20 69 6f 6e 73 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e ions\n\npl.figure(1,.figsize=(6.
fe40 34 2c 20 33 29 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 61 2c 20 27 62 27 2c 20 6c 61 62 65 6c 4,.3))\npl.plot(x,.a,.'b',.label
fe60 3d 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 ='Source.distribution')\npl.plot
fe80 28 78 2c 20 62 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 69 73 74 72 69 (x,.b,.'r',.label='Target.distri
fea0 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 5c 6e 23 25 25 20 70 6c 6f bution')\npl.legend()\n\n#%%.plo
fec0 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 5c t.distributions.and.loss.matrix\
fee0 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c n\npl.figure(2,.figsize=(5,.5))\
ff00 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 4d 2c 20 27 43 6f not.plot.plot1D_mat(a,.b,.M,.'Co
ff20 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 20 20 7d 2c 0a 20 20 st.matrix.M')".......].....},...
ff40 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
ff60 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":.{},......."
ff80 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 45 4d 44 5c 6e 2d source":.[........."Solve.EMD\n-
ffa0 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".......].....},....
ffc0 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",...
ffe0 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,....
10000 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
10020 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
10040 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":.[.....
10060 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 6d 64 28 61 2c 20 62 ...."#%%.EMD\n\nG0.=.ot.emd(a,.b
10080 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 69 7a 65 3d 28 35 2c ,.M)\n\npl.figure(3,.figsize=(5,
100a0 20 35 29 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 .5))\not.plot.plot1D_mat(a,.b,.G
100c0 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 20 5d 0a 20 20 20 20 0,.'OT.matrix.G0')".......].....
100e0 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
10100 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":.{},...
10120 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 53 ...."source":.[........."Solve.S
10140 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 5c 6e 22 0a 20 20 20 inkhorn\n--------------\n\n"....
10160 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
10180 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
101a0 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":.{.
101c0 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......
101e0 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":.[],......."
10200 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 69 6e 6b 68 6f 72 6e source":.[........."#%%.Sinkhorn
10220 5c 6e 5c 6e 6c 61 6d 62 64 20 3d 20 32 65 2d 33 5c 6e 47 73 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f \n\nlambd.=.2e-3\nGs.=.ot.sinkho
10240 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 65 3d 54 72 75 65 29 rn(a,.b,.M,.lambd,.verbose=True)
10260 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 \n\npl.figure(4,.figsize=(5,.5))
10280 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 73 2c 20 27 \not.plot.plot1D_mat(a,.b,.Gs,.'
102a0 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 OT.matrix.Sinkhorn')\n\npl.show(
102c0 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
102e0 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
10300 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":.[..
10320 20 20 20 20 20 20 20 22 53 6f 6c 76 65 20 53 6d 6f 6f 74 68 20 4f 54 5c 6e 2d 2d 2d 2d 2d 2d 2d ......."Solve.Smooth.OT\n-------
10340 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".......].....},.....
10360 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",....
10380 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,.....
103a0 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
103c0 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
103e0 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":.[......
10400 20 20 20 22 23 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 ..."#%%.Smooth.OT.with.KL.regula
10420 72 69 7a 61 74 69 6f 6e 5c 6e 5c 6e 6c 61 6d 62 64 20 3d 20 32 65 2d 33 5c 6e 47 73 6d 20 3d 20 rization\n\nlambd.=.2e-3\nGsm.=.
10440 6f 74 2e 73 6d 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 ot.smooth.smooth_ot_dual(a,.b,.M
10460 2c 20 6c 61 6d 62 64 2c 20 72 65 67 5f 74 79 70 65 3d 27 6b 6c 27 29 5c 6e 5c 6e 70 6c 2e 66 69 ,.lambd,.reg_type='kl')\n\npl.fi
10480 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
104a0 2e 70 6c 6f 74 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 .plot1D_mat(a,.b,.Gsm,.'OT.matri
104c0 78 20 53 6d 6f 6f 74 68 20 4f 54 20 4b 4c 20 72 65 67 2e 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 x.Smooth.OT.KL.reg.')\n\npl.show
104e0 28 29 5c 6e 5c 6e 5c 6e 23 25 25 20 53 6d 6f 6f 74 68 20 4f 54 20 77 69 74 68 20 4b 4c 20 72 65 ()\n\n\n#%%.Smooth.OT.with.KL.re
10500 67 75 6c 61 72 69 7a 61 74 69 6f 6e 5c 6e 5c 6e 6c 61 6d 62 64 20 3d 20 31 65 2d 31 5c 6e 47 73 gularization\n\nlambd.=.1e-1\nGs
10520 6d 20 3d 20 6f 74 2e 73 6d 6f 6f 74 68 2e 73 6d 6f 6f 74 68 5f 6f 74 5f 64 75 61 6c 28 61 2c 20 m.=.ot.smooth.smooth_ot_dual(a,.
10540 62 2c 20 4d 2c 20 6c 61 6d 62 64 2c 20 72 65 67 5f 74 79 70 65 3d 27 6c 32 27 29 5c 6e 5c 6e 70 b,.M,.lambd,.reg_type='l2')\n\np
10560 6c 2e 66 69 67 75 72 65 28 36 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 5c 6e 6f 74 2e l.figure(6,.figsize=(5,.5))\not.
10580 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 73 6d 2c 20 27 4f 54 20 6d plot.plot1D_mat(a,.b,.Gsm,.'OT.m
105a0 61 74 72 69 78 20 53 6d 6f 6f 74 68 20 4f 54 20 6c 32 20 72 65 67 2e 27 29 5c 6e 5c 6e 70 6c 2e atrix.Smooth.OT.l2.reg.')\n\npl.
105c0 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 65 show()".......].....}...],..."me
105e0 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 tadata":.{....."kernelspec":.{..
10600 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 2c ....."display_name":."Python.3",
10620 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 20 ......."language":."python",....
10640 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 20 ..."name":."python3".....},.....
10660 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 69 "language_info":.{......."codemi
10680 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 69 rror_mode":.{........."name":."i
106a0 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 20 python",........."version":.3...
106c0 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 22 ....},......."file_extension":."
106e0 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 2d .py",......."mimetype":."text/x-
10700 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 2c python",......."name":."python",
10720 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 79 ......."nbconvert_exporter":."py
10740 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 22 thon",......."pygments_lexer":."
10760 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 36 ipython3",......."version":."3.6
10780 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 0a .5".....}...},..."nbformat":.4,.
107a0 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 00 .."nbformat_minor":.0.}PK.......
107c0 00 77 6d 7d 4e 80 8e 14 e4 3b 18 00 00 3b 18 00 00 25 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d .wm}N....;...;...%...plot_otda_m
107e0 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 73 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 63 apping_colors_images.ipynb{..."c
10800 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ells":.[.....{......."cell_type"
10820 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
10840 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":.{....
10860 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.......},
10880 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
108a0 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c rce":.[........."%matplotlib.inl
108c0 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 ine".......].....},.....{.......
108e0 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",......."
10900 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":.[
10920 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 66 6f 72 20 69 6d 61 67 65 20 63 6f 6c 6f 72 ........."\n#.OT.for.image.color
10940 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 74 68 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 .adaptation.with.mapping.estimat
10960 69 6f 6e 5c 6e 5c 6e 5c 6e 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f ion\n\n\nOT.for.domain.adaptatio
10980 6e 20 77 69 74 68 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 n.with.image.color.adaptation.[6
109a0 5d 20 77 69 74 68 20 6d 61 70 70 69 6e 67 5c 6e 65 73 74 69 6d 61 74 69 6f 6e 20 5b 38 5d 2e 5c ].with.mapping\nestimation.[8].\
109c0 6e 5c 6e 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 64 61 6b 69 73 2c n\n[6].Ferradans,.S.,.Papadakis,
109e0 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 2e 20 28 .N.,.Peyre,.G.,.&.Aujol,.J..F..(
10a00 32 30 31 34 29 2e 20 52 65 67 75 6c 61 72 69 7a 65 64 5c 6e 20 20 20 20 64 69 73 63 72 65 74 65 2014)..Regularized\n....discrete
10a20 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 6c .optimal.transport..SIAM.Journal
10a40 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 5c 6e 20 20 20 .on.Imaging.Sciences,.7(3),\n...
10a60 20 31 38 35 33 2d 31 38 38 32 2e 5c 6e 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 .1853-1882.\n[8].M..Perrot,.N..C
10a80 6f 75 72 74 79 2c 20 52 2e 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 20 5c ourty,.R..Flamary,.A..Habrard,.\
10aa0 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 5c 6e 20 20 20 20 64 69 73 "Mapping.estimation.for\n....dis
10ac0 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 22 2c 20 4e 65 75 72 61 crete.optimal.transport\",.Neura
10ae0 6c 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 79 73 74 65 6d 73 l.Information.Processing.Systems
10b00 20 28 4e 49 50 53 29 2c 5c 6e 20 20 20 20 32 30 31 36 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 .(NIPS),\n....2016.\n\n\n"......
10b20 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
10b40 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
10b60 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":.{...
10b80 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.......}
10ba0 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
10bc0 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d urce":.[........."#.Authors:.Rem
10be0 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 72 i.Flamary.<remi.flamary@unice.fr
10c00 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 >\n#..........Stanislas.Chambon.
10c20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 20 4c <stan.chambon@gmail.com>\n#\n#.L
10c40 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 6e 75 icense:.MIT.License\n\nimport.nu
10c60 6d 70 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 mpy.as.np\nfrom.scipy.import.ndi
10c80 6d 61 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 mage\nimport.matplotlib.pylab.as
10ca0 20 70 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 .pl\nimport.ot\n\nr.=.np.random.
10cc0 52 61 6e 64 6f 6d 53 74 61 74 65 28 34 32 29 5c 6e 5c 6e 5c 6e 64 65 66 20 69 6d 32 6d 61 74 28 RandomState(42)\n\n\ndef.im2mat(
10ce0 49 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 I):\n....\"\"\"Converts.and.imag
10d00 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 e.to.matrix.(one.pixel.per.line)
10d20 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e \"\"\"\n....return.I.reshape((I.
10d40 73 68 61 70 65 5b 30 5d 20 2a 20 49 2e 73 68 61 70 65 5b 31 5d 2c 20 49 2e 73 68 61 70 65 5b 32 shape[0].*.I.shape[1],.I.shape[2
10d60 5d 29 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 20 73 68 61 70 65 29 3a 5c 6e ]))\n\n\ndef.mat2im(X,.shape):\n
10d80 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 ....\"\"\"Converts.back.a.matrix
10da0 20 74 6f 20 61 6e 20 69 6d 61 67 65 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 58 .to.an.image\"\"\"\n....return.X
10dc0 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d 69 6e 6d 61 78 28 .reshape(shape)\n\n\ndef.minmax(
10de0 49 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 I):\n....return.np.clip(I,.0,.1)
10e00 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
10e20 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
10e40 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":.[...
10e60 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----------
10e80 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".......].....},.....{...
10ea0 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",......."
10ec0 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
10ee0 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":
10f00 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":
10f20 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":.[........."
10f40 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 6d 61 67 65 2e 69 #.Loading.images\nI1.=.ndimage.i
10f60 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 mread('../data/ocean_day.jpg').a
10f80 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 32 20 3d 20 6e 64 stype(np.float64)./.256\nI2.=.nd
10fa0 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 image.imread('../data/ocean_suns
10fc0 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 29 20 2f 20 32 35 et.jpg').astype(np.float64)./.25
10fe0 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 20 3d 20 69 6d 32 6\n\n\nX1.=.im2mat(I1)\nX2.=.im2
11000 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 6c 65 73 5c 6e 6e mat(I2)\n\n#.training.samples\nn
11020 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 28 58 31 2e 73 68 b.=.1000\nidx1.=.r.randint(X1.sh
11040 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 3d 20 72 2e 72 61 ape[0],.size=(nb,))\nidx2.=.r.ra
11060 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 62 2c 29 29 5c 6e ndint(X2.shape[0],.size=(nb,))\n
11080 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 32 5b 69 64 78 32 \nXs.=.X1[idx1,.:]\nXt.=.X2[idx2
110a0 2c 20 3a 5d 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 ,.:]".......].....},.....{......
110c0 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",.......
110e0 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":.
11100 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 72 [........."Domain.adaptation.for
11120 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 2d .pixel.distribution.transfer\n--
11140 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11160 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".......]....
11180 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
111a0 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
111c0 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":.{.........
111e0 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.......},.....
11200 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":
11220 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 45 4d 44 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 65 .[........."#.EMDTransport\not_e
11240 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e 6f 74 5f 65 6d md.=.ot.da.EMDTransport()\not_em
11260 64 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 d.fit(Xs=Xs,.Xt=Xt)\ntransp_Xs_e
11280 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 49 6d md.=.ot_emd.transform(Xs=X1)\nIm
112a0 61 67 65 5f 65 6d 64 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 age_emd.=.minmax(mat2im(transp_X
112c0 73 5f 65 6d 64 2c 20 49 31 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 23 20 53 69 6e 6b 68 6f 72 6e 54 s_emd,.I1.shape))\n\n#.SinkhornT
112e0 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 69 ransport\not_sinkhorn.=.ot.da.Si
11300 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 5f nkhornTransport(reg_e=1e-1)\not_
11320 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 74 72 61 6e sinkhorn.fit(Xs=Xs,.Xt=Xt)\ntran
11340 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 74 72 61 sp_Xs_sinkhorn.=.ot_sinkhorn.tra
11360 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 49 6d 61 67 65 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 nsform(Xs=X1)\nImage_sinkhorn.=.
11380 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e minmax(mat2im(transp_Xs_sinkhorn
113a0 2c 20 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 6c 69 6e 65 61 ,.I1.shape))\n\not_mapping_linea
113c0 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 28 5c 6e 20 20 20 r.=.ot.da.MappingTransport(\n...
113e0 20 6d 75 3d 31 65 30 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 20 6d 61 .mu=1e0,.eta=1e-8,.bias=True,.ma
11400 78 5f 69 74 65 72 3d 32 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 6f 74 5f 6d 61 70 x_iter=20,.verbose=True)\not_map
11420 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\
11440 6e 58 31 74 6c 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 nX1tl.=.ot_mapping_linear.transf
11460 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 orm(Xs=X1)\nImage_mapping_linear
11480 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6c 2c 20 49 31 2e 73 68 61 70 65 29 .=.minmax(mat2im(X1tl,.I1.shape)
114a0 29 5c 6e 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 3d 20 6f 74 2e 64 61 )\n\not_mapping_gaussian.=.ot.da
114c0 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 5c 6e 20 20 20 20 6d 75 3d 31 65 30 2c 20 .MappingTransport(\n....mu=1e0,.
114e0 65 74 61 3d 31 65 2d 32 2c 20 73 69 67 6d 61 3d 31 2c 20 62 69 61 73 3d 46 61 6c 73 65 2c 20 6d eta=1e-2,.sigma=1,.bias=False,.m
11500 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 74 5f 6d 61 ax_iter=10,.verbose=True)\not_ma
11520 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 3d 58 74 29 pping_gaussian.fit(Xs=Xs,.Xt=Xt)
11540 5c 6e 5c 6e 58 31 74 6e 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 \n\nX1tn.=.ot_mapping_gaussian.t
11560 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 20 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d ransform(Xs=X1)..#.use.the.estim
11580 61 74 65 64 20 6d 61 70 70 69 6e 67 5c 6e 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 ated.mapping\nImage_mapping_gaus
115a0 73 69 61 6e 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6e 2c 20 49 31 2e 73 68 sian.=.minmax(mat2im(X1tn,.I1.sh
115c0 61 70 65 29 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 ape))".......].....},.....{.....
115e0 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",......
11600 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":
11620 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 61 67 65 73 .[........."Plot.original.images
11640 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 20 20 20 20 \n--------------------\n\n".....
11660 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
11680 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
116a0 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":.{..
116c0 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.......
116e0 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
11700 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,.
11720 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c figsize=(6.4,.3))\npl.subplot(1,
11740 20 32 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e 70 6c 2e 61 78 69 73 28 27 .2,.1)\npl.imshow(I1)\npl.axis('
11760 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c off')\npl.title('Image.1')\n\npl
11780 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 .subplot(1,.2,.2)\npl.imshow(I2)
117a0 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 61 67 \npl.axis('off')\npl.title('Imag
117c0 65 20 32 27 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 e.2')\npl.tight_layout()".......
117e0 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"
11800 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":.
11820 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 50 {},......."source":.[........."P
11840 6c 6f 74 20 70 69 78 65 6c 20 76 61 6c 75 65 73 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5c 6e 2d lot.pixel.values.distribution\n-
11860 2d 2d 2d 2d 2d 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\
11880 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
118a0 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
118c0 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
118e0 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
11900 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":.[],..
11920 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
11940 75 72 65 28 32 2c 20 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 ure(2,.figsize=(6.4,.5))\n\npl.s
11960 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a ubplot(1,.2,.1)\npl.scatter(Xs[:
11980 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 69 73 28 5b ,.0],.Xs[:,.2],.c=Xs)\npl.axis([
119a0 30 2c 20 31 2c 20 30 2c 20 31 5d 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 0,.1,.0,.1])\npl.xlabel('Red')\n
119c0 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 pl.ylabel('Blue')\npl.title('Ima
119e0 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 ge.1')\n\npl.subplot(1,.2,.2)\np
11a00 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 2c 20 63 3d l.scatter(Xt[:,.0],.Xt[:,.2],.c=
11a20 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 70 6c 2e 78 Xt)\npl.axis([0,.1,.0,.1])\npl.x
11a40 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 5c label('Red')\npl.ylabel('Blue')\
11a60 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 5f 6c npl.title('Image.2')\npl.tight_l
11a80 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 ayout()".......].....},.....{...
11aa0 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",....
11ac0 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
11ae0 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 74 72 61 6e 73 66 6f 72 6d 65 64 20 69 ":.[........."Plot.transformed.i
11b00 6d 61 67 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e mages\n-----------------------\n
11b20 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".......].....},.....{......."
11b40 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
11b60 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
11b80 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
11ba0 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":.[],.
11bc0 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 ......"source":.[........."pl.fi
11be0 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 73 gure(2,.figsize=(10,.5))\n\npl.s
11c00 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 6e ubplot(2,.3,.1)\npl.imshow(I1)\n
11c20 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 27 pl.axis('off')\npl.title('Im..1'
11c40 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 73 )\n\npl.subplot(2,.3,.4)\npl.ims
11c60 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 6c how(I2)\npl.axis('off')\npl.titl
11c80 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 32 e('Im..2')\n\npl.subplot(2,.3,.2
11ca0 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 73 )\npl.imshow(Image_emd)\npl.axis
11cc0 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 27 ('off')\npl.title('EmdTransport'
11ce0 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 73 )\n\npl.subplot(2,.3,.5)\npl.ims
11d00 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 66 how(Image_sinkhorn)\npl.axis('of
11d20 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 74 f')\npl.title('SinkhornTransport
11d40 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 6d ')\n\npl.subplot(2,.3,.3)\npl.im
11d60 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 61 show(Image_mapping_linear)\npl.a
11d80 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 61 xis('off')\npl.title('MappingTra
11da0 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 28 nsport.(linear)')\n\npl.subplot(
11dc0 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 6e 2,.3,.6)\npl.imshow(Image_mappin
11de0 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 2e g_gaussian)\npl.axis('off')\npl.
11e00 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 61 title('MappingTransport.(gaussia
11e20 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 68 n)')\npl.tight_layout()\n\npl.sh
11e40 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
11e60 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":.{....
11e80 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",..
11ea0 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",......
11ec0 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
11ee0 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
11f00 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
11f20 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.....
11f40 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
11f60 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
11f80 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",..
11fa0 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
11fc0 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
11fe0 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 37 ython3",......."version":."3.6.7
12000 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,...
12020 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 ec "nbformat_minor":.0.}PK.........
12040 45 43 4d c7 ed 71 d0 e2 0d 00 00 e2 0d 00 00 22 00 00 00 70 6c 6f 74 5f 66 72 65 65 5f 73 75 70 ECM..q........."...plot_free_sup
12060 70 6f 72 74 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 port_barycenter.ipynb{..."cells"
12080 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 6f :.[.....{......."cell_type":."co
120a0 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
120c0 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":.{.........
120e0 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.......},.....
12100 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":
12120 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 0a .[........."%matplotlib.inline".
12140 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
12160 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
12180 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":.[.....
121a0 20 20 20 20 22 5c 6e 23 20 32 44 20 66 72 65 65 20 73 75 70 70 6f 72 74 20 57 61 73 73 65 72 73 ...."\n#.2D.free.support.Wassers
121c0 74 65 69 6e 20 62 61 72 79 63 65 6e 74 65 72 73 20 6f 66 20 64 69 73 74 72 69 62 75 74 69 6f 6e tein.barycenters.of.distribution
121e0 73 5c 6e 5c 6e 5c 6e 49 6c 6c 75 73 74 72 61 74 69 6f 6e 20 6f 66 20 32 44 20 57 61 73 73 65 72 s\n\n\nIllustration.of.2D.Wasser
12200 73 74 65 69 6e 20 62 61 72 79 63 65 6e 74 65 72 73 20 69 66 20 64 69 73 63 72 69 62 75 74 69 6f stein.barycenters.if.discributio
12220 6e 73 20 74 68 61 74 20 61 72 65 20 77 65 69 67 68 74 65 64 5c 6e 73 75 6d 20 6f 66 20 64 69 72 ns.that.are.weighted\nsum.of.dir
12240 61 63 73 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b acs.\n\n\n".......].....},.....{
12260 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",.....
12280 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,......
122a0 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
122c0 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
122e0 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":.[.......
12300 20 20 22 23 20 41 75 74 68 6f 72 3a 20 56 69 76 69 65 6e 20 53 65 67 75 79 20 3c 76 69 76 69 65 .."#.Author:.Vivien.Seguy.<vivie
12320 6e 2e 73 65 67 75 79 40 69 69 70 2e 69 73 74 2e 69 2e 6b 79 6f 74 6f 2d 75 2e 61 63 2e 6a 70 3e n.seguy@iip.ist.i.kyoto-u.ac.jp>
12340 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 \n#\n#.License:.MIT.License\n\ni
12360 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 6c 6f mport.numpy.as.np\nimport.matplo
12380 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 22 0a 20 20 20 tlib.pylab.as.pl\nimport.ot"....
123a0 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
123c0 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
123e0 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":.[........
12400 20 22 47 65 6e 65 72 61 74 65 20 64 61 74 61 5c 6e 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c ."Generate.data\n.-------------\
12420 6e 25 25 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 n%%.parameters.and.data.generati
12440 6f 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 on\n\n".......].....},.....{....
12460 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
12480 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
124a0 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":.
124c0 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":.
124e0 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 4e [],......."source":.[........."N
12500 20 3d 20 33 5c 6e 64 20 3d 20 32 5c 6e 6d 65 61 73 75 72 65 73 5f 6c 6f 63 61 74 69 6f 6e 73 20 .=.3\nd.=.2\nmeasures_locations.
12520 3d 20 5b 5d 5c 6e 6d 65 61 73 75 72 65 73 5f 77 65 69 67 68 74 73 20 3d 20 5b 5d 5c 6e 5c 6e 66 =.[]\nmeasures_weights.=.[]\n\nf
12540 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 4e 29 3a 5c 6e 5c 6e 20 20 20 20 6e 5f 69 20 3d 20 6e or.i.in.range(N):\n\n....n_i.=.n
12560 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 6c 6f 77 3d 31 2c 20 68 69 67 68 3d 32 30 29 p.random.randint(low=1,.high=20)
12580 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 20 20 20 20 6d 75 5f 69 20 3d 20 6e 70 2e ..#.nb.samples\n\n....mu_i.=.np.
125a0 72 61 6e 64 6f 6d 2e 6e 6f 72 6d 61 6c 28 30 2e 2c 20 34 2e 2c 20 28 64 2c 29 29 20 20 23 20 47 random.normal(0.,.4.,.(d,))..#.G
125c0 61 75 73 73 69 61 6e 20 6d 65 61 6e 5c 6e 5c 6e 20 20 20 20 41 5f 69 20 3d 20 6e 70 2e 72 61 6e aussian.mean\n\n....A_i.=.np.ran
125e0 64 6f 6d 2e 72 61 6e 64 28 64 2c 20 64 29 5c 6e 20 20 20 20 63 6f 76 5f 69 20 3d 20 6e 70 2e 64 dom.rand(d,.d)\n....cov_i.=.np.d
12600 6f 74 28 41 5f 69 2c 20 41 5f 69 2e 74 72 61 6e 73 70 6f 73 65 28 29 29 20 20 23 20 47 61 75 73 ot(A_i,.A_i.transpose())..#.Gaus
12620 73 69 61 6e 20 63 6f 76 61 72 69 61 6e 63 65 20 6d 61 74 72 69 78 5c 6e 5c 6e 20 20 20 20 78 5f sian.covariance.matrix\n\n....x_
12640 69 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 32 44 5f 73 61 6d 70 6c 65 73 5f i.=.ot.datasets.make_2D_samples_
12660 67 61 75 73 73 28 6e 5f 69 2c 20 6d 75 5f 69 2c 20 63 6f 76 5f 69 29 20 20 23 20 44 69 72 61 63 gauss(n_i,.mu_i,.cov_i)..#.Dirac
12680 20 6c 6f 63 61 74 69 6f 6e 73 5c 6e 20 20 20 20 62 5f 69 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e .locations\n....b_i.=.np.random.
126a0 75 6e 69 66 6f 72 6d 28 30 2e 2c 20 31 2e 2c 20 28 6e 5f 69 2c 29 29 5c 6e 20 20 20 20 62 5f 69 uniform(0.,.1.,.(n_i,))\n....b_i
126c0 20 3d 20 62 5f 69 20 2f 20 6e 70 2e 73 75 6d 28 62 5f 69 29 20 20 23 20 44 69 72 61 63 20 77 65 .=.b_i./.np.sum(b_i)..#.Dirac.we
126e0 69 67 68 74 73 5c 6e 5c 6e 20 20 20 20 6d 65 61 73 75 72 65 73 5f 6c 6f 63 61 74 69 6f 6e 73 2e ights\n\n....measures_locations.
12700 61 70 70 65 6e 64 28 78 5f 69 29 5c 6e 20 20 20 20 6d 65 61 73 75 72 65 73 5f 77 65 69 67 68 74 append(x_i)\n....measures_weight
12720 73 2e 61 70 70 65 6e 64 28 62 5f 69 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 s.append(b_i)".......].....},...
12740 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
12760 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":.{},......."
12780 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 74 65 20 66 72 65 65 source":.[........."Compute.free
127a0 20 73 75 70 70 6f 72 74 20 62 61 72 79 63 65 6e 74 65 72 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .support.barycenter\n-----------
127c0 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".......].....},.....{....
127e0 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
12800 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
12820 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":.
12840 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":.
12860 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 6b [],......."source":.[........."k
12880 20 3d 20 31 30 20 20 23 20 6e 75 6d 62 65 72 20 6f 66 20 44 69 72 61 63 73 20 6f 66 20 74 68 65 .=.10..#.number.of.Diracs.of.the
128a0 20 62 61 72 79 63 65 6e 74 65 72 5c 6e 58 5f 69 6e 69 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e .barycenter\nX_init.=.np.random.
128c0 6e 6f 72 6d 61 6c 28 30 2e 2c 20 31 2e 2c 20 28 6b 2c 20 64 29 29 20 20 23 20 69 6e 69 74 69 61 normal(0.,.1.,.(k,.d))..#.initia
128e0 6c 20 44 69 72 61 63 20 6c 6f 63 61 74 69 6f 6e 73 5c 6e 62 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 l.Dirac.locations\nb.=.np.ones((
12900 6b 2c 29 29 20 2f 20 6b 20 20 23 20 77 65 69 67 68 74 73 20 6f 66 20 74 68 65 20 62 61 72 79 63 k,))./.k..#.weights.of.the.baryc
12920 65 6e 74 65 72 20 28 69 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 6f 70 74 69 6d 69 7a 65 64 2c enter.(it.will.not.be.optimized,
12940 20 6f 6e 6c 79 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 20 6f 70 74 69 6d 69 7a 65 .only.the.locations.are.optimize
12960 64 29 5c 6e 5c 6e 58 20 3d 20 6f 74 2e 6c 70 2e 66 72 65 65 5f 73 75 70 70 6f 72 74 5f 62 61 72 d)\n\nX.=.ot.lp.free_support_bar
12980 79 63 65 6e 74 65 72 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 ycenter(measures_locations,.meas
129a0 75 72 65 73 5f 77 65 69 67 68 74 73 2c 20 58 5f 69 6e 69 74 2c 20 62 29 22 0a 20 20 20 20 20 20 ures_weights,.X_init,.b)".......
129c0 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"
129e0 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":.
12a00 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 50 {},......."source":.[........."P
12a20 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".......]
12a40 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":
12a60 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"
12a80 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":.{.....
12aa0 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.......},.
12ac0 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
12ae0 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 29 5c 6e 66 6f ce":.[........."pl.figure(1)\nfo
12b00 72 20 28 78 5f 69 2c 20 62 5f 69 29 20 69 6e 20 7a 69 70 28 6d 65 61 73 75 72 65 73 5f 6c 6f 63 r.(x_i,.b_i).in.zip(measures_loc
12b20 61 74 69 6f 6e 73 2c 20 6d 65 61 73 75 72 65 73 5f 77 65 69 67 68 74 73 29 3a 5c 6e 20 20 20 20 ations,.measures_weights):\n....
12b40 63 6f 6c 6f 72 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 6c 6f 77 3d 31 2c color.=.np.random.randint(low=1,
12b60 20 68 69 67 68 3d 31 30 20 2a 20 4e 29 5c 6e 20 20 20 20 70 6c 2e 73 63 61 74 74 65 72 28 78 5f .high=10.*.N)\n....pl.scatter(x_
12b80 69 5b 3a 2c 20 30 5d 2c 20 78 5f 69 5b 3a 2c 20 31 5d 2c 20 73 3d 62 20 2a 20 31 30 30 30 2c 20 i[:,.0],.x_i[:,.1],.s=b.*.1000,.
12ba0 6c 61 62 65 6c 3d 27 69 6e 70 75 74 20 6d 65 61 73 75 72 65 27 29 5c 6e 70 6c 2e 73 63 61 74 74 label='input.measure')\npl.scatt
12bc0 65 72 28 58 5b 3a 2c 20 30 5d 2c 20 58 5b 3a 2c 20 31 5d 2c 20 73 3d 62 20 2a 20 31 30 30 30 2c er(X[:,.0],.X[:,.1],.s=b.*.1000,
12be0 20 63 3d 27 62 6c 61 63 6b 27 2c 20 6d 61 72 6b 65 72 3d 27 5e 27 2c 20 6c 61 62 65 6c 3d 27 32 .c='black',.marker='^',.label='2
12c00 2d 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e 74 65 72 27 29 5c 6e 70 6c 2e 74 69 -Wasserstein.barycenter')\npl.ti
12c20 74 6c 65 28 27 44 61 74 61 20 6d 65 61 73 75 72 65 73 20 61 6e 64 20 74 68 65 69 72 20 62 61 72 tle('Data.measures.and.their.bar
12c40 79 63 65 6e 74 65 72 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 ycenter')\npl.legend(loc=0)\npl.
12c60 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 65 show()".......].....}...],..."me
12c80 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 tadata":.{....."kernelspec":.{..
12ca0 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 2c ....."display_name":."Python.3",
12cc0 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 20 ......."language":."python",....
12ce0 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 20 ..."name":."python3".....},.....
12d00 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 69 "language_info":.{......."codemi
12d20 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 69 rror_mode":.{........."name":."i
12d40 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 20 python",........."version":.3...
12d60 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 22 ....},......."file_extension":."
12d80 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 2d .py",......."mimetype":."text/x-
12da0 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 2c python",......."name":."python",
12dc0 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 79 ......."nbconvert_exporter":."py
12de0 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 22 thon",......."pygments_lexer":."
12e00 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 36 ipython3",......."version":."3.6
12e20 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 0a .5".....}...},..."nbformat":.4,.
12e40 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 00 .."nbformat_minor":.0.}PK.......
12e60 00 05 72 d9 4e 76 0a 6d b5 0e 1a 00 00 0e 1a 00 00 0e 00 00 00 70 6c 6f 74 5f 66 67 77 2e 69 70 ..r.Nv.m.............plot_fgw.ip
12e80 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 63 ynb{..."cells":.[.....{......."c
12ea0 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
12ec0 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
12ee0 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
12f00 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":.[],..
12f20 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 6c ....."source":.[........."%matpl
12f40 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 20 otlib.inline".......].....},....
12f60 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"
12f80 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
12fa0 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 23 20 50 6c 6f 74 20 46 75 73 65 ource":.[........."\n#.Plot.Fuse
12fc0 64 2d 67 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 d-gromov-Wasserstein\n\n\nThis.e
12fe0 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 xample.illustrates.the.computati
13000 6f 6e 20 6f 66 20 46 47 57 20 66 6f 72 20 31 44 20 6d 65 61 73 75 72 65 73 5b 31 38 5d 2e 5c 6e on.of.FGW.for.1D.measures[18].\n
13020 5c 6e 2e 2e 20 5b 31 38 5d 20 56 61 79 65 72 20 54 69 74 6f 75 61 6e 2c 20 43 68 61 70 65 6c 20 \n...[18].Vayer.Titouan,.Chapel.
13040 4c 61 65 74 69 74 69 61 2c 20 46 6c 61 6d 61 72 79 20 52 7b 27 65 7d 6d 69 2c 20 54 61 76 65 6e Laetitia,.Flamary.R{'e}mi,.Taven
13060 61 72 64 20 52 6f 6d 61 69 6e 5c 6e 20 20 20 20 20 20 61 6e 64 20 43 6f 75 72 74 79 20 4e 69 63 ard.Romain\n......and.Courty.Nic
13080 6f 6c 61 73 5c 6e 20 20 20 20 5c 22 4f 70 74 69 6d 61 6c 20 54 72 61 6e 73 70 6f 72 74 20 66 6f olas\n....\"Optimal.Transport.fo
130a0 72 20 73 74 72 75 63 74 75 72 65 64 20 64 61 74 61 20 77 69 74 68 20 61 70 70 6c 69 63 61 74 69 r.structured.data.with.applicati
130c0 6f 6e 20 6f 6e 20 67 72 61 70 68 73 5c 22 5c 6e 20 20 20 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61 on.on.graphs\"\n....Internationa
130e0 6c 20 43 6f 6e 66 65 72 65 6e 63 65 20 6f 6e 20 4d 61 63 68 69 6e 65 20 4c 65 61 72 6e 69 6e 67 l.Conference.on.Machine.Learning
13100 20 28 49 43 4d 4c 29 2e 20 32 30 31 39 2e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 .(ICML)..2019.\n\n\n".......]...
13120 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
13140 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
13160 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":.{........
13180 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.......},....
131a0 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"
131c0 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a 20 54 69 74 6f 75 61 6e 20 56 :.[........."#.Author:.Titouan.V
131e0 61 79 65 72 20 3c 74 69 74 6f 75 61 6e 2e 76 61 79 65 72 40 69 72 69 73 61 2e 66 72 3e 5c 6e 23 ayer.<titouan.vayer@irisa.fr>\n#
13200 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
13220 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 5c 6e 69 6d 70 6f rt.matplotlib.pyplot.as.pl\nimpo
13240 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 66 72 6f 6d 20 rt.numpy.as.np\nimport.ot\nfrom.
13260 6f 74 2e 67 72 6f 6d 6f 76 20 69 6d 70 6f 72 74 20 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 ot.gromov.import.gromov_wasserst
13280 65 69 6e 2c 20 66 75 73 65 64 5f 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 65 69 6e 22 0a 20 ein,.fused_gromov_wasserstein"..
132a0 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_
132c0 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
132e0 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":.[......
13300 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 5c 6e 5c 6e ..."Generate.data\n---------\n\n
13320 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
13340 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
13360 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
13380 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.
133a0 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":.[],...
133c0 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 70 61 72 ...."source":.[........."#%%.par
133e0 61 6d 65 74 65 72 73 5c 6e 23 20 57 65 20 63 72 65 61 74 65 20 74 77 6f 20 31 44 20 72 61 6e 64 ameters\n#.We.create.two.1D.rand
13400 6f 6d 20 6d 65 61 73 75 72 65 73 5c 6e 6e 20 3d 20 32 30 20 20 23 20 6e 75 6d 62 65 72 20 6f 66 om.measures\nn.=.20..#.number.of
13420 20 70 6f 69 6e 74 73 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 64 69 73 74 72 69 62 75 74 69 6f .points.in.the.first.distributio
13440 6e 5c 6e 6e 32 20 3d 20 33 30 20 20 23 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 69 6e 74 73 20 69 n\nn2.=.30..#.number.of.points.i
13460 6e 20 74 68 65 20 73 65 63 6f 6e 64 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5c 6e 73 69 67 20 3d n.the.second.distribution\nsig.=
13480 20 31 20 20 23 20 73 74 64 20 6f 66 20 66 69 72 73 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5c .1..#.std.of.first.distribution\
134a0 6e 73 69 67 32 20 3d 20 30 2e 31 20 20 23 20 73 74 64 20 6f 66 20 73 65 63 6f 6e 64 20 64 69 73 nsig2.=.0.1..#.std.of.second.dis
134c0 74 72 69 62 75 74 69 6f 6e 5c 6e 5c 6e 6e 70 2e 72 61 6e 64 6f 6d 2e 73 65 65 64 28 30 29 5c 6e tribution\n\nnp.random.seed(0)\n
134e0 5c 6e 70 68 69 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 29 5b 3a 2c 20 4e 6f 6e 65 5d 5c 6e 78 \nphi.=.np.arange(n)[:,.None]\nx
13500 73 20 3d 20 70 68 69 20 2b 20 73 69 67 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 s.=.phi.+.sig.*.np.random.randn(
13520 6e 2c 20 31 29 5c 6e 79 73 20 3d 20 6e 70 2e 76 73 74 61 63 6b 28 28 6e 70 2e 6f 6e 65 73 28 28 n,.1)\nys.=.np.vstack((np.ones((
13540 6e 20 2f 2f 20 32 2c 20 31 29 29 2c 20 30 20 2a 20 6e 70 2e 6f 6e 65 73 28 28 6e 20 2f 2f 20 32 n.//.2,.1)),.0.*.np.ones((n.//.2
13560 2c 20 31 29 29 29 29 20 2b 20 73 69 67 32 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e ,.1)))).+.sig2.*.np.random.randn
13580 28 6e 2c 20 31 29 5c 6e 5c 6e 70 68 69 32 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 32 29 5b 3a (n,.1)\n\nphi2.=.np.arange(n2)[:
135a0 2c 20 4e 6f 6e 65 5d 5c 6e 78 74 20 3d 20 70 68 69 32 20 2b 20 73 69 67 20 2a 20 6e 70 2e 72 61 ,.None]\nxt.=.phi2.+.sig.*.np.ra
135c0 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 32 2c 20 31 29 5c 6e 79 74 20 3d 20 6e 70 2e 76 73 74 61 63 ndom.randn(n2,.1)\nyt.=.np.vstac
135e0 6b 28 28 6e 70 2e 6f 6e 65 73 28 28 6e 32 20 2f 2f 20 32 2c 20 31 29 29 2c 20 30 20 2a 20 6e 70 k((np.ones((n2.//.2,.1)),.0.*.np
13600 2e 6f 6e 65 73 28 28 6e 32 20 2f 2f 20 32 2c 20 31 29 29 29 29 20 2b 20 73 69 67 32 20 2a 20 6e .ones((n2.//.2,.1)))).+.sig2.*.n
13620 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 32 2c 20 31 29 5c 6e 79 74 20 3d 20 79 74 5b 3a p.random.randn(n2,.1)\nyt.=.yt[:
13640 3a 2d 31 2c 20 3a 5d 5c 6e 5c 6e 70 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 29 5c 6e 71 20 3d 20 6f :-1,.:]\n\np.=.ot.unif(n)\nq.=.o
13660 74 2e 75 6e 69 66 28 6e 32 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b t.unif(n2)".......].....},.....{
13680 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",.
136a0 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
136c0 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 2d 2d rce":.[........."Plot.data\n----
136e0 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".......].....},.....{.
13700 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",......
13720 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,.......
13740 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
13760 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
13780 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":.[........
137a0 20 22 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 5c 6e 5c 6e ."#%%.plot.the.distributions\n\n
137c0 70 6c 2e 63 6c 6f 73 65 28 31 30 29 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 30 2c 20 28 37 2c 20 pl.close(10)\npl.figure(10,.(7,.
137e0 37 29 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 31 29 5c 6e 5c 6e 70 6c 7))\n\npl.subplot(2,.1,.1)\n\npl
13800 2e 73 63 61 74 74 65 72 28 79 73 2c 20 78 73 2c 20 63 3d 70 68 69 2c 20 73 3d 37 30 29 5c 6e 70 .scatter(ys,.xs,.c=phi,.s=70)\np
13820 6c 2e 79 6c 61 62 65 6c 28 27 46 65 61 74 75 72 65 20 76 61 6c 75 65 20 61 27 2c 20 66 6f 6e 74 l.ylabel('Feature.value.a',.font
13840 73 69 7a 65 3d 32 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 24 5c 5c 6d 75 3d 5c 5c 73 75 6d 5f size=20)\npl.title('$\\mu=\\sum_
13860 69 20 5c 5c 64 65 6c 74 61 5f 7b 78 5f 69 2c 61 5f 69 7d 24 27 2c 20 66 6f 6e 74 73 69 7a 65 3d i.\\delta_{x_i,a_i}$',.fontsize=
13880 32 35 2c 20 75 73 65 74 65 78 3d 54 72 75 65 2c 20 79 3d 31 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 25,.usetex=True,.y=1)\npl.xticks
138a0 28 28 29 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 28 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 (())\npl.yticks(())\npl.subplot(
138c0 32 2c 20 31 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 79 74 2c 20 78 74 2c 20 63 3d 70 2,.1,.2)\npl.scatter(yt,.xt,.c=p
138e0 68 69 32 2c 20 73 3d 37 30 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 27 63 6f 6f 72 64 69 6e 61 74 hi2,.s=70)\npl.xlabel('coordinat
13900 65 73 20 78 2f 79 27 2c 20 66 6f 6e 74 73 69 7a 65 3d 32 35 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c es.x/y',.fontsize=25)\npl.ylabel
13920 28 27 46 65 61 74 75 72 65 20 76 61 6c 75 65 20 62 27 2c 20 66 6f 6e 74 73 69 7a 65 3d 32 30 29 ('Feature.value.b',.fontsize=20)
13940 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 24 5c 5c 5c 5c 6e 75 3d 5c 5c 73 75 6d 5f 6a 20 5c 5c 64 65 \npl.title('$\\\\nu=\\sum_j.\\de
13960 6c 74 61 5f 7b 79 5f 6a 2c 62 5f 6a 7d 24 27 2c 20 66 6f 6e 74 73 69 7a 65 3d 32 35 2c 20 75 73 lta_{y_j,b_j}$',.fontsize=25,.us
13980 65 74 65 78 3d 54 72 75 65 2c 20 79 3d 31 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 28 29 29 5c 6e etex=True,.y=1)\npl.yticks(())\n
139a0 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 20 pl.tight_layout()\npl.show()"...
139c0 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
139e0 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
13a00 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":.[.......
13a20 20 20 22 43 72 65 61 74 65 20 73 74 72 75 63 74 75 72 65 20 6d 61 74 72 69 63 65 73 20 61 6e 64 .."Create.structure.matrices.and
13a40 20 61 63 72 6f 73 73 2d 66 65 61 74 75 72 65 20 64 69 73 74 61 6e 63 65 20 6d 61 74 72 69 78 5c .across-feature.distance.matrix\
13a60 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 20 n---------\n\n".......].....},..
13a80 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",.
13aa0 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,..
13ac0 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
13ae0 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
13b00 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":.[...
13b20 20 20 20 20 20 20 22 23 25 25 20 53 74 72 75 63 74 75 72 65 20 6d 61 74 72 69 63 65 73 20 61 6e ......"#%%.Structure.matrices.an
13b40 64 20 61 63 72 6f 73 73 2d 66 65 61 74 75 72 65 73 20 64 69 73 74 61 6e 63 65 20 6d 61 74 72 69 d.across-features.distance.matri
13b60 78 5c 6e 43 31 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 29 5c 6e 43 32 20 3d 20 6f 74 2e 64 69 73 x\nC1.=.ot.dist(xs)\nC2.=.ot.dis
13b80 74 28 78 74 29 5c 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 79 73 2c 20 79 74 29 5c 6e 77 31 20 3d t(xt)\nM.=.ot.dist(ys,.yt)\nw1.=
13ba0 20 6f 74 2e 75 6e 69 66 28 43 31 2e 73 68 61 70 65 5b 30 5d 29 5c 6e 77 32 20 3d 20 6f 74 2e 75 .ot.unif(C1.shape[0])\nw2.=.ot.u
13bc0 6e 69 66 28 43 32 2e 73 68 61 70 65 5b 30 5d 29 5c 6e 47 6f 74 20 3d 20 6f 74 2e 65 6d 64 28 5b nif(C2.shape[0])\nGot.=.ot.emd([
13be0 5d 2c 20 5b 5d 2c 20 4d 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a ],.[],.M)".......].....},.....{.
13c00 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",..
13c20 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
13c40 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 6d 61 74 72 69 63 65 73 5c 6e 2d ce":.[........."Plot.matrices\n-
13c60 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".......].....},....
13c80 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",...
13ca0 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,....
13cc0 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
13ce0 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
13d00 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":.[.....
13d20 20 20 20 20 22 23 25 25 5c 6e 63 6d 61 70 20 3d 20 27 52 65 64 73 27 5c 6e 70 6c 2e 63 6c 6f 73 ...."#%%\ncmap.=.'Reds'\npl.clos
13d40 65 28 31 30 29 5c 6e 70 6c 2e 66 69 67 75 72 65 28 31 30 2c 20 28 35 2c 20 35 29 29 5c 6e 66 73 e(10)\npl.figure(10,.(5,.5))\nfs
13d60 20 3d 20 31 35 5c 6e 6c 5f 78 20 3d 20 5b 30 2c 20 35 2c 20 31 30 2c 20 31 35 5d 5c 6e 6c 5f 79 .=.15\nl_x.=.[0,.5,.10,.15]\nl_y
13d80 20 3d 20 5b 30 2c 20 35 2c 20 31 30 2c 20 31 35 2c 20 32 30 2c 20 32 35 5d 5c 6e 67 73 20 3d 20 .=.[0,.5,.10,.15,.20,.25]\ngs.=.
13da0 70 6c 2e 47 72 69 64 53 70 65 63 28 35 2c 20 35 29 5c 6e 5c 6e 61 78 31 20 3d 20 70 6c 2e 73 75 pl.GridSpec(5,.5)\n\nax1.=.pl.su
13dc0 62 70 6c 6f 74 28 67 73 5b 33 3a 2c 20 3a 32 5d 29 5c 6e 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 43 bplot(gs[3:,.:2])\n\npl.imshow(C
13de0 31 2c 20 63 6d 61 70 3d 63 6d 61 70 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 1,.cmap=cmap,.interpolation='nea
13e00 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 24 43 5f 31 24 5c 22 2c 20 66 6f 6e 74 rest')\npl.title(\"$C_1$\",.font
13e20 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 5c 22 24 6b 24 5c 22 2c 20 66 6f 6e size=fs)\npl.xlabel(\"$k$\",.fon
13e40 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 5c 22 24 69 24 5c 22 2c 20 66 6f tsize=fs)\npl.ylabel(\"$i$\",.fo
13e60 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 6c 5f 78 29 5c 6e 70 6c 2e 79 ntsize=fs)\npl.xticks(l_x)\npl.y
13e80 74 69 63 6b 73 28 6c 5f 78 29 5c 6e 5c 6e 61 78 32 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 28 67 ticks(l_x)\n\nax2.=.pl.subplot(g
13ea0 73 5b 3a 33 2c 20 32 3a 5d 29 5c 6e 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 43 32 2c 20 63 6d 61 70 s[:3,.2:])\n\npl.imshow(C2,.cmap
13ec0 3d 63 6d 61 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 =cmap,.interpolation='nearest')\
13ee0 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 24 43 5f 32 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 npl.title(\"$C_2$\",.fontsize=fs
13f00 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 5c 22 24 6c 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 )\npl.ylabel(\"$l$\",.fontsize=f
13f20 73 29 5c 6e 23 70 6c 2e 79 6c 61 62 65 6c 28 5c 22 24 6c 24 5c 22 2c 66 6f 6e 74 73 69 7a 65 3d s)\n#pl.ylabel(\"$l$\",fontsize=
13f40 66 73 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 28 29 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 6c 5f fs)\npl.xticks(())\npl.yticks(l_
13f60 79 29 5c 6e 61 78 32 2e 73 65 74 5f 61 73 70 65 63 74 28 27 61 75 74 6f 27 29 5c 6e 5c 6e 61 78 y)\nax2.set_aspect('auto')\n\nax
13f80 33 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 28 67 73 5b 33 3a 2c 20 32 3a 5d 2c 20 73 68 61 72 65 3.=.pl.subplot(gs[3:,.2:],.share
13fa0 78 3d 61 78 32 2c 20 73 68 61 72 65 79 3d 61 78 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c x=ax2,.sharey=ax1)\npl.imshow(M,
13fc0 20 63 6d 61 70 3d 63 6d 61 70 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 .cmap=cmap,.interpolation='neare
13fe0 73 74 27 29 5c 6e 70 6c 2e 79 74 69 63 6b 73 28 6c 5f 78 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 st')\npl.yticks(l_x)\npl.xticks(
14000 6c 5f 79 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 5c 22 24 69 24 5c 22 2c 20 66 6f 6e 74 73 69 7a l_y)\npl.ylabel(\"$i$\",.fontsiz
14020 65 3d 66 73 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 24 4d 5f 7b 41 42 7d 24 5c 22 2c 20 66 6f e=fs)\npl.title(\"$M_{AB}$\",.fo
14040 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 5c 22 24 6a 24 5c 22 2c 20 66 ntsize=fs)\npl.xlabel(\"$j$\",.f
14060 6f 6e 74 73 69 7a 65 3d 66 73 29 5c 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e ontsize=fs)\npl.tight_layout()\n
14080 61 78 33 2e 73 65 74 5f 61 73 70 65 63 74 28 27 61 75 74 6f 27 29 5c 6e 70 6c 2e 73 68 6f 77 28 ax3.set_aspect('auto')\npl.show(
140a0 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
140c0 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
140e0 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":.[..
14100 20 20 20 20 20 20 20 22 43 6f 6d 70 75 74 65 20 46 47 57 2f 47 57 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d ......."Compute.FGW/GW\n--------
14120 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".......].....},.....{.....
14140 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
14160 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
14180 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
141a0 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":.[
141c0 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":.[........."#%
141e0 25 20 43 6f 6d 70 75 74 69 6e 67 20 46 47 57 20 61 6e 64 20 47 57 5c 6e 61 6c 70 68 61 20 3d 20 %.Computing.FGW.and.GW\nalpha.=.
14200 31 65 2d 33 5c 6e 5c 6e 6f 74 2e 74 69 63 28 29 5c 6e 47 77 67 2c 20 6c 6f 67 77 20 3d 20 66 75 1e-3\n\not.tic()\nGwg,.logw.=.fu
14220 73 65 64 5f 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 65 69 6e 28 4d 2c 20 43 31 2c 20 43 32 sed_gromov_wasserstein(M,.C1,.C2
14240 2c 20 70 2c 20 71 2c 20 6c 6f 73 73 5f 66 75 6e 3d 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 ,.p,.q,.loss_fun='square_loss',.
14260 61 6c 70 68 61 3d 61 6c 70 68 61 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 2c 20 6c 6f 67 3d 54 alpha=alpha,.verbose=True,.log=T
14280 72 75 65 29 5c 6e 6f 74 2e 74 6f 63 28 29 5c 6e 5c 6e 23 25 72 65 6c 6f 61 64 5f 65 78 74 20 57 rue)\not.toc()\n\n#%reload_ext.W
142a0 47 57 5c 6e 47 67 2c 20 6c 6f 67 20 3d 20 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 65 69 6e GW\nGg,.log.=.gromov_wasserstein
142c0 28 43 31 2c 20 43 32 2c 20 70 2c 20 71 2c 20 6c 6f 73 73 5f 66 75 6e 3d 27 73 71 75 61 72 65 5f (C1,.C2,.p,.q,.loss_fun='square_
142e0 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 29 22 0a loss',.verbose=True,.log=True)".
14300 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
14320 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
14340 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":.[.....
14360 20 20 20 20 22 56 69 73 75 61 6c 69 7a 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 61 74 72 69 63 65 ...."Visualize.transport.matrice
14380 73 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 s\n---------\n\n".......].....},
143a0 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"
143c0 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,
143e0 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
14400 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.......},......."
14420 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":.[.
14440 20 20 20 20 20 20 20 20 22 23 25 25 20 76 69 73 75 20 4f 54 20 6d 61 74 72 69 78 5c 6e 63 6d 61 ........"#%%.visu.OT.matrix\ncma
14460 70 20 3d 20 27 42 6c 75 65 73 27 5c 6e 66 73 20 3d 20 31 35 5c 6e 70 6c 2e 66 69 67 75 72 65 28 p.=.'Blues'\nfs.=.15\npl.figure(
14480 32 2c 20 28 31 33 2c 20 35 29 29 5c 6e 70 6c 2e 63 6c 66 28 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 2,.(13,.5))\npl.clf()\npl.subplo
144a0 74 28 31 2c 20 33 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 6f 74 2c 20 63 6d 61 70 3d t(1,.3,.1)\npl.imshow(Got,.cmap=
144c0 63 6d 61 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 cmap,.interpolation='nearest')\n
144e0 23 70 6c 2e 78 6c 61 62 65 6c 28 5c 22 24 79 24 5c 22 2c 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c #pl.xlabel(\"$y$\",fontsize=fs)\
14500 6e 70 6c 2e 79 6c 61 62 65 6c 28 5c 22 24 69 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 npl.ylabel(\"$i$\",.fontsize=fs)
14520 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 28 29 29 5c 6e 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 57 61 73 \npl.xticks(())\n\npl.title('Was
14540 73 65 72 73 74 65 69 6e 20 28 24 4d 24 20 6f 6e 6c 79 29 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 serstein.($M$.only)')\n\npl.subp
14560 6c 6f 74 28 31 2c 20 33 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 67 2c 20 63 6d 61 70 lot(1,.3,.2)\npl.imshow(Gg,.cmap
14580 3d 63 6d 61 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 =cmap,.interpolation='nearest')\
145a0 6e 70 6c 2e 74 69 74 6c 65 28 27 47 72 6f 6d 6f 76 20 28 24 43 5f 31 2c 43 5f 32 24 20 6f 6e 6c npl.title('Gromov.($C_1,C_2$.onl
145c0 79 29 27 29 5c 6e 70 6c 2e 78 74 69 63 6b 73 28 28 29 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 y)')\npl.xticks(())\npl.subplot(
145e0 31 2c 20 33 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 77 67 2c 20 63 6d 61 70 3d 63 6d 1,.3,.3)\npl.imshow(Gwg,.cmap=cm
14600 61 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 ap,.interpolation='nearest')\npl
14620 2e 74 69 74 6c 65 28 27 46 47 57 20 20 28 24 4d 2b 43 5f 31 2c 43 5f 32 24 29 27 29 5c 6e 5c 6e .title('FGW..($M+C_1,C_2$)')\n\n
14640 70 6c 2e 78 6c 61 62 65 6c 28 5c 22 24 6a 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 5c pl.xlabel(\"$j$\",.fontsize=fs)\
14660 6e 70 6c 2e 79 6c 61 62 65 6c 28 5c 22 24 69 24 5c 22 2c 20 66 6f 6e 74 73 69 7a 65 3d 66 73 29 npl.ylabel(\"$i$\",.fontsize=fs)
14680 5c 6e 5c 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 \n\npl.tight_layout()\npl.show()
146a0 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 ".......].....}...],..."metadata
146c0 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 ":.{....."kernelspec":.{......."
146e0 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 display_name":."Python.3",......
14700 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 ."language":."python",......."na
14720 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 me":."python3".....},....."langu
14740 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d age_info":.{......."codemirror_m
14760 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e ode":.{........."name":."ipython
14780 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c ",........."version":.3.......},
147a0 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a ......."file_extension":.".py",.
147c0 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e ......"mimetype":."text/x-python
147e0 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 ",......."name":."python",......
14800 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c ."nbconvert_exporter":."python",
14820 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f ......."pygments_lexer":."ipytho
14840 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 38 22 0a 20 20 n3",......."version":."3.6.8"...
14860 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 ..}...},..."nbformat":.4,..."nbf
14880 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 35 72 d9 4e 2a ormat_minor":.0.}PK........5r.N*
148a0 a3 88 70 7d 20 00 00 7d 20 00 00 19 00 00 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 66 ..p}...}.......plot_barycenter_f
148c0 67 77 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 gw.ipynb{..."cells":.[.....{....
148e0 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
14900 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
14920 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":.
14940 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":.
14960 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":.[........."%
14980 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".......].....}
149a0 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
149c0 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":.{},....
149e0 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 5c 6e 3d 3d 3d 3d 3d 3d ..."source":.[........."\n======
14a00 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 50 6c 6f ===========================\nPlo
14a20 74 20 67 72 61 70 68 73 27 20 62 61 72 79 63 65 6e 74 65 72 20 75 73 69 6e 67 20 46 47 57 5c 6e t.graphs'.barycenter.using.FGW\n
14a40 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
14a60 3d 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 =\n\nThis.example.illustrates.th
14a80 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 62 61 72 79 63 65 6e 74 65 72 20 6f 66 20 6c 61 62 65 e.computation.barycenter.of.labe
14aa0 6c 65 64 20 67 72 61 70 68 73 20 75 73 69 6e 67 20 46 47 57 5c 6e 5c 6e 52 65 71 75 69 72 65 73 led.graphs.using.FGW\n\nRequires
14ac0 20 6e 65 74 77 6f 72 6b 78 20 3e 3d 32 5c 6e 5c 6e 2e 2e 20 5b 31 38 5d 20 56 61 79 65 72 20 54 .networkx.>=2\n\n...[18].Vayer.T
14ae0 69 74 6f 75 61 6e 2c 20 43 68 61 70 65 6c 20 4c 61 65 74 69 74 69 61 2c 20 46 6c 61 6d 61 72 79 itouan,.Chapel.Laetitia,.Flamary
14b00 20 52 7b 27 65 7d 6d 69 2c 20 54 61 76 65 6e 61 72 64 20 52 6f 6d 61 69 6e 5c 6e 20 20 20 20 20 .R{'e}mi,.Tavenard.Romain\n.....
14b20 20 61 6e 64 20 43 6f 75 72 74 79 20 4e 69 63 6f 6c 61 73 5c 6e 20 20 20 20 5c 22 4f 70 74 69 6d .and.Courty.Nicolas\n....\"Optim
14b40 61 6c 20 54 72 61 6e 73 70 6f 72 74 20 66 6f 72 20 73 74 72 75 63 74 75 72 65 64 20 64 61 74 61 al.Transport.for.structured.data
14b60 20 77 69 74 68 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6f 6e 20 67 72 61 70 68 73 5c 22 5c 6e 20 .with.application.on.graphs\"\n.
14b80 20 20 20 49 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20 43 6f 6e 66 65 72 65 6e 63 65 20 6f 6e 20 4d ...International.Conference.on.M
14ba0 61 63 68 69 6e 65 20 4c 65 61 72 6e 69 6e 67 20 28 49 43 4d 4c 29 2e 20 32 30 31 39 2e 5c 6e 5c achine.Learning.(ICML)..2019.\n\
14bc0 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".......].....},.....{.......
14be0 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
14c00 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
14c20 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
14c40 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":.[],
14c60 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
14c80 74 68 6f 72 3a 20 54 69 74 6f 75 61 6e 20 56 61 79 65 72 20 3c 74 69 74 6f 75 61 6e 2e 76 61 79 thor:.Titouan.Vayer.<titouan.vay
14ca0 65 72 40 69 72 69 73 61 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 er@irisa.fr>\n#\n#.License:.MIT.
14cc0 4c 69 63 65 6e 73 65 5c 6e 5c 6e 23 25 25 20 6c 6f 61 64 20 6c 69 62 72 61 72 69 65 73 5c 6e 69 License\n\n#%%.load.libraries\ni
14ce0 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 6c 6f mport.numpy.as.np\nimport.matplo
14d00 74 6c 69 62 2e 70 79 70 6c 6f 74 20 61 73 20 70 6c 74 5c 6e 69 6d 70 6f 72 74 20 6e 65 74 77 6f tlib.pyplot.as.plt\nimport.netwo
14d20 72 6b 78 20 61 73 20 6e 78 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 68 5c 6e 66 72 6f 6d 20 73 63 69 rkx.as.nx\nimport.math\nfrom.sci
14d40 70 79 2e 73 70 61 72 73 65 2e 63 73 67 72 61 70 68 20 69 6d 70 6f 72 74 20 73 68 6f 72 74 65 73 py.sparse.csgraph.import.shortes
14d60 74 5f 70 61 74 68 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 63 6f 6c 6f 72 73 t_path\nimport.matplotlib.colors
14d80 20 61 73 20 6d 63 6f 6c 5c 6e 66 72 6f 6d 20 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6d 70 6f 72 74 .as.mcol\nfrom.matplotlib.import
14da0 20 63 6d 5c 6e 66 72 6f 6d 20 6f 74 2e 67 72 6f 6d 6f 76 20 69 6d 70 6f 72 74 20 66 67 77 5f 62 .cm\nfrom.ot.gromov.import.fgw_b
14dc0 61 72 79 63 65 6e 74 65 72 73 5c 6e 23 25 25 20 47 72 61 70 68 20 66 75 6e 63 74 69 6f 6e 73 5c arycenters\n#%%.Graph.functions\
14de0 6e 5c 6e 5c 6e 64 65 66 20 66 69 6e 64 5f 74 68 72 65 73 68 28 43 2c 20 69 6e 66 3d 30 2e 35 2c n\n\ndef.find_thresh(C,.inf=0.5,
14e00 20 73 75 70 3d 33 2c 20 73 74 65 70 3d 31 30 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 20 54 72 .sup=3,.step=10):\n....\"\"\".Tr
14e20 69 63 6b 20 74 6f 20 66 69 6e 64 20 74 68 65 20 61 64 65 71 75 61 74 65 20 74 68 72 65 73 68 6f ick.to.find.the.adequate.thresho
14e40 6c 64 73 20 66 72 6f 6d 20 77 68 65 72 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 43 20 6d 61 lds.from.where.value.of.the.C.ma
14e60 74 72 69 78 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20 63 6c 6f 73 65 20 65 6e 6f 75 67 68 trix.are.considered.close.enough
14e80 20 74 6f 20 73 61 79 20 74 68 61 74 20 6e 6f 64 65 73 20 61 72 65 20 63 6f 6e 6e 65 63 74 65 64 .to.say.that.nodes.are.connected
14ea0 5c 6e 20 20 20 20 20 20 20 20 54 74 68 65 20 74 68 72 65 73 68 6f 6c 64 20 69 73 20 66 6f 75 6e \n........Tthe.threshold.is.foun
14ec0 64 20 62 79 20 61 20 6c 69 6e 65 73 65 61 72 63 68 20 62 65 74 77 65 65 6e 20 76 61 6c 75 65 73 d.by.a.linesearch.between.values
14ee0 20 5c 22 69 6e 66 5c 22 20 61 6e 64 20 5c 22 73 75 70 5c 22 20 77 69 74 68 20 5c 22 73 74 65 70 .\"inf\".and.\"sup\".with.\"step
14f00 5c 22 20 74 68 72 65 73 68 6f 6c 64 73 20 74 65 73 74 65 64 2e 5c 6e 20 20 20 20 20 20 20 20 54 \".thresholds.tested.\n........T
14f20 68 65 20 6f 70 74 69 6d 61 6c 20 74 68 72 65 73 68 6f 6c 64 20 69 73 20 74 68 65 20 6f 6e 65 20 he.optimal.threshold.is.the.one.
14f40 77 68 69 63 68 20 6d 69 6e 69 6d 69 7a 65 73 20 74 68 65 20 72 65 63 6f 6e 73 74 72 75 63 74 69 which.minimizes.the.reconstructi
14f60 6f 6e 20 65 72 72 6f 72 20 62 65 74 77 65 65 6e 20 74 68 65 20 73 68 6f 72 74 65 73 74 5f 70 61 on.error.between.the.shortest_pa
14f80 74 68 20 6d 61 74 72 69 78 20 63 6f 6d 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 74 68 72 65 73 68 th.matrix.coming.from.the.thresh
14fa0 6f 6c 64 65 64 20 61 64 6a 65 6e 63 79 20 6d 61 74 72 69 78 5c 6e 20 20 20 20 20 20 20 20 61 6e olded.adjency.matrix\n........an
14fc0 64 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 6d 61 74 72 69 78 2e 5c 6e 20 20 20 20 50 61 72 61 d.the.original.matrix.\n....Para
14fe0 6d 65 74 65 72 73 5c 6e 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 20 20 20 20 43 20 3a 20 meters\n....----------\n....C.:.
15000 6e 64 61 72 72 61 79 2c 20 73 68 61 70 65 20 28 6e 5f 6e 6f 64 65 73 2c 6e 5f 6e 6f 64 65 73 29 ndarray,.shape.(n_nodes,n_nodes)
15020 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 73 74 72 75 63 74 75 72 65 20 6d 61 74 72 \n............The.structure.matr
15040 69 78 20 74 6f 20 74 68 72 65 73 68 6f 6c 64 5c 6e 20 20 20 20 69 6e 66 20 3a 20 66 6c 6f 61 74 ix.to.threshold\n....inf.:.float
15060 5c 6e 20 20 20 20 20 20 20 20 20 20 54 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 \n..........The.beginning.of.the
15080 20 6c 69 6e 65 73 65 61 72 63 68 5c 6e 20 20 20 20 73 75 70 20 3a 20 66 6c 6f 61 74 5c 6e 20 20 .linesearch\n....sup.:.float\n..
150a0 20 20 20 20 20 20 20 20 54 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 6e 65 73 65 61 72 63 ........The.end.of.the.linesearc
150c0 68 5c 6e 20 20 20 20 73 74 65 70 20 3a 20 69 6e 74 65 67 65 72 5c 6e 20 20 20 20 20 20 20 20 20 h\n....step.:.integer\n.........
150e0 20 20 20 4e 75 6d 62 65 72 20 6f 66 20 74 68 72 65 73 68 6f 6c 64 73 20 74 65 73 74 65 64 5c 6e ...Number.of.thresholds.tested\n
15100 20 20 20 20 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 64 69 73 74 20 3d 20 5b 5d 5c 6e 20 20 20 20 73 ....\"\"\"\n....dist.=.[]\n....s
15120 65 61 72 63 68 20 3d 20 6e 70 2e 6c 69 6e 73 70 61 63 65 28 69 6e 66 2c 20 73 75 70 2c 20 73 74 earch.=.np.linspace(inf,.sup,.st
15140 65 70 29 5c 6e 20 20 20 20 66 6f 72 20 74 68 72 65 73 68 20 69 6e 20 73 65 61 72 63 68 3a 5c 6e ep)\n....for.thresh.in.search:\n
15160 20 20 20 20 20 20 20 20 43 70 72 69 6d 65 20 3d 20 73 70 5f 74 6f 5f 61 64 6a 65 6e 63 79 28 43 ........Cprime.=.sp_to_adjency(C
15180 2c 20 30 2c 20 74 68 72 65 73 68 29 5c 6e 20 20 20 20 20 20 20 20 53 43 20 3d 20 73 68 6f 72 74 ,.0,.thresh)\n........SC.=.short
151a0 65 73 74 5f 70 61 74 68 28 43 70 72 69 6d 65 2c 20 6d 65 74 68 6f 64 3d 27 44 27 29 5c 6e 20 20 est_path(Cprime,.method='D')\n..
151c0 20 20 20 20 20 20 53 43 5b 53 43 20 3d 3d 20 66 6c 6f 61 74 28 27 69 6e 66 27 29 5d 20 3d 20 31 ......SC[SC.==.float('inf')].=.1
151e0 30 30 5c 6e 20 20 20 20 20 20 20 20 64 69 73 74 2e 61 70 70 65 6e 64 28 6e 70 2e 6c 69 6e 61 6c 00\n........dist.append(np.linal
15200 67 2e 6e 6f 72 6d 28 53 43 20 2d 20 43 29 29 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 73 65 61 72 g.norm(SC.-.C))\n....return.sear
15220 63 68 5b 6e 70 2e 61 72 67 6d 69 6e 28 64 69 73 74 29 5d 2c 20 64 69 73 74 5c 6e 5c 6e 5c 6e 64 ch[np.argmin(dist)],.dist\n\n\nd
15240 65 66 20 73 70 5f 74 6f 5f 61 64 6a 65 6e 63 79 28 43 2c 20 74 68 72 65 73 68 69 6e 66 3d 30 2e ef.sp_to_adjency(C,.threshinf=0.
15260 32 2c 20 74 68 72 65 73 68 73 75 70 3d 31 2e 38 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 20 54 2,.threshsup=1.8):\n....\"\"\".T
15280 68 72 65 73 68 6f 6c 64 73 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 6d 61 74 72 69 78 20 69 hresholds.the.structure.matrix.i
152a0 6e 20 6f 72 64 65 72 20 74 6f 20 63 6f 6d 70 75 74 65 20 61 6e 20 61 64 6a 65 6e 63 79 20 6d 61 n.order.to.compute.an.adjency.ma
152c0 74 72 69 78 2e 5c 6e 20 20 20 20 41 6c 6c 20 76 61 6c 75 65 73 20 62 65 74 77 65 65 6e 20 74 68 trix.\n....All.values.between.th
152e0 72 65 73 68 69 6e 66 20 61 6e 64 20 74 68 72 65 73 68 73 75 70 20 61 72 65 20 63 6f 6e 73 69 64 reshinf.and.threshsup.are.consid
15300 65 72 65 64 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 63 6f 6e 6e 65 63 74 65 64 20 6e 6f 64 65 ered.representing.connected.node
15320 73 20 61 6e 64 20 73 65 74 20 74 6f 20 31 2e 20 45 6c 73 65 20 61 72 65 20 73 65 74 20 74 6f 20 s.and.set.to.1..Else.are.set.to.
15340 30 5c 6e 20 20 20 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 0\n....Parameters\n....---------
15360 2d 5c 6e 20 20 20 20 43 20 3a 20 6e 64 61 72 72 61 79 2c 20 73 68 61 70 65 20 28 6e 5f 6e 6f 64 -\n....C.:.ndarray,.shape.(n_nod
15380 65 73 2c 6e 5f 6e 6f 64 65 73 29 5c 6e 20 20 20 20 20 20 20 20 54 68 65 20 73 74 72 75 63 74 75 es,n_nodes)\n........The.structu
153a0 72 65 20 6d 61 74 72 69 78 20 74 6f 20 74 68 72 65 73 68 6f 6c 64 5c 6e 20 20 20 20 74 68 72 65 re.matrix.to.threshold\n....thre
153c0 73 68 69 6e 66 20 3a 20 66 6c 6f 61 74 5c 6e 20 20 20 20 20 20 20 20 54 68 65 20 6d 69 6e 69 6d shinf.:.float\n........The.minim
153e0 75 6d 20 76 61 6c 75 65 20 6f 66 20 64 69 73 74 61 6e 63 65 20 66 72 6f 6d 20 77 68 69 63 68 20 um.value.of.distance.from.which.
15400 74 68 65 20 6e 65 77 20 76 61 6c 75 65 20 69 73 20 73 65 74 20 74 6f 20 31 5c 6e 20 20 20 20 74 the.new.value.is.set.to.1\n....t
15420 68 72 65 73 68 73 75 70 20 3a 20 66 6c 6f 61 74 5c 6e 20 20 20 20 20 20 20 20 54 68 65 20 6d 61 hreshsup.:.float\n........The.ma
15440 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 64 69 73 74 61 6e 63 65 20 66 72 6f 6d 20 77 68 69 ximum.value.of.distance.from.whi
15460 63 68 20 74 68 65 20 6e 65 77 20 76 61 6c 75 65 20 69 73 20 73 65 74 20 74 6f 20 31 5c 6e 20 20 ch.the.new.value.is.set.to.1\n..
15480 20 20 52 65 74 75 72 6e 73 5c 6e 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 5c 6e 20 20 20 20 43 20 3a 20 ..Returns\n....-------\n....C.:.
154a0 6e 64 61 72 72 61 79 2c 20 73 68 61 70 65 20 28 6e 5f 6e 6f 64 65 73 2c 6e 5f 6e 6f 64 65 73 29 ndarray,.shape.(n_nodes,n_nodes)
154c0 5c 6e 20 20 20 20 20 20 20 20 54 68 65 20 74 68 72 65 73 68 6f 6c 64 20 6d 61 74 72 69 78 2e 20 \n........The.threshold.matrix..
154e0 45 61 63 68 20 65 6c 65 6d 65 6e 74 20 69 73 20 69 6e 20 7b 30 2c 31 7d 5c 6e 20 20 20 20 5c 22 Each.element.is.in.{0,1}\n....\"
15500 5c 22 5c 22 5c 6e 20 20 20 20 48 20 3d 20 6e 70 2e 7a 65 72 6f 73 5f 6c 69 6b 65 28 43 29 5c 6e \"\"\n....H.=.np.zeros_like(C)\n
15520 20 20 20 20 6e 70 2e 66 69 6c 6c 5f 64 69 61 67 6f 6e 61 6c 28 48 2c 20 6e 70 2e 64 69 61 67 6f ....np.fill_diagonal(H,.np.diago
15540 6e 61 6c 28 43 29 29 5c 6e 20 20 20 20 43 20 3d 20 43 20 2d 20 48 5c 6e 20 20 20 20 43 20 3d 20 nal(C))\n....C.=.C.-.H\n....C.=.
15560 6e 70 2e 6d 69 6e 69 6d 75 6d 28 6e 70 2e 6d 61 78 69 6d 75 6d 28 43 2c 20 74 68 72 65 73 68 69 np.minimum(np.maximum(C,.threshi
15580 6e 66 29 2c 20 74 68 72 65 73 68 73 75 70 29 5c 6e 20 20 20 20 43 5b 43 20 3d 3d 20 74 68 72 65 nf),.threshsup)\n....C[C.==.thre
155a0 73 68 73 75 70 5d 20 3d 20 30 5c 6e 20 20 20 20 43 5b 43 20 21 3d 20 30 5d 20 3d 20 31 5c 6e 5c shsup].=.0\n....C[C.!=.0].=.1\n\
155c0 6e 20 20 20 20 72 65 74 75 72 6e 20 43 5c 6e 5c 6e 5c 6e 64 65 66 20 62 75 69 6c 64 5f 6e 6f 69 n....return.C\n\n\ndef.build_noi
155e0 73 79 5f 63 69 72 63 75 6c 61 72 5f 67 72 61 70 68 28 4e 3d 32 30 2c 20 6d 75 3d 30 2c 20 73 69 sy_circular_graph(N=20,.mu=0,.si
15600 67 6d 61 3d 30 2e 33 2c 20 77 69 74 68 5f 6e 6f 69 73 65 3d 46 61 6c 73 65 2c 20 73 74 72 75 63 gma=0.3,.with_noise=False,.struc
15620 74 75 72 65 5f 6e 6f 69 73 65 3d 46 61 6c 73 65 2c 20 70 3d 4e 6f 6e 65 29 3a 5c 6e 20 20 20 20 ture_noise=False,.p=None):\n....
15640 5c 22 5c 22 5c 22 20 43 72 65 61 74 65 20 61 20 6e 6f 69 73 79 20 63 69 72 63 75 6c 61 72 20 67 \"\"\".Create.a.noisy.circular.g
15660 72 61 70 68 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 67 20 3d 20 6e 78 2e 47 72 61 raph\n....\"\"\"\n....g.=.nx.Gra
15680 70 68 28 29 5c 6e 20 20 20 20 67 2e 61 64 64 5f 6e 6f 64 65 73 5f 66 72 6f 6d 28 6c 69 73 74 28 ph()\n....g.add_nodes_from(list(
156a0 72 61 6e 67 65 28 4e 29 29 29 5c 6e 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 4e range(N)))\n....for.i.in.range(N
156c0 29 3a 5c 6e 20 20 20 20 20 20 20 20 6e 6f 69 73 65 20 3d 20 66 6c 6f 61 74 28 6e 70 2e 72 61 6e ):\n........noise.=.float(np.ran
156e0 64 6f 6d 2e 6e 6f 72 6d 61 6c 28 6d 75 2c 20 73 69 67 6d 61 2c 20 31 29 29 5c 6e 20 20 20 20 20 dom.normal(mu,.sigma,.1))\n.....
15700 20 20 20 69 66 20 77 69 74 68 5f 6e 6f 69 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 67 ...if.with_noise:\n............g
15720 2e 61 64 64 5f 6e 6f 64 65 28 69 2c 20 61 74 74 72 5f 6e 61 6d 65 3d 6d 61 74 68 2e 73 69 6e 28 .add_node(i,.attr_name=math.sin(
15740 28 32 20 2a 20 69 20 2a 20 6d 61 74 68 2e 70 69 20 2f 20 4e 29 29 20 2b 20 6e 6f 69 73 65 29 5c (2.*.i.*.math.pi./.N)).+.noise)\
15760 6e 20 20 20 20 20 20 20 20 65 6c 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 67 2e 61 64 n........else:\n............g.ad
15780 64 5f 6e 6f 64 65 28 69 2c 20 61 74 74 72 5f 6e 61 6d 65 3d 6d 61 74 68 2e 73 69 6e 28 32 20 2a d_node(i,.attr_name=math.sin(2.*
157a0 20 69 20 2a 20 6d 61 74 68 2e 70 69 20 2f 20 4e 29 29 5c 6e 20 20 20 20 20 20 20 20 67 2e 61 64 .i.*.math.pi./.N))\n........g.ad
157c0 64 5f 65 64 67 65 28 69 2c 20 69 20 2b 20 31 29 5c 6e 20 20 20 20 20 20 20 20 69 66 20 73 74 72 d_edge(i,.i.+.1)\n........if.str
157e0 75 63 74 75 72 65 5f 6e 6f 69 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 72 61 6e 64 6f ucture_noise:\n............rando
15800 6d 69 6e 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 30 2c 20 70 29 5c 6e mint.=.np.random.randint(0,.p)\n
15820 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 72 61 6e 64 6f 6d 69 6e 74 20 3d 3d 20 30 3a 5c 6e ............if.randomint.==.0:\n
15840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 20 3c 3d 20 4e 20 2d 20 33 3a 5c 6e ................if.i.<=.N.-.3:\n
15860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 2e 61 64 64 5f 65 64 67 65 28 69 ....................g.add_edge(i
15880 2c 20 69 20 2b 20 32 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 20 3d ,.i.+.2)\n................if.i.=
158a0 3d 20 4e 20 2d 20 32 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 2e =.N.-.2:\n....................g.
158c0 61 64 64 5f 65 64 67 65 28 69 2c 20 30 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 add_edge(i,.0)\n................
158e0 69 66 20 69 20 3d 3d 20 4e 20 2d 20 31 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.i.==.N.-.1:\n................
15900 20 20 20 20 67 2e 61 64 64 5f 65 64 67 65 28 69 2c 20 31 29 5c 6e 20 20 20 20 67 2e 61 64 64 5f ....g.add_edge(i,.1)\n....g.add_
15920 65 64 67 65 28 4e 2c 20 30 29 5c 6e 20 20 20 20 6e 6f 69 73 65 20 3d 20 66 6c 6f 61 74 28 6e 70 edge(N,.0)\n....noise.=.float(np
15940 2e 72 61 6e 64 6f 6d 2e 6e 6f 72 6d 61 6c 28 6d 75 2c 20 73 69 67 6d 61 2c 20 31 29 29 5c 6e 20 .random.normal(mu,.sigma,.1))\n.
15960 20 20 20 69 66 20 77 69 74 68 5f 6e 6f 69 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 67 2e 61 64 64 ...if.with_noise:\n........g.add
15980 5f 6e 6f 64 65 28 4e 2c 20 61 74 74 72 5f 6e 61 6d 65 3d 6d 61 74 68 2e 73 69 6e 28 28 32 20 2a _node(N,.attr_name=math.sin((2.*
159a0 20 4e 20 2a 20 6d 61 74 68 2e 70 69 20 2f 20 4e 29 29 20 2b 20 6e 6f 69 73 65 29 5c 6e 20 20 20 .N.*.math.pi./.N)).+.noise)\n...
159c0 20 65 6c 73 65 3a 5c 6e 20 20 20 20 20 20 20 20 67 2e 61 64 64 5f 6e 6f 64 65 28 4e 2c 20 61 74 .else:\n........g.add_node(N,.at
159e0 74 72 5f 6e 61 6d 65 3d 6d 61 74 68 2e 73 69 6e 28 32 20 2a 20 4e 20 2a 20 6d 61 74 68 2e 70 69 tr_name=math.sin(2.*.N.*.math.pi
15a00 20 2f 20 4e 29 29 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 67 5c 6e 5c 6e 5c 6e 64 65 66 20 67 72 ./.N))\n....return.g\n\n\ndef.gr
15a20 61 70 68 5f 63 6f 6c 6f 72 73 28 6e 78 5f 67 72 61 70 68 2c 20 76 6d 69 6e 3d 30 2c 20 76 6d 61 aph_colors(nx_graph,.vmin=0,.vma
15a40 78 3d 37 29 3a 5c 6e 20 20 20 20 63 6e 6f 72 6d 20 3d 20 6d 63 6f 6c 2e 4e 6f 72 6d 61 6c 69 7a x=7):\n....cnorm.=.mcol.Normaliz
15a60 65 28 76 6d 69 6e 3d 76 6d 69 6e 2c 20 76 6d 61 78 3d 76 6d 61 78 29 5c 6e 20 20 20 20 63 70 69 e(vmin=vmin,.vmax=vmax)\n....cpi
15a80 63 6b 20 3d 20 63 6d 2e 53 63 61 6c 61 72 4d 61 70 70 61 62 6c 65 28 6e 6f 72 6d 3d 63 6e 6f 72 ck.=.cm.ScalarMappable(norm=cnor
15aa0 6d 2c 20 63 6d 61 70 3d 27 76 69 72 69 64 69 73 27 29 5c 6e 20 20 20 20 63 70 69 63 6b 2e 73 65 m,.cmap='viridis')\n....cpick.se
15ac0 74 5f 61 72 72 61 79 28 5b 5d 29 5c 6e 20 20 20 20 76 61 6c 5f 6d 61 70 20 3d 20 7b 7d 5c 6e 20 t_array([])\n....val_map.=.{}\n.
15ae0 20 20 20 66 6f 72 20 6b 2c 20 76 20 69 6e 20 6e 78 2e 67 65 74 5f 6e 6f 64 65 5f 61 74 74 72 69 ...for.k,.v.in.nx.get_node_attri
15b00 62 75 74 65 73 28 6e 78 5f 67 72 61 70 68 2c 20 27 61 74 74 72 5f 6e 61 6d 65 27 29 2e 69 74 65 butes(nx_graph,.'attr_name').ite
15b20 6d 73 28 29 3a 5c 6e 20 20 20 20 20 20 20 20 76 61 6c 5f 6d 61 70 5b 6b 5d 20 3d 20 63 70 69 63 ms():\n........val_map[k].=.cpic
15b40 6b 2e 74 6f 5f 72 67 62 61 28 76 29 5c 6e 20 20 20 20 63 6f 6c 6f 72 73 20 3d 20 5b 5d 5c 6e 20 k.to_rgba(v)\n....colors.=.[]\n.
15b60 20 20 20 66 6f 72 20 6e 6f 64 65 20 69 6e 20 6e 78 5f 67 72 61 70 68 2e 6e 6f 64 65 73 28 29 3a ...for.node.in.nx_graph.nodes():
15b80 5c 6e 20 20 20 20 20 20 20 20 63 6f 6c 6f 72 73 2e 61 70 70 65 6e 64 28 76 61 6c 5f 6d 61 70 5b \n........colors.append(val_map[
15ba0 6e 6f 64 65 5d 29 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6c 6f 72 73 22 0a 20 20 20 20 20 node])\n....return.colors"......
15bc0 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
15be0 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":
15c00 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":.[........."
15c20 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
15c40 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
15c60 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
15c80 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
15ca0 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.
15cc0 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":.[],...
15ce0 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 63 69 72 ...."source":.[........."#%%.cir
15d00 63 75 6c 61 72 20 64 61 74 61 73 65 74 5c 6e 23 20 57 65 20 62 75 69 6c 64 20 61 20 64 61 74 61 cular.dataset\n#.We.build.a.data
15d20 73 65 74 20 6f 66 20 6e 6f 69 73 79 20 63 69 72 63 75 6c 61 72 20 67 72 61 70 68 73 2e 5c 6e 23 set.of.noisy.circular.graphs.\n#
15d40 20 4e 6f 69 73 65 20 69 73 20 61 64 64 65 64 20 6f 6e 20 74 68 65 20 73 74 72 75 63 74 75 72 65 .Noise.is.added.on.the.structure
15d60 73 20 62 79 20 72 61 6e 64 6f 6d 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64 20 6f 6e 20 74 s.by.random.connections.and.on.t
15d80 68 65 20 66 65 61 74 75 72 65 73 20 62 79 20 67 61 75 73 73 69 61 6e 20 6e 6f 69 73 65 2e 5c 6e he.features.by.gaussian.noise.\n
15da0 5c 6e 5c 6e 6e 70 2e 72 61 6e 64 6f 6d 2e 73 65 65 64 28 33 30 29 5c 6e 58 30 20 3d 20 5b 5d 5c \n\nnp.random.seed(30)\nX0.=.[]\
15dc0 6e 66 6f 72 20 6b 20 69 6e 20 72 61 6e 67 65 28 39 29 3a 5c 6e 20 20 20 20 58 30 2e 61 70 70 65 nfor.k.in.range(9):\n....X0.appe
15de0 6e 64 28 62 75 69 6c 64 5f 6e 6f 69 73 79 5f 63 69 72 63 75 6c 61 72 5f 67 72 61 70 68 28 6e 70 nd(build_noisy_circular_graph(np
15e00 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 31 35 2c 20 32 35 29 2c 20 77 69 74 68 5f 6e 6f .random.randint(15,.25),.with_no
15e20 69 73 65 3d 54 72 75 65 2c 20 73 74 72 75 63 74 75 72 65 5f 6e 6f 69 73 65 3d 54 72 75 65 2c 20 ise=True,.structure_noise=True,.
15e40 70 3d 33 29 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 p=3))".......].....},.....{.....
15e60 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",......
15e80 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":
15ea0 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 2d .[........."Plot.data\n---------
15ec0 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".......].....},.....{......
15ee0 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
15f00 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
15f20 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
15f40 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":.[]
15f60 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":.[........."#%%
15f80 20 50 6c 6f 74 20 67 72 61 70 68 73 5c 6e 5c 6e 70 6c 74 2e 66 69 67 75 72 65 28 66 69 67 73 69 .Plot.graphs\n\nplt.figure(figsi
15fa0 7a 65 3d 28 38 2c 20 31 30 29 29 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 ze=(8,.10))\nfor.i.in.range(len(
15fc0 58 30 29 29 3a 5c 6e 20 20 20 20 70 6c 74 2e 73 75 62 70 6c 6f 74 28 33 2c 20 33 2c 20 69 20 2b X0)):\n....plt.subplot(3,.3,.i.+
15fe0 20 31 29 5c 6e 20 20 20 20 67 20 3d 20 58 30 5b 69 5d 5c 6e 20 20 20 20 70 6f 73 20 3d 20 6e 78 .1)\n....g.=.X0[i]\n....pos.=.nx
16000 2e 6b 61 6d 61 64 61 5f 6b 61 77 61 69 5f 6c 61 79 6f 75 74 28 67 29 5c 6e 20 20 20 20 6e 78 2e .kamada_kawai_layout(g)\n....nx.
16020 64 72 61 77 28 67 2c 20 70 6f 73 3d 70 6f 73 2c 20 6e 6f 64 65 5f 63 6f 6c 6f 72 3d 67 72 61 70 draw(g,.pos=pos,.node_color=grap
16040 68 5f 63 6f 6c 6f 72 73 28 67 2c 20 76 6d 69 6e 3d 2d 31 2c 20 76 6d 61 78 3d 31 29 2c 20 77 69 h_colors(g,.vmin=-1,.vmax=1),.wi
16060 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 2c 20 6e 6f 64 65 5f 73 69 7a 65 3d 31 30 30 29 5c th_labels=False,.node_size=100)\
16080 6e 70 6c 74 2e 73 75 70 74 69 74 6c 65 28 27 44 61 74 61 73 65 74 20 6f 66 20 6e 6f 69 73 79 20 nplt.suptitle('Dataset.of.noisy.
160a0 67 72 61 70 68 73 2e 20 43 6f 6c 6f 72 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 6c 61 62 65 graphs..Color.indicates.the.labe
160c0 6c 27 2c 20 66 6f 6e 74 73 69 7a 65 3d 32 30 29 5c 6e 70 6c 74 2e 73 68 6f 77 28 29 22 0a 20 20 l',.fontsize=20)\nplt.show()"...
160e0 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
16100 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
16120 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":.[.......
16140 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 5c 6e 2d 2d 2d 2d 2d .."Barycenter.computation\n-----
16160 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 -----------------\n\n".......]..
16180 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":."
161a0 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":.
161c0 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":.{.......
161e0 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.......},...
16200 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
16220 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 57 65 20 63 6f 6d 70 75 74 65 20 74 68 65 ":.[........."#%%.We.compute.the
16240 20 62 61 72 79 63 65 6e 74 65 72 20 75 73 69 6e 67 20 46 47 57 2e 20 53 74 72 75 63 74 75 72 65 .barycenter.using.FGW..Structure
16260 20 6d 61 74 72 69 63 65 73 20 61 72 65 20 63 6f 6d 70 75 74 65 64 20 75 73 69 6e 67 20 74 68 65 .matrices.are.computed.using.the
16280 20 73 68 6f 72 74 65 73 74 5f 70 61 74 68 20 64 69 73 74 61 6e 63 65 20 69 6e 20 74 68 65 20 67 .shortest_path.distance.in.the.g
162a0 72 61 70 68 5c 6e 23 20 46 65 61 74 75 72 65 73 20 64 69 73 74 61 6e 63 65 73 20 61 72 65 20 74 raph\n#.Features.distances.are.t
162c0 68 65 20 65 75 63 6c 69 64 65 61 6e 20 64 69 73 74 61 6e 63 65 73 5c 6e 43 73 20 3d 20 5b 73 68 he.euclidean.distances\nCs.=.[sh
162e0 6f 72 74 65 73 74 5f 70 61 74 68 28 6e 78 2e 61 64 6a 61 63 65 6e 63 79 5f 6d 61 74 72 69 78 28 ortest_path(nx.adjacency_matrix(
16300 78 29 29 20 66 6f 72 20 78 20 69 6e 20 58 30 5d 5c 6e 70 73 20 3d 20 5b 6e 70 2e 6f 6e 65 73 28 x)).for.x.in.X0]\nps.=.[np.ones(
16320 6c 65 6e 28 78 2e 6e 6f 64 65 73 28 29 29 29 20 2f 20 6c 65 6e 28 78 2e 6e 6f 64 65 73 28 29 29 len(x.nodes()))./.len(x.nodes())
16340 20 66 6f 72 20 78 20 69 6e 20 58 30 5d 5c 6e 59 73 20 3d 20 5b 6e 70 2e 61 72 72 61 79 28 5b 76 .for.x.in.X0]\nYs.=.[np.array([v
16360 20 66 6f 72 20 28 6b 2c 20 76 29 20 69 6e 20 6e 78 2e 67 65 74 5f 6e 6f 64 65 5f 61 74 74 72 69 .for.(k,.v).in.nx.get_node_attri
16380 62 75 74 65 73 28 78 2c 20 27 61 74 74 72 5f 6e 61 6d 65 27 29 2e 69 74 65 6d 73 28 29 5d 29 2e butes(x,.'attr_name').items()]).
163a0 72 65 73 68 61 70 65 28 2d 31 2c 20 31 29 20 66 6f 72 20 78 20 69 6e 20 58 30 5d 5c 6e 6c 61 6d reshape(-1,.1).for.x.in.X0]\nlam
163c0 62 64 61 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 6e 70 2e 6f 6e 65 73 28 6c 65 6e 28 59 73 29 bdas.=.np.array([np.ones(len(Ys)
163e0 29 20 2f 20 6c 65 6e 28 59 73 29 5d 29 2e 72 61 76 65 6c 28 29 5c 6e 73 69 7a 65 62 61 72 79 20 )./.len(Ys)]).ravel()\nsizebary.
16400 3d 20 31 35 20 20 23 20 77 65 20 63 68 6f 6f 73 65 20 61 20 62 61 72 79 63 65 6e 74 65 72 20 77 =.15..#.we.choose.a.barycenter.w
16420 69 74 68 20 31 35 20 6e 6f 64 65 73 5c 6e 5c 6e 41 2c 20 43 2c 20 6c 6f 67 20 3d 20 66 67 77 5f ith.15.nodes\n\nA,.C,.log.=.fgw_
16440 62 61 72 79 63 65 6e 74 65 72 73 28 73 69 7a 65 62 61 72 79 2c 20 59 73 2c 20 43 73 2c 20 70 73 barycenters(sizebary,.Ys,.Cs,.ps
16460 2c 20 6c 61 6d 62 64 61 73 2c 20 61 6c 70 68 61 3d 30 2e 39 35 2c 20 6c 6f 67 3d 54 72 75 65 29 ,.lambdas,.alpha=0.95,.log=True)
16480 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
164a0 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
164c0 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":.[...
164e0 20 20 20 20 20 20 22 50 6c 6f 74 20 42 61 72 79 63 65 6e 74 65 72 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d ......"Plot.Barycenter\n--------
16500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 -----------------\n\n".......]..
16520 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":."
16540 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":.
16560 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":.{.......
16580 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.......},...
165a0 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
165c0 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 43 72 65 61 74 65 20 74 68 65 20 62 61 72 ":.[........."#%%.Create.the.bar
165e0 79 63 65 6e 74 65 72 5c 6e 62 61 72 79 20 3d 20 6e 78 2e 66 72 6f 6d 5f 6e 75 6d 70 79 5f 6d 61 ycenter\nbary.=.nx.from_numpy_ma
16600 74 72 69 78 28 73 70 5f 74 6f 5f 61 64 6a 65 6e 63 79 28 43 2c 20 74 68 72 65 73 68 69 6e 66 3d trix(sp_to_adjency(C,.threshinf=
16620 30 2c 20 74 68 72 65 73 68 73 75 70 3d 66 69 6e 64 5f 74 68 72 65 73 68 28 43 2c 20 73 75 70 3d 0,.threshsup=find_thresh(C,.sup=
16640 31 30 30 2c 20 73 74 65 70 3d 31 30 30 29 5b 30 5d 29 29 5c 6e 66 6f 72 20 69 2c 20 76 20 69 6e 100,.step=100)[0]))\nfor.i,.v.in
16660 20 65 6e 75 6d 65 72 61 74 65 28 41 2e 72 61 76 65 6c 28 29 29 3a 5c 6e 20 20 20 20 62 61 72 79 .enumerate(A.ravel()):\n....bary
16680 2e 61 64 64 5f 6e 6f 64 65 28 69 2c 20 61 74 74 72 5f 6e 61 6d 65 3d 76 29 5c 6e 5c 6e 23 25 25 .add_node(i,.attr_name=v)\n\n#%%
166a0 5c 6e 70 6f 73 20 3d 20 6e 78 2e 6b 61 6d 61 64 61 5f 6b 61 77 61 69 5f 6c 61 79 6f 75 74 28 62 \npos.=.nx.kamada_kawai_layout(b
166c0 61 72 79 29 5c 6e 6e 78 2e 64 72 61 77 28 62 61 72 79 2c 20 70 6f 73 3d 70 6f 73 2c 20 6e 6f 64 ary)\nnx.draw(bary,.pos=pos,.nod
166e0 65 5f 63 6f 6c 6f 72 3d 67 72 61 70 68 5f 63 6f 6c 6f 72 73 28 62 61 72 79 2c 20 76 6d 69 6e 3d e_color=graph_colors(bary,.vmin=
16700 2d 31 2c 20 76 6d 61 78 3d 31 29 2c 20 77 69 74 68 5f 6c 61 62 65 6c 73 3d 46 61 6c 73 65 29 5c -1,.vmax=1),.with_labels=False)\
16720 6e 70 6c 74 2e 73 75 70 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 27 2c 20 66 6f 6e 74 nplt.suptitle('Barycenter',.font
16740 73 69 7a 65 3d 32 30 29 5c 6e 70 6c 74 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 size=20)\nplt.show()".......]...
16760 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 ..}...],..."metadata":.{....."ke
16780 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 rnelspec":.{......."display_name
167a0 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a ":."Python.3",......."language":
167c0 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e ."python",......."name":."python
167e0 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 3".....},....."language_info":.{
16800 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 ......."codemirror_mode":.{.....
16820 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 ...."name":."ipython",........."
16840 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 version":.3.......},......."file
16860 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 _extension":.".py",......."mimet
16880 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 ype":."text/x-python",......."na
168a0 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f me":."python",......."nbconvert_
168c0 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d exporter":."python",......."pygm
168e0 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 ents_lexer":."ipython3",......."
16900 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 38 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 version":."3.6.8".....}...},..."
16920 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 nbformat":.4,..."nbformat_minor"
16940 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 00 d5 1a 00 00 16 :.0.}PK........-`.L>.0o.........
16960 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 0a 20 20 22 63 65 ...plot_OT_L1_vs_L2.ipynb{..."ce
16980 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 3a lls":.[.....{......."cell_type":
169a0 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"
169c0 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":.{.....
169e0 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.......},.
16a00 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
16a20 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c 69 ce":.[........."%matplotlib.inli
16a40 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 ne".......].....},.....{......."
16a60 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
16a80 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":.[.
16aa0 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 61 6e 73 70 6f 72 ........"\n#.2D.Optimal.transpor
16ac0 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 6e 5c 6e 32 44 20 t.for.different.metrics\n\n\n2D.
16ae0 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 6f 20 20 77 69 74 OT.on.empirical.distributio..wit
16b00 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 6e 5c 6e 53 74 6f h.different.gound.metric.\n\nSto
16b20 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 67 2e 20 31 20 61 le.the.figure.idea.from.Fig..1.a
16b40 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 2f 70 64 66 2f 31 nd.2.in\nhttps://arxiv.org/pdf/1
16b60 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 20 20 20 5d 0a 20 706.07650.pdf\n\n\n\n".......]..
16b80 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":."
16ba0 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":.
16bc0 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":.{.......
16be0 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.......},...
16c00 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
16c20 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
16c40 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#\
16c60 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
16c80 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
16ca0 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 20 .pylab.as.pl\nimport.ot\nimport.
16cc0 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 20 20 7b 0a 20 20 ot.plot".......].....},.....{...
16ce0 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",....
16d00 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
16d20 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 75 6e 69 66 6f 72 ":.[........."Dataset.1.:.unifor
16d40 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 2d 2d 2d 2d 2d 2d m.sampling\n--------------------
16d60 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".......].....},....
16d80 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",...
16da0 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,....
16dc0 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
16de0 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
16e00 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":.[.....
16e20 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 6e 78 73 20 3d 20 ...."n.=.20..#.nb.samples\nxs.=.
16e40 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 20 3d 20 6e 70 2e np.zeros((n,.2))\nxs[:,.0].=.np.
16e60 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 28 6e 70 2e 61 72 arange(n).+.1\nxs[:,.1].=.(np.ar
16e80 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 6f 20 6d 61 6b 65 ange(n).+.1).*.-0.001..#.to.make
16ea0 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 78 74 20 3d 20 6e .it.strictly.convex...\n\nxt.=.n
16ec0 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 3d 20 6e 70 2e 61 p.zeros((n,.2))\nxt[:,.1].=.np.a
16ee0 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 75 6e 69 66 28 6e range(n).+.1\n\na,.b.=.ot.unif(n
16f00 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 69 73 74 72 69 62 ),.ot.unif(n)..#.uniform.distrib
16f20 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 72 69 ution.on.samples\n\n#.loss.matri
16f40 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 74 72 69 63 3d 27 x\nM1.=.ot.dist(xs,.xt,.metric='
16f60 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 29 5c 6e 5c 6e 23 euclidean')\nM1./=.M1.max()\n\n#
16f80 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 28 78 73 2c 20 78 .loss.matrix\nM2.=.ot.dist(xs,.x
16fa0 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 4d 32 20 2f 3d 20 t,.metric='sqeuclidean')\nM2./=.
16fc0 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 6e 4d 70 20 3d 20 M2.max()\n\n#.loss.matrix\nMp.=.
16fe0 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 74 72 69 63 3d 27 np.sqrt(ot.dist(xs,.xt,.metric='
17000 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 28 29 5c 6e 5c 6e euclidean'))\nMp./=.Mp.max()\n\n
17020 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 7a 65 3d 28 37 2c #.Data\npl.figure(1,.figsize=(7,
17040 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 5b 3a 2c 20 30 5d .3))\npl.clf()\npl.plot(xs[:,.0]
17060 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 ,.xs[:,.1],.'+b',.label='Source.
17080 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b samples')\npl.plot(xt[:,.0],.xt[
170a0 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c :,.1],.'xr',.label='Target.sampl
170c0 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 2e 74 69 74 6c 65 es')\npl.axis('equal')\npl.title
170e0 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 62 75 74 69 6f 6e ('Source.and.target.distribution
17100 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 70 6c 2e 66 69 67 s')\n\n\n#.Cost.matrices\npl.fig
17120 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 70 6c 2e 73 75 62 ure(2,.figsize=(7,.3))\n\npl.sub
17140 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 31 2c 20 69 6e 74 plot(1,.3,.1)\npl.imshow(M1,.int
17160 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 erpolation='nearest')\npl.title(
17180 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 62 70 6c 6f 74 28 'Euclidean.cost')\n\npl.subplot(
171a0 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 74 65 72 70 6f 6c 1,.3,.2)\npl.imshow(M2,.interpol
171c0 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 71 75 61 ation='nearest')\npl.title('Squa
171e0 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 2e 73 75 62 70 6c red.Euclidean.cost')\n\npl.subpl
17200 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 20 69 6e 74 65 72 ot(1,.3,.3)\npl.imshow(Mp,.inter
17220 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 polation='nearest')\npl.title('S
17240 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 69 67 68 74 5f 6c qrt.Euclidean.cost')\npl.tight_l
17260 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 ayout()".......].....},.....{...
17280 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",....
172a0 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
172c0 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 50 6c 6f 74 20 4f ":.[........."Dataset.1.:.Plot.O
172e0 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 2d 2d 2d 2d 2d 2d T.Matrices\n--------------------
17300 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".......].....},....
17320 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",...
17340 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,....
17360 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
17380 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
173a0 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":.[.....
173c0 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 61 2c 20 62 2c 20 ...."#%%.EMD\nG1.=.ot.emd(a,.b,.
173e0 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 5c 6e 47 70 20 3d M1)\nG2.=.ot.emd(a,.b,.M2)\nGp.=
17400 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 6d 61 74 72 69 63 .ot.emd(a,.b,.Mp)\n\n#.OT.matric
17420 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 37 2c 20 33 29 29 es\npl.figure(3,.figsize=(7,.3))
17440 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 74 2e 70 6c 6f 74 \n\npl.subplot(1,.3,.1)\not.plot
17460 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 31 2c 20 .plot2D_samples_mat(xs,.xt,.G1,.
17480 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d c=[.5,..5,.1])\npl.plot(xs[:,.0]
174a0 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 ,.xs[:,.1],.'+b',.label='Source.
174c0 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b samples')\npl.plot(xt[:,.0],.xt[
174e0 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c :,.1],.'xr',.label='Target.sampl
17500 65 73 27 29 5c 6e 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 23 20 70 6c 2e 6c 65 67 es')\npl.axis('equal')\n#.pl.leg
17520 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 75 63 6c 69 64 65 end(loc=0)\npl.title('OT.Euclide
17540 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 29 5c 6e 6f 74 2e an')\n\npl.subplot(1,.3,.2)\not.
17560 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 plot.plot2D_samples_mat(xs,.xt,.
17580 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 74 28 78 73 5b 3a G2,.c=[.5,..5,.1])\npl.plot(xs[:
175a0 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 ,.0],.xs[:,.1],.'+b',.label='Sou
175c0 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c rce.samples')\npl.plot(xt[:,.0],
175e0 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 .xt[:,.1],.'xr',.label='Target.s
17600 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 23 20 70 6c amples')\npl.axis('equal')\n#.pl
17620 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 73 71 75 .legend(loc=0)\npl.title('OT.squ
17640 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 70 6c 6f 74 28 31 ared.Euclidean')\n\npl.subplot(1
17660 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 6d 70 6c 65 73 5f ,.3,.3)\not.plot.plot2D_samples_
17680 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 20 31 5d 29 5c 6e mat(xs,.xt,.Gp,.c=[.5,..5,.1])\n
176a0 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'
176c0 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
176e0 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
17700 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 61 78 69 73 28 27 65 el='Target.samples')\npl.axis('e
17720 71 75 61 6c 27 29 5c 6e 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 qual')\n#.pl.legend(loc=0)\npl.t
17740 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 6e 70 6c 2e 74 69 itle('OT.sqrt.Euclidean')\npl.ti
17760 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 ght_layout()\n\npl.show()"......
17780 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
177a0 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":
177c0 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":.[........."
177e0 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 5c 6e 2d 2d 2d 2d Dataset.2.:.Partial.circle\n----
17800 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".....
17820 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
17840 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
17860 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":.{..
17880 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.......
178a0 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
178c0 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 20 23 20 6e 62 20 ource":.[........."n.=.50..#.nb.
178e0 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 6e 20 2b 20 31 2c samples\nxtot.=.np.zeros((n.+.1,
17900 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 5c 6e 20 20 20 20 .2))\nxtot[:,.0].=.np.cos(\n....
17920 28 6e 70 2e 61 72 61 6e 67 65 28 6e 20 2b 20 31 29 20 2b 20 31 2e 30 29 20 2a 20 30 2e 39 20 2f (np.arange(n.+.1).+.1.0).*.0.9./
17940 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 74 5b 3a 2c 20 31 .(n.+.2).*.2.*.np.pi)\nxtot[:,.1
17960 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 65 28 6e 20 2b 20 ].=.np.sin(\n....(np.arange(n.+.
17980 31 29 20 2b 20 31 2e 30 29 20 2a 20 30 2e 39 20 2f 20 28 6e 20 2b 20 32 29 20 2a 20 32 20 2a 20 1).+.1.0).*.0.9./.(n.+.2).*.2.*.
179a0 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 5c 6e 78 74 20 3d np.pi)\n\nxs.=.xtot[:n,.:]\nxt.=
179c0 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 75 6e 69 66 28 6e .xtot[1:,.:]\n\na,.b.=.ot.unif(n
179e0 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 69 73 74 72 69 62 ),.ot.unif(n)..#.uniform.distrib
17a00 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 72 69 ution.on.samples\n\n#.loss.matri
17a20 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 74 72 69 63 3d 27 x\nM1.=.ot.dist(xs,.xt,.metric='
17a40 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 29 5c 6e 5c 6e 23 euclidean')\nM1./=.M1.max()\n\n#
17a60 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 28 78 73 2c 20 78 .loss.matrix\nM2.=.ot.dist(xs,.x
17a80 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 4d 32 20 2f 3d 20 t,.metric='sqeuclidean')\nM2./=.
17aa0 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 6e 4d 70 20 3d 20 M2.max()\n\n#.loss.matrix\nMp.=.
17ac0 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 74 72 69 63 3d 27 np.sqrt(ot.dist(xs,.xt,.metric='
17ae0 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 28 29 5c 6e 5c 6e euclidean'))\nMp./=.Mp.max()\n\n
17b00 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 73 69 7a 65 3d 28 \n#.Data\npl.figure(4,.figsize=(
17b20 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 5b 3a 2c 20 7,.3))\npl.clf()\npl.plot(xs[:,.
17b40 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 0],.xs[:,.1],.'+b',.label='Sourc
17b60 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 e.samples')\npl.plot(xt[:,.0],.x
17b80 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d t[:,.1],.'xr',.label='Target.sam
17ba0 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 2e 74 69 74 ples')\npl.axis('equal')\npl.tit
17bc0 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 72 69 62 75 74 69 le('Source.and.traget.distributi
17be0 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 70 6c 2e 66 ons')\n\n\n#.Cost.matrices\npl.f
17c00 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 5c 6e 70 6c 2e 73 igure(5,.figsize=(7,.3))\n\npl.s
17c20 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 31 2c 20 69 ubplot(1,.3,.1)\npl.imshow(M1,.i
17c40 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 6c nterpolation='nearest')\npl.titl
17c60 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 62 70 6c 6f e('Euclidean.cost')\n\npl.subplo
17c80 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 74 65 72 70 t(1,.3,.2)\npl.imshow(M2,.interp
17ca0 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 71 olation='nearest')\npl.title('Sq
17cc0 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 2e 73 75 62 uared.Euclidean.cost')\n\npl.sub
17ce0 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 20 69 6e 74 plot(1,.3,.3)\npl.imshow(Mp,.int
17d00 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 erpolation='nearest')\npl.title(
17d20 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 69 67 68 74 'Sqrt.Euclidean.cost')\npl.tight
17d40 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a _layout()".......].....},.....{.
17d60 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",..
17d80 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
17da0 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 44 61 74 61 73 65 74 20 32 20 3a 20 50 6c 6f 74 ce":.[........."Dataset.2.:.Plot
17dc0 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 2d 2d 2d 2d 2d 2d ..OT.Matrices\n-----------------
17de0 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".......].....},
17e00 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"
17e20 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,
17e40 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
17e60 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.......},......."
17e80 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":.[.
17ea0 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 61 2c ........"#%%.EMD\nG1.=.ot.emd(a,
17ec0 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 5c 6e .b,.M1)\nG2.=.ot.emd(a,.b,.M2)\n
17ee0 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 6d 61 Gp.=.ot.emd(a,.b,.Mp)\n\n#.OT.ma
17f00 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 7a 65 3d 28 37 2c trices\npl.figure(6,.figsize=(7,
17f20 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 74 2e .3))\n\npl.subplot(1,.3,.1)\not.
17f40 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 plot.plot2D_samples_mat(xs,.xt,.
17f60 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 5b 3a G1,.c=[.5,..5,.1])\npl.plot(xs[:
17f80 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 ,.0],.xs[:,.1],.'+b',.label='Sou
17fa0 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c rce.samples')\npl.plot(xt[:,.0],
17fc0 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 .xt[:,.1],.'xr',.label='Target.s
17fe0 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 5c 6e 23 20 70 6c amples')\npl.axis('equal')\n#.pl
18000 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 75 63 .legend(loc=0)\npl.title('OT.Euc
18020 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 29 5c lidean')\n\npl.subplot(1,.3,.2)\
18040 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,.
18060 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 74 28 xt,.G2,.c=[.5,..5,.1])\npl.plot(
18080 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=
180a0 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[:,
180c0 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
180e0 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
18100 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 #.pl.legend(loc=0)\npl.title('OT
18120 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 70 6c .squared.Euclidean')\n\npl.subpl
18140 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 6d 70 ot(1,.3,.3)\not.plot.plot2D_samp
18160 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 20 31 les_mat(xs,.xt,.Gp,.c=[.5,..5,.1
18180 5d 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 ])\npl.plot(xs[:,.0],.xs[:,.1],.
181a0 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 '+b',.label='Source.samples')\np
181c0 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c l.plot(xt[:,.0],.xt[:,.1],.'xr',
181e0 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 61 78 69 .label='Target.samples')\npl.axi
18200 73 28 27 65 71 75 61 6c 27 29 5c 6e 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e s('equal')\n#.pl.legend(loc=0)\n
18220 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 6e 70 pl.title('OT.sqrt.Euclidean')\np
18240 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 20 l.tight_layout()\n\npl.show()"..
18260 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":.
18280 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
182a0 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
182c0 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"
182e0 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
18300 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
18320 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",.
18340 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.......},...
18360 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",....
18380 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",.
183a0 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
183c0 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",...
183e0 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"
18400 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".....}
18420 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
18440 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 f9 b0 b7 c4 at_minor":.0.}PK........-`.L....
18460 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 72 5f 6c 70 5f 76 ........$...plot_barycenter_lp_v
18480 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 22 3a 20 5b 0a 20 s_entropic.ipynb{..."cells":.[..
184a0 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",.
184c0 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,..
184e0 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
18500 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
18520 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":.[...
18540 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"......
18560 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
18580 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":
185a0 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":.[........."
185c0 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 74 65 72 20 63 6f \n#.1D.Wasserstein.barycenter.co
185e0 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 61 6e 64 20 65 6e mparison.between.exact.LP.and.en
18600 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 6e 54 68 69 73 20 tropic.regularization\n\n\nThis.
18620 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 example.illustrates.the.computat
18640 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 74 65 69 6e 20 42 ion.of.regularized.Wasserstein.B
18660 61 72 79 63 65 6e 74 65 72 5c 6e 61 73 20 70 72 6f 70 6f 73 65 64 20 69 6e 20 5b 33 5d 20 61 6e arycenter\nas.proposed.in.[3].an
18680 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 6e 67 20 73 74 61 d.exact.LP.barycenters.using.sta
186a0 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 72 6f 64 75 63 65 ndard.LP.solver.\n\nIt.reproduce
186c0 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 20 61 6e 64 20 33 s.approximately.Figure.3.1.and.3
186e0 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 72 3a 5c 6e 43 75 .2.from.the.following.paper:\nCu
18700 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 20 28 32 30 31 36 turi,.M.,.&.Peyr\u00e9,.G..(2016
18720 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 68 20 66 6f 72 20 )..A.smoothed.dual.approach.for.
18740 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 72 6f 62 6c 65 6d variational\nWasserstein.problem
18760 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 20 53 63 69 65 6e s..SIAM.Journal.on.Imaging.Scien
18780 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 20 42 65 6e 61 6d ces,.9(1),.320-343.\n\n[3].Benam
187a0 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 74 75 72 69 2c 20 ou,.J..D.,.Carlier,.G.,.Cuturi,.
187c0 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 39 2c 20 47 2e 20 M.,.Nenna,.L.,.&.Peyr\u00e9,.G..
187e0 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 20 70 72 6f 6a 65 (2015).\nIterative.Bregman.proje
18800 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 6e 73 70 6f 72 74 ctions.for.regularized.transport
18820 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 61 6c 20 6f 6e 20 ation.problems\nSIAM.Journal.on.
18840 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 29 2c 20 41 31 31 Scientific.Computing,.37(2),.A11
18860 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 20 20 20 7d 2c 0a 11-A1138.\n\n\n".......].....},.
18880 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",
188a0 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,.
188c0 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
188e0 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
18900 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":.[..
18920 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c ......."#.Author:.Remi.Flamary.<
18940 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 6e 23 20 4c 69 63 remi.flamary@unice.fr>\n#\n#.Lic
18960 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
18980 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 y.as.np\nimport.matplotlib.pylab
189a0 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 73 61 72 79 20 66 .as.pl\nimport.ot\n#.necessary.f
189c0 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 64 5c 6e 66 72 6f or.3d.plot.even.if.not.used\nfro
189e0 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 6f 72 74 20 41 78 m.mpl_toolkits.mplot3d.import.Ax
18a00 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 6c 69 62 2e 63 6f es3D..#.noqa\nfrom.matplotlib.co
18a20 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 63 74 69 6f 6e 20 llections.import.PolyCollection.
18a40 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 76 78 20 61 73 20 .#.noqa\n\n#import.ot.lp.cvx.as.
18a60 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 20 20 20 20 20 20 cvx".......].....},.....{.......
18a80 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",......."
18aa0 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":.[
18ac0 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 2d 2d 2d 2d 2d 2d ........."Gaussian.Data\n-------
18ae0 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".......].....},.....{
18b00 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",.....
18b20 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,......
18b40 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
18b60 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
18b80 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":.[.......
18ba0 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 65 6d 73 20 3d 20 .."#%%.parameters\n\nproblems.=.
18bc0 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 5c 6e 23 20 62 69 []\n\nn.=.100..#.nb.bins\n\n#.bi
18be0 6e 20 70 6f 73 69 74 69 6f 6e 73 5c 6e 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 n.positions\nx.=.np.arange(n,.dt
18c00 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 5c 6e 5c 6e 23 20 47 61 75 73 73 69 61 6e 20 64 69 ype=np.float64)\n\n#.Gaussian.di
18c20 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 73 74 72 69 62 75 stributions\n#.Gaussian.distribu
18c40 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 6b 65 5f 31 44 5f tions\na1.=.ot.datasets.make_1D_
18c60 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 gauss(n,.m=20,.s=5)..#.m=.mean,.
18c80 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 61 6b 65 5f 31 44 s=.std\na2.=.ot.datasets.make_1D
18ca0 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 63 72 65 61 74 69 _gauss(n,.m=60,.s=8)\n\n#.creati
18cc0 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 72 ng.matrix.A.containing.all.distr
18ce0 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 29 ibutions\nA.=.np.vstack((a1,.a2)
18d00 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 31 ).T\nn_distributions.=.A.shape[1
18d20 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 69 ]\n\n#.loss.matrix.+.normalizati
18d40 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 20 on\nM.=.ot.utils.dist0(n)\nM./=.
18d60 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 69 M.max()\n\n\n#%%.plot.the.distri
18d80 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 3d butions\n\npl.figure(1,.figsize=
18da0 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 74 (6.4,.3))\nfor.i.in.range(n_dist
18dc0 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 2c ributions):\n....pl.plot(x,.A[:,
18de0 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 5c .i])\npl.title('Distributions')\
18e00 6e 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 23 25 25 20 62 61 72 79 63 65 npl.tight_layout()\n\n#%%.baryce
18e20 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 2e 35 20 nter.computation\n\nalpha.=.0.5.
18e40 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 61 72 72 .#.0<=alpha<=1\nweights.=.np.arr
18e60 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 32 62 61 ay([1.-.alpha,.alpha])\n\n#.l2ba
18e80 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 6e 5c 6e ry\nbary_l2.=.A.dot(weights)\n\n
18ea0 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 2e 74 69 #.wasserstein\nreg.=.1e-3\not.ti
18ec0 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 61 72 79 c()\nbary_wass.=.ot.bregman.bary
18ee0 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 74 2e 74 center(A,.M,.reg,.weights)\not.t
18f00 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 32 20 3d oc()\n\n\not.tic()\nbary_wass2.=
18f20 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 74 73 2c .ot.lp.barycenter(A,.M,.weights,
18f40 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 62 6f 73 .solver='interior-point',.verbos
18f60 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 67 75 72 65 28 32 e=True)\not.toc()\n\npl.figure(2
18f80 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 20 31 2c 20 31 29 )\npl.clf()\npl.subplot(2,.1,.1)
18fa0 5c 6e 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 \nfor.i.in.range(n_distributions
18fc0 29 3a 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 41 5b 3a 2c 20 69 5d 29 5c 6e 70 6c 2e ):\n....pl.plot(x,.A[:,.i])\npl.
18fe0 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 70 6c 2e 73 75 62 title('Distributions')\n\npl.sub
19000 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 62 61 72 79 5f 6c plot(2,.1,.2)\npl.plot(x,.bary_l
19020 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 6f 74 28 78 2c 20 2,.'r',.label='l2')\npl.plot(x,.
19040 62 61 72 79 5f 77 61 73 73 2c 20 27 67 27 2c 20 6c 61 62 65 6c 3d 27 52 65 67 20 57 61 73 73 65 bary_wass,.'g',.label='Reg.Wasse
19060 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 77 61 73 73 32 2c rstein')\npl.plot(x,.bary_wass2,
19080 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 6e 27 29 5c 6e 70 .'b',.label='LP.Wasserstein')\np
190a0 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 l.legend()\npl.title('Barycenter
190c0 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 70 72 6f 62 6c 65 s')\npl.tight_layout()\n\nproble
190e0 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
19100 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 20 20 20 20 7d 2c s,.bary_wass2]])".......].....},
19120 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
19140 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":.{},.....
19160 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 61 63 20 44 61 74 .."source":.[........."Dirac.Dat
19180 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 0a 20 20 20 20 7d a\n----------\n\n".......].....}
191a0 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
191c0 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
191e0 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
19200 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.......},.......
19220 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":.[
19240 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 61 31 20 3d ........."#%%.parameters\n\na1.=
19260 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 5c 6e 61 32 20 3d .1.0.*.(x.>.10).*.(x.<.50)\na2.=
19280 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 5c 6e 5c 6e 61 31 .1.0.*.(x.>.60).*.(x.<.80)\n\na1
192a0 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 28 29 5c 6e 5c 6e ./=.a1.sum()\na2./=.a2.sum()\n\n
192c0 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 61 #.creating.matrix.A.containing.a
192e0 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 28 ll.distributions\nA.=.np.vstack(
19300 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 41 (a1,.a2)).T\nn_distributions.=.A
19320 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 72 .shape[1]\n\n#.loss.matrix.+.nor
19340 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 6e malization\nM.=.ot.utils.dist0(n
19360 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 6c 6f 74 20 74 68 )\nM./=.M.max()\n\n\n#%%.plot.th
19380 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 72 65 28 31 2c 20 e.distributions\n\npl.figure(1,.
193a0 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 6e 20 72 61 6e 67 figsize=(6.4,.3))\nfor.i.in.rang
193c0 65 28 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 29 3a 5c 6e 20 20 20 20 70 6c 2e 70 6c 6f 74 e(n_distributions):\n....pl.plot
193e0 28 78 2c 20 41 5b 3a 2c 20 69 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 (x,.A[:,.i])\npl.title('Distribu
19400 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 5c 6e 5c 6e 5c 6e tions')\npl.tight_layout()\n\n\n
19420 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 5c 6e 5c 6e 61 6c #%%.barycenter.computation\n\nal
19440 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 77 65 69 67 68 74 pha.=.0.5..#.0<=alpha<=1\nweight
19460 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 6c 70 68 61 5d 29 s.=.np.array([1.-.alpha,.alpha])
19480 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 64 6f 74 28 77 65 \n\n#.l2bary\nbary_l2.=.A.dot(we
194a0 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 65 67 20 3d 20 31 ights)\n\n#.wasserstein\nreg.=.1
194c0 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 20 6f 74 2e 62 72 e-3\not.tic()\nbary_wass.=.ot.br
194e0 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 2c 20 77 65 69 67 egman.barycenter(A,.M,.reg,.weig
19500 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 28 29 5c 6e 62 61 hts)\not.toc()\n\n\not.tic()\nba
19520 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 72 28 41 2c 20 4d ry_wass2.=.ot.lp.barycenter(A,.M
19540 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 72 2d 70 6f 69 6e ,.weights,.solver='interior-poin
19560 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 29 5c 6e 5c 6e 5c t',.verbose=True)\not.toc()\n\n\
19580 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 5f 6c 32 2c 20 62 nproblems.append([A,.[bary_l2,.b
195a0 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 6e 70 6c 2e 66 69 ary_wass,.bary_wass2]])\n\npl.fi
195c0 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,
195e0 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
19600 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]
19620 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
19640 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,.
19660 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
19680 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
196a0 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_
196c0 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
196e0 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
19700 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
19720 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 7a 65 72 6f 73 28 #%%.parameters\n\na1.=.np.zeros(
19740 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 5b 31 30 5d 20 3d n)\na2.=.np.zeros(n)\n\na1[10].=
19760 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 3d 20 2e 32 35 5c ..25\na1[20].=..5\na1[30].=..25\
19780 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 73 75 6d 28 29 5c na2[80].=.1\n\n\na1./=.a1.sum()\
197a0 6e 61 32 20 2f 3d 20 61 32 2e 73 75 6d 28 29 5c 6e 5c 6e 23 20 63 72 65 61 74 69 6e 67 20 6d 61 na2./=.a2.sum()\n\n#.creating.ma
197c0 74 72 69 78 20 41 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 64 69 73 74 72 69 62 75 74 69 trix.A.containing.all.distributi
197e0 6f 6e 73 5c 6e 41 20 3d 20 6e 70 2e 76 73 74 61 63 6b 28 28 61 31 2c 20 61 32 29 29 2e 54 5c 6e ons\nA.=.np.vstack((a1,.a2)).T\n
19800 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 3d 20 41 2e 73 68 61 70 65 5b 31 5d 5c 6e 5c 6e n_distributions.=.A.shape[1]\n\n
19820 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 20 2b 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 5c 6e 4d #.loss.matrix.+.normalization\nM
19840 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 64 69 73 74 30 28 6e 29 5c 6e 4d 20 2f 3d 20 4d 2e 6d 61 78 .=.ot.utils.dist0(n)\nM./=.M.max
19860 28 29 5c 6e 5c 6e 5c 6e 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f ()\n\n\n#%%.plot.the.distributio
19880 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,
198a0 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
198c0 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])\
198e0 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
19900 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 5c 6e 23 25 25 20 62 61 72 79 63 65 6e 74 65 ight_layout()\n\n\n#%%.barycente
19920 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 5c 6e 5c 6e 61 6c 70 68 61 20 3d 20 30 2e 35 20 20 23 20 r.computation\n\nalpha.=.0.5..#.
19940 30 3c 3d 61 6c 70 68 61 3c 3d 31 5c 6e 77 65 69 67 68 74 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 0<=alpha<=1\nweights.=.np.array(
19960 5b 31 20 2d 20 61 6c 70 68 61 2c 20 61 6c 70 68 61 5d 29 5c 6e 5c 6e 23 20 6c 32 62 61 72 79 5c [1.-.alpha,.alpha])\n\n#.l2bary\
19980 6e 62 61 72 79 5f 6c 32 20 3d 20 41 2e 64 6f 74 28 77 65 69 67 68 74 73 29 5c 6e 5c 6e 23 20 77 nbary_l2.=.A.dot(weights)\n\n#.w
199a0 61 73 73 65 72 73 74 65 69 6e 5c 6e 72 65 67 20 3d 20 31 65 2d 33 5c 6e 6f 74 2e 74 69 63 28 29 asserstein\nreg.=.1e-3\not.tic()
199c0 5c 6e 62 61 72 79 5f 77 61 73 73 20 3d 20 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 61 72 79 63 65 6e \nbary_wass.=.ot.bregman.barycen
199e0 74 65 72 28 41 2c 20 4d 2c 20 72 65 67 2c 20 77 65 69 67 68 74 73 29 5c 6e 6f 74 2e 74 6f 63 28 ter(A,.M,.reg,.weights)\not.toc(
19a00 29 5c 6e 5c 6e 5c 6e 6f 74 2e 74 69 63 28 29 5c 6e 62 61 72 79 5f 77 61 73 73 32 20 3d 20 6f 74 )\n\n\not.tic()\nbary_wass2.=.ot
19a20 2e 6c 70 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 20 4d 2c 20 77 65 69 67 68 74 73 2c 20 73 6f .lp.barycenter(A,.M,.weights,.so
19a40 6c 76 65 72 3d 27 69 6e 74 65 72 69 6f 72 2d 70 6f 69 6e 74 27 2c 20 76 65 72 62 6f 73 65 3d 54 lver='interior-point',.verbose=T
19a60 72 75 65 29 5c 6e 6f 74 2e 74 6f 63 28 29 5c 6e 5c 6e 5c 6e 70 72 6f 62 6c 65 6d 73 2e 61 70 70 rue)\not.toc()\n\n\nproblems.app
19a80 65 6e 64 28 5b 41 2c 20 5b 62 61 72 79 5f 6c 32 2c 20 62 61 72 79 5f 77 61 73 73 2c 20 62 61 72 end([A,.[bary_l2,.bary_wass,.bar
19aa0 79 5f 77 61 73 73 32 5d 5d 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 63 y_wass2]])\n\npl.figure(2)\npl.c
19ac0 6c 66 28 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 31 29 5c 6e 66 6f 72 20 69 lf()\npl.subplot(2,.1,.1)\nfor.i
19ae0 20 69 6e 20 72 61 6e 67 65 28 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 29 3a 5c 6e 20 20 20 .in.range(n_distributions):\n...
19b00 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 41 5b 3a 2c 20 69 5d 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 .pl.plot(x,.A[:,.i])\npl.title('
19b20 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c Distributions')\n\npl.subplot(2,
19b40 20 31 2c 20 32 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 6c 32 2c 20 27 72 27 2c .1,.2)\npl.plot(x,.bary_l2,.'r',
19b60 20 6c 61 62 65 6c 3d 27 6c 32 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 .label='l2')\npl.plot(x,.bary_wa
19b80 73 73 2c 20 27 67 27 2c 20 6c 61 62 65 6c 3d 27 52 65 67 20 57 61 73 73 65 72 73 74 65 69 6e 27 ss,.'g',.label='Reg.Wasserstein'
19ba0 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 73 73 32 2c 20 27 62 27 2c 20 6c )\npl.plot(x,.bary_wass2,.'b',.l
19bc0 61 62 65 6c 3d 27 4c 50 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e abel='LP.Wasserstein')\npl.legen
19be0 64 28 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 73 27 29 5c 6e 70 6c d()\npl.title('Barycenters')\npl
19c00 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()".......].....},.
19c20 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
19c40 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":.{},......
19c60 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 6c 20 66 69 67 75 ."source":.[........."Final.figu
19c80 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 20 20 20 20 5d 0a re\n------------\n\n\n".......].
19ca0 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":.
19cc0 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":
19ce0 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":.{......
19d00 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.......},..
19d20 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
19d40 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 6e 6e 62 6d 20 3d e":.[........."#%%.plot\n\nnbm.=
19d60 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 6d 20 2f 2f 20 32 .len(problems)\nnbm2.=.(nbm.//.2
19d80 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 29 29 5c 6e 70 6c )\n\n\npl.figure(2,.(20,.6))\npl
19da0 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 62 6d 29 3a 5c 6e .clf()\n\nfor.i.in.range(nbm):\n
19dc0 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 20 20 20 20 62 61 \n....A.=.problems[i][0]\n....ba
19de0 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 6e 20 20 20 20 62 ry_l2.=.problems[i][1][0]\n....b
19e00 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 31 5d 5c 6e 20 20 ary_wass.=.problems[i][1][1]\n..
19e20 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 5b 31 5d 5b 32 5d ..bary_wass2.=.problems[i][1][2]
19e40 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 20 31 20 2b 20 69 \n\n....pl.subplot(2,.nbm,.1.+.i
19e60 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 73 74 72 69 62 75 )\n....for.j.in.range(n_distribu
19e80 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 2c 20 41 5b 3a 2c tions):\n........pl.plot(x,.A[:,
19ea0 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 20 20 20 20 20 20 .j])\n....if.i.==.nbm2:\n.......
19ec0 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 5c 6e 20 20 20 20 .pl.title('Distributions')\n....
19ee0 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 6b 73 28 28 29 29 pl.xticks(())\n....pl.yticks(())
19f00 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 20 31 20 2b 20 69 \n\n....pl.subplot(2,.nbm,.1.+.i
19f20 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 62 61 72 79 5f 6c .+.nbm)\n\n....pl.plot(x,.bary_l
19f40 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 61 6e 29 27 29 5c 2,.'r',.label='L2.(Euclidean)')\
19f60 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 20 27 67 27 2c 20 n....pl.plot(x,.bary_wass,.'g',.
19f80 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 20 20 20 20 70 6c label='Reg.Wasserstein')\n....pl
19fa0 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 5f 77 61 73 73 32 2c 20 27 62 27 2c 20 6c 61 62 65 6c 3d .plot(x,.bary_wass2,.'b',.label=
19fc0 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 69 20 3d 3d 20 6e 'LP.Wasserstein')\n....if.i.==.n
19fe0 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 28 29 5c 6e 20 20 bm.-.1:\n........pl.legend()\n..
1a000 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 6c 2e 74 69 74 6c ..if.i.==.nbm2:\n........pl.titl
1a020 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 2e 78 74 69 63 6b e('Barycenters')\n\n....pl.xtick
1a040 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 20 20 20 20 20 20 s(())\n....pl.yticks(())".......
1a060 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 ].....}...],..."metadata":.{....
1a080 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f ."kernelspec":.{......."display_
1a0a0 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 name":."Python.3",......."langua
1a0c0 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 ge":."python",......."name":."py
1a0e0 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f thon3".....},....."language_info
1a100 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a ":.{......."codemirror_mode":.{.
1a120 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 20 ........"name":."ipython",......
1a140 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 22 ..."version":.3.......},......."
1a160 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d file_extension":.".py",......."m
1a180 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 imetype":."text/x-python",......
1a1a0 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 ."name":."python",......."nbconv
1a1c0 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 ert_exporter":."python",......."
1a1e0 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 20 pygments_lexer":."ipython3",....
1a200 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 7d 2c ..."version":."3.6.5".....}...},
1a220 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 ..."nbformat":.4,..."nbformat_mi
1a240 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 04 72 d9 4e 43 f7 2c fd 72 13 00 00 72 nor":.0.}PK.........r.NC.,.r...r
1a260 13 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 69 70 79 6e 62 7b .......plot_OT_2D_samples.ipynb{
1a280 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_
1a2a0 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_
1a2c0 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":.
1a2e0 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....
1a300 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":.[],......
1a320 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
1a340 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".......].....},.....{..
1a360 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",...
1a380 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
1a3a0 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
1a3c0 61 6e 73 70 6f 72 74 20 62 65 74 77 65 65 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 ansport.between.empirical.distri
1a3e0 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 6f 66 20 32 44 20 butions\n\n\nIllustration.of.2D.
1a400 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 64 69 73 63 72 69 optimal.transport.between.discri
1a420 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 6e 73 75 6d 20 6f butions.that.are.weighted\nsum.o
1a440 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 20 70 6c 6f 74 74 f.diracs..The.OT.matrix.is.plott
1a460 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 22 0a 20 20 20 20 ed.with.the.samples.\n\n\n".....
1a480 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
1a4a0 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
1a4c0 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":.{..
1a4e0 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.......
1a500 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
1a520 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 6d ource":.[........."#.Author:.Rem
1a540 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 72 i.Flamary.<remi.flamary@unice.fr
1a560 3e 5c 6e 23 20 20 20 20 20 20 20 20 20 4b 69 6c 69 61 6e 20 46 61 74 72 61 73 20 3c 6b 69 6c 69 >\n#.........Kilian.Fatras.<kili
1a580 61 6e 2e 66 61 74 72 61 73 40 69 72 69 73 61 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 an.fatras@irisa.fr>\n#\n#.Licens
1a5a0 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 61 e:.MIT.License\n\nimport.numpy.a
1a5c0 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 73 s.np\nimport.matplotlib.pylab.as
1a5e0 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 22 0a .pl\nimport.ot\nimport.ot.plot".
1a600 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
1a620 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
1a640 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":.[.....
1a660 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------------
1a680 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".......].....},.....{.....
1a6a0 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
1a6c0 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
1a6e0 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
1a700 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":.[
1a720 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":.[........."#%
1a740 25 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e %.parameters.and.data.generation
1a760 5c 6e 5c 6e 6e 20 3d 20 35 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 6d 75 5f 73 \n\nn.=.50..#.nb.samples\n\nmu_s
1a780 20 3d 20 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 .=.np.array([0,.0])\ncov_s.=.np.
1a7a0 61 72 72 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 array([[1,.0],.[0,.1]])\n\nmu_t.
1a7c0 3d 20 6e 70 2e 61 72 72 61 79 28 5b 34 2c 20 34 5d 29 5c 6e 63 6f 76 5f 74 20 3d 20 6e 70 2e 61 =.np.array([4,.4])\ncov_t.=.np.a
1a7e0 72 72 61 79 28 5b 5b 31 2c 20 2d 2e 38 5d 2c 20 5b 2d 2e 38 2c 20 31 5d 5d 29 5c 6e 5c 6e 78 73 rray([[1,.-.8],.[-.8,.1]])\n\nxs
1a800 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 .=.ot.datasets.make_2D_samples_g
1a820 61 75 73 73 28 6e 2c 20 6d 75 5f 73 2c 20 63 6f 76 5f 73 29 5c 6e 78 74 20 3d 20 6f 74 2e 64 61 auss(n,.mu_s,.cov_s)\nxt.=.ot.da
1a840 74 61 73 65 74 73 2e 6d 61 6b 65 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 20 tasets.make_2D_samples_gauss(n,.
1a860 6d 75 5f 74 2c 20 63 6f 76 5f 74 29 5c 6e 5c 6e 61 2c 20 62 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 mu_t,.cov_t)\n\na,.b.=.np.ones((
1a880 6e 2c 29 29 20 2f 20 6e 2c 20 6e 70 2e 6f 6e 65 73 28 28 6e 2c 29 29 20 2f 20 6e 20 20 23 20 75 n,))./.n,.np.ones((n,))./.n..#.u
1a8a0 6e 69 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 5c 6e niform.distribution.on.samples\n
1a8c0 5c 6e 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 5c 6e 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c \n#.loss.matrix\nM.=.ot.dist(xs,
1a8e0 20 78 74 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 .xt)\nM./=.M.max()".......].....
1a900 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
1a920 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":.{},...
1a940 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 64 61 ...."source":.[........."Plot.da
1a960 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d ta\n---------\n\n".......].....}
1a980 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
1a9a0 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
1a9c0 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
1a9e0 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.......},.......
1aa00 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":.[
1aa20 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 5c 6e 5c 6e 70 6c ........."#%%.plot.samples\n\npl
1aa40 2e 66 69 67 75 72 65 28 31 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 .figure(1)\npl.plot(xs[:,.0],.xs
1aa60 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 [:,.1],.'+b',.label='Source.samp
1aa80 6c 65 73 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 les')\npl.plot(xt[:,.0],.xt[:,.1
1aaa0 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 ],.'xr',.label='Target.samples')
1aac0 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f \npl.legend(loc=0)\npl.title('So
1aae0 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 5c urce.and.target.distributions')\
1ab00 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 20 69 6e n\npl.figure(2)\npl.imshow(M,.in
1ab20 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
1ab40 28 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 20 20 7d ('Cost.matrix.M')".......].....}
1ab60 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
1ab80 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":.{},....
1aba0 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 74 65 20 ..."source":.[........."Compute.
1abc0 45 4d 44 5c 6e 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 EMD\n-----------\n\n".......]...
1abe0 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
1ac00 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
1ac20 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":.{........
1ac40 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.......},....
1ac60 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"
1ac80 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 74 2e :.[........."#%%.EMD\n\nG0.=.ot.
1aca0 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 29 5c 6e 70 6c emd(a,.b,.M)\n\npl.figure(3)\npl
1acc0 2e 69 6d 73 68 6f 77 28 47 30 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 .imshow(G0,.interpolation='neare
1ace0 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 5c 6e st')\npl.title('OT.matrix.G0')\n
1ad00 5c 6e 70 6c 2e 66 69 67 75 72 65 28 34 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 \npl.figure(4)\not.plot.plot2D_s
1ad20 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 30 2c 20 63 3d 5b 2e 35 2c 20 2e 35 amples_mat(xs,.xt,.G0,.c=[.5,..5
1ad40 2c 20 31 5d 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 ,.1])\npl.plot(xs[:,.0],.xs[:,.1
1ad60 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 ],.'+b',.label='Source.samples')
1ad80 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 \npl.plot(xt[:,.0],.xt[:,.1],.'x
1ada0 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e r',.label='Target.samples')\npl.
1adc0 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 6d 61 74 72 legend(loc=0)\npl.title('OT.matr
1ade0 69 78 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d ix.with.samples')".......].....}
1ae00 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
1ae20 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":.{},....
1ae40 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 74 65 20 ..."source":.[........."Compute.
1ae60 53 69 6e 6b 68 6f 72 6e 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a Sinkhorn\n----------------\n\n".
1ae80 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
1aea0 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
1aec0 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":
1aee0 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...
1af00 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":.[],.....
1af20 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 73 69 6e 6b 68 .."source":.[........."#%%.sinkh
1af40 6f 72 6e 5c 6e 5c 6e 23 20 72 65 67 20 74 65 72 6d 5c 6e 6c 61 6d 62 64 20 3d 20 31 65 2d 33 5c orn\n\n#.reg.term\nlambd.=.1e-3\
1af60 6e 5c 6e 47 73 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 20 62 2c 20 4d 2c 20 6c 61 6d n\nGs.=.ot.sinkhorn(a,.b,.M,.lam
1af80 62 64 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 35 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 bd)\n\npl.figure(5)\npl.imshow(G
1afa0 73 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e s,.interpolation='nearest')\npl.
1afc0 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 5c 6e 5c 6e 70 title('OT.matrix.sinkhorn')\n\np
1afe0 6c 2e 66 69 67 75 72 65 28 36 29 5c 6e 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 l.figure(6)\not.plot.plot2D_samp
1b000 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 73 2c 20 63 6f 6c 6f 72 3d 5b 2e 35 2c 20 2e les_mat(xs,.xt,.Gs,.color=[.5,..
1b020 35 2c 20 31 5d 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 5,.1])\npl.plot(xs[:,.0],.xs[:,.
1b040 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 1],.'+b',.label='Source.samples'
1b060 29 5c 6e 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 )\npl.plot(xt[:,.0],.xt[:,.1],.'
1b080 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c xr',.label='Target.samples')\npl
1b0a0 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 6d 61 74 .legend(loc=0)\npl.title('OT.mat
1b0c0 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 70 rix.Sinkhorn.with.samples')\n\np
1b0e0 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 0a 20 l.show()".......].....},.....{..
1b100 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",...
1b120 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
1b140 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 45 6d 70 72 69 72 69 63 61 6c 20 53 69 6e 6b 68 6f e":.[........."Emprirical.Sinkho
1b160 72 6e 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 20 20 20 rn\n----------------\n\n".......
1b180 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"
1b1a0 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
1b1c0 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":.{....
1b1e0 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.......},
1b200 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
1b220 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 73 69 6e 6b 68 6f 72 6e 5c 6e 5c rce":.[........."#%%.sinkhorn\n\
1b240 6e 23 20 72 65 67 20 74 65 72 6d 5c 6e 6c 61 6d 62 64 20 3d 20 31 65 2d 33 5c 6e 5c 6e 47 65 73 n#.reg.term\nlambd.=.1e-3\n\nGes
1b260 20 3d 20 6f 74 2e 62 72 65 67 6d 61 6e 2e 65 6d 70 69 72 69 63 61 6c 5f 73 69 6e 6b 68 6f 72 6e .=.ot.bregman.empirical_sinkhorn
1b280 28 78 73 2c 20 78 74 2c 20 6c 61 6d 62 64 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 37 29 5c (xs,.xt,.lambd)\n\npl.figure(7)\
1b2a0 6e 70 6c 2e 69 6d 73 68 6f 77 28 47 65 73 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e npl.imshow(Ges,.interpolation='n
1b2c0 65 61 72 65 73 74 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 65 6d earest')\npl.title('OT.matrix.em
1b2e0 70 69 72 69 63 61 6c 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 pirical.sinkhorn')\n\npl.figure(
1b300 38 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 8)\not.plot.plot2D_samples_mat(x
1b320 73 2c 20 78 74 2c 20 47 65 73 2c 20 63 6f 6c 6f 72 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 5c 6e s,.xt,.Ges,.color=[.5,..5,.1])\n
1b340 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'
1b360 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
1b380 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
1b3a0 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(
1b3c0 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b loc=0)\npl.title('OT.matrix.Sink
1b3e0 68 6f 72 6e 20 66 72 6f 6d 20 73 61 6d 70 6c 65 73 27 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 horn.from.samples')\n\npl.show()
1b400 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 ".......].....}...],..."metadata
1b420 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 20 20 20 20 22 ":.{....."kernelspec":.{......."
1b440 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 display_name":."Python.3",......
1b460 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 ."language":."python",......."na
1b480 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 me":."python3".....},....."langu
1b4a0 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d age_info":.{......."codemirror_m
1b4c0 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e ode":.{........."name":."ipython
1b4e0 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c ",........."version":.3.......},
1b500 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a ......."file_extension":.".py",.
1b520 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e ......"mimetype":."text/x-python
1b540 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 ",......."name":."python",......
1b560 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c ."nbconvert_exporter":."python",
1b580 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f ......."pygments_lexer":."ipytho
1b5a0 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 38 22 0a 20 20 n3",......."version":."3.6.8"...
1b5c0 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 ..}...},..."nbformat":.4,..."nbf
1b5e0 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 4c b5 ormat_minor":.0.}PK........-`.L.
1b600 c3 fd 1f 0a 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 ...............plot_otda_linear_
1b620 6d 61 70 70 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 mapping.ipynb{..."cells":.[.....
1b640 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",....
1b660 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,.....
1b680 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
1b6a0 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
1b6c0 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":.[......
1b6e0 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 0a ..."%matplotlib.inline".......].
1b700 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":.
1b720 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":.{}
1b740 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 23 ,......."source":.[........."\n#
1b760 20 4c 69 6e 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 .Linear.OT.mapping.estimation\n\
1b780 6e 5c 6e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 n\n\n\n".......].....},.....{...
1b7a0 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",......."
1b7c0 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
1b7e0 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":
1b800 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":
1b820 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":.[........."
1b840 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
1b860 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
1b880 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\
1b8a0 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".
1b8c0 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
1b8e0 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
1b900 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":.[.....
1b920 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------------
1b940 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".......].....},.....{.....
1b960 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
1b980 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
1b9a0 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
1b9c0 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":.[
1b9e0 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 20 ],......."source":.[........."n.
1ba00 3d 20 31 30 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 =.1000\nd.=.2\nsigma.=..1\n\n#.s
1ba20 6f 75 72 63 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 ource.samples\nangles.=.np.rando
1ba40 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 78 73 20 3d 20 6e m.rand(n,.1).*.2.*.np.pi\nxs.=.n
1ba60 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 65 73 29 2c 20 6e p.concatenate((np.sin(angles),.n
1ba80 70 2e 63 6f 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 p.cos(angles)),\n...............
1baa0 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 72 61 6e 64 6f 6d .....axis=1).+.sigma.*.np.random
1bac0 2e 72 61 6e 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 .randn(n,.2)\nxs[:n.//.2,.1].+=.
1bae0 32 5c 6e 5c 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 2\n\n\n#.target.samples\nanglet.
1bb00 3d 20 6e 70 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 =.np.random.rand(n,.1).*.2.*.np.
1bb20 70 69 5c 6e 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 pi\nxt.=.np.concatenate((np.sin(
1bb40 61 6e 67 6c 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 anglet),.np.cos(anglet)),\n.....
1bb60 20 20 20 20 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 ...............axis=1).+.sigma.*
1bb80 20 6e 70 2e 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 .np.random.randn(n,.2)\nxt[:n.//
1bba0 20 32 2c 20 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 .2,.1].+=.2\n\n\nA.=.np.array([[
1bbc0 31 2e 35 2c 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 1.5,..7],.[.7,.1.5]])\nb.=.np.ar
1bbe0 72 61 79 28 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 ray([[4,.2]])\nxt.=.xt.dot(A).+.
1bc00 62 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 b".......].....},.....{......."c
1bc20 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
1bc40 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":.[..
1bc60 20 20 20 20 20 20 20 22 50 6c 6f 74 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e ......."Plot.data\n---------\n\n
1bc80 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
1bca0 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
1bcc0 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
1bce0 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.
1bd00 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":.[],...
1bd20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 ...."source":.[........."pl.figu
1bd40 72 65 28 31 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 re(1,.(5,.5))\npl.plot(xs[:,.0],
1bd60 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 5b 3a 2c 20 30 .xs[:,.1],.'+')\npl.plot(xt[:,.0
1bd80 5d 2c 20 78 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 ],.xt[:,.1],.'o')".......].....}
1bda0 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
1bdc0 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":.{},....
1bde0 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 45 73 74 69 6d 61 74 65 ..."source":.[........."Estimate
1be00 20 6c 69 6e 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 .linear.mapping.and.transport\n-
1be20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
1be40 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".......].....},.....{..
1be60 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",.......
1be80 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,......."
1bea0 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"
1bec0 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"
1bee0 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":.[.........
1bf00 22 41 65 2c 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 "Ae,.be.=.ot.da.OT_mapping_linea
1bf20 72 28 78 73 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 r(xs,.xt)\n\nxst.=.xs.dot(Ae).+.
1bf40 62 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 be".......].....},.....{......."
1bf60 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
1bf80 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":.[.
1bfa0 20 20 20 20 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 ........"Plot.transported.sample
1bfc0 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 5c 6e 5c 6e 22 s\n------------------------\n\n"
1bfe0 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
1c000 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
1c020 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"
1c040 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..
1c060 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":.[],....
1c080 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 ..."source":.[........."pl.figur
1c0a0 65 28 31 2c 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 e(1,.(5,.5))\npl.clf()\npl.plot(
1c0c0 78 73 5b 3a 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 xs[:,.0],.xs[:,.1],.'+')\npl.plo
1c0e0 74 28 78 74 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 t(xt[:,.0],.xt[:,.1],.'o')\npl.p
1c100 6c 6f 74 28 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 lot(xst[:,.0],.xst[:,.1],.'+')\n
1c120 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 20 \npl.show()".......].....},.....
1c140 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",
1c160 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
1c180 75 72 63 65 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 urce":.[........."Load.image.dat
1c1a0 61 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 20 20 20 5d 0a a\n---------------\n\n".......].
1c1c0 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":.
1c1e0 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":
1c200 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":.{......
1c220 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.......},..
1c240 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
1c260 65 22 3a 20 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 e":.[........."def.im2mat(I):\n.
1c280 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 74 6f 20 6d ...\"\"\"Converts.and.image.to.m
1c2a0 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 5c 22 5c 22 atrix.(one.pixel.per.line)\"\"\"
1c2c0 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 61 70 65 5b \n....return.I.reshape((I.shape[
1c2e0 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 29 5c 6e 5c 0].*.I.shape[1],.I.shape[2]))\n\
1c300 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 20 20 5c 22 n\ndef.mat2im(X,.shape):\n....\"
1c320 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 6f 20 61 6e \"\"Converts.back.a.matrix.to.an
1c340 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 65 73 68 61 .image\"\"\"\n....return.X.resha
1c360 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 3a 5c 6e 20 pe(shape)\n\n\ndef.minmax(I):\n.
1c380 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 5c 6e 5c 6e 5c 6e ...return.np.clip(I,.0,.1)\n\n\n
1c3a0 23 20 4c 6f 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 #.Loading.images\nI1.=.pl.imread
1c3c0 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 ('../data/ocean_day.jpg').astype
1c3e0 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 5c 6e 49 32 20 3d 20 70 6c 2e 69 6d 72 65 (np.float64)./.256\nI2.=.pl.imre
1c400 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 27 29 2e 61 ad('../data/ocean_sunset.jpg').a
1c420 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 5c 6e 58 31 20 stype(np.float64)./.256\n\n\nX1.
1c440 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 22 0a 20 =.im2mat(I1)\nX2.=.im2mat(I2)"..
1c460 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_
1c480 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
1c4a0 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":.[......
1c4c0 20 20 20 22 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 ..."Estimate.mapping.and.adapt\n
1c4e0 2d 2d 2d 2d 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
1c500 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
1c520 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
1c540 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
1c560 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.
1c580 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":.[],...
1c5a0 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 6d 61 70 70 69 6e 67 ...."source":.[........."mapping
1c5c0 20 3d 20 6f 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 .=.ot.da.LinearTransport()\n\nma
1c5e0 70 70 69 6e 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 pping.fit(Xs=X1,.Xt=X2)\n\n\nxst
1c600 20 3d 20 6d 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 .=.mapping.transform(Xs=X1)\nxts
1c620 20 3d 20 6d 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 .=.mapping.inverse_transform(Xt=
1c640 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 28 78 73 74 2c 20 X2)\n\nI1t.=.minmax(mat2im(xst,.
1c660 49 31 2e 73 68 61 70 65 29 29 5c 6e 49 32 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 I1.shape))\nI2t.=.minmax(mat2im(
1c680 78 74 73 2c 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 xts,.I2.shape))\n\n#.%%".......]
1c6a0 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":
1c6c0 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":.{
1c6e0 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
1c700 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 2d 2d 2d 2d ot.transformed.images\n---------
1c720 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".......].....
1c740 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
1c760 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
1c780 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":.{........."
1c7a0 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.......},......
1c7c0 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":.
1c7e0 5b 0a 20 20 20 20 20 20 20 20 22 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d [........."pl.figure(2,.figsize=
1c800 28 31 30 2c 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 (10,.7))\n\npl.subplot(2,.2,.1)\
1c820 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e npl.imshow(I1)\npl.axis('off')\n
1c840 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 pl.title('Im..1')\n\npl.subplot(
1c860 32 2c 20 32 2c 20 32 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 5c 6e 70 6c 2e 61 78 69 73 2,.2,.2)\npl.imshow(I2)\npl.axis
1c880 28 27 6f 66 66 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 32 27 29 5c 6e 5c 6e 70 6c ('off')\npl.title('Im..2')\n\npl
1c8a0 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 33 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 .subplot(2,.2,.3)\npl.imshow(I1t
1c8c0 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 4d 61 70 )\npl.axis('off')\npl.title('Map
1c8e0 70 69 6e 67 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 ping.Im..1')\n\npl.subplot(2,.2,
1c900 20 34 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 .4)\npl.imshow(I2t)\npl.axis('of
1c920 66 27 29 5c 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 f')\npl.title('Inverse.mapping.I
1c940 6d 2e 20 32 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 m..2')".......].....}...],..."me
1c960 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 tadata":.{....."kernelspec":.{..
1c980 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 2c ....."display_name":."Python.3",
1c9a0 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 20 ......."language":."python",....
1c9c0 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 20 ..."name":."python3".....},.....
1c9e0 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 69 "language_info":.{......."codemi
1ca00 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 69 rror_mode":.{........."name":."i
1ca20 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 20 python",........."version":.3...
1ca40 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 22 ....},......."file_extension":."
1ca60 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 2d .py",......."mimetype":."text/x-
1ca80 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 2c python",......."name":."python",
1caa0 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 79 ......."nbconvert_exporter":."py
1cac0 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 22 thon",......."pygments_lexer":."
1cae0 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 36 ipython3",......."version":."3.6
1cb00 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 0a .5".....}...},..."nbformat":.4,.
1cb20 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 00 .."nbformat_minor":.0.}PK.......
1cb40 00 2d 60 cb 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 .-`.LI.{.............plot_otda_m
1cb60 61 70 70 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 apping.ipynb{..."cells":.[.....{
1cb80 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",.....
1cba0 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,......
1cbc0 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
1cbe0 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
1cc00 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":.[.......
1cc20 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".......]..
1cc40 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":."
1cc60 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":.{},
1cc80 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#.
1cca0 4f 54 20 6d 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 OT.mapping.estimation.for.domain
1ccc0 20 61 64 61 70 74 61 74 69 6f 6e 5c 6e 5c 6e 5c 6e 54 68 69 73 20 65 78 61 6d 70 6c 65 20 70 72 .adaptation\n\n\nThis.example.pr
1cce0 65 73 65 6e 74 73 20 68 6f 77 20 74 6f 20 75 73 65 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f esents.how.to.use.MappingTranspo
1cd00 72 74 20 74 6f 20 65 73 74 69 6d 61 74 65 20 61 74 20 74 68 65 20 73 61 6d 65 5c 6e 74 69 6d 65 rt.to.estimate.at.the.same\ntime
1cd20 20 62 6f 74 68 20 74 68 65 20 63 6f 75 70 6c 69 6e 67 20 74 72 61 6e 73 70 6f 72 74 20 61 6e 64 .both.the.coupling.transport.and
1cd40 20 61 70 70 72 6f 78 69 6d 61 74 65 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 61 70 20 77 .approximate.the.transport.map.w
1cd60 69 74 68 20 65 69 74 68 65 72 5c 6e 61 20 6c 69 6e 65 61 72 20 6f 72 20 61 20 6b 65 72 6e 65 6c ith.either\na.linear.or.a.kernel
1cd80 69 7a 65 64 20 6d 61 70 70 69 6e 67 20 61 73 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e 20 5b 38 ized.mapping.as.introduced.in.[8
1cda0 5d 2e 5c 6e 5c 6e 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 ].\n\n[8].M..Perrot,.N..Courty,.
1cdc0 52 2e 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 5c 6e 20 20 20 20 5c 22 4d R..Flamary,.A..Habrard,\n....\"M
1cde0 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 69 73 63 72 65 74 65 20 6f apping.estimation.for.discrete.o
1ce00 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 5c 22 2c 5c 6e 20 20 20 20 4e 65 75 72 61 6c 20 ptimal.transport\",\n....Neural.
1ce20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 79 73 74 65 6d 73 20 28 Information.Processing.Systems.(
1ce40 4e 49 50 53 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 NIPS),.2016.\n\n".......].....},
1ce60 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"
1ce80 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,
1cea0 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
1cec0 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.......},......."
1cee0 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":.[.
1cf00 20 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 ........"#.Authors:.Remi.Flamary
1cf20 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 5c 6e 23 20 20 20 20 20 .<remi.flamary@unice.fr>\n#.....
1cf40 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 .....Stanislas.Chambon.<stan.cha
1cf60 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 4d mbon@gmail.com>\n#\n#.License:.M
1cf80 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 IT.License\n\nimport.numpy.as.np
1cfa0 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 5c \nimport.matplotlib.pylab.as.pl\
1cfc0 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 20 20 20 20 7b nimport.ot".......].....},.....{
1cfe0 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",.
1d000 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
1d020 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 61 5c 6e rce":.[........."Generate.data\n
1d040 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".......].....}
1d060 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
1d080 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
1d0a0 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
1d0c0 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.......},.......
1d0e0 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":.[
1d100 0a 20 20 20 20 20 20 20 20 22 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 20 3d 20 31 30 30 ........."n_source_samples.=.100
1d120 5c 6e 6e 5f 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 \nn_target_samples.=.100\ntheta.
1d140 3d 20 32 20 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 =.2.*.np.pi./.20\nnoise_level.=.
1d160 30 2e 31 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 0.1\n\nXs,.ys.=.ot.datasets.make
1d180 5f 64 61 74 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 _data_classif(\n....'gaussrot',.
1d1a0 6e 5f 73 6f 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 n_source_samples,.nz=noise_level
1d1c0 29 5c 6e 58 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 )\nXs_new,._.=.ot.datasets.make_
1d1e0 64 61 74 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 data_classif(\n....'gaussrot',.n
1d200 5f 73 6f 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 _source_samples,.nz=noise_level)
1d220 5c 6e 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 6d 61 6b 65 5f 64 61 74 61 \nXt,.yt.=.ot.datasets.make_data
1d240 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 74 61 72 _classif(\n....'gaussrot',.n_tar
1d260 67 65 74 5f 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 get_samples,.theta=theta,.nz=noi
1d280 73 65 5f 6c 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 se_level)\n\n#.one.of.the.target
1d2a0 20 6d 6f 64 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 .mode.changes.its.variance.(no.l
1d2c0 69 6e 65 61 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 inear.mapping)\nXt[yt.==.2].*=.3
1d2e0 5c 6e 58 74 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 \nXt.=.Xt.+.4".......].....},...
1d300 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
1d320 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":.{},......."
1d340 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 64 61 74 61 5c 6e 2d source":.[........."Plot.data\n-
1d360 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".......].....},....
1d380 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",...
1d3a0 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,....
1d3c0 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
1d3e0 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
1d400 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":.[.....
1d420 20 20 20 20 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 ...."pl.figure(1,.(10,.5))\npl.c
1d440 6c 66 28 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 lf()\npl.scatter(Xs[:,.0],.Xs[:,
1d460 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
1d480 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[:,
1d4a0 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',
1d4c0 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 6c 65 67 .label='Target.samples')\npl.leg
1d4e0 65 6e 64 28 6c 6f 63 3d 30 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 end(loc=0)\npl.title('Source.and
1d500 20 74 61 72 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 .target.distributions')".......]
1d520 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":
1d540 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":.{
1d560 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 49 6e },......."source":.[........."In
1d580 73 74 61 6e 74 69 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 stantiate.the.different.transpor
1d5a0 74 20 61 6c 67 6f 72 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 5c 6e 2d 2d 2d 2d 2d t.algorithms.and.fit.them\n-----
1d5c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
1d5e0 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".....
1d600 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
1d620 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
1d640 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":.{..
1d660 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.......
1d680 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
1d6a0 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 4d 61 70 70 69 6e 67 54 72 61 6e ource":.[........."#.MappingTran
1d6c0 73 70 6f 72 74 20 77 69 74 68 20 6c 69 6e 65 61 72 20 6b 65 72 6e 65 6c 5c 6e 6f 74 5f 6d 61 70 sport.with.linear.kernel\not_map
1d6e0 70 69 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 ping_linear.=.ot.da.MappingTrans
1d700 70 6f 72 74 28 5c 6e 20 20 20 20 6b 65 72 6e 65 6c 3d 5c 22 6c 69 6e 65 61 72 5c 22 2c 20 6d 75 port(\n....kernel=\"linear\",.mu
1d720 3d 31 65 30 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 5c 6e 20 20 20 20 =1e0,.eta=1e-8,.bias=True,\n....
1d740 6d 61 78 5f 69 74 65 72 3d 32 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 5c 6e 5c 6e 6f 74 max_iter=20,.verbose=True)\n\not
1d760 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 _mapping_linear.fit(Xs=Xs,.Xt=Xt
1d780 29 5c 6e 5c 6e 23 20 66 6f 72 20 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 63 65 20 73 61 6d 70 6c )\n\n#.for.original.source.sampl
1d7a0 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 62 61 72 79 63 65 6e 74 72 69 es,.transform.applies.barycentri
1d7c0 63 20 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 c.mapping\ntransp_Xs_linear.=.ot
1d7e0 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 _mapping_linear.transform(Xs=Xs)
1d800 5c 6e 5c 6e 23 20 66 6f 72 20 6f 75 74 20 6f 66 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c \n\n#.for.out.of.source.samples,
1d820 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 74 68 65 20 6c 69 6e 65 61 72 20 6d 61 .transform.applies.the.linear.ma
1d840 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 5f 6e 65 77 20 3d 20 6f 74 pping\ntransp_Xs_linear_new.=.ot
1d860 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f _mapping_linear.transform(Xs=Xs_
1d880 6e 65 77 29 5c 6e 5c 6e 5c 6e 23 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 77 69 74 new)\n\n\n#.MappingTransport.wit
1d8a0 68 20 67 61 75 73 73 69 61 6e 20 6b 65 72 6e 65 6c 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 h.gaussian.kernel\not_mapping_ga
1d8c0 75 73 73 69 61 6e 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 ussian.=.ot.da.MappingTransport(
1d8e0 5c 6e 20 20 20 20 6b 65 72 6e 65 6c 3d 5c 22 67 61 75 73 73 69 61 6e 5c 22 2c 20 65 74 61 3d 31 \n....kernel=\"gaussian\",.eta=1
1d900 65 2d 35 2c 20 6d 75 3d 31 65 2d 31 2c 20 62 69 61 73 3d 54 72 75 65 2c 20 73 69 67 6d 61 3d 31 e-5,.mu=1e-1,.bias=True,.sigma=1
1d920 2c 5c 6e 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 ,\n....max_iter=10,.verbose=True
1d940 29 5c 6e 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 66 69 74 28 58 73 3d 58 73 )\not_mapping_gaussian.fit(Xs=Xs
1d960 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 66 6f 72 20 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 63 ,.Xt=Xt)\n\n#.for.original.sourc
1d980 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 62 61 72 e.samples,.transform.applies.bar
1d9a0 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 ycentric.mapping\ntransp_Xs_gaus
1d9c0 73 69 61 6e 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 72 61 6e 73 sian.=.ot_mapping_gaussian.trans
1d9e0 66 6f 72 6d 28 58 73 3d 58 73 29 5c 6e 5c 6e 23 20 66 6f 72 20 6f 75 74 20 6f 66 20 73 6f 75 72 form(Xs=Xs)\n\n#.for.out.of.sour
1da00 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 74 68 ce.samples,.transform.applies.th
1da20 65 20 67 61 75 73 73 69 61 6e 20 6d 61 70 70 69 6e 67 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 67 61 e.gaussian.mapping\ntransp_Xs_ga
1da40 75 73 73 69 61 6e 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e ussian_new.=.ot_mapping_gaussian
1da60 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 22 0a 20 20 20 20 20 20 5d 0a 20 .transform(Xs=Xs_new)".......]..
1da80 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":."
1daa0 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":.{},
1dac0 0a 20 20 20 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 ......."source":.[........."Plot
1dae0 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .transported.samples\n----------
1db00 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".......].....
1db20 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
1db40 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
1db60 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":.{........."
1db80 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.......},......
1dba0 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":.
1dbc0 5b 0a 20 20 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 [........."pl.figure(2)\npl.clf(
1dbe0 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 74 74 )\npl.subplot(2,.2,.1)\npl.scatt
1dc00 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 er(Xt[:,.0],.Xt[:,.1],.c=yt,.mar
1dc20 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 ker='o',\n...........label='Targ
1dc40 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 63 61 74 74 et.samples',.alpha=.2)\npl.scatt
1dc60 65 72 28 74 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 er(transp_Xs_linear[:,.0],.trans
1dc80 70 5f 58 73 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 p_Xs_linear[:,.1],.c=ys,.marker=
1dca0 27 2b 27 2c 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 '+',\n...........label='Mapped.s
1dcc0 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 42 61 72 79 ource.samples')\npl.title(\"Bary
1dce0 2e 20 6d 61 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 5c 22 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 ..mapping.(linear)\")\npl.legend
1dd00 28 6c 6f 63 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 (loc=0)\n\npl.subplot(2,.2,.2)\n
1dd20 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
1dd40 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 =yt,.marker='o',\n...........lab
1dd60 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 2e 32 29 5c 6e el='Target.samples',.alpha=.2)\n
1dd80 70 6c 2e 73 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 pl.scatter(transp_Xs_linear_new[
1dda0 3a 2c 20 30 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 :,.0],.transp_Xs_linear_new[:,.1
1ddc0 5d 2c 5c 6e 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 ],\n...........c=ys,.marker='+',
1dde0 20 6c 61 62 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 .label='Learned.mapping')\npl.ti
1de00 74 6c 65 28 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 tle(\"Estim..mapping.(linear)\")
1de20 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 33 29 5c 6e 70 6c 2e 73 63 61 74 \n\npl.subplot(2,.2,.3)\npl.scat
1de40 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 ter(Xt[:,.0],.Xt[:,.1],.c=yt,.ma
1de60 72 6b 65 72 3d 27 6f 27 2c 5c 6e 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 rker='o',\n...........label='Tar
1de80 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 63 61 74 get.samples',.alpha=.2)\npl.scat
1dea0 74 65 72 28 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 ter(transp_Xs_gaussian[:,.0],.tr
1dec0 61 6e 73 70 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 ansp_Xs_gaussian[:,.1],.c=ys,\n.
1dee0 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 62 61 72 ..........marker='+',.label='bar
1df00 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 42 ycentric.mapping')\npl.title(\"B
1df20 61 72 79 2e 20 6d 61 70 70 69 6e 67 20 28 6b 65 72 6e 65 6c 29 5c 22 29 5c 6e 5c 6e 70 6c 2e 73 ary..mapping.(kernel)\")\n\npl.s
1df40 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 58 74 5b 3a ubplot(2,.2,.4)\npl.scatter(Xt[:
1df60 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'
1df80 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
1dfa0 6c 65 73 27 2c 20 61 6c 70 68 61 3d 2e 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e les',.alpha=.2)\npl.scatter(tran
1dfc0 73 70 5f 58 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 sp_Xs_gaussian_new[:,.0],.transp
1dfe0 5f 58 73 5f 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 _Xs_gaussian_new[:,.1],.c=ys,\n.
1e000 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 4c 65 61 ..........marker='+',.label='Lea
1e020 72 6e 65 64 20 6d 61 70 70 69 6e 67 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 5c 22 45 73 74 69 6d rned.mapping')\npl.title(\"Estim
1e040 2e 20 6d 61 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 ..mapping.(kernel)\")\npl.tight_
1e060 6c 61 79 6f 75 74 28 29 5c 6e 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 layout()\n\npl.show()".......]..
1e080 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b ...}...],..."metadata":.{....."k
1e0a0 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
1e0c0 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 e":."Python.3",......."language"
1e0e0 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f :."python",......."name":."pytho
1e100 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 n3".....},....."language_info":.
1e120 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 {......."codemirror_mode":.{....
1e140 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 ....."name":."ipython",.........
1e160 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c "version":.3.......},......."fil
1e180 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 e_extension":.".py",......."mime
1e1a0 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e type":."text/x-python",......."n
1e1c0 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 ame":."python",......."nbconvert
1e1e0 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 _exporter":."python",......."pyg
1e200 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 ments_lexer":."ipython3",.......
1e220 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 "version":."3.6.5".....}...},...
1e240 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 "nbformat":.4,..."nbformat_minor
1e260 22 3a 20 30 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 ":.0.}PK........-`.L....|...|...
1e280 16 00 00 00 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 ....plot_compute_emd.ipynb{..."c
1e2a0 65 6c 6c 73 22 3a 20 5b 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 65 6c 6c 5f 74 79 70 65 22 ells":.[.....{......."cell_type"
1e2c0 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
1e2e0 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":.{....
1e300 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.......},
1e320 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
1e340 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 25 6d 61 74 70 6c 6f 74 6c 69 62 20 69 6e 6c rce":.[........."%matplotlib.inl
1e360 69 6e 65 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 ine".......].....},.....{.......
1e380 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",......."
1e3a0 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":.[
1e3c0 0a 20 20 20 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 ........."\n#.Plot.multiple.EMD\
1e3e0 6e 5c 6e 5c 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 n\n\nShows.how.to.compute.multip
1e400 6c 65 20 45 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 le.EMD.and.Sinkhorn.with.two.dif
1e420 66 65 72 6e 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 fernt\nground.metrics.and.plot.t
1e440 68 65 69 72 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 heir.values.for.diffeent.distrib
1e460 75 74 69 6f 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 utions.\n\n\n\n".......].....},.
1e480 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",
1e4a0 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,.
1e4c0 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
1e4e0 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
1e500 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":.[..
1e520 20 20 20 20 20 20 20 22 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c ......."#.Author:.Remi.Flamary.<
1e540 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 6e 23 20 4c 69 63 remi.flamary@unice.fr>\n#\n#.Lic
1e560 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
1e580 79 20 61 73 20 6e 70 5c 6e 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 y.as.np\nimport.matplotlib.pylab
1e5a0 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 .as.pl\nimport.ot\nfrom.ot.datas
1e5c0 65 74 73 20 69 6d 70 6f 72 74 20 6d 61 6b 65 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 ets.import.make_1D_gauss.as.gaus
1e5e0 73 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 22 63 s".......].....},.....{......."c
1e600 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
1e620 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":.[..
1e640 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 2d 2d 2d 2d 2d ......."Generate.data\n---------
1e660 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".......].....},.....{..
1e680 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",.......
1e6a0 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,......."
1e6c0 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"
1e6e0 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"
1e700 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":.[.........
1e720 22 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 5c 6e 5c 6e 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 "#%%.parameters\n\nn.=.100..#.nb
1e740 20 62 69 6e 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 .bins\nn_target.=.50..#.nb.targe
1e760 74 20 64 69 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 t.distributions\n\n\n#.bin.posit
1e780 69 6f 6e 73 5c 6e 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d 6e 70 2e ions\nx.=.np.arange(n,.dtype=np.
1e7a0 66 6c 6f 61 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 float64)\n\nlst_m.=.np.linspace(
1e7c0 32 30 2c 20 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 20,.90,.n_target)\n\n#.Gaussian.
1e7e0 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 32 30 distributions\na.=.gauss(n,.m=20
1e800 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 5c 6e 42 20 3d ,.s=5)..#.m=.mean,.s=.std\n\nB.=
1e820 20 6e 70 2e 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 .np.zeros((n,.n_target))\n\nfor.
1e840 69 2c 20 6d 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 i,.m.in.enumerate(lst_m):\n....B
1e860 5b 3a 2c 20 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 [:,.i].=.gauss(n,.m=m,.s=5)\n\n#
1e880 20 6c 6f 73 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 .loss.matrix.and.normalization\n
1e8a0 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 M.=.ot.dist(x.reshape((n,.1)),.x
1e8c0 2e 72 65 73 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 .reshape((n,.1)),.'euclidean')\n
1e8e0 4d 20 2f 3d 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 M./=.M.max()\nM2.=.ot.dist(x.res
1e900 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c hape((n,.1)),.x.reshape((n,.1)),
1e920 20 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 5c 6e 4d 32 20 2f 3d 20 4d 32 2e 6d 61 78 28 29 22 .'sqeuclidean')\nM2./=.M2.max()"
1e940 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
1e960 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
1e980 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":.[....
1e9a0 20 20 20 20 20 22 50 6c 6f 74 20 64 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a ....."Plot.data\n---------\n\n".
1e9c0 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
1e9e0 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
1ea00 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":
1ea20 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...
1ea40 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":.[],.....
1ea60 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 70 6c 6f 74 20 .."source":.[........."#%%.plot.
1ea80 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 72 65 28 31 the.distributions\n\npl.figure(1
1eaa0 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 31 29 5c 6e 70 6c 2e 70 6c 6f 74 28 )\npl.subplot(2,.1,.1)\npl.plot(
1eac0 78 2c 20 61 2c 20 27 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 x,.a,.'b',.label='Source.distrib
1eae0 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 ution')\npl.title('Source.distri
1eb00 62 75 74 69 6f 6e 27 29 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 32 29 5c 6e 70 bution')\npl.subplot(2,.1,.2)\np
1eb20 6c 2e 70 6c 6f 74 28 78 2c 20 42 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 69 73 74 72 l.plot(x,.B,.label='Target.distr
1eb40 69 62 75 74 69 6f 6e 73 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 67 65 74 20 64 69 73 ibutions')\npl.title('Target.dis
1eb60 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 22 tributions')\npl.tight_layout()"
1eb80 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
1eba0 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
1ebc0 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":.[....
1ebe0 20 20 20 20 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 ....."Compute.EMD.for.the.differ
1ec00 65 6e 74 20 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 ent.losses\n--------------------
1ec20 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".......]...
1ec40 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
1ec60 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
1ec80 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":.{........
1eca0 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.......},....
1ecc0 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"
1ece0 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 25 25 20 43 6f 6d 70 75 74 65 20 61 6e 64 20 70 6c 6f :.[........."#%%.Compute.and.plo
1ed00 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 5c t.distributions.and.loss.matrix\
1ed20 6e 5c 6e 64 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 n\nd_emd.=.ot.emd2(a,.B,.M)..#.d
1ed40 69 72 65 63 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 irect.computation.of.EMD\nd_emd2
1ed60 20 3d 20 6f 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 .=.ot.emd2(a,.B,.M2)..#.direct.c
1ed80 6f 6d 70 75 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 omputation.of.EMD.with.loss.M2\n
1eda0 5c 6e 5c 6e 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 \n\npl.figure(2)\npl.plot(d_emd,
1edc0 20 6c 61 62 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 .label='Euclidean.EMD')\npl.plot
1ede0 28 64 5f 65 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 (d_emd2,.label='Squared.Euclidea
1ee00 6e 20 45 4d 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 n.EMD')\npl.title('EMD.distances
1ee20 27 29 5c 6e 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 ')\npl.legend()".......].....},.
1ee40 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
1ee60 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":.{},......
1ee80 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 74 65 20 53 69 ."source":.[........."Compute.Si
1eea0 6e 6b 68 6f 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 nkhorn.for.the.different.losses\
1eec0 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-------------------------------
1eee0 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".......].....},..
1ef00 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",.
1ef20 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,..
1ef40 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
1ef60 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
1ef80 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":.[...
1efa0 20 20 20 20 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 ......"#%%\nreg.=.1e-2\nd_sinkho
1efc0 72 6e 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 32 28 61 2c 20 42 2c 20 4d 2c 20 72 65 67 29 5c rn.=.ot.sinkhorn2(a,.B,.M,.reg)\
1efe0 6e 64 5f 73 69 6e 6b 68 6f 72 6e 32 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 32 28 61 2c 20 42 nd_sinkhorn2.=.ot.sinkhorn2(a,.B
1f000 2c 20 4d 32 2c 20 72 65 67 29 5c 6e 5c 6e 70 6c 2e 66 69 67 75 72 65 28 32 29 5c 6e 70 6c 2e 63 ,.M2,.reg)\n\npl.figure(2)\npl.c
1f020 6c 66 28 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 2c 20 6c 61 62 65 6c 3d 27 45 75 63 6c lf()\npl.plot(d_emd,.label='Eucl
1f040 69 64 65 61 6e 20 45 4d 44 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 32 2c 20 6c 61 62 idean.EMD')\npl.plot(d_emd2,.lab
1f060 65 6c 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 5c 6e 70 6c 2e el='Squared.Euclidean.EMD')\npl.
1f080 70 6c 6f 74 28 64 5f 73 69 6e 6b 68 6f 72 6e 2c 20 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 45 75 63 plot(d_sinkhorn,.'+',.label='Euc
1f0a0 6c 69 64 65 61 6e 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 70 6c 2e 70 6c 6f 74 28 64 5f 73 69 6e lidean.Sinkhorn')\npl.plot(d_sin
1f0c0 6b 68 6f 72 6e 32 2c 20 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c khorn2,.'+',.label='Squared.Eucl
1f0e0 69 64 65 61 6e 20 53 69 6e 6b 68 6f 72 6e 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 45 4d 44 20 idean.Sinkhorn')\npl.title('EMD.
1f100 64 69 73 74 61 6e 63 65 73 27 29 5c 6e 70 6c 2e 6c 65 67 65 6e 64 28 29 5c 6e 5c 6e 70 6c 2e 73 distances')\npl.legend()\n\npl.s
1f120 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a 20 20 22 6d 65 74 how()".......].....}...],..."met
1f140 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 3a 20 7b 0a 20 20 adata":.{....."kernelspec":.{...
1f160 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f 6e 20 33 22 2c 0a ...."display_name":."Python.3",.
1f180 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 ......"language":."python",.....
1f1a0 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c 0a 20 20 20 20 22 .."name":."python3".....},....."
1f1c0 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 6f 64 65 6d 69 72 language_info":.{......."codemir
1f1e0 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 69 70 ror_mode":.{........."name":."ip
1f200 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 33 0a 20 20 20 ython",........."version":.3....
1f220 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f 6e 22 3a 20 22 2e ...},......."file_extension":.".
1f240 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 78 74 2f 78 2d 70 py",......."mimetype":."text/x-p
1f260 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 22 2c 0a ython",......."name":."python",.
1f280 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 3a 20 22 70 79 74 ......"nbconvert_exporter":."pyt
1f2a0 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 72 22 3a 20 22 69 hon",......."pygments_lexer":."i
1f2c0 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a 20 22 33 2e 36 2e python3",......."version":."3.6.
1f2e0 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 0a 20 5".....}...},..."nbformat":.4,..
1f300 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 14 00 00 00 00 00 ."nbformat_minor":.0.}PK........
1f320 ec 45 43 4d 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 .ECMX..{........#...plot_convolu
1f340 74 69 6f 6e 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 tional_barycenter.ipynb{..."cell
1f360 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":."
1f380 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":.
1f3a0 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":.{.......
1f3c0 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.......},...
1f3e0 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
1f400 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
1f420 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
1f440 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
1f460 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":.[...
1f480 20 20 20 20 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 ......"\n#.Convolutional.Wassers
1f4a0 74 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 tein.Barycenter.example\n\n\nThi
1f4c0 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 69 6c 6c 75 73 74 72 s.example.is.designed.to.illustr
1f4e0 61 74 65 20 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 ate.how.the.Convolutional.Wasser
1f500 73 74 65 69 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 stein.Barycenter\nfunction.of.PO
1f520 54 20 77 6f 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 T.works.\n\n".......].....},....
1f540 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",...
1f560 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,....
1f580 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
1f5a0 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
1f5c0 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":.[.....
1f5e0 20 20 20 20 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 ...."#.Author:.Nicolas.Courty.<n
1f600 63 6f 75 72 74 79 40 69 72 69 73 61 2e 66 72 3e 5c 6e 23 5c 6e 23 20 4c 69 63 65 6e 73 65 3a 20 courty@irisa.fr>\n#\n#.License:.
1f620 4d 49 54 20 4c 69 63 65 6e 73 65 5c 6e 5c 6e 5c 6e 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 MIT.License\n\n\nimport.numpy.as
1f640 20 6e 70 5c 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 .np\nimport.pylab.as.pl\nimport.
1f660 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 20 22 ot".......].....},.....{......."
1f680 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
1f6a0 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":.[.
1f6c0 20 20 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 ........"Data.preparation\n-----
1f6e0 2d 2d 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 -----------\n\nThe.four.distribu
1f700 74 69 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 tions.are.constructed.from.4.sim
1f720 70 6c 65 20 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 ple.images\n\n".......].....},..
1f740 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",.
1f760 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,..
1f780 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
1f7a0 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
1f7c0 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":.[...
1f7e0 20 20 20 20 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 ......"f1.=.1.-.pl.imread('../da
1f800 74 61 2f 72 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 ta/redcross.png')[:,.:,.2]\nf2.=
1f820 20 31 20 2d 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 .1.-.pl.imread('../data/duck.png
1f840 27 29 5b 3a 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 ')[:,.:,.2]\nf3.=.1.-.pl.imread(
1f860 27 2e 2e 2f 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 '../data/heart.png')[:,.:,.2]\nf
1f880 34 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 74 6f 6f 74 68 4.=.1.-.pl.imread('../data/tooth
1f8a0 2e 70 6e 67 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 .png')[:,.:,.2]\n\nA.=.[]\nf1.=.
1f8c0 66 31 20 2f 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 f1./.np.sum(f1)\nf2.=.f2./.np.su
1f8e0 6d 28 66 32 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 m(f2)\nf3.=.f3./.np.sum(f3)\nf4.
1f900 3d 20 66 34 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 =.f4./.np.sum(f4)\nA.append(f1)\
1f920 6e 41 2e 61 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 nA.append(f2)\nA.append(f3)\nA.a
1f940 70 70 65 6e 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 ppend(f4)\nA.=.np.array(A)\n\nnb
1f960 5f 69 6d 61 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 _images.=.5\n\n#.those.are.the.f
1f980 6f 75 72 20 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 our.corners.coordinates.that.wil
1f9a0 6c 20 62 65 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 l.be.interpolated.by.bilinear\n#
1f9c0 20 69 6e 74 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 .interpolation\nv1.=.np.array((1
1f9e0 2c 20 30 2c 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 ,.0,.0,.0))\nv2.=.np.array((0,.1
1fa00 2c 20 30 2c 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 ,.0,.0))\nv3.=.np.array((0,.0,.1
1fa20 2c 20 30 29 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 ,.0))\nv4.=.np.array((0,.0,.0,.1
1fa40 29 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 ))".......].....},.....{......."
1fa60 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
1fa80 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":.[.
1faa0 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 20 ........"Barycenter.computation.
1fac0 61 6e 64 20 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 and.visualization\n-------------
1fae0 2d 2d 2d 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 5c ---------------------------\n\n\
1fb00 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
1fb20 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
1fb40 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
1fb60 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
1fb80 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":.[],..
1fba0 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
1fbc0 75 72 65 28 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 ure(figsize=(10,.10))\npl.title(
1fbe0 27 43 6f 6e 76 6f 6c 75 74 69 6f 6e 61 6c 20 57 61 73 73 65 72 73 74 65 69 6e 20 42 61 72 79 63 'Convolutional.Wasserstein.Baryc
1fc00 65 6e 74 65 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 enters.in.POT')\ncm.=.'Blues'\n#
1fc20 20 72 65 67 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 .regularization.parameter\nreg.=
1fc40 20 30 2e 30 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 .0.004\nfor.i.in.range(nb_images
1fc60 29 3a 5c 6e 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 ):\n....for.j.in.range(nb_images
1fc80 29 3a 5c 6e 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 ):\n........pl.subplot(nb_images
1fca0 2c 20 6e 62 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 ,.nb_images,.i.*.nb_images.+.j.+
1fcc0 20 31 29 5c 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 .1)\n........tx.=.float(i)./.(nb
1fce0 5f 69 6d 61 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 _images.-.1)\n........ty.=.float
1fd00 28 6a 29 20 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 (j)./.(nb_images.-.1)\n\n.......
1fd20 20 23 20 77 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 .#.weights.are.constructed.by.bi
1fd40 6c 69 6e 65 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 linear.interpolation\n........tm
1fd60 70 31 20 3d 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 p1.=.(1.-.tx).*.v1.+.tx.*.v2\n..
1fd80 20 20 20 20 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 ......tmp2.=.(1.-.tx).*.v3.+.tx.
1fda0 2a 20 76 34 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 *.v4\n........weights.=.(1.-.ty)
1fdc0 20 2a 20 74 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 .*.tmp1.+.ty.*.tmp2\n\n........i
1fde0 66 20 69 20 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 f.i.==.0.and.j.==.0:\n..........
1fe00 20 20 70 6c 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 ..pl.imshow(f1,.cmap=cm)\n......
1fe20 20 20 20 20 20 20 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 20 20 20 20 20 20 20 20 65 6c ......pl.axis('off')\n........el
1fe40 69 66 20 69 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 if.i.==.0.and.j.==.(nb_images.-.
1fe60 31 29 3a 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 66 33 2c 20 63 1):\n............pl.imshow(f3,.c
1fe80 6d 61 70 3d 63 6d 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 61 78 69 73 28 27 6f 66 map=cm)\n............pl.axis('of
1fea0 66 27 29 5c 6e 20 20 20 20 20 20 20 20 65 6c 69 66 20 69 20 3d 3d 20 28 6e 62 5f 69 6d 61 67 65 f')\n........elif.i.==.(nb_image
1fec0 73 20 2d 20 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 s.-.1).and.j.==.0:\n............
1fee0 70 6c 2e 69 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 pl.imshow(f2,.cmap=cm)\n........
1ff00 20 20 20 20 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 20 20 20 20 20 20 20 20 65 6c 69 66 ....pl.axis('off')\n........elif
1ff20 20 69 20 3d 3d 20 28 6e 62 5f 69 6d 61 67 65 73 20 2d 20 31 29 20 61 6e 64 20 6a 20 3d 3d 20 28 .i.==.(nb_images.-.1).and.j.==.(
1ff40 6e 62 5f 69 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 nb_images.-.1):\n............pl.
1ff60 69 6d 73 68 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 imshow(f4,.cmap=cm)\n...........
1ff80 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 73 65 3a 5c 6e .pl.axis('off')\n........else:\n
1ffa0 20 20 20 20 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 ............#.call.to.barycenter
1ffc0 20 63 6f 6d 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 .computation\n............pl.ims
1ffe0 68 6f 77 28 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 how(ot.bregman.convolutional_bar
20000 79 63 65 6e 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 ycenter2d(A,.reg,.weights),.cmap
20020 3d 63 6d 29 5c 6e 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 =cm)\n............pl.axis('off')
20040 5c 6e 70 6c 2e 73 68 6f 77 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 0a 20 20 5d 2c 0a \npl.show()".......].....}...],.
20060 20 20 22 6d 65 74 61 64 61 74 61 22 3a 20 7b 0a 20 20 20 20 22 6b 65 72 6e 65 6c 73 70 65 63 22 .."metadata":.{....."kernelspec"
20080 3a 20 7b 0a 20 20 20 20 20 20 22 64 69 73 70 6c 61 79 5f 6e 61 6d 65 22 3a 20 22 50 79 74 68 6f :.{......."display_name":."Pytho
200a0 6e 20 33 22 2c 0a 20 20 20 20 20 20 22 6c 61 6e 67 75 61 67 65 22 3a 20 22 70 79 74 68 6f 6e 22 n.3",......."language":."python"
200c0 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 68 6f 6e 33 22 0a 20 20 20 20 7d 2c ,......."name":."python3".....},
200e0 0a 20 20 20 20 22 6c 61 6e 67 75 61 67 65 5f 69 6e 66 6f 22 3a 20 7b 0a 20 20 20 20 20 20 22 63 ....."language_info":.{......."c
20100 6f 64 65 6d 69 72 72 6f 72 5f 6d 6f 64 65 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 6e 61 6d 65 odemirror_mode":.{........."name
20120 22 3a 20 22 69 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a ":."ipython",........."version":
20140 20 33 0a 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 22 66 69 6c 65 5f 65 78 74 65 6e 73 69 6f .3.......},......."file_extensio
20160 6e 22 3a 20 22 2e 70 79 22 2c 0a 20 20 20 20 20 20 22 6d 69 6d 65 74 79 70 65 22 3a 20 22 74 65 n":.".py",......."mimetype":."te
20180 78 74 2f 78 2d 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 70 79 74 xt/x-python",......."name":."pyt
201a0 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 6e 62 63 6f 6e 76 65 72 74 5f 65 78 70 6f 72 74 65 72 22 hon",......."nbconvert_exporter"
201c0 3a 20 22 70 79 74 68 6f 6e 22 2c 0a 20 20 20 20 20 20 22 70 79 67 6d 65 6e 74 73 5f 6c 65 78 65 :."python",......."pygments_lexe
201e0 72 22 3a 20 22 69 70 79 74 68 6f 6e 33 22 2c 0a 20 20 20 20 20 20 22 76 65 72 73 69 6f 6e 22 3a r":."ipython3",......."version":
20200 20 22 33 2e 36 2e 35 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 ."3.6.5".....}...},..."nbformat"
20220 3a 20 34 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 03 04 :.4,..."nbformat_minor":.0.}PK..
20240 14 00 00 00 00 00 77 6d 7d 4e a0 07 79 4d 23 16 00 00 23 16 00 00 1c 00 00 00 70 6c 6f 74 5f 6f ......wm}N..yM#...#.......plot_o
20260 74 64 61 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 7b 0a 20 20 22 63 65 6c 6c 73 tda_color_images.ipynb{..."cells
20280 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
202a0 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
202c0 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":.{........
202e0 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.......},....
20300 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"
20320 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"
20340 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
20360 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
20380 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":.[....
203a0 20 20 20 20 20 22 5c 6e 23 20 4f 54 20 66 6f 72 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 ....."\n#.OT.for.image.color.ada
203c0 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
203e0 74 73 20 61 20 77 61 79 20 6f 66 20 74 72 61 6e 73 66 65 72 72 69 6e 67 20 63 6f 6c 6f 72 73 20 ts.a.way.of.transferring.colors.
20400 62 65 74 77 65 65 6e 20 74 77 6f 20 69 6d 61 67 65 73 5c 6e 77 69 74 68 20 4f 70 74 69 6d 61 6c between.two.images\nwith.Optimal
20420 20 54 72 61 6e 73 70 6f 72 74 20 61 73 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e 20 5b 36 5d 5c .Transport.as.introduced.in.[6]\
20440 6e 5c 6e 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 64 61 6b 69 73 2c n\n[6].Ferradans,.S.,.Papadakis,
20460 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 2e 20 28 .N.,.Peyre,.G.,.&.Aujol,.J..F..(
20480 32 30 31 34 29 2e 5c 6e 52 65 67 75 6c 61 72 69 7a 65 64 20 64 69 73 63 72 65 74 65 20 6f 70 74 2014).\nRegularized.discrete.opt
204a0 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 5c 6e 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e imal.transport.\nSIAM.Journal.on
204c0 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 20 31 38 35 33 2d 31 38 .Imaging.Sciences,.7(3),.1853-18
204e0 38 32 2e 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 7b 0a 20 20 82.\n\n".......].....},.....{...
20500 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",......."
20520 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
20540 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":
20560 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":
20580 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":.[........."
205a0 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 66 6c #.Authors:.Remi.Flamary.<remi.fl
205c0 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 61 6e amary@unice.fr>\n#..........Stan
205e0 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 61 69 islas.Chambon.<stan.chambon@gmai
20600 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 6e 73 l.com>\n#\n#.License:.MIT.Licens
20620 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 73 63 e\n\nimport.numpy.as.np\nfrom.sc
20640 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 70 6c ipy.import.ndimage\nimport.matpl
20660 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 5c 6e 69 6d 70 6f 72 74 20 6f 74 5c 6e 5c 6e otlib.pylab.as.pl\nimport.ot\n\n
20680 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 29 5c \nr.=.np.random.RandomState(42)\
206a0 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 22 43 n\n\ndef.im2mat(I):\n....\"\"\"C
206c0 6f 6e 76 65 72 74 73 20 61 6e 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 onverts.an.image.to.matrix.(one.
206e0 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 5c 22 5c 22 5c 22 5c 6e 20 20 20 20 72 65 74 75 72 pixel.per.line)\"\"\"\n....retur
20700 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 20 2a 20 49 2e 73 68 61 70 n.I.reshape((I.shape[0].*.I.shap
20720 65 5b 31 5d 2c 20 49 2e 73 68 61 70 65 5b 32 5d 29 29 5c 6e 5c 6e 5c 6e 64 65 66 20 6d 61 74 32 e[1],.I.shape[2]))\n\n\ndef.mat2
20740 69 6d 28 58 2c 20 73 68 61 70 65 29 3a 5c 6e 20 20 20 20 5c 22 5c 22 5c 22 43 6f 6e 76 65 72 74 im(X,.shape):\n....\"\"\"Convert
20760 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 65 5c 22 5c 22 5c s.back.a.matrix.to.an.image\"\"\
20780 22 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 29 5c 6e "\n....return.X.reshape(shape)\n
207a0 5c 6e 5c 6e 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 5c 6e 20 20 20 20 72 65 74 75 72 6e 20 6e \n\ndef.minmax(I):\n....return.n
207c0 70 2e 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c 0a p.clip(I,.0,.1)".......].....},.
207e0 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
20800 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":.{},......
20820 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
20840 61 74 61 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 5d 0a ata\n-------------\n\n".......].
20860 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":.
20880 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":
208a0 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":.{......
208c0 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.......},..
208e0 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
20900 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 5c e":.[........."#.Loading.images\
20920 6e 49 31 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 nI1.=.ndimage.imread('../data/oc
20940 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 ean_day.jpg').astype(np.float64)
20960 20 2f 20 32 35 36 5c 6e 49 32 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f ./.256\nI2.=.ndimage.imread('../
20980 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e data/ocean_sunset.jpg').astype(n
209a0 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 5c 6e 5c 6e 58 31 20 3d 20 69 6d 32 6d 61 74 28 p.float64)./.256\n\nX1.=.im2mat(
209c0 49 31 29 5c 6e 58 32 20 3d 20 69 6d 32 6d 61 74 28 49 32 29 5c 6e 5c 6e 23 20 74 72 61 69 6e 69 I1)\nX2.=.im2mat(I2)\n\n#.traini
209e0 6e 67 20 73 61 6d 70 6c 65 73 5c 6e 6e 62 20 3d 20 31 30 30 30 5c 6e 69 64 78 31 20 3d 20 72 2e ng.samples\nnb.=.1000\nidx1.=.r.
20a00 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 randint(X1.shape[0],.size=(nb,))
20a20 5c 6e 69 64 78 32 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 20 \nidx2.=.r.randint(X2.shape[0],.
20a40 73 69 7a 65 3d 28 6e 62 2c 29 29 5c 6e 5c 6e 58 73 20 3d 20 58 31 5b 69 64 78 31 2c 20 3a 5d 5c size=(nb,))\n\nXs.=.X1[idx1,.:]\
20a60 6e 58 74 20 3d 20 58 32 5b 69 64 78 32 2c 20 3a 5d 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d nXt.=.X2[idx2,.:]".......].....}
20a80 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
20aa0 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":.{},....
20ac0 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 50 6c 6f 74 20 6f 72 69 ..."source":.[........."Plot.ori
20ae0 67 69 6e 61 6c 20 69 6d 61 67 65 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ginal.image\n-------------------
20b00 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".......].....},.....{......
20b20 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
20b40 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
20b60 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
20b80 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":.[]
20ba0 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.
20bc0 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 5c 6e 5c 6e 70 figure(1,.figsize=(6.4,.3))\n\np
20be0 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 69 6d 73 68 6f 77 28 49 31 l.subplot(1,.2,.1)\npl.imshow(I1
20c00 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 61 )\npl.axis('off')\npl.title('Ima
20c20 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 5c 6e 70 ge.1')\n\npl.subplot(1,.2,.2)\np
20c40 6c 2e 69 6d 73 68 6f 77 28 49 32 29 5c 6e 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 5c 6e 70 6c l.imshow(I2)\npl.axis('off')\npl
20c60 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d .title('Image.2')".......].....}
20c80 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
20ca0 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":.{},....
20cc0 20 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 53 63 61 74 74 65 72 20 ..."source":.[........."Scatter.
20ce0 70 6c 6f 74 20 6f 66 20 63 6f 6c 6f 72 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d plot.of.colors\n----------------
20d00 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".......].....},.....{
20d20 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",.....
20d40 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,......
20d60 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
20d80 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
20da0 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":.[.......
20dc0 20 20 22 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 .."pl.figure(2,.figsize=(6.4,.3)
20de0 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 5c 6e 70 6c 2e 73 63 61 )\n\npl.subplot(1,.2,.1)\npl.sca
20e00 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 32 5d 2c 20 63 3d 58 73 29 5c 6e tter(Xs[:,.0],.Xs[:,.2],.c=Xs)\n
20e20 70 6c 2e 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 2c 20 31 5d 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c pl.axis([0,.1,.0,.1])\npl.xlabel
20e40 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 5c 6e 70 6c 2e 74 ('Red')\npl.ylabel('Blue')\npl.t
20e60 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 5c 6e 5c 6e 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c itle('Image.1')\n\npl.subplot(1,
20e80 20 32 2c 20 32 29 5c 6e 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b .2,.2)\npl.scatter(Xt[:,.0],.Xt[
20ea0 3a 2c 20 32 5d 2c 20 63 3d 58 74 29 5c 6e 70 6c 2e 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 2c 20 :,.2],.c=Xt)\npl.axis([0,.1,.0,.
20ec0 31 5d 29 5c 6e 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 5c 6e 70 6c 2e 79 6c 61 62 65 6c 1])\npl.xlabel('Red')\npl.ylabel
20ee0 28 27 42 6c 75 65 27 29 5c 6e 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 5c 6e 70 ('Blue')\npl.title('Image.2')\np
20f00 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 22 0a 20 20 20 20 20 20 5d 0a 20 20 20 20 7d 2c l.tight_layout()".......].....},
20f20 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
20f40 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":.{},.....
20f60 20 20 22 73 6f 75 72 63 65 22 3a 20 5b 0a 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 6e 74 69 61 .."source":.[........."Instantia
20f80 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c 67 6f 72 te.the.different.transport.algor
20fa0 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ithms.and.fit.them\n------------
20fc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
20fe0 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".......]....
21000 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
21020 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
21040 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":.{.........
21060 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.......},.....
21080 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":
210a0 20 5b 0a 20 20 20 20 20 20 20 20 22 23 20 45 4d 44 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 65 .[........."#.EMDTransport\not_e
210c0 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 5c 6e 6f 74 5f 65 6d md.=.ot.da.EMDTransport()\not_em
210e0 64 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e 23 20 53 69 6e 6b 68 6f 72 d.fit(Xs=Xs,.Xt=Xt)\n\n#.Sinkhor
21100 6e 54 72 61 6e 73 70 6f 72 74 5c 6e 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 64 61 2e nTransport\not_sinkhorn.=.ot.da.
21120 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 6e 6f SinkhornTransport(reg_e=1e-1)\no
21140 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 5c 6e 5c 6e t_sinkhorn.fit(Xs=Xs,.Xt=Xt)\n\n
21160 23 20 70 72 65 64 69 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 6d 61 67 65 73 20 28 75 73 69 #.prediction.between.images.(usi
21180 6e 67 20 6f 75 74 20 6f 66 20 73 61 6d 70 6c 65 20 70 72 65 64 69 63 74 69 6f 6e 20 61 73 20 69 ng.out.of.sample.prediction.as.i
211a0 6e 20 5b 36 5d 29 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 74 n.[6])\ntransp_Xs_emd.=.ot_emd.t
211c0 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 74 72 61 6e 73 70 5f 58 74 5f 65 6d 64 20 3d ransform(Xs=X1)\ntransp_Xt_emd.=
211e0 20 6f 74 5f 65 6d 64 2e 69 6e 76 65 72 73 65 5f 74 72 61 6e 73 66 6f 72 6d 28 58 74 3d 58 32 29 .ot_emd.inverse_transform(Xt=X2)
21200 5c 6e 5c 6e 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 6e 6b \n\ntransp_Xs_sinkhorn.=.ot_sink
21220 68 6f 72 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 5c 6e 74 72 61 6e 73 70 5f 58 74 horn.transform(Xs=X1)\ntransp_Xt
21240 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 69 6e 76 65 72 73 65 5f _sinkhorn.=.ot_sinkhorn.inverse_
21260 74 72 61 6e 73 66 6f 72 6d 28 58 74 3d 58 32 29 5c 6e 5c 6e 49 31 74 20 3d 20 6d 69 6e 6d 61 78 transform(Xt=X2)\n\nI1t.=.minmax
21280 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 2c 20 49 31 2e 73 68 61 70 65 29 (mat2im(transp_Xs_emd,.I1.shape)
212a0 29 5c 6e 49 32 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 74 )\nI2t.=.minmax(mat2im(transp_Xt
212c0 5f 65 6d 64 2c 20 49 32 2e 73 68 61 70 65 29 29 5c 6e 5c 6e 49 31 74 65 20 3d 20 6d 69 6e 6d 61 _emd,.I2.shape))\n\nI1te.=.minma
212e0 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 31 2e x(mat2im(transp_Xs_sinkhorn,.I1.
21300 73 68 61 70 65 29 29 5c 6e 49 32 74 65 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 shape))\nI2te.=.minmax(mat2im(tr
21320 61 6e 73 70 5f 58 74 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 32 2e 73 68 61 70 65 29 29 22 0a 20 20 ansp_Xt_sinkhorn,.I2.shape))"...
21340 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
21360 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
21380 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":.[.......
213a0 20 20 22 50 6c 6f 74 20 6e 65 77 20 69 6d 61 67 65 73 5c 6e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .."Plot.new.images\n------------
213c0 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".......].....},.....{...
213e0 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",......."
21400 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
21420 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":
21440 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":
21460 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":.[........."
21480 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 6e pl.figure(3,.figsize=(8,.4))\n\n
214a0 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 49 pl.subplot(2,.3,.1)\npl.imshow(I
214c0 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 6d 1)\npl.axis('off')\npl.title('Im
214e0 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 6e age.1')\n\npl.subplot(2,.3,.2)\n
21500 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 6e pl.imshow(I1t)\npl.axis('off')\n
21520 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 2e pl.title('Image.1.Adapt')\n\npl.
21540 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 65 subplot(2,.3,.3)\npl.imshow(I1te
21560 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 61 )\npl.axis('off')\npl.title('Ima
21580 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 74 ge.1.Adapt.(reg)')\n\npl.subplot
215a0 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 69 (2,.3,.4)\npl.imshow(I2)\npl.axi
215c0 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 5c s('off')\npl.title('Image.2')\n\
215e0 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 28 npl.subplot(2,.3,.5)\npl.imshow(
21600 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 27 I2t)\npl.axis('off')\npl.title('
21620 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 2c Image.2.Adapt')\n\npl.subplot(2,
21640 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 73 .3,.6)\npl.imshow(I2te)\npl.axis
21660 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 74 ('off')\npl.title('Image.2.Adapt
21680 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 70 .(reg)')\npl.tight_layout()\n\np
216a0 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()".......].....}...],..."
216c0 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":.{
216e0 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
21700 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",..
21720 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".....},...
21740 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
21760 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":.
21780 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.
217a0 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":
217c0 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/
217e0 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
21800 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":."
21820 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":
21840 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
21860 2e 36 2e 37 22 0a 20 20 20 20 7d 0a 20 20 7d 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 22 3a 20 34 .6.7".....}...},..."nbformat":.4
21880 2c 0a 20 20 22 6e 62 66 6f 72 6d 61 74 5f 6d 69 6e 6f 72 22 3a 20 30 0a 7d 50 4b 01 02 14 03 14 ,..."nbformat_minor":.0.}PK.....
218a0 00 00 00 00 00 2d 60 cb 4c 88 ac 62 ba 81 11 00 00 81 11 00 00 11 00 00 00 00 00 00 00 00 00 00 .....-`.L..b....................
218c0 00 b4 81 00 00 00 00 70 6c 6f 74 5f 67 72 6f 6d 6f 76 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 .......plot_gromov.ipynbPK......
218e0 00 00 00 00 a7 6e a2 4c ae 38 61 57 26 14 00 00 26 14 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 .....n.L.8aW&...&...............
21900 b4 81 b0 11 00 00 70 6c 6f 74 5f 57 44 41 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 ......plot_WDA.ipynbPK..........
21920 18 7f a2 4c aa d3 d6 af 27 23 00 00 27 23 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 b4 81 02 26 ...L....'#..'#.................&
21940 00 00 70 6c 6f 74 5f 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 2e 69 70 79 6e 62 50 4b ..plot_gromov_barycenter.ipynbPK
21960 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 17 03 7f 9a 5e 13 00 00 5e 13 00 00 16 00 00 00 00 00 ..........-`.L....^...^.........
21980 00 00 00 00 00 00 b4 81 63 49 00 00 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e 69 70 79 ........cI..plot_optim_OTreg.ipy
219a0 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c d1 72 b5 4d f4 1c 00 00 f4 1c 00 00 12 00 nbPK..........-`.L.r.M..........
219c0 00 00 00 00 00 00 00 00 00 00 b4 81 f5 5c 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 64 32 2e 69 70 79 .............\..plot_otda_d2.ipy
219e0 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c a9 b8 76 f6 f8 19 00 00 f8 19 00 00 1f 00 nbPK..........-`.L..v...........
21a00 00 00 00 00 00 00 00 00 00 00 b4 81 19 7a 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 73 65 6d 69 5f 73 .............z..plot_otda_semi_s
21a20 75 70 65 72 76 69 73 65 64 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 27 upervised.ipynbPK..........-`.L'
21a40 4a df 9c 9d 0d 00 00 9d 0d 00 00 10 00 00 00 00 00 00 00 00 00 00 00 b4 81 4e 94 00 00 70 6c 6f J........................N...plo
21a60 74 5f 4f 54 5f 31 44 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 77 6d 7d 4e 6b b3 7a t_OT_1D.ipynbPK..........wm}Nk.z
21a80 d2 55 26 00 00 55 26 00 00 15 00 00 00 00 00 00 00 00 00 00 00 b4 81 19 a2 00 00 70 6c 6f 74 5f .U&..U&....................plot_
21aa0 73 74 6f 63 68 61 73 74 69 63 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 ec 45 43 4d stochastic.ipynbPK...........ECM
21ac0 80 1a 80 7c 9f 15 00 00 9f 15 00 00 18 00 00 00 00 00 00 00 00 00 00 00 b4 81 a1 c8 00 00 70 6c ...|..........................pl
21ae0 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 31 44 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 ot_barycenter_1D.ipynbPK........
21b00 00 00 2d 60 cb 4c cc bf 84 66 2d 18 00 00 2d 18 00 00 17 00 00 00 00 00 00 00 00 00 00 00 b4 81 ..-`.L...f-...-.................
21b20 76 de 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 63 6c 61 73 73 65 73 2e 69 70 79 6e 62 50 4b 01 02 14 v...plot_otda_classes.ipynbPK...
21b40 03 14 00 00 00 00 00 ec 45 43 4d df ba b4 fb aa 10 00 00 aa 10 00 00 17 00 00 00 00 00 00 00 00 ........ECM.....................
21b60 00 00 00 b4 81 d8 f6 00 00 70 6c 6f 74 5f 4f 54 5f 31 44 5f 73 6d 6f 6f 74 68 2e 69 70 79 6e 62 .........plot_OT_1D_smooth.ipynb
21b80 50 4b 01 02 14 03 14 00 00 00 00 00 77 6d 7d 4e 80 8e 14 e4 3b 18 00 00 3b 18 00 00 25 00 00 00 PK..........wm}N....;...;...%...
21ba0 00 00 00 00 00 00 00 00 b4 81 b7 07 01 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 5f ..............plot_otda_mapping_
21bc0 63 6f 6c 6f 72 73 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 ec colors_images.ipynbPK...........
21be0 45 43 4d c7 ed 71 d0 e2 0d 00 00 e2 0d 00 00 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 35 20 01 ECM..q.........".............5..
21c00 00 70 6c 6f 74 5f 66 72 65 65 5f 73 75 70 70 6f 72 74 5f 62 61 72 79 63 65 6e 74 65 72 2e 69 70 .plot_free_support_barycenter.ip
21c20 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 05 72 d9 4e 76 0a 6d b5 0e 1a 00 00 0e 1a 00 00 0e ynbPK...........r.Nv.m..........
21c40 00 00 00 00 00 00 00 00 00 00 00 b4 81 57 2e 01 00 70 6c 6f 74 5f 66 67 77 2e 69 70 79 6e 62 50 .............W...plot_fgw.ipynbP
21c60 4b 01 02 14 03 14 00 00 00 00 00 35 72 d9 4e 2a a3 88 70 7d 20 00 00 7d 20 00 00 19 00 00 00 00 K..........5r.N*..p}...}........
21c80 00 00 00 00 00 00 00 b4 81 91 48 01 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 66 67 77 ..........H..plot_barycenter_fgw
21ca0 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 3e 1d 30 6f d5 1a 00 00 d5 1a .ipynbPK..........-`.L>.0o......
21cc0 00 00 16 00 00 00 00 00 00 00 00 00 00 00 b4 81 45 69 01 00 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 ................Ei..plot_OT_L1_v
21ce0 73 5f 4c 32 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c f9 b0 b7 c4 b9 1d s_L2.ipynbPK..........-`.L......
21d00 00 00 b9 1d 00 00 24 00 00 00 00 00 00 00 00 00 00 00 b4 81 4e 84 01 00 70 6c 6f 74 5f 62 61 72 ......$.............N...plot_bar
21d20 79 63 65 6e 74 65 72 5f 6c 70 5f 76 73 5f 65 6e 74 72 6f 70 69 63 2e 69 70 79 6e 62 50 4b 01 02 ycenter_lp_vs_entropic.ipynbPK..
21d40 14 03 14 00 00 00 00 00 04 72 d9 4e 43 f7 2c fd 72 13 00 00 72 13 00 00 18 00 00 00 00 00 00 00 .........r.NC.,.r...r...........
21d60 00 00 00 00 b4 81 49 a2 01 00 70 6c 6f 74 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 69 70 79 ......I...plot_OT_2D_samples.ipy
21d80 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c b5 c3 fd 1f 0a 15 00 00 0a 15 00 00 1e 00 nbPK..........-`.L..............
21da0 00 00 00 00 00 00 00 00 00 00 b4 81 f1 b5 01 00 70 6c 6f 74 5f 6f 74 64 61 5f 6c 69 6e 65 61 72 ................plot_otda_linear
21dc0 5f 6d 61 70 70 69 6e 67 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d 60 cb 4c 49 c5 _mapping.ipynbPK..........-`.LI.
21de0 7b 83 fa 16 00 00 fa 16 00 00 17 00 00 00 00 00 00 00 00 00 00 00 b4 81 37 cb 01 00 70 6c 6f 74 {.......................7...plot
21e00 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 2d _otda_mapping.ipynbPK..........-
21e20 60 cb 4c e5 eb aa 89 7c 10 00 00 7c 10 00 00 16 00 00 00 00 00 00 00 00 00 00 00 b4 81 66 e2 01 `.L....|...|.................f..
21e40 00 70 6c 6f 74 5f 63 6f 6d 70 75 74 65 5f 65 6d 64 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 .plot_compute_emd.ipynbPK.......
21e60 00 00 00 ec 45 43 4d 58 b0 17 7b e5 0e 00 00 e5 0e 00 00 23 00 00 00 00 00 00 00 00 00 00 00 b4 ....ECMX..{........#............
21e80 81 16 f3 01 00 70 6c 6f 74 5f 63 6f 6e 76 6f 6c 75 74 69 6f 6e 61 6c 5f 62 61 72 79 63 65 6e 74 .....plot_convolutional_barycent
21ea0 65 72 2e 69 70 79 6e 62 50 4b 01 02 14 03 14 00 00 00 00 00 77 6d 7d 4e a0 07 79 4d 23 16 00 00 er.ipynbPK..........wm}N..yM#...
21ec0 23 16 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 b4 81 3c 02 02 00 70 6c 6f 74 5f 6f 74 64 61 5f #.................<...plot_otda_
21ee0 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 69 70 79 6e 62 50 4b 05 06 00 00 00 00 17 00 17 00 59 06 color_images.ipynbPK..........Y.
21f00 00 00 99 18 02 00 00 00 ........