plt.rcParams['axes.titlesize'] = 28 plt.rcParams['axes.labelsize'] = 18 plt.rcParams['axes.axisbelow'] = True ############################################################################# if os.uname()[1] == 'hobbes': cart = '/home/fabiano/Research/lavori/BOTTINO/' elif os.uname()[1] == 'xaru': cart = '/home/fedef/Research/lavori/BOTTINO/' elif os.uname()[1] == 'tintin': cart = '/home/fabiano/work/lavori/BOTTINO/' cart_in = cart + 'seasmean/' cart_out = cart + 'visual_proj/' ctl.mkdir(cart_out) allru = ['pi', 'b025', 'b050', 'b100'] allnams = [ 'piControl', 'stabilization-ssp585-2025', 'stabilization-ssp585-2050', 'stabilization-ssp585-2100' ] colors = ['black', 'forestgreen', 'orange', 'violet'] allnams2 = allnams + ['ssp585', 'historical'] allru2 = allru + ['ssp585', 'hist'] colors2 = colors + ['indianred', 'steelblue'] #################################################################################################### ### New colormap for temperature
plt.rcParams['xtick.labelsize'] = 15 plt.rcParams['ytick.labelsize'] = 15 titlefont = 22 plt.rcParams['figure.titlesize'] = titlefont plt.rcParams['axes.titlesize'] = 18 plt.rcParams['axes.labelsize'] = 15 plt.rcParams['axes.axisbelow'] = True ############################################################################# expnam = 'GLOBO_KM156L70' #expnam = 'GLOBO_KM078_1YEAR' cart = '/home/{}/Research/lavori/globone/test_output/{}/'.format( os.getlogin(), expnam) ctl.mkdir(cart) mask_file = '/home/{}/Research/lavori/globone/grid_maker/masks_globo_514x362.nc'.format( os.getlogin()) masks = xr.load_dataset(mask_file) okmask = np.array(masks['glog.msk'])[:, 1:-1] ####################################################################### #init = 45 init = 1 avfld = dict() # surface fluxes rad_flds = dict()
import pickle import netCDF4 as nc import climtools_lib as ctl import climdiags as cd from matplotlib.colors import LogNorm from datetime import datetime from scipy import stats import pandas as pd ############################################################################# cart_out_orig = '/home/fabiano/Research/lavori/CMIP6/Results_v2_ensrebase/' ctl.mkdir(cart_out_orig) cart_in = '/data-hobbes/fabiano/WR_CMIP6/' file_hist_refEOF = cart_in + 'out_NEW_cmip6_hist_NDJFM_{}_4clus_4pcs_1964-2014_refEOF_dtr.p' # file_hist = cart_in + 'out_NEW_cmip6_hist_NDJFM_{}_4clus_4pcs_1964-2014_refCLUS_dtr_light.p' # gen_file_ssp = cart_in + 'out_NEW_cmip6_{}_NDJFM_{}_4clus_4pcs_2015-2100_refCLUS_dtr_histrebase.p' file_hist = cart_in + 'out_cmip6_ensrebase_hist_NDJFM_{}_4clus_4pcs_1964-2014_refCLUS_dtr_reb.p' gen_file_ssp = cart_in + 'out_cmip6_ensrebase_{}_NDJFM_{}_4clus_4pcs_2015-2100_refCLUS_dtr_reb.p' numclus = 4 reg_names_area = dict() reg_names_area['EAT'] = ['NAO+', 'SBL', 'AR', 'NAO-'] reg_names_area['PNA'] = ['PT', 'PNA+', 'PNA-', 'AR'] allssps = 'ssp126 ssp245 ssp370 ssp585'.split()
ssp = 'ssp585' for cart in listacarts: mod = cart.split('/')[5] mem = cart.split('/')[7] print('----------------------------\n') print(mod, mem) print('----------------------------\n') print('----------------------------\n') print(mod, mem) print('----------------------------\n') cartut = cart_g_ut + '{}_{}_{}/'.format(mod, mem, ssp) ctl.mkdir(cartut) cartstrat = cart_g_s + '{}_{}_{}/'.format(mod, mem, ssp) ctl.mkdir(cartstrat) cartlt = cart_g_lt + '{}_{}_{}/'.format(mod, mem, ssp) ctl.mkdir(cartlt) file_list = [co.split('/')[-1] for co in glob.glob(cart + 'ta*nc')] for filenam in file_list: file_in = cart + filenam indpo = filenam.index('.nc') filepart = filenam[:indpo] + '_UTmean.nc' file_out = cartut + filepart command = 'cdo sellevel,40000,30000,25000,20000,15000 {} prov.nc'.format( file_in)
plt.rcParams['ytick.labelsize'] = 15 titlefont = 24 plt.rcParams['figure.titlesize'] = titlefont plt.rcParams['axes.titlesize'] = 18 plt.rcParams['axes.labelsize'] = 18 ############################################################################# if os.uname()[1] == 'hobbes': cart_in = '/home/fabiano/Research/lavori/CMIP6/' elif os.uname()[1] == 'ff-clevo': cart_in = '/home/fedefab/Scrivania/Research/Post-doc/lavori/CMIP6/' cart_tas = '/data-woodstock/CMIP6/tasOld/ssp585/remap/' fil_tas = cart_tas + 'tas_Amon_{}_ssp585_{}_201501-210012_remap.nc' cart_out = cart_in + 'Results_SST_corrmap/' ctl.mkdir(cart_out) cart_data = '/data-hobbes/fabiano/WR_CMIP6/' file_hist_refEOF = cart_data + 'out_NEW_cmip6_hist_NDJFM_{}_4clus_4pcs_1964-2014_refEOF_dtr.p' file_hist = cart_data + 'out_NEW_cmip6_hist_NDJFM_{}_4clus_4pcs_1964-2014_refCLUS_dtr_light.p' gen_file_ssp = cart_data + 'out_NEW_cmip6_{}_NDJFM_{}_4clus_4pcs_2015-2100_refCLUS_dtr_histrebase.p' yr10 = 10 # length of running mean numclus = 4 reg_names_area = dict() reg_names_area['EAT'] = ['NAO+', 'SBL', 'AR', 'NAO-'] reg_names_area['PNA'] = ['PT', 'PNA+', 'PNA-', 'BR'] #okmods = ['ACCESS-CM2_r1i1p1f1', 'BCC-CSM2-MR_r1i1p1f1', 'CanESM5_r1i1p1f1', 'CESM2-WACCM_r1i1p1f1','CNRM-CM6-1-HR_r1i1p1f2', 'CNRM-CM6-1_r1i1p1f2','CNRM-ESM2-1_r1i1p1f2', 'EC-Earth3_r1i1p1f1', 'FGOALS-g3_r1i1p1f1','INM-CM4-8_r1i1p1f1', 'INM-CM5-0_r1i1p1f1', 'IPSL-CM6A-LR_r1i1p1f1','MIROC6_r1i1p1f1', 'MPI-ESM1-2-HR_r1i1p1f1','MPI-ESM1-2-LR_r1i1p1f1', 'MRI-ESM2-0_r1i1p1f1','NorESM2-LM_r1i1p1f1', 'NorESM2-MM_r1i1p1f1', 'UKESM1-0-LL_r1i1p1f2'] # mancano = ['BCC-ESM1_r1i1p1f1', 'CESM2_r1i1p1f1', 'GFDL-CM4_r1i1p1f1', 'HadGEM3-GC31-LL_r1i1p1f3', 'KACE-1-0-G_r1i1p1f1', 'MPI-ESM-1-2-HAM_r1i1p1f1']
from scipy import stats import pandas as pd import pymannkendall as mk plt.rcParams['xtick.labelsize'] = 15 plt.rcParams['ytick.labelsize'] = 15 titlefont = 24 plt.rcParams['figure.titlesize'] = titlefont plt.rcParams['axes.titlesize'] = 18 plt.rcParams['axes.labelsize'] = 18 ############################################################################# cart_in = '/home/fedef/Research/lavori/CMIP6/' cart_out_orig = cart_in + 'Results_ultimo_v2/' ctl.mkdir(cart_out_orig) yr10 = 10 # length of running mean cart_cmip5 = '/home/fedef/Research/lavori/CMIP6/Results_cmip5/{}_NDJFM/' cart_v5 = '/home/fedef/Research/lavori/CMIP6/Results_v5_rebase/{}_NDJFM/' #cart_v5 = '/home/fedef/Research/lavori/CMIP6/Results_v5_ensrebase/{}_NDJFM/' numclus = 4 reg_names_area = dict() reg_names_area['EAT'] = ['NAO+', 'SBL', 'AR', 'NAO-'] reg_names_area['PNA'] = ['PT', 'PNA+', 'PNA-', 'BR'] #okmods = ['ACCESS-CM2_r1i1p1f1', 'BCC-CSM2-MR_r1i1p1f1', 'CanESM5_r1i1p1f1', 'CESM2-WACCM_r1i1p1f1','CNRM-CM6-1-HR_r1i1p1f2', 'CNRM-CM6-1_r1i1p1f2','CNRM-ESM2-1_r1i1p1f2', 'EC-Earth3_r1i1p1f1', 'FGOALS-g3_r1i1p1f1','INM-CM4-8_r1i1p1f1', 'INM-CM5-0_r1i1p1f1', 'IPSL-CM6A-LR_r1i1p1f1','MIROC6_r1i1p1f1', 'MPI-ESM1-2-HR_r1i1p1f1','MPI-ESM1-2-LR_r1i1p1f1', 'MRI-ESM2-0_r1i1p1f1','NorESM2-LM_r1i1p1f1', 'NorESM2-MM_r1i1p1f1', 'UKESM1-0-LL_r1i1p1f2'] # mancano = ['BCC-ESM1_r1i1p1f1', 'CESM2_r1i1p1f1', 'GFDL-CM4_r1i1p1f1', 'HadGEM3-GC31-LL_r1i1p1f3', 'KACE-1-0-G_r1i1p1f1', 'MPI-ESM-1-2-HAM_r1i1p1f1'] allssps = 'ssp126 ssp245 ssp370 ssp585'.split()
ctl.printsep() print(ensmod) ctl.printsep() #weights['R3'] = np.append(np.ones(4), np.ones(6)/3.) # resolutions # nam, resi = ctl.read_from_txt(cart_in + 'resolutions.txt', n_skip=1, sep = ',') # namok = [na.strip("'") for na in nam] # namok = [nam.split('_')[0] + '_' + nam.split('_')[2] for nam in namok] # allinds = [np.arange(len(dridic[dri])) for dri in drivs] # allcombs = list(itt.product(*allinds)) ctl.mkdir(cart_out_gen.format(ensmod)) figscores = dict() rsq_old = dict() xssdi = dict() for reg in regtip: fig_score, axs = plt.subplots(figsize=(12, 8)) figscores[(reg, 0)] = (fig_score, axs) fig_score, axs = plt.subplots(figsize=(12, 8)) figscores[(reg, 1)] = (fig_score, axs) rsq_old[reg] = None for nu, colnu in zip(np.arange(2, 8), ctl.color_set(6)): print('Finding best {} drivers'.format(nu))
models_cm6prim = models_cm6_full + models_prim models_ok_all = models_cmip6 + models_prim + models_5_ok #models_all = models_cm6_full + models_prim + models_5 models_all = models_cm6_full + models_prim + models_5_ok modgen_all = np.unique(np.concatenate([modgen_cmip6, modgen_prim, modgen_5])) ## avoid double weighting soy = 0 for mod in modgen_all: tut = [co for co in models_all if co.split('_')[0] == mod] print(mod, len(tut)) soy += len(tut) print('all', soy) cart_out_gen = cart_in + 'ensmean/results_{}/' ctl.mkdir(cart_in+'ensmean') katullo = 'ensmean' tuttecose = dict() regtip = ['U4', 'R3', 'R3n'] metrics = dict() metrnam = dict() #weights = dict() metrics['R3'] = [('mean', 'era20c_fidelity'), ('mean', 'stability'), ('mean', 'variance_ratio')] + [(rnam, 'regime_occurrence') for rnam in ['AR', 'NAO-', 'BLK']] + [(rnam, 'regime_persistence') for rnam in ['AR', 'NAO-', 'BLK']] metrnam['R3'] = ['fidel20', 'stabil', 'var_ratio'] + ['occ: '+rnam for rnam in ['AR', 'NAO-', 'BLK']] + ['pers: '+rnam for rnam in ['AR', 'NAO-', 'BLK']] #weights['R3'] = np.append(np.ones(4), np.ones(6)/3.) metrics['U4'] = [('mean', 'era20c_fidelity'), ('mean', 'stability'), ('mean', 'variance_ratio')] + [(rnam, 'regime_occurrence') for rnam in ['AR', 'NAO-', 'BLK', 'NAO+']] + [(rnam, 'regime_persistence') for rnam in ['AR', 'NAO-', 'BLK', 'NAO+']]
#for exp in ['piControl']: for exp in allexps: expcart = bcart + exp + '/' allmems = os.listdir(expcart) print(exp) for mem in allmems: memcart = expcart + mem + '/' print(mem) # daycart = memcart + 'Amon/' # r25cart = memcart + 'Amon_r25/' daycart = memcart + 'SImon/' r25cart = memcart + 'SImon_r1/' ctl.mkdir(r25cart) #for var in ['clt', 'rsut']: for var in os.listdir(daycart): print(var) cart_in = daycart + var + '/' cart_out = r25cart + var + '/' if os.path.exists(cart_out): if len(os.listdir(cart_in)) == len(os.listdir(cart_out)): print('Already processed\n') continue try: #cd.preprocess_cdo(cart_in, cart_out, skip_existing = True) cd.preprocess_cdo(cart_in, cart_out,
############################################################################# cart_in = '/data-hobbes/fabiano/WR_CMIP6/' yr10 = 10 # length of running mean tip = 'r1_rebase' if tip == 'r1_rebase': cart_out_orig = '/home/fabiano/Research/lavori/CMIP6/Results_v5_rebase/' file_hist = cart_in + 'out_NEW_cmip6_hist_NDJFM_{}_4clus_4pcs_1964-2014_refCLUS_dtr_light.p' gen_file_ssp = cart_in + 'out_NEW_cmip6_{}_NDJFM_{}_4clus_4pcs_2015-2100_refCLUS_dtr_histrebase.p' elif tip == 'ensrebase': cart_out_orig = '/home/fabiano/Research/lavori/CMIP6/Results_v5_ensrebase/' file_hist = cart_in + 'out_cmip6_ensrebase_hist_NDJFM_{}_4clus_4pcs_1964-2014_refCLUS_dtr_reb.p' gen_file_ssp = cart_in + 'out_cmip6_ensrebase_{}_NDJFM_{}_4clus_4pcs_2015-2100_refCLUS_dtr_reb.p' ctl.mkdir(cart_out_orig) file_hist_refEOF = cart_in + 'out_NEW_cmip6_hist_NDJFM_{}_4clus_4pcs_1964-2014_refEOF_dtr.p' numclus = 4 reg_names_area = dict() reg_names_area['EAT'] = ['NAO+', 'SBL', 'AR', 'NAO-'] reg_names_area['PNA'] = ['PT', 'PNA+', 'PNA-', 'AR'] clatlo = dict() clatlo['EAT'] = (70., -20.) clatlo['PNA'] = (70., -120.) #allssps = 'ssp119 ssp126 ssp245 ssp370 ssp585'.split() allssps = 'ssp126 ssp245 ssp370 ssp585'.split()
from scipy import stats import pandas as pd ################################# for ssp in ['ssp585', 'rcp85']: if ssp == 'rcp85': cart_orig = '/archive/paolo/cmip5/CMIP5/output1/' listacarts = glob.glob(cart_orig + '*/*/rcp85/mon/atmos/Amon/r1i1*/ua/') else: cart_orig = '/archive/paolo/cmip6/CMIP6/model-output/' listacarts = glob.glob(cart_orig + '*/*/ssp585/atmos/Amon/r1i1*/ua/') cartou = '/home/federico/work/CMIP6/data_mon_ua/' cart_g_s = cartou + 'Smean/' ctl.mkdir(cart_g_s) for cart in listacarts: mod = cart.split('/')[7] if ssp == 'rcp85': mem = cart.split('/')[12] else: mem = cart.split('/')[11] print('----------------------------\n') print(mod, mem) print('----------------------------\n') cartstrat = cart_g_s + '{}_{}_{}/'.format(mod, mem, ssp) ctl.mkdir(cartstrat)
import pandas as pd ################################# for ssp in ['ssp585', 'rcp85']: # ssp = 'rcp85' if ssp == 'rcp85': cart_orig = '/archive/paolo/cmip5/CMIP5/output1/' listacarts = glob.glob(cart_orig + '*/*/rcp85/mon/atmos/Amon/r1i1*/ta/') else: cart_orig = '/archive/paolo/cmip6/CMIP6/model-output/' listacarts = glob.glob(cart_orig + '*/*/ssp585/atmos/Amon/r1i1*/ta/') cartou = '/home/federico/work/CMIP6/data_mon_ta/' cart_g_ut = cartou + 'UTmean/' ctl.mkdir(cart_g_ut) cart_g_lt = cartou + 'LTmean/' ctl.mkdir(cart_g_lt) cart_g_s = cartou + 'Smean/' ctl.mkdir(cart_g_s) for cart in listacarts: mod = cart.split('/')[7] if ssp == 'rcp85': mem = cart.split('/')[12] else: mem = cart.split('/')[11] print('----------------------------\n') print(mod, mem) print('----------------------------\n')
import glob import climtools_lib as ctl import climdiags as cd import xarray as xr import xesmf as xe import xclim from importlib import reload ####################################################### cartgen = '/home/federico/work/reforge/diab_heat/' ctl.mkdir(cartgen) plevels = np.array([100000, 85000, 70000, 50000, 25000, 10000, 5000, 1000]) ##################### daily 3D #figs_facet = [] #figs_ovmol = [] figs_facet_3d = [] allvars = ['ta', 'ua', 'va', 'wap'] #fir_HR = '/home/paolo/work/data/REFORGE/EC-Earth3-TL799/rfrg-orog255-noparam/r2i1p1f1/day/{}/{}_day_EC-Earth3-TL799_rfrg-orog255-noparam_r2i1p1f1_r144x73_*nc' ### the 799 wap starts from 2000 instead than 1999 fir_HR = '/home/paolo/work/data/REFORGE/EC-Earth3-TL511/rfrg-orog255-noparam/r2i1p1f1/day/{}/{}_day_EC-Earth3-TL511_rfrg-orog255-noparam_r2i1p1f1_r144x73_*nc' fir_LR = '/home/paolo/work/data/REFORGE/EC-Earth3/rfrg-ctrl-noparam/r1i1p1f1/day/{}/{}_day_EC-Earth3_rfrg-ctrl-noparam_r1i1p1f1_r144x73_*nc' fils_HR = np.concatenate([glob.glob(fir_HR.format(var, var)) for var in allvars]) fils_LR = np.concatenate([glob.glob(fir_LR.format(var, var)) for var in allvars])
resolution_file = cart_in + 'drivers/resolutions_mod.txt' cose = ctl.read_from_txt(resolution_file, n_skip = 1, dtype = float, first_column_header = True, sep = ',') cose[1][cose[1] < 0] = np.nan cosdi = dict(zip(cose[0], cose[1])) models_ok_cm6prim = models_cmip6 + models_prim models_cm6prim = models_cm6_full + models_prim models_ok_all = models_cmip6 + models_prim + models_5_ok models_all = models_cm6_full + models_prim + models_5 modgen_all = np.concatenate([modgen_cmip6, modgen_prim, modgen_5]) cart_out_gen = cart_in + 'allmems/results_{}/' ctl.mkdir(cart_in+'allmems') katullo = 'allmem' tuttecose = dict() regtip = ['U4', 'R3', 'R3n'] metrics = dict() metrnam = dict() #weights = dict() metrics['R3'] = [('mean', 'era20c_fidelity'), ('mean', 'stability'), ('mean', 'variance_ratio')] + [(rnam, 'regime_occurrence') for rnam in ['AR', 'NAO-', 'BLK']] + [(rnam, 'regime_persistence') for rnam in ['AR', 'NAO-', 'BLK']] metrnam['R3'] = ['fidel20', 'stabil', 'var_ratio'] + ['occ: '+rnam for rnam in ['AR', 'NAO-', 'BLK']] + ['pers: '+rnam for rnam in ['AR', 'NAO-', 'BLK']] #weights['R3'] = np.append(np.ones(4), np.ones(6)/3.) metrics['U4'] = [('mean', 'era20c_fidelity'), ('mean', 'stability'), ('mean', 'variance_ratio')] + [(rnam, 'regime_occurrence') for rnam in ['AR', 'NAO-', 'BLK', 'NAO+']] + [(rnam, 'regime_persistence') for rnam in ['AR', 'NAO-', 'BLK', 'NAO+']]