else: if future: ys = '2065_2099' else: ys = moddct['yrfname'] ### Location for olr input & outputs olrfile = bkdir + dset + '/'+name+'/' + name + '.' + globv + \ '.mon.mean.' + ys + '.nc' print 'Opening ' + olrfile # Check if OLR file exists for this model if os.path.exists(olrfile): ### Open olr nc file ncout = mync.open_multi(olrfile,globv,name,\ dataset=dset,subs=sub) ndim = len(ncout) if ndim == 5: olr, time, lat, lon, dtime = ncout elif ndim == 6: olr, time, lat, lon, lev, dtime = ncout olr = np.squeeze(olr) else: print 'Check number of levels in ncfile' lat4sf = lat lon4sf = lon else: print "No OLR data found for " + name
ys = moddct['yrfname'] ### Open rain data - historical print 'Getting historical rain data' globp = 'pr' raindset = dset rainmod = name rmoddct = moddct rcal = cal rys = ys rainname = rmoddct['prname'] rainfile = botdir + raindset + "/" + rainmod + "." + globp + ".day.mean." + rys + ".nc" print 'Opening ' + rainfile rainout = mync.open_multi(rainfile, globp, rainmod, \ dataset=raindset, subs=sub) rdim = len(rainout) if rdim == 5: rain, rtime, rlat, rlon, rdtime = rainout elif rdim == 6: rain, rtime, rlat, rlon, rlev, rdtime = rainout rain = np.squeeze(rain) else: print 'Check number of levels in ncfile' rdtime[:, 3] = 0 nlat = len(rlat) nlon = len(rlon) nboxes = float(nlat * nlon) print 'Checking for duplicate timesteps' # do retain this - IPSL A LR has double tsteps
ys = '1950_2009' else: print 'variable ' + globv + ' has unclear yearname for ' + name2 else: ys = moddct['fullrun'] # Open ltmonmean file meanfile = bkdir + 'metbot_multi_dset/' + dset2 + '/' + name2 + '/' \ + name2 + '.' + globv + '.mon.mean.' + ys + '.nc' print meanfile if os.path.exists(meanfile): if levsel: ncout = mync.open_multi(meanfile, globv, name2, \ dataset=dset2, subs=sub, levsel=levc) else: ncout = mync.open_multi(meanfile, globv, name2, \ dataset=dset2, subs=sub) print '...file opened' ndim = len(ncout) if ndim == 5: meandata, time, lat, lon, dtime = ncout elif ndim == 6: meandata, time, lat, lon, lev, dtime = ncout meandata = np.squeeze(meandata) else: print 'Check number of dims in ncfile' dtime[:, 3] = 0 # Fix lat and lons if it spans 0
print 'Subsetting by latitude?' print 'Selecting CBs between ' + str(wlon) + ' and ' + str(elon) dates_ln, cXs_ln, cYs_ln, degs_ln, chs_ln, keys_ln, daynos_ln, tworecdt_ln = \ sset.sel_cen_lon(wlon, elon, dates_dd, cXs_dd, cYs_dd, degs_dd, chs_dd, \ keys_dd, daynos_dd, tworecdt_dd) # Second get info for mean rain rys_clim = rys_clims[cent] rainmeanfile = botdir + dset + '/' + name + '/' \ + name + '.' + globp + '.mon.mean.' + rys_clim + '.nc' print 'Opening ' + rainmeanfile print 'for domain ' + pr_dom rainmean = mync.open_multi(rainmeanfile, globp, name, \ dataset=dset, subs=pr_dom) rdim = len(rainmean) if rdim == 5: rain_monmn, rtime, rlat_mn, rlon, rdtime_monmn = rainmean elif rdim == 6: rain, rtime, rlat_mn, rlon, rlev, rdtime_monmn = rainmean rain_monmn = np.squeeze(rain) else: print 'Check number of levels in ncfile' rdtime_monmn[:, 3] = 0 rainmons = rdtime_monmn[:, 1] if weightlats: latr = np.deg2rad(rlat_mn) weights = np.cos(latr)
ys = '1950_2009' else: print 'variable ' + globv1 + ' has unclear yearname for ' + name2 else: ys = moddct['fullrun'] # Open ltmonmean file meanfile = bkdir + 'metbot_multi_dset/' + dset2 + '/' + name2 + '/' \ + name2 + '.' + globv1 + '.mon.mean.' + ys + '.nc' print 'Attempting to open ' + meanfile if os.path.exists(meanfile): if levsel1: ncout = mync.open_multi(meanfile, globv1, name2, \ dataset=dset2, subs=sub_x, levsel=levc) else: ncout = mync.open_multi(meanfile, globv1, name2, \ dataset=dset2, subs=sub_x) print '...file opened' ndim = len(ncout) if ndim == 5: meandata, time, lat, lon, dtime = ncout elif ndim == 6: meandata, time, lat, lon, lev, dtime = ncout meandata = np.squeeze(meandata) else: print 'Check number of dims in ncfile' dtime[:, 3] = 0 # Remove duplicate timesteps
ys = refmoddct['yrfname'] # Open ltmonmean file meanfile = botdir + refdset + '/' + refmod + '/' \ + refmod + '.' + globv + '.mon.mean.' + ys + '.nc' # Open with two different domains doms = [dom_a, dom_b] ndoms = len(doms) seas_picks = [all_ttt_seas, per_ttt_seas] reg_ref_means = np.zeros(ndoms, dtype=np.float32) for do in range(ndoms): thisdom = doms[do] ths_seas = seas_picks[do] ncout = mync.open_multi(meanfile, globv, refmod, \ dataset=refdset, subs=thisdom) ndim = len(ncout) if ndim == 5: meandata, time, lat, lon, dtime = ncout elif ndim == 6: meandata, time, lat, lon, lev, dtime = ncout meandata = np.squeeze(meandata) dtime[:, 3] = 0 nlat = len(lat) nlon = len(lon) # Remove duplicate timesteps print 'Checking for duplicate timesteps' tmp = np.ascontiguousarray(dtime).view( np.dtype((np.void, dtime.dtype.itemsize * dtime.shape[1])))
rawfile_u = bkdir + dset2 + '/' + name2 + \ '.' + globv1 + '.day.mean.' + gys + '.nc' rawfile_v = bkdir + dset2 + '/' + name2 + \ '.' + globv2 + '.day.mean.' + gys + '.nc' if variable == 'qflux': rawfile_q = bkdir + dset2 + '/' + name2 + \ '.' + globv3 + '.day.mean.' + gys + '.nc' print 'Opening ' + rawfile_u print 'and corresponding file: ' + rawfile_v if variable == 'qflux': print 'and q file:' + rawfile_q if levsel: ncout_u = mync.open_multi(rawfile_u, globv1, name2, \ dataset=dset2, subs=subvar, levsel=levc) ncout_v = mync.open_multi(rawfile_v, globv2, name2, \ dataset=dset2, subs=subvar, levsel=levc) if variable == 'qflux': ncout_q = mync.open_multi(rawfile_q, globv3, name2, \ dataset=dset2, subs=subvar, levsel=levc) else: ncout_u = mync.open_multi(rawfile_u, globv1, name2, \ dataset=dset2, subs=subvar) ncout_v = mync.open_multi(rawfile_v, globv2, name2, \ dataset=dset2, subs=subvar) if variable == 'qflux': ncout_q = mync.open_multi(rawfile_q, globv3, name2, \
### Get saddle of distribution for ref dset (specified above) moddct = dsetdict.dset_deets[refdset][refmod] vname = moddct['olrname'] if testfile: ys = moddct['testfileyr'] else: ys = moddct['yrfname'] if testyear: beginatyr = moddct['startyr'] else: beginatyr = moddct['testyr'] indir = bkdir + "/" + refdset + "/" infile = indir + refmod + ".olr.day.mean." + ys + ".nc" print infile ncout = mync.open_multi(infile, globv, refmod,\ dataset=refdset, subs=sub) ndim = len(ncout) if ndim == 5: olr, time, lat, lon, dtime = ncout elif ndim == 6: olr, time, lat, lon, lev, dtime = ncout olr = np.squeeze(olr) else: print 'Check number of levels in ncfile' ### Select data to run ### Get time information units = moddct['olrtimeunit'] cal = moddct['calendar'] ### If testfile run on all days available if testfile:
meanfile_u = botdir + dset2 + '/' + name2 + '/' \ + name2 + '.' + globv1 + '.mon.mean.' + ysclim + '.nc' meanfile_v = botdir + dset2 + '/' + name2 + '/' \ + name2 + '.' + globv2 + '.mon.mean.' + ysclim + '.nc' if var == 'qflux': meanfile_q = botdir + dset2 + '/' + name2 + '/' \ + name2 + '.' + globv3 + '.mon.mean.' + ysclim + '.nc' print 'Opening ' + meanfile_u print 'and corresponding file: ' + meanfile_v if var == 'qflux': print 'and q file:' + meanfile_q ncout_u = mync.open_multi(meanfile_u, globv1, name2, \ dataset=dset2, subs=sub, levsel=levc) ncout_v = mync.open_multi(meanfile_v, globv2, name2, \ dataset=dset2, subs=sub, levsel=levc) if var == 'qflux': ncout_q = mync.open_multi(meanfile_q, globv3, name2, \ dataset=dset2, subs=sub, levsel=levc) ndim = len(ncout_u) if ndim == 5: meandata_u, time, lat, lon, dtime = ncout_u meandata_v, time, lat, lon, dtime = ncout_v if var == 'qflux':
my.mkdir_p(outdir) # Get info moddct = dsetdict.dset_deets[dset][name] vnamedict = globv + 'name' varstr = moddct[vnamedict] ys = moddct['yrfname'] dimdict = dim_exdict.dim_deets[globv][dset] latname = dimdict[1] lonname = dimdict[2] # Open olr file olrfile=botdir+dset+'/'+name+'.'+globv+\ '.day.mean.'+ys+'.nc' print 'Opening ' + olrfile ncout = mync.open_multi(olrfile, globv, name, \ dataset=dset, subs=sub) ndim = len(ncout) if ndim == 5: olrdata, time, lat, lon, dtime = ncout elif ndim == 6: olrdata, time, lat, lon, lev, dtime = ncout olrdata = np.squeeze(olrdata) else: print 'Check number of dims in ncfile' dtime[:, 3] = 0 # print name # print lon # print lat # # Fix lat and lons if it spans 0