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'][:]
Exemple #3
0
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']
Exemple #7
0
# -- 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':