summaryrefslogtreecommitdiff
path: root/docs/source/auto_examples/auto_examples_python.zip
blob: 9799061e72b732c64276bf9886fc9e155271a2d9 (plain)
ofshex dumpascii
0000 50 4b 03 04 14 00 00 00 00 00 15 6e c9 4a 38 e5 ac a5 a0 04 00 00 a0 04 00 00 19 00 00 00 61 75 PK.........n.J8...............au
0020 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 57 44 41 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 to_examples/plot_WDA.py#.-*-.cod
0040 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ing:.utf-8.-*-.""".=============
0060 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 57 41 73 73 65 72 73 74 65 69 6e ====================.WAsserstein
0080 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 41 6e 61 6c 79 73 69 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d .Discriminant.Analysis.=========
00a0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 40 61 75 74 68 6f ========================..@autho
00c0 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 r:.rflamary."""..import.numpy.as
00e0 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 .np.import.matplotlib.pylab.as.p
0100 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 20 69 6d 70 l.import.ot.from.ot.datasets.imp
0120 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 0a 66 72 6f 6d 20 6f ort.get_1D_gauss.as.gauss.from.o
0140 74 2e 64 72 20 69 6d 70 6f 72 74 20 77 64 61 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 t.dr.import.wda...#%%.parameters
0160 0a 0a 6e 3d 31 30 30 30 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 20 69 6e 20 73 6f 75 72 63 65 20 ..n=1000.#.nb.samples.in.source.
0180 61 6e 64 20 74 61 72 67 65 74 20 64 61 74 61 73 65 74 73 0a 6e 7a 3d 30 2e 32 0a 78 73 2c 79 73 and.target.datasets.nz=0.2.xs,ys
01a0 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 =ot.datasets.get_data_classif('3
01c0 67 61 75 73 73 27 2c 6e 2c 6e 7a 29 0a 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 gauss',n,nz).xt,yt=ot.datasets.g
01e0 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 6e 2c 6e 7a 29 0a 0a et_data_classif('3gauss',n,nz)..
0200 6e 62 6e 6f 69 73 65 3d 38 0a 0a 78 73 3d 6e 70 2e 68 73 74 61 63 6b 28 28 78 73 2c 6e 70 2e 72 nbnoise=8..xs=np.hstack((xs,np.r
0220 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 6e 62 6e 6f 69 73 65 29 29 29 0a 78 74 3d 6e 70 2e 68 andom.randn(n,nbnoise))).xt=np.h
0240 73 74 61 63 6b 28 28 78 74 2c 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 6e 62 6e 6f stack((xt,np.random.randn(n,nbno
0260 69 73 65 29 29 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e 66 69 67 ise)))..#%%.plot.samples..pl.fig
0280 75 72 65 28 31 29 0a 0a 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a ure(1)...pl.scatter(xt[:,0],xt[:
02a0 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 ,1],c=ys,marker='+',label='Sourc
02c0 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e e.samples').pl.legend(loc=0).pl.
02e0 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 73 69 6f 6e 73 27 29 title('Discriminant.dimensions')
0300 0a 0a 0a 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 ...#%%.plot.distributions.and.lo
0320 73 73 20 6d 61 74 72 69 78 0a 70 3d 32 0a 72 65 67 3d 31 0a 6b 3d 31 30 0a 6d 61 78 69 74 65 72 ss.matrix.p=2.reg=1.k=10.maxiter
0340 3d 31 30 30 0a 0a 50 2c 70 72 6f 6a 20 3d 20 77 64 61 28 78 73 2c 79 73 2c 70 2c 72 65 67 2c 6b =100..P,proj.=.wda(xs,ys,p,reg,k
0360 2c 6d 61 78 69 74 65 72 3d 6d 61 78 69 74 65 72 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 ,maxiter=maxiter)..#%%.plot.samp
0380 6c 65 73 0a 0a 78 73 70 3d 70 72 6f 6a 28 78 73 29 0a 78 74 70 3d 70 72 6f 6a 28 78 74 29 0a 0a les..xsp=proj(xs).xtp=proj(xt)..
03a0 70 6c 2e 66 69 67 75 72 65 28 31 2c 28 31 30 2c 35 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 pl.figure(1,(10,5))..pl.subplot(
03c0 31 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 70 5b 3a 2c 30 5d 2c 78 73 70 5b 3a 1,2,1).pl.scatter(xsp[:,0],xsp[:
03e0 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 50 72 6f 6a 65 ,1],c=ys,marker='+',label='Proje
0400 63 74 65 64 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a cted.samples').pl.legend(loc=0).
0420 70 6c 2e 74 69 74 6c 65 28 27 50 72 6f 6a 65 63 74 65 64 20 74 72 61 69 6e 69 6e 67 20 73 61 6d pl.title('Projected.training.sam
0440 70 6c 65 73 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 32 29 0a 70 6c 2e 73 63 ples')...pl.subplot(1,2,2).pl.sc
0460 61 74 74 65 72 28 78 74 70 5b 3a 2c 30 5d 2c 78 74 70 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 atter(xtp[:,0],xtp[:,1],c=ys,mar
0480 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 50 72 6f 6a 65 63 74 65 64 20 73 61 6d 70 6c 65 73 ker='+',label='Projected.samples
04a0 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 50 72 ').pl.legend(loc=0).pl.title('Pr
04c0 6f 6a 65 63 74 65 64 20 74 65 73 74 20 73 61 6d 70 6c 65 73 27 29 0a 50 4b 03 04 14 00 00 00 00 ojected.test.samples').PK.......
04e0 00 15 6e c9 4a e7 a1 46 a7 95 0c 00 00 95 0c 00 00 22 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c ..n.J..F........."...auto_exampl
0500 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 es/plot_OTDA_mapping.py#.-*-.cod
0520 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ing:.utf-8.-*-.""".=============
0540 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 ================================
0560 3d 3d 0a 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 ==.OT.mapping.estimation.for.dom
0580 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 38 5d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ain.adaptation.[8].=============
05a0 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 ================================
05c0 3d 3d 0a 0a 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e ==..[8].M..Perrot,.N..Courty,.R.
05e0 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 20 22 4d 61 70 70 69 6e 67 20 65 .Flamary,.A..Habrard,."Mapping.e
0600 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 0a 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d stimation.for.....discrete.optim
0620 61 6c 20 74 72 61 6e 73 70 6f 72 74 22 2c 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 6f al.transport",.Neural.Informatio
0640 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 79 73 74 65 6d 73 20 28 4e 49 50 53 29 2c 20 32 30 31 n.Processing.Systems.(NIPS),.201
0660 36 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 6.."""..import.numpy.as.np.impor
0680 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 t.matplotlib.pylab.as.pl.import.
06a0 6f 74 0a 0a 0a 0a 23 25 25 20 64 61 74 61 73 65 74 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 6e 70 ot....#%%.dataset.generation..np
06c0 2e 72 61 6e 64 6f 6d 2e 73 65 65 64 28 30 29 20 23 20 6d 61 6b 65 73 20 65 78 61 6d 70 6c 65 20 .random.seed(0).#.makes.example.
06e0 72 65 70 72 6f 64 75 63 69 62 6c 65 0a 0a 6e 3d 31 30 30 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 reproducible..n=100.#.nb.samples
0700 20 69 6e 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 61 74 61 73 65 74 73 0a 74 .in.source.and.target.datasets.t
0720 68 65 74 61 3d 32 2a 6e 70 2e 70 69 2f 32 30 0a 6e 7a 3d 30 2e 31 0a 78 73 2c 79 73 3d 6f 74 2e heta=2*np.pi/20.nz=0.1.xs,ys=ot.
0740 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 67 61 75 73 73 datasets.get_data_classif('gauss
0760 72 6f 74 27 2c 6e 2c 6e 7a 3d 6e 7a 29 0a 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e rot',n,nz=nz).xt,yt=ot.datasets.
0780 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 67 61 75 73 73 72 6f 74 27 2c 6e 2c 74 68 get_data_classif('gaussrot',n,th
07a0 65 74 61 3d 74 68 65 74 61 2c 6e 7a 3d 6e 7a 29 0a 0a 23 20 6f 6e 65 20 6f 66 20 74 68 65 20 74 eta=theta,nz=nz)..#.one.of.the.t
07c0 61 72 67 65 74 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 arget.mode.changes.its.variance.
07e0 28 6e 6f 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 29 0a 78 74 5b 79 74 3d 3d 32 5d 2a 3d 33 (no.linear.mapping).xt[yt==2]*=3
0800 0a 78 74 3d 78 74 2b 34 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e .xt=xt+4...#%%.plot.samples..pl.
0820 66 69 67 75 72 65 28 31 2c 28 38 2c 35 29 29 0a 70 6c 2e 63 6c 66 28 29 0a 0a 70 6c 2e 73 63 61 figure(1,(8,5)).pl.clf()..pl.sca
0840 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 tter(xs[:,0],xs[:,1],c=ys,marker
0860 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e ='+',label='Source.samples').pl.
0880 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 scatter(xt[:,0],xt[:,1],c=yt,mar
08a0 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a ker='o',label='Target.samples').
08c0 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 .pl.legend(loc=0).pl.title('Sour
08e0 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 0a 0a 0a ce.and.target.distributions')...
0900 0a 23 25 25 20 4f 54 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f .#%%.OT.linear.mapping.estimatio
0920 6e 0a 0a 65 74 61 3d 31 65 2d 38 20 20 20 23 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 6c 61 n..eta=1e-8...#.quadratic.regula
0940 72 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 73 69 6f 6e 0a 6d 75 3d 31 65 30 20 20 rization.for.regression.mu=1e0..
0960 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 4f 54 20 6c 69 6e 65 61 72 20 74 65 72 ...#.weight.of.the.OT.linear.ter
0980 6d 0a 62 69 61 73 3d 54 72 75 65 20 20 23 20 65 73 74 69 6d 61 74 65 20 61 20 62 69 61 73 0a 0a m.bias=True..#.estimate.a.bias..
09a0 6f 74 5f 6d 61 70 70 69 6e 67 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f 6c 69 ot_mapping=ot.da.OTDA_mapping_li
09c0 6e 65 61 72 28 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 2e 66 69 74 28 78 73 2c 78 74 2c 6d 75 3d 6d near().ot_mapping.fit(xs,xt,mu=m
09e0 75 2c 65 74 61 3d 65 74 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d 61 78 20 3d u,eta=eta,bias=bias,numItermax.=
0a00 20 32 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 78 73 74 3d 6f 74 5f 6d 61 70 70 69 6e .20,verbose=True)..xst=ot_mappin
0a20 67 2e 70 72 65 64 69 63 74 28 78 73 29 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d 61 74 65 g.predict(xs).#.use.the.estimate
0a40 64 20 6d 61 70 70 69 6e 67 0a 78 73 74 30 3d 6f 74 5f 6d 61 70 70 69 6e 67 2e 69 6e 74 65 72 70 d.mapping.xst0=ot_mapping.interp
0a60 28 29 20 20 20 23 20 75 73 65 20 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 0a 0a ()...#.use.barycentric.mapping..
0a80 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 37 29 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c .pl.figure(2,(10,7)).pl.clf().pl
0aa0 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c .subplot(2,2,1).pl.scatter(xt[:,
0ac0 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 0],xt[:,1],c=yt,marker='o',label
0ae0 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 33 29 0a 70 6c 2e 73 ='Target.samples',alpha=.3).pl.s
0b00 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c catter(xst0[:,0],xst0[:,1],c=ys,
0b20 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 marker='+',label='barycentric.ma
0b40 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 pping').pl.title("barycentric.ma
0b60 70 70 69 6e 67 22 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 0a 70 6c 2e 73 63 pping")..pl.subplot(2,2,2).pl.sc
0b80 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 atter(xt[:,0],xt[:,1],c=yt,marke
0ba0 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 r='o',label='Target.samples',alp
0bc0 68 61 3d 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 5b 3a 2c 30 5d 2c 78 73 74 5b 3a ha=.3).pl.scatter(xst[:,0],xst[:
0be0 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 4c 65 61 72 6e ,1],c=ys,marker='+',label='Learn
0c00 65 64 20 6d 61 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 4c 65 61 72 6e 65 64 20 6d ed.mapping').pl.title("Learned.m
0c20 61 70 70 69 6e 67 22 29 0a 0a 0a 0a 23 25 25 20 4b 65 72 6e 65 6c 20 6d 61 70 70 69 6e 67 20 65 apping")....#%%.Kernel.mapping.e
0c40 73 74 69 6d 61 74 69 6f 6e 0a 0a 65 74 61 3d 31 65 2d 35 20 20 20 23 20 71 75 61 64 72 61 74 69 stimation..eta=1e-5...#.quadrati
0c60 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 73 69 6f 6e 0a c.regularization.for.regression.
0c80 6d 75 3d 31 65 2d 31 20 20 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 4f 54 20 6c mu=1e-1.....#.weight.of.the.OT.l
0ca0 69 6e 65 61 72 20 74 65 72 6d 0a 62 69 61 73 3d 54 72 75 65 20 20 23 20 65 73 74 69 6d 61 74 65 inear.term.bias=True..#.estimate
0cc0 20 61 20 62 69 61 73 0a 73 69 67 6d 61 3d 31 20 20 20 20 23 20 73 69 67 6d 61 20 62 61 6e 64 77 .a.bias.sigma=1....#.sigma.bandw
0ce0 69 64 74 68 20 66 6f 74 20 67 61 75 73 73 69 61 6e 20 6b 65 72 6e 65 6c 0a 0a 0a 6f 74 5f 6d 61 idth.fot.gaussian.kernel...ot_ma
0d00 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f pping_kernel=ot.da.OTDA_mapping_
0d20 6b 65 72 6e 65 6c 28 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 66 69 74 28 78 kernel().ot_mapping_kernel.fit(x
0d40 73 2c 78 74 2c 6d 75 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 73 69 67 6d 61 3d 73 69 67 6d 61 2c 62 s,xt,mu=mu,eta=eta,sigma=sigma,b
0d60 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 2c 76 65 72 62 6f 73 65 ias=bias,numItermax.=.10,verbose
0d80 3d 54 72 75 65 29 0a 0a 78 73 74 5f 6b 65 72 6e 65 6c 3d 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 =True)..xst_kernel=ot_mapping_ke
0da0 72 6e 65 6c 2e 70 72 65 64 69 63 74 28 78 73 29 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d rnel.predict(xs).#.use.the.estim
0dc0 61 74 65 64 20 6d 61 70 70 69 6e 67 0a 78 73 74 30 5f 6b 65 72 6e 65 6c 3d 6f 74 5f 6d 61 70 70 ated.mapping.xst0_kernel=ot_mapp
0de0 69 6e 67 5f 6b 65 72 6e 65 6c 2e 69 6e 74 65 72 70 28 29 20 20 20 23 20 75 73 65 20 62 61 72 79 ing_kernel.interp()...#.use.bary
0e00 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 0a 0a 0a 23 25 25 20 50 6c 6f 74 74 69 6e 67 20 74 centric.mapping...#%%.Plotting.t
0e20 68 65 20 6d 61 70 70 65 64 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 he.mapped.samples..pl.figure(2,(
0e40 31 30 2c 37 29 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 10,7)).pl.clf().pl.subplot(2,2,1
0e60 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 ).pl.scatter(xt[:,0],xt[:,1],c=y
0e80 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c t,marker='o',label='Target.sampl
0ea0 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c es',alpha=.2).pl.scatter(xst0[:,
0ec0 30 5d 2c 78 73 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 0],xst0[:,1],c=ys,marker='+',lab
0ee0 65 6c 3d 27 4d 61 70 70 65 64 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 74 el='Mapped.source.samples').pl.t
0f00 69 74 6c 65 28 22 42 61 72 79 2e 20 6d 61 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 22 29 0a 70 itle("Bary..mapping.(linear)").p
0f20 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c l.legend(loc=0)..pl.subplot(2,2,
0f40 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 2).pl.scatter(xt[:,0],xt[:,1],c=
0f60 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 yt,marker='o',label='Target.samp
0f80 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 5b 3a 2c les',alpha=.2).pl.scatter(xst[:,
0fa0 30 5d 2c 78 73 74 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 0],xst[:,1],c=ys,marker='+',labe
0fc0 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 45 l='Learned.mapping').pl.title("E
0fe0 73 74 69 6d 2e 20 6d 61 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 22 29 0a 0a 70 6c 2e 73 75 62 stim..mapping.(linear)")..pl.sub
1000 70 6c 6f 74 28 32 2c 32 2c 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 plot(2,2,3).pl.scatter(xt[:,0],x
1020 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 t[:,1],c=yt,marker='o',label='Ta
1040 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 rget.samples',alpha=.2).pl.scatt
1060 65 72 28 78 73 74 30 5f 6b 65 72 6e 65 6c 5b 3a 2c 30 5d 2c 78 73 74 30 5f 6b 65 72 6e 65 6c 5b er(xst0_kernel[:,0],xst0_kernel[
1080 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 62 61 72 79 :,1],c=ys,marker='+',label='bary
10a0 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 42 61 72 79 centric.mapping').pl.title("Bary
10c0 2e 20 6d 61 70 70 69 6e 67 20 28 6b 65 72 6e 65 6c 29 22 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 ..mapping.(kernel)")..pl.subplot
10e0 28 32 2c 32 2c 34 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c (2,2,4).pl.scatter(xt[:,0],xt[:,
1100 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 1],c=yt,marker='o',label='Target
1120 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 .samples',alpha=.2).pl.scatter(x
1140 73 74 5f 6b 65 72 6e 65 6c 5b 3a 2c 30 5d 2c 78 73 74 5f 6b 65 72 6e 65 6c 5b 3a 2c 31 5d 2c 63 st_kernel[:,0],xst_kernel[:,1],c
1160 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 =ys,marker='+',label='Learned.ma
1180 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 45 73 74 69 6d 2e 20 6d 61 70 70 69 6e 67 pping').pl.title("Estim..mapping
11a0 20 28 6b 65 72 6e 65 6c 29 22 29 0a 50 4b 03 04 14 00 00 00 00 00 15 6e c9 4a 5b b0 f5 4b 06 05 .(kernel)").PK.........n.J[..K..
11c0 00 00 06 05 00 00 21 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 70 74 ......!...auto_examples/plot_opt
11e0 69 6d 5f 4f 54 72 65 67 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d im_OTreg.py#.-*-.coding:.utf-8.-
1200 2a 2d 0a 22 22 22 0a 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 *-.""".=========================
1220 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 65 67 75 6c 61 72 69 7a 65 64 20 4f 54 20 77 69 74 68 20 67 65 =========.Regularized.OT.with.ge
1240 6e 65 72 69 63 20 73 6f 6c 76 65 72 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d neric.solver.===================
1260 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 ===============..."""..import.nu
1280 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 mpy.as.np.import.matplotlib.pyla
12a0 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 b.as.pl.import.ot....#%%.paramet
12c0 65 72 73 0a 0a 6e 3d 31 30 30 20 23 20 6e 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e 20 70 6f 73 69 ers..n=100.#.nb.bins..#.bin.posi
12e0 74 69 6f 6e 73 0a 78 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f tions.x=np.arange(n,dtype=np.flo
1300 61 74 36 34 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a at64)..#.Gaussian.distributions.
1320 61 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 6d 3d 32 a=ot.datasets.get_1D_gauss(n,m=2
1340 30 2c 73 3d 35 29 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 62 3d 6f 74 2e 64 61 0,s=5).#.m=.mean,.s=.std.b=ot.da
1360 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 6d 3d 36 30 2c 73 3d 31 30 29 tasets.get_1D_gauss(n,m=60,s=10)
1380 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 ..#.loss.matrix.M=ot.dist(x.resh
13a0 61 70 65 28 28 6e 2c 31 29 29 2c 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 31 29 29 29 0a 4d 2f 3d ape((n,1)),x.reshape((n,1))).M/=
13c0 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 20 45 4d 44 0a 0a 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c M.max()..#%%.EMD..G0=ot.emd(a,b,
13e0 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f M)..pl.figure(3).ot.plot.plot1D_
1400 6d 61 74 28 61 2c 62 2c 47 30 2c 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 0a 0a 23 25 25 20 mat(a,b,G0,'OT.matrix.G0')..#%%.
1420 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 72 65 67 75 Example.with.Frobenius.norm.regu
1440 6c 61 72 69 7a 61 74 69 6f 6e 0a 0a 64 65 66 20 66 28 47 29 3a 20 72 65 74 75 72 6e 20 30 2e 35 larization..def.f(G):.return.0.5
1460 2a 6e 70 2e 73 75 6d 28 47 2a 2a 32 29 0a 64 65 66 20 64 66 28 47 29 3a 20 72 65 74 75 72 6e 20 *np.sum(G**2).def.df(G):.return.
1480 47 0a 0a 72 65 67 3d 31 65 2d 31 0a 0a 47 6c 32 3d 6f 74 2e 6f 70 74 69 6d 2e 63 67 28 61 2c 62 G..reg=1e-1..Gl2=ot.optim.cg(a,b
14a0 2c 4d 2c 72 65 67 2c 66 2c 64 66 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 ,M,reg,f,df,verbose=True)..pl.fi
14c0 67 75 72 65 28 33 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 gure(3).ot.plot.plot1D_mat(a,b,G
14e0 6c 32 2c 27 4f 54 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 0a 0a 23 25 25 20 45 l2,'OT.matrix.Frob..reg')..#%%.E
1500 78 61 6d 70 6c 65 20 77 69 74 68 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 xample.with.entropic.regularizat
1520 69 6f 6e 0a 0a 64 65 66 20 66 28 47 29 3a 20 72 65 74 75 72 6e 20 6e 70 2e 73 75 6d 28 47 2a 6e ion..def.f(G):.return.np.sum(G*n
1540 70 2e 6c 6f 67 28 47 29 29 0a 64 65 66 20 64 66 28 47 29 3a 20 72 65 74 75 72 6e 20 6e 70 2e 6c p.log(G)).def.df(G):.return.np.l
1560 6f 67 28 47 29 2b 31 0a 0a 72 65 67 3d 31 65 2d 33 0a 0a 47 65 3d 6f 74 2e 6f 70 74 69 6d 2e 63 og(G)+1..reg=1e-3..Ge=ot.optim.c
1580 67 28 61 2c 62 2c 4d 2c 72 65 67 2c 66 2c 64 66 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a g(a,b,M,reg,f,df,verbose=True)..
15a0 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 pl.figure(4).ot.plot.plot1D_mat(
15c0 61 2c 62 2c 47 65 2c 27 4f 54 20 6d 61 74 72 69 78 20 45 6e 74 72 6f 70 2e 20 72 65 67 27 29 0a a,b,Ge,'OT.matrix.Entrop..reg').
15e0 0a 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d .#%%.Example.with.Frobenius.norm
1600 20 2b 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 77 69 74 68 20 .+.entropic.regularization.with.
1620 67 63 67 0a 0a 64 65 66 20 66 28 47 29 3a 20 72 65 74 75 72 6e 20 30 2e 35 2a 6e 70 2e 73 75 6d gcg..def.f(G):.return.0.5*np.sum
1640 28 47 2a 2a 32 29 0a 64 65 66 20 64 66 28 47 29 3a 20 72 65 74 75 72 6e 20 47 0a 0a 72 65 67 31 (G**2).def.df(G):.return.G..reg1
1660 3d 31 65 2d 33 0a 72 65 67 32 3d 31 65 2d 31 0a 0a 47 65 6c 32 3d 6f 74 2e 6f 70 74 69 6d 2e 67 =1e-3.reg2=1e-1..Gel2=ot.optim.g
1680 63 67 28 61 2c 62 2c 4d 2c 72 65 67 31 2c 72 65 67 32 2c 66 2c 64 66 2c 76 65 72 62 6f 73 65 3d cg(a,b,M,reg1,reg2,f,df,verbose=
16a0 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 True)..pl.figure(5).ot.plot.plot
16c0 31 44 5f 6d 61 74 28 61 2c 62 2c 47 65 6c 32 2c 27 4f 54 20 65 6e 74 72 6f 70 69 63 20 2b 20 6d 1D_mat(a,b,Gel2,'OT.entropic.+.m
16e0 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 50 4b 03 04 14 00 00 00 00 00 15 6e c9 4a f2 atrix.Frob..reg')PK.........n.J.
1700 c1 a7 29 f1 09 00 00 f1 09 00 00 22 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f ..)........"...auto_examples/plo
1720 74 5f 4f 54 44 41 5f 63 6c 61 73 73 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 t_OTDA_classes.py#.-*-.coding:.u
1740 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d tf-8.-*-.""".===================
1760 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 0a 3d =====.OT.for.domain.adaptation.=
1780 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 22 22 22 0a 0a 69 6d =======================.."""..im
17a0 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 0a 69 6d 70 6f port.matplotlib.pylab.as.pl.impo
17c0 72 74 20 6f 74 0a 0a 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e 3d 31 35 30 20 rt.ot.....#%%.parameters..n=150.
17e0 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 64 20 74 61 72 67 65 #.nb.samples.in.source.and.targe
1800 74 20 64 61 74 61 73 65 74 73 0a 0a 78 73 2c 79 73 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 t.datasets..xs,ys=ot.datasets.ge
1820 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 6e 29 0a 78 74 2c 79 74 t_data_classif('3gauss',n).xt,yt
1840 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 =ot.datasets.get_data_classif('3
1860 67 61 75 73 73 32 27 2c 6e 29 0a 0a 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a gauss2',n).....#%%.plot.samples.
1880 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 .pl.figure(1)..pl.subplot(2,2,1)
18a0 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 .pl.scatter(xs[:,0],xs[:,1],c=ys
18c0 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 ,marker='+',label='Source.sample
18e0 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 s').pl.legend(loc=0).pl.title('S
1900 6f 75 72 63 65 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c ource..distributions')..pl.subpl
1920 6f 74 28 32 2c 32 2c 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b ot(2,2,2).pl.scatter(xt[:,0],xt[
1940 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 :,1],c=yt,marker='o',label='Targ
1960 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c et.samples').pl.legend(loc=0).pl
1980 2e 74 69 74 6c 65 28 27 74 61 72 67 65 74 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a .title('target..distributions').
19a0 0a 0a 23 25 25 20 4f 54 20 65 73 74 69 6d 61 74 69 6f 6e 0a 0a 23 20 4c 50 20 70 72 6f 62 6c 65 ..#%%.OT.estimation..#.LP.proble
19c0 6d 0a 64 61 5f 65 6d 64 3d 6f 74 2e 64 61 2e 4f 54 44 41 28 29 20 20 20 20 20 23 20 69 6e 69 74 m.da_emd=ot.da.OTDA().....#.init
19e0 20 63 6c 61 73 73 0a 64 61 5f 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 29 20 20 20 20 20 20 20 23 .class.da_emd.fit(xs,xt).......#
1a00 20 66 69 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 78 73 74 30 3d 64 61 5f 65 6d 64 2e 69 .fit.distributions.xst0=da_emd.i
1a20 6e 74 65 72 70 28 29 20 20 20 20 23 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 6f 66 20 73 6f nterp()....#.interpolation.of.so
1a40 75 72 63 65 20 73 61 6d 70 6c 65 73 0a 0a 0a 23 20 73 69 6e 6b 68 6f 72 6e 20 72 65 67 75 6c 61 urce.samples...#.sinkhorn.regula
1a60 72 69 7a 61 74 69 6f 6e 0a 6c 61 6d 62 64 3d 31 65 2d 31 0a 64 61 5f 65 6e 74 72 6f 70 3d 6f 74 rization.lambd=1e-1.da_entrop=ot
1a80 2e 64 61 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 0a 64 61 5f 65 6e 74 72 6f 70 2e 66 69 .da.OTDA_sinkhorn().da_entrop.fi
1aa0 74 28 78 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 0a 78 73 74 73 3d 64 61 5f 65 6e 74 72 6f t(xs,xt,reg=lambd).xsts=da_entro
1ac0 70 2e 69 6e 74 65 72 70 28 29 0a 0a 23 20 6e 6f 6e 2d 63 6f 6e 76 65 78 20 47 72 6f 75 70 20 6c p.interp()..#.non-convex.Group.l
1ae0 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 72 65 67 3d 31 65 2d 31 0a 65 74 61 asso.regularization.reg=1e-1.eta
1b00 3d 31 65 30 0a 64 61 5f 6c 70 6c 31 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6c 70 6c 31 28 29 0a 64 =1e0.da_lpl1=ot.da.OTDA_lpl1().d
1b20 61 5f 6c 70 6c 31 2e 66 69 74 28 78 73 2c 79 73 2c 78 74 2c 72 65 67 3d 72 65 67 2c 65 74 61 3d a_lpl1.fit(xs,ys,xt,reg=reg,eta=
1b40 65 74 61 29 0a 78 73 74 67 3d 64 61 5f 6c 70 6c 31 2e 69 6e 74 65 72 70 28 29 0a 0a 0a 23 20 54 eta).xstg=da_lpl1.interp()...#.T
1b60 72 75 65 20 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 72 rue.Group.lasso.regularization.r
1b80 65 67 3d 31 65 2d 31 0a 65 74 61 3d 32 65 30 0a 64 61 5f 6c 31 6c 32 3d 6f 74 2e 64 61 2e 4f 54 eg=1e-1.eta=2e0.da_l1l2=ot.da.OT
1ba0 44 41 5f 6c 31 6c 32 28 29 0a 64 61 5f 6c 31 6c 32 2e 66 69 74 28 78 73 2c 79 73 2c 78 74 2c 72 DA_l1l2().da_l1l2.fit(xs,ys,xt,r
1bc0 65 67 3d 72 65 67 2c 65 74 61 3d 65 74 61 2c 6e 75 6d 49 74 65 72 6d 61 78 3d 32 30 2c 76 65 72 eg=reg,eta=eta,numItermax=20,ver
1be0 62 6f 73 65 3d 54 72 75 65 29 0a 78 73 74 67 6c 3d 64 61 5f 6c 31 6c 32 2e 69 6e 74 65 72 70 28 bose=True).xstgl=da_l1l2.interp(
1c00 29 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 73 6f 75 72 63 65 )...#%%.plot.interpolated.source
1c20 20 73 61 6d 70 6c 65 73 0a 70 6c 2e 66 69 67 75 72 65 28 34 2c 28 31 35 2c 38 29 29 0a 0a 70 61 .samples.pl.figure(4,(15,8))..pa
1c40 72 61 6d 5f 69 6d 67 3d 7b 27 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 27 3a 27 6e 65 61 72 65 73 ram_img={'interpolation':'neares
1c60 74 27 2c 27 63 6d 61 70 27 3a 27 6a 65 74 27 7d 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 t','cmap':'jet'}..pl.subplot(2,4
1c80 2c 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 65 6d 64 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 ,1).pl.imshow(da_emd.G,**param_i
1ca0 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 27 29 0a 0a 0a 70 6c 2e 73 mg).pl.title('OT.matrix')...pl.s
1cc0 75 62 70 6c 6f 74 28 32 2c 34 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 65 6e 74 72 6f ubplot(2,4,2).pl.imshow(da_entro
1ce0 70 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 p.G,**param_img).pl.title('OT.ma
1d00 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c trix.sinkhorn')..pl.subplot(2,4,
1d20 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 6c 70 6c 31 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 3).pl.imshow(da_lpl1.G,**param_i
1d40 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 6e 6f 6e 2d 63 6f 6e 76 mg).pl.title('OT.matrix.non-conv
1d60 65 78 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 ex.Group.Lasso')..pl.subplot(2,4
1d80 2c 34 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 6c 31 6c 32 2e 47 2c 2a 2a 70 61 72 61 6d 5f ,4).pl.imshow(da_l1l2.G,**param_
1da0 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 72 6f 75 70 20 4c img).pl.title('OT.matrix.Group.L
1dc0 61 73 73 6f 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 35 29 0a 70 6c 2e 73 63 asso')...pl.subplot(2,4,5).pl.sc
1de0 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 atter(xt[:,0],xt[:,1],c=yt,marke
1e00 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 r='o',label='Target.samples',alp
1e20 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 74 ha=0.3).pl.scatter(xst0[:,0],xst
1e40 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 0[:,1],c=ys,marker='+',label='Tr
1e60 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6e ansp.samples',s=30).pl.title('In
1e80 74 65 72 70 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a terp.samples').pl.legend(loc=0).
1ea0 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 36 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 .pl.subplot(2,4,6).pl.scatter(xt
1ec0 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 [:,0],xt[:,1],c=yt,marker='o',la
1ee0 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 0a bel='Target.samples',alpha=0.3).
1f00 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 73 5b 3a 2c 30 5d 2c 78 73 74 73 5b 3a 2c 31 5d 2c 63 pl.scatter(xsts[:,0],xsts[:,1],c
1f20 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d =ys,marker='+',label='Transp.sam
1f40 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d ples',s=30).pl.title('Interp.sam
1f60 70 6c 65 73 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c ples.Sinkhorn')..pl.subplot(2,4,
1f80 37 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 7).pl.scatter(xt[:,0],xt[:,1],c=
1fa0 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 yt,marker='o',label='Target.samp
1fc0 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 67 5b les',alpha=0.3).pl.scatter(xstg[
1fe0 3a 2c 30 5d 2c 78 73 74 67 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c :,0],xstg[:,1],c=ys,marker='+',l
2000 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 abel='Transp.samples',s=30).pl.t
2020 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 6e 6f 6e 2d 63 6f 6e 76 65 78 20 itle('Interp.samples.non-convex.
2040 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 38 29 Group.Lasso')..pl.subplot(2,4,8)
2060 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 .pl.scatter(xt[:,0],xt[:,1],c=yt
2080 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 ,marker='o',label='Target.sample
20a0 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 67 6c 5b 3a s',alpha=0.3).pl.scatter(xstgl[:
20c0 2c 30 5d 2c 78 73 74 67 6c 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c ,0],xstgl[:,1],c=ys,marker='+',l
20e0 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 abel='Transp.samples',s=30).pl.t
2100 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 47 72 6f 75 70 20 4c 61 73 73 6f itle('Interp.samples.Group.Lasso
2120 27 29 50 4b 03 04 14 00 00 00 00 00 15 6e c9 4a a6 c0 9c 1d 82 03 00 00 82 03 00 00 1b 00 00 00 ')PK.........n.J................
2140 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 31 44 2e 70 79 23 20 2d 2a 2d auto_examples/plot_OT_1D.py#.-*-
2160 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d .coding:.utf-8.-*-.""".=========
2180 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 ===========.1D.optimal.transport
21a0 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 40 61 75 74 68 6f 72 3a 20 .====================..@author:.
21c0 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 rflamary."""..import.numpy.as.np
21e0 0a 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 0a 69 .import.matplotlib.pylab.as.pl.i
2200 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 mport.ot.from.ot.datasets.import
2220 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 0a 0a 0a 23 25 25 20 70 61 72 .get_1D_gauss.as.gauss...#%%.par
2240 61 6d 65 74 65 72 73 0a 0a 6e 3d 31 30 30 20 23 20 6e 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e 20 ameters..n=100.#.nb.bins..#.bin.
2260 70 6f 73 69 74 69 6f 6e 73 0a 78 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 64 74 79 70 65 3d 6e 70 positions.x=np.arange(n,dtype=np
2280 2e 66 6c 6f 61 74 36 34 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 .float64)..#.Gaussian.distributi
22a0 6f 6e 73 0a 61 3d 67 61 75 73 73 28 6e 2c 6d 3d 32 30 2c 73 3d 35 29 20 23 20 6d 3d 20 6d 65 61 ons.a=gauss(n,m=20,s=5).#.m=.mea
22c0 6e 2c 20 73 3d 20 73 74 64 0a 62 3d 67 61 75 73 73 28 6e 2c 6d 3d 36 30 2c 73 3d 31 30 29 0a 0a n,.s=.std.b=gauss(n,m=60,s=10)..
22e0 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 #.loss.matrix.M=ot.dist(x.reshap
2300 65 28 28 6e 2c 31 29 29 2c 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 31 29 29 29 0a 4d 2f 3d 4d 2e e((n,1)),x.reshape((n,1))).M/=M.
2320 6d 61 78 28 29 0a 0a 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 max()..#%%.plot.the.distribution
2340 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 61 2c 27 62 27 2c s..pl.figure(1).pl.plot(x,a,'b',
2360 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 0a 70 6c 2e label='Source.distribution').pl.
2380 70 6c 6f 74 28 78 2c 62 2c 27 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 69 73 74 72 plot(x,b,'r',label='Target.distr
23a0 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 ibution').pl.legend()..#%%.plot.
23c0 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 0a 0a 70 distributions.and.loss.matrix..p
23e0 6c 2e 66 69 67 75 72 65 28 32 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 l.figure(2).ot.plot.plot1D_mat(a
2400 2c 62 2c 4d 2c 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 0a 0a 23 25 25 20 45 4d 44 0a 0a ,b,M,'Cost.matrix.M')..#%%.EMD..
2420 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 29 0a 6f G0=ot.emd(a,b,M)..pl.figure(3).o
2440 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 30 2c 27 4f 54 20 6d 61 74 t.plot.plot1D_mat(a,b,G0,'OT.mat
2460 72 69 78 20 47 30 27 29 0a 0a 23 25 25 20 53 69 6e 6b 68 6f 72 6e 0a 0a 6c 61 6d 62 64 3d 31 65 rix.G0')..#%%.Sinkhorn..lambd=1e
2480 2d 33 0a 47 73 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 29 0a 0a -3.Gs=ot.sinkhorn(a,b,M,lambd)..
24a0 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 pl.figure(4).ot.plot.plot1D_mat(
24c0 61 2c 62 2c 47 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 50 4b 03 a,b,Gs,'OT.matrix.Sinkhorn').PK.
24e0 04 14 00 00 00 00 00 15 6e c9 4a d8 dc 52 b3 62 0a 00 00 62 0a 00 00 23 00 00 00 61 75 74 6f 5f ........n.J..R.b...b...#...auto_
2500 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 31 44 2e 70 79 23 20 examples/plot_barycenter_1D.py#.
2520 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d -*-.coding:.utf-8.-*-.""".======
2540 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 57 61 73 73 ========================.1D.Wass
2560 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e 74 65 72 20 64 65 6d 6f 0a 3d 3d 3d 3d 3d 3d 3d 3d erstein.barycenter.demo.========
2580 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 0a 40 61 75 74 68 6f 72 ======================...@author
25a0 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 :.rflamary."""..import.numpy.as.
25c0 6e 70 0a 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 np.import.matplotlib.pylab.as.pl
25e0 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c .import.ot.from.mpl_toolkits.mpl
2600 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 65 73 33 44 20 23 6e 65 63 65 73 73 61 72 79 20 66 6f ot3d.import.Axes3D.#necessary.fo
2620 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 0a 66 72 6f 6d 20 r.3d.plot.even.if.not.used.from.
2640 6d 61 74 70 6c 6f 74 6c 69 62 2e 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 69 6d 70 6f 72 74 20 50 6f matplotlib.collections.import.Po
2660 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e lyCollection...#%%.parameters..n
2680 3d 31 30 30 20 23 20 6e 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 0a =100.#.nb.bins..#.bin.positions.
26a0 78 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a x=np.arange(n,dtype=np.float64).
26c0 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 61 31 3d 6f 74 2e .#.Gaussian.distributions.a1=ot.
26e0 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 6d 3d 32 30 2c 73 3d 35 datasets.get_1D_gauss(n,m=20,s=5
2700 29 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 61 32 3d 6f 74 2e 64 61 74 61 73 65 ).#.m=.mean,.s=.std.a2=ot.datase
2720 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 6d 3d 36 30 2c 73 3d 38 29 0a 0a 23 20 63 ts.get_1D_gauss(n,m=60,s=8)..#.c
2740 72 65 61 74 69 6e 67 20 6d 61 74 72 69 78 20 41 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 reating.matrix.A.containing.all.
2760 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 41 3d 6e 70 2e 76 73 74 61 63 6b 28 28 61 31 2c 61 32 distributions.A=np.vstack((a1,a2
2780 29 29 2e 54 0a 6e 62 64 3d 41 2e 73 68 61 70 65 5b 31 5d 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 )).T.nbd=A.shape[1]..#.loss.matr
27a0 69 78 20 2b 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 0a 4d 3d 6f 74 2e 75 74 69 6c 73 2e 64 69 ix.+.normalization.M=ot.utils.di
27c0 73 74 30 28 6e 29 0a 4d 2f 3d 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 74 68 65 20 st0(n).M/=M.max()..#%%.plot.the.
27e0 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 66 6f 72 20 distributions..pl.figure(1).for.
2800 69 20 69 6e 20 72 61 6e 67 65 28 6e 62 64 29 3a 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 41 i.in.range(nbd):.....pl.plot(x,A
2820 5b 3a 2c 69 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 [:,i]).pl.title('Distributions')
2840 0a 0a 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 0a 0a 61 6c ..#%%.barycenter.computation..al
2860 70 68 61 3d 30 2e 32 20 23 20 30 3c 3d 61 6c 70 68 61 3c 3d 31 0a 77 65 69 67 68 74 73 3d 6e 70 pha=0.2.#.0<=alpha<=1.weights=np
2880 2e 61 72 72 61 79 28 5b 31 2d 61 6c 70 68 61 2c 61 6c 70 68 61 5d 29 0a 0a 23 20 6c 32 62 61 72 .array([1-alpha,alpha])..#.l2bar
28a0 79 0a 62 61 72 79 5f 6c 32 3d 41 2e 64 6f 74 28 77 65 69 67 68 74 73 29 0a 0a 23 20 77 61 73 73 y.bary_l2=A.dot(weights)..#.wass
28c0 65 72 73 74 65 69 6e 0a 72 65 67 3d 31 65 2d 33 0a 62 61 72 79 5f 77 61 73 73 3d 6f 74 2e 62 72 erstein.reg=1e-3.bary_wass=ot.br
28e0 65 67 6d 61 6e 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 4d 2c 72 65 67 2c 77 65 69 67 68 74 73 egman.barycenter(A,M,reg,weights
2900 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c 2e 73 75 62 70 )..pl.figure(2).pl.clf().pl.subp
2920 6c 6f 74 28 32 2c 31 2c 31 29 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 62 64 29 3a 0a lot(2,1,1).for.i.in.range(nbd):.
2940 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 41 5b 3a 2c 69 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 ....pl.plot(x,A[:,i]).pl.title('
2960 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 31 2c Distributions')..pl.subplot(2,1,
2980 32 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 62 61 72 79 5f 6c 32 2c 27 72 27 2c 6c 61 62 65 6c 3d 27 2).pl.plot(x,bary_l2,'r',label='
29a0 6c 32 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 62 61 72 79 5f 77 61 73 73 2c 27 67 27 2c 6c 61 62 l2').pl.plot(x,bary_wass,'g',lab
29c0 65 6c 3d 27 57 61 73 73 65 72 73 74 65 69 6e 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 70 6c el='Wasserstein').pl.legend().pl
29e0 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 73 27 29 0a 0a 0a 23 25 25 20 62 61 72 79 .title('Barycenters')...#%%.bary
2a00 63 65 6e 74 65 72 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 0a 0a 6e 62 61 6c 70 68 61 3d 31 31 center.interpolation..nbalpha=11
2a20 0a 61 6c 70 68 61 6c 69 73 74 3d 6e 70 2e 6c 69 6e 73 70 61 63 65 28 30 2c 31 2c 6e 62 61 6c 70 .alphalist=np.linspace(0,1,nbalp
2a40 68 61 29 0a 0a 0a 42 5f 6c 32 3d 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 6e 62 61 6c 70 68 61 29 29 ha)...B_l2=np.zeros((n,nbalpha))
2a60 0a 0a 42 5f 77 61 73 73 3d 6e 70 2e 63 6f 70 79 28 42 5f 6c 32 29 0a 0a 66 6f 72 20 69 20 69 6e ..B_wass=np.copy(B_l2)..for.i.in
2a80 20 72 61 6e 67 65 28 30 2c 6e 62 61 6c 70 68 61 29 3a 0a 20 20 20 20 61 6c 70 68 61 3d 61 6c 70 .range(0,nbalpha):.....alpha=alp
2aa0 68 61 6c 69 73 74 5b 69 5d 0a 20 20 20 20 77 65 69 67 68 74 73 3d 6e 70 2e 61 72 72 61 79 28 5b halist[i].....weights=np.array([
2ac0 31 2d 61 6c 70 68 61 2c 61 6c 70 68 61 5d 29 0a 20 20 20 20 42 5f 6c 32 5b 3a 2c 69 5d 3d 41 2e 1-alpha,alpha]).....B_l2[:,i]=A.
2ae0 64 6f 74 28 77 65 69 67 68 74 73 29 0a 20 20 20 20 42 5f 77 61 73 73 5b 3a 2c 69 5d 3d 6f 74 2e dot(weights).....B_wass[:,i]=ot.
2b00 62 72 65 67 6d 61 6e 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 4d 2c 72 65 67 2c 77 65 69 67 68 bregman.barycenter(A,M,reg,weigh
2b20 74 73 29 0a 0a 23 25 25 20 70 6c 6f 74 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 0a 0a 70 6c 2e ts)..#%%.plot.interpolation..pl.
2b40 66 69 67 75 72 65 28 33 2c 28 31 30 2c 35 29 29 0a 0a 23 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c figure(3,(10,5))..#pl.subplot(1,
2b60 32 2c 31 29 0a 63 6d 61 70 3d 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 70 28 27 76 69 72 69 64 69 2,1).cmap=pl.cm.get_cmap('viridi
2b80 73 27 29 0a 76 65 72 74 73 20 3d 20 5b 5d 0a 7a 73 20 3d 20 61 6c 70 68 61 6c 69 73 74 0a 66 6f s').verts.=.[].zs.=.alphalist.fo
2ba0 72 20 69 2c 7a 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a 0a 20 20 20 20 79 73 20 3d r.i,z.in.enumerate(zs):.....ys.=
2bc0 20 42 5f 6c 32 5b 3a 2c 69 5d 0a 20 20 20 20 76 65 72 74 73 2e 61 70 70 65 6e 64 28 6c 69 73 74 .B_l2[:,i].....verts.append(list
2be0 28 7a 69 70 28 78 2c 20 79 73 29 29 29 0a 0a 61 78 20 3d 20 70 6c 2e 67 63 66 28 29 2e 67 63 61 (zip(x,.ys)))..ax.=.pl.gcf().gca
2c00 28 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 0a 0a 70 6f 6c 79 20 3d 20 50 6f 6c 79 43 6f (projection='3d')..poly.=.PolyCo
2c20 6c 6c 65 63 74 69 6f 6e 28 76 65 72 74 73 2c 66 61 63 65 63 6f 6c 6f 72 73 3d 5b 63 6d 61 70 28 llection(verts,facecolors=[cmap(
2c40 61 29 20 66 6f 72 20 61 20 69 6e 20 61 6c 70 68 61 6c 69 73 74 5d 29 0a 70 6f 6c 79 2e 73 65 74 a).for.a.in.alphalist]).poly.set
2c60 5f 61 6c 70 68 61 28 30 2e 37 29 0a 61 78 2e 61 64 64 5f 63 6f 6c 6c 65 63 74 69 6f 6e 33 64 28 _alpha(0.7).ax.add_collection3d(
2c80 70 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 0a 0a 61 78 2e 73 65 74 5f 78 poly,.zs=zs,.zdir='y')..ax.set_x
2ca0 6c 61 62 65 6c 28 27 78 27 29 0a 61 78 2e 73 65 74 5f 78 6c 69 6d 33 64 28 30 2c 20 6e 29 0a 61 label('x').ax.set_xlim3d(0,.n).a
2cc0 78 2e 73 65 74 5f 79 6c 61 62 65 6c 28 27 24 5c 5c 61 6c 70 68 61 24 27 29 0a 61 78 2e 73 65 74 x.set_ylabel('$\\alpha$').ax.set
2ce0 5f 79 6c 69 6d 33 64 28 30 2c 31 29 0a 61 78 2e 73 65 74 5f 7a 6c 61 62 65 6c 28 27 27 29 0a 61 _ylim3d(0,1).ax.set_zlabel('').a
2d00 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 2a 31 2e 30 31 29 x.set_zlim3d(0,.B_l2.max()*1.01)
2d20 0a 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 6c 61 74 .pl.title('Barycenter.interpolat
2d40 69 6f 6e 20 77 69 74 68 20 6c 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a 70 6c 2e 66 69 67 ion.with.l2')..pl.show()..pl.fig
2d60 75 72 65 28 34 2c 28 31 30 2c 35 29 29 0a 0a 23 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 ure(4,(10,5))..#pl.subplot(1,2,1
2d80 29 0a 63 6d 61 70 3d 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 70 28 27 76 69 72 69 64 69 73 27 29 ).cmap=pl.cm.get_cmap('viridis')
2da0 0a 76 65 72 74 73 20 3d 20 5b 5d 0a 7a 73 20 3d 20 61 6c 70 68 61 6c 69 73 74 0a 66 6f 72 20 69 .verts.=.[].zs.=.alphalist.for.i
2dc0 2c 7a 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a 0a 20 20 20 20 79 73 20 3d 20 42 5f ,z.in.enumerate(zs):.....ys.=.B_
2de0 77 61 73 73 5b 3a 2c 69 5d 0a 20 20 20 20 76 65 72 74 73 2e 61 70 70 65 6e 64 28 6c 69 73 74 28 wass[:,i].....verts.append(list(
2e00 7a 69 70 28 78 2c 20 79 73 29 29 29 0a 0a 61 78 20 3d 20 70 6c 2e 67 63 66 28 29 2e 67 63 61 28 zip(x,.ys)))..ax.=.pl.gcf().gca(
2e20 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 0a 0a 70 6f 6c 79 20 3d 20 50 6f 6c 79 43 6f 6c projection='3d')..poly.=.PolyCol
2e40 6c 65 63 74 69 6f 6e 28 76 65 72 74 73 2c 66 61 63 65 63 6f 6c 6f 72 73 3d 5b 63 6d 61 70 28 61 lection(verts,facecolors=[cmap(a
2e60 29 20 66 6f 72 20 61 20 69 6e 20 61 6c 70 68 61 6c 69 73 74 5d 29 0a 70 6f 6c 79 2e 73 65 74 5f ).for.a.in.alphalist]).poly.set_
2e80 61 6c 70 68 61 28 30 2e 37 29 0a 61 78 2e 61 64 64 5f 63 6f 6c 6c 65 63 74 69 6f 6e 33 64 28 70 alpha(0.7).ax.add_collection3d(p
2ea0 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 0a 0a 61 78 2e 73 65 74 5f 78 6c oly,.zs=zs,.zdir='y')..ax.set_xl
2ec0 61 62 65 6c 28 27 78 27 29 0a 61 78 2e 73 65 74 5f 78 6c 69 6d 33 64 28 30 2c 20 6e 29 0a 61 78 abel('x').ax.set_xlim3d(0,.n).ax
2ee0 2e 73 65 74 5f 79 6c 61 62 65 6c 28 27 24 5c 5c 61 6c 70 68 61 24 27 29 0a 61 78 2e 73 65 74 5f .set_ylabel('$\\alpha$').ax.set_
2f00 79 6c 69 6d 33 64 28 30 2c 31 29 0a 61 78 2e 73 65 74 5f 7a 6c 61 62 65 6c 28 27 27 29 0a 61 78 ylim3d(0,1).ax.set_zlabel('').ax
2f20 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 2a 31 2e 30 31 29 0a .set_zlim3d(0,.B_l2.max()*1.01).
2f40 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 6c 61 74 69 pl.title('Barycenter.interpolati
2f60 6f 6e 20 77 69 74 68 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 on.with.Wasserstein')..pl.show()
2f80 50 4b 03 04 14 00 00 00 00 00 6a 7b 82 49 25 c9 d6 13 1c 06 00 00 1c 06 00 00 28 00 00 00 61 75 PK........j{.I%...........(...au
2fa0 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 6c 61 to_examples/demo_OT_2D_samplesla
2fc0 72 67 65 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 rge.py#.-*-.coding:.utf-8.-*-.""
2fe0 22 0a 44 65 6d 6f 20 66 6f 72 20 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 ".Demo.for.2D.Optimal.transport.
3000 62 65 74 77 65 65 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a between.empirical.distributions.
3020 0a 40 61 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e .@author:.rflamary."""..import.n
3040 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c umpy.as.np.import.matplotlib.pyl
3060 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 ab.as.pl.import.ot..#%%.paramete
3080 72 73 20 61 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 6e 3d 35 30 30 30 20 23 rs.and.data.generation..n=5000.#
30a0 20 6e 62 20 73 61 6d 70 6c 65 73 0a 0a 6d 75 5f 73 3d 6e 70 2e 61 72 72 61 79 28 5b 30 2c 30 5d .nb.samples..mu_s=np.array([0,0]
30c0 29 0a 63 6f 76 5f 73 3d 6e 70 2e 61 72 72 61 79 28 5b 5b 31 2c 30 5d 2c 5b 30 2c 31 5d 5d 29 0a ).cov_s=np.array([[1,0],[0,1]]).
30e0 0a 6d 75 5f 74 3d 6e 70 2e 61 72 72 61 79 28 5b 34 2c 34 5d 29 0a 63 6f 76 5f 74 3d 6e 70 2e 61 .mu_t=np.array([4,4]).cov_t=np.a
3100 72 72 61 79 28 5b 5b 31 2c 2d 2e 38 5d 2c 5b 2d 2e 38 2c 31 5d 5d 29 0a 0a 78 73 3d 6f 74 2e 64 rray([[1,-.8],[-.8,1]])..xs=ot.d
3120 61 74 61 73 65 74 73 2e 67 65 74 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 6d atasets.get_2D_samples_gauss(n,m
3140 75 5f 73 2c 63 6f 76 5f 73 29 0a 78 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 32 44 u_s,cov_s).xt=ot.datasets.get_2D
3160 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 6d 75 5f 74 2c 63 6f 76 5f 74 29 0a 0a 61 2c _samples_gauss(n,mu_t,cov_t)..a,
3180 62 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 29 2c 6f 74 2e 75 6e 69 66 28 6e 29 20 23 20 75 6e 69 66 b.=.ot.unif(n),ot.unif(n).#.unif
31a0 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 0a 0a 23 20 6c orm.distribution.on.samples..#.l
31c0 6f 73 73 20 6d 61 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 73 2c 78 74 29 0a 4d 2f 3d 4d oss.matrix.M=ot.dist(xs,xt).M/=M
31e0 2e 6d 61 78 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 23 70 6c 2e 66 69 .max()..#%%.plot.samples..#pl.fi
3200 67 75 72 65 28 31 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d gure(1).#pl.plot(xs[:,0],xs[:,1]
3220 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 23 70 ,'+b',label='Source.samples').#p
3240 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 62 65 l.plot(xt[:,0],xt[:,1],'xr',labe
3260 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 6c 65 67 65 6e 64 28 6c l='Target.samples').#pl.legend(l
3280 6f 63 3d 30 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 72 61 67 oc=0).#pl.title('Source.and.trag
32a0 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 23 0a 23 70 6c 2e 66 69 67 75 72 65 28 et.distributions').#.#pl.figure(
32c0 32 29 0a 23 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 2).#pl.imshow(M,interpolation='n
32e0 65 61 72 65 73 74 27 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 20 earest').#pl.title('Cost.matrix.
3300 4d 27 29 0a 23 0a 0a 23 25 25 20 45 4d 44 0a 0a 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 29 M').#..#%%.EMD..G0=ot.emd(a,b,M)
3320 0a 0a 23 70 6c 2e 66 69 67 75 72 65 28 33 29 0a 23 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c 69 6e ..#pl.figure(3).#pl.imshow(G0,in
3340 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 23 70 6c 2e 74 69 74 6c 65 terpolation='nearest').#pl.title
3360 28 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 0a 23 0a 23 70 6c 2e 66 69 67 75 72 65 28 34 29 ('OT.matrix.G0').#.#pl.figure(4)
3380 0a 23 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 .#ot.plot.plot2D_samples_mat(xs,
33a0 78 74 2c 47 30 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a xt,G0,c=[.5,.5,1]).#pl.plot(xs[:
33c0 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 ,0],xs[:,1],'+b',label='Source.s
33e0 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 amples').#pl.plot(xt[:,0],xt[:,1
3400 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 23 ],'xr',label='Target.samples').#
3420 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d pl.legend(loc=0).#pl.title('OT.m
3440 61 74 72 69 78 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a 0a 0a 23 25 25 20 73 69 6e 6b 68 atrix.with.samples')...#%%.sinkh
3460 6f 72 6e 0a 0a 23 20 72 65 67 20 74 65 72 6d 0a 6c 61 6d 62 64 3d 35 65 2d 33 0a 0a 47 73 3d 6f orn..#.reg.term.lambd=5e-3..Gs=o
3480 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 29 0a 0a 23 70 6c 2e 66 69 67 t.sinkhorn(a,b,M,lambd)..#pl.fig
34a0 75 72 65 28 35 29 0a 23 70 6c 2e 69 6d 73 68 6f 77 28 47 73 2c 69 6e 74 65 72 70 6f 6c 61 74 69 ure(5).#pl.imshow(Gs,interpolati
34c0 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 on='nearest').#pl.title('OT.matr
34e0 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 0a 23 0a 23 70 6c 2e 66 69 67 75 72 65 28 36 29 0a 23 6f ix.sinkhorn').#.#pl.figure(6).#o
3500 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c t.plot.plot2D_samples_mat(xs,xt,
3520 47 73 2c 63 6f 6c 6f 72 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 73 5b Gs,color=[.5,.5,1]).#pl.plot(xs[
3540 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 :,0],xs[:,1],'+b',label='Source.
3560 73 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c samples').#pl.plot(xt[:,0],xt[:,
3580 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 1],'xr',label='Target.samples').
35a0 23 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 #pl.legend(loc=0).#pl.title('OT.
35c0 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a 23 matrix.Sinkhorn.with.samples').#
35e0 0a 0a 50 4b 03 04 14 00 00 00 00 00 15 6e c9 4a 82 5c c9 67 59 06 00 00 59 06 00 00 23 00 00 00 ..PK.........n.J.\.gY...Y...#...
3600 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 auto_examples/plot_OT_2D_samples
3620 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d .py#.-*-.coding:.utf-8.-*-.""".=
3640 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 ================================
3660 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 32 44 20 4f 70 74 69 6d 61 6c 20 74 ===================.2D.Optimal.t
3680 72 61 6e 73 70 6f 72 74 20 62 65 74 77 65 65 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 ransport.between.empirical.distr
36a0 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ibutions.=======================
36c0 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 0a 0a 40 =============================..@
36e0 61 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d author:.rflamary."""..import.num
3700 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 py.as.np.import.matplotlib.pylab
3720 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 .as.pl.import.ot..#%%.parameters
3740 20 61 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 6e 3d 32 20 23 20 6e 62 20 73 .and.data.generation..n=2.#.nb.s
3760 61 6d 70 6c 65 73 0a 0a 6d 75 5f 73 3d 6e 70 2e 61 72 72 61 79 28 5b 30 2c 30 5d 29 0a 63 6f 76 amples..mu_s=np.array([0,0]).cov
3780 5f 73 3d 6e 70 2e 61 72 72 61 79 28 5b 5b 31 2c 30 5d 2c 5b 30 2c 31 5d 5d 29 0a 0a 6d 75 5f 74 _s=np.array([[1,0],[0,1]])..mu_t
37a0 3d 6e 70 2e 61 72 72 61 79 28 5b 34 2c 34 5d 29 0a 63 6f 76 5f 74 3d 6e 70 2e 61 72 72 61 79 28 =np.array([4,4]).cov_t=np.array(
37c0 5b 5b 31 2c 2d 2e 38 5d 2c 5b 2d 2e 38 2c 31 5d 5d 29 0a 0a 78 73 3d 6f 74 2e 64 61 74 61 73 65 [[1,-.8],[-.8,1]])..xs=ot.datase
37e0 74 73 2e 67 65 74 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 6d 75 5f 73 2c 63 ts.get_2D_samples_gauss(n,mu_s,c
3800 6f 76 5f 73 29 0a 78 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 32 44 5f 73 61 6d 70 ov_s).xt=ot.datasets.get_2D_samp
3820 6c 65 73 5f 67 61 75 73 73 28 6e 2c 6d 75 5f 74 2c 63 6f 76 5f 74 29 0a 0a 61 2c 62 20 3d 20 6f les_gauss(n,mu_t,cov_t)..a,b.=.o
3840 74 2e 75 6e 69 66 28 6e 29 2c 6f 74 2e 75 6e 69 66 28 6e 29 20 23 20 75 6e 69 66 6f 72 6d 20 64 t.unif(n),ot.unif(n).#.uniform.d
3860 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 0a 0a 23 20 6c 6f 73 73 20 6d istribution.on.samples..#.loss.m
3880 61 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 73 2c 78 74 29 0a 4d 2f 3d 4d 2e 6d 61 78 28 atrix.M=ot.dist(xs,xt).M/=M.max(
38a0 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 )..#%%.plot.samples..pl.figure(1
38c0 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c ).pl.plot(xs[:,0],xs[:,1],'+b',l
38e0 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 abel='Source.samples').pl.plot(x
3900 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 t[:,0],xt[:,1],'xr',label='Targe
3920 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e t.samples').pl.legend(loc=0).pl.
3940 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 72 61 67 65 74 20 64 69 73 74 72 69 62 title('Source.and.traget.distrib
3960 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 utions')..pl.figure(2).pl.imshow
3980 28 4d 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 (M,interpolation='nearest').pl.t
39a0 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 0a 0a 0a 23 25 25 20 45 4d 44 0a itle('Cost.matrix.M')...#%%.EMD.
39c0 0a 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 29 0a .G0=ot.emd(a,b,M)..pl.figure(3).
39e0 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 pl.imshow(G0,interpolation='near
3a00 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 0a 0a est').pl.title('OT.matrix.G0')..
3a20 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 pl.figure(4).ot.plot.plot2D_samp
3a40 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 30 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 70 6c les_mat(xs,xt,G0,c=[.5,.5,1]).pl
3a60 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c .plot(xs[:,0],xs[:,1],'+b',label
3a80 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c ='Source.samples').pl.plot(xt[:,
3aa0 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 0],xt[:,1],'xr',label='Target.sa
3ac0 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c mples').pl.legend(loc=0).pl.titl
3ae0 65 28 27 4f 54 20 6d 61 74 72 69 78 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a 0a 0a 23 25 e('OT.matrix.with.samples')...#%
3b00 25 20 73 69 6e 6b 68 6f 72 6e 0a 0a 23 20 72 65 67 20 74 65 72 6d 0a 6c 61 6d 62 64 3d 35 65 2d %.sinkhorn..#.reg.term.lambd=5e-
3b20 33 0a 0a 47 73 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 29 0a 0a 3..Gs=ot.sinkhorn(a,b,M,lambd)..
3b40 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 47 73 2c 69 6e 74 65 72 70 pl.figure(5).pl.imshow(Gs,interp
3b60 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 olation='nearest').pl.title('OT.
3b80 6d 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 36 29 0a matrix.sinkhorn')..pl.figure(6).
3ba0 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 ot.plot.plot2D_samples_mat(xs,xt
3bc0 2c 47 73 2c 63 6f 6c 6f 72 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b ,Gs,color=[.5,.5,1]).pl.plot(xs[
3be0 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 :,0],xs[:,1],'+b',label='Source.
3c00 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 samples').pl.plot(xt[:,0],xt[:,1
3c20 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 ],'xr',label='Target.samples').p
3c40 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 l.legend(loc=0).pl.title('OT.mat
3c60 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 0a 50 4b 03 04 rix.Sinkhorn.with.samples').PK..
3c80 14 00 00 00 00 00 15 6e c9 4a ec af 42 31 2e 0a 00 00 2e 0a 00 00 1d 00 00 00 61 75 74 6f 5f 65 .......n.J..B1............auto_e
3ca0 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 32 44 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 xamples/plot_OTDA_2D.py#.-*-.cod
3cc0 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ing:.utf-8.-*-.""".=============
3ce0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 65 6d 70 69 72 69 63 =================.OT.for.empiric
3d00 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d al.distributions.===============
3d20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d ===============.."""..import.num
3d40 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 py.as.np.import.matplotlib.pylab
3d60 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 .as.pl.import.ot....#%%.paramete
3d80 72 73 0a 0a 6e 3d 31 35 30 20 23 20 6e 62 20 62 69 6e 73 0a 0a 78 73 2c 79 73 3d 6f 74 2e 64 61 rs..n=150.#.nb.bins..xs,ys=ot.da
3da0 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 tasets.get_data_classif('3gauss'
3dc0 2c 6e 29 0a 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 ,n).xt,yt=ot.datasets.get_data_c
3de0 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 6e 29 0a 0a 61 2c 62 20 3d 20 6f 74 2e 75 6e lassif('3gauss2',n)..a,b.=.ot.un
3e00 69 66 28 6e 29 2c 6f 74 2e 75 6e 69 66 28 6e 29 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d if(n),ot.unif(n).#.loss.matrix.M
3e20 3d 6f 74 2e 64 69 73 74 28 78 73 2c 78 74 29 0a 23 4d 2f 3d 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 =ot.dist(xs,xt).#M/=M.max()..#%%
3e40 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 0a 70 6c 2e .plot.samples..pl.figure(1)..pl.
3e60 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 subplot(2,2,1).pl.scatter(xs[:,0
3e80 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d ],xs[:,1],c=ys,marker='+',label=
3ea0 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 'Source.samples').pl.legend(loc=
3ec0 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 64 69 73 74 72 69 62 75 74 69 6f 0).pl.title('Source..distributio
3ee0 6e 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 0a 70 6c 2e 73 63 61 74 74 ns')..pl.subplot(2,2,2).pl.scatt
3f00 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 er(xt[:,0],xt[:,1],c=yt,marker='
3f20 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 o',label='Target.samples').pl.le
3f40 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 74 61 72 67 65 74 20 20 64 69 gend(loc=0).pl.title('target..di
3f60 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 69 stributions')..pl.figure(2).pl.i
3f80 6d 73 68 6f 77 28 4d 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 mshow(M,interpolation='nearest')
3fa0 0a 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 0a 0a 0a 23 25 25 .pl.title('Cost.matrix.M')...#%%
3fc0 20 4f 54 20 65 73 74 69 6d 61 74 69 6f 6e 0a 0a 23 20 45 4d 44 0a 47 30 3d 6f 74 2e 65 6d 64 28 .OT.estimation..#.EMD.G0=ot.emd(
3fe0 61 2c 62 2c 4d 29 0a 0a 23 20 73 69 6e 6b 68 6f 72 6e 0a 6c 61 6d 62 64 3d 31 65 2d 31 0a 47 73 a,b,M)..#.sinkhorn.lambd=1e-1.Gs
4000 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 29 0a 0a 0a 23 20 47 72 =ot.sinkhorn(a,b,M,lambd)...#.Gr
4020 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 72 65 67 3d 31 65 2d oup.lasso.regularization.reg=1e-
4040 31 0a 65 74 61 3d 31 65 30 0a 47 67 3d 6f 74 2e 64 61 2e 73 69 6e 6b 68 6f 72 6e 5f 6c 70 6c 31 1.eta=1e0.Gg=ot.da.sinkhorn_lpl1
4060 5f 6d 6d 28 61 2c 79 73 2e 61 73 74 79 70 65 28 6e 70 2e 69 6e 74 29 2c 62 2c 4d 2c 72 65 67 2c _mm(a,ys.astype(np.int),b,M,reg,
4080 65 74 61 29 0a 0a 0a 23 25 25 20 76 69 73 75 20 6d 61 74 72 69 63 65 73 0a 0a 70 6c 2e 66 69 67 eta)...#%%.visu.matrices..pl.fig
40a0 75 72 65 28 33 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 0a 70 6c 2e 69 6d 73 ure(3)..pl.subplot(2,3,1).pl.ims
40c0 68 6f 77 28 47 30 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a how(G0,interpolation='nearest').
40e0 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 27 29 0a 0a 70 6c 2e 73 75 62 70 6c pl.title('OT.matrix.')..pl.subpl
4100 6f 74 28 32 2c 33 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 47 73 2c 69 6e 74 65 72 70 6f 6c 61 ot(2,3,2).pl.imshow(Gs,interpola
4120 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 tion='nearest').pl.title('OT.mat
4140 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 33 rix.Sinkhorn')..pl.subplot(2,3,3
4160 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 47 67 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 ).pl.imshow(Gg,interpolation='ne
4180 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 72 6f 75 arest').pl.title('OT.matrix.Grou
41a0 70 20 6c 61 73 73 6f 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 0a 6f 74 2e p.lasso')..pl.subplot(2,3,4).ot.
41c0 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 30 plot.plot2D_samples_mat(xs,xt,G0
41e0 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d ,c=[.5,.5,1]).pl.scatter(xs[:,0]
4200 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 ,xs[:,1],c=ys,marker='+',label='
4220 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a Source.samples').pl.scatter(xt[:
4240 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 ,0],xt[:,1],c=yt,marker='o',labe
4260 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 l='Target.samples')...pl.subplot
4280 28 32 2c 33 2c 35 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d (2,3,5).ot.plot.plot2D_samples_m
42a0 61 74 28 78 73 2c 78 74 2c 47 73 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 70 6c 2e 73 63 61 74 at(xs,xt,Gs,c=[.5,.5,1]).pl.scat
42c0 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d ter(xs[:,0],xs[:,1],c=ys,marker=
42e0 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 73 '+',label='Source.samples').pl.s
4300 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b catter(xt[:,0],xt[:,1],c=yt,mark
4320 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 0a er='o',label='Target.samples')..
4340 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 36 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 pl.subplot(2,3,6).ot.plot.plot2D
4360 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 67 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 _samples_mat(xs,xt,Gg,c=[.5,.5,1
4380 5d 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d ]).pl.scatter(xs[:,0],xs[:,1],c=
43a0 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 ys,marker='+',label='Source.samp
43c0 6c 65 73 27 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d les').pl.scatter(xt[:,0],xt[:,1]
43e0 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 ,c=yt,marker='o',label='Target.s
4400 61 6d 70 6c 65 73 27 29 0a 0a 23 25 25 20 73 61 6d 70 6c 65 20 69 6e 74 65 72 70 6f 6c 61 74 69 amples')..#%%.sample.interpolati
4420 6f 6e 0a 0a 78 73 74 30 3d 6e 2a 47 30 2e 64 6f 74 28 78 74 29 0a 78 73 74 73 3d 6e 2a 47 73 2e on..xst0=n*G0.dot(xt).xsts=n*Gs.
4440 64 6f 74 28 78 74 29 0a 78 73 74 67 3d 6e 2a 47 67 2e 64 6f 74 28 78 74 29 0a 0a 70 6c 2e 66 69 dot(xt).xstg=n*Gg.dot(xt)..pl.fi
4460 67 75 72 65 28 34 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 0a 0a 0a 70 6c 2e 73 gure(4).pl.subplot(2,3,1)...pl.s
4480 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b catter(xt[:,0],xt[:,1],c=yt,mark
44a0 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c er='o',label='Target.samples',al
44c0 70 68 61 3d 30 2e 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 pha=0.5).pl.scatter(xst0[:,0],xs
44e0 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 t0[:,1],c=ys,marker='+',label='T
4500 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 ransp.samples',s=30).pl.title('I
4520 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 nterp.samples').pl.legend(loc=0)
4540 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 32 29 0a 0a 0a 70 6c 2e 73 63 61 74 74 65 72 ..pl.subplot(2,3,2)...pl.scatter
4560 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 (xt[:,0],xt[:,1],c=yt,marker='o'
4580 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e ,label='Target.samples',alpha=0.
45a0 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 73 5b 3a 2c 30 5d 2c 78 73 74 73 5b 3a 2c 31 5).pl.scatter(xsts[:,0],xsts[:,1
45c0 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 ],c=ys,marker='+',label='Transp.
45e0 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 samples',s=30).pl.title('Interp.
4600 73 61 6d 70 6c 65 73 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 samples.Sinkhorn')..pl.subplot(2
4620 2c 33 2c 33 29 0a 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 ,3,3)..pl.scatter(xt[:,0],xt[:,1
4640 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 ],c=yt,marker='o',label='Target.
4660 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 samples',alpha=0.5).pl.scatter(x
4680 73 74 67 5b 3a 2c 30 5d 2c 78 73 74 67 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 stg[:,0],xstg[:,1],c=ys,marker='
46a0 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a +',label='Transp.samples',s=30).
46c0 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 47 72 6f 75 70 6c 61 pl.title('Interp.samples.Groupla
46e0 73 73 6f 27 29 50 4b 03 04 14 00 00 00 00 00 6a 7b 82 49 d4 40 d8 69 2e 05 00 00 2e 05 00 00 20 sso')PK........j{.I.@.i.........
4700 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 31 44 5f 74 65 73 74 ...auto_examples/demo_OT_1D_test
4720 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 44 .py#.-*-.coding:.utf-8.-*-.""".D
4740 65 6d 6f 20 66 6f 72 20 31 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 0a 0a 40 61 emo.for.1D.optimal.transport..@a
4760 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 uthor:.rflamary."""..import.nump
4780 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 y.as.np.import.matplotlib.pylab.
47a0 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 as.pl.import.ot.from.ot.datasets
47c0 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 0a 0a 0a .import.get_1D_gauss.as.gauss...
47e0 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e 3d 31 30 30 20 23 20 6e 62 20 62 69 6e 73 0a #%%.parameters..n=100.#.nb.bins.
4800 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 0a 78 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 64 .#.bin.positions.x=np.arange(n,d
4820 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 type=np.float64)..#.Gaussian.dis
4840 74 72 69 62 75 74 69 6f 6e 73 0a 61 3d 67 61 75 73 73 28 6e 2c 6d 3d 6e 2a 2e 32 2c 73 3d 35 29 tributions.a=gauss(n,m=n*.2,s=5)
4860 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 62 3d 67 61 75 73 73 28 6e 2c 6d 3d 6e .#.m=.mean,.s=.std.b=gauss(n,m=n
4880 2a 2e 36 2c 73 3d 31 30 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 *.6,s=10)..#.loss.matrix.M=ot.di
48a0 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 31 29 29 2c 78 2e 72 65 73 68 61 70 65 28 28 6e st(x.reshape((n,1)),x.reshape((n
48c0 2c 31 29 29 29 0a 4d 2f 3d 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 ,1))).M/=M.max()..#%%.plot.the.d
48e0 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 70 6c 2e 70 6c istributions..pl.figure(1).pl.pl
4900 6f 74 28 78 2c 61 2c 27 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 ot(x,a,'b',label='Source.distrib
4920 75 74 69 6f 6e 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 62 2c 27 72 27 2c 6c 61 62 65 6c 3d 27 54 ution').pl.plot(x,b,'r',label='T
4940 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 arget.distribution').pl.legend()
4960 0a 0a 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 ..#%%.plot.distributions.and.los
4980 73 20 6d 61 74 72 69 78 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 6f 74 2e 70 6c 6f 74 2e 70 s.matrix..pl.figure(2).ot.plot.p
49a0 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 4d 2c 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 lot1D_mat(a,b,M,'Cost.matrix.M')
49c0 0a 0a 23 25 25 20 45 4d 44 0a 0a 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 29 0a 0a 70 6c 2e ..#%%.EMD..G0=ot.emd(a,b,M)..pl.
49e0 66 69 67 75 72 65 28 33 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 figure(3).ot.plot.plot1D_mat(a,b
4a00 2c 47 30 2c 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 0a 0a 23 25 25 20 53 69 6e 6b 68 6f 72 ,G0,'OT.matrix.G0')..#%%.Sinkhor
4a20 6e 0a 0a 6c 61 6d 62 64 3d 31 65 2d 33 0a 47 73 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 n..lambd=1e-3.Gs=ot.sinkhorn(a,b
4a40 2c 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 ,M,lambd,verbose=True)..pl.figur
4a60 65 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 2c 27 e(4).ot.plot.plot1D_mat(a,b,Gs,'
4a80 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a 23 25 25 20 53 69 6e 6b 68 6f OT.matrix.Sinkhorn')..#%%.Sinkho
4aa0 72 6e 0a 0a 6c 61 6d 62 64 3d 31 65 2d 34 0a 47 73 73 2c 6c 6f 67 3d 6f 74 2e 62 72 65 67 6d 61 rn..lambd=1e-4.Gss,log=ot.bregma
4ac0 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 73 74 61 62 69 6c 69 7a 65 64 28 61 2c 62 2c 4d 2c 6c 61 6d 62 n.sinkhorn_stabilized(a,b,M,lamb
4ae0 64 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 2c 6c 6f 67 3d 54 72 75 65 29 0a 47 73 73 32 2c 6c 6f d,verbose=True,log=True).Gss2,lo
4b00 67 32 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 73 74 61 62 69 6c 69 7a 65 g2=ot.bregman.sinkhorn_stabilize
4b20 64 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 2c 6c 6f 67 3d 54 d(a,b,M,lambd,verbose=True,log=T
4b40 72 75 65 2c 77 61 72 6d 73 74 61 72 74 3d 6c 6f 67 5b 27 77 61 72 6d 73 74 61 72 74 27 5d 29 0a rue,warmstart=log['warmstart']).
4b60 0a 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 .pl.figure(5).ot.plot.plot1D_mat
4b80 28 61 2c 62 2c 47 73 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 73 74 61 (a,b,Gss,'OT.matrix.Sinkhorn.sta
4ba0 62 69 6c 69 7a 65 64 27 29 0a 0a 23 25 25 20 53 69 6e 6b 68 6f 72 6e 0a 0a 6c 61 6d 62 64 3d 31 bilized')..#%%.Sinkhorn..lambd=1
4bc0 65 2d 31 31 0a 47 73 73 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 65 70 73 e-11.Gss=ot.bregman.sinkhorn_eps
4be0 69 6c 6f 6e 5f 73 63 61 6c 69 6e 67 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 ilon_scaling(a,b,M,lambd,verbose
4c00 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f =True)..pl.figure(5).ot.plot.plo
4c20 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 t1D_mat(a,b,Gss,'OT.matrix.Sinkh
4c40 6f 72 6e 20 73 74 61 62 69 6c 69 7a 65 64 27 29 0a 50 4b 03 04 14 00 00 00 00 00 15 6e c9 4a a5 orn.stabilized').PK.........n.J.
4c60 25 9f a1 06 0a 00 00 06 0a 00 00 27 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f %..........'...auto_examples/plo
4c80 74 5f 4f 54 44 41 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 t_OTDA_color_images.py#.-*-.codi
4ca0 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ng:.utf-8.-*-.""".==============
4cc0 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 ================================
4ce0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 ==========.OT.for.domain.adaptat
4d00 69 6f 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 ion.with.image.color.adaptation.
4d20 5b 36 5d 0a 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 [6].============================
4d40 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 0a 0a 5b 36 ============================..[6
4d60 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 2e 2c 20 ].Ferradans,.S.,.Papadakis,.N.,.
4d80 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 32 30 31 34 29 Peyre,.G.,.&.Aujol,.J..F..(2014)
4da0 2e 20 52 65 67 75 6c 61 72 69 7a 65 64 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 ..Regularized.discrete.optimal.t
4dc0 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 67 69 6e ransport..SIAM.Journal.on.Imagin
4de0 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 38 32 2e 0a 22 22 22 g.Sciences,.7(3),.1853-1882.."""
4e00 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 73 63 69 70 ..import.numpy.as.np.import.scip
4e20 79 2e 6e 64 69 6d 61 67 65 20 61 73 20 73 70 69 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c y.ndimage.as.spi.import.matplotl
4e40 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 23 25 25 20 4c ib.pylab.as.pl.import.ot...#%%.L
4e60 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 0a 0a 49 31 3d 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e oading.images..I1=spi.imread('..
4e80 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e /data/ocean_day.jpg').astype(np.
4ea0 66 6c 6f 61 74 36 34 29 2f 32 35 36 0a 49 32 3d 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 float64)/256.I2=spi.imread('../d
4ec0 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 70 ata/ocean_sunset.jpg').astype(np
4ee0 2e 66 6c 6f 61 74 36 34 29 2f 32 35 36 0a 0a 23 25 25 20 50 6c 6f 74 20 69 6d 61 67 65 73 0a 0a .float64)/256..#%%.Plot.images..
4f00 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 0a pl.figure(1)..pl.subplot(1,2,1).
4f20 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 pl.imshow(I1).pl.title('Image.1'
4f40 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 )..pl.subplot(1,2,2).pl.imshow(I
4f60 32 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 2).pl.title('Image.2')..pl.show(
4f80 29 0a 0a 23 25 25 20 49 6d 61 67 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 61 6e 64 20 64 61 74 61 )..#%%.Image.conversion.and.data
4fa0 73 65 74 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 64 65 66 20 69 6d 32 6d 61 74 28 49 29 3a 0a 20 set.generation..def.im2mat(I):..
4fc0 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 ..."""Converts.and.image.to.matr
4fe0 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 22 22 22 0a 20 20 20 20 72 ix.(one.pixel.per.line)""".....r
5000 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 2a 49 2e 73 68 eturn.I.reshape((I.shape[0]*I.sh
5020 61 70 65 5b 31 5d 2c 49 2e 73 68 61 70 65 5b 32 5d 29 29 0a 0a 64 65 66 20 6d 61 74 32 69 6d 28 ape[1],I.shape[2]))..def.mat2im(
5040 58 2c 73 68 61 70 65 29 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 62 61 63 6b 20 61 X,shape):....."""Converts.back.a
5060 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 65 22 22 22 0a 20 20 20 20 72 65 74 75 72 .matrix.to.an.image""".....retur
5080 6e 20 58 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 29 0a 0a 58 31 3d 69 6d 32 6d 61 74 28 49 31 n.X.reshape(shape)..X1=im2mat(I1
50a0 29 0a 58 32 3d 69 6d 32 6d 61 74 28 49 32 29 0a 0a 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 ).X2=im2mat(I2)..#.training.samp
50c0 6c 65 73 0a 6e 62 3d 31 30 30 30 0a 69 64 78 31 3d 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 les.nb=1000.idx1=np.random.randi
50e0 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 5d 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 69 64 78 32 3d nt(X1.shape[0],size=(nb,)).idx2=
5100 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 73 69 np.random.randint(X2.shape[0],si
5120 7a 65 3d 28 6e 62 2c 29 29 0a 0a 78 73 3d 58 31 5b 69 64 78 31 2c 3a 5d 0a 78 74 3d 58 32 5b 69 ze=(nb,))..xs=X1[idx1,:].xt=X2[i
5140 64 78 32 2c 3a 5d 0a 0a 23 25 25 20 50 6c 6f 74 20 69 6d 61 67 65 20 64 69 73 74 72 69 62 75 74 dx2,:]..#%%.Plot.image.distribut
5160 69 6f 6e 73 0a 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 35 29 29 0a 0a 70 6c 2e 73 ions...pl.figure(2,(10,5))..pl.s
5180 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d ubplot(1,2,1).pl.scatter(xs[:,0]
51a0 2c 78 73 5b 3a 2c 32 5d 2c 63 3d 78 73 29 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d ,xs[:,2],c=xs).pl.axis([0,1,0,1]
51c0 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c ).pl.xlabel('Red').pl.ylabel('Bl
51e0 75 65 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 0a 0a 70 6c 2e 73 75 62 ue').pl.title('Image.1')..pl.sub
5200 70 6c 6f 74 28 31 2c 32 2c 32 29 0a 23 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 73 63 plot(1,2,2).#pl.imshow(I2).pl.sc
5220 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 32 5d 2c 63 3d 78 74 29 0a 70 6c 2e 61 atter(xt[:,0],xt[:,2],c=xt).pl.a
5240 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 0a xis([0,1,0,1]).pl.xlabel('Red').
5260 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 pl.ylabel('Blue').pl.title('Imag
5280 65 20 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a 0a 0a 23 25 25 20 64 6f 6d 61 69 6e 20 61 e.2')..pl.show()....#%%.domain.a
52a0 64 61 70 74 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 6d 61 67 65 73 0a 0a 23 20 4c 50 20 70 daptation.between.images..#.LP.p
52c0 72 6f 62 6c 65 6d 0a 64 61 5f 65 6d 64 3d 6f 74 2e 64 61 2e 4f 54 44 41 28 29 20 20 20 20 20 23 roblem.da_emd=ot.da.OTDA().....#
52e0 20 69 6e 69 74 20 63 6c 61 73 73 0a 64 61 5f 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 29 20 20 20 .init.class.da_emd.fit(xs,xt)...
5300 20 20 20 20 23 20 66 69 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 0a 23 20 73 69 6e 6b ....#.fit.distributions...#.sink
5320 68 6f 72 6e 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 6c 61 6d 62 64 3d 31 65 2d 31 0a 64 horn.regularization.lambd=1e-1.d
5340 61 5f 65 6e 74 72 6f 70 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 0a 64 a_entrop=ot.da.OTDA_sinkhorn().d
5360 61 5f 65 6e 74 72 6f 70 2e 66 69 74 28 78 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 0a 0a 0a a_entrop.fit(xs,xt,reg=lambd)...
5380 0a 23 25 25 20 70 72 65 64 69 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 6d 61 67 65 73 20 28 .#%%.prediction.between.images.(
53a0 75 73 69 6e 67 20 6f 75 74 20 6f 66 20 73 61 6d 70 6c 65 20 70 72 65 64 69 63 74 69 6f 6e 20 61 using.out.of.sample.prediction.a
53c0 73 20 69 6e 20 5b 36 5d 29 0a 0a 58 31 74 3d 64 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 28 58 31 s.in.[6])..X1t=da_emd.predict(X1
53e0 29 0a 58 32 74 3d 64 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 28 58 32 2c 2d 31 29 0a 0a 0a 58 31 ).X2t=da_emd.predict(X2,-1)...X1
5400 74 65 3d 64 61 5f 65 6e 74 72 6f 70 2e 70 72 65 64 69 63 74 28 58 31 29 0a 58 32 74 65 3d 64 61 te=da_entrop.predict(X1).X2te=da
5420 5f 65 6e 74 72 6f 70 2e 70 72 65 64 69 63 74 28 58 32 2c 2d 31 29 0a 0a 0a 64 65 66 20 6d 69 6e _entrop.predict(X2,-1)...def.min
5440 6d 61 78 28 49 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 6d 69 6e 69 6d 75 6d 28 6e 70 max(I):.....return.np.minimum(np
5460 2e 6d 61 78 69 6d 75 6d 28 49 2c 30 29 2c 31 29 0a 0a 49 31 74 3d 6d 69 6e 6d 61 78 28 6d 61 74 .maximum(I,0),1)..I1t=minmax(mat
5480 32 69 6d 28 58 31 74 2c 49 31 2e 73 68 61 70 65 29 29 0a 49 32 74 3d 6d 69 6e 6d 61 78 28 6d 61 2im(X1t,I1.shape)).I2t=minmax(ma
54a0 74 32 69 6d 28 58 32 74 2c 49 32 2e 73 68 61 70 65 29 29 0a 0a 49 31 74 65 3d 6d 69 6e 6d 61 78 t2im(X2t,I2.shape))..I1te=minmax
54c0 28 6d 61 74 32 69 6d 28 58 31 74 65 2c 49 31 2e 73 68 61 70 65 29 29 0a 49 32 74 65 3d 6d 69 6e (mat2im(X1te,I1.shape)).I2te=min
54e0 6d 61 78 28 6d 61 74 32 69 6d 28 58 32 74 65 2c 49 32 2e 73 68 61 70 65 29 29 0a 0a 23 25 25 20 max(mat2im(X2te,I2.shape))..#%%.
5500 70 6c 6f 74 20 61 6c 6c 20 69 6d 61 67 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 plot.all.images..pl.figure(2,(10
5520 2c 38 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 0a 0a 70 6c 2e 69 6d 73 68 ,8))..pl.subplot(2,3,1)..pl.imsh
5540 6f 77 28 49 31 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 0a 0a 70 6c 2e 73 ow(I1).pl.title('Image.1')..pl.s
5560 75 62 70 6c 6f 74 28 32 2c 33 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 29 0a 70 6c 2e ubplot(2,3,2).pl.imshow(I1t).pl.
5580 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 20 41 64 61 70 74 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 title('Image.1.Adapt')...pl.subp
55a0 6c 6f 74 28 32 2c 33 2c 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 65 29 0a 70 6c 2e 74 69 lot(2,3,3).pl.imshow(I1te).pl.ti
55c0 74 6c 65 28 27 49 6d 61 67 65 20 31 20 41 64 61 70 74 20 28 72 65 67 29 27 29 0a 0a 70 6c 2e 73 tle('Image.1.Adapt.(reg)')..pl.s
55e0 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 0a 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e ubplot(2,3,4)..pl.imshow(I2).pl.
5600 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 title('Image.2')..pl.subplot(2,3
5620 2c 35 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 ,5).pl.imshow(I2t).pl.title('Ima
5640 67 65 20 32 20 41 64 61 70 74 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 36 29 ge.2.Adapt')...pl.subplot(2,3,6)
5660 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 65 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 .pl.imshow(I2te).pl.title('Image
5680 20 32 20 41 64 61 70 74 20 28 72 65 67 29 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 .2.Adapt.(reg)')..pl.show().PK..
56a0 14 00 00 00 00 00 15 6e c9 4a f7 ba 1e e3 6d 0d 00 00 6d 0d 00 00 2f 00 00 00 61 75 74 6f 5f 65 .......n.J....m...m.../...auto_e
56c0 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 5f xamples/plot_OTDA_mapping_color_
56e0 69 6d 61 67 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d images.py#.-*-.coding:.utf-8.-*-
5700 0a 22 22 22 0a 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 .""".===========================
5720 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 ================================
5740 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 0a 4f 54 20 66 6f 72 =========================.OT.for
5760 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 74 68 20 69 6d 61 67 65 20 63 6f .domain.adaptation.with.image.co
5780 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 20 77 69 74 68 20 6d 61 70 70 69 6e 67 20 lor.adaptation.[6].with.mapping.
57a0 65 73 74 69 6d 61 74 69 6f 6e 20 5b 38 5d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d estimation.[8].=================
57c0 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 ================================
57e0 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 ================================
5800 3d 3d 3d 0a 0a 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 ===..[6].Ferradans,.S.,.Papadaki
5820 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 2e s,.N.,.Peyre,.G.,.&.Aujol,.J..F.
5840 20 28 32 30 31 34 29 2e 20 52 65 67 75 6c 61 72 69 7a 65 64 0a 20 20 20 20 64 69 73 63 72 65 74 .(2014)..Regularized.....discret
5860 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 e.optimal.transport..SIAM.Journa
5880 6c 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 20 31 38 35 l.on.Imaging.Sciences,.7(3),.185
58a0 33 2d 31 38 38 32 2e 0a 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 3-1882..[8].M..Perrot,.N..Courty
58c0 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 22 4d 61 70 70 69 ,.R..Flamary,.A..Habrard,."Mappi
58e0 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 0a 20 20 20 20 64 69 73 63 72 65 74 65 20 6f ng.estimation.for.....discrete.o
5900 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 22 2c 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d ptimal.transport",.Neural.Inform
5920 61 74 69 6f 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 79 73 74 65 6d 73 20 28 4e 49 50 53 29 2c ation.Processing.Systems.(NIPS),
5940 20 32 30 31 36 2e 0a 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a .2016..."""..import.numpy.as.np.
5960 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 69 0a 69 6d 70 6f import.scipy.ndimage.as.spi.impo
5980 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 0a 69 6d 70 6f 72 74 rt.matplotlib.pylab.as.pl.import
59a0 20 6f 74 0a 0a 0a 23 25 25 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 0a 0a 49 31 3d 73 70 69 .ot...#%%.Loading.images..I1=spi
59c0 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 .imread('../data/ocean_day.jpg')
59e0 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 2f 32 35 36 0a 49 32 3d 73 70 69 2e 69 .astype(np.float64)/256.I2=spi.i
5a00 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 27 mread('../data/ocean_sunset.jpg'
5a20 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 2f 32 35 36 0a 0a 23 25 25 20 50 6c ).astype(np.float64)/256..#%%.Pl
5a40 6f 74 20 69 6d 61 67 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 0a 70 6c 2e 73 75 62 70 ot.images..pl.figure(1)..pl.subp
5a60 6c 6f 74 28 31 2c 32 2c 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 74 69 74 6c lot(1,2,1).pl.imshow(I1).pl.titl
5a80 65 28 27 49 6d 61 67 65 20 31 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 32 29 0a e('Image.1')..pl.subplot(1,2,2).
5aa0 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 pl.imshow(I2).pl.title('Image.2'
5ac0 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a 23 25 25 20 49 6d 61 67 65 20 63 6f 6e 76 65 72 73 69 )..pl.show()..#%%.Image.conversi
5ae0 6f 6e 20 61 6e 64 20 64 61 74 61 73 65 74 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 64 65 66 20 69 on.and.dataset.generation..def.i
5b00 6d 32 6d 61 74 28 49 29 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d m2mat(I):....."""Converts.and.im
5b20 61 67 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e age.to.matrix.(one.pixel.per.lin
5b40 65 29 22 22 22 0a 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 e)""".....return.I.reshape((I.sh
5b60 61 70 65 5b 30 5d 2a 49 2e 73 68 61 70 65 5b 31 5d 2c 49 2e 73 68 61 70 65 5b 32 5d 29 29 0a 0a ape[0]*I.shape[1],I.shape[2]))..
5b80 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 73 68 61 70 65 29 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 def.mat2im(X,shape):....."""Conv
5ba0 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 65 22 22 erts.back.a.matrix.to.an.image""
5bc0 22 0a 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 0a 0a 58 ".....return.X.reshape(shape)..X
5be0 31 3d 69 6d 32 6d 61 74 28 49 31 29 0a 58 32 3d 69 6d 32 6d 61 74 28 49 32 29 0a 0a 23 20 74 72 1=im2mat(I1).X2=im2mat(I2)..#.tr
5c00 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 0a 6e 62 3d 31 30 30 30 0a 69 64 78 31 3d 6e 70 2e 72 aining.samples.nb=1000.idx1=np.r
5c20 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 5d 2c 73 69 7a 65 3d 28 andom.randint(X1.shape[0],size=(
5c40 6e 62 2c 29 29 0a 69 64 78 32 3d 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 58 32 2e nb,)).idx2=np.random.randint(X2.
5c60 73 68 61 70 65 5b 30 5d 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 0a 78 73 3d 58 31 5b 69 64 78 31 shape[0],size=(nb,))..xs=X1[idx1
5c80 2c 3a 5d 0a 78 74 3d 58 32 5b 69 64 78 32 2c 3a 5d 0a 0a 23 25 25 20 50 6c 6f 74 20 69 6d 61 67 ,:].xt=X2[idx2,:]..#%%.Plot.imag
5ca0 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 e.distributions...pl.figure(2,(1
5cc0 30 2c 35 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 0,5))..pl.subplot(1,2,1).pl.scat
5ce0 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 32 5d 2c 63 3d 78 73 29 0a 70 6c 2e 61 78 69 ter(xs[:,0],xs[:,2],c=xs).pl.axi
5d00 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 0a 70 6c s([0,1,0,1]).pl.xlabel('Red').pl
5d20 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 .ylabel('Blue').pl.title('Image.
5d40 31 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 32 29 0a 23 70 6c 2e 69 6d 73 68 6f 1')..pl.subplot(1,2,2).#pl.imsho
5d60 77 28 49 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 32 5d w(I2).pl.scatter(xt[:,0],xt[:,2]
5d80 2c 63 3d 78 74 29 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 0a 70 6c 2e 78 6c 61 ,c=xt).pl.axis([0,1,0,1]).pl.xla
5da0 62 65 6c 28 27 52 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e bel('Red').pl.ylabel('Blue').pl.
5dc0 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a 0a 0a 23 title('Image.2')..pl.show()....#
5de0 25 25 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 6d 61 %%.domain.adaptation.between.ima
5e00 67 65 73 0a 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 ges.def.minmax(I):.....return.np
5e20 2e 6d 69 6e 69 6d 75 6d 28 6e 70 2e 6d 61 78 69 6d 75 6d 28 49 2c 30 29 2c 31 29 0a 23 20 4c 50 .minimum(np.maximum(I,0),1).#.LP
5e40 20 70 72 6f 62 6c 65 6d 0a 64 61 5f 65 6d 64 3d 6f 74 2e 64 61 2e 4f 54 44 41 28 29 20 20 20 20 .problem.da_emd=ot.da.OTDA()....
5e60 20 23 20 69 6e 69 74 20 63 6c 61 73 73 0a 64 61 5f 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 29 20 .#.init.class.da_emd.fit(xs,xt).
5e80 20 20 20 20 20 20 23 20 66 69 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 58 31 74 3d 64 ......#.fit.distributions..X1t=d
5ea0 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 28 58 31 29 20 20 23 20 6f 75 74 20 6f 66 20 73 61 6d 70 a_emd.predict(X1)..#.out.of.samp
5ec0 6c 65 0a 49 31 74 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 2c 49 31 2e 73 68 61 70 le.I1t=minmax(mat2im(X1t,I1.shap
5ee0 65 29 29 0a 0a 23 20 73 69 6e 6b 68 6f 72 6e 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 6c e))..#.sinkhorn.regularization.l
5f00 61 6d 62 64 3d 31 65 2d 31 0a 64 61 5f 65 6e 74 72 6f 70 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 73 ambd=1e-1.da_entrop=ot.da.OTDA_s
5f20 69 6e 6b 68 6f 72 6e 28 29 0a 64 61 5f 65 6e 74 72 6f 70 2e 66 69 74 28 78 73 2c 78 74 2c 72 65 inkhorn().da_entrop.fit(xs,xt,re
5f40 67 3d 6c 61 6d 62 64 29 0a 0a 58 31 74 65 3d 64 61 5f 65 6e 74 72 6f 70 2e 70 72 65 64 69 63 74 g=lambd)..X1te=da_entrop.predict
5f60 28 58 31 29 0a 49 31 74 65 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 65 2c 49 31 2e (X1).I1te=minmax(mat2im(X1te,I1.
5f80 73 68 61 70 65 29 29 0a 0a 23 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 shape))..#.linear.mapping.estima
5fa0 74 69 6f 6e 0a 65 74 61 3d 31 65 2d 38 20 20 20 23 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 tion.eta=1e-8...#.quadratic.regu
5fc0 6c 61 72 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 73 69 6f 6e 0a 6d 75 3d 31 65 30 larization.for.regression.mu=1e0
5fe0 20 20 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 4f 54 20 6c 69 6e 65 61 72 20 74 .....#.weight.of.the.OT.linear.t
6000 65 72 6d 0a 62 69 61 73 3d 54 72 75 65 20 20 23 20 65 73 74 69 6d 61 74 65 20 61 20 62 69 61 73 erm.bias=True..#.estimate.a.bias
6020 0a 0a 6f 74 5f 6d 61 70 70 69 6e 67 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f ..ot_mapping=ot.da.OTDA_mapping_
6040 6c 69 6e 65 61 72 28 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 2e 66 69 74 28 78 73 2c 78 74 2c 6d 75 linear().ot_mapping.fit(xs,xt,mu
6060 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d 61 78 =mu,eta=eta,bias=bias,numItermax
6080 20 3d 20 32 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 58 31 74 6c 3d 6f 74 5f 6d 61 70 .=.20,verbose=True)..X1tl=ot_map
60a0 70 69 6e 67 2e 70 72 65 64 69 63 74 28 58 31 29 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d ping.predict(X1).#.use.the.estim
60c0 61 74 65 64 20 6d 61 70 70 69 6e 67 0a 49 31 74 6c 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 ated.mapping.I1tl=minmax(mat2im(
60e0 58 31 74 6c 2c 49 31 2e 73 68 61 70 65 29 29 0a 0a 23 20 6e 6f 6e 6c 69 6e 65 61 72 20 6d 61 70 X1tl,I1.shape))..#.nonlinear.map
6100 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 0a 65 74 61 3d 31 65 2d 32 20 20 20 23 20 71 75 61 ping.estimation.eta=1e-2...#.qua
6120 64 72 61 74 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 dratic.regularization.for.regres
6140 73 69 6f 6e 0a 6d 75 3d 31 65 30 20 20 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 sion.mu=1e0.....#.weight.of.the.
6160 4f 54 20 6c 69 6e 65 61 72 20 74 65 72 6d 0a 62 69 61 73 3d 46 61 6c 73 65 20 20 23 20 65 73 74 OT.linear.term.bias=False..#.est
6180 69 6d 61 74 65 20 61 20 62 69 61 73 0a 73 69 67 6d 61 3d 31 20 20 20 20 23 20 73 69 67 6d 61 20 imate.a.bias.sigma=1....#.sigma.
61a0 62 61 6e 64 77 69 64 74 68 20 66 6f 74 20 67 61 75 73 73 69 61 6e 20 6b 65 72 6e 65 6c 0a 0a 0a bandwidth.fot.gaussian.kernel...
61c0 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 ot_mapping_kernel=ot.da.OTDA_map
61e0 70 69 6e 67 5f 6b 65 72 6e 65 6c 28 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e ping_kernel().ot_mapping_kernel.
6200 66 69 74 28 78 73 2c 78 74 2c 6d 75 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 73 69 67 6d 61 3d 73 69 fit(xs,xt,mu=mu,eta=eta,sigma=si
6220 67 6d 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 2c 76 65 gma,bias=bias,numItermax.=.10,ve
6240 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 58 31 74 6e 3d 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 rbose=True)..X1tn=ot_mapping_ker
6260 6e 65 6c 2e 70 72 65 64 69 63 74 28 58 31 29 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d 61 nel.predict(X1).#.use.the.estima
6280 74 65 64 20 6d 61 70 70 69 6e 67 0a 49 31 74 6e 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 ted.mapping.I1tn=minmax(mat2im(X
62a0 31 74 6e 2c 49 31 2e 73 68 61 70 65 29 29 0a 23 25 25 20 70 6c 6f 74 20 69 6d 61 67 65 73 0a 0a 1tn,I1.shape)).#%%.plot.images..
62c0 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 38 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 .pl.figure(2,(10,8))..pl.subplot
62e0 28 32 2c 33 2c 31 29 0a 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 74 69 74 6c 65 28 (2,3,1)..pl.imshow(I1).pl.title(
6300 27 49 6d 2e 20 31 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 32 29 0a 0a 70 6c 2e 'Im..1')..pl.subplot(2,3,2)..pl.
6320 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 32 27 29 0a 0a 0a 70 imshow(I2).pl.title('Im..2')...p
6340 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 29 0a l.subplot(2,3,3).pl.imshow(I1t).
6360 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 20 49 6e 74 65 72 70 20 4c 50 27 29 0a 0a 70 6c 2e pl.title('Im..1.Interp.LP')..pl.
6380 73 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 65 29 0a 70 subplot(2,3,4).pl.imshow(I1te).p
63a0 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 20 49 6e 74 65 72 70 20 45 6e 74 72 6f 70 27 29 0a 0a l.title('Im..1.Interp.Entrop')..
63c0 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 35 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 .pl.subplot(2,3,5).pl.imshow(I1t
63e0 6c 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 20 4c 69 6e 65 61 72 20 6d 61 70 70 69 6e l).pl.title('Im..1.Linear.mappin
6400 67 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 36 29 0a 70 6c 2e 69 6d 73 68 6f 77 g')..pl.subplot(2,3,6).pl.imshow
6420 28 49 31 74 6e 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 20 6e 6f 6e 6c 69 6e 65 61 72 (I1tn).pl.title('Im..1.nonlinear
6440 20 6d 61 70 70 69 6e 67 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 01 02 14 03 14 00 00 00 .mapping')..pl.show().PK........
6460 00 00 15 6e c9 4a 38 e5 ac a5 a0 04 00 00 a0 04 00 00 19 00 00 00 00 00 00 00 00 00 00 00 b4 81 ...n.J8.........................
6480 00 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 57 44 41 2e 70 79 50 4b 01 ....auto_examples/plot_WDA.pyPK.
64a0 02 14 03 14 00 00 00 00 00 15 6e c9 4a e7 a1 46 a7 95 0c 00 00 95 0c 00 00 22 00 00 00 00 00 00 ..........n.J..F........."......
64c0 00 00 00 00 00 b4 81 d7 04 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 ...........auto_examples/plot_OT
64e0 44 41 5f 6d 61 70 70 69 6e 67 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 15 6e c9 4a 5b b0 f5 DA_mapping.pyPK...........n.J[..
6500 4b 06 05 00 00 06 05 00 00 21 00 00 00 00 00 00 00 00 00 00 00 b4 81 ac 11 00 00 61 75 74 6f 5f K........!.................auto_
6520 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e 70 79 50 4b 01 02 examples/plot_optim_OTreg.pyPK..
6540 14 03 14 00 00 00 00 00 15 6e c9 4a f2 c1 a7 29 f1 09 00 00 f1 09 00 00 22 00 00 00 00 00 00 00 .........n.J...)........".......
6560 00 00 00 00 b4 81 f1 16 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 ..........auto_examples/plot_OTD
6580 41 5f 63 6c 61 73 73 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 15 6e c9 4a a6 c0 9c 1d A_classes.pyPK...........n.J....
65a0 82 03 00 00 82 03 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 b4 81 22 21 00 00 61 75 74 6f 5f 65 ......................"!..auto_e
65c0 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 31 44 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 xamples/plot_OT_1D.pyPK.........
65e0 00 15 6e c9 4a d8 dc 52 b3 62 0a 00 00 62 0a 00 00 23 00 00 00 00 00 00 00 00 00 00 00 b4 81 dd ..n.J..R.b...b...#..............
6600 24 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 $..auto_examples/plot_barycenter
6620 5f 31 44 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 6a 7b 82 49 25 c9 d6 13 1c 06 00 00 1c 06 _1D.pyPK..........j{.I%.........
6640 00 00 28 00 00 00 00 00 00 00 00 00 00 00 b4 81 80 2f 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 ..(............../..auto_example
6660 73 2f 64 65 6d 6f 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 6c 61 72 67 65 2e 70 79 50 4b 01 02 s/demo_OT_2D_sampleslarge.pyPK..
6680 14 03 14 00 00 00 00 00 15 6e c9 4a 82 5c c9 67 59 06 00 00 59 06 00 00 23 00 00 00 00 00 00 00 .........n.J.\.gY...Y...#.......
66a0 00 00 00 00 b4 81 e2 35 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f .......5..auto_examples/plot_OT_
66c0 32 44 5f 73 61 6d 70 6c 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 15 6e c9 4a ec af 42 2D_samples.pyPK...........n.J..B
66e0 31 2e 0a 00 00 2e 0a 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 b4 81 7c 3c 00 00 61 75 74 6f 5f 1......................|<..auto_
6700 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 32 44 2e 70 79 50 4b 01 02 14 03 14 00 examples/plot_OTDA_2D.pyPK......
6720 00 00 00 00 6a 7b 82 49 d4 40 d8 69 2e 05 00 00 2e 05 00 00 20 00 00 00 00 00 00 00 00 00 00 00 ....j{.I.@.i....................
6740 b4 81 e5 46 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 31 44 5f 74 ...F..auto_examples/demo_OT_1D_t
6760 65 73 74 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 15 6e c9 4a a5 25 9f a1 06 0a 00 00 06 0a est.pyPK...........n.J.%........
6780 00 00 27 00 00 00 00 00 00 00 00 00 00 00 b4 81 51 4c 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 ..'.............QL..auto_example
67a0 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 50 4b 01 02 14 s/plot_OTDA_color_images.pyPK...
67c0 03 14 00 00 00 00 00 15 6e c9 4a f7 ba 1e e3 6d 0d 00 00 6d 0d 00 00 2f 00 00 00 00 00 00 00 00 ........n.J....m...m.../........
67e0 00 00 00 b4 81 9c 56 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 ......V..auto_examples/plot_OTDA
6800 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 50 4b 05 06 00 00 00 00 _mapping_color_images.pyPK......
6820 0c 00 0c 00 c2 03 00 00 56 64 00 00 00 00 ........Vd....