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
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
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]
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
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
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
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]
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
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
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
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]
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
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(