From 326b3d9ece1cec591bcf72d7de90aa311d2d004d Mon Sep 17 00:00:00 2001 From: Dima Burov Date: Sun, 14 Jul 2019 14:47:53 -0700 Subject: [PATCH 1/2] Implement 'mmstd', 'plot_fit'; add tests --- examples/GPR/main.jl | 15 ++-- src/GPR.jl | 140 ++++++++++++++++++++++++++++++ test/GPR/data/matern_05_mesh.npy | Bin 0 -> 8128 bytes test/GPR/data/matern_def_mean.npy | Bin 8080 -> 8088 bytes test/GPR/data/matern_def_std.npy | Bin 8080 -> 8088 bytes test/GPR/data/mesh.npy | Bin 8128 -> 8088 bytes test/GPR/data/rbf_mean.npy | Bin 8080 -> 8088 bytes test/GPR/data/rbf_std.npy | Bin 8080 -> 8088 bytes test/GPR/runtests.jl | 12 ++- 9 files changed, 159 insertions(+), 8 deletions(-) create mode 100644 test/GPR/data/matern_05_mesh.npy diff --git a/examples/GPR/main.jl b/examples/GPR/main.jl index 2c3753c95..3399baad3 100644 --- a/examples/GPR/main.jl +++ b/examples/GPR/main.jl @@ -32,18 +32,21 @@ GPR.learn!(gprw) # fit GPR with "Const * RBF + White" kernel #GPR.learn!(gprw, kernel = "matern") # "rbf" and "matern" are supported for now #GPR.learn!(gprw, kernel = "matern", nu = 1) # Matern's parameter nu; 1.5 by def -mesh = minimum(gpr_data, dims=1)[1] : 0.01 : maximum(gpr_data, dims=1)[1] +mesh, mean, std = GPR.mmstd(gprw) # equispaced mesh; mean and std at mesh points +#mesh, mean, std = GPR.mmstd(gprw, mesh_n = 11) # by default, `mesh_n` is 1001 -mean, std = GPR.predict(gprw, mesh, return_std = true) +#mean, std = GPR.predict(gprw, mesh, return_std = true) # your own mesh #mean = GPR.predict(gprw, mesh) # `return_std` is false by default ################################################################################ # plot section ################################################################# ################################################################################ -plt.plot(gpr_data[:,1], gpr_data[:,2], "r.", ms = 6, label = "Data points") -plt.plot(mesh, mean, "k", lw = 2.5, label = "GPR mean") -plt.fill_between(mesh, mean - 2*std, mean + 2*std, alpha = 0.4, zorder = 10, - color = "k", label = "95% interval") +#GPR.plot_fit(gprw, plt, plot_95 = true) # by default, `plot_95` is false + +# no legend by default, but you can specify yours in the following order: +# data points, subsample, mean, 95% interval +GPR.plot_fit(gprw, plt, plot_95 = true, + label = ["Points", "Training", "Mean", "95% interval"]) plt.legend() plt.show() diff --git a/src/GPR.jl b/src/GPR.jl index ceff75f2d..764ab2009 100644 --- a/src/GPR.jl +++ b/src/GPR.jl @@ -23,6 +23,8 @@ Functions that operate on GPR.Wrap struct: - subsample! (3 methods) - learn! (1 method) - predict (1 method) + - mmstd (1 method) + - plot_fit (1 method) Do *not* set Wrap's variables except for `thrsh`; use setter functions! """ @@ -184,6 +186,144 @@ function predict(gprw::Wrap, x; return_std = false) end end +""" +Return mesh, mean and st. deviation over the whole data range + +Computes min and max of `gprw.data` x-range and returns equispaced mesh with +`mesh_n` number of points, mean and st. deviation computed over that mesh + +Parameters: + - gprw: an instance of GPR.Wrap + - mesh_n: number of mesh points (1001 by default) + +Returns: + - (m, m, std): mesh, mean and st. deviation +""" +function mmstd(gprw::Wrap; mesh_n = 1001) + mesh = range(minimum(gprw.data, dims=1)[1], + maximum(gprw.data, dims=1)[1], + length = mesh_n) + return (mesh, predict(gprw, mesh, return_std = true)...) +end + +""" +Plot mean (and 95% interval) along with data and subsample + +The flag `plot_95` controls whether to plot 95% interval; `label` may provide +labels in the following order: + data points, subsample, GP mean, 95% interval (if requested) + +If you're using Plots.jl and running it from a file rather than REPL, you need +to wrap the call: +`display(GPR.plot_fit(gprw, Plots))` + +Parameters: + - gprw: an instance of GPR.Wrap + - plt: a module used for plotting (only PyPlot & Plots supported) + - plot_95: boolean flag, whether to plot 95% confidence interval + - label: a 3- or 4-tuple or vector of strings (no label by default) +""" +function plot_fit(gprw::Wrap, plt; plot_95 = false, label = nothing) + if !gprw.__data_set + println(warn("plot_fit"), "data is not set, nothing to plot") + return + end + is_pyplot = (Symbol(plt) == :PyPlot) + is_plots = (Symbol(plt) == :Plots) + if !is_pyplot && !is_plots + println(warn("plot_fit"), "only PyPlot & Plots are supported; not plotting") + return + end + + # set `cols` Dict with colors of the plots + alpha_95 = 0.3 # alpha channel for shaded region, i.e. 95% interval + cols = Dict{String, Any}() + cols["mean"] = "black" + if is_pyplot + cols["data"] = "tab:gray" + cols["sub"] = "tab:red" + cols["shade"] = (0, 0, 0, alpha_95) + elseif is_plots + cols["data"] = "#7f7f7f" # tab10 gray + cols["sub"] = "#d62728" # tab10 red + end + + # set keyword argument dictionaries for plotting functions + kwargs_data = Dict{Symbol, Any}() + kwargs_sub = Dict{Symbol, Any}() + kwargs_mean = Dict{Symbol, Any}() + kwargs_95 = Dict{Symbol, Any}() + kwargs_aux = Dict{Symbol, Any}() + + kwargs_data[:color] = cols["data"] + kwargs_sub[:color] = cols["sub"] + kwargs_mean[:color] = cols["mean"] + kwargs_mean[:lw] = 2.5 + if is_pyplot + kwargs_data[:ms] = 4 + kwargs_sub[:ms] = 4 + kwargs_95[:facecolor] = cols["shade"] + kwargs_95[:edgecolor] = cols["mean"] + kwargs_95[:lw] = 0.5 + kwargs_95[:zorder] = 10 + elseif is_plots + kwargs_data[:ms] = 2 + kwargs_sub[:ms] = 2 + kwargs_95[:color] = cols["mean"] + kwargs_95[:fillalpha] = alpha_95 + kwargs_95[:lw] = 2.5 + kwargs_95[:z] = 10 + kwargs_aux[:color] = cols["mean"] + kwargs_aux[:lw] = 0.5 + kwargs_aux[:label] = "" + end + + if label != nothing + kwargs_data[:label] = label[1] + kwargs_sub[:label] = label[2] + kwargs_mean[:label] = label[3] + if is_pyplot + kwargs_95[:label] = label[4] + elseif is_plots + kwargs_95[:label] = label[3] + end + elseif is_plots + kwargs_data[:label] = "" + kwargs_sub[:label] = "" + kwargs_mean[:label] = "" + kwargs_95[:label] = "" + end + + + mesh, mean, std = mmstd(gprw) + + # plot data, subsample and mean + if is_pyplot + plt.plot(gprw.data[:,1], gprw.data[:,2], "."; kwargs_data...) + plt.plot(gprw.subsample[:,1], gprw.subsample[:,2], "."; kwargs_sub...) + if plot_95 + plt.fill_between(mesh, + mean - 1.96 * std, + mean + 1.96 * std; + kwargs_95...) + end + plt.plot(mesh, mean; kwargs_mean...) + elseif is_plots + plt.scatter!(gprw.data[:,1], gprw.data[:,2]; kwargs_data...) + plt.scatter!(gprw.subsample[:,1], gprw.subsample[:,2]; kwargs_sub...) + if plot_95 + plt.plot!(mesh, + mean, + ribbon = (1.96 * std, 1.96 * std); + kwargs_95...) + plt.plot!(mesh, mean - 1.96 * std; kwargs_aux...) + plt.plot!(mesh, mean + 1.96 * std; kwargs_aux...) + else + plt.plot!(mesh, mean; kwargs_mean...) + end + end +end + ################################################################################ # convenience functions ######################################################## ################################################################################ diff --git a/test/GPR/data/matern_05_mesh.npy b/test/GPR/data/matern_05_mesh.npy new file mode 100644 index 0000000000000000000000000000000000000000..3c26754966fd265d6732d89f0878e726455f51c9 GIT binary patch literal 8128 zcmbV~_dnJD|Nm{rKF&FubIgOYNM+SasOMb~4XYQjQW=FZQszsN(Xc`psjNy0^(rfR z<@um8OUh`;PDq&{^Yi}x3*Xx>*UR<#^X;moorSd{FHbPfKO7Iw)9!&B0|v+Fm_A37 z!8zt1cqZ_u-(mki56}PCcON}@+Vg+?wAax9&;L1BTT4qzQ(cpBmht~P(NxBjM^Clo zQNXFoewd;>vZ{~S*g%j+o5+z9`{(44ghyy`N1q&;C=c{;YL!DRg1+hlm2&95{qfP` z1#;-py`%SjCCQ=Vi_XV_!sO8IJ@%{>4>`ojwjPeQmO}zR_TCmTl0!p=rfw-5IaHsB zsZhysDF5rW{#$Ew6tzh&mpM*HuIDzn7I)Fn_I9qKP8}U7sHpWkEuo|3Q;IjREIRsJ zPjzaDp`&UtiEiOfM_C@?A3L1rD5OFt(`h#y*$eU74`|cTmV?U_FGV_{6#ee_MWCaZ z#mTgwIU0JmXWV9`kB0uu9wx@L($JM3y>CUTXvoj#Q*ufH4Ot|0SWuH`NVE5icup7% ziEVCbWqQ)k___M{Vrv>|ZvStOju8zNsZlSS=)ldqj2I&d(*BukC(5ND;*NAm zDw%>Nldp78*U6}@?{ZqsI2n~{#oDmC$tdxBB(bE9jC|gQzSSuuqrGaUldH4Hhupta8l98L^zD6$*GJ*%D z7bfROh_Q^B2KSTD+CBq;)m9Sfy{Y#iriz6A`?)Dv^fn3I+@WrqnoL6BSJZfD;UwhP zuZZV(l90YOEs|wJLeyx|_7Wo!ntw08qQfPjE;Zq2|NA&9Kf@ai>(VIg)v|u$xHJls zonNr%mPXdcrz$(^q>Zzu8vS(aoArv7Mz0@ydNS!Rjf$5$P6azl zqxk)8TC2OIk@u~p$rv4JWd5uEp{SBHVq?#JQ$?haP)e01?Kcq(_douT(@#V%wM!nb zUK3G4bfI@i6%n29$m8nXCZZ$E8{eywi3kfyFNAO+Qfj#3+2~0`tFrM-OB*8UIUYOI zX+%UdPa_MQxkQvL5_WWuOhnV=Bk+Dr3O%y_Qrp)hg-$NMHTqd1g*38X)-1(Hp;5zX zeS)(TD*RenDWfBWJkAy9sfkD-Rh7&qTK$r!uRcL*N0lVHqY~q1RHVmythkA zmMf0Jqgs;G*2R#%DlVqoEr#Y_lwICYDu&8Ei-h;bilIQ^TXBxgVrcXIRQ}^SV(91I z3+K;>h@s+%@b&ZkqR2bh|Lm12QN+>mSiYGoioU&b2z%fuiV99!EL0hZq9ZapgIEq+$NxwW9>)whZE2x!mD0K8v@$>pxWg)mw*KJKm2@VT^QB> zEO3bK7DiE5GP|#o3Zw1XiMF?5h0*f+sP_+?g;DjHAnT_(!YD-6r|p%9Fxv9eb$>^{ z5SnrPyQRNM2>rWkX8tQ#2>IPIYFPFZLYkPiiO6;#G~Umum!$}yqG&l_{t!gRm{PUc z^@51mz;A?I7exKX7pwON2%;R3pMN=-2_l!`fr{fwf=JGyTQ}&p0Q&f=<#F_D0hEz~ zZ%(-_fNXWjOK*h>AW~=1hGH85)E;!}{!^|1N~Wf98rJ#I{^|>NJG%LisPjK+1Eu_^ zVZ}fHS1dn@&GArPapp%m!SR-eEa?8?ohcEK@}lq|9m}=EpdY;G*W`?7Og%3uN&S8)X57# z|E%DPlb@>s)mQK{x-ZL;J}l!?!KIIi;+FA~H5tV(beHkb)pPfH2bORTWAEF4t}NmG zu?KP~JC<;lCc_(>C;s3c#aNkpv;W|>R+3je&Hv!9(-xAW<`;4E?*8~2cNX!N^p*>i z2NrQSR2Kb?XA%D|?`Gu0!v$P_I4)fH&;nl0@efuNTfntWI0SC5p2tfb8v8jMpU1f~ z8a}6G=J7jQD94gt{Kgf+R*&94^&8LnZ{*NR<=;4kr`@sd%^aSxtJ-eqpE+FoVu6i} z#vFdBCBZ`L<18*98MJ5Lg;_kx#?|zg-YmXy&CK}x;0zx6QEU6nlo@-gCM~7IlX%vAHrMvqFFfU}FC(7%3%?`)G<5nW9-2TR&cB_&14!S5H8m%2uj^Io zM=$-rk1*mFGKa@;hkGuQZ(tm^-n98U|E)3Hyn?rH+n-S!j5@ph?M89^7lmziAAiTS z_J%clk@${t-|efF_8Gw$4oa0~4c~BL-&E;Y)o(cA*o(Vmk;6F8&-7bkpNH_p(_ZPy ze+}VNO9n}HR|oOY^Ad3hlLL4^p+BN--vIvc%9Aq-_xka6*|?J%1^V$6!$(aGs27jg zWBXJm>??lc;GcUr+C8|nXHKT*_-7nW@46UV@CnyCKN>vf^bu!VNjhdp{(uv2>Dbq_ zcHun5A57V?o%qz#h%ISG9e96(3Ttid9p2vAK=CPU$D>|-Ae6MW;V_^w8e{YtXRMxR zbS`bidFYjex=M|BzaGy8u`4feWWCpOXuS@HPu$DF1GPAh^m8-zi)tL1+X!{vDaUzu zTQ7@AJi?;_W`$0)-@$p%Uxai{`u|9_iE1&$d1Bc7KU=P1Jnwx3sH%6cD7T##t6U#q zQGdh*ODxJUR2RB?FH8(Vz zZ^lsdx$nP-ud)7HTL{#=HjJk(=vr=OJ4P&PzoXmt4rAQiP|?Wlz_c0gPvH*rafH03)0tSp-}f#E9dVoq^^M zMsxQ)B+x#DF?zB++fEN-T6RsoS=4Wse%tRLw`bolFjI@vJUoJ#BkK$EeBUwaZIQ{S z@H^)4q&Opf?1hEU!$1U9ie+lX=7M`qTZv?E#p{d#?h)LpT@B$sVjKI*&o=Y zOaC?QR++%Ec*oxoUrk_n;na_xy?$avvnKs_#D8J`o(vrI`}Y_2^jq$fzU?H2T;DA6 zEly&?C(cHVSWIDF+-tF|xl`E0@PkYLPETP0`E`luyQZ!Uy!!)l% z=yS`~u#$aOjU)uuF+IWqn6Y2S%3mUr4@K*k(fJSN|1GU!y-Fd4)@&Y7JsZv4WyJ$- zUy>ed3FU#pZPzuq`8+U^dFP>A3lC__Khlzz*UYH@iuN?N} z1s(sd`X4fQA^6Q`O*765l^f=a{u||mrOWHJ52g9QU{usN-+&Jycgw!G>dptXcT`L- zB=P|t|Hj793O?9h?`l0H%nvP!Ru|KUwgti6+%#xZo5M7 z6@sD_IZ~6HXGwqqCJn@^Ap}S(c$XHJM}TgguawYc0>~a7&G4BafYb9? z+97!n$d+HvwlWcc-Y`+coxUQV^id{PFGB>}wyLOba1kiHrg@t_Dgq-jf3d`+MM1-6 z*S)oEqTut$QhnM@6dp=A6%Qqd!mksa8@tOzL8m3)QPWpZ2;@d+KNAvz$_p3EN;iwa z{BYWqJO?o_*p*Y2c3uo3^Y3qqdmsk2>*dcvI>dm_6>axf5rduowc;);akwD&!Pv@D z92!CgUl@mogXo8!rh0keuy@O!Ms~9}BwrQSOP>*kwrQ!?V)7C|vX-}8+a&?^583Tg zCnX?5T<5@0x&(ao+1}YzD*}>72|00xol3V!!r+ikPp+FJsO}7Q zO-qo3V|nNMW6LF>a4pd-Eo|p@u}j1>+*7t%xvC z9{=3Og9!W{DQiQaL{KAVV26^3U|N48sym+uo~QEbtSX6ck#Uc&xrGS#-j?jz*++!t z$S1MSW{EJi@#!l)f;5PIeJ=D+K^itBzA)oxOM``B^QAmfY49I!Yo$kg6cY9+io@qz6405TN#pIS()73WJLnSw>0Wb4-#yTRC0J0N`k{1nb-A_ zNN}!4{c~wP3Gx#*%X2D8P-n2kC9j19Lt_TF=zS#MzYe`=vm{`d?^YHkkil$W-;p>4 zG8`|o$zRhV!)3dJgCVA5xG!)>ZQ79xtz~W=K7M5Q;pTOBD4GlsB)<`tOfqb&JI(1X zCWBQ#n3okIgTL~*`%Rr>NNtN9Hy$HH+1dCF&sNFMp_y`0k3@mrU(!oU*%XjTxbcf^ zNP)i$@;B#MQQ+WMVF2BO0%2JtkJCaaaNX?5j93x{p3PV3#^qDs%iZT^)+#8lYWt!h zq=f>C0?qSNy%fO8+WzvHrNB|Q&d?!Y88|Qfx!OfR25zIir7kTQc;Wxe(8^Q>zA62P zXmXSR!M3UA#(pxuIXk~r6Dy@aJ{Pz?)H$ z34KfkerD3*(pF_a%1o(2j3f)2=hcMc*s@@ASKWNgKo(BfZoV91B@0*ix3o;T%R<=` z12LaaS?D?n`-c)`;Wu%2l1siUP|?1&t_oS$=5Hfq)glXyN(Zf*dS&6CH!i8hv$Aj_ z!tH&HFcqF}@FMFeP~q!mU)xeGDy&~Voz6C;g7UVo?p#MI7>`C$>3&o=ni=bm7EOhi z-SOAOGO2L)_m$7F#Z-88CtZFGr^5HYZ@7eXQbCwM|JKwf71W;;_Ij^UVb9SLczvqLNRy25{_(HA8od%Pyn>>s|X&@cZcDE*x2HG1sM|AUP z@b~9WoYD#!oW9)W#crWNy8gHOxxF-~_&z>Po29{rjHwN2!gN?Loj)n2KnMEo<gMAq;>#2!y;A`pzV)=5AG6L?N-Y}D?899)C92w^=EDyRzVjBkK<-txWUf4xT9)fDGn0J}TL#A)~WlKkSs8YDm z(&#G>pIY<8jHBh@Pk7<}nhbf6*Cw-00Sm%WHGh^@XvMF#u_Mq+U-y2tCk92dZ4d6*j)iUdB0JoLKNWQ zzvB+xi3)J<@YMCeJOyZ$od4`xp#Wpgm*u;f6+q0F_mE|;0&G+e&S{)c0E<@fJ`h#} z|8NqcMqUxFsMC(>YAM3wkBS8)CW`RxqS_G4Q4wahsxxza6@fgm$&(hX2wT$i3R5!_ z!Oq0syJ)c@gv?^xSX>dV7npjlb|^x%&Atc0ql)l_$L7c6iXtpOve)#MRszMtF1~{- zCD<PRf6MN(-(4Pl;HBWY<-%rGTgtG7nUlo46VBgYecn_;m1tz za*T;GNEAFaT6Iu{jW$(hgMF33isyOlx}-!vNP8 zt1r{E8SpDR%JZ!u10nE33;+z7CU**(Sp+KaM>q&Wr@WpA~zT4R8I zVD)4IK?Pd&7^O6kRKQ6E*Ai4zf$>G-cg7qQh-iO#DpFeo#EZ;G&kR-I=DC(93#KZd zdC=l-J!=)H-PArC;G_bULVsT?^-zJ{uU&fMek$Ns;n2knQvsf&FG21xDv;vgDw~(2 z0t};p%AQOWctZ9#NH0)`GMNeZ6;9TBQoOWl!k8MJh0N%KwvCs|v*KnF%xR zQUQuekX&4!3fx&-sHq!MfvxS~&TF$O&~R^c*WnqbJU=6{6MRnwi=k% zcb!NxRD+M#9mL<7s)5(3FC}8uYOrMPYGLlA2Jwu6pRpclAh+nAT<50-58jS!S_@SJ zqkGxJ9NRk@3*!vU9Gu2>XM+ z1FghWouL*rK<-f;%3W$;ZODJdrB4m|Nf#*B$J8KjoKVpc@npp3*O4p-gZn*NR}rFkw8QOu;>g3E}QrpXX*W zLDaDNP)|M+vPnj3v=Sz0j@RbcRWjkfI%6yiF=7Apmwjz5Oy~_TixTT%f}eQ{!@Q3P zYswaNv13d~UU+-7Zk7p*w+HyvR+;c`VON0xfdvrhuq%Ybf_A$vLuCpqaNFn_JH=+f zjKBbMqc#hod)!}n8?t~>KH^zu%7Qxy-awGZzmQ*pp_yXZf*U zWbDkPu22>P*DY{KF)R?e9^P!3#Dc7VRqupM7I4j@M4R$i@Kl+``>KolY7AS0__yvryphO^3vUHXOMm_XLW2-D^ zE4yjMCa}RZL3zrJ#D-sP1u3}-Y=|;oY4@<%KqM8tqiM4tZ%iZ5&X5gSb)}>`U2@Og8McGpj1gXG6DU%fYE)HXIYMSk$a!!{V2>S>A{Zm&y)oD{Nr{EurhvU?&@j z+#JG{``BP$@I}sLj14W)uFtY&+2AzR@7%S@h6&`pB2C~xMApbnOA-gf1H88%oB( z%_!plKMtr0@DG-Ra^T6AxahHH4(u!=sIikc@IF4_gEJlrHba`QPbw=Gqmr`>VoS$i7>;$AH8Ijk8+g!3tccu`P=)V{>7z=GF~UT3qPiuWr>e zh9|vExv=u2R=m)P3(4`urGt)KP;z@|q3pqhhuh44Is0*8hjdGFRwx(RNB3{;isr%* z^!BZE5*Ma24+L0dav{pUiW42{>aawN3Z)sUL;NTo-Of}Ub9~v=UH_qCvJ7iT2%*=(WiV}!Wz(t8{U>CX~40}+Fh0k8Zhr?JRHx~fD5}{#x`nc kfUJ@kOTbVAihei00#gmpf3yGCSt|`_y7N}3#!&}(h>FsJsqoQai%OA33ZbINQbZyZH5H}E z9io)fl&J9QAVXKI7{4zrOvMvu?QU=W*1>4MR;`I$c*sONVxe_WvLG`{wl> z?HytyuwHdk_OBRe{#whGs~01k>MPuCt{74C@2li~5hH*3EG!7scqboBC>3Uom==d~iC}1N()3-<{%u{r$ZAuI(42dX|V|Wg|w8b;lD$W@5xt zjk@S%i1RqhJgKB(zSZxOG8$r3^zEI@isfSD>R|d&dA=B_Z0B?esbVy`+vaWRv-ejL}-v9-8a}GLXLO6*01?3LM*D9zy22yif-tU(JB@pfr0zliB}@z zpD14a{ILjeWbzG7?~73V&D`9#F(Rayc&}9Pnh3=h&Hk|Cf(WHOJHk8WDME}8wm0*r z2+=eqbD@I>d8{Q`C_AzK!(FCNjd1^x{&GFK2vIvF?DSRmUaB`3SSUg~`#^aud8{k_ zY@gXwFVeJiJ7Oy7MV4Hi+nTmsB)FpfQe4xEl;%+{r&jbL!az@HQ(-USEL@eDn~QnT zv|zi$cgXo)9{dd&{-@6wz(PrF(>|VTbWvuT(%-I>FP}LqJDBG=DuGoVj zRAToMGu?=Z9)H{{#x-J1ll$Lp1pl+>i2Kov=tH;Xm7s1EbAWZd=S4SC(f9IEN$W_!1EQjyx8Zd8By;>i;xn790FY=Le! z@=h<43R1g+&eRH`G zvE(P=K)w(;HZLsvm?cDi(9q{5kn_$*=ah)6Z8C))r3gt$Hm^J`M7RIejI5bqOa_$`8d*rSe0v= zI=i|Mt<`k9c5@e^=1w)-{N9DwS$YSROS%xR>Gsv)*IlT-v0zbDRu`hnS{DW;bs?_h zcE#9e+@JIEMdfA8_b%L~JuB=hW#0MWCaGMLo@RFJihWBx^e2-U)E2ay1cMts_znlC`if|REVas)^+Vm@5- zP=L5O>o+APVcvc{rH{-HU7>>_XSI%|4jP+hzJTw2i0I>}^pO1NAoNea5=s(OK zs5|cIB0zASbn@f@jN`eJ<#qyOr!a^0btm@IKP)rLOn?}rpASbEVfzUsVbi zOM+MBQE{GgCN_0a*l!DK{T7k{sd%hT`Z2{vjG!Yf56AgPpdY(0cZ83)M{-TYgM4JC z*i`G@&qt#LMj7)Ye8jud+92uWBM8=6%yjb+hm?4KtB{XqEXvIc0Uxox9lWQ<=cAaN zGW4DfK4Kb0UHROOak9|xV;di(U0>1E)XGOh-f;VDT{!dw43zXJZgtp-RwAaq*KYYXvSv~HDYhuJryMN7mM3;J0Xo{;+ zjAuw(6V6xQS@)|E`xVTzjWzI5MQXxhXq(OvQMt8{j6daud&WzBV>L4C@6mezpeVIYupl?w!Nu9lK^Xd19R`UB~;b zSXYid)o=*!dC~fyn|Am)+&pcOXMuG?cU4#z;(b&d@iShJ=dN(ii(iR-^4|d%JyPGt9k)Uoe#C*t^pc)ZN-L~z#EX44Fe zTZ7+|V=({Uv9j*KPQ(_FGDqDpcHT%)-_wb>;kTc87-AjIWdkK@xUX{bi?%$zN4}e$ zBI!WP2kBoH)OH}ry7irr?>mrBw?*D~N(bV+sc&^=b)dB1%}-w*#Z}Lyq{jsFzM3qS zU)h1UBYNu6GwldYmP|J^wIkNf1EW{pwxgI8U>@amJCf8sPTg~=9nt2kYVkC~IP%3J zhb5R7>v~mM(uOz}4$lcLYePy7^B#XlXhU?KNptCmHpI=^HY?h&4aG!04_hSPhU^{& zWE`(=MM?@?*Ss=Yv0s_$7T;DBbG>>`!PZtJ>6}b^h!%R>^QOQlQFdB`r=iM07B57Do)4W?G`5R9j+y9)aX3C-P)MoVM>cn*S3)iOEUo5Et>3JOiyaauL*>et5F+JK~%$eUV^Qh2JOn_>BdXh>&DJ z8`@XIN|7@f3#~w$T$N^Y)K&rF-Lh2&%YFbBwcBH50~atuik!D{ ze*)TueM|rQ{0lH|XFiQ7t_HlChv6CdzXAMm=x1b34Iq}$i*++<0q--vFEptRq*)&Z zp10}&&)9dU;c5ebyWxSi7aBp@7Y1#>vk9cdo16+f+6-WI5DnP>!8vpHuiM@NIAQ+J zH|zfe?0cCTAI;~1n8?-X+EF~fsTmNiCjSFz?GZIM0{#Ko1;5pYME?Mr8~~hpb>1fH0iaV>D09PU04Ut>k8$%F0Mv8t zY9+z=+;>_rj@nB$@|2u4R< z&DYc)1aU5wWNwDYV-UD{yFJ!CGYF{Z zI#D`-gP>rMM%q;9AZXsyWAGq)5G=EHj#&^t2)H38)y$MZ-~sZz!ZQbf(pF(oR4(?N ze{zja{vhbl3H+)5VG!^xFn4s64FZL#u@!;eF#bU5ov0oJ(J!tsPBsmK?1)#<6|IAy ze%1G&#lk^wI`CtvOCQ#?jM|$rItVoH<=*){gXcK&MoU(92n0As3AQK>0p@w5I5*`X zU|+JiAa2U(((0oJl_T-CEfpkVy; zSVzzhxa!sRvivH(=bbfyqK5$YFsP}G8v-1k1^Nmp_};w*BS$lbK#_p^uOS!nP97;b z`(_Aa&zNo2M?*kqr~h(V16FidurS8JV}SLPW27}&F)*m zbtAZfHCd{pVX!Pl{r$FC!yr*QV(O;yFsSJ8vr(cA1A1TGxsTezz^9{P)054({=K%X z6ykm|M`MolFyPIdvW+<~343t)zETnr613}yI^}7Ry0XNXx^+EVBi1D|` zQH#U84RPbOX~Q5bH2XkdF6P_6Z2kUz7}Ogd&R43y{14romus-kJ=^O`+i+hzOS(-m z3^*Zs=hjZ+>MpSyR2TsT38iMnOGg09N$U$+YXlHUQl~fYOrO?sJ0}vsiD}N{@n3-*s1H7mfl;tyqqn#wdtLIwHG~ zF$!SG>WRxcM}g+@r=|mkMuA;qEGz2tDBw9?w6Y8y1wK3Mw6tO{e`}-fx`&v*o#$zv zH;UhPUVh4_Q9!@7z*4ROV-tU!gzizm7MpC`F+BSKWU!Lomu zKCbuQs@Uur13m}M9Fm>JKw3x(lj1uDXmaZF!>^8k0IOvd>WO23y4EbL;n^5q0B8M7 zGzM5I>1EfdabLdv?FBy89hB|3JTZpz4{S@AGY&k673syR#_``tl|O^}DQU#AnoOP@$!nh@SuvL2G3{KbZhrU+KWO;t9YbQTLsw#{8Sy3Jbvmkl1^# z)}F#RG4jR2d6R${%ZZ+)F$py9yOdCkCPBoUU)qX$CV>j$W7tx6jGOu+=z$ow*uJrj znZ)m(zpHoVBoL_Pd{1~k3DVr0RLg&0ozoOJ+&&4|C13lr#wS6=Tn`nOIa7dmY&aaJ zJ_VFoQ@(#Sm;%&_w7QwyQ^4csR>mgRDGJ;r|Ej z#ml2NQ}jC6!5~#ZZ5pUN8=sbJnFiS# z?!GR!ng){Px;w5jaXnLQZg>_~^(&@z*QWs|bnk$3>NIfF7AtaJO@sPK&S9<3(|{{c z=bmVq1_k>|&c}$SL1Jak_4||=P;pIUePhuK;F%=J9$PyDd^TCkS^{wY4e>m0?+gey zTc)q;J_8u`A;Oy%Fz?}Vg{o-WkMrmkK9~WlJozX5SGXVhOQE!U21p{zG6L#nfCsbU zgIxCveh!!7{ibF>+0Lv@jj{v`h&Q(BP$FQ@%2y$ciwQ{8msq`1BVaT6+`5pp7!RuE z>*^8EfAQVQ+84FT2fz6h4yPe6r(fd$)~3F!FUNbKTHKv%^r zS|_{+*uHw_wL|9!C`d3{trv{>6B;JN*9fRrcv~y|2KLXqwRLkm_9J~RdUYS4uiPSB z{0RH@zayP`M!*Um{?@El1Y{JiuBv=Tz_=5B{3Z?o=^qys)qW;mOyw}E=sN*9UbnB_ zsKGcfQEOK-0nKM^?C)>I{C&Au5nVV}cd@2|gn&Bolg!{@0%}TbLf$0C_N0c56cW^l z{uOdwjs%T65Bc5_v)+AWAu=mB1y||yGE|PO3!QVWg z+lUhh27I0Uq3t*c5|?il|2RQ{wDc!7Mc&xAa(dmEeLcuOtZXN=;XDNw7ZP#OCF7B*^x? zTzmQt3081B+#g7y+bo8el z)|V&4vS5qj&y~nfvf%(pa}gQV7fYpQEGI*$d2z%qkE>)Duvt|8Fp>-> zeFj3SW3ZoAeERrZGE{oP%U+a1hNnY|)wDCnkoTUHsQU!twg1Jgdx7;taS6-w$&l4M zv5{0rhTn1vg>@VqSX5*!|BDO@Tr_;1)RCc2*TqqTKV%pb znVwPDN`~~Rd#dXN_*|!)5!*|KIz&igdp{ZeE>WDTHA;r?)sTYo6y~*MPKS~yP)E*e zELoNUEi+yzW++f#VxuJa{#*(q4&0(gETq6e*SR$Jr4;Bm>+|(9Gf!f?eBfuM7uI{u|)dB4`m z{0arKQbMHF!YGgtJOAJ0bv!3~XLrpFoLfZS_&k;Z3zTzyhQ(vQ`@i_iBnqtfP8P-{!vwY7b)YnCwfQKTTvkjw>CDX8gFXks#33NlN(gB|BdLEc{L3t@|-Aa&m}wQtL$prpFj zLt9M>CSF~!;Gu>T^f2z4)20y`#IWK%`F6dbLr^|VQmg7p{q!k$OCKMvBf za-<+jCcO1Ro)nCsd&s#LNkNzz>wB^c&-b*b&Wsy_K+D`GvC~UsAY>n3v~&%|i8c4O(q$m$ z`s6bgLm5c-0-a&zGEnpHIT3re3@k7Ry86cv_s=?=Q8+FGd89R0j6G!_JG1eU&v_Z> zp?6_JW{3>THXUU)Mae)(^Y-R>cQH1$K4q0A1Gy}I-PNZu(C)CfyEqTm@4CKY#WIk= z^V8M)A_D`geTTiOah`3>*Pr~sIY>_VZG7xk6l=P?ALmw8oN$=Ld6pl}z9AzEd1=G* z%amjx2kw&{TOtdY19et9t7Rdr{O?nz4YIHx`dx3dfh@F4d;I5}8SY>IYu0Wf3t8{3 zcg=E?g=|ogKtG0Y(49qlPs`%($&9YgIax@Y9C;DR!g^nh97>Org^~=)`0F@)9>P9Q znu>M&RgAu6<9-#-`{yfJnEf-g@Mn=Mq@JqdfBPg0EB;Ium2zbvHz`oBCPvh7nM0G3uE+yWc0~Y$cm_SmrtluU(CC1hw}1{FrwZF;7V zLxoBV*L+DH6{_6a8(;c?3hNgx{TA|x3hg9s8`u57J}WP7`&5T@8|S&~;!z>>@uA3f z0_)!od;4p@BrQDn!LXv~rbvr%d2`OHZF5cFRFQeB#!X z4stMY;w#cRA_ub(e_-)(?BknV(|1A+ra9j~_R>cVdPHg_I-bXVPs9EAm*n8+vafwk zSLGm$Uo)pDQVzl=?q5l<*f)8$>V^cYAEGO3o`U_JDPDmYa*zFx8p857ZPDf1nM3==6mF2VWX1G?^UpR;~v4|^Z-IeYZj|9FS9=Z<08*W)nj7#{W3Fc=Jj#ofx5u&6|15U>ILd29N zPQ-o{A_KV9(6b7_uZNG zwZJ?r??c{3ArePE)97U2o;xbnc*}(7=ha^u3N(c%NNvf@E6PH&^XaZ!4Vn;zd#zt| zce)>m4n~Z(4)&t}-Mm<3em^StMX_Am+>a7R9d;;G_9J$r_h5ZNKgwyZxPJXhKPumm zze9oDkAhA+MENK6qw4o|PdKst$oci2EJ0*HN)66hHWbp2xVxVlH~aM?tH&fpsz*N} zUf*(ZaKrOZ&Ty-3KVpSe?Ac?E`#st|zF6OnJfwdds$Gux$EpdvnmFgO*{9Aq{iyEU z)&6f}>{G72b!E5@iKc0l+I)P&gx2In{?4LFr%Kxb-3S`gSe7-F>J| zTk%*V!28VsWq%ocDD|;lg3OXWlt{a*rK8e^tc?BQbg6xazhj}Z@^CMTt)H9H+1ZN{ z_mq@AukA$vr#H{v{;L=14Y^C#e(FUc8uzqqDxPHq7iPxxBKoBTQ`DQih(j(lHNVh{ z3LmTPV|n6z_jGjI1*5v*z*B4N)6sHI*wBj<<9^?KxV#sQnVf66rh)T=%^N(VvG3{D z0n70oMC7W)X$deM*=Z`S>p^1=ey=Mi>_O`O@aw~z9>h5Ap>iU%2NmWDSthYPi0dDq zC>M_Bk;ew@{yiu$g*Tgb0{cJke#$FQcgtXpFHqUhceZ4~n|1M-Ec! zLFFeeo86J>L2R`adirQLQg<(CY~ppJx{o^_EvV~8P_pUVslskVY!Jki=5!-Ae^|%- zbvI)EX)!I0!*i4`+3Qv};zYG4E)DF)-_L5B!BgExZ(H@62Dfe`k`$h4+SQHdz;o`z z7Mx=pq+`hFMvAk6X%UONQR0QyY?2E0=UA_LMD0e5Z7syE5dnf%A5Jah3lMYg<$z{` z0Es?rW1Ex+5RsWi3&<0o5C*ldku5-MhXt8OUt;`P6r}P{fWoVWi}~RK#5tS3qcafi zcj%```v_27VR`62cRb7L$CNkG5=`}AHfA3ilym%6w7RMS(D61brmVke?Q?P=j^7&xM)6NUOC*C zaFdThJnX(Shwu@t5iM{C;3I~+)mI9OkD}^sS@)g5xTNHs5)=21et2}o8PAL7G8Ojl z5fSr2$hXEl&*L|c&G|?%(Nx{ll#e``ly-}a_(;_MXIia1|ay{1+c>pM3kWlG`aYF=GjLBV?xE;1_# zd|yWWqWmcyVmoRU#E$dO*oy40DI+{Y_jLc*H^f8XMk5BN2Y4t)EjxlP0h|MBqNM1k6+E*=Vqn#nGoiG0JkVod7 zqw_I_7rZmN(~SG<3?{~#c!)Wx)ain;@KYA)O(V|F8a3-`;2~(oxg&#-^X9;F<$9bO zuO>I~7teN%vbnWbKNwNAw}yv8E73!`|gasO2$4$?!JTstatV4u8PBXEaTuk(fIu@`7$jLfuGB{I(7RseCLsi zLZv_+s&jg>nt2xQ*(YpV>4|lhy@!1d;rA(IRU0_+kZA7i%BjszN+KC8_#Rs$zb$MaO6#PA?5{@oFlzmh_leFO0%g8LERur`Qk3b zcI`N|`g0c|zPs$dl!Ez{@rwtdyO81yXL@LG7m7-cNLlBJeL3%@M(n$gU9at}qD@_h z-ri@Eva}0v^%I)IWUz0Z={^rpC*tZ($8W9aM4ajT8Trq6-fUd+>q#dH+3M@#c?t8$ zqC33@I&rU?zs=@O#A>-x7qp-gCEAiCFOPK~sG-xkv$_LC{ia8^rFS59VTH`*@D7wn z4)bzhb|5=Bsjr5{9f%cDw6jF611S!>1}|!DN8I}g<|{JWk?7?ghyKuZq-ZiF>$$HT z5k`8?V|CgQeeaxIfkSO5>WZ%M98MdeZ;RP#AJK-`r#se~Ikq9r$M~O33$ae$Poa0V zB9T?=N}04)#GbPyFwUnHF(rReO4ha_#feXbiDE8N^e!n?&Eldcx5u%1eq2<3aER2n zhKo3R4c9w2wV=cYmsXhAw;*PE(29Ne|4`!oo4Y?6{X@j;5}%zfn-TZGM}f9NGvas- zd6=GWLhyI#z59)g2)+#(U$LbTaf>4TDe(;`M0(@=MU(Xip33bDbgW05is*@j@9Gfo zZ092hGDd;)LnDX3h`#wL{o~78l<4}xHbhi|63g_>Qa08gPHX7q6<4bfyk+2_{HqFo zUz?Ff{p&5utSb?-uxr5WMg?Npziv?YR*pE&+%>`n{~)5#0?HgLLxeo7>eJ5> z#EGl3Pg+)tIA&(3?OG9nyOO&?n|>kAZlmz$i~e9fJt&?u+FIgAh@^d01=LWk4Lya*(Zg2#6Z_6{|;H07B(U*lffbKr|C3 zZ{~ggA^V=y<_j_b@%ctC>3a?cDHS>?#ODGSB5z){g#!qNzktE`4mhvI?#M3v35drN zaU0bN04x+~#mNELvmI99Xrfs6`KLEbJoIX2H4v2S5 zg}40`fTOneyhl$ZpnoN??amKPg^?(zT_}rnW0nm-Be5$@Tg2a*79Z_GJ07qy#=R!s^;6}`R4}9|v z&;zrq!xCGt-n1v*h6~C!@O1zC$px%LZ8wcAt$_V{?vjS=RuGcq@^)xd8(^yR=^sdG z11!^(dGZU}L1KHQ_f#~-O_qUlS_g=#{<-%|PzPW-)?expb^va|;bedJPGFbe7o%C- ziTjlom0ENGxPT{rC9?}~M>eiyEal<%80JtJ#RH0p^{R)ad4RL{xLuhCACwPOyQ)|5 zL87J_b-k$ou=~xn(USy#F7P{6F4GNIVXidD>IRIH(@LJz-8j$Ecbjn!C{H6T`4ig% z81kzuiSZsl&{plOa_R+y_QCoeSp3M1Xr-dS)%cdQ)HFbSu`YYQ9KP2SC(8Ro~q@0|08A zV%2OL09JkqmQRmi{92v#^7;TMS>&kQ`(gk%JW+dgo-+VEKJ{+2XdVEu<<46B#s>f` z*5Ttj)j{AE#*E&%dJxzhEA%n69t2iX@>@>04+3`3+Z()#gTO(XwJ9fh5Qy_OJ!yJ9 z2oyVZ(40AgfVCh@YgO$a$XOD}bnh7iB8RD?W3z)GiK;U(q%s7w7vEKM(H#QeZBp;_ zH{$uCb+gaTArRFRkiPuj5IFriz~F$-5U}c$HBkr|0`yzETw&A@IBH-|9ZeVl4u@!~Si? zT-*I(K+h4Y&p#>#so#{3rg&lf(--%#^I{;XZ%I@M5d%Bx=Jd&MF)&mJlFPg&2F}ms zXu`*0Ks;~rdHF&N>Uvf_YkeaIQ+X*rr$358=6i?QiT`l!0)AHGcQJr5Ck$Tx#(hRx zCihl~0aHJtK~#_LG=C8i)QWvsi(WyvWK_J!MDtQr-A9H&3chO=ToHE}k+ zCpiqbD-H#8%MSy(l~I`4++mP)O z;s$-=Fkm4@Z1mP)5LNuVSHXH1h_em_KC&AIy%YM&S2+&@=sl;t`VjWL+Y)j6#4ylS z2#5Q9hJj|rS<+^I+^eY6ZG3qc5Wm~Bc7+XtfS`*7!FPv&D*yd#*`r}#@#7l)r7;Xb z*8Q}sN*x9{b|2S7d>967uCKS}f5RYlT|u4Ck6~aJ)aRa9g7+4#%$cgeckIYeztMv6 z+k?2xf?;s|d99`P&@gEF;-s@_dKlE@PwQQi8UZFdOg2p`jR2b0R?9b1eMww90z|I1IX#<40H3W=e%c!Aw&;wu;|PGIULxhgSg%goW#Tmg=pEx)4=#*= z^0u6tIyXi@c=Uenp6C(43EBL27DBy20bep$u6zIuku4~sH1tMsFu4&^a z{`?p!lWj%;*NGC?J@}iEF8N zpL#R9A!ig=t@b`xd@=?Y*&{wX z)5n0G&6mGJoH4+zTCIYr#sE`1zAn9M3~;JERlkj6KF!{KRBjxwnd#lO^l`vEy)Lb2 z-8f*CIl3R&J`NNYJAGQXp;(m$FUAM>O|+iy&b1E_6qN?BnQk))*w5;lD-L1) z;7r1l-z4BZSWI4hYZAmdc*uDsOai8Z#)mhVlOSr5cy_305`+ZEEZf#H322pdUh!hA zA3LK%$V>sabVv9}ttr6nQBP_%#5g{7+{I=JsB@$4HXoV-9xdl8J3p-3(p@-osy1B1HH_wJ+>F7frnDyuaP@guWHMUOPU5OcE#BG|M0%T zPJYRsX<%oN-|y0i`C6mkrU^WMyhhurI0N|G&(D6*!PuNxJ$KU#h}!*g{GibF`~RX8}hl z%VC=Y0qb^t3cIC1K(07!GDnSo>VsPsm(vNzne_4gvmDQr?jG4|3E1%hJiWe&fI0K; z)NHUIpq(+ASG$vd{10kJTpS4qW6D1MI6y!LMJs{oaRRcwKbG0$jdM3#H9mbF=S6RO za5k8L)W8!5m^TP$p)@TpxmXC!#-0_8gP44SMFMlVX=B+bk&x#1Bw{DSqaybDB-N)e3UjiobL#_S(;XKa$ z64Oos(yxC{ALt=ql6qX*{Xx8^u<4lgIKI>9(3YfGd{2yIwyGovI{0~5`pc1^>bag% zrOG5or#ik+*C4^Vxgx9mS|nIanRDj84hd4{TFuSZCqZqZ%s{k;1l6nkZ_PC!!LjeR z%8j;=U@UV<${q{sGdq{)X@lqXa{FLA64YF?)iG)x39=;S*(bV@AdE^GOLxaP6UOtt zdf@)TweiK?BxvGh?9u2)f| zeeBb}O1d0Jf{gq~owo@jXm~NJwk4Saj}Dn0oBtN$?fNBdAMySe+Mk?5f^L$THY0hs zcde0Q`sO%hCvU{o~x20L&YQXE|v-z@*lbvDb6QD zQCR(@k93S<*A6=Bk|E=>Wx?1=GVC3kne)_;4C}0~JlwL03^^mQnJrt%koA_x54Ix1 zO#g*y3v9`d=B3h*;fVS9CycDz$dIY%Z}-=o47GPe+cQ1!zU-)bn-3XAE)0F^cAgA7 z+;5#L3nD}A8QBfS*T^vSA|vDBO)`8Ck^H3hE*bjeN`{&|B*Pp=@4$tpWEeXoeT4mj z3{B=wIya`0p~HSNhlzADbk4S}k;@`Ob$c^6B7U^z8f&49UnLR6`6zD9tQ|D)g^Afrq6+2-6Itpu^3)Yu% zdmRr@V7bcjj9Z6sUhy-ZtYbK5=VV2#Cj}~Qm%b+$zC?oqF<$-js5ef?50V5@Pq=ijal;M0} zrlC_sf%ND4)a!pKFm*@%MPVbpZ^P4#9$b9?zilL82j-&=M_w0DAY1?9ljZ$b-`u3w zGKk;TT;IOrQJgz&zV7lAem~?KKs>=e^`*JPGvNIJ^S$9uB!=Q2dI!4A$!o`C>82~8+MCN zQQ;W+9JuH#?j6WRn=atHwyb;+5Q6#b@&VOhc>XGm*nO7@?M~~`yB^}6tOFV6`HK;ypl(jfC14`^IpnIK#}goZI4wYpx&iL z=`R;bz}Usdgn7#(Afa9Qs%NzX%!ycfe)$FoNOxH;8DJ&>qt3iD`nv<~IT`g^I!eI8 z)nOXH4&uD$lTV#Iuy1^?;n*1o$UWe2I5iOal;+$y5sLS$N0%Dim4Jz@HzO6}uutta zWBi2#wA1%G)&Euk(gx?;7H0p?M|4hdB;c4;*>~k)oNujgeqD_ObRKcqeV_&JIc$4! zSAc!xXWkYKNx+bu7b;|CaNp~9uJ$xZ7*HDjK0#R$Mmdjc9@LbCP%XmWS{I|2pe$(( z)>r;6p_oeI-}Bbe$1NqHvu=q_v7IE;8#QTL>naJ^iahGGW0FvmyUanFB?(zP_|X5N zB;=HwzsI|d`4p0z%Uwwr;-Xwq94840dc`Al}328z4Gx0xg z{`R0O)iO!QAbr|*s}A?86}_5m!}mzWc>DE9LaxLhi$5v}%QMsbT**?9lYa%2%1Oc4 zG~Gv=)i9b{Y<;^}3YK3xL(wphf^eDX%WLbUAj4s4R}aMgJ+b%p?7+PK%*jkgDOh;u zwXrHw3W_3Ha#<&(AWQ8pD)Pg=f7udRmvLT8%wE<_DHz^<(fjLtDahA%TOb)P1qn?p zEt^y+$nAKv<>p76!??NSN3Ik!DS6pGT7Yx*-WXg~Aq7+Gb649nV*L^4kZ&i>J#-XA z38i4&MTOld<5JMh#=b9;LWAMGfx%zoX^?&GoBL-q8YK3cO}<-cUoa~$IX{ov0&G+5Z&?7igz z4T?<8)n{C#LHaA^GL1+YOif!->J>wSbuO8fAL21;_sX`v!o2pS81e^<&LggK{=G#GM8`$~T?zN_=fA5@M1HDkGFc~JBJ{GE+Ux@a)RG+QB~AM-6~|MW-k-Hum1 zB4@FFcwAT|B@OxO{#uX~rD2rOl%1NoGz_pdCacgfHfuQ!>q^5qm29iL)zUCWwxrR^ z81qdM@>C!V>38cJLM-vT;I4VcE@?;{gxgj*N<($E`sRaf($IuEPxkx~X~@#M`P=uT zG*mRWr{R1C>!QQMO9G@J(}ZxX4#xdg&9deY67xmZ`~H){DN4cQK#x(@u3 zhTLTN?(Zcymvm~QLZvk1B+st|e=$$lkml4R4a?JVIF7B-P|w_V>BcT;XjSVyPVK?D aKJK2`Ld<8>#_bkMLuch>A4wT{4+~-{9oaj9^mR5&_W^A7kpy}-5=j5wtyiC)? z)ksrknWn3k?^$2RGsnGron8J{f57*g3svps?&$486<6r#>gwre=`0Ie_Wz&g@~pe9 z9SN-vSsl!vd$!`qu^1K6jjc#cz0%S>zZG8D@x!`3EpSW`kpE~c$Z{!iG{4@0%J=wF_I@OG_Yd>$8G&SSU*Q(!x8O@mG>76()pc(7dZqH4zYKG7H zZ}u-Vnz69AU{rUi2@Yo6Nt&%q$k(jRyqD92Jq5m2XRbHF;&{ZXLc1n(DEen{Uiu_N2 z)#Byu@gf2wS$dR;)HlK>K+P%nMk5mR|2d4J5iUlDF8%rY64rkE?{L^Jp`CO0mZslJ zNQt-J*{=H%gTe)s3r89d?X)L4G`9iIV;^}uIn{vA5~iO{tZcwz&wpJNpXy<;T|uoT zw;nn>8(({zsRz@i)HF-C9)EeODuaL2fm>}pF~+XL%%)>mLIHK)_kE~HM;($blIOc; z*FpUNSL#J=Ef)NfR+GM0i~QhHr}>9!G2`iu@`RIP|AObRX8YJ?3q4X37t}8pqNjagojm!z`G z;E>r4?!z*iz4{{ArzAm@Y z=HvB{cK*ACd_-?>6#ejrhlhEc7oGcfD6xHg)w+&{lw3~?j4Nn>@MfTYj=?_~3$1E(sx5}b{18nZDh!Tfp=v!@G6@Gbt6 z1$(#{eV?^uZ9Q-pw`6Ojr3MA~H0;${C{X}UiKK}95Bab^+orL!EFY&# z)MtK6%*RC!;Z^JW^D#uH9sF}3A0t~uiZ<&zd|e z`8spXoXk92p7uX!dNYrTqt5KrZh3GKyfYB&$irXRkAthU@({XKM9Nw$4^KJ;r0ED3 z+MN0u!p&Sf;@%HWVRK<2wXsYtfeT44BhNFK3%7#3{%I$XJiWpJ3nuVU&G_zuA;7GD8a$K zQq@a=NgM=c)yY7rZ>ff$j`*^$*86sNA4;#(N(JAO9(69y8@& zoud4I83r7z*MI4N6&wtNZc$QO#DTuwwVE9g96b7LFqk34foMeGWy3Kx)c@7jfB(Qn z=`4l-$l*y~%H1#Gm2W&{nEv(d4-_sQHmHcB?-_x<;rjnL}NDpsj%+&(I&?Ha?z zjJ_B1Pu`~Vgc$AJAIL^ZVYaHW4;yB`e<|>t+1Ml(uzbrQHcsXzB*gA!!;3YCTfT`6 zpF8muReEe_{E|DCsLqD`emfyEc{UDuIXx&4VZ&s=?)bk677FUjH%N}K@MlE5^+OK} zA3S##-)>?d`poyPuY49ZJ$Um|k;%d?uYo=DGFVvk=SgB=3=1)r=FB$^WkJj;#^A11rr=9Ey}>pn(}UD@%-l>R7pyw?dS>+xj-0-*haEB=B&Aj$?NmRTSUT z(XE_%lJ%O7jtRZ`Q_XaQA8gGrsiC9q)1zFCQaXmt2B&Cp=(tjsd12EFIttw9+&h&) z$J+$~dx!)&95j3viawy@$3e;Cfnju*9ZYc(zfQ;L#mrfSm*}udI5u+6myR*(*@5>w z=-8QJq*!o*j)6(OlY|`|$q(FWZd=n)^YKuPjs+d-veb|N-bM!*@@)6WMmqN2TJUt? zIy%hj>S?aJbX45(PyePx$IQY{k6CJT_-?esU_JXKjrE0s#Fs7lcGa?_xyQ! z^XbUgSMYN6JUV#CUaR@cqC-J^UG%SM5@(*plve&Faj^Je%)4xd9iHU z$FC$V4vq&leJ0^XueKfgNWzM7t7GpFN%1^^*8?QtFAT`u?;}C3e(HDT9f{W^eK${b zlh{_AQWEfn#O;n}(n+sK40lb=uI(gY8&K`{r=5iCir-3_Z6xlRF7e*mLgJH%b(VJ% ziH?etxpx{#{J4}LoX|jGqvxTynRO(7mItZQYDl!)QY&Fsk+7+J^}eWr();%9^{O%w zJN@ctZ9EcP(jjfbB_#f)7|=zEN$gd%i!vxA@x4S<$Ty!v-R<%kK9`d3Ny*aYkQhsP z5|+y%5w0J#bT^aImyoF^%plRWw&my>lEg}l$$xb;5-NgUyP`KkDf zM4YnqG)l>7W7E|r7^@rbUSOrm(U-UYV=5_|05@7^6x;!-g;rX_~N zf~@jSllMq85PQ|jBS`cpij->HCXti*uSO+=goK9qZTb}w8;+-ncU~kBIW2rB+Ly%8 ze*sQIr$}T;kB)RYQ}Iq1zUq05#H#7h!E_tSA0khKLM%zh{Qmc8z8MK-TDQ8H35h4x zvQn$pQ2k#>_6oE}C@<35thvaqF=%B&9vgB4sJq_*r{WVcMO0Lc8!vi)Aj`uB(Kg^*)&1zXp zd-8yyG6r@p4!2MTD(2YU@E)&%j zm!A_DNfz&yPbRRH8A^A(N8lH6(CJ(Vfyw1bxAt5lknre-+=M5AFSOJ0Atwkl=ufwe z9wN}5wyI^j6#;d%o^>~O67WgeeeL-c0{y31#qjK6sSbfFi`p&xR}-+2vs=(l>5bd^T)u;{Gtc9(=61@iszqo2;>`q#t0%)P%_zRD zo+DM}1g4iR6TU|AO-&t`?PW{JJ(pwLI!f_XZau}P#`QUC^q%BN0!6lpBTilfycLbE zvd$4`-LhiyWB>vE8AW?_g9)s3)=4$LMPPv4ueR+j0V&m5Te$}WE*O@16~q&`Pv>r4 zMfp>y-BJ5wI)P*R4~Dp95hxjar?&hBfed>5)nqyW?$RoBunBAnboXh}z3?xRf@w@J^q;Le>zCx`9lJVdh#1?QS&NmURrxxIDuu&i}!uL zNubv4NlD~&DlU9o=G`Cyr_*F2M=3uq8(y26Pt7|ILM!ek<^T6r>J6XyQRA|9XzlVL zu)ihbTa-7&n~_piPsK@O@N;N5h0KQKR4Yq&%39M4R)6{jDfM7bl=m*6k#I^FQF~uuF{Y6%KC}k(ngrjqZ znlBB%YZ@b{@t(<^6G4q9;iKsiw-}1AVb6JID()X+qa4E%3HIuVjo++V0X{3=fUhnZSZkyj~ycX`EY`%-aemD(Kffr{6~ zH}!tQodouF*gm<^OZ_*qN`-TW2?QD^ieCCj&F{JL#^0#_{L&TktMlj3u*mRLzzi`O z9!xwYY!*`M11avkK!JvDA?H2xmeSDwiYuL`L4)GpzMRZeG-|(<_nt|uD}#PJkJN&O ziKmn0b9T|NX%C0T-A_Yk@rd^Oqcps|^4%-UjRwOj5*pdQG|W!psNxE>9?g`t+DWZz zM_qRI@gLHte5gw!&AEbW&MWf-Yi^jh6Vj8Z<9~pT{t(OZ=z03XmiiYN8XCB`F zNQ3b4v}w=ZG)Q*vxmV|s5R%ptsiM|nH(43o^%~SZlpOXOcaC}9_oB;lZ%FlFkxq3=1|3^o?SdX^PLMp%8px=<9#sGZ6 z{Id)gC|5Syer*Q>s|^HammFr`MuFe<3my#k1wBx?9>9RKnBTzqa0Y&x`v{^F7$`Ls zOyACB;BnNIOgSn~)s{VdWNjS-mIX78z3pP4ZI09mu@4L=6FolcF$Nwu>HgO-lL?iX z!Y^GUnebV>$kA>Q6K7L}j?guj)cI5*-Bpi?{sVGv&Te30%cuPgUE8SqIxbWYY01R5 zc|yj~RGzI=8&c47l!=V;cfx*7Oq`>icCk3gMAv@@@;%Qmaqx##aJw&+&%3^Aia1Z@ z^QRK6;{2H~jVx)M3}8Y5`+598svKe2`27kK8g)_`4}+M!3Y_%jF-( zKcL##Rx|ldl)V44l~3EL{)HoI>|d0=K+|`2jTe~MUZXDRe2xk6{m!=wDZ2p~OX=^t zn2?=^C7qs3+>CrKmqqc*xp8;zAy)enqyR629tD2$xuVqZwD=m>Bmr&zd^Y8g{WhNf})Y1P=onJidGv{4bWP%$K)b6Cf z#HI^!bK>QhaLP|K)1)xAcw(mvg+hE8J68(F6f!=lQgZ1n(Or9}ekmKg{6;7}6S6-~ z%vsFDT@N+YhfA4=`;z)7Rh9CSf7m=tiqB%p03$VRCQRlm+IDXh6Hhp~BB$3dF(Tr6 zpJBwrVFT-~6PuVQ`ffYxA~ipT)_iaIV$Ov1`J~d~ebjvF%h)kU`O!dFJoLB&#s9sa zP~Dx0)3RZ+b-kHbJJWgn<%?9Dti!_RT%+chri^gSZ6>buBrhw!&jinNI&|zY6H^&& zPDeACh&pZO{QCtHmoIGaui;Yj>CIe60iTH@D^&|58kqRA^}E)M4$A*t4oUibOuVT3 zuSez!6BXXM-!y+y=fx=R*DkYI;7X{~R7$YGs`=HjMTv#?7NzGJsPk#OV!Dun9t(ZF z?1`@?EL^oq+~c>C1&>YN8oI4n_^Cp?Uw)j0;rTwwCLYxJ)jiW&_8be1TZ&pUf>_Yw zj%oGYW?}GxGA%!vg^!nC>uMyj(Cz!!Tj41SpNh8zr@rraq#IWbiRDwJN)7hmT*=wdiAG1(yN)(Q_0!m!I4_PGQc;yPf)!Tzj-zo&nX5e&oX& z;X)Q1?9;S!N?2G^dYDkB?3HJww)@qvu%XvRB9`*kZ0#m~IK}&m=v|L})VO}6uNHYX z$U^mp>k)dRl)oeoPH+6n!ht&za?`Wfkm!)n^H{*9&i#UMe`PiVS}XX=wb)3ztS97Z z$cD`cyNos4*wE**_uksiM)V-P=cpqa4NLr7v%T4v@S2uCb(IZTyr3aIijDvFI%Kb= z?r%c9#jVuoY>Y*OKl3VMW9NBRok$xSM(_21d>W+gcYe(qmi)s;3;ATwON@if?ekB} zUBW?hqMJsGE(cQIURg9z_f0zO<3>UUIk5e7(A3F;gHyL8!o~wRxHwc`ly{GV%vpOp zvNAY`IyAbkB9FSKGVWR>_L7598}6n{eH^gXW*w0F#es$(etC-+7vX}q#)4&BD5X9X zt~205`Z({* zi&Z`HAd!ARM{qR{xumjbSZp4u2S+>)yvW1NRP`4+6?sUQt@2OyO&;7HERUA{kq4(7 z-3~3$e5hMndfBVw<7bS&KG!H8Q@>i&VU-VK|8w4xZuv0ZS#tDmP(EUxol@Txmk(Wc z-R=QeKE9t|{2HpsM;tj^akxJpj(qdv?Nj+!;Y@1e%NKz2x6ZFfpTfBGRR{MJpg7X% zRfIyVcp>D4Z25Z^7vV?L zme`DKMOgF3OJ>ls2rEi!1Tqhc&}pwMSX)|zp?B@FJ3kd+s*ksBuY57;WHs7ih6hpU5AaqKo1Xm=3!rtqbz%M`Zj=oC?2u;h^=5Zwm z8`SF3tS>?0FD=q>MkzAy>U|JfREmu^H(Zu9EQQ}mvuXEzRGEHZz3k~yIGL_6SxDWl zzt&qheK>=@efw%!|db`)A9XIdKs29<>#yx zltH$Im-X{Y8Jh0CJs%@hj;eSikp)`i_+z@5ePVk#mbZ&u&d?RXvJ}G zNG!+wgd!)={Bl%mt$cU8y&QS&85euLm!taDnbqQw6$z}c1#DKxOpI=)-hrkp zM4q3hfGbZzYv+{;h;MP+TM=J@I|7qdO;!c+b=Uj)2`aGosqFULPZbb)uk*59xDxJF z^&fw!R6=#fnNFFFm0+a{jMf~g#GujW+{1pAFungaIs9%V=18Apw`NtsBRkv9sG<^q zs~mq9zpKRdz$F&mla)ANwENTng(@h|8!Pl%TZNFtzQ5b8s*wDlO!emJD*XFb9~N<^ z3fx6Ytxs-s%KVXZ>n;TglaWZE($gGZ>dJ!(hocK zov4PSQlYKG^=jNddLT_HqZ+Z%f2VF&QSWmq1@_$GY6Lb1_7c?l-3+O(yi03pkmj`R zpxWUY6nlnAGJ|R$`#Aj6x@R?L-W~FX(^!MJ?>DSA|EYmsp5yCRYPHZW9;k`hTMMzZ ztZI+TwFr;$3-HOVMbh3&{?EH=VI8byt|?lF1v8d84sEDImvFw)_?bGmkt$rfv^vZX z=}}wORfngx&zg5FsK?g+k-oP(>tRrMT;^SHJ!;uYd##J>(P*IX*kqy}&-8jY3F{k> z5bY9v*1rKZo#9>l{05voIp@fYsRkU+8Fk=pc?sX6s&fzBe2JMhhxR(We2MPwqS_5| zjR-v@?ElE25yB4yQsp^~FuB!GVfMQbiz5=B&sP&bL}J_`#aw_kSNHTzUjc+4J&R*f z@4S-<^ac7A0{mO?a(vHM0mhy;rNhochUZ#t}m0vip1L-CF9{ v0cW`udQ19YnNtYy~q+9WSSCOm6 literal 8080 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 diff --git a/test/GPR/data/mesh.npy b/test/GPR/data/mesh.npy index 3c26754966fd265d6732d89f0878e726455f51c9..9d7acadb6066ae5926c79abadf3252fa9e876bf8 100644 GIT binary patch literal 8088 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 A%>V!Z literal 8080 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 W8umS!>t4Bd8PAI%`!ebx75*Pug4R3$ diff --git a/test/GPR/data/rbf_std.npy b/test/GPR/data/rbf_std.npy index 1227d8a9203f3f32bd8128c36d45de92ed14b278..7b96f112d098f288a037399a1115630a1f81d362 100644 GIT binary patch literal 8088 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 Date: Sun, 14 Jul 2019 17:24:27 -0700 Subject: [PATCH 2/2] Reduce test accuracy --- test/GPR/runtests.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/GPR/runtests.jl b/test/GPR/runtests.jl index 456e9b8bc..4d0bd8874 100644 --- a/test/GPR/runtests.jl +++ b/test/GPR/runtests.jl @@ -89,11 +89,11 @@ thrsh = gprw.thrsh ytrue = xmesh.^2 ypred = GPR.predict(gprw, xmesh) - @test isapprox(ytrue, ypred, atol=1e-5, norm=inf_norm) + @test isapprox(ytrue, ypred, atol=1e-4, norm=inf_norm) mesh_, mean_, std_ = GPR.mmstd(gprw, mesh_n=101) @test isapprox(mesh_, xmesh, atol=1e-8, norm=inf_norm) - @test isapprox(ytrue, mean_, atol=1e-5, norm=inf_norm) + @test isapprox(ypred, mean_, atol=1e-8, norm=inf_norm) mean, std = GPR.predict(gprw, xmesh, return_std = true) @test isapprox(mean, mean_, atol=1e-8, norm=inf_norm)