def readVar(varnames):
    ### Call function to read in ERA-Interim
    lat, lon, time, lev, era = MOR.readDataR('SNC', 'surface', False, True)

    ### Select October-November for index
    eraq = np.nanmean(era[:, 9:11, :, :], axis=1)
    #    eraq = era[:,9:10,:,:].squeeze() # Octobers

    return eraq, lat, lon, lev
Example #2
0
def readVar(varnames,monthperiod):
    ### Call function to read in ERA-Interim
    lat,lon,time,lev,era = MOR.readDataR(varnames,'surface',False,True)
    
    ### Call functions to read in WACCM data
    models = np.empty((len(runnamesm),ensembles,era.shape[0],era.shape[1],
                       era.shape[2],era.shape[3]))
    for i in range(len(runnamesm)):
        lat,lon,time,lev,models[i] = MOM.readDataM(varnames,runnamesm[i],
                                                   'surface',False,True)
        
    ### Retrieve time period of interest
    if monthperiod == 'DJF':
        modq = np.empty((len(runnamesm),ensembles,era.shape[0]-1,era.shape[2],
                           era.shape[3]))
        for i in range(len(runnamesm)):
            for j in range(ensembles):
                modq[i,j,:,:,:] = UT.calcDecJanFeb(models[i,j,:,:,:],
                                                    lat,lon,'surface',1)
        eraq = UT.calcDecJanFeb(era,lat,lon,'surface',1)
    elif monthperiod == 'Annual':
        modq = np.nanmean(models[:,:,:,:,:,:],axis=3)
        eraq = np.nanmean(era[:,:,:,:],axis=1)
    
    ### Take ensemble mean
    modmean = np.nanmean(modq,axis=1)
    
    ### Slice over Arctic polar cap
    latslicemin = 40
    latslicemax = 65
    lonslicemin = 50
    lonslicemax = 130
    latq = np.where((lat >= latslicemin) & (lat <= latslicemax))[0]
    lat = lat[latq]
    lonq = np.where((lon >= lonslicemin) & (lon <= lonslicemax))[0]
    lon = lon[lonq]
    eraq = eraq[:,latq,:]
    eraq = eraq[:,:,lonq]
    modmean = modmean[:,:,latq,:]
    modmean = modmean[:,:,:,lonq]
    
    ### Meshgrid for lat/lon
    lon2,lat2 = np.meshgrid(lon,lat)
    
    eramean = UT.calc_weightedAve(eraq,lat2)
    mmean = UT.calc_weightedAve(modmean,lat2)
    
    ### Create climo over time series
    eraiave = np.nanmean(eramean)
    modelave = np.nanmean(mmean,axis=1)
    
    ### Calculate anomalies
    eraanom = eramean - eraiave
    modelanom = (mmean.transpose() - modelave).transpose()
    
    return eraanom, modelanom
Example #3
0
def readVar(varnames, runnamesm, period):
    ### Call function to read in ERA-Interim (detrended)
    lat, lon, time, lev, era = MOR.readDataR(varnames, 'surface', True, True)

    ### Call functions to read in WACCM data (detrended)
    models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1],
                       era.shape[2], era.shape[3]))
    for i in range(len(runnamesm)):
        lat, lon, time, lev, models[i] = MOM.readDataM(varnames, runnamesm[i],
                                                       'surface', True, True)

    ### Retrieve time period of interest
    if period == 'ON':
        modq = np.nanmean(models[:, :, :, 9:11, :, :], axis=3)
        eraq = np.nanmean(era[:, 9:11, :, :], axis=1)
    elif period == 'OND':
        modq = np.nanmean(models[:, :, :, -3:, :, :], axis=3)
        eraq = np.nanmean(era[:, -3:, :, :], axis=1)
    elif period == 'ND':
        modq = np.nanmean(models[:, :, :, -2:, :, :], axis=3)
        eraq = np.nanmean(era[:, -2:, :, :], axis=1)
    elif period == 'N':
        modq = models[:, :, :, -2, :, :].squeeze()
        eraq = era[:, -2, :, :].squeeze()
    elif period == 'D':
        modq = models[:, :, :, -1:, :, :].squeeze()
        eraq = era[:, -1:, :, :].squeeze()
    elif period == 'JJA':
        modq = np.nanmean(models[:, :, :, 5:8, :, :], axis=3)
        eraq = np.nanmean(era[:, 5:8, :, :], axis=1)
    elif period == 'Annual':
        modq = np.nanmean(models[:, :, :, :, :, :], axis=3)
        eraq = np.nanmean(era[:, :, :, :], axis=1)
    elif period == 'DJF':
        modq = np.empty((len(runnamesm), ensembles, era.shape[0] - 1,
                         era.shape[2], era.shape[3]))
        for i in range(len(runnamesm)):
            for j in range(ensembles):
                modq[i,
                     j, :, :, :] = UT.calcDecJanFeb(models[i, j, :, :, :, :],
                                                    lat, lon, 'surface', 1)
        eraq = UT.calcDecJanFeb(era, lat, lon, 'surface', 1)

    ### Slice U10 at 65N
    latq = np.where((lat >= 64.5) & (lat <= 65.5))[0]
    lat = lat[latq].squeeze()
    eraq = eraq[:, latq, :].squeeze()
    modq = modq[:, :, :, latq, :].squeeze()

    ### Take zonal mean
    eraq = np.nanmean(eraq, axis=1)
    modq = np.nanmean(modq, axis=3)

    return modq, eraq, lat, lon
def readVar(varnames, runnamesm, period):
    if varnames == 'SST':
        world = False
    else:
        world = True

    ### Call function to read in ERA-Interim (detrended)
    lat, lon, time, lev, era = MOR.readDataR(varnames, 'surface', True, world)

    ### Call functions to read in WACCM data (detrended)
    models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1],
                       era.shape[2], era.shape[3]))
    for i in range(len(runnamesm)):
        lat, lon, time, lev, models[i] = MOM.readDataM(varnames, runnamesm[i],
                                                       'surface', True, world)

    return models, era, lat, lon
def readVar(varnames,runnamesm):
### Call function to read in ERA-Interim
    lat,lon,time,lev,era = MOR.readDataR('T2M','surface',False,True)
    
    ### Call functions to read in WACCM data
    models = np.empty((len(runnamesm),ensembles,era.shape[0],era.shape[1],
                       era.shape[2],era.shape[3]))
    for i in range(len(runnamesm)):
        lat,lon,time,lev,models[i] = MOM.readDataM(varnames,runnamesm[i],
                                                   'surface',False,True)
        
    ### Select October-November for index
    modq = np.nanmean(models[:,:,:,9:11,:,:],axis=3)
    
    ### Calculate ensemble mean
    modmean = np.nanmean(modq[:,:,:,:,:],axis=1)
            
    return modmean,lat,lon,lev
def readVar(varnames):
    ### Call function to read in ERA-Interim (detrended)
    lat, lon, time, lev, era = MOR.readDataR(varnames, 'surface', True, True)

    ### Call functions to read in WACCM data (detrended)
    models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1],
                       era.shape[2], era.shape[3]))
    for i in range(len(runnamesm)):
        lat, lon, time, lev, models[i] = MOM.readDataM(varnames, runnamesm[i],
                                                       'surface', True, True)

    ### Retrieve time period of interest
    modq = np.empty((len(runnamesm), ensembles, era.shape[0] - 1, era.shape[2],
                     era.shape[3]))
    for i in range(len(runnamesm)):
        for j in range(ensembles):
            modq[i, j, :, :, :] = UT.calcDecJanFeb(models[i, j, :, :, :], lat,
                                                   lon, 'surface', 1)
    eraq = UT.calcDecJanFeb(era, lat, lon, 'surface', 1)

    return modq, eraq, lat, lon
Example #7
0
def readDataTrends(varnames, month, years, yearmn, yearmx, region):
    ### Call function to read in ERA-Interim
    lat, lon, time, lev, era = MOR.readDataR(varnames, 'surface', False, True)

    ### Call functions to read in WACCM data
    models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1],
                       era.shape[2], era.shape[3]))
    for i in range(len(runnamesm)):
        lat, lon, time, lev, models[i] = MOM.readDataM(varnames, runnamesm[i],
                                                       'surface', False, True)

    ### Retrieve time period of interest
    if month == 'DJF':
        modq = np.empty((len(runnamesm), ensembles, era.shape[0] - 1,
                         era.shape[2], era.shape[3]))
        for i in range(len(runnamesm)):
            for j in range(ensembles):
                modq[i, j, :, :, :] = UT.calcDecJanFeb(models[i, j, :, :, :],
                                                       lat, lon, 'surface', 1)
        eraq = UT.calcDecJanFeb(era, lat, lon, 'surface', 1)

    if region == 'Siberia':
        latslicemin = 40
        latslicemax = 65
        lonslicemin = 50
        lonslicemax = 130
        latq = np.where((lat >= latslicemin) & (lat <= latslicemax))[0]
        lat = lat[latq]
        lonq = np.where((lon >= lonslicemin) & (lon <= lonslicemax))[0]
        lon = lon[lonq]
        eraq = eraq[:, latq, :]
        eraq = eraq[:, :, lonq]
        modq = modq[:, :, :, latq, :]
        modq = modq[:, :, :, :, lonq]
    elif region == 'NA':
        latslicemin = 35
        latslicemax = 50
        lonslicemin = 260
        lonslicemax = 290
        latq = np.where((lat >= latslicemin) & (lat <= latslicemax))[0]
        lat = lat[latq]
        lonq = np.where((lon >= lonslicemin) & (lon <= lonslicemax))[0]
        lon = lon[lonq]
        eraq = eraq[:, latq, :]
        eraq = eraq[:, :, lonq]
        modq = modq[:, :, :, latq, :]
        modq = modq[:, :, :, :, lonq]
    elif region == 'Arctic':
        latq = np.where(lat >= 65)[0]
        lat = lat[latq]
        eraq = eraq[:, latq, :]
        modq = modq[:, :, :, latq, :]
    elif region == 'NH':
        eraq = eraq
        modmean = modq

    ### Calculate the trend for WACCM
    modtrend = np.empty(
        (len(runnamesm), ensembles, modq.shape[3], modq.shape[4]))
    for i in range(len(runnamesm)):
        modtrend[i, :, :, :] = UT.detrendData(modq[i], years, 'surface',
                                              yearmn, yearmx)
        print('Completed: Simulation --> %s!' % runnamesm[i])

    ### Calculate decadal trend
    dectrend = modtrend * 10.

    ### Calculate the trend for ERA-Interim
    retrend, std_err = UT.detrendDataR(eraq, years, 'surface', yearmn, yearmx)

    #### Calculate decadal trend
    redectrend = retrend * 10.
    std_err = std_err * 10.

    return lat, lon, dectrend, redectrend, std_err
Example #8
0
years = np.arange(year1, year2 + 1, 1)

### Add parameters
ensembles = 10
su = [0, 1, 2, 3, 5, 6, 7]
period = 'JFM'
varnames = ['T2M', 'SLP', 'Z500', 'Z50', 'U200', 'U10', 'THICK']
runnames = [r'ERA-I', r'CSST', r'CSIC', r'AMIP', r'AMQ', r'AMS', r'AMQS']
runnamesm = [r'CSST', r'CSIC', r'AMIP', r'AMQ', r'AMS', r'AMQS']

### Define directories
directoryfigure = '/home/zlabe/Desktop/SNR/%s/' % period

for v in range(len(varnames)):
    ### Call function to read in ERA-Interim
    lat, lon, time, lev, era = MOR.readDataR(varnames[v], 'surface', False,
                                             True)

    ### Call functions to read in WACCM data
    models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1],
                       era.shape[2], era.shape[3]))
    for i in range(len(runnamesm)):
        lat, lon, time, lev, models[i] = MOM.readDataM(varnames[v],
                                                       runnamesm[i], 'surface',
                                                       False, True)

    ### Retrieve time period of interest
    if period == 'DJF':
        modq = np.empty((len(runnamesm), ensembles, era.shape[0] - 1,
                         era.shape[2], era.shape[3]))
        for i in range(len(runnamesm)):
            for j in range(ensembles):
currenttime = currentmn + '_' + currentdy + '_' + currentyr
titletime = currentmn + '/' + currentdy + '/' + currentyr
print('\n' '----Plotting WACC T2M Trends - %s----' % titletime)

#### Alott time series
year1 = 1978
year2 = 2016
years = np.arange(year1, year2 + 1, 1)

### Add parameters
ensembles = 10
varnames = ['T2M']
runnames = [r'CSST', r'CSIC', r'AMIP', r'AMQ', r'AMS', r'AMQS']

### Call function to read in ERA-Interim
lat, lon, time, lev, era = MOR.readDataR('T2M', 'surface', False, True)

### Call functions to read in WACCM data
models = np.empty((len(runnames), ensembles, era.shape[0], era.shape[1],
                   era.shape[2], era.shape[3]))
for i in range(len(runnames)):
    lat, lon, time, lev, models[i] = MOM.readDataM('T2M', runnames[i],
                                                   'surface', False, True)

### Retrieve time period of interest
modq = np.empty(
    (len(runnames), ensembles, era.shape[0] - 1, era.shape[2], era.shape[3]))
for i in range(len(runnames)):
    for j in range(ensembles):
        modq[i, j, :, :, :] = UT.calcDecJanFeb(models[i, j, :, :, :], lat, lon,
                                               'surface', 1)