From 608cafdfb70e793191b43e1d6b15ae6edd52d34b Mon Sep 17 00:00:00 2001 From: cfontana00 Date: Fri, 7 Jun 2024 13:55:27 +0200 Subject: [PATCH] cmems/manual --- config/cmems_TEMPLATE.dat | 3 + config/config_FUMSECK.json | 45 ++- config/config_TEMPLATE.json | 98 +++-- config/variables_mit_FUMSECK.dat | 2 +- config/variables_mit_TEMPLATE.dat | 15 +- datasets/CMEMS/get_data.py | 6 - datasets/CMEMS/get_data_sat.py | 81 +++++ datasets/CMEMS/interp_cmems.py | 98 +++++ datasets/NASA/.interp_modis.py.swp | Bin 16384 -> 0 bytes datasets/NASA/interp_modis.py | 6 +- datasets/RIVERS/.compare_rivers.py.swp | Bin 12288 -> 0 bytes datasets/RIVERS/compare_rivers.py | 77 +++- manual.pdf | Bin 1305778 -> 1440213 bytes modules/__pycache__/fun_gen.cpython-310.pyc | Bin 1796 -> 1835 bytes modules/__pycache__/fun_io.cpython-310.pyc | Bin 5218 -> 6389 bytes modules/__pycache__/fun_meteo.cpython-310.pyc | Bin 1185 -> 2419 bytes .../__pycache__/fun_plot_2D.cpython-310.pyc | Bin 1293 -> 1293 bytes modules/fun_gen.py | 7 +- modules/fun_io.py | 74 +++- modules/fun_io.py_old | 342 ++++++++++++++++++ modules/fun_meteo.py | 55 +++ plot/compute_data_vs_sat.py | 172 +++++++++ plot/make_plot_data_vs_sat.py | 0 plot/make_plot_section.py | 2 +- plot/plot_data_vs_sat.py | 245 +++++++++++++ plot/plot_meteo_field.py | 120 ++++++ plot/plot_sat_ts.py | 100 +++++ plot/plot_transect.py | 179 +++++++++ plot/time_series_data_vs_sat.py | 184 ++++++++++ tools/{ => okubo}/compute_okubo.py | 67 +++- 30 files changed, 1901 insertions(+), 77 deletions(-) create mode 100644 config/cmems_TEMPLATE.dat delete mode 100644 datasets/CMEMS/get_data.py create mode 100644 datasets/CMEMS/get_data_sat.py create mode 100644 datasets/CMEMS/interp_cmems.py delete mode 100644 datasets/NASA/.interp_modis.py.swp delete mode 100644 datasets/RIVERS/.compare_rivers.py.swp create mode 100644 modules/fun_io.py_old create mode 100644 plot/compute_data_vs_sat.py create mode 100644 plot/make_plot_data_vs_sat.py create mode 100644 plot/plot_data_vs_sat.py create mode 100644 plot/plot_meteo_field.py create mode 100644 plot/plot_sat_ts.py create mode 100644 plot/plot_transect.py create mode 100644 plot/time_series_data_vs_sat.py rename tools/{ => okubo}/compute_okubo.py (65%) diff --git a/config/cmems_TEMPLATE.dat b/config/cmems_TEMPLATE.dat new file mode 100644 index 0000000..d044f40 --- /dev/null +++ b/config/cmems_TEMPLATE.dat @@ -0,0 +1,3 @@ +# Model_variable CMEMS_products CMEMS_variable +chl cmems_obs-oc_med_bgc-plankton_my_l3-multi-1km_P1D CHL +thetao SST_MED_SST_L3S_NRT_OBSERVATIONS_010_012_a sea_surface_temperature diff --git a/config/config_FUMSECK.json b/config/config_FUMSECK.json index 2b393b1..d9a50b5 100644 --- a/config/config_FUMSECK.json +++ b/config/config_FUMSECK.json @@ -1,18 +1,17 @@ { "_____":"GENERAL PARAMETERS", -"date_ini":"2019-05-01", +"date_ini":"2019-05-06", "date_end":"2019-05-15", "outdir":"/DISK2TB/MODEL/FUMSECK", "diagdir":"/DISK2TB/MODEL/DIAGS", - "_____":"RIVER PARAMETERS", "french_list":["Argens","Var"], -"italian_list":["Arno","Magra","Magra","Serchio","Ombrone"], -"river_ini":"2019-01-01", -"river_end":"2019-12-31", +"italian_list":["Arno","Magra","Ombrone","Serchio"], +"river_ini":"2015-03-01", +"river_end":"2019-04-30", "_____":"METEO PARAMETERS", @@ -40,6 +39,7 @@ "_____":"CMEMS", + "_____":"ARGO", "argo_ds":"phy", @@ -49,22 +49,33 @@ "resol":"10m", "fig_proj":"ccrs.PlateCarree()", + "fig_sx":"8", "fig_sy":"8", "fig_fmt":"jpg", "fig_res":"300", "tight":"True", -"fig_tck_size":"10", -"fig_tcklbl_size":"10", -"fig_lbl_size":"10", -"cb_fraction_2D":"0.02", + +"fig_tck_size":"6", +"fig_tcklbl_size":"6", +"fig_lbl_size":"6", "cb_pad_2D":"0.12", +"cb_fraction_2D":"0.02", + +"fig_sx_sat":"7", +"fig_sy_sat":"4", +"fig_tck_size_sat":"4", +"fig_tcklbl_size_sat":"4", +"cb_pad_sat":"0.12", +"cb_fraction_sat":"0.02", +"cb_pad_sat":"0.04", +"cb_lbl_size_sat":"6", + "with_currents":"False", -"with_whales":"False", +"with_whales":"True", "_____":"SECTION PLOT PARAMETERS", - "fig_secx":"8", "fig_secy":"4", "sec_lon1":"9", @@ -77,6 +88,16 @@ "cb_fraction_sec":"0.025", "cb_pad_sec":"0.06", +"_____":"TRANSECT PLOT PARAMETERS", + +"trans_ini":"2015-04-01", +"trans_end":"2015-04-19", +"trans_depth":200, +"trans_resV":1, +"trans_name":"eddy", +"trans_file":"/DISK2TB/DATA/eddy.dat", + + "_____":"PROFILE PLOT PARAMETERS", "fig_prox":"6", @@ -87,7 +108,7 @@ "_____":"INTERPOLATION PARAMETERS", -"dump":"0.01", +"dump":"0.02", "itp_meth":"linear", "cmap":"viridis" diff --git a/config/config_TEMPLATE.json b/config/config_TEMPLATE.json index b461f28..d53f406 100644 --- a/config/config_TEMPLATE.json +++ b/config/config_TEMPLATE.json @@ -1,35 +1,34 @@ { "_____":"GENERAL PARAMETERS", -"date_ini":"2021-12-11", -"date_end":"2021-12-12", -"outdir":"/path/to/OUTPUT_SMP", -"diagdir":"/path/to/diags/dir", -"river_ini":"2015-01-03", -"river_end":"2015-05-01", - +"date_ini":"2015-04-01", +"date_end":"2015-04-21", +"outdir":"/DISK2TB/MODEL/OUTPUTS3", +"diagdir":"/DISK2TB/MODEL/DIAGS", +"rm_boundary":"no", +"damping":20, "_____":"RIVER PARAMETERS", "french_list":["Argens","Var"], "italian_list":["Arno","Magra","Ombrone","Serchio"], +"river_ini":"2015-03-01", +"river_end":"2019-04-30", "_____":"METEO PARAMETERS", -"meteo_ini":"2015-03-10", -"meteo_end":"2015-03-11", -"day_cycle":10, -"n_cycle":6, + +"meteo_ini":"2015-03-01", +"meteo_end":"2015-04-30", +"day_cycle":2, +"n_cycle":30, "imin":"500", "imax":"600", "jmin":"350", "jmax":"450", -"_____":"ARGO", - -"argo_ds":"phy", - - +"_____":"MODIS PARAMETERS", +"modis_dir":"/DISK2TB/DATA/NWMED/MODIS", "_____":"DYFAMED PARAMETERS", @@ -39,48 +38,85 @@ "some_par":"some_par", +"_____":"SATELLITE", + + + +"_____":"ARGO", + +"argo_ds":"phy", + -"_____":"2D PLOT PARAMETERS", +"_____":"PLOT PARAMETERS", "resol":"10m", "fig_proj":"ccrs.PlateCarree()", + "fig_sx":"8", "fig_sy":"8", "fig_fmt":"jpg", "fig_res":"300", -"tight":"False", -"fig_tck_size":"10", -"fig_tcklbl_size":"10", -"fig_lbl_size":"10", -"cb_fraction_2D":"0.02", +"tight":"True", + +"fig_tck_size":"6", +"fig_tcklbl_size":"4", +"fig_lbl_size":"4", +"fig_title_size":"6", "cb_pad_2D":"0.12", +"cb_fraction_2D":"0.02", + +"fig_sx_sat":"7", +"fig_sy_sat":"4", +"fig_tck_size_sat":"4", +"fig_tcklbl_size_sat":"4", +"cb_pad_sat":"0.12", +"cb_fraction_sat":"0.02", +"cb_pad_sat":"0.04", +"cb_tck_size_sat":"4", +"cb_lbl_size_sat":"6", + +"with_currents":"False", +"with_whales":"True", "_____":"SECTION PLOT PARAMETERS", "fig_secx":"8", "fig_secy":"4", -"sec_lon1":"8.5", +"sec_lon1":"9", "sec_lat1":"43.", -"sec_lon2":"10.", -"sec_lat2":"43.5", -"sec_dep":"600", +"sec_lon2":"9.7", +"sec_lat2":"44", +"sec_dep":"300", "sec_resH":"0.05", "sec_resV":"1", "cb_fraction_sec":"0.025", "cb_pad_sec":"0.06", +"_____":"TRANSECT PLOT PARAMETERS", + +"trans_ini":"2015-04-01", +"trans_end":"2015-04-19", +"trans_depth":200, +"trans_resV":1, +"trans_name":"eddy", +"trans_file":"/DISK2TB/DATA/eddy.dat", + + "_____":"PROFILE PLOT PARAMETERS", -"fig_prox":"8", -"fig_proy":"4", +"fig_prox":"6", +"fig_proy":"11", "col_bcg":["g","b","r"], "col_phy":["b","r"], - +"_____":"TIME SERIES PLOT PARAMETERS", +"fig_tsx":8, +"fig_tsy":5, "_____":"INTERPOLATION PARAMETERS", -"dump":"0.01", -"itp_meth":"nearest" +"dump":"0.02", +"itp_meth":"linear", +"cmap":"viridis" } diff --git a/config/variables_mit_FUMSECK.dat b/config/variables_mit_FUMSECK.dat index be0ba5a..2aec213 100644 --- a/config/variables_mit_FUMSECK.dat +++ b/config/variables_mit_FUMSECK.dat @@ -11,7 +11,7 @@ po4 NUTR cmc.batlow False set 0. 0.3 PO4 $mmol.m^{-3}$ si NUTR jet False set 0. 1. SI $mmol.m^{-3}$ chl PFTC cmc.imola True set 0.05 0.3 Chlorophyll $mg.m^{-3}$ phyc PFTC jet False set 0. 1. Phytoplankton $mmol.m^{-3}$ -zooc PFTC cmc.hawaii_r False set 1. 3. Zooplankton $mg.m^{-3}$ +zooc PFTC cmc.davos False set 1. 3. Zooplankton $mg.m^{-3}$ so PSAL jet False set 0. 1. Salinity none uo RFVL cmc.vik False set -.3 .3 Eastward_current $m.s^{-1}$ vo RFVL jet False set 0. 1. Northward_current $m.s^{-1}$ diff --git a/config/variables_mit_TEMPLATE.dat b/config/variables_mit_TEMPLATE.dat index 3cbff5c..56a0e89 100644 --- a/config/variables_mit_TEMPLATE.dat +++ b/config/variables_mit_TEMPLATE.dat @@ -6,13 +6,18 @@ ph CARB jet False set 0. 1. lab un talk CARB jet False set 0. 1. lab un spco2 CO2F jet False set 0. 1. lab un nh4 NUTR jet False set 0. 1. NH4 $mmol.m^{-3}$ -no3 NUTR cmc.hawaii_r False set 0.5 4. NO3 $mmol.m^{-3}$ +no3 NUTR cmc.hawaii_r False set 0.5 4. NO3 mmol.m$^{-3}$ po4 NUTR cmc.batlow False set 0. 0.3 PO4 $mmol.m^{-3}$ si NUTR jet False set 0. 1. SI $mmol.m^{-3}$ -chl PFTC cmc.imola True set 0.05 0.5 Chlorophyll $mg.m^{-3}$ +chl PFTC cmo.algae True set 0.05 0.8 Chlorophyll mg.m$^{-3}$ phyc PFTC jet False set 0. 1. Phytoplankton $mmol.m^{-3}$ -zooc PFTC cmc.broc False set 0. 3. Zooplankton $mg.m^{-3}$ +zooc PFTC cmc.broc False set 0. 3. Zooplankton mg.m$^{-3}$ so PSAL jet False set 0. 1. Salinity none -uo RFVL cmc.vik False set -.3 .3 Eastward_current $m.s^{-1}$ +uo RFVL cmc.vik False set -.3 .3 Eastward_current m.s$^{-1}$ vo RFVL jet False set 0. 1. Northward_current $m.s^{-1}$ -thetao TEMP cmo.thermal False set 13.5 14.8 Temperature °C +thetao TEMP cmo.thermal False set 14.5 17 Temperature °C +so PSAL cmo.magma False set 37 38.5 Salinity - + +# Meteo +u10 uwind cmc.vik False set -10 10 Westward_wind m.s$^{-1}$ + diff --git a/datasets/CMEMS/get_data.py b/datasets/CMEMS/get_data.py deleted file mode 100644 index 72966e0..0000000 --- a/datasets/CMEMS/get_data.py +++ /dev/null @@ -1,6 +0,0 @@ -import pandas as pd - - - - - diff --git a/datasets/CMEMS/get_data_sat.py b/datasets/CMEMS/get_data_sat.py new file mode 100644 index 0000000..c0cdb78 --- /dev/null +++ b/datasets/CMEMS/get_data_sat.py @@ -0,0 +1,81 @@ +############################# +# Routine to get CMEMS data # +############################# +import warnings +warnings.simplefilter("ignore") +from fun_gen import * +from fun_io import * +import os +import sys +import copernicusmarine +import datetime as dt + + +# Get args +# -------- +config = sys.argv[1] # Configuration name +var = sys.argv[2] # Configuration name + + + +# Load parameters +# --------------- +load_config(config) +from fun_gen import * + +# Create arborescence +# ------------------- +vdir = create_arbo(config,var,'CMEMS') +datadir = diagdir+'/'+config+'/CMEMS/data' +os.system('mkdir -p '+datadir) + +usr = os.getenv('COPERNICUSMARINE_SERVICE_USERNAM') +pswd = os.getenv('COPERNICUSMARINE_SERVICE_PASSWORD') + +# Load coordinates +# ---------------- +lon,lat,lev = load_coords() + +# Load CMEMS parameters +# --------------------- +pars = np.loadtxt('../../config/cmems_'+config+'.dat',dtype=str) + +# Loop on variables +for par in pars: + if par[0] == var: + break + +ds_id = par[1] +cvar = par[2] + +if var == 'chl': + cvar = ['CHL','KD490'] +else : + cvar = [cvar] + + +print('Downloading CMEMS products :',ds_id) +print('=> Variable',cvar,'\n') + +copernicusmarine.subset( + dataset_id = ds_id, + minimum_longitude = lon.min()-1, + maximum_longitude = lon.max()+1, + minimum_latitude = lat.min()-1, + maximum_latitude = lat.max()+1, + start_datetime = date_ini, + end_datetime = date_end, + #variables = cvar, + output_directory = datadir, + output_filename = ds_id+'.nc', + username = usr, + password = pswd, + force_download = 'true' + ) + +print('') +print('[FILE SAVED ]',datadir+'/'+ds_id+'.nc') + + + + diff --git a/datasets/CMEMS/interp_cmems.py b/datasets/CMEMS/interp_cmems.py new file mode 100644 index 0000000..a3cb2f8 --- /dev/null +++ b/datasets/CMEMS/interp_cmems.py @@ -0,0 +1,98 @@ +################################ +# Routine to interpolate CMEMS # +# products on model grid # +################################ + +import warnings +warnings.simplefilter("ignore") +from fun_gen import * +from fun_io import * +import os +import sys +import datetime as dt +from netCDF4 import Dataset +from scipy.interpolate import griddata +import numpy as np +from numpy import array + +# Get args +# -------- +config = sys.argv[1] # Configuration name +var = sys.argv[2] # Variable name + + +# Load parameters +# --------------- +load_config(config) +from fun_gen import * + +datadir = diagdir+'/'+config+'/CMEMS/data' +odir = diagdir+'/'+config+'/CMEMS/'+var+'/ITP_NC' +os.system('mkdir -p '+odir) + +# Load variable parameters +# ------------------------ +vname, ftag, cmap, islog, vmod, vmin, vmax, label, units\ + = load_variable(config,var) + + +# Load coordinates +# ---------------- +lon_mod,lat_mod,lev = load_coords() +LON_MOD,LAT_MOD = np.meshgrid(array(lon_mod),array(lat_mod)) + +# Load CMEMS parameters +# --------------------- +pars = np.loadtxt('../../config/cmems_'+config+'.dat',dtype=str) + +# Loop on variables +for par in pars: + if par[0] == var: + break + +ds_id = par[1] +cvar = par[2] + + +# Load CMEMS file +ds = Dataset(datadir+'/'+ds_id+'.nc') + +lon = array(ds['longitude']) +lat = array(ds['latitude']) + +LON,LAT = np.meshgrid(lon,lat) +LON,LAT = LON.flatten(),LAT.flatten() + +# Loop on days +#------------ +i = 0 +for jd in range(jdini,jdend+1): + + # Get CMEMS data + data = array(ds[cvar][i,:,:]).squeeze().flatten() + # => /!\ Ensure that same dates were used for downloads !!! + data[np.where(data < -99) ] = np.nan + + + # Interpolate + idata = griddata((LON,LAT),data.T,(LON_MOD,LAT_MOD),method='linear') + + # Apply model mask to avoid bugs in time series + + + # Save file + # --------- + dori = dt.datetime(1900,1,1).toordinal() + time = np.array([(jd - dori )*24]) + + d = dt.datetime.fromordinal(jd) + dstr = d.strftime('%Y%m%d') + + fname = odir+'/'+var+'_'+dstr+'.nc' + write_nc(fname,time,lon_mod,lat_mod,var,idata,label,units) + + i = i+1 + + +ds.close() + diff --git a/datasets/NASA/.interp_modis.py.swp b/datasets/NASA/.interp_modis.py.swp deleted file mode 100644 index 947699a513f7d235816250994815a4def9200fc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI3Ta4XC8OPnya&42eEH>uFk!J63Pvrc?$ z$M)GvfffpVL4t?0R6@M9X(fc9rARG2v`8&TNHl^6T0}vBfL7unZVv$}RQP{m&$(^A41f!{vE$bPsGJa%1h#hLM|j39{%9&^gM z3pq#RzNGD70?Q31+)TM0j+>m z;QvU0BE8bM5B<5a>eB<&_KF?bw^YaPskR$C@~cC=(F$kHH_E5tKenuP4Ery0{ANUBKQROIJh6A;Dg{!Fb)oZ>%nzk zA9&*$!}tyOHTV%Y2ObBHfzN_Zfef4m9ykU}@RxTP#-G7C5Q1f}1l|wEz#j0YccMSw zIq)p_0(cm-K?BT#qu^F>0KEPV^bNcOz6YKKp9lAX5Zn!pg9)$~yz+MF1il5H0iOX6 zfd|1Ua3`1pN5Ba959|e3gBS2p=y`Aktb-<40XKki zh^ZIBli&=vAAAga6x;{8KUV(I4BvcMqGt3Rn{$h6vn$K&$kg2Y?2K9EiY-s11)G(d zFo_w@nV2w?>1Gxd!i_yEh!l88TgS$j=MxII(9cCkEIm-wT(g`QD=YqspCHNUiI&rhw@?3O6j6Mxc-!dUQ3iCSdaNX_RLy3>dUwlatI`U0pL(RWK|2>m{*=j>N#S;*?v+aZz6lrvW=~ zQ+1^}mS)@{tv1(1CMjoqE`)IkW>GtQs1VUgHmZ*v%B$ zm8R6?i=rB?GHo&I4n#q$;oojTW z5~r@>MRkH(ourO)Wm+drn4dddl;i@jqcjL$@9;Dgv2Xc#-HiE0*yIH+EtjepL3T4N z+P*Lw^$FD`j7iT++M$kJ%wXAVni^1b6s=T6fpjh9dEO~mUiFnYG8@I~o$v@ww|T^F zo@Ar72ILt&j9a>D8#;ev9A8&rcDcFLqd4 zj2qrMBd^E@v{Fe$;~)v^U>nFm%RKOb1FZwTvh^vqJEl27mbBDZcG9mwGYlzE8#QBO z>|7rwG1`UpNgn|^G$t>Q0XE$8g9&vqNg1wYpKs?>Ns>GHc3y~9fp!xgM-6k)xCl) zE_nl@j42wQ+Vaw4ULt}Z^gi98SErfEZU+oZTM>Bc8qiX5{@sv|@Yh8T)3Iy(rk zx>@Sh!1yrGmyR}UdGhSuBK>jKjXG3^s6%6g8-z`ZZ`ooC=d!TVEIC;-kY+PZH^Ve4 zoVXG!-_i^+y4!!0%Hv4fQyvnT`3menh#aI@SH5e=YF z$ag)O4dw8%#~x#YsshF%=o`Ly>^pU3334su5#+~tNl?hR%m6^agV@GFRK0OEX8vAJ+7Lr?zhUGh6gz#hx>j}x}JL>9525= zPY^aj*{XSUSuAe1(ruL`=knA#CVi^zvVcshe4%@-vY>rc66f7c@@`a-;O@a0RdleM z6DGSP_64D_$+H-vAntrnI}$+{A;_%#VKYuL(LLv?m_g6~cjLME=YXF7)%yP5@J#<> z@D%tmcoIAS9PoWS&%X@Lf&%0q1SYrzoX7L|i{RVfX|M^#z$kb(IFGho1FwQ#0BZYZ z;4F9)JOXlXJGiBSVS5v}5$K;*Kr5gX&4M9{c^vOt+UW!}u0n zHrJf|bX$mfI_o9X!WG^=(Hc*WAzss9eTrUHh4F>eA{W(C?(Wsni}ZT8Hadg>En~>_ z46Jj+^eU%}{k+WLgq4#g}zv;`j8E^w{z(pk22@T`#y*<8N diff --git a/datasets/NASA/interp_modis.py b/datasets/NASA/interp_modis.py index 0208904..cce9c9c 100644 --- a/datasets/NASA/interp_modis.py +++ b/datasets/NASA/interp_modis.py @@ -75,13 +75,13 @@ var = 'sst' long_name = 'Sea Surface Temperature' units = 'degC' - ftag = 'OC' + ftag = 'SST' elif tag == 'KD490': var = 'Kd_490' long_name = 'Attenuation coefficient' units = 'm**-1' - ftag = 'SST' + ftag = 'OC' # Create output directory os.system('mkdir -p '+modis_dir+'/'+tag) @@ -95,7 +95,6 @@ d = dt.datetime.fromordinal(jd) dstr = d.strftime('%Y%m%d') - # Search for data flist = glob(modis_dir+'/'+ftag+'/*'+dstr+'*'+ftag+'*') @@ -108,6 +107,7 @@ fqual = ds['geophysical_data/qual_sst'][:,:] tmp = ds['geophysical_data/'+var][:,:] + print() try : tmp[np.where(fqual != 0)] = -9999 diff --git a/datasets/RIVERS/.compare_rivers.py.swp b/datasets/RIVERS/.compare_rivers.py.swp deleted file mode 100644 index 3fad130c88511c61eda868d87921f73258527186..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2&u<$=6vrnB#LrSh4@hts5?O1L&DsuXDWRrBP70M0rKCTk5-c;e$L^-PJFDGs zVwb8#a7Ka)h`#{Z(nE^`Nc`vxF0@EJQZ7jRI25>W1PQ)xy{;YdqZPNJS@olx*?BYj z=KE&e#_H4xNA}P2-OeP#^$=rM|Cnzs>}ZZ$IC&>)sz8fCP|KFrt=gSR4f6*U7s}Q7 zg_+s8{LJ*B>FWIKOuiwsh^3D6i~EnvE*{L+l^=>oRwH*sMzIriw{*cY8U>63TPe`i z&57OH*prjR0-24CKF)VMe0ZxKrp+i|6fg=H1&jhl0i%FXz$jo8_@61D!x45GbGjp) zmz&;4{&i2Q=4KQy3K#{90!9I&fKk9GU=%P47zK<1MggP1ZK!}~F!sw`jJ;BD|0cn!P)=0P582P5Ez2O0YooCoiMcfhOQ1n7be@Iehc1$Kck@DTWG z8)H9%pTLjc3iuS91kZuJAP4?_fU#@f68I8)0nUN0liy#IwpbYi`2RsHI1y}E7>?3dyTmWwZ z7aRjE@C=v&f8N8`C*Te6I*368UIcmYJ7Vw~xC}lApMmq>LvRk91!uqqAc@y)xZaG* zMggOMQNSqh9~9s`^t4m=R4lVO#yF3~ifp>AY%>tP%;7;&;3cjaZp6o}yfscO$G9KB(K0njA0 zin3$^3*6vAI@WYsD;j7nwMpEjS$MJ~gGO%}R1ZC+vvlZhY055C?6g#@*j7zhwlAXN zI0opRkR@m5PI}8t`b=21=LT}sZRlgAg0s{1L``}ntBg0awQN{x#-PK8z4xXidT+G$ zy_5YRFdc#J@Bz}>5CpR&Z{l{1CJ|?gcF{&t;%#=9y$iaLHBAYoLFkAm65V97c0+eV zS!#MpX!3|&KWszwwKg;oE*i`cVMrP-EjNk8U)vJ1EZj`)UGd`SVtihvLwk8 z)U`54Gk&IVs8E@hy4RLE73xQYjy z910^h&{=C~-~PE-zBoHQQ?YD|TqLOni%@rTqC3VaK?Y2^fk)X*EbaKX8%An1E)`P= zFb|sF7@tV5q*7j(KXCZa>`Wpu9HJ`}amKd_-9L;M0B|b8dTpyb;Kz(x@l+{`HY{>99}Cl-!&+^jwH%r)%-1v0|IViR2i>s2;Cu7^C%8L-BcfqX6N3W1Pp<-XUXalm6?we*b$(V~c{oJg# zSpNh^$!Tcngsk0f$2@Em4}2ODYDlJDJH3?BDNp_B*ZX4yZ9nYN_(8~4MHIL}3(FM7 w9zNC{eP~DBR)9q`m{Q*iKaOwVf{^qb!}0j!J3vX6_mWl2wd(D!v0EGIAHBZu4FCWD diff --git a/datasets/RIVERS/compare_rivers.py b/datasets/RIVERS/compare_rivers.py index a0e6f38..2cb1a65 100644 --- a/datasets/RIVERS/compare_rivers.py +++ b/datasets/RIVERS/compare_rivers.py @@ -38,6 +38,78 @@ os.system('mkdir -p '+odir) + + +# Loop on rivers +# -------------- +for name in french_list: + + data = [] + comp = [] + + raw=np.loadtxt('data/'+name+'.csv',skiprows=1,dtype=str) + print('[FILE READ]','data/'+name+'.csv') + + # Loop on data + for line in raw: + + line=line.replace('"','') + line=line.split(",") + + jd=datetime.strptime(line[0],'%Y-%m-%dT00:00:00.000Z').toordinal() + + # Select interval + if jd >= rdini and jd <= rdend: + + data.append([jd,line[1].replace('"','')]) + + + # COMPUTED + # -------- + raw=np.loadtxt('computed/'+name+'.txt',skiprows=1,dtype=str) + print('[FILE READ]','computed/'+name+'.txt') + + + # Loop on data + for line in raw: + + jd = datetime.strptime(line[0],'%Y%m%dT00:00:00.000Z').toordinal() + ratio,offset = 1,0 + if name == 'Var': + ratio,offset = 1,1 + comp.append([jd,ratio*float(line[1])+offset]) + + + data = np.array(data,dtype=float) + comp = np.array(comp,dtype=float) + + + fig, ax = plt.subplots(1,1,figsize=(6,6)) + + plt.plot(data[:,0],data[:,1],'r-',linewidth=0.5,label='Data') + plt.plot(data[:,0],data[:,1],'ro',markersize=2) + + plt.plot(comp[:,0],comp[:,1],'b-',linewidth=0.5,label='Computed') + plt.plot(comp[:,0],comp[:,1],'bo',markersize=.55) + + plt.legend() + + loc = mdates.AutoDateLocator() + ax.xaxis.set_major_locator(loc) + ax.xaxis.set_major_formatter(mdates.ConciseDateFormatter(loc)) + + fname = odir +'/'+name+'.jpg' + savefig(fname) + + plt.close() + + + + + + + + # Loop on rivers # --------------- for name in italian_list: @@ -61,6 +133,7 @@ exec('runoff = '+line[1]+'.'+line[2]) data.append([jd,runoff]) except: + data.append([jd,np.nan]) pass @@ -83,7 +156,9 @@ fig, ax = plt.subplots(1,1,figsize=(6,6)) - plt.plot(data[:,0],data[:,1],'ro',markersize=2,label='Data') + plt.plot(data[:,0],data[:,1],'r-',linewidth=0.5,label='Data') + plt.plot(data[:,0],data[:,1],'ro',markersize=2) + plt.plot(comp[:,0],comp[:,1],'b-',linewidth=0.5,label='Computed') plt.plot(comp[:,0],comp[:,1],'bo',markersize=.55) diff --git a/manual.pdf b/manual.pdf index 435b39dd6559ad6aa623a8c0eba1e15b91484dca..0ed2f8ead7694898b55227010d596c8082020f2e 100644 GIT binary patch delta 171512 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%0A)R>8uR3G$ybWJdW&r z*S~N0xF$P!ZOLg$SDJs$*oYPt|*C&zgCSTsE5Ui*;3J(+*VQ zW%WR-D)fgY%Fr#g8ZeQ2kX1jR z$=1WnW(Dc|VRx5_?q_Hw+oSNSd;X>oFRH&0oR86T-xIc_z=^Tsu~T+@ul@_gOYJ4@ zWb#wwgoi`D8>+2Xfh!s}%He+eoJUjL)7XEDx4G(vu5MK+n_*UisD4;-$PFnm|dReURtCIN_k8!k6_>tb(tSQ!O+De zBcWwHR>Z3pezF)%bkj%ZwXd)?zwXBVD9Ke;fW@gfi55IV`xd2nC{C|dL|JG2wLn&@ zU}M7aEQ4TKo&6yxtER%V6Go-PiKJ0h+s7)gB_Y1Y$_o_<*W)aYAt-uG-**^2FD>8z0VE*BXUK<3Dz z3k5}bi*^j+M<;t^os-Z;%{4Xvx^e*#T)h^SmXA5V594W~!8*S~>=E{49bIs8%hhr+ z-AFiB(Jfy!I|tH#<#7C=;q!@ro%v6U`=Ar<~<4FxIHKIO8e7g2WH{V-8tO&Srkf>+`&S}q=@*%p)Ysp6FH@eIq^PYk{8^v z&Edz3%I%iV)GGc3xRDbGy69jH2lIEQZe-1l+2HEpS`pZ6Mn5ClGl?!i#jdeRWaiYW zKKm}+GRJfMuCV;w$-ay{4)OjJ00G&28ChO_ERa06=OVzqjuPoYH&s1$u#Ip@IPU;E zEefa~WR^s~%4ddSeV;wP`WhEUfw8`>d#~W0px%Vt{fm57z-IoAJl62};eeZ*%^j21k=~j*moMx2{{U(X*nl^nQ#_pfPiGCx^%a$oN+f1Fj;#k}Vr>~bt_ z?VgoW=mxvPj3Af%Ce-N^ai@Gc*~zW$J3TN`*%BRija{ZNlts*Bs~*$$=Xa72+wHCB zop0xmXJ>XC)XA$FslmTcRxy$mf1$LwB0_+TAMg6ypsrO9D0udTI^}}5R*Zk1T;Qd> zKprLGu^hEdO+a7eWB7B*2j$5xl#f*HNL@yQ_s3MTXu>#ttrxFT-3hH&;7@Ci#d#IG zo@Pa!j%2Y9+F{Hb@olkjqH&_VZ*IOkvy1i7&ATmcAnUv4i*ue+t|gd-7u`VpF7Pg6 z-O2kpXCqIEl9X@J1sfLMLVv6iy)^L3+YOL}hiXU`fdh zQ=1ITatfYaAw}I7q>muh-l-)(W6u_gd}y(@?q@PqJxiOgQ`={W(_%h_O@HS0#(0R# z?R_Rz9i^-b;*L-y!^hsPfwpznb;vUEKCeh2I**IMC_paXo_<)}A#-ncvlMKE=Sx#p zGEg>@g727Dtsp>*ZahnJ=*50$j}h=`A>gu`qk4hYidg-1+9)p|)|=L?(i)gMZBTRY zgU_AxOOe;Rm)G9Us#VC^n5<3AE7Mo47{N1mi*I4>y?in=CmXq)j6@$0#dRtQZ^p$9 z4CaDd#%jawyLyZCZGB{Ffe>-Q^HG>p)5}WjM_gI6=G~o)wnE`lEZE7`&`N=mFJG#1 zHBhU&#|uaK?v=3tdBdY>;z2NrA#b$}s^Ai3yA8!C!V$)K%9M8E{xoA4BpI%%x*IRd za(vo8c|wwpDnc(um6PKdW_J(+^=!%6)njwbfVA0_EqVncx%KU(G}~xFz5HInQ3Jk~ zK@7s5rRmzj7Ji{{JP;LnZx`9G*X*u%vv*SohaKdxxqAbfHH>}KDn^L=WMSf>3J2w; ze5JbR7_s79=a8NDGX9nZ?djCmT1NkRTO8}P+PtF2;p*?+fgdnLf)67$#UQ>$t(!6F z^@y{((d^GY)Hy*FdCI~d$t9m6r-Zp5dQBeI6dep(N6z|N4Y#$*tBY~zS!LNZNwBn@ zVdq%3WCR1mxK;Moa4E-SN|#!2m?%$__OgK~r@x3O!D>uOUT!9=2dQ~wjyW6I@YyG2S(I7pP-=p_ygkh8BeYR9Xp z<@Sppr013vd#F08U%IhJcdD)i;JQ_uDD)v?yXB1MCO^7zV}`KWLW5cDa}BKbIDHV* zO}c&RK}9zmv~nyW$xHH$GmO`rCYC!f5`l=->c*zn&Q?)Qy~W3OF!+hRK90Udcj46& zJhKwTAGOHKl%dm2R%9#oL7bEi8fA4b38e0Wv`$mq5#%TX)t zurd>ngmIt8b!D~&b}siihstP6Ht5&SXo&YQsgz)3C24!(UF${rI@!G)#d}`SKhvIq zoAo$%<4v*IHuy>PfHUzs@l@A{TB#yIuZTNcaPZ@0R;7ls_?FMCS!s>WgCPwTO;~C5 zI8;jMPZEmxJR532%eu}nfDz+pV{DV;$1j~UFzm@R!DOaaAr( zh7-7gWsCxJc;5Z2+T1v(v^bL^{|-6dPJ@I04{cPh@cT=ppCha(qZ?({dm4H#o9C4 zgsu^<;lU=dJJsF_jfwJ6aguF@mkoS=D{5B1m($Wp;jh8EPtCzs?ynaoP>|ACIYWGI z#}dD%jpte&Dxr}^xZ{}PxsxblYIC4|_NUPO@R?*Hw8QQV-X`Wgi&b&)pXJyI(Ej!vNd)7<- zn#z7ZXTQNnvPi+HPGgL%K>sSC?`!|pIW(~-3rH&Lj^pODJ|Oo-_&%hC+JGWEO9%12 zZ~Hk+nNsvc8c_uut1zbryB{g80K(|axH`@ZQ3)1IIX0A~bY0XR;Z*rrwU+TqSs`fK zQ6I#s@Vz-(WVH>8h76`WWN$C(I@UGp+og|k95IHAUw`h_Qg_$riYvwe(eVkH0EZf! z8p~M=IxuP@2dd!`;@px4R`U)tUG92>-N>`EWpvcXgjJ0@=8hG@+@8(z<8m;y@r3h|#mkv#u>{Tk7<1bfJ4WkU&%{B0@J;tcKA-t?8Ep)_kp zZ)C{)5S+W0oX%<`JBHKWxUg9e052S*d=6h5O%7Lo1(dxMCQ9JzKYh?gN1>G6hS@e< zVqeZC|6D5FW*2v6+}IkbL1ySkt%p&+m7{oS#R8`{`YhiH`4E)v84zqlE$LcXlF^iI641<{(GqTf*bc~%^61%db7HSfb9_xudPbwe&{4z^o94B%_GbO0dx6HNKQ@4u zw`{(Sl!c;gL21uuWMB!0^bNS|Ff zRCMGJRGi9&Md|RQv5fG%F*OtIjanf);awhd0^ZheeOztxo`_oRR0osG+s+V$2z*^_ zuPN49ncK3^=Wa38ykd{U9oy|O`ySr-rqoJUqlonSuuk|s^eDYL$3C4`CWH4}F2@KF z5zFEcZ9bCPcDzPLpbszm(xYQZyvy<#Cci*uH|nO2PM)W7HWyivEMrG5og>@H$CsE% z2Jl$d=K7R^S99{?1zO1FFEt!Jas?l9a;<&6&`~HWM6PzGSwgh$AWxSa9zmY}lVLAQ zBEJ`-y%ANa<3XLuU)oZ>o+Fo-=od-xN+q#DLeMjvrW526^~!pWcQiMP(jVHgs!RT* z)~Po_VXH8<+RP#@k}b*|QN_9ZbgR#_8=sM+&3jz0Y|3*;q@<-8}j9 zl4;aZ@E=cadgct@C2ye?A{SXBosU4gPXGAAg;F&qvb6F0be`!o^bHwl{~K(gR!VU> zgV2#Fq4Zh&AFgtrcIRA)V%5YWSpie?j=Mn>{T-ve)h3IiQGETQ=?Z7|rg&o`8T?Kx z*4pf7>gJ;r({}l~hLNn0jwcBB+0Q*6TLqGx9JA6wEd02$?OZi^YH{T95ILmXp@>)& zI|O$GCn|eZ+l92aft=O!jb4ygnd$)Elj0BRW8q`ws?C)b1Ywmglb>0wlmidXe7r7X z{fPE*p`6f%`bq3;APZb|NIR6;`G3V<<8Nsusu(E1yF8Z#z$=PKM zVsgA;-161miSA>7W^$WRTdJN-Ts_1osvCczl zy9LuOxX`%i?C1V(XXg}9q>^JO_UfGLzNAslS(alhZ-5eI)$Eq}BhSle?Bvv3MP)w< zp#Tdft1pEhg$`Eld*phoM>93cXLK5A_w8S`%$j$$>>dn1Tk2#CLIwRhUoAaMx^l%(!E0DAv*zB{xF+dKvqLK*U60Wt%rCdPa)% zc&<-)1>9Dq6Si zA7H8oVx=5z(H#Q5YnfeyFc=^-`#(StXz6pq>?lZ)wKBMy&2G>uUxKt{9)?Ks$X4FTQexdYPjVAE(ib~hBukL)cjp=J;57?iI6vVYUT?Ey;`yQB*y@C?sHgie~ z8F?U@h57Un>#%$D<#OZ@2B@OtwB{~FtV*F}Z2Wg-*GU08tN9Upt}TJ@O`Lw9Y1f=1 zMN*1-1CgvQQv@}4y$gDhc8-}yOpNcYgS|dqH9i^Z$TO+>h$V9H?SR;c{{UaUWQc4KZn_7pG;&(?(Wd++7t8*ER8x>v{m; zp6ae$HVGw?f>SAvkYz$Fo~V!2_28*$eCyOXb5;dK)ug?4w{J1+oVkyP7FNMGtz_i# z08$yMZ6UdG^>DW1ECp!!oAUaF@4Y?TwaYN5s}z?=j26{KEOu)ZRi4fuxjv^4w&BEm zt`O5jf!;cS3~oy}qZ=v4Ou~qBwBp#~cZzsR%Pmx!{U(N{h^^`H&lS@+@6^R2vrI=} z1}#jNmTOOD(_b4q85m3=!igd9(_9L1ph!z7ZMlbtWRuf{7(ygotO`h{n^wIkt6x|E zaf6WqWrJrkJ0MO#X1N}JF*%ua7OM9w%GjgGuYQw8@XXi3#Aa`&_&W6!szxI9jduO+ ztJr)vqD+pctlMgiZP^KM9*}Fe zvECOO+aE_HdB$R?c0(ydbrdHKz8Z2Xys$6FXcPCQcnTit<-lihy;=J-?pX9}Rv|~% z?yYO>-ux18rKk==0`9#HdUiNGe_B<2jp!4)@hta|e8y<`c}(|Ck(i|9^7Hsafn=Lq zFCNK=uI=hhI9E@Q3gMY?j6NLDg2wn@OnVeEJLq((3zj?Xp3R;0e_lVHPOsUj72o=l zYF>~tIDvC&#Y^>GlU6(Yu=f3u$B{zHBZ1k$5rT}w#`2XWMT0I*K?&s*(PStxSZc)p zbEZ@x2tjUr>27DK%{9SwIyizF`|{jlCI=;b+y|?-iXh(n9A)l@o3tZP>4d35p(+yl z3a&0jly$MnHqY|;OrBg-P0iEu8zM*HaE(R#mD1<;1P(;xK?nl^Gclr)cv(=0p!ajW zsU)q5`V70@iHa(F@ zdU=cXseVSTQooxRiBbe`W)HTo@`jh2fM0aoRTqh*rbt|tQ)(+yXkxPY>GRQae-bA< zB_m6l1bsfaGY17Gw^ zMa-zGUO1x1=CG0B$%SFn`ZqVu_NoMz#N)GY$VV%_O9Rssn#gk&w|OX@nSf2q#|)OC zoHEDAEY8Erwa)OV7dbyMLbsvDa1NP%67}=b3Vv=(W_j)Sdk+<1XXDB+`m7=}yeHBHYX17n+pc@}SSV$<$ zH`{ZkHba|4`g1KeS6_3@liR9lEAd%)u}L_!E12#kp9zhD1khVXAi+IkH=f6gUq7yb zQ6O!ap}7J3V9Bk9N*9)tPvJ#am|#T|6}Tvz6^adjBQQbH&yI+M#$E~Xwm?$m?#!-U z>Ak`$tnYEQpfSPrIV#{fe?HJksmi{F<%$SrWEz1aJ;Fegt;w0W%0=KHv(^T-oz*UD zL>OB!m4uPpGfqsin~HI5Osxon7Q)-S>}X8l!Kpo1G9L=xKD=S@wfkxeEnQ|~Gi$%k z+wl>I%+$p;D2lh>w;Vi`MDG?}0N-$elaAGGnGngIS^G5TMKph!-iA>Rk$iCx=q^*5(rke8sb($rp!N>{4K z=G>%OOv-PP`NB&}s%^oeb=Fqj#<6`^icn6srOX;QR9VusRi%==%j;58kIqc2FEf^M zweecRhOqmIKB*FIi#OT#b-VRk^N-=sMCw30jE;~3#ff6(2jIt}9L z+89q>6A%yFtoyF@>gLk}uf6iMRI)kk(J(9EBS=|9q?N3kH0X(5lWwX(*h~}IOFTUN z5Z#2N|GQo9_Y?X5`~SZk=oIPB>Kk-MuA5H_Ju|>q1GIx!NeLnE18L;qaH`4}T<`?t>mWuZG8INqwqOi; z^ksY&cBNe-4Mj$AlzsJcI}HKT-vkU^>5qr9*e_+crjC*lEozRvFZ=nG$+z#bsz+?U zF~)fq`Eum`{ywqT5eI})-erCA`8H^RhKgP^D;tzSa<0p%M7H2qK?NATh-76s-r&cJ zJf2P~3;FutvhPi_Gg|?Jhth&`A+vMyBw_RN2h8PTZ!}lmc2uzr^E=e$bOC{MF=-EBYe}Vsp3V{FG1o;-#e`t>Z*{j3*mXA+5Ve)f&Z3JAv~9qo%=QaGYR}V4kKU7 z8_VwCgZ?7n---_ScmMepO^j~{=5=HqZT?kedXL7)LEh9ra(&H*rq;}Jwu;X=`FufN z_Z=}_nNFDntTFsGaeeor;3Tiz(tM&ZwE~LRHTUBDk07fnhq_{g*hP|M){5O1)lP3P z!9*OX&+pI!5*bn}YU?#Ws`YEMK&#!bjG<11Zn8>US=SmVa?f!*h^O)%At9&OY=?%} zh#n5(111YHSmf2Z0#|bskfPFAmRnF^T3$SvZALqB-DrW^4vqT@38N@1d*pC-$z#PpVDn6`H z9Aix%7CPwB{+|nf2$6<&gNjPZHyz2fNN^GDY#9{tU;634ku~tIJ^3$;2U}E&^b8)4 zPVua-L;vlAyTu$5{bO+4e#`aRJ=S9|5X<)GVdF4zZF-Af6H@n9;J@~5VILych<3J? z3hAcAXh;3mo(TLmL+UR=ZpR!QV`R1M)xRHlf5-c8>GWIwgPWgu{~S1fiWc|}L+$Tl zpTAGE^KZjRMr~0}$GCt+cSI>R;SI;~9!V_u9IliOH`kYHU9c6I8e9Y!gQKCgdKEsZ z{<@h%eZAVgs)9_lS2mQJ)7vCnG27Uz`TRbnC_oUS$EgXa;*9k9{T3;Wjq#3u>ZZr$3N`Ad1eU;FdBU z$bemH&W*+zfz%B%$51lJYa?c~85|mFimK$~f|{l0CpI-sWTdr7r#zs&u=KTL`(^79 z@j{7*v<@;5Q?dQ&bHFGz; z&N55Um=;>=dh+P#BmnzxVd3KufwzoW@csp}d1h|VRGF@0?_-|zIg#((;HhtdUheoR z&~N&#%3X!T=vqwu zIrcjYCWgG%h(x2vCFkvcl+7{H3E0;|l zCw#qwK=9uAr=Lap3i%NZSM=M7S@IYMY@QpUE`@UWDQJooo2&`qhSn9dJWucoAQ2d( zbF!oS`P`!?C{u7@Y0C0|qU|WBs?z`Q+gc(eVD0$=a8GJJ^D8F74AaTxO9q6*;Bco_}Q9G7MGjng$Uyt8F}?q(nXQ5eeinxwppIM@lmd}Apc4E zEf1S6I%qy+a18xMc1a(LxQ6vo41d-6fpl0*xP)u+k53-@n{^XHS% z{ptC`@a@rNwvzK-aPmI1qT!# zTnQmH-R5mtOr@q)T?7QW@o>2ZTp9HQ0~%U&X4Tv}9~fs*JZsEjV^iar%Ab>NZa-$t zP_D0!P?6JAGP2ciQm@`FWOKzdCAaJHoi}roCko!@bJ!hJPk-Q0K4+%Z7xtJYTq7Ae8G$Q2SkTR;H3!7J!#O zq}0zlgkT7cRTSr)R1dQ#%}Y|N#z)B$=m^t;ayOFOvt-mOk)f!!LUSVD=vYGPIEOg3 zU)Dlt1hP^7C_W_je}y$t#NoX2l!DhfiJr4|R=Oj`Hjvgkng!cq3-@ zr3koC+C&K}iy(DSK`+Dpu?Ps{+6wvVO{Z8n@fl2Zx!<*Mm;*oYftXZ9+9VA_s zXT;}e3=|vbrjHT6T538griFy96Fus9G$M1l5Y*Cmcq-G)N|~_ebM|K1zHN6;=88b; zQ$Sa~^$IlQ5WO`GX4ul(lTxQ&rlRZk6k!}+eot(oN0Gq#RhB@c(rc@Fpo-#&hwa#8 zqP>D(ns98%0xm;%S+h=Pd>&`8%HyDx2HGyDjS}K5*A=~*P6VFrA>DqjM7FRP{*Y#Mwx4 zr7$C7y0_{M-M@@C9Zdm4V6F+X~jOEXkb1L^4b{qBRAQul7aRohZ zdP-j+t4AXy#%=9)O@nj4n(f|v!Sp%x!#R=Cx@dj%CW*lWO~^7gunWmXq)2R7=XEAk zi16HsL$@wcs!8`il}x&|<_7eQwTTFvv67`W0*Xm1R0S`QlZ4nYzij@e8ift@b!%}! zWsB4X!nVu!$^|=L4vUy6Oe@hlBYz>kZ*RkG7o*)C3YlY4P!x`32pX0xMG-Xf$^t?~ z!?{3Lu3AnXeP15?M)hQQ`Rh8)m;0vTsyKR)7^Y%>F*xVRScNb=Da$=Xr-rfB4?*e4 z(QlIIXAmk7hEG_;KOan+GaGTa8^u&c;0`U}_h;enBkb=KkM??I`d6OJ8=w{~`hZHr za2UHe!s;DQwFH*lW;~8C0HBQ;ArU3h0g!kPvZmrY-#I?HIqDQm(Hn?pO(mK|y`9vY zv_Z2QWw>>}3euxXb(j?QCs|_m^9nDO6f@}34r5M(4MZ9{>yQLPUSJ029K!^!IukVD z7{$TMxYQSDecREGOcpP@4p)Xvu7+=CG>MYfIB7aJ>K#5!Z7{mu3#7MN`q@R#Hd;hH zIsSe1cQG$DPPbmF#4jcpqN%{&^`0p-NedQ#L|$%T8OV9rXUDcjUUq=7^`nS39Y zmV7fLR*)uNN3wu_gs$-JV*%+-svvg;=aNqq+?OXx1o0GgXz9^wTE&mU$n=Z^15w)x zfxmuGgMr^UgJ*u$f3*~yl)*^fL1tlM=&M;#I5;95t-~DyeX!Xo;A7@&=w$l?MO7{< zV*2#i*b|Q*s+Tm-&nr2UXJ@LOIR}Zj%xj})?-Qr;!*X3RrqjS^RuDmVDfesY?DRpP zs8Ca)35~htWL<;5ISU*_DtM(Nn=KbC0tunBGe6|tSPQ2cXQPe`vFE?T7B(y_ytGkpN=XtXN|siq!IT9VrQsRf7V_G z27frYU-#}8kbc9GXchhgc1?X#(aXySUopwkjN=X0Bg1^1IXg5E#7 zn618%+24HMt9k|u*_WQ*5qwnr1EG1A&vo8Qzw#>7M>R+S*nwWI{*g9!2%;6mo%Zkk z95U!@lS1b#HPT@!b;<3Fo_&vkfV*=QMv-*Yg>oL9j|OHu)9R6|7OCh-=sQg-aqBlp z@g_5KWOz60{#xS$#9x;7Ft6XY^H_*X{LkJ4e~#kc$8=F5_ue}005!P5bJM8y^(X)L zgIk|TFW;L#8g$3N79(XR7A&K_ju#d+49z>28Pu)g^#s0=wFS0^f5A~Zd75a*fh*XM zG%KZXUAL3xa*LMORxrB!0W4dHPy_-31q<33m67ZWn^@)~uVSPiA8gfSD9)v{F2_Ky zQ~Z(Kwe@vYO-i`XJkrC2LWDnE6P=Xu3(m`tF%}GIYhK7~F*Gt@@{3+wmmBFS+C54d zLw}{>k)0Ny8PGm9{QXU%j%mxdP*Z{KpoJ>0LnUu&hl3PL1U=QPS1Qlca|?@|iBZLJ zKE>ZwW)5sQW1Ah;|HLN$bY7`VrX_d{@;4#^|4!OD6M{g-^_M#2T7Tz6+12tA`CEaj zN8pPJ`5ioi&^^oNJ0DF18RU;^v@1vF z4T3$pXTP0kpOdiKxhx8Nk4imF>j!GV0~CyBco7wLn)U{G5fuv_z*y;vqI35TCGvWR zPf)xCwy~yR{p2_BLb=Zf^kuu!`2)K|9eSBV#>ozExUTEXYFvmMdlBR%8E`b8Oc zdn#F+bVqcnReO0_QNE4i1J5R;BIn`WE6vkg%W(Caj%mWfP;+jDy1Z}AWgd|7qFHD& zkWcv2m|q-mg|K6!i{yaP$XdLti&UO!uC7@^xV4&zU$^Z+Ha=9{WnAE{Z`dvN5*3$ zO;HIX8SoKrcI_f7t&--HE{6vm`(0}3K(n@H4N|3<&)_8&HmNILN+>n*-aUy8n4^!g zh5ISKAtSf$;INFp=F+2&wmZ=~H{f?mnXJq1~E?*P( zg3%w%xLCz{XpBx`lV7n%F4uV!ShEqtvv^>|yy>X~bE=gO9c?1W^+)BT0-*p`j2Nk= zINEfn58qlUSYL~%OuVN8L6T^cF#&b>tbz)|nfhOPZ?!K`7gBtTu3DsxKoD((glmyV ztF20g5{?m{;*EwCSt>?4vKbdgGB%O3wDQqY&%Xw5~$ z1NNVkbV?Ps5_nyxnNMV{@U(q9jjtLwd+)_c`urQyj8fx%>KDl1oBI@R>@5`Mirwd1 zKYQ}X|9sagQi_o6|F{_LGbPee$fDJ3CV^?ne1l`Hz8HRey{IdO&nP}3XXJH~Xu2;v zRk*-tDIC4(`MxCq<|EuT1PmBDn)q`&WYOx*XBlcoAuwpHRCmPWP*K=^VD57m&?)R|(GIXO|bW!e=XX;xco$ijb zEMkaIj4C0PzX#etm-yN@2hu^W-$jebGKGYcxJ7Jh{cm<(c8X#qGHKN(_^4MWs8OKe z(tP8FvhDRZWJAJE?h#2G1LG+|b(i?pN+T9Olq@#c0R$r%S55~4=IiSzr1L{zo^jUO zZw^94$7H@<_aor)am2qEf$4xx&LCXn8BG z#I)yt94mtWjE*3~ZHl}MRU&-OkMC8-g-+FpF`rZ(?j;5Qt6elF zikOt5QO#u^hPaPp;=W7mLc=Kvg2({``=ek67{#q+-fM7gK}Cr z&_jHPJ=j-4EFSg0$wQ!);7#jWt)JgbErb@{S8t*y$ETB6PH_(9Gb)kg>SHsqi&l@~ zXQG3J6q+itZv*sE`e^e7yjI#tC>NP+6dpXUbQV!U4F!{&k^V$Z(pNzXxgcE>T%lK} z$;Y?GGg1F+uBd9=xPljwEVxz7LKBDC<nc?rsz>AyMI^918^a*V~ZIO@4ZAP9;rYTpKq8WDUP_58>ZM0C06FI;^k<&CkD+A zsx=y`Esc6i2rjumN>M;pqP%S_+mNa)0*C5X4&PN?-B#_ha+~6-MlAW}pPom0p3$Ax zGKzlL+?oarE};k-ZG5Z2&Vh$JfnP$}#&b~ayt%iM?INsz{&gyKDL#t2Yzu$3xUd^s z)74z5uWbONbyvPO^?%aA>{mMEfOL3KF;K+#1t~5xT6v#1trWlOgNv^tz+hi{)@olL& zj*l5Kqk@ONqz}~ED3Q}=}!TEDkdbN;!@@1~eSD|KrcujO*V2QXUp)?_liw|F!Se_VU#;60LpuW&W z^QEPnKzr0{8QcN+uf6{JaLDyLlCD4pApbeOzt{Y2;9%}@2inUDU?CC+GQg0|Zdpc_ zk3+OxMU87WeW)RgF=Lo~BYwXlQ>FLEhxMGTktG5y-!wqW{9BRdr*Pd^c@sGcv(oGL zxW6RT`VG-1d#`Z@Q*rqw_tCtoDPs8WIb^ZYyUtPRNpUinwg$b36XMfikYF{wA zwYclL%_?sU*5bX4hFWlJfssB1^E+Alato!Aw6OE&J4L33c2+tzYRCEoY(D?FB6|5?)Xb=wMotgvJ;Rg zkJyCI=?<~CDQF9I3pBR_7xwlt@m_czbQRpZ$0J5q*jU*C^cf(kL(z=6+LgHCRVD7mBWo0Q70jiUgf@;J%IO32W z19R0GR+=+k(N2@LK0myw5)q>=pY{9SdK!fm2$Q@v$knqo_MzF4ETYMw!j926w-0a# zzqPnt`ogG0RI}<0Np49gUJ)8 zh0Ucp^oNl~Z!xRu&$=Vl-afu;5ibhJdYL}{G zp`FYdJSQimt5zt`LOjdmv%8LWn`Yar$Jk9>L9m*DgT!JuLy^YGsEGd7^;h(_an+0^ z(;7xOGo`}=3bF|Qd{N)8upi#)`pam3|I7Fp*bc^u_w~EII$v|FXon3(8n`Ud&A_My z1i9o6;%uZfG8N_S2*L2}I%u^TuZg9H7nmv@5f>R`xdsh0@qN#>{t-su#Bx*`MI z98YG{W!JhBk_x#r+IVU2`UR*^%3XUvQ<%FK3A;5@?OPoCI_0$ac*9~_gLop!uQo{+ zkTYV65ysbzY}#4B?}(up&SB@_3)$`NUVR}=WsD}jdGl-L#}_XGF{PKinlf=#=-^tC z^Ho+^8hA$Q0*-rKC@t=H+H&a+gl$P=_j<;W)4rP$sWjg6;3Q14=Gpb0{=kxFR9$0qq|SUE8rImtsUyLN^I)dtQVkt+b5>278|;vM_P-bCyLwdZ5Zk8K_;P0^EiZcZAPZ zAg9nBK>>wIdg0CGv)F{56rQJ@^eNe4r4YeNgjncAZwaCZe!yT52LrCwNo&6TwH#RTQ;x-s=1_<4EN80^x+{IP0S830qs4c zx0o^PTiLxVUZw+VTdbPGG$ps#+=A~Ivxe>y6MWeXwvxLetSAY!gcQJhVC*a}rI*9L zcWvmv)}z0l&mpczC=@Q9sbqS!G|67)$}T>s`M&tpkjRF4Q`x4}0}FYRITnu>_isSo zzsPoc{~{*J)xHlwv;9!s0e0mM%^j$DOU!Vg*EZ$foyNbt`Ugc*TQpM@mQSctpKcZd zzu-(U#it4yYOjbeJte-`esw>xWZb&+VZtrugOIjUvg@vhA#xu0KsdF6{pxMgYoM5wiDE)a%_cm|O?fMs!~M-seqv~BEe$Cw zH=jb{9{mfBC*jNwZTO%a4RZ@FR~d^|B{1r{nNwBR_pB``!?yZg#-mp^Zm;19R})A> z7R8F*vvaR%s0MyE*_6lg6oB@|z`JsT6}WCWLaT!E$@CDA&T8CuM(yMIh9Ny#?vTR$7 z<8-f#K{fKq`N&}17b3Gl7#ty9t#wkrJb9@%pTzq(?<>$(-}N6(sP+$ieTuujT-C3= zegH}Gjm_nEPeR9D#jWtTrI<@0569Y?4Y7Iwg(#sgBWAwQ9>Py;(+45AHiU15^b0wG-Ig}3AU24|qGoZDX>6!$V>j7FWvC4fB#w-pR(45>C zA5$83t*K3TsaD3rn`*{byd>3bS7t*x@-IkZ*+)#$2bC1F5ijewbgLIybztP8WxdA& zl7~;RjS$+A+d*I9@`?aA)EIf96GM3^hEKmuQH^B}3^*bF2Q3kF5}O2~HHcYw1so5w zn5Rnp?C7k>UrxzBe8qAQ=#aPac)&|)Jt&OcF%jiP4z|)h;dvRHRNfWIEStA{dmI<$ ze|4IsZdmlhr}&bqbcOk=me23XWxBX+DQrH9EizCN?|2m)vn(r zXLnZmR=zTlGVJK#`{1+3lyzcWw+xKKL;USoI7NpG1-*K1H@s4mexsZBr1iR(i`y)Y zv49pE)fy>b<1DluTMGVjMw z=2ee*I>tjij%jt=3Tv+af^&=wo2~Ba{O=5A>lQS*%$fa0!0}S6<4=5oLQ1_evtph)Vwzpd|IXjz}j*x9)=!Y%O?*gV zE2G9fcWzH#acg0TRRGQ0m+s2}xR$qCsg*49_MiKgSMU;Lp+vB>10IHEr zfOsYHWLD3q0fbfiqkAOV>#TW>rdAM4&^+gC?mWVSxWpWR;g%UPG{-S^=UNOj| zp<)Y#Z{hhfBC3$tl!wUI!6Zsg`1N{|Ayo%9BgyuEYMeYo+S(g=7Q2_d^&Y_8W3QkFu4 z)Ks0b@kMjO^)nEVk>I_P$oIJ3!!O3=AYZKYry`vHB-Vi62;nu|{ z$2oZzdegu0^{t+rDL(tz6yy$eH@Xd((uu(B(2wDPwlKp$22h^nBlg%pnw~d|Sv)?5ysN>zWIuT7sXL-6G!uXto2f zN3WBjc~8VMsH^%9A5ZCmk~!B&cZ#by2Bj$pxvz{lOp5V7uNDVgR_7dP$b)k<)?q*! zBu#Szum9~SCVL;5`koGmdM{DPQI78gU}Wj{i8JCEzbJ6M7L&BXwYUX zwB7!iewUWqsI0{2x(r|K!NCd?kx5WSg;A$i_vf!`J6alWCi51y67JdVGXE;bi+YTt zaeCiKPlBTvZ(}tF8||+G@M43a9Y^x#&w7!>TVbp?omn0V~!)$$-S27&KSE`gCf?`NW zF0x<`C85p%EvaGwZfm$2=wKX~Ld_B~V;D#OgScWdODRG9%d}Zvg0zC~(`yU8s#oX> zif^0%jvnQ+-)|j_yZ(0L4a=^lJ;lQo2_o4KmoH^~i3)ssbSt0Fw)%^IV$bDEPr(zw z+lMM{eAho*<{FQRfBO(|>(j;UPr=(4{&xFC?cXZown!jue(|_>YoAZ{1Kq2vPoDNV z_glmyz}pgx!KXRBJwm8`;^Mv^A9wxD8V<;rYNIy3B}H>0+qSRbV@zc{h(_K~Mc& zK|>aik4DHM0ykU$iEj`3S>f_RpONeP7oL1xUk}aM&0eho@SlF|QI~)hoOrnkO2L>g znP|g#6d}=luYU3JBRRk!`*=c&!#p}>W{~W?1J6V))!oTx2(?Ca`ar~;a}C(q7K9)bLUe+dOq(h+NyWgodyjzCWu{l;k{o9icHiSK-9;+ zPv9v?5_g2`tGvs2p`Ll~&QGllf5Fz=Iw`>HMtF~=cu~Vk)SY3`?*uLPdZsc{F^awh zTi3;UR78UYFnsZfdCUfLW<0JfFDXcKo{siMbFj zLgKrOZPEkxE%uuXGj^lvvZnpC2MG(4QY;Ovld>cwLz_*d3?iagmZQSoK2(ylk2XDD zyWlv93%>oGt$%0S3%>u2aWVIQ<(EHC{2>Trqe0}gXK&@zOrF5O`16k!JTLn;XJO(#WE#% zHCIt&e4Qo7_;S^ySZa~k;d<5ayuk3ot}^9L3j>g z*LKFYdV9A`;IZ8EELM+_bj9}X|Hj5QRlZ;2aYH3(GTGEyOw)4$K-TF2@j=)fUkE~`f%tpZmF2R=p$ z{&=CwD#B}6j)HVKHSbNc+z{mxp^9tz+|UJ_1bZvzYe_b~8GiR%QYZqOMgROWoHC^E zLW9|sl`|*yysf<>wHTfB)`=-Ax#9MG`dX!&p;d{>=aQdKRa}3lvRL5r@HiQg;Bo=@ z>YUp@(><^wA-Vm1JaM^}wC%(mKqG;44vB^bHLyfOlL?)u~$*-`5L?}vFbJ$w#yJ8ok%4tz3+|T*TJbM&f zb^Qk4F68+2G|*#Ju)TBYn}dLWDAZun(!N%Pd z;E1Dyj<)z(J|A3QhJT(w{epw)DncAg#13l<@W5#S&AVh4KG+AD(+WK`2+l01YE!$y zO>fm+!j~5+mzC=CGQ!aK*p8e|+hXFqtP4$)#BswoeNw=zi!g{@OCzjruEKgm2A;F@ z6**ytq{Gw|dXV%KiZ#Tj2{_^*WU{D?3%JJv^^pZu$%oHFB$SLb#x$PvELo0*-tDJa z2N2u^!1PO%|E``T+-KMoOmWO43?qd0No9YDz5ec@LRzwUPhBLw@IdhL2i;cLledv< zY1`AY2jkNu>(lX@6wUX?Zal{OxHGAPlzx~9(N@S=2;H}doOm@i=QQjRAj{?UVkrB~ z{1;EdS@Iiz*!tmEAyPH>No|H!I^L%oNIpL<2 zB$nJ9H8vADPKQtdorVm{hfh{k!$Y+e@iHyqZHyMM>lrZNe4HjH>rzBG^GAl-Fs9Id z;)9b*)#e^<0{j44pe&*mmn2Q4|CxEKQ?V)fVIrBxM}~vs3~6S%OOgL3N=wUIfu%9H z`7vUM8#Wgfm!+WwlNCjU8gH9CZS8nNh$?aES{S`KeFUm2*Mh{+`lM_tVy>fuOgeN% z{g(9eNv6~%a-N~QKMCN}Y`k--VCqBQBSg_HlFO(t0vB@YeBo+et|4JCnT&}rK>D>j z1VNN4l)qNV_Y2OGG8QLm|71j2<+DbzlaBueXMb~AC(~G7dQ=SPkJ?R9{6(%V#45j) zvEhZX0PmQ$4ckI9*S3?596^ohbzqcST>6`KEDuRe(B!C>n?&`Oa-)KWimYe_Oa&6g zd;+R_8^R*6H>5R`I15p=)x-s+q7-Iue4NRbR;DZBj-;zECm9rNbbW~NAL#@~V2Bm7 zq*HFqvf}4lx5d6f2y>fY52~?0akj+vgl>zMGu&8V6_5^8tclV7H2?un`VCSs_4v!P zn9#XHyK3_mHN$>uI&xGEd0fX%&rXQIRdkA)8k2dGQ#MTbG)A``#`|&V^xh|CG@NKe zcY%68u<93_h<5eq`R|9`P_M=dYv;sq6Jh^2&Q*~Q&wj-47V0Yri|if;5`LdeeCQoq zDpuHXv+N;`?j%(b5WTFHVcMHCLxqkITynxES&g_-=9|;AHE@Rs8Wcm#oShvP=`P7`Gk6bu(&K?d+ zT>De614dnc)tT1(XIW8$&qY3obgdeETV(N{-Xa1&B$Ul&mo94etuDn$%p3E0TfciIK9| zb90^SmvTuwgm)7V7dfij3%a6l=QfOAlCdNAu~~nreg|4vuXEApeO{+u5@5qiuvzeY zH=w(>^d-!KkkX!cfUe0Sl8?kYcbYCCiCRncQ>TC)KIB3z>Y-qbiBATMHSlC?_!~9D#AT%6bsIGeBz2 zf6gn8y^t;7FW;${mk!}x)iFubt3_tc;hYmTKGR8F1Ojw@K~!T*t(x3Z5pbPw9g#~N z_)}x=l5@pAxX{CzALe4~U-)wt*sz zdV0ISJJqfI#JLYwz1wT*ccUlpr`1#bb4)c^y_6?U;RmP-e1q_srKWsZi)-DA1=@`! zIcMSuZmg-y;dlREjdg><63;2A0xW!*1Yb!Z7(!~mb(0j-hQK=TPBQ0P3N;)O+}50e za_UGYWTTsPPtG@0Lo@^C5qnc@$fKV^dJDL9RE?XxCU=2;#Y+CK5STwt(|Dr&4^DAM zzDd#L%InyHOoCgd>;!nUt!-(I8f@fX3=9~q^SiLLT?otUufjq$EXR{BJkjEpVZ*jh zUipw@OIX>ZFs)&B6+fQhM#0B|3fORX(`Wvrz608$5I<|@_Lb@}(B|8!YG!M#EdYqX zGgWaoS$!s(3U1eB!r$3*H#d3|iAiT02tp2@Z13&nBP~+t=%Yk(tmVYR9x0L826sTY zW_)v+jpD^oHj+6jAt`To-0-Mtik)Okhib*>6$b29!|KeV^`KO&n{Kg3Ti zziM*eWmVa%1<*}Nxe?MK3pW07dMk8u;{k<=A>L%Z9n;nIo5fZ1gOyejTk{6t^`#wZ zm`UNrnkcEoo(^KvL_u(C4>L}clug(TTJjUF@=lFJ>{~JR;sIzZZj?NYk9BFMX!y)T zmkNwv$dugEVEYSUW@`yb{JH*abjxC!=)G?cFV9LM09;c{PLiOJbqyn90(C5MoRB($ zTx=F<NSz7LCq_+jzu#L1P>5r9Hm%!9qs19 z@P=ff%uaSA1JHvjP?vy4g@MgWB2!V~q2c$Zu7woV3W76y zampc$eHxkmiLPGix7nrc(i|J<2>+zMAt;*Sl@~HGPA0{>(|_mFa9e+CTUXQAP6i5! zWkE1XEW7p#Hf)*en;jwz9a->zAz_i`!hsKhXP>Lz`0${feZ7>W(tql`)>H_{J+~qeNv1Ye5@mgU{*8K zmWDss>IuHO$fxrI1vr!0X-rs(VrLxc&*v(>(Ud&Tu7CkoQ zOYWda<23c^zdhg|3e5SX^5U}lDXMY~@$VS%3l$WNNk2WYT{u)WV-xmlZlkbzNYk^BoM6~@^v>YKJ|q<%C+UGW|=!&T@yK( zD*yJ7)26{?VlE*Yr7~peyLMGnY|D*5+hKmaSm=i-fuK?sp=U}3BgyXfNk9I2&B-jI z?>!?~2L17wEjk)96ui?`4AmI5kJ$2%Ma#Zz`rmYRMjn_yuHtQa{C&iXTOqSeTM~f5 zp6E9*Z~jsKy{Izo(KOK@u%d|lY0o%(ncy2j!EdBPsQS*e=GFf%AO4lcF7qUR9&ha< z*(dGmxM)VjZ#3RY5=1}o+(&4ek0t^plJ=9sxT44+EX`x8d5kc*M3!-~#c`wYs!;X? zQ!%a@*2?b1vP3^w{BN(@zR@+3U$s$-e$4iCgvd|@EQHI4D_Zq~=?lsa z%!0O-`aH((rD;p)D`e_ewaQ}wfqNz1TM2K!%lj(w$-AYt7;GlDE@VGGDr+={l4(R{ zcbcIooC+576}3Uo3%3c7B0~T6o^{h!agbXy|CX3gfM66QxT<>HB$vLwd?F3o-o; zOWP%@i>1IuWSHbcelD2!1lr?6<~sCD>=&E^tiI=ha`(n;B{cS>qAsvI^wZYqHVk4o zoJ7F7_1Y)0q-P{0!I>;$JxJ;jD}4-4u^FAxPH14q6+TmA29_4>c@}Ya<$(Z+`jT{R zsGz->y4)P?)m=O@2dTPiZ}&ch6;$O*j4f#tISAJq6igcB#gge1*+5)vjUDc7*FG6% zY~Ch8e~q$zYM#Na>B^%Yp z8AN~4!9m4AX21;n(v?M>dGCamxiwjcu6P!r;;aCuT>x*mK;Wp-A9xp4Tzp`?0fuG>-rQ zJb$1ruoo*F@t%vA;*C-nB-Y$8&|ys?Qx$0#7DFv7Ea%{+y)b(R*h}WfZMSzb=HAg2 z8HbgJ^5dO#d*6urCi=l-l5=xXGlbj7-^_FqSAb3pito4XGCy`=d89?x=u|6rO2J>` z82kvH*%xsCDZTX8rRWlUb#Nml9=^;Zn}kjyQAY=MnukA><+dMMIGKGh^U_RJFgPx! zC8dqwppd4*zNT|I18iu%U7c2#UDu?!tr(ZY!<$q^c2{w8prue|XnWAd>#Iidb&hoI zmf~u!$qJi4(J``DUB8Au2&{p*k0?pFpd-H(g*Sa5g#DBwOwVdJ^N{Y@q3>YxO5Y6@ z7FrGW9ad!3&NRyHY$Rj5IMOE(!KV;!v-aBBO;gL{tv@h^~-c<0$ucRLo)e+z&P+=xkWK9TJ* z?aY-q61~W0Jfe~gvq^bR$O^)y1XP6FvZ%g^SX`q!`F<6G7BIMuZ)~~sl0P95rf8Q2koAp|#X!t(W4<-!#@Z;v4uPAgO zQFt%1jP0PSKIZ2$ugy^PBD0JXdnJ)UBYcCj{F zdj^f%A?4IuxKj)!p-ubIUu|@+qR7ypzGCyyODKBBTetKbdVENG7$co#CFDQjWmdTS0I-DF%Dw=kKx=J*N^ljua`LSt@Rm0_Pt&x(bv!i7sR>^)LG?{EJr( z2VZ>C9#whAQTk}TDLAE(Hx0}wwU+P;PKc^KJhEIa{3v28IkzT)#J1z_`h_WG?FV6l z*vb{ddz`@( z-mym3_KMTg}f`H3h=x$_W@MA#;(N5La_eVS>l{CiK=+ zW4O!2)I6JlC5m&YwE#w-0aF$)aYxkCotu=Tnhb5?pw*+t7-b05NnN|~@r+3Mw(GnO z3$n`z=f0lK`4Jeo|F3ZFZ4f;H+M#`Or>nHzaZaAwbBGu%O{|<;KJAnjlUm$2*#yJ# z7xF8lgk6uEnQ~B~TK=);?1kZ;HHlGEkjgx5^*w+Z+|Q#zPJZYSA(j;n5ms}E5M~h% zMwxJn946J5u7`;Z+*X4s9{UN2>*IzOPSyts%4^Y;-+6}n_waTN-*8|e&0wB!(`%h) zqU=&%w@tboH;n31py8GG?N6I`uT8f>1i70^{ ziQ-H1COyzKy0#HhO@8-tn%b$19x7FDe)^mJp(c}_ z6ih}?Atv1XHI6^;mDBoO`~`VnS^AcwGEi;KfDIVv%152Nkg7>$8oC<0Q-p`*3RC&7 zq=fKHD|b7Ya5JrfaXAnFeGRjMtS5-~K zVl##8uPj`FMMrFQK(upEaJ|~R#max*nS|$ta{HD}OJ4=6@2Pyo1#+ZkXUXc;%)UZv z*&7MVRiz64g?KzEyK z;Ly?Q)OM?_8H>COU`iDC`K`)C)GhYOP@pQ}FN%1{Y0G07My-}DCW730 zXdzm5Q)#ycUGtLkf1S`*Ow3-ex{9MyO2G6kkSWek+Eq=>(Wv717`y zl1|vxthrUiA_mN@of}z@<}^i@cNXsyn&+i8o+RE9Ph?aZ?3ZbU89rhNwIZTsp?V+n zIiVoiivYvCWIZ9>cWraia@9z%B)Mx^+$aXE1hrm;jy<^^8-#&@^Ydh z`mP=p6r779@BlgCDc<{In&p6^8OtJ-bl-3TiZg?}HVHLIrmV543qI>!`u;n5g!ok% zxZ@8jgvnGJ?f9)LH!^8$P&gv>QmJ;evRilXSFQ9$T^k1ig;xw1roVQyY|HPQ;1P>=d(6cM?m2I6kj1U6*VsOVV}Z8I3!xP!GI?%`^9zwEn-l_il){n zxvtDsys)9AnsG-MXp(5c7`&A+e9ZR+v#Iq`D37L)Da_G*JdsEa9nyqi?8yt6w#}1g zV*C|hD6j=)0Wk2Ix?v6cVfUO;!sJw{dfy^NRfFlp9rdo?ND6d)g&YN!V(rRa-bnaS z7?}w!(y5AqgJDu*gj_A>M6S93P~TJfBEO1wqfM(eAN!40dj4mBG?)NQ!p`;PP?|wn zrq`WxsX!$LDQ^GDjqcz#?p-PF)Y=*^tp9+30MAf#TTT3EW}fl@&^ev>qAcyIww24G zqLO!QT4shBh2&a!YN{y`#uyaT{Ja5o z$-PsenZ%(Qi50OMdxD9qE{cP`iWJnVVlkULPEBfMb|w94aa+yo(PqhV$8Kzrpwwl^ezOQ)|{_C?MFp?d)6x<_!fY^slNWx z?*De`lIBeL=`;I%gbLsTy0riAH~weyHgssOuCuoyYG5lLF4KRy8D(#hbuJ!ndH=Xq z#pm7XUr#+e?tIpOQbT5#m2L%f*F{XMlmke}gg}kAlK*}(0>oaFfOrceh_g_QLg?R| zUtNzX1A!O+c4Z*{+9G`$d&vr8+pz)OPNf+S8C`U28!UG>3UY&ghAqj3e*8;xP>cU) zqKR&cG;F4PaAhru-%7VdOuFrvr+w=9m#BnqPe;KHwn%8c1s)>QK@#+r7k{`cfSmUkM${vG2}*WP^V%tlD>yNkWSze~4@vbi`ySsePeog_{{l?>E3_0tvtL2|Bm9~K$M*d@l?JtZEs>bIHZ`-S zD|hEU{brWG8lRw*_qUY`O2RzrXZy7M)Fr5Y9sP%n(B~%?rOo!L;4{erS3u)1pVazn z?z>;}SoAVQA_K&0bq*R`&SXk|qc6$20i{^>ltdAyLjvk*>!eC3MHUWvnGH}D39Cj( zNpaU3>bn~eqo&k(ESuS)b4*tAEmCx1bGZECVFzDcVS{)8xh z&x9M(5N8jnJth8?hRhg+&}xur*)-k2^i{PiJv0&Lb&QrSa+}5-)0xcR*?9*v-12!#?YCFMWw{3g`dp>36ew+Bnox}qj#th~3-qP;X^|xtKA6I|gy2t0fHO_jRqZx7aVMynTrcvB}zn|HBKDkWmVs9nY zI!wx(F^yKdh zzoq_u`Zu0`l>GGsYG!GsNRC-b!Yn=bcF2n~uG_hPk0^gn(lg;5gOBo|k#9`ngs*nb>)WpsM>U$go%6ki!F1goF?MBhhgJ}|#M93rFpDE>aAb;k($BkW$u zpu_Esz{820SD#C)KiJq@vXC}tT5Q^oa8b19AE~tYp}WjsVy0SD>_Pz-7``lf|IH)x zVN^_e_e<@23(r1WIdvv5YVycU4eggjPld09j=#y6)ZEw~`b$Rj*#8apA1_P!kJtSp z=YM4UO@RMDQc!TeR`LH5{iS*qndr*=ZxQ9cE8Itf4$tq=e*vn3j#g6LhUYs=b~oc| zO}b)LEk&g!E%Npjycn*(RrHS%Q~s~e|35?Y=Zuv9mDzQ2{KH6p*X!@*`d{$>t?=(x z_**&3f41{~XaAl1HCC&{+VkMM%Uu2rg))+f zxcRZMR=}xbz98H`&&S))JAk{?ZKy%twe?GXe4LQwnLC)V5|dZqx6M1{+)sun8oIo^ zi`@}2X+%4418Q|6djy+TEQR(%izAYu{#lx}-U7(}qN}GZO_;5H$TpoK7@o)oSH^b_ z8yX`!Z3^4g_6>83vLk|@jzs1wFjGKkSMyyJw!@8^=|d-ekj#L9AgPPqR^@M$Wve-t zm>iu-&&c?OAF*g?&*D{4{8;+lxY)>1;A8p9d_L0qgK~6t!qQ&lb`E|BBJ?yHcDX3T-i&g)&gyAr zJ$=ky+<88?ZhWF8th%1DKm;+QgK*mq)E+84&(j#*!;n;Xqhm+vN~tyOE=JA#Lz+ca z6Jll=e0#A*P$uPgjd$}Y?u$Nz*#UjV-2RqITCMWV_Hlw4@9}8WZvuxr$Gdz)6mM#5 zr#}A9CY4t5det}4CzzR`#@&J9c1d7Gs70ji#SLd9VwC)BjF>3V88)JzI0LxYm% z`qJL}=OUMl=L>AB!UspkjqYoIBXVd7R=}9}RkA?6+#k4KA5$%Iw45gaXhMYkyi{#% z&E?C%`zG6MHCHWUK4pnGUa$^HYdPX?VHLBuTC-8}qP#c&G|WAy#*C%3mqnY)X~-r% z*sk^}oW|9P?p@?VyW{u0oQtj2iaJ$u^Rt`PT268$Zl^FwHl!Y`^7&VtxVaX4eD#2q zzL7h9@hMNh*t3R|{BbRNiba3MRVz(X$p$G%YX0RnzJm*vg%)NB9=7n5flJ3XL<&j9 zPtO(f$tvl+_scEL53ga;j)B(Xoj8P^S#+LR2$z>V4W+IC3A^tyBg@=vHtws{I^9)p z8=8?bepgJ$k6TP`z`qZ_D$3T4A<3Qhu{K^$>5fHz^DlCEYRQ=BMKOBLo8;wP<1OhF z$vqu0%37yHT~?~S#*s9h>c+!ZXtnC^t9^91L|V0Fq_{YssBkpo>!P1!mQaQ3)$f50 z>o=nVX2Mi`dlvduHeV%?zITY~X=2V+nV3yBZr-RVWT-#)$ua;dCpJAPyQSuH@aSl? z+H!06S^e*?9xJWY`xa8j%nA0iMhdx1T+wrIDmy?Wpd-UT=DaFGW;dnfXt+SAWzAv- z>Br9V2B+QW!V;C{mFgYmj%$J4VQ=LVr+nWiuQrb+r9{gZ)~XG9clo(nnzf}|l$rrs z)oVp;D{fX3>(cZdHyJ+ZW#6{Hu00~1)iAz-jSRnGYT8w3Z#YWv9}s^#O1zztQuVQa z)c1O#(LJls!M+*Ud)pzmUPyc+eD)q)R>O8xj^5nJPAO79!A8ETa@ILF((Kp|E$`Q$ zHO{=27n{%Z?;vLuA3)UX>+aVYSuQpgcLop6(x=0pMTK6|%9pa1!eR#cJ7(T=+``|q zyf1)JeB1TxflRIH5{1XnQCOG#%zfn@J1{XF)bYBH)(nAic)3@1< zSLMNX6pT8ztXCT6%luX_uluJM3UchznvQkqIh z1*Z$_r=WRLGsnA#;D6?w)B-OnVjR^4br>(jP}Tv8}i*{m6L!$Nob$ zhxHc^Ra&1VCEOY(v#+iGT4prS zfT#1qM!j}FbE9kx?i?R#c)D^88a`aNcspb!$h0HBYhv6hqIuN<9lWRCQ#7xi(+|=~_v9Fxas|uJ1?RV@nbN&SI})+;*E(aS8rDrvD#k-^ zFoUzRX9LEsY?Ys<4AlAU%lL~T;eJ^9T6EA0`kvkjZ~zPfLm*6`-~Ipq0C52*CHf}b zyYS%H93-Z)y?1(V1xIqFX8(PcZjdgD?hrm^S2Fq(oGE@4dj)h5pNTyXi3aX}KcA_? z87qrjqux{0VG<$cwsK&X6`zSE1n+9lzdx?u$k)$?o10qs6B{K>#KHQ^0}v1shWVP^ zDvoc$;XWrQqLXNbGQBitD#B}`BD@sh>e&l}&Q)=&ZY!-CG@VTtx)(nFsHW-jMJyT) zev>S526qN}yenY_0;g5DBZDk_$vXpYpp~eabC=p4EA;_w2IFn6P9>FqlC-)LWfm+B z!kCD{7qwGz-B_~`crR8s_n8;T_9CK>dZi$*+D1@;2KZ%3lN{K6iQ~NM%`4B=Zxlf% z?ZdRKSX&2H0QiSw(9|!$+OFFqL!_Snp(FdE;`mfsIRXotS<_|{HxE%D1~Qm*i)^am z+vYuJP(PS0mOBOIWyuQV5M-u6h{abW0AU*q*kj_95f0SI%}W@tW76r^V$(qKjgFbC z_Drx2^DqDc00-H2HhXT1`Ju#vGerG9;q;2c;=1%_8~r{SRi?eph|tU~t`)|~0z6W_ zn1TBYgk!QF+z*sT;#?r|a<$$S+{0N?$x2-?o07US7y4`1Qh8kqDVQIMl5o!}**E7( z<{fTu?=@>kHU_!Lh`zlE#w@2B=pQCo2RM;+e;mzT>Cys!pGs$=kWIZSQ|C2U9EGkI znd5#eb}zF|TVzEt#~yIoMOTj7@w%N)7q#mRebPLKBSOP*9&2ZCM2DpDgimTV+!kgh z$^b8izR!q9cuSluCF)#Z>S5JnmS)H?8JSpDwn>}(`o}P9SEL>E!H2|Z*LhH9E1v7q zW6ua%_F;zn<2|3(KNg+LOVk3P82}g=2D`pt7?^uAg5#)bs71|(g^^1#6E`)!UVx4sH77>Jj$S;@t`qHwSa%O=sC#5V}z9zlK4 zkMi<3e*r|3vij9SNo>x`4kUS$BQhDKZgd*A&1yU9N6iCw_s1j-BV|*om0dY&Z6Zr# zh1BpIuAJaRQXUS(Z-ewf z)@-;tLZ2WM#kf2(#Tx)q>9Mu9!bMJ&a`n9D=L{mn^s0|2s7*Hq1O~U5GFa3wL?zpP zVj_YSq8S8EMS=qAl%zeLurS9pgJRs_SIuckXdgskKX{kXgfWh3QDL7Pf1+mW1~3Qd z6!j>=bGybeNmm9-2v!VRRUkknNb?1PDqiG?R;d7P152jZa^$)f8_y_CVQctASpY>X7gder~~&I?R* zqRR{xXe3)jvOI@;fVt1Tkj0a+LR7m3fda&`EL5FsM%$6I%qc%`a$jh%{Wk9-zM9@* z%I?qS&9E~!1uNW*nk8|f4%Be#=E@@Ap*VAaHO)~5VWd}Mb-sW0(}Saz&L}8Tby+Q0 zhm~H3ht@C+9QpuwqUm?m3;6|5X9uQx=*{fKcwB$nXy9(#a*CGgmQm?xElo%^mnOT6 zxdK=z$e8e@w?*6qsc-D$9!ogFDgdHf&)O!rkA}p~C7Z$4&Q>wU?JTRMblxB*D&u0m zum!;B)*xcW&KIo5FFWNYBn!(%3%(3*Y%8VjFs05Y4+Q}roS^?ocsqZ9$I6>qRh3$lRb5b7nc5p?Lt#y5PtHJv zuoVaymCe`4_JHa|U0Fu^LJyYhFx+qTq)6Ej=ZuSY_}b6#Fa@^6IlmD5SPH>(q_M5& zY2n5gtn-_UGk9|u6W%9tvIw-O2KN z_pqwW7Sg`>gL1_9=8?+JRTMk7_{YRYYK5X5H#8DlZO-51N-6aU$kOLL&aGd{jOs*u zH4%G3nwpY$!0?wKiF1!@puYgy$<5UuA^Sl_tPmfUK z80fuTrJptaybKdfknH1nNV5wYCmE_w78&%297(v&aMYresGDLj`b zo5SjvTE{!n3LSnREXBC8Auz>|Vd0O*ec-NJ{LmY2z}t$OQ3w zB;gv0ZP6%Oi98bfa4{+BP=z$DdQp_yc-oc2wOE}ym7NGFNEBUbYr0>V=60>POgcxb z?NmwXSsLmh;Gs7vs4sUSpZ$~)sr`&YogmbjjUA_ElYyqRr z9JrasRT=6h#p6|txAxSxjyu{%!)Qeje%Nlo8w!?R&+GBb@UIU}Kf613)P$Yj+?LF* z<|T3re*;kLNP_pxRHKV;or zpc7IP3TQH^BoeXy0F1VU+)DT;S~BWe#!`x_yqLRHM{*o5J!>lLmYywR+;}|w90FFD zcv`QOyr{pyZ-Lte-NBhUJ(1$S33nXRxSPPx96?I*k!8KNwW{o9y(ACQ{$eO`a)NRR zJg?v#TKuz*o8IxQ-H-~wIUT)J?0L%4(2)kud*Em{J-T5Wr;mumXOGY)M$`qKe_rys zViD%4q}QGLE?bzHaKp`e#aE4rW`%As1|F?JEHILCQy5ST9}JoqwC_Kdcl-r_2`Z)X zd^P=u7i1h#wPi?2=DBp#%2c(v2SQOoCc%Ur>tc=)QTRS@g=9Y&nYw0OF2zJ6a>I(x z69SO=1pgignx>-PZ3@iY%1n{VFp%?rT#2x|0lmXdGTnH`=lP6T>m@YJ9hVzlbLy0Q zFoP#`9v0G@LLBfG6@Rp~W4{h?s>%7?tK^i@N400(@PLJFGh|~v&5i+;6htz++xLeO zC=UA+;?h|K>wCHHK~QRu8^D4Q)U$+xCm%AM$PNk#sx*F{e=UEQYAQ0JH*zKQ$otf< z%bHWf$keN_g*~?jkt(TdCCy^N*dCg_?4_n7l1$mIKOFf8W{EPWT&Y`meQh4-kVxU6XR`=)$exG=T&zn` z&%Tg`Z_X7Og0ssvdgMn~Xzh;^-3}|e0nnc6_fH_B{Ak{pFn<77RkvHS;oVcr0265D z42RKVVb}`RG5sf!V>j55Luf^~9VkR|>|7e_Xnfi+!gU@pnBL}1D7f;(zQMyW6S`$; z=zt>4rX-Im$9^f24J_4K}m^_Qp8ktM%+t5%)&3gRIZPW_kAcU?kmmi1(DsBN2A8)hlg%^u}tXo zUjRMNPlot|Qa%x{Nh@{TIS(6g)62j>DJVrrje^^-isg4}Qen8KKl-8c6F)>MckBa8 zFH7FzDQY&*YYbf;gDf)E0=4rPBlPm^o)^ti{K@k2bFGM7R>RQiN;;Fvb!HD>%FUjgXwxb9N>mE+$03c}_ZlZ*)Q#*u@T-JWB1OQqq~q!=kuiG;DY;C31jbTTrO|WRbU(*# zkq;u`V4uKD#;a1^T6b6&-6vs4|MtZNT5~!QV32)g-+01Nnzt@*6xlO9uM#E;7azw= z913mI?N%LoH?(?5Ni9>)=*B(i`GZo&)qtRse@_;PL{CzPqr;%D6^6LXRe0y?+h#3$ z>bC|KU-0-x|7DT|r!V`8T|(j3zg_$JLFsw=ZIan>4;J*=MMHMrc27g&UKI-N7bDLk zTcyTGX9ouPw%wCnJShFP8gS${c_@D-8?ygS`d>=@uXSNhV>R-L_c;HT(*B`3;K9T% zNW-U{i!b0Ku~YcwGTx&Ml;jB2A@ZlhRvTssBey4u780hxxY3tP=#ymx*xBp)=8qxC zxMC1q7C@hVcU=E=ub;J)D}$Aa6>G{HRR!zb893$(%CC?_9)dr+h(xM4B2RhNSLd5V zSsGWouIm?c(Ff5#tK?v9b61cQE|7)@*{EpC_j&ta%MRGWM!!f>m}~x0+rH6;(}MNKO9Ca(=@gSssazkjS?`8kqMVtmU6F zQT2Jb%4U3DhW`t)e~LeyBN32D_EJrJy);L^m-#7&rvD za>lru5H;8mthCp5APvsl-`!b~o|6wU3zuhg4&avlo;}842{l0xS{_b_4}BTbdD41K8Ez{F11Z`i!XAriH6XJhu@|q7W5bF7 zn}Nw55HC?WJ-edid5$>s3`oUcLsZ2rx*~!9gd|Am=sEZv6C-#x%EsN}WuPYR)|K!w z4X3Vr`n}A9PoS&P;tXCoC#QHYLX_-Ygy>xOQgV*zR(c8d6dxu3V~g9TjJeSD&{)*v zN8t)ES~pC^W9+sHOMSc{Tbw~(EQ>WhnJ5k(a~kUm0J|m}U!DM292|1_lCPot{mnPk z_VG#9N92$9lvDD}ku31llwkjuYvHbHQXFm3@O`uWuw(eRRl#-!5wqG4Um5v{m4M#e9n9JV&%SgR&dhxs_}dp-0)g6FRFZQa{m0vuCSTz;$La~NlMn`t_|?>sCn{I2)+FgcZWxiZ&{dwjqmBmdi0ME zsvkLn*ed~0d<&qWbot|9?c3Lxhr%FMkFk(Zsl1S9wrsoBx9j6OhC~{>)3B!FgVF^j zMbkHI7CkGSdhZG9+V3tuu16^PsJlmrD-q+)-0bu%3X_n-A6E<6JJu8%bFOE=J(K&N#lg% zlnp<@SBrcwHlei|S3CWTFGnXMzpMYzy6&$i4j4EMF)Ij~UbFG%p45 z|C>GCSH=__?xlJJ2r+a*jm}{|OfhDW;<=L_BD{MbC*UhqgL}=EU!_Z|(H>J%*vrRD zSp4M;CWOArh%JMj02jZsK70SA(i!xSN*v^Z_28XB`3!>{ZCFJI=mX<@Q*omOcH91nG^^czua66*$XXKa%yExN zeqi|Fvyj*z?N`{qZc4v%+M^3eAe^$et_tPQ&dVC?NNWqTcsJ`X%{_l3(lt!-uB!oX z7Qg(PDp!dpRq$J0!xhU5xyzYuIx~eI3JI#R&S9cRvdl6u;iGP_IzOgw8KGPOK6fv@ zV$q18ObOmrXZw=XRiwr602EQLNe+JS?}q5<*6N~8pis8JR>Zi&z>$onS59f+yO-yr z$JSA+3^_K=MWtYt;m^u5oB62D6%VM3QY7wP{m6mF;^F#bKb}NiPU5=zY2}znA7a4` z-5YKqZbwMH*~3`*b1F_m^QqpaC^pH>jTZ?2Lsj*sodF(P5I1Wwi%fFOcwTH0Tkf_| zUSC_7CM7v!OlYlyX;GJ|2fEWK&HJ_{J)Dhr-|o97wC`e#EMg(H^205W3dc#Uhr+Ec z@OJH3xma;ayBzv+``YpC@sy&5NkJzLpiEVC;$(I1>A5l_j9j3gu^xAWVOe8hcIsG{ zd;3M^^O?2Fj$zJF)J1612}f-Z4PKQ%etjxfgQAWZjqf*4VyRqUJ;wDtHd7IDiwO1- z%;-$)n;^C*KXhh0c)nx0o>*m=SE37%?H(4pbl!G3{DT9={;ohp( zpsda@4Xr*|$;7VxEv(d+6d&j^EZc$N($T z{)cFp*x)`*o1roe?hUpIKtB**JcepVvSZwNL5;Ts#39+*`j6~L79HIXv`DoO=r9Wm zp_q=w6*!w6%!SOmzk&m?GC0LXUfL%FQYvu#4#KeDJwPtizyL{aP4@A zIROPfe=-;n{&ROU{v=!aJ@d}{#OO+QE7mwpYiLY=R*lkOCq@E@JR!+@Il&oURH2hf zAMK%;Bov!Eqa7#%{(!>T_Xp6ZcJ%v6UEivTOLF z2Ylw@v${OeIH8nYL7l!$k;7Us(@KnkLJSPahFyf`K%r=lbTptcGEL06X7UPuqRTLl@J}4|+4QCabfZ1|nEq>w6~@*rWS$5}+ZQ z@hOe`pz{HwIkzv$*{pY6Wfpbqu;?lL)ZT3)L8)5P@Bh#e+lIBlj+oT1DyyB^uv*g| zSUbh$FrVb!SoMi*BlJ3u?_WyMpk}s|lQ3@;MC_YXkXaqp-=x!SpUHnF(`D&ex1#rr z=c7e7q2SEGX8EDeGxW7@HH%os)6q(x>muTFl@(Xw6KSH-&SgWz__xf~?}4SMP4;}$ znS?zFmPOv)#8W#*#ua|kginIP+mX02$A^o5m+q!`Z%yKxXo~vEiAElJMbC$tBw7gRfrz*9!7G)@^(&X92U1U7y7+d6lw=)eQmn(3yuRkCvCLj}dO5A) zMWo2hN=$f7MSVC7eB*2~DMO$CJ-+uynd+DVh(jYVDtepo<-muRb}0f~9!$w>?)^oH zy}8h#d1JGkGZa8Yu+OB9w?fhu{`8D~?PJ57MYRPf0sX2JW2MAE#s6pmOc<$GBMFRPv)0JO{7L!q3$+XCn1=SkU^Q1Z0=g zfsrB}983Hzt$XW-5J9kacHHrwO|EEHH!|c1k@Hu^e>YJI0|u|$<=V6a7A*qVhENq;kjSimV*goQMv#LfmWBqx~z=x zD_2m#COF*kCMuAnoxZjR}?QCLeft`~#HUtAF#g}=1Ce6M*Wx4V89}WNeE3Jd~ z)}znf_Div3&DiKZP8*pJU_pK&yA(nfU&a?Vd)a?TuHK^7n(0#V>_VCeRD)D731t~? zaf-%`gb)dWZ_0z!ZIozUBm-U@9(U7-2{1f~#I&!GP;vOe^Y|G6;+0kK`_JH}A$R%{ z)t?FiRUSHr`X?SaS(zAxxLjKld!Qmj{b<@z0qJ{SwdtySg+HFF@?wGVvFvkiYEZ$Dlfhy%@jxBZ*(_Hm65dNrCr$GZCGieSCj zDH|L@I&xnPJ>VaLt;I#N-CcnCoeR7oryIS!nS_yiz~e7Pd$Nr^37c+8DFe^=Su^!ptWx`52r*nrP zQUViYA?GY4REpj@dRhuOa0nsg%y%5a6R0;_+29EgoE>6Jlx(fyN=U==iZoZtxG(7t zZSnYc9}kToj4D$CEE=QOcN{y2P88~ z$l@YLxJqD@e7Kd=bpR&o0|UJiIQX^IOgCpv7ZS||J?A|3+BA~EiwY?A8)XQs403iuZ{rI6C7EE$Q|h| z=I<*`x?*n9KE|XDhLkMeWrNUiEW+lj4$ELlf*Eo=0$5>*s)~IrhW;+Nbp1P?7Nn@coG^9dC8q&Ozc}+@CG(h znk}Zk#C|4o6;#PNwGU}Nk{!7FB$`$s5OY8O-)weQoYHR9%pSyCa#MH>!C08TybFtS zwaMp;A7M1dbdR{3cykY&R9QwtU=WV}=T0wap&~;4R@z8%IdF}^-9zAhBPVBF0ymZ+ zojZo%IWWxqeIOm#EO+aVFNdM7qv}D5MT((UDR!yh%yt4!=8uJ=x}CZALF?QUxGq{U zTb73HCiv3`i#R>rg(MP z>|rw^TZqdF4AgDs1LYo~tfUefJxwSG@*PG*JXRbMeh)P}3GM9A>70qLoW zhUpv0A<02;TUz4*pitdOx!^Hq&xhuf+Z%(?KEA;PNNlw1nzn?uM953pToLWm@*O^{ zVCR5**Qh z<@6|*dKFSoYEuwcfPq=ce*`+w-^uI9a@Zf;C`4rKj`nAuhbdhx!QR;$Csf zGQ}lP)Da+Oo^&KrddMe1jjG43$~$1(32zCO+fweegh8QXg{HIxUgiadskse~IA^hj z(t9ovz({g9huPt^nExE;h9F>;{fcMg8aujVPPXw}KjB7J^pe|hCAcn9vM;efGAELv zlm3mGRpt5v#3{1!-j$&dBfjZ8aOfjilzfsaC!tDY04DiZiBn@X zANc}VVRUB|((eli6MAUMYDU^%cerC5jN4|$9aoaWwby5eP9T$|8Et&FG$vvmM1qH( zef%l$)&^(`J2z}qn)8{fx;v|D?bC6}Gn=X%oz>oFurvHjHB~>*^Pdvb38K<5Zoa|o z=U1LNvJc*{_*u&!i(WhZEqjBfOj1FG>X&^pfg=|!Du8B4L1;f9VqP!p; zzzQ|r#~%#uT+ovegTPZo<#$Q*-&a{O(#69C$(uO7vH|#BbEP>dl29 z*cn$P1H245JdrGF=bv#sy{8HFi&WD`2s9MWCLbwfW6+r*NK)AgQ(cWTa}YQ%lK}xo z>xj(F%k)SAKF8WjFH2e?xavhHRgQX498K*$(MxfjEex*=xXw#R6fBh$wITTHf^aAp`4`)_SgbrmDdg=JwyA#u2qz8rG z*Pi~1N+UTd$`*04-CiHdGyb1K9QZ_h9`Wf>iBG!1+bmSP?`}q=oaZ^lwz$D0X|mNM z){_MRqdWSbxB;lgOj7dvDU+=od&ZZ8n9}g^E+;Es6*Yvk%p}7bXQ;ag?{k#8H*mfH znncDtX0Sexy|nA-Q*&X#0;Fn=!WXW_v@w8q9P?-Jc%TS$|NbTzAndHRepXkBTNO*c|aR@8}9+Dr@+}alb%w5S6Wh z_pCXhnQfWOAX@AIMl36`a)jhSFyXxgs1udR%pA!i_ev@Z!f5T0s-7R}yEysUfw~a? z#|r&g$4LLo3)#%hl;?j^;Xh`nJ=Ouq-J$cJ7s2udT7JyVK9l+(HTGj0xc<_1#yM#a zV`bOrMwJ<0%UM*5><*%iFuWS1TCn;agR|BT2$%0&>DQbL;nTZ^Ahio2c zQ;8sO!U}Ywn=-MxZCepr<_0pg#+8(99!BS$@3%0mt z+aYVLU$wI~KSd1LnWIKDGa!3^9zON@J~onrO5a*>Lv@)0%!&fiAxM-6D6R{~NTOCH zD`q|Sw2jYB-~fjZG;!-l1m!5+^Nn)mGy*okP{yh-l~d?OR+RRw@|r@~->vPB%Kt-Fq{;AJ zLf5@e^XFU&lCwjqvJwOJ!~&h@hp_`9gXz|a5+srZlH17e6OK)zay@emjdIH;7Rtwm z7)f(Q1C3qaMYqKz$K2T4%$N=F3OPZ~*KlNW16&(ZYX^GhwVCGYx(#Oez6_V4jibr>dT|0+ z#iHX%yrTg4M$+(enBT!fUA-Tw6*Wph#W56n95FSj&eT z4dBTyV)ezj$mX1iukol>W>pf+{&)%uv5E12^NJ1p@P>J;wT-i>kfxU%Q@DEb0f5J$ zQxB1^fM8$_KH)L$y!Huy9<}Ot$q0)aiDyl|J@ho+ZK(Rr&&rGs<(c2g%fA)>9DmDtVf-zR;LUnZYr)+UF$pw=E0)W>uyqy#r#R3|X5ikgNk<0a!4%c-gwjkh$d(gGP^Q5P zKsCVaio&*=vD-%Wmj&_|?w220%V&*xY2P0{{-de=NRc9W+SrS`xGXnsj$77q2yPcl z*Q!XmPbu8&Iseb0mkXY53O~f3AFh|LDrExZ*%G+M z@E$CgR*#`(q?CQb#wu4Zr9uvEg@iP~z+XYlTH$Ro zMKjtUcVdHf=}*)ycFp>g;$hS-bw*XTF78_<3=N`;bskN?^!15zfeQF@TNp&p9~t8X z8-#fkGHQ*p5gTkXDPH=OL5$v4m*Dt>h>m&`@CE}R99sD7Fh5rwCI;4sQl(;@4oTG)sX%vc&6+qO=PSC6eR4W>&c?)mjHNnRfa1U#wcdg~zYSStl_pmm%rr{szrf`b%MeGu2UV|1eJ{)v@c zCidqQBSD!gpii;5fk26P<9Ag8J#o|~h z5htNkp~uCHQ%Xc;N`?_^KIr*5smKcH1zYlND^dxJq4@+ttbA^~K7d8qTtz!m1Xy7) zc=luuhIGDIkqIS*qodr6!Bhwz6ipB~txVFw;z0|`3U8&eU(OExbJq43fbjZcQjK*D zlh&^7XA+KUj^sVTaMZxSj$MEe9j@Ab9d329sRLUqedq<35SF^Uaw!m)I;nlF-!tNE z%F>}-vS)f1TM}~~Gli^k)WtnWlm0QKBezJr&ie}O2g7J>54WWAM?xgxo`4NMb_NDWy1!s!8;P2P0G9i2{v$m7d@%WAqt+J1wH4gBXE<{8284c$t6*=h5F?| zQ-wabJ)Q}2%YwsB)GMdaO=b*Y1D=kZ_s?&vV^4DB8l&QXN6;$j5m^~KgVXGWV2UtY z(fgX^>OThtA_@9Mk)uwmWyGAlJFa_CEPAPP72Tgu4sLPCV{3-2$G_GL?Z)ac*+o** z!FQ|EMPx3j{YasTq*%aKma&`fij#P+CL5~;$}FGgo)qk?I?LGuM+VO_#flhkjRi!d z^lZjMz*#J)&_qcV;l;0 zPq8Ah?&iLjjSHG6zQ1`cN1WATEX?gquN49>88<{jhakK@MyBS(-;YUOw)Y&!4v<#~thQv(!zLr{8@`KC%tl))dq&4zV zV(*g@r9#)u8;=SL_meCcG9+10dfB^Tj+3ekD8 zhl7c>G7r~|Kd^lVEdFrfw74XC*(aSvbbpu1?|z(ZhzoMOnaeuc3CSQ5Oy5Wggb`Uu zGl$%=)MkFX$cK7OUZ&5}tyqX4jm!sKKViBLe6!L*e|-hsDselDJtqe1YZ`3q0Zno5 z0<@*2R0#M(_z-OSk}*aa^@IXlttl7zILFYCa=JnYGaZWOPU7Azc{&^Cq;sI8%=(a6 z9Ef#dGg_vJGh_7JMK0pXrF)Bin%-Im)Ts9upg__D@RczvF7)_hY~+HxSK%m$%kBqbq|>v^)}DPh%yx(LjaN)6MMM6nkFP?qfssK?~Vb zdHhDi4Ue9byxxjEenE*xNu3>S0n*5fa0VYWqDt0aYhw6o| zy3S(vV}Ep7WMP)Yo*durQayHo`)Ev^_HJ|Dr{k|yBwpfwer5VJ{cY>VN6t5EAE!Jn zt!`#$Zc@9rCK=0^e{1I>pE*I;5w`=Wp}Q?)nK+6JJP^M%IxU2Nltioh>6n*%J`LXd?V?rzIvsUpmHI~ zT=v);`y0eLW?(d#rSBBzp)TiV-NRxy+zxP~l(LEwolr=uQvG#uNj~Roc z7+{F$*F1~Q?L%zlI0LPE=&O`I!|*ICfy$>)t-J&!S-yD0I}RJwo7n<$K98J<+=bKzKd8r-Ei>b6_l|`6bfR9d)*%i3 zR;tkr!~0O)mB>NX%_~yUx3c2Bd_F1rSa$2WXWzBoTou= zTOb^dXKXxapggQU)BY|o#T+ZEnjl8GpnGfhQS;=)Ru+X=5QJ3yJboY!&mGN-V1M;K9hCtXT2DHS9R@S{EzP!uIL8wHWWFo93y?7 z5__KdLWjd@ng~`Un72$_lMcRRx6BO(de3hzdjxz5&#>W-l@JH>5+RRiB^2KdZycNa z$}=7s;-ZBIAF{YyfDO~nhWk9oaA}KNy|dkQbY2bDdPci~WV9+~xRyy5B-oBdX>J{p%*QP0IrTljr0KzoEQMzZyQs49eyEL4fy2X z!0t~QRx}$bsl7f|jR7Ax+nj4Z9x=?_X=Sk~An&1wv9qgP=w%F39pMDz{h&{6#>|fm zKCEz&FL0DvE<3l=A?)v$E}mzXy}GGdji7pl%>eSRx_OAexp0N>VHSifMvL?My7rBizf&^>*X$CGZl&XNxBNmRJB1+(;f= z$%5o^yMVMl0{=aM`49q)3s-b@x2@Hx({>8LJ&2Lq)3i{vqapb63*OV4_jR`0_1vU- zG?egv7DrI?X3Wan0=qOU8F1*b>@9}u7&HWT5P5omXA`hV0}~xxdu-5SXw$FHVz3X0 z5>zEJ3MmKx4pnE>#4Jm2s(!e?Fb53P9&x${;jCq z*fZoGvkW4;cL3NA4{_6lER0xI*fcfIRZK;md79*RCh*T==;EV~dpv5=F|E|%QWuVKkXOg}6BAoCI=)%8lme=QeFSYTBa^K~- z7A<~6z!z>CM=({+OfgaXFnYyCpOmM~oVj$mja~Ua5*K+@cV*?7C>Ehq?YnB$+}=il zc0U@91nQih<#>)3pf?!HN!V=`k#*AkQxyqfT@5k=9i-4(ASqg5f0DgQyR}ZgnYDrb zF4#u9XTupmQuYxWs@D2cuy<9ZqHB<;$zsfgxXG`qeL+Bl#h0pb_B2WT*|cH3#_W4U zJ0MUyHx@3RF8CUFvywHbhjw*!tX! zS-D!;*a@Qf6g_r1LPxH-VwB@?yQl<4$sf&|eRmxip7@0Y>_f}*d*#b+^xrka1ESQI zAGkbQ0KrBfIyZxPX@;@vPrKgnU)na{8;ZcgMBVDE2$bsN^*fF@X=<0%ZZ8 zoEh+FpkhN*?PXqS!zf^4PMz~Ly$+daTb{%uc}Rg5zrHzxpkOkl2}=USVt}KxX|)H1 zR4PmuQC;nmLa)mgi%9It7DUDisM%xya$#O^b>a%2%soFo{p#APWKQlX4JuPrelGZS zcR52|q81X%-0HPv@H9ce`=a_#yA{lnFL$j6Wgr-QfxBz>sWsz;13~($_1&Tym|5f% z0}ua7NMj?XB1z}6{cJ&3ejGIU?i20UD_C-N(rD+urm%9+ypuy-AXWM3t+su?JErKZYoiM5kje%g&Tl#X=CS9ef-U=&jC%btG4?-AN9NaW!)XEFyA!9{ zR)GHUX6w7r<4nLfvlcB~dEg~H{6`;ye-hxD0;=$^sM$mLDPdPs{57Z>7~fc%A{<2o zNEl}yvelWEq_9S$h^(o&ndOWh8HR@yP!cJE(7LYj~YT&CKdSx(kaaBg0dr5qbC7MB zvrPB3BrH7o@_Y(!hFP12@r%3&{!A5oGXraEzsspAyCPL}7Li&RZRSdVsW_(=1jHxh zl%hHHwJ#$27J&F0Uft zBn{+7!C%eDM#C(RZrm5~|7af$FMH1?w?^hrbnd48cG26TL{q7>0q%w^dzx^}n0*I{ z2w1i+L*cYF5pmS|cnhPP=JI1FZoW!y2q#Br@<6hOHY`D=m_14VZqGh~#POnD()-Kh zjL%bJMK|68DkAUf?Y@Zcw~K|c$gI;dk|zsl#G*RX(*Z^soV{dyF@tFi2CvJ&ta0mg z;7|b~jvuCpNI_`t#Ks_sFGLE)&?ONojjvE4=%v9e8VCj2LvD9Nn@psAST9?SA`FsG zPc`oONWOzA19U$k2`SVA8D?|;q^Z5PnDt%?UFC}~ysbYmP_EGoRTd>QqJ`F^7LqZs zpiX`}CY*&Og0&#QtUd{($%0`@JJhYE_qzFPSmRn1O>~xEFjl)wi9zDiC^5p4SLDGx zuUlv}e4hl6zs3piDB6cG4N$>lp7o~anvz*rQ4VkkL!7Q}#q}=%fI~xr;s8BZGab@6 zdD=N#qPHmj#gav6L2}iEC-)_W=tW6AZ4|MakqHq8HjJ^xv2I57#Gdb1)P3@uDXBP) zLGZd)(68E-)`aCLeJIi8i+WD+9j_mneslP-K=-w_7>0ZD+Bes+GjvB*3Vpq2eDqpb z(=0XcHV{yeVVz(jPT~?vllGbY-oNY=jd}oBor#kJlL7AQs)c7U+4v87Nff@?IQ=5`SUM+d#!9Uee|JZq?%}ms04fCqujE9P+mwXK0Y8pKKd5|=&a&An{V(|m<5E)Q89%%1iwFQu9vum`g)4pLIzYrFoxQtneSIR|Sf zdi7*tND2yne7+aJGMp(VX3lZj`?Ky=L8iYJLI4@N!pAc9RB9oPu}2FAysUA@qxngU z`Md_cQ23~$(5)36h|z4drKgfb-kmGw&@Oum9nQw`9-OVcAIYa^Q`(>fF`YnRphlrEB)l zMiQJ~{coL3Tj@z_+n4>n>W%pSQJ<_Wqca%(8=T{@?UKOP?$lngabTbk)|ad7J1{qfWPViP$8@x;o}Sw}miV~UBFQ7cY2D`FbQ zi9Th<0mSbUuVtI7bVvAZ(=m1hBM*Ap&WxRbUz<`E~M%YfPecYxR=J`QW1 zazD7nX#ZiL*0}*J_$`gt1ae#)?aw)%$d^Hy2lpCq_oP|);5W~F@QKSeYNCUK(pw~b z!5+3N^iej9Uega()w0+T9oZ2TK-HuuCnaznI98eSVmQ*$g zP?!+mhlvU48bbt`&H~W;ESe&wusAIMVRw5r?BQx^*viHA4@7J}OJjXa+~h@cEIu%y zd=L?66B@$Z96BBg(gMI&<)1DNzB(o8tXePt4w8)CSyTe@BttEh9~^v%PPj+s5AvP` z?IvV>gpv#-xaeY1>3Q6Fh)GUv)K`kSHyQmn=pu{nw8X=ar`AgebiB%FQk$CKrj$9< z^jc8Ww^#;Y;$5mAGz15`HHOM8ugY>h4$7vq52mne0qx{M^0KQ=kM^#^C#7e*DKw=c z0;T&OLJL^V3Z-=GqU-0Jv9#GP027hu9XA9B@i_QS>|gP??xdHa-`oy{2#z73FdX0w zx;EMHOIZ4nJNW72eBUsfE|bT=YcwyAek+*hKf%Cr-1$}*rtD<;!V(dknC_$n(CCH} z5jAbu2?Ph75?9CR;AQA9VCQdVDgZx_O<`;t-!Huty@lySWgWXAGCuk{am>r+Q^hb# zRqzW4PdlZcpPIH^CYcpI?%QcSxs>JmAY~}+kFqLLGLtZiR`-Q|smm<-mC5AuU$i1I zi~I&pS6nP<7Y}^^E@KOfxc^Z>s}55FDB5c@Svl=iGNxQ?uj_;1nan4+aR*NIHj(Gl_I^KJnO9JDh08PJ}y zE(yCm`u2bqtMIso0@g5ys13XVS^3fep@zr5zm|xq2I#X!q6L4Fw8M?f<)lHHK7yt5 zU53yyDi``x6xxy#8QUB4`7Er6n_t_3n8r(dX(lyE<>w28QUAM20Go8^odVI*S$ zz_^8eNoM<`64E^-#sa$Jz>gB4;=V?m6az|&XYCPl;Sh8=2V<0eE8kt}zM`#c8cU<7 zXG^{TeC7kNFTUR@w|0>|R{avt}>b0k+ZgIuyxkWh6S&&^c|QSl6?==uv+Ei+EA`s}NWV zu151woGKndylm{)55P%T4zxM(Ih_U-@J>GmQu+Y$66aU)?%go1CKH^}qG)JDcVL`s z%?#l#B7wE*sX1C0Yhdi+c_-msrf3>3^$fV`tO+8oTqDjONKFb&62WOfnzG)CR4t<< zx>WpC;C_<=aV^X8U>TDyoHW8m53@jhoE|c~0OFsS0~bf(>xQezz(^+bJqW2IGqOseXA zv?gI0fx?H<00ENrkNfa=4j`(`-8`Iyt}`Jn6@z0X_j1AVcrc+j4%{5y62lQ!A$6ft zK$*oSdKazLjVMQIqG>V_=>THsAfeRyK^ovw8oKy$gDiaXJnaS$AJC!og!@3{`WNq- zMmC6rha?|>!l+dRCaHk_^kcY?F)g!34E1)2`i5;|FK~;$UCE4fDL~d0NT(Izzvhi( zN7&_7Kh;t!clT$j_W#(!Ecpq-Uh2de00WlZXoUfDwlu-;#iS;p{0hnr#+1s{^WrvX zBi#q8c9>@UsYV+p>olFDIK_RA5f$qGsq0NZeAkzR&Z~vlPjr*$;!8&g!Lu}HyOlq} z(;zO=k)fYeoc3tqeu;|dZW6ev0JdmaGk2!(^qvYt;bnVGKxO>0o&x;tDrA;QfDM=l za}}0xZ9l&y5-3mP2HP*hfHjSP^M*!nIW50W$ciH2M8q$5@VLYURbC6h96JBSzz=8p zvM}i(aH?8m>Qut8u)cS>_JB8-1qiJ5&pOt`qrvjP)@BG<21}1mwReb z6srph2qd+^KuzMXtJ!Z6-?d&i#+Yt3tCC>4Bmo%ARjP(Vo10}zShD3Dx ze{NTGp6j=0Hc9w7eyKRY0poTvC*CbPrFpaesKY2zG^KT9T1m{Y$$93}Wm&E`00fb~ zTWBVK6RAv-0S5T{GxtI)$KnI&cKs{GA)F0a_}okt^05zF$0d>m zQH0m#A+nPiBQyAq`OkuVd5_3D{5bB)v_A4G1Bg(GB;Ae{NVz!!r>_bulBmey&FT>7 zQZU5p#y!kh9k>U!=|l(+hT=|Xdu8N4>>1O*CvVB=|&P7ErRHC-@Cg z0$D?rhIINt^VIg;lKrz>for^O$SAX=Bzyf24DoMzXB3-f)R0n5?bt z2mDYzExln(UNXzg92xr810~LFi}@M!e+|1q{DU2nz?yhZh|1XZe?(ti-JjkF&|fM2 z5JDqu?uLF6z?svAWe_vH!xz;X&}t6Pq&@li%ynEx9(VgfxrDosQ7aL-%L8?sc4l~` z8S<+t1^DykIr)m$$YD>?omSFu9|NEao10;J9AsxH8=F`d?vz=GSIGyxJ#CKHhT=HPju&t~~%lwqi}y>X$E^klfL` zmJ_gV=|d|53g)w6P_xHk?X0d98K8CWp#GG*vy`x<<;GQW93us8w~2ye?6A_UA13} z-TvP}j6eO=3lpP4t>-dFx_=w1#}j+PoP|ks2_Ns1r-C!r3AB-7qQ?YcLgt{}S~(8L z6?pNHHcW}`6D)q$75*e^zvmLw))MZ>LxfdwRQy{6a^>r@lWa#kz~2An22f5=zXli_ zHTXTsgW9L`{c}05(_Y1=%O$t=H>k4g``Kky%ALYBzYAi|CNEGIeE}G%;fe0|@&KFc z8l#6gX|H~kUtF5Ty0NdZ6nBpQFqzle5-?efQ3I}L% zyxi(-L36M4BU=Ekut9^;FybYbeh@ao&Es|F%=muHEpIf?xgV9FyY{VD?{aLfC5XM^ zVCJU2Em*uoNdjXL{mhIsNT|b;q-G-Voi+5Ypp44g+OLA$Tx~P2O1hHFA=B zB)Vhr_I9Uw;D4Ox7Dz%62%7n?``=*Vf6+B;@|o+I-8}yrg^cndJtb>|4SKYR;7Fua znY<>I{!=6Vfy%T(!mt)bukjV1%(79YIM1UGy$i(Ah*!RVO+G@|Of{UsDU z(EIqrWcgIDWM(@!V-0^di4Ah;Ja66Oz8)rp6;MU^9Pvot*=F|J4fW?k#@XL0tUinG z^Kw=M0mf|-PxhZr(QHHlm;vKZ1d#}MHnQ9zf1UsLH`KdNHNL@0{@mX2(bFq3=bfU< z&Jk?gmu>9vmq5ppK})uD-B(Tc(^dk`H6zl0_uP+Gx!aU;Q(nOtxv`gka{go3wBw^0 zGF6C!6t@!u>1TewFf zKP`2E(PpLj?f$*XY2XKYkWM4*BGaGCb5(5`Qpj1eie2R@X%HIRGF3Dd@#M<*C zUifusB&nSASg;Ak0z>oAc(Zah>iMI80A#hy60hxl00Owsz15*iUdrobVKxZFOz8V~ zwPMl$W30ZM$jGhiztZ>6cf2$3*VxM)hhhqH#@o)o!|fxEqhlO7aES5!bAPh$B%f|+ zS(3a{mQJ#h(?0-yM*6xmkq7?(lAR0r{AgH-eTfXb6k>@CZ`H2#^c6CYNq>1m&B#k8 za!^RlKp=%Qw{qyuuj&-kKnf}u=OcA`-=oXrxH%~2^WzstZs8n&N349_{>+6c01v=} zcL=czQ1e!07YMWW=o45g(VfsG(4#P6#$&g1L5`5vrGG7eO9Qk12rVY0c zY?uW?Ssvz4BqT=CbQ(lEz~xNS;k?9L7mN$P)gILoIa!4+UbBu$U~3%>Q?s;lPKa{S zC5LMkLKfv3)&M5datgo#+mybuE&tNDb_4g$(($Kl0RMT3zuco!#s{)mc=dj+QFFSMoKz14!)n za}x~(ZNnl^d*VBR=<+n1=J@jn4-9oISctVYr-f0Ah+=aKi?Kkz9!-iBh-taB^Q}M` zN|;16cd6p>c$Uc`__=IC@cyuaJ`3Jv5>+{6mOAg%JHygT^uUZC!Se%j=f%Z{S-FH3T`}q7R-CrW#81S5Ff0Ino*A|aH;gd$oI0lvPxXZ z2s90w&Xkz*N;c<>(Qf_*jyu)mdBpiUwjrn?sSDNx4pO2TROe^;hXN-Wz|OsX>dtnm zGJ^7E3rw_W$!jlomcOj=bnBfJQDGNj@wI8#C#`)+0_HfKU+OKjB?-UA+>=4Wd048I z@nXfyBX`xhfBwALy?8L|cH_pDr%YzPCjZ+Y5thSbH+g&)D2BW_v#mAOB zG#dd*SVDw(uS!csGt6V?S93QlTk3j2Y9ml{12lz6grPw3DWyCP^PZ<#h%F;3vEHvCpA5oRXi0n);(%erOwQGx0|Q#2{#wFm1n8QU#cN09Rpl zACRwbd6vqN9#WMIsOW~2gK)V?sKUKIAUESU+BFk5rwx!9mPf>q@3e^K0E;k`k3!m# zVOmMb*;GQ^jD^k|U~We9Oi1o|l$;hfxLaNZBwrXnMx=+g3}N>BZ~|7-T46gxnZ43*1u z$Pi;1PsT(yGvW@0go6GDCK+Ka9XChzNs*T$)0yNZhwcqw4#=>Nn+$`rD5UtO!*q!`)jU<}emhNBdu-4RMoTVmm4`<^DQkL>@i*-Jw3pC`{YvSi`O5C9?p z5It1*UW&b(0?-ryMOPVP+QwndP%*NL&`t3J-~j-QG;ANmil6`@1WkEifDA%}DS->* zAQN&jn4l?24i5SO6gY}I7$i0A2}n=i_A@D&_zMpPDBKDh!&Q-S#;|0D9ZUfZCK)s$ zVgqiR{x`3GD6j-gVan0mv%P=FQZOl|^#X#}Gli=f57wk@d3R@v41fCL#V=poP#HuFmyE8GKC}Ix#uWaWI`ke+LZ>4 zn3}4|;~>;d7aTSB!LhyL5F|14 zDNGN5o9x^r7XZqgjUmmsBnV4AekSZ5+}ZVq%|vnpIKKwBR-XhYiQ5T}phW(U5j&V@ z=$QKc+>L3mW8OIC$kV+b;(s##4;qE}6r=oE%zE-20+_oViGq%gx>oDw%~d zAJeeCX%vpmQDdUDaGE_BFp-Q3=l4@BwGdC2f7WQw5{LU~hs)uhkYM=3d;^FEBg+%o zYpa>^0hzeHOpF|*@lZv+n(UFSv(db2@Wa^kTzog}0QJJ>gDDgxTVuHFOkB_?u1b@e z?Ci_BU|1pjz9{T@;G^buQBTIGKcA+}ksBeUghbpj9$t~z#NW>?XhdnC6f=pAF9=h* zBu#zB!a$2%KOZ$Hziq5QV!CYb#RuL_Rg8Pqp#wi?)1t4SwaC=Z3*c={B1jZYxhg?3%-7*vZ zxmx#25H2$g0P3`_LMW)c07woPck&pWOOiieBr_J%_TJxoSxNVebGr^`O*`0u%JIbf zo5Nb+B46C;JF6K2MQYqdRIrs~I-^MzX5&Ad&D7cYGV-Z-{{U8Ef9`28u-QgEoBPoe`_-8v%h=_l&fn-y zL~_^jCn@r`_kruHH3gsY_i4o^z2Y-;W_6#ad$)S3Bla)$pGw%*?;^*+l1o9ZoY&9D zlLsefpZz4Z{?y}&IuVD-=?QEXxS0<+=B7+sH=&R>PnTaMGc1YaU^MJ^ombpX z+wI>H5o8rx%~%ZU$yeprzuAD}4or$Njg0BYDq;4(>B zQ-L^}Z>SF0Np3B;ivfT+9fu@N!olxVpOq{0Q}D$N6bvS#FxZh5ktSu5O5Dj38W0Va z10qamSgKmGTqkgNM%+HRZ+`v!-y(ng*K#uT55VXU2cA+^-qyaF8&k(FAke*h;M7rV*9ZoZ{zl?NjLX1k|H@1wpuM3G^YbQBVG$~?(9 zRKh=^P>6m0HX43P)8D0~1)rM|l8G0cdmnW~b@rREglhe~Lc)IT6wdn0-aD0WKegSs zxgH(TCW)5J62n|LB-ezJGbcS>z6spH1kC{%X8t}PrXWbE=hs&+*44UpM+X#CVO!V1fWVO(1>T;|V+ zKq>k*BRS4Fift*IBXvpjva%`P2t+# zcYUAYZkxjF4n0@vgSSk<_gA?O`Y-_$DTP&koFWA5k5f9ReXu+wvMz;$;5ZqIG3osw z_m}7thVn@cvj~!5D#n~V_QX*J(pD&?E@LRv*w2&YBJ$wl|0m1MWV|uB%pVv;hJU0K zGU{Km`v<4(52WBsVOl8=P9D(62y%rpvs6Ar%AGMt@?9~MYh$1g5RiN;0{PAu0Fr!X z48j?W#hV5YvMXAmSN6yk#`MhW{<$*-3!t2YGQxH|L;x~N#z`tGVa zGNN8}PkHqrm(Kf3_1E4`ea$rF-`E%oc$X0?5@mPo7erA{LH3xLySgJIHC+ipl*Rqv z!XMz(ozKu& z)^)u_KI}0*U1L6={L6SrWRG*Ovw-;O?N|n# zG~WgCK{Lu7e6NT^LVPOqWdo$Hb*`+u!ic0=-F0?PK3;m&ug$ld^>4T^RRjc`-nuVc0qUIfU=P9zC_bq@4fUgjQJRsQv*bNOV1AzPT& zQ*;aMe86`(!$cvzxA$~d%Y*st1zt$(Y8)tv$m_>Tqi6<~?HxoMT76esTYXmIJgFaM zQfQ4e5+4s^y`A3xUGw;C7bP(@arShoX3;Qks^!zl!51N8oNSY7@#6AB;+xJ}VHc$i zSY8H9ow;fM>z)fnJKwYT@#zRY0x)3 zJ9qA~%#%jDr-iZx{cn~_iGy^J1#h|>=om?w+)uTXlhIL)GPh+pFL{|C-X3n(#q|h9 zDO;Q9rOrl_Kx323zX?M2-q%LjL`j#NR{Xxd@m#ZtZH5TU0i~V?0c?K~$C)9};C8$v2*{M$AOiUL*O%lMjRY z+_Kg@ob)->HM`{Sp2@^S)cf*xhK^p=g>?J}kW9_mMSEW=7dIT6AOG>S+^8iYiDPTr$^NXyitmAv&U%5SuU?mEA@WnW zjRv%X*F`ng;xeEoKeiXwCBV~Nu~?NHs&pgorjg6a;ng)Q+mBRw{am>4XNiHj^BZHf zY&LeXD#zCar}%X0_#&Pk9K6q_h9)-I3^$H1HlM!T;RCtp>JlfeXX1f9F4vrOFCNq1 zGMafVFyUpxD0E=>sQO^cq>K7Sxte0~Ngv18)w9rV!mD!^d!o9|e|Wg@Huw`L#8b9^ zhk2gr&K-5V`oK$Pe;`ATo15j{_ZBD-uTgi?#K<+)UGsZWIZbC?BI>)uFN-`XAzx#% znHl|vmp9SvXz%kYVj*4Od5m0obO15ays|uQZ-cr21~S;dCbaF~S23L9Tcq3Rca54q zPxXe~pGW_qQG0v)leVPQ%;aVFzCKR|+#daRyOH?1J0)rl>tD*^j&sgmovx1giS}XW z$-WjhOSp1|@<@rWpHX}A$~{4GJN-C(gDnw#NaSN333bp!W)BUKMXfi?O;J@?zQ{H! zb>DYl#msr~04PKCnNfCiAimzxQc3it%>p*GEhd{{Vas;6C3@+2g%D(tLvU zN7|`9mj=9gm{W!AGpk;zV-M`M&RK#lI z`Ecgf=j88KmTC!aJ3-VXqH}@%lburgTJy%-&qimqH}=^m5wWWJU(z$X>s9;RU~lTS zvR3zKd5)CTWyD9`{{v{9y8Y|*nct}EQ@iBb7Gi}yth@gMNT7ay?8mn|K)nB3h7c%1 zr8buJQt{nDVd=v95BSs`oO&9Ha-8_Q^v6uSdRp=yli3!bL^cI(GnxJ4!C8T?xu3T; zRF~Wldo2`~9nBDm63QN=+^+SUnlg?GJN)>2oieOrkbees2!x6} zUQ-0re}{FvsWUntdj=a_(Xv9^CG_n5=PEeR-(h`vX?MKU_VmG3Tb<-Dc=HsP)v*Mh^2%99d#cVlV&w{kO#TCHDtTu@#sl=Pqfa zmxcYW`sm-NDx$jHYud)ND$hJ$afhp~y|r70BsS^qd%n9}w>cFyDBhWd(sfAo&C9Q|^njm^%CzbxzrNt5~#kyZZeH%;Nw$rpe~! z)C*s^%TXbD=}|5YQI|rgFIg`+ynJzVvwCi-vG3Q6U3x$gG4JB2s!7)S5HEFujp%DP zJE^_B2q9CA5_wdXEIcrPOO_6-g(ds$p`QGJ>|5HRB@j;Cf*}_xt#9ESb5ivBI7v(V zd*bfZ%TX}cwAy1sJ6CxwWHjkpKfM#G4tt?kw;5U_jG&Q8M!_z#%*5Xh9L35<@tSLU z{%$)L|9wN6XyH?>9P`~paje=S2QY3y5B*k1Ek?Ya{-uqzckq?nBeQgSgHJ(-yI$>i zIWWcZ`X!`xfH^Oz5I42NnbHG#P6_}jVXQ`*F9Mbg0m_x*Gt?IH{eyj9+2V`fy_;!8 zF*B1&{o%5W<@Q5I>d#DPrTxzB&V-zM`?zq!y?C99D0dv6TWvhZpWxLCbZp$E1XNi3^H%qc3x|T#sGK$XLyWx~HgdlHWIyBaP~xN;Pk2saLTUbq48v){ z@zV6uQx)zDA1r}g@6fHz=Pzo@2wgR2`5H6N6`#xGEy>jn>?*&h`7J%G(*h0MY)him zt{V;4lemoeWYQQ_7r8#$8=R&PmS~|_FJzMI)d5{N=JS?6sHqIiNhknZf-+QioD zdB60N>sf(~fhgsRcSNo@*ho&SDIHJIVbvzM8ND1&<)vV)E|puMDGOx)A3!6zWU$Qr zqGU=Y@USyy*ug@fAh}UV0Rj;~xHbk31tiw*`5L9&;A+(?njE552r47)qyr!TYKui~yC=8^}#a_V%1);-ze z(V~;A^Lst`HrS=6H{UkjD^EgxrqDYWxnO7i6)=fu8P0HfX*&OXSEtlhDh5j)g`|G~ za5LNQt|8?Tv%p5s?Rk9F=U%d(hwQ=OEX3x`*sNltbsmM}1px_xnw&`m24*m91IYGy6v=XvlTO*?$KYQpttWI-G2UyY|<>Q5UoTzjtyg!TO6LQaUUrod6lQPW(kAKIq~N;J+{ zmuh@uo2q^9#a@6=lUnyZ-JG19)?^_zttMtv}0Gw$x}RYh*QUx~vOfAQqeiedpgp! zh6fkm1=bES;;iqsVy}QYyD@V?#>860S=df@eonhi%e6h%Qb*OnIc&(;%KknRTXQRi zn&7y`o`8FZaI>v_d%h9>hZaCPXpFU5@|>~Z$Z@n-$r)jQ-&XzOT1D@|1TgP)tA?^? zGKtM~-G&~AMRq}-##3`$OkHF?l~n25z9Y~+6}Zyd%aGV4;v5t6jr--aEG59zcVVcWk07quZDGnMS#vu%Qk@1oYacbn&_S-#?WF+`-Fw|Nm& z4lS>ZukbFZ)-Q3MdqD)p>ZYA+Z|6P+&%8I}Ju_gC( z3q1+)maTNRY~xI{AF|E*qycUa{_MLhKN=ioXymS}tea||Pq?mm_IXTIQwGyXdp|%d z?d!<)#EYiu2m!H0zF|iFt-JTlkLII9UN&(#al#t5G>?v`xGp4f>k( zEX!M}bb6_SE2~7rZ^N?gLaI<}D?b=E-YDKuiQ%EO7?6C3r*RRTUn#xn#w)qZ|EwX{b--*(~$H`w9OuNn$5sJ@M&laelrJwjzXhQvC=xt&OP@z zt>v|QdEU)01FcE!e)MTypdOu>-Q4Rz*EoHoWXC{6H}ZKdmR=$0v8m}JRr3
5gK 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 XcQ2>=<7pl}sS29!>gHzrvRnNJDFI(z diff --git a/modules/__pycache__/fun_gen.cpython-310.pyc b/modules/__pycache__/fun_gen.cpython-310.pyc index fe59a5a502df50fa194555328e09210aad8fc13d..45bfcef71ee84d90fae03496fdd79f7935e3683c 100644 GIT binary patch delta 238 zcmZqSTg}It&&$ij00f`=BGSAj^7gYiF)}bzHBDS}glQq;x`AF>*0-F!Hc)Fp4lrFfuiWu!=FteB=`pW1RevS%ZrksLUCNiziK1W@#2#z?s6E z!ncsAh9!kxk|B*Vm_buu@+OuL-dl|EzZex>asZWTa!uxCHRHU+UX)splbD=3*_qXf z(ROkjs{#ifBO4>j&mxP-%UHKFnof>m(^gFZ8O{SF_<&B4W0Ya$V`O0}vId#Maf>yt cG`FC#NN@5wHVHNhpjeUh4mL(MMwXvNrjyUIZf7)_+{&iSm^^tSo2ae@NHxbT*1Xc(g32NtAg_oCMDTzJ VP7t94B1}Pq#pKUyrp$Ug>Hu{CDtZ6_ diff --git a/modules/__pycache__/fun_io.cpython-310.pyc b/modules/__pycache__/fun_io.cpython-310.pyc index 266ccad0d02bd338dd5601b02bdeaad7920917cf..7ce14ffae32b7eecfb20992c5b9b86fa0739ba96 100644 GIT binary patch delta 2175 zcmZ`)O>7fK6rP#=_1a!LjsrNc%}+zXflvrZ(?1cRq(ML%eu7j5S`m}A9XpBbj5mZt zV@#k(y+jD+QYy8I;lza|tX^WNG+B~(;#X%Ce^eQyIHMe45h+nG1-&Aj*a zdvAZ+{nr7z5)NAguD3rO&wtx~(@xT#ZtnS}E#b6(Le3_g4krokltafzCUyVuqDt?{ zymq&708Azs8a}@?c;iMx@YJdROYJUMrGhkRoe3srf;ezrXKR>e39`zXq^=0Isx%2D z9}=OA5tX>=;s7Oem6D|vR}-oruD)tCNy#h)t|_QDPMj`KxU8aq6yi0}~!U&K=_!!;fHLUxS}laFI{6EbMRw#F9Xus9LAFyDn4z7u4C)Q!3Qj#3Z6ZUF&%h`@Eo zFYISHYTXi=LpQpUSHKagNgC))JqYT-wPo1ye^hgeN4zO$u|{(L`9-?-IAcR>LB=7Q6q}6QsbJR9GSyCtFB80tZIWT)=1=;sFPr zJD?HBMtCiL$VVg&Sx^Y92VY7zLvV8qmz8W00y}M*`SwPf)L}kG8X0qx!v`dfkjRga zy@iMA>wlbj_~l>$CjRvZ6$+o<#_Qf-CbEHEJ79&shOif*6Ts7!a=cRWwAxg*n)5WC zEf;d0Qk$Rk)X7S9(bE>DavTpy_VhZy&-sVLi>ADo##& zid%6#I^(G`v)M~tV6u|S=g((d*HaMGVwQ8znXP(C(Yb_&a?aavCm%Y{N4t=7&lk(? zNUp$hPyiDktn~p{N;frWR8eUhZW~G;%JV(!sN2vK^6Ih-g6MjyB-)P!bBGNg&yz=U0Ym$Lbv=v*WsfR*H|^7 z&;un)KGjo4j8RW_Dzn*Q+5bwsA6(=I0hS`8@0}SM9_i~DdjIg)*wLYT)YJ17KAUwj zLH_cyVA=Xjpr7{0Wg`*cM^Lh!Q)mL|frG=hKv=`(!I%kg#pougQ$`sJDNKpe5Y<^1 zwb*~!!fE-;NYN3QG=I-&B_OD)K_N#ReOg7Dx*-u0QPGlDL@<#nlf}p`c`!|b}~^#pVF9hCZ9JuUwXZ0(JxcOd>sE3a)-ucsUbs-X1k{_HLe@LgVutdHyb(-%gbI8Hz*DL-u4mM;7jyYy zf$u^21VBdd)O=;$9_;}<%A6Gxb>4Sc&S z???JFS5Wxsekj|D(1oxIVOiSI*IAUx!DuJF@wF2@L_7F#TuC8d-{EP5a|r$Nhn5rc zoQ%bK(=`wP(UIO>WRmByZf+R9f4Nqyl=*7%Q6oBW={&=%q|HN?|yK&N_Nt|v{XcHoSS`^6wH5G*hDXE}U1+2R3pTzb? z<4wTT29V0Jk!T(gTo4IJNE~S|94bx-sYShV*aHWuf_kaAloOShw?Qqlnr~*_y!U3_ zd$W(`em|P_Qz?_lw)oxawQGad(`C4IefE|HE6gr^|4&Z^8@IG?4xf-Jmlaa{uO;P3 zhG%8(K15-@+4o$)_mq(B1Ku@?Nn8hFU>4l^y%0;9# z{7umn$Kv_ABkJ8qaoe3pX}VVkJ;DcKiVTmVVNJj?9O1Q8K%lKz0o!ByGQuKr6Rxqt zxAQ^D?F;p_v2Ima)Q9?2&zz|34gQWM%spGc7jOjHk=L59*h$t z7RYs+o_P8Bba(u;%_b~B?|q<9?{Co<#HLdv>j34>?3p;Vv( z1t{||r3?lyD+ONQDiUg%|KB6A z+eD=HJV(RDReq@Pn;pa(??gw zQ~3qENkU5D|2@+3Frh-2CamEX`Q!W!!`t~u=-qsnUxYCmBE9B|wyfz0>CodAql7A9 z9+wKsP{q#+^Kc386v}W0|12z?pkU&Q*_newW9_F$#kW}_rB4V~@%+$PevjeTL(l6w zQev0!x1mXR2bJO^T)?BnnJRgR5*;si<<-**LM1aQtgs36w+nh>Vue7-7iq#ep-0%k XFN+nJ!Jmp_sf;mU95HhAS*3pgMr8OJ diff --git a/modules/__pycache__/fun_meteo.cpython-310.pyc b/modules/__pycache__/fun_meteo.cpython-310.pyc index eef6ac330ae1c9900004ede6a2fe065e31a1bea1..9b7b2f04b24a35b32e7660ff006eeb425bcb2753 100644 GIT binary patch delta 1443 zcmZ8hPj4GV6rY`4@2>wRwi7!|f}cM;_nY^d_h)8zRs5?_i>uWV!RPlM z9}VwSUepeZyD#23IwU{?`-u%ESl^K+4ivz~w+r-~96P@}`q?mEF8(wYV06V&go)nfz)H0tUt> zp^=#(&8*PO3Za$R1{smeNu6au=QW}$!yvhZ*=<-3xEodxN*h)gDx>+o#46M_7VEIJ zVQoWWZAp8HL03lRpys9y5Fp=EXb$NfN$FGEEkiVQ!O#d8>zNg0@v5{er*=x91v@J% zE6K`Lby=IIChV^0vc4i&8MoX@%QycAiSa!sdltO}E7egw*#+`fg^d#zvJz9p(yv?_dkdU5)VvhQC! z^v+IZZufDo8}_;|v%8PGVHcF)&E`k%2`r5T)5K4D11<#XC4MvtcrULs@n+_`(O_0T zJH0sh;>$a|lLw!lpWilR3@4E{;*t13gCA<~krsDRD4UJPJOZJ=D^*|^ zV5$nwuuiUMoXnLqX7W;5SFs<7ea$-1j&35wSo$FshwDuQi$+{oEM(7Bc_`vA7T{yv zx#uwVq}tO-zMXJBJ9BH2>e7U8xqNcR2E=0ssKEYOxf}kC^cvSa>bjPMFF?NVntua%*Fc}F9k6JFTabQ zp`FZik2=({YP4o-juO3Lv}nU@n7d|+ZqbfWp(R>E*`XElrr{bE6_-dpE-D9amp&Y! zJCOG;@1!b3lW;uEJ1-vUCH=F@N&lqv_GWVK$6*YUfZx;KOj1EnFRQD28U6E AWdHyG delta 199 zcmew?w2+f8pO=@50SE+E8>H=FoyaG{s4-DnftNXjrG+7iErltVL6dc3#w12Y&B?zR zCv$TEl@_ss2)4;HneMVlfSBTwYnbi%K~lF^%Tf|c5?3-58BRXM?9IqKS&YRt&KM}8 z$$pDHFSW$k#m%IM38YCHL`Z@4r? N7Y{QBBL^c7I{;p=DKr28 diff --git a/modules/__pycache__/fun_plot_2D.cpython-310.pyc b/modules/__pycache__/fun_plot_2D.cpython-310.pyc index 514a52268a09e5d1cd3cbc5cb85245a1977878f1..a412d7e5169770d913a178125dbc5e162b433ab2 100644 GIT binary patch delta 21 acmeC>>gD3e=jG*M0D?zq;b|Lr7+C=@VFXqH delta 21 bcmeC>>gD3e=jG*M0D^5Fex+{YVPpjWI8+6e diff --git a/modules/fun_gen.py b/modules/fun_gen.py index 7c62ed6..a878e18 100644 --- a/modules/fun_gen.py +++ b/modules/fun_gen.py @@ -31,9 +31,10 @@ def load_config(config): # Date conversion # --------------- global jdini,jdend - jdini=datetime.strptime(data["date_ini"],'%Y-%m-%d').toordinal() - jdend=datetime.strptime(data["date_end"],'%Y-%m-%d').toordinal() + jdini = datetime.strptime(data["date_ini"],'%Y-%m-%d').toordinal() + jdend = datetime.strptime(data["date_end"],'%Y-%m-%d').toordinal() + os.system('mkdir -p '+diagdir) os.system('mkdir -p '+diagdir+'/'+config) print('----------------------------------') @@ -84,7 +85,7 @@ def load_variable(config,var): json.loads(par[3].lower()),\ par[4],float(par[5]),\ float(par[6]),\ - par[7],\ + par[7].replace('_',' '),\ par[8] # ------------------------------ # diff --git a/modules/fun_io.py b/modules/fun_io.py index 403edbd..52f3661 100644 --- a/modules/fun_io.py +++ b/modules/fun_io.py @@ -73,6 +73,73 @@ def get_var_2D(fname,var,hour,lev): return arr + +# ------------------ # +# Load 2D satellites # +# ------------------ # +def get_sat_2D(fname,var): + + try : + ds = xr.open_dataset(fname) + arr = ds[var][:,:].squeeze() + ds.close() + + except Exception as e : + file_error(e,fname,inspect.currentframe().f_code.co_name) + + return arr + + +# -------------------- # +# Vertical integration # +# -------------------- # +def get_integre_2D(fname,var,levels,hour): + + # Load model data + ds = xr.open_dataset(fname) + arr = np.array(ds[var][hour,:,:,:].squeeze()) + ds.close() + + # Compute thickness of levels + thick = np.zeros(levels.shape[0]) + tot = 0 + for l in range(0,levels.shape[0]): + thick[l] = (levels[l]-tot)*2 + tot += thick[l] + + lmax = 10 + tot = np.sum(thick[0:lmax]) + + # Integrate values + coeff_att = 0.03 + + att = arr[0,:,:].copy().squeeze() + att[:] = 0 + + iarr = arr[0,:,:].copy().squeeze() + iarr[:] = 0 + + for l in range(0,lmax): + + tmp = np.array(arr[l,:,:]) + + idx = np.where(np.isnan(tmp)) + tmp[idx] = 0. + + corr = np.ones([att.shape[0],att.shape[1]])-coeff_att*att + corr[np.where(corr<0)] = 0 + + iarr[:] += tmp*thick[l]*corr + + att = att + tmp*thick[l] + + iarr[iarr==0.] = np.nan + iarr = iarr*0.05#/tot + + return iarr + + + # ----------------- # # Load 3D variables # # ----------------- # @@ -90,7 +157,8 @@ def get_var_3D(fname,hours,var,**kargs): try: - ds = xr.open_dataset(fname) + #ds = xr.open_dataset(fname) + ds = Dataset(fname,format='NETCDF4-CLASSIC') # Reduce domain try: @@ -131,12 +199,14 @@ def get_model_val_3d(fname,hours,var,lon_mod,lat_mod,lev_mod,lon,lat,depth): var3d = var3d.flatten() + var3d[np.where(var3d > 9999) ] = np.nan + # Interpolation val = griddata((LON,LAT,LEV),var3d,(lon,lat,depth),method=itp_meth) end = np.round(time.time()-start,decimals=2) - print('Interpolation done for [',lon.shape[0],'] data in',end,'sec') + print('Interpolation done for [',lon.shape[0],'] data in',end,'sec',end='\r') return val diff --git a/modules/fun_io.py_old b/modules/fun_io.py_old new file mode 100644 index 0000000..f893434 --- /dev/null +++ b/modules/fun_io.py_old @@ -0,0 +1,342 @@ +# --------------# +# Functions I/O # +# --------------# +import xarray as xr +import numpy as np +import datetime as dt +import os +from glob import glob +import matplotlib.pyplot as plt +from scipy.interpolate import griddata +import keyword +import inspect +import time +from netCDF4 import Dataset + + + +# ------------ # +# Get filename # +# ------------ # +def get_filename(jd,ftag): + + from fun_gen import outdir + + # Get filename + dobj = dt.datetime.fromordinal(jd) + dtag = dobj.strftime('%Y%m%d') + + search = outdir+'/'+dtag+'_h-OGS--'+ftag+'-MITgcmBFM-pilot8-b*_fc-v01.nc' + + try : + fname = glob(search )[0] + + except Exception as e : + file_error(e,search,inspect.currentframe().f_code.co_name) + + return fname,dtag + + +# ------------ # +# Load lon/lat # +# ------------ # +def load_coords(): + + from fun_gen import outdir + + try : + search = outdir+'/*TEMP*.nc' + ds = xr.open_dataset(glob(search)[0]) + lon = np.array(ds['longitude']) + lat = np.array(ds['latitude']) + levels = np.array(ds['depth']) + ds.close() + + except Exception as e : + file_error(e,search,inspect.currentframe().f_code.co_name) + + return lon,lat,levels + + +# ----------------- # +# Load 2D variables # +# ----------------- # +def get_var_2D(fname,var,hour,lev): + + try : + ds = xr.open_dataset(fname) + arr = ds[var][hour,int(lev),:,:].squeeze() + ds.close() + + except Exception as e : + file_error(e,search,inspect.currentframe().f_code.co_name) + + return arr + + +# ------------------ # +# Load 2D satellites # +# ------------------ # +def get_sat_2D(fname,var): + + try : + ds = xr.open_dataset(fname) + arr = ds[var][:,:].squeeze() + ds.close() + + except Exception as e : + file_error(e,search,inspect.currentframe().f_code.co_name) + + return arr + + +# -------------------- # +# Vertical integration # +# -------------------- # +def get_integre_2D(fname,var,levels,hour): + + # Load model data + ds = xr.open_dataset(fname) + arr = ds[var][hour,:,:,:].squeeze() + ds.close() + + # Compute thickness of levels + thick = np.zeros(levels.shape[0]) + tot = 0 + for l in range(0,levels.shape[0]): + thick[l] = (levels[l]-tot)*2 + tot += thick[l] + + lmax = 10 + tot = np.sum(thick[0:lmax]) + + # Integrate values + coeff_att = 0.3 + + iarr = arr[0,:,:].squeeze()*thick[0] + att = iarr*coeff_att + + for l in range(0,lmax): + + tmp = np.array(arr[l,:,:]) + + idx = np.where(np.isnan(tmp)) + tmp[idx] = 0. + + att = att + coeff_att*tmp*thick[l] + + iarr[:] += tmp*thick[l]*att + + + iarr = iarr/tot + + return iarr + + + +# ----------------- # +# Load 3D variables # +# ----------------- # +def get_var_3D(fname,hours,var,**kargs): + + try : + + dmn = kargs['domain'] + + idz = np.array(dmn[0][0]) + idy = np.array(dmn[1][0]) + idx = np.array(dmn[2][0]) + except: + pass + + try: + + #ds = xr.open_dataset(fname) + ds = Dataset(fname,format='NETCDF4-CLASSIC') + + # Reduce domain + try: + arr = ds[var][hours,idz,idy,idx] + arr = arr.squeeze() + + except: + arr = ds[var][hours,:,:,:].squeeze() + + ds.close() + + except Exception as e: + file_error(e,fname,inspect.currentframe().f_code.co_name) + + return arr + + +# ------------------------ # +# Get value from 3D fields # +# ------------------------ # +def get_model_val_3d(fname,hours,var,lon_mod,lat_mod,lev_mod,lon,lat,depth): + + start = time.time() + + from fun_gen import itp_meth,dump + + # Load file + dump = float(dump) + idx = np.where( (lon_mod > lon[0]-dump) & (lon_mod < lon[0]+dump) ) + idy = np.where( (lat_mod > lat[0]-dump) & (lat_mod < lat[0]+dump) ) + idz = np.where( (lev_mod < depth[-1]+800)) + + var3d = np.array(get_var_3D(fname,hours,var,domain=[idz,idy,idx])) + + # Prepare interpolation + LAT,LEV,LON = np.meshgrid(lat_mod[idy],lev_mod[idz],lon_mod[idx]) + LAT,LON,LEV = LAT.flatten(),LON.flatten(),LEV.flatten() + + var3d = var3d.flatten() + + var3d[np.where(var3d > 9999) ] = np.nan + + # Interpolation + val = griddata((LON,LAT,LEV),var3d,(lon,lat,depth),method=itp_meth) + + end = np.round(time.time()-start,decimals=2) + + print('Interpolation done for [',lon.shape[0],'] data in',end,'sec',end='\r') + + return val + + + +# ----------- # +# Save figure # +# ----------- # +def savefig(fout): + + from fun_gen import tight,fig_res + + if tight == "True" : + plt.savefig(fout,bbox_inches='tight',dpi=int(fig_res)) + + else: + plt.savefig(fout,dpi=int(fig_res)) + + print('[SAVED FIG] '+fout) + + + + +# ---------- # +# File error # +# ---------- # +def file_error(e,fname,func): + + print(e,'\n') + print('=> in',func,':') + print('Error processing file',fname) + + if not os.path.exists(fname): + print('File not found') + + else: + print('Loading error') + + exit(1) + + +# ----------------- # +# Load DYFAMED data # +# ----------------- # +def load_dyfamed(year,var): + + fname = 'dyfamed-mooring/OS_DYFAMED_'+str(year)+'_D_TSCTD.nc' + ds = xr.open_dataset(fname) + time = ds['TIME'].values + depth = ds['DEPTH'].values + data = ds[var].values + ds.close() + + + print('File',fname,'loaded') + return time,depth,data + + + +# --------------- # +# Load MOOSE data # +# --------------- # +def load_moose(year,var): + + fname = glob('data/'+year+'_*.nc')[0] + ds = xr.open_dataset(fname) + time = ds['TIME'].values + depth = ds['PRES'].values + lon = ds['LONGITUDE'].values + lat = ds['LATITUDE'].values + data = ds[var].values + ds.close() + + + # Convert date + jdlist = [] + for i in range(0,time.shape[0]): + + time = np.array(time,dtype=str) + dstr = time[i].split(' ')[0] + jdlist.append(dt.datetime.strptime(dstr,'%Y-%m-%d').toordinal()) + + + return jdlist,depth,lon,lat,data + + + +def write_nc(fname,time,lon,lat,var,data,long_name,units): + + + # Open file + dataset = Dataset(fname,'w',format='NETCDF4_CLASSIC') + + # Create dimension + dlon = dataset.createDimension('longitude',lon.shape[0]) + dlat = dataset.createDimension('latitude',lat.shape[0]) + dlat = dataset.createDimension('time',1) + + # Create variables & set attributes + vlon = dataset.createVariable('longitude',np.float32,('longitude')) + vlon.units = "degrees east" + vlon.long_name = "longitude" + vlon[:] = lon + + vlat = dataset.createVariable('latitude',np.float32,('latitude')) + vlat.units = "degrees north" + vlat.long_name = "latitude" + vlat[:] = lat + + vtime = dataset.createVariable('time',np.float32,('time')) + vtime.units = "hours since 1900-01-01 00:00:00" + vtime.calendar = "gregorian" + + vtime[:] = time + + + # Write variable to NetCDF + # ------------------------ + vdata = dataset.createVariable(var,np.float32,('time','latitude','longitude'),fill_value=-9999) + vdata.units = units + vdata.long_name = long_name + vdata[:] = data + + print('') + print('[FILE SAVED] '+fname+'\n') + dataset.close() + + + + + + + + + + + + + diff --git a/modules/fun_meteo.py b/modules/fun_meteo.py index 1931df9..cd2a562 100644 --- a/modules/fun_meteo.py +++ b/modules/fun_meteo.py @@ -4,6 +4,7 @@ from netCDF4 import Dataset import datetime as dt import numpy as np +import os @@ -57,4 +58,58 @@ def write_nc_meteo(fname,mdini,mdend,lon,lat,var,data,long_name,units): +# Load meteo variables through already +# interpolated fields +# ------------------------------------ +def load_meteo(config,jd,var): + + from fun_gen import meteo_ini,day_cycle,n_cycle,diagdir + + # Get file tag + + tags = [] # File tag Variable name + # ------------------------------------------------------ + tags.append(['2m_temperature', 't2m' ]) + tags.append(['mean_sea_level_pressure', 'msl' ]) + tags.append(['2m_relative_humidity', 'r2' ]) + tags.append(['surface_net_solar_radiation', 'ssr' ]) + tags.append(['surface_net_thermal_radiation', 'str' ]) + tags.append(['total_precipitation', 'tp' ]) + tags.append(['uwind', 'u10' ]) + tags.append(['vwind', 'v10' ]) + + tags = np.array(tags) + idx = np.where(tags[:,1] == var) + + tag = tags[idx,0][0][0] + + # Get filename + idir = os.path.join(diagdir,config,'METEO','ITP_NC') + + # Meteo start + mdini = dt.datetime.strptime(meteo_ini,'%Y-%m-%d').toordinal() + + # Concerned cycle start + jdlist = np.arange(mdini,mdini+n_cycle*day_cycle,day_cycle) + + idx = np.amax(np.where(jdlist <= jd)) + + dstart = dt.datetime.fromordinal(jdlist[idx]) + dend = dt.datetime.fromordinal(jdlist[idx]+day_cycle-1) + + delta = jd-jdlist[idx] + + tstart = dstart.strftime('%Y%m%d') + tend = dend.strftime('%Y%m%d') + + dtag = tstart+'_'+tend + + fname = idir+'/reanalysis-cerra-single-levels_'+tag+'_'+dtag+'.nc' + + + ds = Dataset(fname,format='NETCDF4-CLASSIC') + arr = ds[var][delta*8,:,:].squeeze() + ds.close() + + return arr diff --git a/plot/compute_data_vs_sat.py b/plot/compute_data_vs_sat.py new file mode 100644 index 0000000..1615026 --- /dev/null +++ b/plot/compute_data_vs_sat.py @@ -0,0 +1,172 @@ +# --------------------- # +# 2D plotting function # +# --------------------- # +import warnings +warnings.simplefilter("ignore") + +from fun_gen import * +from fun_io import * +from fun_plot_2D import * +from fun_meteo import load_meteo +import sys,os +from glob import glob + +import numpy as np +from numpy import array as npa +import xarray as xr +import datetime as dt +import cv2 + + +def gkern(l, sig): + """\ + creates gaussian kernel with side length `l` and a sigma of `sig` + """ + ax = np.linspace(-(l - 1) / 2., (l - 1) / 2., l) + gauss = np.exp(-0.5 * np.square(ax) / np.square(sig)) + kernel = np.outer(gauss, gauss) + return kernel / np.sum(kernel) + + + +# Get args +# -------- +config=sys.argv[1] # Configuration name +var=sys.argv[2] # Variable name +sat=sys.argv[3] # Dataset dir + + +# Load parameters +# --------------- +load_config(config) +from fun_gen import * + +# Create diagnostic arborescence +#null = create_arbo(config,var,'PLOT_SAT') +#os.system('mkdir -p '+savedir) + +# Initialize plot +# --------------- + +# Load lon/lat +# ------------ +lon,lat,levels = load_coords() + +# Load proj +# --------- +exec('proj = ' + fig_proj) +cb_done = 'False' + +# Init figure +# ----------- +time_series = [] + +if var == 'chl': + hours = range(12,13) +elif var == 'thetao': + hours = range(0,1) + +# Loop on files +# ------------- +print('Processing') +for jd in range(jdini,jdend+1): + + for hour in hours: + # Get current variable parameters + vname, ftag, cmap, islog, vmod, vmin, vmax, label, units\ + = load_variable(config,var) + + + # PLOT MODEL + # ---------- + + # Get filename + fname,dtag = get_filename(jd,ftag) + + + # Get 2D variable + if var != 'chl': + var2d = get_var_2D(fname,var,hour,3) # !!!! + var2d = np.array(var2d) + + else: + var2d = get_integre_2D(fname,var,levels,hour) + var2d = np.array(var2d) + + + # Remove coastal zone + mask = var2d.copy() + + mask[np.where(~np.isnan(mask))] = 0 + mask[np.where(np.isnan(mask)) ] = 1 + + #kernel = np.ones((35,35)) + kernel = gkern(40,20) + + mask = cv2.dilate(mask, kernel, iterations=1) + + var2d[mask > 0] = np.nan + + # Load data for SST correction + if var == 'thetao': + t2m = load_meteo(config,jd,'t2m') + + + # Title + date = dt.datetime.fromordinal(jd) + y,m,d = date.strftime('%Y'),date.strftime('%m'),date.strftime('%d') + + + # PLOT DATA + # --------- + ddir = os.path.join(diagdir,config,sat,var,'ITP_NC') + fname = ddir+'/'+var+'_'+dtag+'.nc' + sat2d = get_sat_2D(fname,var) + sat2d = np.array(sat2d) + + + if var == 'chl': + sat2d[mask>0] = np.nan + + + # Apply correction to sst + + if var == 'thetao': + sat2d = sat2d - 273.16 # Kelvin to C + + #t2m = np.array(t2m) - 273.16 + #idx = np.where(sat2d<9999) + #bias = np.mean(sat2d[idx]-t2m[idx]) + #print(bias) + + sat2d = sat2d # SST correction + + # Save file + # --------- + savedir = ddir+'/PLOT' + os.system('mkdir -p '+savedir) + + + # Store time series + # ----------------- + + idx_good = np.where( (~np.isnan(sat2d)) & (~np.isnan(var2d)) ) + idx_tot = np.where( ~np.isnan(var2d) ) + + sat2d = sat2d[idx_good] + var2d = np.array(var2d)[idx_good] + + idx_good = np.array(idx_good) + idx_tot = np.array(idx_tot) + + perc = float(idx_good.shape[1])/float(idx_tot.shape[1]) + + time_series.append([jd,np.mean(var2d),np.mean(sat2d),perc]) + print(jd,np.mean(var2d),np.mean(sat2d),perc) + + + +plt.close() + + + diff --git a/plot/make_plot_data_vs_sat.py b/plot/make_plot_data_vs_sat.py new file mode 100644 index 0000000..e69de29 diff --git a/plot/make_plot_section.py b/plot/make_plot_section.py index d6e2171..150e1e6 100644 --- a/plot/make_plot_section.py +++ b/plot/make_plot_section.py @@ -141,7 +141,7 @@ sec = var3d[:,idmin:idmax,idfix] fig, ax = plt.subplots(1,1,figsize=(float(fig_secx), float(fig_secy))) - sec = np.flip(sec) + sec = np.flip(sec) sec = np.fliplr(sec) # Interpolate data diff --git a/plot/plot_data_vs_sat.py b/plot/plot_data_vs_sat.py new file mode 100644 index 0000000..771f5d1 --- /dev/null +++ b/plot/plot_data_vs_sat.py @@ -0,0 +1,245 @@ +# --------------------- # +# 2D plotting function # +# --------------------- # +import warnings +warnings.simplefilter("ignore") + +from fun_gen import * +from fun_io import * +from fun_plot_2D import * +from fun_meteo import load_meteo +import sys,os +from glob import glob + +import numpy as np +from numpy import array as npa +import xarray as xr +import datetime as dt +import cv2 + +import cartopy.feature as cfeature +import cartopy.crs as ccrs +from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER +import matplotlib.colors as colors +import matplotlib.pyplot as plt +import matplotlib +matplotlib.use("Agg") + +import cmocean +import cmcrameri + +def gkern(l, sig): + """\ + creates gaussian kernel with side length `l` and a sigma of `sig` + """ + ax = np.linspace(-(l - 1) / 2., (l - 1) / 2., l) + gauss = np.exp(-0.5 * np.square(ax) / np.square(sig)) + kernel = np.outer(gauss, gauss) + return kernel / np.sum(kernel) + + + +# Get args +# -------- +config=sys.argv[1] # Configuration name +var=sys.argv[2] # Variable name +sat=sys.argv[3] # Dataset dir + + +# Load parameters +# --------------- +load_config(config) +from fun_gen import * + +# Create diagnostic arborescence +#null = create_arbo(config,var,'PLOT_SAT') +#os.system('mkdir -p '+savedir) + +# Initialize plot +# --------------- + +# Load lon/lat +# ------------ +lon,lat,levels = load_coords() + +# Load proj +# --------- +exec('proj = ' + fig_proj) +cb_done = 'False' + +# Init figure +# ----------- +extent = [lon.min(),lon.max(),lat.min(),lat.max()] + +plt.figure(1) + +fig, (ax1, ax2) = plt.subplots(1,2,figsize=(float(fig_sx_sat), float(fig_sy_sat)), subplot_kw={'projection': proj},constrained_layout=True) +init_fig(ax1,extent,proj) +init_fig(ax2,extent,proj) + +time_series = [] + +if var == 'chl': + hours = range(12,13) +elif var == 'thetao': + hours = range(0,1) + +# Loop on files +# ------------- +print('Processing') +for jd in range(jdini,jdend+1): + + for hour in hours: + # Get current variable parameters + vname, ftag, cmap, islog, vmod, vmin, vmax, label, units\ + = load_variable(config,var) + + + # PLOT MODEL + # ---------- + + # Get filename + fname,dtag = get_filename(jd,ftag) + + + # Get 2D variable + if var == 'thetao': + + var2d = get_var_2D(fname,var,hour,5) # !!!! + var2d = np.array(var2d) + + elif var == 'chl': + var2d = get_integre_2D(fname,var,levels,hour) + var2d = np.array(var2d) + + + # Remove coastal zone + mask = var2d.copy() + + mask[np.where(~np.isnan(mask))] = 0 + mask[np.where(np.isnan(mask)) ] = 1 + + #kernel = np.ones((35,35)) + kernel = gkern(glength,gsigma) + + mask = cv2.dilate(mask, kernel, iterations=1) + + var2d[mask > 0] = np.nan + + # Load data for SST correction + if var == 'thetao': + t2m = load_meteo(config,jd,'t2m') + + + # Plot + if vmod == 'auto' : + # !!! TO CHANGE + p1 = ax1.pcolor(lon,lat,var2d,cmap=cmap,zorder=1) + #cb = plt.colorbar(p,fraction=float(cb_fraction),pad=float(cb_pad)) + else: + + if not islog : + p1 = ax1.pcolor(lon,lat,var2d,cmap=cmap,vmin=vmin,vmax=vmax,zorder=1) + else: + p1 = ax1.pcolor(lon,lat,var2d,cmap=cmap,norm=colors.LogNorm(vmin=vmin,vmax=vmax),zorder=1) + + + # Title + date = dt.datetime.fromordinal(jd) + y,m,d = date.strftime('%Y'),date.strftime('%m'),date.strftime('%d') + + title = 'Model '+y+'-'+m+'-'+d+' '+str(hour).zfill(2)+'h' + #ax1.title.set_text(title,fontsize=fig_lbl_size) + ax1.set_title(title,fontsize=fig_title_size) + + # Tune + ax1.set_xticklabels(ax1.get_xticks(),fontsize=fig_tcklbl_size_sat) + ax1.set_yticklabels(ax1.get_yticks(),fontsize=fig_tcklbl_size_sat) + + + # PLOT DATA + # --------- + ddir = os.path.join(diagdir,config,sat,var,'ITP_NC') + fname = ddir+'/'+var+'_'+dtag+'.nc' + sat2d = get_sat_2D(fname,var) + sat2d = np.array(sat2d) + + if var == 'chl': + sat2d[mask>0] = np.nan + + + # Apply correction to sst + + if var == 'thetao': + sat2d = sat2d - 273.16 # Kelvin to C + + #t2m = np.array(t2m) - 273.16 + #idx = np.where(sat2d<9999) + #bias = np.mean(sat2d[idx]-t2m[idx]) + #print(bias) + + sat2d = sat2d + 1 # SST correction + + + if not islog : + p2 = ax2.pcolor(lon,lat,sat2d,cmap=cmap,vmin=vmin,vmax=vmax,zorder=1) + #p2 = ax2.pcolor(lon,lat,sat2d-t2m,cmap=cmap,zorder=1) + else: + p2 = ax2.pcolor(lon,lat,sat2d,cmap=cmap,norm=colors.LogNorm(vmin=vmin,vmax=vmax),zorder=1) + + if cb_done == 'False': # plot cb only once + cb = plt.colorbar(p2,extend='both',fraction=float(cb_fraction_sat),pad=float(cb_pad_sat),\ + label=label+' ('+units+')',ax=ax2) + cb.set_label(label=label+' ('+units+')',fontsize=cb_lbl_size_sat) + cb.ax.tick_params(labelsize=cb_lbl_size_sat) + + cb_done = 'True' + + + # Tune + + + # Title + title = 'Satellite '+y+'-'+m+'-'+d+' '+str(hour).zfill(2)+'h' + plt.title(title,fontsize=fig_title_size) + + # Save file + # --------- + savedir = ddir+'/PLOT' + os.system('mkdir -p '+savedir) + + plt.draw() + + fout = savedir+'/'+dtag+str(hour).zfill(2)+'_'+var+'.'+fig_fmt + savefig(fout) + + p1.remove() + p2.remove() + + # Store time series + # ----------------- + + idx_good = np.where( (~np.isnan(sat2d)) & (~np.isnan(var2d)) ) + idx_tot = np.where( ~np.isnan(var2d) ) + + sat2d = sat2d[idx_good] + var2d = np.array(var2d)[idx_good] + + idx_good = np.array(idx_good) + idx_tot = np.array(idx_tot) + + perc = float(idx_good.shape[1])/float(idx_tot.shape[1]) + + time_series.append([jd,np.mean(var2d),np.mean(sat2d),perc]) + #print(jd,np.mean(var2d),np.mean(sat2d),perc) + + + +# Save time series +np.savetxt(ddir+'/time_series.dat',np.array(time_series)) + + +plt.close() + + + diff --git a/plot/plot_meteo_field.py b/plot/plot_meteo_field.py new file mode 100644 index 0000000..8f8df0e --- /dev/null +++ b/plot/plot_meteo_field.py @@ -0,0 +1,120 @@ +# ----------------- # +# Plot meteo fields # +# ----------------- # + +import warnings +warnings.simplefilter("ignore") + +from fun_gen import * +from fun_io import * +from fun_plot_2D import * +from fun_meteo import load_meteo +import sys,os +from glob import glob + +import numpy as np +from numpy import array as npa +import xarray as xr +import datetime as dt + +import cartopy.feature as cfeature +import cartopy.crs as ccrs +from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER +import matplotlib.colors as colors +import matplotlib.pyplot as plt +import matplotlib +matplotlib.use("Agg") + +import cmocean +import cmcrameri + +# Get args +# -------- +config = sys.argv[1] # Configuration name +var = sys.argv[2] # Variable name + +# Load parameters +# --------------- +load_config(config) +from fun_gen import * + + +odir = os.path.join(diagdir,config,'METEO/PLOT') +os.system('mkdir -p '+odir) + +odir = os.path.join(diagdir,config,'METEO/PLOT',var) +os.system('mkdir -p '+odir) + +# Load lon/lat +# ------------ +lon,lat,levels = load_coords() + +# Load proj +# --------- +exec('proj = ' + fig_proj) +cb_done = 'False' + +# Init figure +# ----------- +extent = [lon.min(),lon.max(),lat.min(),lat.max()] +fig, ax = plt.subplots(1,1,figsize=(float(fig_sx), float(fig_sy)), subplot_kw={'projection': proj}) +init_fig(ax,extent,proj) + + +# Get current variable parameters +vname, ftag, cmap, islog, vmod, vmin, vmax, label, units\ + = load_variable(config,var) + +# Loop on files +# ------------- +print('Processing') +for jd in range(jdini,jdend+1): + + # Date tag + dobj = dt.datetime.fromordinal(jd) + dtag = dobj.strftime('%Y%m%d') + + + # Load meteo file + var2d = load_meteo(config,jd,var) + + extent = [lon.min(),lon.max(),lat.min(),lat.max()] + + + # Plot + if vmod == 'auto' : + # !!! TO CHANGE + p = plt.pcolor(lon,lat,var2d,cmap=cmap,zorder=1) + #cb = plt.colorbar(p,fraction=float(cb_fraction),pad=float(cb_pad)) + else: + + if not islog : + p = plt.pcolor(lon,lat,var2d,cmap=cmap,vmin=vmin,vmax=vmax,zorder=1) + else: + p = plt.pcolor(lon,lat,var2d,cmap=cmap,norm=colors.LogNorm(vmin=vmin,vmax=vmax),zorder=1) + + if cb_done == 'False': # plot cb only once + cb = plt.colorbar(extend='both',fraction=float(cb_fraction_2D),pad=float(cb_pad_2D),\ + label=label+' ('+units+')') + cb_done = 'True' + + + # Title + date = dt.datetime.fromordinal(jd) + y,m,d = date.strftime('%Y'),date.strftime('%m'),date.strftime('%d') + + title = y+'-'+m+'-'+d + plt.title(title) + + # Save file + # --------- + plt.draw() + + fout = odir+'/'+dtag+'_'+var+'.'+fig_fmt + savefig(fout) + + # Erase pcolor plot + p.remove() + +plt.close() + diff --git a/plot/plot_sat_ts.py b/plot/plot_sat_ts.py new file mode 100644 index 0000000..ed04691 --- /dev/null +++ b/plot/plot_sat_ts.py @@ -0,0 +1,100 @@ +############################## +# Plot satellite time series # +############################## + + +import warnings +warnings.simplefilter("ignore") +from fun_gen import * +from fun_io import * +import sys,os + +import numpy as np +import matplotlib.colors as colors +import matplotlib.pyplot as plt +import matplotlib +matplotlib.use("Agg") + +import matplotlib.dates as mdates + + +# Get args +# -------- +config=sys.argv[1] # Configuration name +var=sys.argv[2] # Variable name +sat=sys.argv[3] # Dataset dir + + +# Get variables parameters +if var == 'chl': + color = 'g' +elif var == 'thetao': + color = 'orange' + +vname, ftag, cmap, islog, vmod, vmin, vmax, label, units\ + = load_variable(config,var) + +# Load CMEMS parameters +# --------------------- +pars = np.loadtxt('../config/cmems_'+config+'.dat',dtype=str) + +# Loop on variables +for par in pars: + if par[0] == var: + break + +ds_id = par[1] + + + +# Load parameters +# --------------- +load_config(config) +from fun_gen import * + + +# Plot time series +# ---------------- +fname = os.path.join(diagdir,config,sat,var,'ITP_NC/time_series.dat') +data = np.loadtxt(fname) + +fig,ax = plt.subplots(1,1,figsize=(float(fig_tsx), float(fig_tsy))) + +idx = np.where(data[:,3] > 0.2 ) # Keep only data with +10% cover + +data = data[idx,:].squeeze() + + +# Tune dates +for i in range(0,data.shape[0]): + data[i,0] = data[i,0] + - dt.datetime(1970,1,1).toordinal() + + +plt.plot(data[:,0],data[:,1],marker='o',linestyle='-',color=color,label='Model') + +plt.plot(data[:,0],data[:,2],marker='s',linestyle=':',color=color,label='Data') + +for d in data: + #print(d[0]+0.3,d[1],str(d[3]*100)+'%') + plt.text(d[0]+0.3,d[2],str(np.round(d[3]*100,decimals=1))+'%',fontsize=7) + + +plt.legend() + +if islog: + ax.set_yscale('log') + +# Format axes +loc = mdates.AutoDateLocator() +ax.xaxis.set_major_locator(loc) +ax.xaxis.set_major_formatter(mdates.ConciseDateFormatter(loc)) + +plt.ylabel(label+' ('+units+')') +plt.title('Satellite '+sat+' / '+ds_id) + +fname = fname.replace('dat',fig_fmt) + +savefig(fname) + +plt.close() + diff --git a/plot/plot_transect.py b/plot/plot_transect.py new file mode 100644 index 0000000..db4017d --- /dev/null +++ b/plot/plot_transect.py @@ -0,0 +1,179 @@ +# ------------------------------------ # +# Verticlal section plotting function # +# ------------------------------------ # +import warnings +warnings.filterwarnings("ignore") + +from fun_gen import * +from fun_io import * +from fun_plot_2D import init_fig +import sys,os +from glob import glob + +import numpy as np +from scipy.interpolate import griddata as gd +from scipy import interpolate +import xarray as xr +import datetime as dt + +import cartopy.feature as cfeature +import cartopy.crs as ccrs +from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER +import matplotlib.colors as colors +import matplotlib.pyplot as plt +import matplotlib +import matplotlib.dates as mdates + +matplotlib.use("Agg") + +import cmocean +import cmcrameri + + + + +# Get args +# -------- +config = sys.argv[1] # Configuration name +var = sys.argv[2] # Variable name + +# Load config file +# ---------------- +load_config(config) +from fun_gen import * + + +# Get current variable parameters +vname, ftag, cmap, islog, vmod, vmin, vmax, label, units\ + = load_variable(config,var) + +# Create arborescence +os.system('mkdir -p '+diagdir+'/'+config+'/TRANSECT/') +os.system('mkdir -p '+diagdir+'/'+config+'/TRANSECT/'+trans_name) + +odir = diagdir+'/'+config+'/TRANSECT/'+trans_name+'/'+var +os.system('mkdir -p '+odir) + + + +# Load lon/lat +# ------------ +lon,lat,levels = load_coords() + +# Load transect position file +# --------------------------- +pos = np.loadtxt(trans_file) + + +# ------------- # +# Plot transect # +# ------------- # +zmax = np.amin ( np.where( levels >= trans_depth ) ) + + +resV = trans_resV +ilev = np.arange(levels[0],levels[zmax],resV) +ilon = ilev.copy() +ilat = ilev.copy() + +# Interpolate transect +tdini = datetime.strptime(trans_ini,'%Y-%m-%d').toordinal() +tdend = datetime.strptime(trans_end,'%Y-%m-%d').toordinal() + + +tjd = [] +for p in pos: + tjd.append(datetime.strptime(str(int(p[0])),'%Y%m%d').toordinal()) + +tjd = np.array(tjd) + + +idx = np.where( (tjd[:] >= tdini) & (tjd[:] <= tdend+2)) + +idx = np.array(idx).squeeze() + + +flon = interpolate.interp1d(range(tdini,tdend+2), pos[idx,1].squeeze() ) +flat = interpolate.interp1d(range(tdini,tdend+2), pos[idx,2].squeeze() ) + +x_new = np.arange(tdini,tdend,1/24.) + + +tlon = flon(x_new).squeeze() +tlat = flat(x_new).squeeze() + +trans = [] + + +#for i in range(0,tlon.shape[0]): +# print(x_new[i],tlon[i]) +#exit() + + +# Loop on files +# ------------- +print('\nProcessing') +for jd in range(tdini,tdend): + + # Get var + fname,dtag = get_filename(jd,ftag) + print('\n') + print(dtag) + + for hour in range(0,24): + + # Get transect position + diff = abs(x_new - (float(jd)+float(hour)/24.)) + + + idx = np.where(diff == np.amin(diff)) + + + ilon[:] = tlon[idx] + ilat[:] = tlat[idx] + + #print(jd,hour,idx,tlon[idx]) + + val = get_model_val_3d(fname,hour,vname,\ + lon,lat,levels,\ + ilon,ilat,ilev) + + trans.append(val) + + +trans = np.array(trans) + +#print(trans) + + +# Plot transect +# ------------- +fig, ax = plt.subplots(1,1,figsize=(float(fig_secx), float(fig_secy))) + + +xticks = x_new - dt.datetime(1970,1,1).toordinal() + +YI,XI = np.meshgrid(-np.flip(ilev),xticks) +trans = np.flip(trans) +trans = np.flipud(trans) + + +p = plt.pcolor(XI,YI,trans,cmap=cmap,vmin=vmin,vmax=vmax) +cb= plt.colorbar(p,extend='both',fraction=float(cb_fraction_sec),\ + pad=float(cb_pad_sec),label=label+' ('+units+')') + +# Tune graph +loc = mdates.AutoDateLocator() +ax.xaxis.set_major_locator(loc) +ax.xaxis.set_major_formatter(mdates.ConciseDateFormatter(loc)) + + + +plt.ylabel("Depth (m)") +plt.xlabel("Date") + + +savefig(odir+'/transect'+'.'+fig_fmt) +plt.close() + + diff --git a/plot/time_series_data_vs_sat.py b/plot/time_series_data_vs_sat.py new file mode 100644 index 0000000..ee860e5 --- /dev/null +++ b/plot/time_series_data_vs_sat.py @@ -0,0 +1,184 @@ +# --------------------- # +# 2D plotting function # +# --------------------- # +import warnings +warnings.simplefilter("ignore") + +from fun_gen import * +from fun_io import * +from fun_plot_2D import * +from fun_meteo import load_meteo +import sys,os +from glob import glob + +import numpy as np +from numpy import array as npa +import xarray as xr +import datetime as dt +import cv2 + +import cartopy.feature as cfeature +import cartopy.crs as ccrs +from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER +import matplotlib.colors as colors +import matplotlib.pyplot as plt +import matplotlib +matplotlib.use("Agg") + +import cmocean +import cmcrameri + +def gkern(l, sig): + """\ + creates gaussian kernel with side length `l` and a sigma of `sig` + """ + ax = np.linspace(-(l - 1) / 2., (l - 1) / 2., l) + gauss = np.exp(-0.5 * np.square(ax) / np.square(sig)) + kernel = np.outer(gauss, gauss) + return kernel / np.sum(kernel) + + + +# Get args +# -------- +config=sys.argv[1] # Configuration name +var=sys.argv[2] # Variable name +sat=sys.argv[3] # Dataset dir + + +# Load parameters +# --------------- +load_config(config) +from fun_gen import * + +# Create diagnostic arborescence +#null = create_arbo(config,var,'PLOT_SAT') +#os.system('mkdir -p '+savedir) + +# Initialize plot +# --------------- + +# Load lon/lat +# ------------ +lon,lat,levels = load_coords() + +# Load proj +# --------- +exec('proj = ' + fig_proj) +cb_done = 'False' + +# Init figure +# ----------- +time_series = [] + +if var == 'chl': + hours = range(12,13) +elif var == 'thetao': + hours = range(0,1) + +# Loop on files +# ------------- +print('Processing') +for jd in range(jdini,jdend+1): + + for hour in hours: + # Get current variable parameters + vname, ftag, cmap, islog, vmod, vmin, vmax, label, units\ + = load_variable(config,var) + + + # PLOT MODEL + # ---------- + + # Get filename + fname,dtag = get_filename(jd,ftag) + + + # Get 2D variable + if var == 'thetao': + var2d = get_var_2D(fname,var,hour,7) # !!!! + var2d = np.array(var2d) + + elif var == 'chl': + var2d = get_integre_2D(fname,var,levels,hour) + var2d = np.array(var2d) + + + # Remove coastal zone + mask = var2d.copy() + + mask[np.where(~np.isnan(mask))] = 0 + mask[np.where(np.isnan(mask)) ] = 1 + + #kernel = np.ones((35,35)) + kernel = gkern(40,20) + + mask = cv2.dilate(mask, kernel, iterations=1) + + var2d[mask > 0] = np.nan + + # Load data for SST correction + if var == 'thetao': + t2m = load_meteo(config,jd,'t2m') + + + # Title + date = dt.datetime.fromordinal(jd) + y,m,d = date.strftime('%Y'),date.strftime('%m'),date.strftime('%d') + + + # PLOT DATA + # --------- + ddir = os.path.join(diagdir,config,sat,var,'ITP_NC') + fname = ddir+'/'+var+'_'+dtag+'.nc' + sat2d = get_sat_2D(fname,var) + sat2d = np.array(sat2d) + + if var == 'chl': + sat2d[mask>0] = np.nan + + + # Apply correction to sst + + if var == 'thetao': + sat2d = sat2d - 273.16 # Kelvin to C + + #t2m = np.array(t2m) - 273.16 + #idx = np.where(sat2d<9999) + #bias = np.mean(sat2d[idx]-t2m[idx]) + #print(bias) + + sat2d = sat2d # SST correction + + # Save file + # --------- + savedir = ddir+'/PLOT' + os.system('mkdir -p '+savedir) + + + # Store time series + # ----------------- + + idx_good = np.where( (~np.isnan(sat2d)) & (~np.isnan(var2d)) ) + idx_tot = np.where( ~np.isnan(var2d) ) + + sat2d = sat2d[idx_good] + var2d = np.array(var2d)[idx_good] + + idx_good = np.array(idx_good) + idx_tot = np.array(idx_tot) + + perc = float(idx_good.shape[1])/float(idx_tot.shape[1]) + + time_series.append([jd,np.mean(var2d),np.mean(sat2d),perc]) + print(jd,np.mean(var2d),np.mean(sat2d),perc) + + +# Save time series +np.savetxt(ddir+'/time_series.dat',np.array(time_series)) + + +plt.close() + + + diff --git a/tools/compute_okubo.py b/tools/okubo/compute_okubo.py similarity index 65% rename from tools/compute_okubo.py rename to tools/okubo/compute_okubo.py index eaeffe5..43ca57c 100644 --- a/tools/compute_okubo.py +++ b/tools/okubo/compute_okubo.py @@ -20,6 +20,7 @@ import datetime as dt from glob import glob import sys +import cv2 # Get args @@ -45,7 +46,11 @@ for hour in range(0,1): - try: + good = False + + + while good == False: + try: d = dt.datetime.fromordinal(jd) dtag = d.strftime('%Y%m%d') @@ -58,21 +63,32 @@ u = dataset['uo'][hour,0,:,:].squeeze() v = dataset['vo'][hour,0,:,:].squeeze() - lon = dataset['longitude'] - lat = dataset['latitude'] + lon = np.array(dataset['longitude']) + lat = np.array(dataset['latitude']) + + + LON,LAT = np.meshgrid(lon,lat) + + sub = 6 + ''' + lons = lon[::sub] + lats = lat[::sub] + us = u[::sub,::sub] + vs = v[::sub,::sub] + ''' u[np.where(u>9999)] = np.nan v[np.where(v>9999)] = np.nan + u_x = g.compute_stencil(u) u_y = g.compute_stencil(u, vertical=True) - v_x = g.compute_stencil(v) v_y = g.compute_stencil(v, vertical=True) - ow = g.vars["ow"] = (u_x - v_y) ** 2 + (v_x + u_y) ** 2 - (v_x - u_y) ** 2 + ow = g.vars["ow"] = (u_x - v_y) ** 2 + (v_x + u_y) ** 2 - (v_x - u_y) ** 2 exec('proj = ' + fig_proj) @@ -80,10 +96,22 @@ fig, ax = plt.subplots(1,1,figsize=(float(fig_sx), float(fig_sy)), subplot_kw={'projection': proj}) init_fig(ax,extent,proj) - p = plt.pcolor(lon,lat,ow,cmap='bwr',vmin=-3e-9,vmax=3e-9,zorder=1) + # Process data + ow = np.array(ow) + idx = np.where( (LON > 9.7) | (LON < 8.5) | \ + (LAT > 43.7) | (LAT < 43.05)) + + #ow[idx] = np.nan + #ow[np.where(ow<2e-9)] = np.nan + + #ow[np.where(ow>2.5e-9)] = 1 + #ow[np.where(ow<2.5e-9)] = np.nan + + + #p = plt.pcolor(lon,lat,ow,cmap='bwr',vmin=-3e-9,vmax=3e-9,zorder=1) + #p = plt.contour(lon,lat,ow,20,colors='k',zorder=2) #plt.colorbar() - sub = 8 lons,lats = lon[::sub],lat[::sub] us,vs = array(u[::sub,::sub]),array(v[::sub,::sub]) @@ -93,11 +121,21 @@ us[np.where(norm < 0.1)] = np.nan vs[np.where(norm < 0.1)] = np.nan - q = ax.quiver(lons,lats,us,vs,color='k',edgecolor='k',linewidth=.1,scale=22,zorder=4,width=0.001) + q = ax.quiver(lons,lats,us,vs,color='k',edgecolor='k',linewidth=.1,scale=40,zorder=4,width=0.001) + + # Plot eddy position + eddy = np.loadtxt('/DISK2TB/DATA/eddy.dat') + idx = np.where(eddy[:,0] <= float(dtag)) + idx = np.array(idx) + + + #plt1 = plt.plot(eddy[idx,1],eddy[idx,2],'ko',markersize=1,linewidth=2,zorder=3) + #plt2 = plt.plot(eddy[idx,1].flatten(),eddy[idx,2].flatten(),'k-',linewidth=0.7,zorder=5) + #plt3 = plt.plot(eddy[idx[-1][-1],1],eddy[idx[-1][-1],2],'ko', markerfacecolor='none',zorder=3) # Tune - cb = plt.colorbar(extend='both',fraction=float(cb_fraction_2D),pad=float(cb_pad_2D),\ - label='Okubo Weis') + #cb = plt.colorbar(extend='both',fraction=float(cb_fraction_2D),pad=float(cb_pad_2D),\ + # label='Okubo Weiss') plt.title(dtag+' '+str(hour).zfill(2)+'h') @@ -115,9 +153,14 @@ print('[SAVED FIG] '+fout) - plt.close() - except: + #plt.show() + plt.close() + + good = True + + except Exception as e: + print(e) pass