# check variable list for var in varlist: if not wrfout.variables.has_key(varmap.get(var, var)): print("\nWARNING: variable %s not found in source file!\n" % (var,)) del var # remove variable if not present in soruce file # copy variables to new datasets copy_vars(mean, wrfout, varlist=varlist, namemap=varmap, dimmap=dimmap, copy_data=False) copy_vars(clim, wrfout, varlist=varlist, namemap=varmap, dimmap=dimmap, copy_data=False) # length of time, x, and y dimensions nvar = len(varlist) nx = len(wrfout.dimensions[dimmap["x"]]) ny = len(wrfout.dimensions[dimmap["y"]]) nfiles = len(filelist) # number of files # close sample input file wrfout.close() ## compute monthly means and climatology # allocate arrays print("\n Computing monthly means from %s to %s (incl);" % (begindate, enddate)) print("%3i fields of shape (%i,%i):\n" % (nvar, nx, ny)) for var in varlist: print(" %s (%s)" % (var, varmap.get(var, var))) assert (ny, nx) == mean.variables[var].shape[ 1: ], "\nWARNING: variable %s does not conform to assumed shape (%i,%i)!\n" % (var, nx, ny) # monthly means meandata = dict() climdata = dict() for var in varlist:
copy_vars(clim, cesmout, varlist=statlist, namemap=varmap, dimmap=dimmap, remove_dims=['time'], copy_data=True) # check variable list for var in varlist: if not cesmout.variables.has_key(varmap.get(var,var)): print('\nWARNING: variable %s not found in source file!\n'%(var,)) del var # remove variable if not present in soruce file # copy variables to new datasets copy_vars(clim, cesmout, varlist=varlist, namemap=varmap, dimmap=dimmap, copy_data=False) # length of time, x, and y dimensions nvar = len(varlist) nlon = len(cesmout.dimensions['lon']) nlat = len(cesmout.dimensions['lat']) nfiles = len(filelist) # number of files # close sample input file cesmout.close() # monthly means climdata = dict() for var in varlist: climdata[var] = zeros((nmons,nlat,nlon)) xtime = zeros((nfiles,)) # number of month xmon = zeros((nmons,)) # counter for number of contributions # loop over input files print('\n Starting computation: %i iterations (files)\n'%nfiles) for n in xrange(nfiles): cesmout = Dataset(srcdir+filelist[n], 'r', format='NETCDF4') print(' processing file #%3i of %3i:'%(n+1,nfiles)) print(' %s\n'%filelist[n]) # compute monthly averages m = int(datergx.search(filelist[n]).group()[-2:])-1 # infer month from filename (for climatology)
copy_ncatts(outdata,indata['rain'],prefix='GPCC_') # create old lat/lon dimensions and coordinate variables copy_dims(outdata, indata['rain'], dimlist=dimlist.keys(), namemap=dimlist, copy_coords=True) # create climatology variables dims = ('time','lat','lon'); fill_value = -9999 # precipitation atts = dict(long_name='Precipitation', units='mm/day') add_var(outdata, 'rain', dims, values=climdata['rain'].filled(fill_value), atts=atts, fill_value=fill_value) # station density atts = dict(long_name='Station Density', units='#') add_var(outdata, 'stns', dims, values=climdata['stns'].filled(fill_value), atts=atts, fill_value=fill_value) # land mask atts = dict(long_name='Land Mask', units='') tmp = ma.masked_array(ma.ones((datashape[1],datashape[2])), mask=dataMask) add_var(outdata, 'landmask', ('lat','lon'), values=tmp.filled(0)) # ## dataset feedback and diagnostics # # print dataset meta data # print('\n\n') # print(outdata) # # print dimensions meta data # for dimobj in outdata.dimensions.values(): # print dimobj # # print variable meta data # for varobj in outdata.variables.values(): # print varobj ## close netcdf files for ncset in indata.itervalues(): ncset.close() # input outdata.close() # output
namemap=varmap, dimmap=dimmap, copy_data=False) copy_vars(clim, wrfout, varlist=varlist, namemap=varmap, dimmap=dimmap, copy_data=False) # length of time, x, and y dimensions nvar = len(varlist) nx = len(wrfout.dimensions[dimmap['x']]) ny = len(wrfout.dimensions[dimmap['y']]) nfiles = len(filelist) # number of files # close sample input file wrfout.close() ## compute monthly means and climatology # allocate arrays print('\n Computing monthly means from %s to %s (incl);' % (begindate, enddate)) print('%3i fields of shape (%i,%i):\n' % (nvar, nx, ny)) for var in varlist: print(' %s (%s)' % (var, varmap.get(var, var))) assert (ny,nx) == mean.variables[var].shape[1:], \ '\nWARNING: variable %s does not conform to assumed shape (%i,%i)!\n'%(var,nx,ny) # monthly means meandata = dict() climdata = dict() for var in varlist:
# print higrp # dimensions # for dimobj in outgrp.dimensions.values(): # print dimobj # for dimobj in fngrp.dimensions.values(): # print dimobj # for dimobj in higrp.dimensions.values(): # print dimobj # variables # for varobj in outgrp.variables.values(): # print varobj # for varobj in fngrp.variables.values(): # print varobj # for varobj in higrp.variables.values(): # print varobj ## close # input for ncset in fnstatset.itervalues(): ncset.close() for ncset in fndynset.itervalues(): ncset.close() for ncset in hidynset.itervalues(): ncset.close() # output # outgrp.close() fngrp.close() print(' %s' % (test + fnoutfile, )) higrp.close() print(' %s' % (test + hioutfile, ))
atts = dict(long_name='Maximum 2m Temperature', units='K') add_var(outdata, 'Tmax', dims, values=climdata['Tmax'].filled(fill_value), atts=atts, fill_value=fill_value) # 2m minimum Temperature atts = dict(long_name='Minimum 2m Temperature', units='K') add_var(outdata, 'Tmin', dims, values=climdata['Tmin'].filled(fill_value), atts=atts, fill_value=fill_value) # 2m water vapor atts = dict(long_name='Water Vapor Pressure at 2m', units='hPa') add_var(outdata, 'Q2', dims, values=climdata['Q2'].filled(fill_value), atts=atts, fill_value=fill_value) # land mask atts = dict(long_name='Land Mask', units='') tmp = ma.masked_array(ma.ones((datashape[1],datashape[2])), mask=dataMask) add_var(outdata, 'landmask', ('lat','lon'), values=tmp.filled(0)) # create climatology variables # for (key,value) in indata.iteritems(): # copy_vars(outdata, value, [key], namemap=varlist, copy_data=False, fill_value=) # , incl_=True # outdata.variables[key][:,:,:] = climdata[key] # ## dataset feedback and diagnostics # # print dataset meta data # print outdata # # print dimensions meta data # for dimobj in outdata.dimensions.values(): # print dimobj # # print variable meta data # for varobj in outdata.variables.values(): # print varobj ## close netcdf files for ncset in indata.itervalues(): ncset.close() # input outdata.close() # output print(' %s'%(test+outfile,))
(var, )) del var # remove variable if not present in soruce file # copy variables to new datasets copy_vars(clim, cesmout, varlist=varlist, namemap=varmap, dimmap=dimmap, copy_data=False) # length of time, x, and y dimensions nvar = len(varlist) nlon = len(cesmout.dimensions['lon']) nlat = len(cesmout.dimensions['lat']) nfiles = len(filelist) # number of files # close sample input file cesmout.close() # monthly means climdata = dict() for var in varlist: climdata[var] = zeros((nmons, nlat, nlon)) xtime = zeros((nfiles, )) # number of month xmon = zeros((nmons, )) # counter for number of contributions # loop over input files print('\n Starting computation: %i iterations (files)\n' % nfiles) for n in xrange(nfiles): cesmout = Dataset(srcdir + filelist[n], 'r', format='NETCDF4') print(' processing file #%3i of %3i:' % (n + 1, nfiles)) print(' %s\n' % filelist[n]) # compute monthly averages m = int(datergx.search(filelist[n]).group()
# print higrp # dimensions # for dimobj in outgrp.dimensions.values(): # print dimobj # for dimobj in fngrp.dimensions.values(): # print dimobj # for dimobj in higrp.dimensions.values(): # print dimobj # variables # for varobj in outgrp.variables.values(): # print varobj # for varobj in fngrp.variables.values(): # print varobj # for varobj in higrp.variables.values(): # print varobj ## close # input for ncset in fnstatset.itervalues(): ncset.close() for ncset in fndynset.itervalues(): ncset.close() for ncset in hidynset.itervalues(): ncset.close() # output # outgrp.close() fngrp.close() print(" %s" % (test + fnoutfile,)) higrp.close() print(" %s" % (test + hioutfile,))