Method1: read lat/rho ToE and average in the chosen domain Method2: read ToE computed from the already averaged signal and noise in the chosen domain """ import numpy as np import matplotlib.pyplot as plt from netCDF4 import Dataset as open_ncfile from maps_matplot_lib import defVarmme, averageDom from modelsDef import defModels from libToE import findToE, ToEdomainhistvshistNat # ----- Work ------ models = defModels() varname = defVarmme('salinity'); v = 'S' #varname = defVarmme('temp'); v = 'T' #varname = defVarmme('depth'); v = 'Z' # -- Choose method for computing ToE #method = 'average_ToE' # Determine 2D lat/rho ToE then average in the box method = 'average_signal' # Average signal and noise in the box, then compute ToE # Method 2 only has ToE for salinity for now # -- Choose which 'noise' to use for the ToE calculation (only with method 2 : average_signal) # method_noise = 'average_std' # Average the standard deviation of PiC in the specified domains method_noise = 'average_histNat' # Average histNat in the specified domains then determine the std of this averaged value # -- Choose domain domains = ['Southern ST', 'SO', 'Northern ST', 'North Atlantic', 'North Pacific']
fh2d = open_ncfile(indir_rcp85 + filercp85_2d, 'r') fh1d = open_ncfile(indir_rcp85 + filercp85_1d, 'r') fhn2d = open_ncfile(indirhn + filehn_2d, 'r') fhn1d = open_ncfile(indirhn + filehn_1d, 'r') file = 'cmip5.multimodel_Nat.rcp85.remaptoz_density.zon2D.nc' fsigma = open_ncfile(indir_density + file, 'r') # ------------------------------------------------------------------------------- # Build variables # ------------------------------------------------------------------------------- # == Define variables == # -- Salinity or temperature varname = defVarmme('salinity') v = 'S' # varname = defVarmme('temp'); v = 'T' var = varname['var_zonal_w/bowl'] if name == 'mme_rcp85_histNat': minmax = varname['minmax_zonal_rcp85'] else: minmax = varname['minmax_zonal'] clevsm = varname['clevsm_zonal'] legVar = varname['legVar'] unit = varname['unit'] # == Read variables == lat = fh2d.variables['latitude'][:]
import glob, os import datetime import colormaps as cmaps # ===== Define Work ====== work = 'histNat' # work = 'piC' indir_histNat = '/data/ericglod/Density_binning/Prod_density_april15/mme_histNat/' indir_piC = '/data/ericglod/Density_binning/Prod_density_april15/mme_piControl/' fig_dir = '/home/ysilvy/figures/models/zonal_ys/' # varname = defVarmme('salinity'); v = 'S' # varname = defVarmme('temp'); v = 'T' varname = defVarmme('depth') v = 'Z' var = varname['var_zonal_w/bowl'] legVar = varname['legVar'] unit = varname['unit'] # Density domain rhomin = 21 rhomid = 26 rhomax = 28 domrho = [rhomin, rhomid, rhomax] if work == 'histNat': indir = indir_histNat longName = 'historicalNat'
# -- Read and build variables if name == 'Durack&Wijffels': varname = defVarDurack(varname) var_diff = varname['var_change'] if lat_choice == 'one': var_diff = f.variables[var_diff][:,:,lat1_idx,:].squeeze() else: var_diff = f.variables[var_diff][:,:,latmin_idx:latmax_idx+1,:].squeeze() var_diff = np.ma.average(var_diff, axis=1, weights=weights) density = f.variables['density'][:] #Masked values in white var_diff[var_diff > 4] = 0 elif name == 'mme_hist': varname = defVarmme(varname) var = varname['var_global'] if lat_choice == 'one': var = f.variables[var][88:,:,lat1_idx,:].squeeze() else: var = f.variables[var][88:,:,latmin_idx:latmax_idx+1,:] var = np.ma.average(var, axis=2, weights=weights) # Difference var_diff = np.ma.average(var[-5:,:], axis=0) - np.ma.average(var[0:5,:], axis=0) density = f.variables['lev'][:] else: varname = defVar(varname) var = varname['var'] if lat_choice == 'one':
import os import datetime # ----- Work ----- # Directory indir_rcphn = '/home/ysilvy/Density_bining/Yona_analysis/data/toe_rcp85_histNat_average_signal/' indir_rcppiC = '/home/ysilvy/Density_bining/Yona_analysis/data/toe_rcp85_PiControl_average_signal/' models = defModels() domains = [ 'Southern ST', 'SO', 'Northern ST', 'North Atlantic', 'North Pacific' ] varname2 = defVarmme('salinity') v = 'S' varname1 = defVarmme('depth') v = 'Z' method = 'average_signal' # Average signal and noise in the box, then compute ToE # === INPUTS === # method_noise_rcphn = 'average_std' # Average the standard deviation of histNat in the specified domains method_noise_rcp = 'average_histNat' # Average histNat in the specified domains then determine the std of this averaged value use_piC = False # signal = hist+RCP - histNat, noise = std(histNat) # use_piC = True # signal = hist+RCP - PiControl, noise = std(PiControl) if use_piC == True and method_noise_rcp == 'average_histNat':
from libToE import findToE import glob from functions_z_analysis import maptogamma from binDensity import rhonGrid, maskVal # ----- Workspace ------ indir_histrcp85 = '/data/ysilvy/CMIP5_annual/' indir_histNat = '/data/ysilvy/CMIP5_annual/' # ----- Work ------ #models = defModels() # Error: opening the one in Density_bining/ instead of Density_bining/Yona_analysis/programs/ #varname = defVarmme('salinity'); v = 'S' varname = defVarmme('temp') v = 'T' multStd = 2. # detect ToE at multStd std dev of histNat or PiControl use_piC = False # Signal = (hist-histNat) + RCP8.5-average(histNat), noise = std(histNat) # use_piC = True # Signal = hist + RCP8.5 - PiControl, noise = std(PiControl) iniyear = 1860 finalyear = 2100 deltay = 10. # Define variable properties legVar = varname['legVar'] unit = varname['unit']
# -- Read and build variables if name == 'Durack&Wijffels': varname = defVarDurack(varname) var_diff = varname['var_change'] if lat_choice == 'one': var_diff = f.variables[var_diff][:, :, lat1_idx, :].squeeze() else: var_diff = f.variables[var_diff][:, :, latmin_idx:latmax_idx + 1, :].squeeze() var_diff = np.ma.average(var_diff, axis=1, weights=weights) density = f.variables['density'][:] #Masked values in white var_diff[var_diff > 4] = 0 elif name == 'mme_hist': varname = defVarmme(varname) var = varname['var_global'] if lat_choice == 'one': var = f.variables[var][88:, :, lat1_idx, :].squeeze() else: var = f.variables[var][88:, :, latmin_idx:latmax_idx + 1, :] var = np.ma.average(var, axis=2, weights=weights) # Difference var_diff = np.ma.average(var[-5:, :], axis=0) - np.ma.average(var[0:5, :], axis=0) density = f.variables['lev'][:] else: varname = defVar(varname) var = varname['var'] if lat_choice == 'one':