コード例 #1
0
def readMHF100():
    ### Call functions for MHF data at 100 hPa
    lat, lon, time, lev, varhit = DO.readMeanExperiAll('MHF100', 'HIT',
                                                       'profile')
    lat, lon, time, lev, varfit = DO.readMeanExperiAll('MHF100', 'FIT',
                                                       'profile')
    lat, lon, time, lev, varFIT = DO.readMeanExperiAll('MHF100', 'FIT',
                                                       'profile')

    ### Create 2d array of latitude and longitude
    lon2, lat2 = np.meshgrid(lon, lat)

    ### Read in QBO phases
    filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    pos_hit = np.append(
        np.genfromtxt(filenamehitp, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamehitp2, unpack=True, usecols=[0], dtype='int') +
        100)
    neg_hit = np.append(
        np.genfromtxt(filenamehitn, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamehitn2, unpack=True, usecols=[0], dtype='int') +
        100)

    filenameFITp = directorydata + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[0]
    filenameFITn = directorydata + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[2]
    filenameFITp2 = directorydata2 + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[0]
    filenameFITn2 = directorydata2 + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[2]
    pos_FIT = np.append(
        np.genfromtxt(filenameFITp, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenameFITp2, unpack=True, usecols=[0], dtype='int') +
        100)
    neg_FIT = np.append(
        np.genfromtxt(filenameFITn, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenameFITn2, unpack=True, usecols=[0], dtype='int') +
        100)
    ### Concatonate runs
    var_mo = [varhit, varfit, varFIT]

    ### Composite by QBO phase and take zonal mean
    hitpos = var_mo[0][pos_hit, :].squeeze()
    FITpos = var_mo[2][pos_FIT, :].squeeze()

    hitneg = var_mo[0][neg_hit, :].squeeze()
    FITneg = var_mo[2][neg_FIT, :].squeeze()

    ### Take zonal mean
    hitpos = np.nanmean(hitpos, axis=2)
    FITpos = np.nanmean(FITpos, axis=2)

    hitneg = np.nanmean(hitneg, axis=2)
    FITneg = np.nanmean(FITneg, axis=2)

    ### Store data in a list
    diffruns = [FITpos, FITneg, hitpos, hitneg]

    return diffruns
コード例 #2
0
def readZ30(varnames):
    lat,lon,time,lev,tashit = DO.readMeanExperiAll('%s' % varnames,
                                                'HIT','surface')
    lat,lon,time,lev,tasfict = DO.readMeanExperiAll('%s' % varnames,
                                                'FICT','surface')
    
    ### Create 2d array of latitude and longitude
    lon2,lat2 = np.meshgrid(lon,lat)
    
    ### Read in QBO phases 
    filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    pos_hit = np.append(np.genfromtxt(filenamehitp,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamehitp2,unpack=True,usecols=[0],dtype='int')+100)
    neg_hit = np.append(np.genfromtxt(filenamehitn,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamehitn2,unpack=True,usecols=[0],dtype='int')+100)    
    
    filenamefictp = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[0]
    filenamefictn = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[2]
    filenamefictp2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[0]
    filenamefictn2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[2]
    pos_fict = np.append(np.genfromtxt(filenamefictp,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamefictp2,unpack=True,usecols=[0],dtype='int')+100)
    neg_fict = np.append(np.genfromtxt(filenamefictn,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamefictn2,unpack=True,usecols=[0],dtype='int')+100)

    tas_mo = [tashit,tasfict]

    ### Composite by QBO phase    
    tas_mohitpos = tas_mo[0][pos_hit,:,:,:]
    tas_mofictpos = tas_mo[1][pos_fict,:,:,:]
    
    tas_mohitneg = tas_mo[0][neg_hit,:,:,:]
    tas_mofictneg = tas_mo[1][neg_fict,:,:,:]
    
    ### Compute comparisons for months - select region
    if varnames == 'Z30':
        latq = np.where((lat >=65) & (lat <=90))[0]
        fictpos = tas_mofictpos
        fictneg = tas_mofictneg
        fictpos = fictpos[:,:,latq]
        fictneg = fictneg[:,:,latq]
        lat2s = lat2[latq,:]
        fictpos = UT.calc_weightedAve(fictpos,lat2s)
        fictneg = UT.calc_weightedAve(fictneg,lat2s)
        
        hitpos = tas_mohitpos
        hitneg = tas_mohitneg
        hitpos = hitpos[:,:,latq]
        hitneg = hitneg[:,:,latq]
        hitpos = UT.calc_weightedAve(hitpos,lat2s)
        hitneg = UT.calc_weightedAve(hitneg,lat2s)
        
    diffruns = [fictpos.squeeze(),fictneg.squeeze(),hitpos.squeeze(),hitneg.squeeze()]
    
    return diffruns
コード例 #3
0
year1 = 1800
year2 = 2000
years = np.arange(year1,year2+1,1)

### Add parameters
MASK = False
N=30 # days
varnames = ['U200']
runnames = [r'HIT',r'FIT',r'FICT']
qbophase = ['pos','non','neg']
experiments = [r'\textbf{FIT--HIT}',r'\textbf{FIT--HIT}',r'\textbf{FIT--HIT}',
               r'\textbf{FICT--HIT}',r'\textbf{FICT--HIT}',r'\textbf{FICT--HIT}']

### Call functions for variable profile data for polar cap
for v in range(len(varnames)):
    lat,lon,time,lev,varhit = DO.readMeanExperiAll('%s' % varnames[v],
                                                'HIT','surface')
    lat,lon,time,lev,varfit = DO.readMeanExperiAll('%s' % varnames[v],
                                                'FIT','surface')
    lat,lon,time,lev,varfict = DO.readMeanExperiAll('%s' % varnames[v],
                                                'FICT','surface')
    
    ### Create 2d array of latitude and longitude
    lon2,lat2 = np.meshgrid(lon,lat)
    
    ### Read in QBO phases 
    filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitno = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
    filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitno2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
    filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
コード例 #4
0
            lev = data.variables['level'][:]
            lat = data.variables['latitude'][:]
            lon = data.variables['longitude'][:]
            var[i, :, :] = data.variables['%s' % varid][:]
            data.close()
        else:
            print(ValueError('Wrong height - (surface or profile!)!'))
        print('Completed: Read data for *%s%s* : %s!' %
              (experi[:4], i + 1, varid))
    print('Completed: Read members 1-200!')
    print('\n*Completed: Finished readCTLQ function!')
    return lat, lon, time, lev, var


### Call functions for variable profile data for polar cap
lat, lon, time, lev, tashit = DO.readMeanExperiAll('%s' % varnames, 'HIT',
                                                   'profile')
lat, lon, time, lev, tasfit = DO.readMeanExperiAll('%s' % varnames, 'FIT',
                                                   'profile')
lat, lon, time, lev, tasfict = DO.readMeanExperiAll('%s' % varnames, 'FICT',
                                                    'profile')
lat, lon, time, lev, tasfic = DO.readMeanExperiAll('%s' % varnames, 'FIC',
                                                   'profile')
lat, lon, time, lev, tascit = DO.readMeanExperiAll('%s' % varnames, 'CIT',
                                                   'profile')
lat, lon, time, lev, tasfsub = DOR.readMeanExperiAllRegional(
    '%s' % varnames, 'FSUB', 'profile')
lat, lon, time, lev, tasfpol = DOR.readMeanExperiAllRegional(
    '%s' % varnames, 'FPOL', 'profile')
lat, lon, time, lev, tasctlq = readCTLQ('%s' % varnames, 'CTLQ', 'profile')

### Create 2d array of latitude and longitude
コード例 #5
0
def readWAF(varnames, runnames, experiments, qbophase):
    """
    Function reads in WAF data for listed experiments

    Parameters
    ----------
    varnames : string
        variable to download
    runnames : list of strings
        model experiments to read in
    experiments : list of strings
        model simulations to compare
    qbophase : list of strings
        list of qbo phases

    Returns
    -------
    diffruns : list of arrays
        arrays for each experiment variable
    pruns : list of arrays
        arrays of p-values for each experiment variable
    lev : 1d array
        leves

    Usage
    -----
    diffruns,pruns,lev = readWAF(varnames,runnames,experiments,qbophase)
    """
    print('\n>>> Using readWAF function!')

    ### Call functions for variable profile data for polar cap
    lat, lon, time, lev, varhit = DO.readMeanExperiAll('%s' % varnames, 'HIT',
                                                       'profile3')
    lat, lon, time, lev, varfict = DO.readMeanExperiAll(
        '%s' % varnames, 'FICT', 'profile3')

    ### Create 2d array of latitude and longitude
    lon2, lat2 = np.meshgrid(lon, lat)

    ### Read in QBO phases
    filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitno = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
    filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitno2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
    filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    pos_hit = np.append(
        np.genfromtxt(filenamehitp, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamehitp2, unpack=True, usecols=[0], dtype='int') +
        100)
    non_hit = np.append(
        np.genfromtxt(filenamehitno, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamehitno2, unpack=True, usecols=[0], dtype='int') +
        100)
    neg_hit = np.append(
        np.genfromtxt(filenamehitn, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamehitn2, unpack=True, usecols=[0], dtype='int') +
        100)

    filenamefictp = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[0]
    filenamefictno = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
        1]
    filenamefictn = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[2]
    filenamefictp2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
        0]
    filenamefictno2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
        1]
    filenamefictn2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
        2]
    pos_fict = np.append(
        np.genfromtxt(filenamefictp, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamefictp2, unpack=True, usecols=[0], dtype='int') +
        100)
    non_fict = np.append(
        np.genfromtxt(filenamefictno, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamefictno2, unpack=True, usecols=[0], dtype='int') +
        100)
    neg_fict = np.append(
        np.genfromtxt(filenamefictn, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamefictn2, unpack=True, usecols=[0], dtype='int') +
        100)

    ### Concatonate runs
    var_mo = [varhit, varfict]

    ### Save memory
    del varhit
    del varfict

    ### Composite by QBO phase
    var_mohitpos = var_mo[0][pos_hit, :]
    var_mofictpos = var_mo[1][pos_fict, :]

    var_mohitnon = var_mo[0][non_hit, :]
    var_mofictnon = var_mo[1][non_fict, :]

    var_mohitneg = var_mo[0][neg_hit, :]
    var_mofictneg = var_mo[1][neg_fict, :]

    ### Compute comparisons for months - taken ensemble average
    ficthitpos = np.nanmean(var_mofictpos - var_mohitpos, axis=0)
    ficthitnon = np.nanmean(var_mofictnon - var_mohitnon, axis=0)
    ficthitneg = np.nanmean(var_mofictneg - var_mohitneg, axis=0)

    ficthitposa = UT.calc_weightedAve(ficthitpos, lat2)
    ficthitnona = UT.calc_weightedAve(ficthitnon, lat2)
    ficthitnega = UT.calc_weightedAve(ficthitneg, lat2)

    diffruns = [ficthitposa, ficthitnona, ficthitnega]

    ### Calculate significance for days
    stat_FICTHITpos, pvalue_FICTHITpos = UT.calc_indttest(
        var_mo[1][pos_fict, :], var_mo[0][pos_hit, :])
    stat_FICTHITnon, pvalue_FICTHITnon = UT.calc_indttest(
        var_mo[1][non_fict, :], var_mo[0][non_hit, :])
    stat_FICTHITneg, pvalue_FICTHITneg = UT.calc_indttest(
        var_mo[1][neg_fict, :], var_mo[0][neg_hit, :])

    pvalue_FICTHITposa = UT.calc_weightedAve(pvalue_FICTHITpos, lat2)
    pvalue_FICTHITnona = UT.calc_weightedAve(pvalue_FICTHITnon, lat2)
    pvalue_FICTHITnega = UT.calc_weightedAve(pvalue_FICTHITneg, lat2)

    pruns = [pvalue_FICTHITposa, pvalue_FICTHITnona, pvalue_FICTHITnega]

    print('\n*Completed: Finished readWAF function!')
    return diffruns, pruns, lev
コード例 #6
0
def readVariables(varnames,period,region):
    lat,lon,time,lev,tashit = DO.readMeanExperiAll('%s' % varnames,
                                                'HIT','surface')
    lat,lon,time,lev,tasfict = DO.readMeanExperiAll('%s' % varnames,
                                                'FICT','surface')
    
    ### Create 2d array of latitude and longitude
    lon2,lat2 = np.meshgrid(lon,lat)
    
    ### Read in QBO phases 
    filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitno = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
    filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitno2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
    filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    pos_hit = np.append(np.genfromtxt(filenamehitp,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamehitp2,unpack=True,usecols=[0],dtype='int')+100)
    non_hit = np.append(np.genfromtxt(filenamehitno,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamehitno2,unpack=True,usecols=[0],dtype='int')+100)
    neg_hit = np.append(np.genfromtxt(filenamehitn,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamehitn2,unpack=True,usecols=[0],dtype='int')+100)    
    
    filenamefictp = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[0]
    filenamefictno = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[1]
    filenamefictn = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[2]
    filenamefictp2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[0]
    filenamefictno2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[1]
    filenamefictn2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[2]
    pos_fict = np.append(np.genfromtxt(filenamefictp,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamefictp2,unpack=True,usecols=[0],dtype='int')+100)
    non_fict = np.append(np.genfromtxt(filenamefictno,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamefictno2,unpack=True,usecols=[0],dtype='int')+100)
    neg_fict = np.append(np.genfromtxt(filenamefictn,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamefictn2,unpack=True,usecols=[0],dtype='int')+100)
    
    ### Concatonate runs
    runs = [tashit,tasfict]
    
    ### Separate per periods (ON,DJ,FM)
    if period == 'D':
        tas_mo= np.empty((2,tashit.shape[0],90,tashit.shape[2],tashit.shape[3]))
        for i in range(len(runs)):
            tas_mo[i] = runs[i][:,60:150,:,:]
#            tas_mo[i] = np.nanmean(runs[i][:,-2:,:,:],axis=1)
    else:
        ValueError('Wrong period selected!')
        
    ### Composite by QBO phase    
    tas_mohitpos = tas_mo[0][pos_hit,:,:,:] 
    tas_mofictpos = tas_mo[1][pos_fict,:,:,:] 
    
    tas_mohitnon = tas_mo[0][non_hit,:,:,:] 
    tas_mofictnon = tas_mo[1][non_fict,:,:,:] 
    
    tas_mohitneg = tas_mo[0][neg_hit,:,:,:] 
    tas_mofictneg = tas_mo[1][neg_fict,:,:,:] 
    
    ### Compute comparisons for months - select region
    if region == 'Atlantic':
        lonq = np.append(np.where((lon >=310) & (lon <=360))[0],
                             np.where((lon >=0) & (lon <=20))[0],axis=0)
    elif region == 'Pacific':
        lonq = np.where((lon >= 120) & (lon <= 170))[0]
        
    ficthitpos = tas_mofictpos[:,:,:,lonq]
    ficthitnon = tas_mofictnon[:,:,:,lonq] 
    ficthitneg = tas_mofictneg[:,:,:,lonq]
    
    ### Calculate upper lats
    latqu = np.where((lat >=60) & (lat <=90))[0]
    ficthitposu = ficthitpos[:,:,latqu]
    ficthitnonu = ficthitnon[:,:,latqu] 
    ficthitnegu = ficthitneg[:,:,latqu]
    lat2squ = lat2[latqu,:]
    lat2su = lat2squ[:,lonq]
    ficthitposuu = UT.calc_weightedAve(ficthitposu,lat2su)
    ficthitnonuu = UT.calc_weightedAve(ficthitnonu,lat2su)
    ficthitneguu = UT.calc_weightedAve(ficthitnegu,lat2su)
    
    ### Calculate lower lats
    latql = np.where((lat >=20) & (lat <=50))[0]
    ficthitposl = ficthitpos[:,:,latql]
    ficthitnonl = ficthitnon[:,:,latql] 
    ficthitnegl = ficthitneg[:,:,latql]
    lat2sql = lat2[latql,:]
    lat2sl = lat2sql[:,lonq]
    ficthitposll = UT.calc_weightedAve(ficthitposl,lat2sl)
    ficthitnonll = UT.calc_weightedAve(ficthitnonl,lat2sl)
    ficthitnegll = UT.calc_weightedAve(ficthitnegl,lat2sl)
    
    ### Calculate Zonal Index (Z500u - Z500l)
    zdiffpos = ficthitposll - ficthitposuu
    zdiffnon = ficthitnonll - ficthitnonuu 
    zdiffneg = ficthitnegll - ficthitneguu
    diffruns_fict = [zdiffpos,zdiffnon,zdiffneg]
    
    ###########################################################################
    ### Calculate for HIT
    hitpos = tas_mohitpos[:,:,:,lonq]
    hitnon = tas_mohitnon[:,:,:,lonq] 
    hitneg = tas_mohitneg[:,:,:,lonq]
    
    ### Calculate upper lats
    latqu = np.where((lat >=60) & (lat <=90))[0]
    hitposu = hitpos[:,:,latqu]
    hitnonu = hitnon[:,:,latqu] 
    hitnegu = hitneg[:,:,latqu]
    lat2squ = lat2[latqu,:]
    lat2su = lat2squ[:,lonq]
    hitposuu = UT.calc_weightedAve(hitposu,lat2su)
    hitnonuu = UT.calc_weightedAve(hitnonu,lat2su)
    hitneguu = UT.calc_weightedAve(hitnegu,lat2su)
    
    ### Calculate lower lats
    latql = np.where((lat >=20) & (lat <=50))[0]
    hitposl = hitpos[:,:,latql]
    hitnonl = hitnon[:,:,latql] 
    hitnegl = hitneg[:,:,latql]
    lat2sql = lat2[latql,:]
    lat2sl = lat2sql[:,lonq]
    hitposll = UT.calc_weightedAve(hitposl,lat2sl)
    hitnonll = UT.calc_weightedAve(hitnonl,lat2sl)
    hitnegll = UT.calc_weightedAve(hitnegl,lat2sl)
    
    ### Calculate Zonal Index (Z500u - Z500l)
    zdiffposh = hitposll - hitposuu
    zdiffnonh = hitnonll - hitnonuu 
    zdiffnegh = hitnegll - hitneguu
    diffruns_hit = [zdiffposh,zdiffnonh,zdiffnegh]
    
    return diffruns_fict,diffruns_hit,lat,lon
コード例 #7
0
years = np.arange(year1, year2 + 1, 1)

### Add parameters
N = 7  # days
MASK = True
varnames = ['GEOP', 'TEMP', 'U', 'V']
runnames = [r'CIT', r'FSUB', r'FPOL']
qbophase = ['pos', 'non', 'neg']
experiments = [
    r'\textbf{FSUB--CIT}', r'\textbf{FSUB--CIT}', r'\textbf{FSUB-CIT}',
    r'\textbf{FPOL--CIT}', r'\textbf{FPOL--CIT}', r'\textbf{FPOL--CIT}'
]

### Call functions for variable profile data for polar cap
for v in range(len(varnames)):
    lat, lon, time, lev, varcit = DO.readMeanExperiAll('%s' % varnames[v],
                                                       'CIT', 'profile')
    lat, lon, time, lev, varfsub = DOR.readMeanExperiAllRegional(
        '%s' % varnames[v], 'FSUB', 'profile')
    lat, lon, time, lev, varfpol = DOR.readMeanExperiAllRegional(
        '%s' % varnames[v], 'FPOL', 'profile')

    ### Create 2d array of latitude and longitude
    lon2, lat2 = np.meshgrid(lon, lat)

    ### Read in QBO phases
    filenamecitp = directorydata + 'CIT/monthly/QBO_%s_CIT.txt' % qbophase[0]
    filenamecitno = directorydata + 'CIT/monthly/QBO_%s_CIT.txt' % qbophase[1]
    filenamecitn = directorydata + 'CIT/monthly/QBO_%s_CIT.txt' % qbophase[2]
    filenamecitp2 = directorydata2 + 'CIT/monthly/QBO_%s_CIT.txt' % qbophase[0]
    filenamecitno2 = directorydata2 + 'CIT/monthly/QBO_%s_CIT.txt' % qbophase[1]
    filenamecitn2 = directorydata2 + 'CIT/monthly/QBO_%s_CIT.txt' % qbophase[2]
コード例 #8
0
def readDataGEOP(varnames):
    lat, lon, time, lev, varhit = DO.readMeanExperiAll('%s' % varnames, 'HIT',
                                                       'profileregional')
    lat, lon, time, lev, varfict = DO.readMeanExperiAll(
        '%s' % varnames, 'FICT', 'profileregional')

    ### Create 2d array of latitude and longitude
    lon2, lat2 = np.meshgrid(lon, lat)

    ### Read in QBO phases
    filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    pos_hit = np.append(
        np.genfromtxt(filenamehitp, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamehitp2, unpack=True, usecols=[0], dtype='int') +
        100)
    neg_hit = np.append(
        np.genfromtxt(filenamehitn, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamehitn2, unpack=True, usecols=[0], dtype='int') +
        100)

    filenamefictp = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[0]
    filenamefictn = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[2]
    filenamefictp2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
        0]
    filenamefictn2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
        2]
    pos_fict = np.append(
        np.genfromtxt(filenamefictp, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamefictp2, unpack=True, usecols=[0], dtype='int') +
        100)
    neg_fict = np.append(
        np.genfromtxt(filenamefictn, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamefictn2, unpack=True, usecols=[0], dtype='int') +
        100)
    ### Concatonate runs
    var_mo = [varhit, varfict]

    ### Composite by QBO phase
    var_mohitpos = var_mo[0][pos_hit, :]
    var_mofictpos = var_mo[1][pos_fict, :]

    var_mohitneg = var_mo[0][neg_hit, :]
    var_mofictneg = var_mo[1][neg_fict, :]

    ### Compute comparisons for months - taken ensemble average
    ficthitpos = np.nanmean(var_mofictpos - var_mohitpos, axis=0)
    ficthitneg = np.nanmean(var_mofictneg - var_mohitneg, axis=0)

    diffruns = [ficthitpos, ficthitneg]

    ### Calculate significance
    stat_FICTHITpos, pvalue_FICTHITpos = UT.calc_indttest(
        var_mo[1][pos_fict, :], var_mo[0][pos_hit, :])
    stat_FICTHITneg, pvalue_FICTHITneg = UT.calc_indttest(
        var_mo[1][neg_fict, :], var_mo[0][neg_hit, :])

    pruns = [pvalue_FICTHITpos, pvalue_FICTHITneg]
    return diffruns, pruns, lev
コード例 #9
0
def readVariables(varnames,period,location):
    lat,lon,time,lev,tashit = DO.readMeanExperiAll('%s' % varnames,
                                                'HIT','surface')
    lat,lon,time,lev,tasfict = DO.readMeanExperiAll('%s' % varnames,
                                                'FICT','surface')
    
    ### Create 2d array of latitude and longitude
    lon2,lat2 = np.meshgrid(lon,lat)
    
    ### Read in QBO phases 
    filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitno = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
    filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitno2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
    filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    pos_hit = np.append(np.genfromtxt(filenamehitp,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamehitp2,unpack=True,usecols=[0],dtype='int')+100)
    non_hit = np.append(np.genfromtxt(filenamehitno,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamehitno2,unpack=True,usecols=[0],dtype='int')+100)
    neg_hit = np.append(np.genfromtxt(filenamehitn,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamehitn2,unpack=True,usecols=[0],dtype='int')+100)    
    
    filenamefictp = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[0]
    filenamefictno = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[1]
    filenamefictn = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[2]
    filenamefictp2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[0]
    filenamefictno2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[1]
    filenamefictn2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[2]
    pos_fict = np.append(np.genfromtxt(filenamefictp,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamefictp2,unpack=True,usecols=[0],dtype='int')+100)
    non_fict = np.append(np.genfromtxt(filenamefictno,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamefictno2,unpack=True,usecols=[0],dtype='int')+100)
    neg_fict = np.append(np.genfromtxt(filenamefictn,unpack=True,usecols=[0],dtype='int'),
                        np.genfromtxt(filenamefictn2,unpack=True,usecols=[0],dtype='int')+100)
    
    ### Concatonate runs
    runs = [tashit,tasfict]
    
    ### Separate per periods (ON,DJ,FM)
    if period == 'D':
        tas_mo= np.empty((2,tashit.shape[0],31,tashit.shape[2],tashit.shape[3]))
        for i in range(len(runs)):
            tas_mo[i] = runs[i][:,90:121,:,:]
#    elif period == 'N':
#        tas_mo= np.empty((3,tashit.shape[0],tashit.shape[2],tashit.shape[3]))
#        for i in range(len(runs)):
#            tas_mo[i] = runs[i][:,-2,:,:]
#    elif period == 'ND':
#        tas_mo= np.empty((3,tashit.shape[0],tashit.shape[2],tashit.shape[3]))
#        for i in range(len(runs)):
#            tas_mo[i] = np.nanmean(runs[i][:,-2:,:,:],axis=1)
    else:
        ValueError('Wrong period selected!')
        
    ### Composite by QBO phase    
    tas_mohitpos = tas_mo[0][pos_hit,:,:,:]
    tas_mofictpos = tas_mo[1][pos_fict,:,:,:]
    
    tas_mohitnon = tas_mo[0][non_hit,:,:,:]
    tas_mofictnon = tas_mo[1][non_fict,:,:,:]
    
    tas_mohitneg = tas_mo[0][neg_hit,:,:,:]
    tas_mofictneg = tas_mo[1][neg_fict,:,:,:]
    
    ### Compute comparisons for months - select region
    if varnames == 'SLP':
        lonq = np.where((lon >=80) & (lon <=120))[0]
        ficthitpos = tas_mofictpos[:,:,:,lonq]
        ficthitnon = tas_mofictnon[:,:,:,lonq] 
        ficthitneg = tas_mofictneg[:,:,:,lonq]
        latq = np.where((lat >=40) & (lat <=65))[0]
        ficthitpos = ficthitpos[:,:,latq]
        ficthitnon = ficthitnon[:,:,latq] 
        ficthitneg = ficthitneg[:,:,latq]
        lat2sq = lat2[latq,:]
        lat2s = lat2sq[:,lonq]
        ficthitpos = UT.calc_weightedAve(ficthitpos,lat2s)
        ficthitnon = UT.calc_weightedAve(ficthitnon,lat2s)
        ficthitneg = UT.calc_weightedAve(ficthitneg,lat2s)
    diffruns = [ficthitpos.squeeze(),ficthitnon.squeeze(),ficthitneg.squeeze()]
    
    return diffruns,lat,lon,lev
コード例 #10
0
def readJet(varnames, qbophase, location):
    ### Call functions for variable profile data for polar cap
    for v in range(len(varnames)):
        lat, lon, time, lev, varhit = DO.readMeanExperiAll(
            '%s' % varnames[v], 'HIT', 'surface')
        lat, lon, time, lev, varfict = DO.readMeanExperiAll(
            '%s' % varnames[v], 'FICT', 'surface')

        ### Create 2d array of latitude and longitude
        lon2, lat2 = np.meshgrid(lon, lat)

        ### Read in QBO phases
        filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[
            0]
        filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[
            2]
        filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[
            0]
        filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[
            2]
        pos_hit = np.append(
            np.genfromtxt(filenamehitp, unpack=True, usecols=[0], dtype='int'),
            np.genfromtxt(filenamehitp2, unpack=True, usecols=[0], dtype='int')
            + 100)
        neg_hit = np.append(
            np.genfromtxt(filenamehitn, unpack=True, usecols=[0], dtype='int'),
            np.genfromtxt(filenamehitn2, unpack=True, usecols=[0], dtype='int')
            + 100)

        filenamefictp = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
            0]
        filenamefictn = directorydata + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
            2]
        filenamefictp2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
            0]
        filenamefictn2 = directorydata2 + 'FICT/monthly/QBO_%s_FICT.txt' % qbophase[
            2]
        pos_fict = np.append(
            np.genfromtxt(filenamefictp, unpack=True, usecols=[0],
                          dtype='int'),
            np.genfromtxt(
                filenamefictp2, unpack=True, usecols=[0], dtype='int') + 100)
        neg_fict = np.append(
            np.genfromtxt(filenamefictn, unpack=True, usecols=[0],
                          dtype='int'),
            np.genfromtxt(
                filenamefictn2, unpack=True, usecols=[0], dtype='int') + 100)
        ### Concatonate runs
        var_mo = [varhit, varfict]

        ### Composite by QBO phase
        var_mohitpos = var_mo[0][pos_hit, :]
        var_mofictpos = var_mo[1][pos_fict, :]
        var_mohitneg = var_mo[0][neg_hit, :]
        var_mofictneg = var_mo[1][neg_fict, :]

        ### Average over longitude
        if location == 'Atlantic':
            lonq = np.append(np.where((lon >= 310) & (lon <= 360))[0],
                             np.where((lon >= 0) & (lon <= 20))[0],
                             axis=0)
        if location == 'Pacific':
            lonq = np.where((lon >= 120) & (lon <= 220))[0]

        var_mohitposz = np.nanmean(var_mohitpos[:, :, :, lonq], axis=3)
        var_mofictposz = np.nanmean(var_mofictpos[:, :, :, lonq], axis=3)
        var_mohitnegz = np.nanmean(var_mohitneg[:, :, :, lonq], axis=3)
        var_mofictnegz = np.nanmean(var_mofictneg[:, :, :, lonq], axis=3)

        ### Save climatologies
        climo = [var_mohitnegz, var_mohitposz, np.zeros(var_mohitposz.shape)]

        ### Compute comparisons for months - taken ensemble average
        ficthitpos = np.nanmean(var_mofictposz - var_mohitposz, axis=0)
        ficthitneg = np.nanmean(var_mofictnegz - var_mohitnegz, axis=0)
        diffruns = [ficthitneg, ficthitpos, ficthitneg - ficthitpos]

        ### Smoothing for statistics
        varstat = [
            var_mohitnegz, var_mohitposz, var_mofictnegz, var_mofictposz
        ]
        stats = []
        for yr in range(len(varstat)):
            varqstat = np.empty((varstat[yr].shape[0], 212 - (N - 1), 96))
            for ph in range(var_mohitnegz.shape[0]):
                for s in range(var_mohitnegz.shape[2]):
                    varqstat[ph, :, s] = np.convolve(varstat[yr][ph, :, s],
                                                     np.ones((N, )) / N,
                                                     mode='valid')
            empty = np.empty(
                (varstat[yr].shape[0], N - 1, varstat[yr].shape[2]))
            empty[:] = np.nan
            varnstat = np.append(np.asarray(varqstat), empty, axis=1)
            stats.append(varnstat)

        ### Calculate significance
        stat_FICTHITpos, pvalue_FICTHITpos = UT.calc_indttest(
            stats[3], stats[1])
        stat_FICTHITneg, pvalue_FICTHITneg = UT.calc_indttest(
            stats[2], stats[0])

        pruns = [
            pvalue_FICTHITneg, pvalue_FICTHITpos,
            np.zeros(pvalue_FICTHITneg.shape)
        ]

        ### Delete files for memory
        del var_mo
        del varhit
        del varfict

    return lat, lon, diffruns, climo, pruns
コード例 #11
0
titletime = currentmn + '/' + currentdy + '/' + currentyr
print('\n' '----Calculating Vorticity for SeaIceQBO - %s----' % titletime)

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

### Add parameters
varnames = ['U', 'V']
runnames = [r'FICT']
qbophase = ['pos', 'non', 'neg']
experiments = [r'\textbf{FICT--HIT}']

### Call functions for variable profile data for polar cap
lat, lon, time, lev, varuu = DO.readMeanExperiAll('U', 'FICT', 'profile2')
lat, lon, time, lev, varvv = DO.readMeanExperiAll('V', 'FICT', 'profile2')

lat, lon, time, lev, hituu = DO.readMeanExperiAll('U', 'HIT', 'profile2')
lat, lon, time, lev, hitvv = DO.readMeanExperiAll('V', 'HIT', 'profile2')

### Create 2d array of latitude and longitude
lon2, lat2 = np.meshgrid(lon, lat)

### Read in QBO phases
filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
filenamehitno = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
filenamehitno2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
コード例 #12
0
def readVariables(varnames):
    lat, lon, time, lev, tashit = DO.readMeanExperiAll('%s' % varnames, 'HIT',
                                                       'surface')
    lat, lon, time, lev, tasFIT = DO.readMeanExperiAll('%s' % varnames, 'FIT',
                                                       'surface')

    ### Create 2d array of latitude and longitude
    lon2, lat2 = np.meshgrid(lon, lat)

    ### Read in QBO phases
    filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
    filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
    pos_hit = np.append(
        np.genfromtxt(filenamehitp, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamehitp2, unpack=True, usecols=[0], dtype='int') +
        100)
    neg_hit = np.append(
        np.genfromtxt(filenamehitn, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenamehitn2, unpack=True, usecols=[0], dtype='int') +
        100)

    filenameFITp = directorydata + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[0]
    filenameFITn = directorydata + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[2]
    filenameFITp2 = directorydata2 + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[0]
    filenameFITn2 = directorydata2 + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[2]
    pos_FIT = np.append(
        np.genfromtxt(filenameFITp, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenameFITp2, unpack=True, usecols=[0], dtype='int') +
        100)
    neg_FIT = np.append(
        np.genfromtxt(filenameFITn, unpack=True, usecols=[0], dtype='int'),
        np.genfromtxt(filenameFITn2, unpack=True, usecols=[0], dtype='int') +
        100)

    tas_mo = [tashit, tasFIT]

    ### Composite by QBO phase
    tas_mohitpos = tas_mo[0][pos_hit, :, :, :]
    tas_moFITpos = tas_mo[1][pos_FIT, :, :, :]

    tas_mohitneg = tas_mo[0][neg_hit, :, :, :]
    tas_moFITneg = tas_mo[1][neg_FIT, :, :, :]

    ### Compute comparisons for months - select region
    if varnames == 'SLP':
        lonq = np.where((lon >= 80) & (lon <= 120))[0]
        FITpos = tas_moFITpos[:, :, :, lonq]
        FITneg = tas_moFITneg[:, :, :, lonq]
        latq = np.where((lat >= 40) & (lat <= 65))[0]
        FITpos = FITpos[:, :, latq]
        FITneg = FITneg[:, :, latq]
        lat2sq = lat2[latq, :]
        lat2s = lat2sq[:, lonq]
        FITpos = UT.calc_weightedAve(FITpos, lat2s)
        FITneg = UT.calc_weightedAve(FITneg, lat2s)

        hitpos = tas_mohitpos[:, :, :, lonq]
        hitneg = tas_mohitneg[:, :, :, lonq]
        hitpos = hitpos[:, :, latq]
        hitneg = hitneg[:, :, latq]
        hitpos = UT.calc_weightedAve(hitpos, lat2s)
        hitneg = UT.calc_weightedAve(hitneg, lat2s)
    elif varnames == 'T1000':
        lonq = np.where((lon >= 70) & (lon <= 140))[0]
        FITpos = tas_moFITpos[:, :, :, lonq]
        FITneg = tas_moFITneg[:, :, :, lonq]
        latq = np.where((lat >= 35) & (lat <= 60))[0]
        FITpos = FITpos[:, :, latq]
        FITneg = FITneg[:, :, latq]
        lat2sq = lat2[latq, :]
        lat2s = lat2sq[:, lonq]
        FITpos = UT.calc_weightedAve(FITpos, lat2s) - 273.15
        FITneg = UT.calc_weightedAve(FITneg, lat2s) - 273.15

        hitpos = tas_mohitpos[:, :, :, lonq]
        hitneg = tas_mohitneg[:, :, :, lonq]
        hitpos = hitpos[:, :, latq]
        hitneg = hitneg[:, :, latq]
        hitpos = UT.calc_weightedAve(hitpos, lat2s) - 273.15
        hitneg = UT.calc_weightedAve(hitneg, lat2s) - 273.15

    diffruns = [
        FITpos.squeeze(),
        FITneg.squeeze(),
        hitpos.squeeze(),
        hitneg.squeeze()
    ]

    return diffruns
コード例 #13
0
year2 = 2000
years = np.arange(year1, year2 + 1, 1)

### Add parameters
MASK = False
varnames = ['MHF100']
runnames = [r'HIT', r'FIT', r'FICT']
qbophase = ['pos', 'non', 'neg']
phases = ['QBO-W', 'QBO-N', 'QBO-E']
experiments = [
    r'\textbf{FIT--HIT}', r'\textbf{FIT--HIT}', r'\textbf{FIT--HIT}',
    r'\textbf{FICT--HIT}', r'\textbf{FICT--HIT}', r'\textbf{FICT--HIT}'
]

### Call functions for MHF data at 100 hPa
lat, lon, time, lev, varhit = DO.readMeanExperiAll('MHF100', 'HIT', 'profile')
lat, lon, time, lev, varfit = DO.readMeanExperiAll('MHF100', 'FIT', 'profile')
lat, lon, time, lev, varfict = DO.readMeanExperiAll('MHF100', 'FICT',
                                                    'profile')

### Create 2d array of latitude and longitude
lon2, lat2 = np.meshgrid(lon, lat)

### Read in QBO phases
filenamehitp = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
filenamehitno = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
filenamehitn = directorydata + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
filenamehitp2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[0]
filenamehitno2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[1]
filenamehitn2 = directorydata2 + 'HIT/monthly/QBO_%s_HIT.txt' % qbophase[2]
pos_hit = np.append(