From 59ca53aaf151d6192b756b8f1905a9c06d4f2660 Mon Sep 17 00:00:00 2001 From: cfontana00 Date: Thu, 16 May 2024 13:57:33 +0200 Subject: [PATCH] argo OK --- config/config_MARIA.json | 34 ++- config/config_TEMPLATE.json | 4 + datasets/ARGO/.compare_argo.py.swp | Bin 12288 -> 0 bytes datasets/ARGO/compare_argo.py | 189 +++++++++++++- datasets/ARGO/get_argo.py | 16 +- datasets/ARGO/old/compare_argo.py | 244 ++++++++++++++++++ datasets/ARGO/old/compare_bioargo.py | 189 ++++++++++++++ datasets/BOUSSOLE/read_boussole.py | 18 +- meteo/ECMWF/process_data.py | 1 + modules/__pycache__/fun_gen.cpython-310.pyc | Bin 2009 -> 1796 bytes modules/__pycache__/fun_io.cpython-310.pyc | Bin 4360 -> 4420 bytes .../fun_plot_profile.cpython-310.pyc | Bin 0 -> 1503 bytes modules/fun_gen.py | 17 +- modules/fun_io.py | 26 +- modules/fun_plot_profile.py | 81 ++++++ 15 files changed, 758 insertions(+), 61 deletions(-) delete mode 100644 datasets/ARGO/.compare_argo.py.swp create mode 100644 datasets/ARGO/old/compare_argo.py create mode 100644 datasets/ARGO/old/compare_bioargo.py create mode 100644 modules/__pycache__/fun_plot_profile.cpython-310.pyc create mode 100644 modules/fun_plot_profile.py diff --git a/config/config_MARIA.json b/config/config_MARIA.json index 46544e6..96db83c 100644 --- a/config/config_MARIA.json +++ b/config/config_MARIA.json @@ -1,32 +1,32 @@ { "_____":"GENERAL PARAMETERS", -"date_ini":"2015-03-20", -"date_end":"2015-03-29", -"outdir":"/home/fontana/MODEL/OUTPUTS", -"diagdir":"/home/fontana/MODEL/DIAGS", +"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", "_____":"RIVER PARAMETERS", "french_list":["Argens","Var"], -"italian_list":["Magra","Arno","Ombrone","Serchio"], -"river_ini":"2019-05-01", -"river_end":"2019-05-31", +"italian_list":["Arno","Magra","Ombrone","Serchio"], "_____":"METEO PARAMETERS", - -"meteo_ini":"2019-04-01", -"meteo_end":"2019-04-30", +"meteo_ini":"2015-03-10", +"meteo_end":"2015-03-11", "day_cycle":2, -"n_cycle":30, +"n_cycle":6, "imin":"500", "imax":"600", "jmin":"350", "jmax":"450", + "_____":"DYFAMED PARAMETERS", "some_par":"some_par", @@ -36,7 +36,7 @@ "some_par":"some_par", -"_____":"PLOT PARAMETERS", +"_____":"2D PLOT PARAMETERS", "resol":"10m", "fig_proj":"ccrs.PlateCarree()", @@ -53,14 +53,13 @@ "_____":"SECTION PLOT PARAMETERS", - "fig_secx":"8", "fig_secy":"4", "sec_lon1":"8.5", "sec_lat1":"43.", "sec_lon2":"10.", "sec_lat2":"43.5", -"sec_dep":"200", +"sec_dep":"600", "sec_resH":"0.05", "sec_resV":"1", "cb_fraction_sec":"0.025", @@ -68,8 +67,8 @@ "_____":"PROFILE PLOT PARAMETERS", -"fig_prox":"6", -"fig_proy":"8", +"fig_prox":"8", +"fig_proy":"4", "col1":"r", "col2":"b", @@ -77,7 +76,6 @@ "_____":"INTERPOLATION PARAMETERS", "dump":"0.01", -"itp_meth":"linear", -"cmap":"viridis" +"itp_meth":"nearest" } diff --git a/config/config_TEMPLATE.json b/config/config_TEMPLATE.json index 022ebe4..f1a850f 100644 --- a/config/config_TEMPLATE.json +++ b/config/config_TEMPLATE.json @@ -25,6 +25,10 @@ "jmin":"350", "jmax":"450", +"_____":"ARGO", + +"argo_ds":"phy", + "_____":"DYFAMED PARAMETERS", diff --git a/datasets/ARGO/.compare_argo.py.swp b/datasets/ARGO/.compare_argo.py.swp deleted file mode 100644 index a71541abadb86555f014362886b7bb6cfb30fb0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 literal 0 HcmV?d00001 diff --git a/modules/fun_gen.py b/modules/fun_gen.py index 723b5a3..7c62ed6 100644 --- a/modules/fun_gen.py +++ b/modules/fun_gen.py @@ -39,6 +39,7 @@ def load_config(config): print('----------------------------------') print('=> Config file '+config+' loaded') print('----------------------------------\n') + except Exception as e : print('Error in argument or config') print(e) @@ -67,14 +68,14 @@ def load_variable(config,var): if par[0] == var: break - print('----------------') - print('Variable :',var) - print('cmap :',par[2]) - print('log :',par[3]) - print('min/max mode :',par[4]) - print('vmin :',par[5]) - print('vmax :',par[6]) - print('----------------\n') + #print('----------------') + #print('Variable :',var) + #print('cmap :',par[2]) + #print('log :',par[3]) + #print('min/max mode :',par[4]) + #print('vmin :',par[5]) + #print('vmax :',par[6]) + #print('----------------\n') return par[0],\ diff --git a/modules/fun_io.py b/modules/fun_io.py index b97c1c3..32015ec 100644 --- a/modules/fun_io.py +++ b/modules/fun_io.py @@ -11,6 +11,8 @@ import keyword import inspect import time +from netCDF4 import Dataset + # ------------ # @@ -43,10 +45,11 @@ def load_coords(): from fun_gen import outdir try : - ds=xr.open_dataset(glob(outdir+'/*TEMP*.nc')[0]) - lon=np.array(ds['longitude']) - lat=np.array(ds['latitude']) - levels=np.array(ds['depth']) + 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 : @@ -73,7 +76,7 @@ def get_var_2D(fname,var,lev): # ----------------- # # Load 3D variables # # ----------------- # -def get_var_3D(fname,var,**kargs): +def get_var_3D(fname,hours,var,**kargs): dmn = kargs['domain'] @@ -84,11 +87,14 @@ def get_var_3D(fname,var,**kargs): try: ds = xr.open_dataset(fname) + + # Reduce domain if dmn: - arr = ds[var][23,idz,idy,idx].squeeze() + arr = ds[var][hours,idz,idy,idx] + arr = arr.squeeze() else: - arr = ds[var][23,:,:,:].squeeze() + arr = ds[var][hours,:,:,:].squeeze() ds.close() @@ -101,7 +107,7 @@ def get_var_3D(fname,var,**kargs): # ------------------------ # # Get value from 3D fields # # ------------------------ # -def get_model_val_3d(fname,var,lon_mod,lat_mod,lev_mod,lon,lat,depth): +def get_model_val_3d(fname,hours,var,lon_mod,lat_mod,lev_mod,lon,lat,depth): start = time.time() @@ -113,8 +119,8 @@ def get_model_val_3d(fname,var,lon_mod,lat_mod,lev_mod,lon,lat,depth): 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,var,domain=[idz,idy,idx])) - + 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() diff --git a/modules/fun_plot_profile.py b/modules/fun_plot_profile.py new file mode 100644 index 0000000..ad3dfc6 --- /dev/null +++ b/modules/fun_plot_profile.py @@ -0,0 +1,81 @@ +################################## +# Routine plotting profile plots # +################################## + +from fun_gen import * +from fun_io import * +import numpy as np +import matplotlib.pyplot as plt + + +# ------------- +# Plot profiles +# ------------- +def plot_profiles(*arg): + + from fun_gen import fig_prox,\ + fig_proy,\ + col_phy,col_bcg,\ + argo_ds + + if argo_ds == 'bgc': + colors = col_bcg + else: + colors = col_phy + + + # Get number of profiles + nprof = int((len(arg)-3)/3) + fout = arg[0] + time = arg[1] + depth = arg[2] + + fig = plt.figure(figsize=(float(fig_prox), float(fig_proy))) + + # Create axes + axes = [] + ax1 = fig.add_subplot(111) + ax1.set_ylabel('Depth (m)') + axes.append(ax1) + + for i in range(1,nprof): + axes.append(ax1.twiny()) + + # Plot + for i in range(0,nprof): + ax = axes[i] + + offset = 3+i*3 + model,data,label = arg[offset],arg[offset+1],arg[offset+2] + + ax.plot(model,depth,c=colors[i],label=label) + ax.plot(data,depth,c=colors[i],marker='.',linestyle='None',alpha=0.5) + + ax.set_xlabel(label) + ax.xaxis.label.set_color(colors[i]) + ax.tick_params(axis='x',colors=colors[i], which='both') + + if i == 0: + ax.spines["bottom"].set_color(colors[i]) + ax.patch.set_alpha(0.0) + + if i > 0: + ax.spines["top"].set_color(colors[i]) + + if i > 1: + ax.spines["top"].set_position(("axes", 1.0+i*0.04)) + + plt.title(time) + + # Save figure + savefig(fout) + print('') + + plt.close() + + + + + + +