def loadGPCC_TS(name=dataset_name, grid=None, varlist=None, resolution='25', varatts=None, filelist=None, folder=None, lautoregrid=None): ''' Get a properly formatted dataset with the monthly GPCC time-series. ''' if grid is None: # load from original time-series files if folder is None: folder = orig_ts_folder # prepare input if resolution not in ('05', '10', '25'): raise DatasetError, "Selected resolution '%s' is not available!"%resolution # translate varlist if varatts is None: varatts = tsvaratts.copy() if varlist is None: varlist = varatts.keys() if varlist and varatts: varlist = translateVarNames(varlist, varatts) if filelist is None: # generate default filelist filelist = [] if 'p' in varlist: filelist.append(orig_ts_file.format('precip',resolution)) if 's' in varlist: filelist.append(orig_ts_file.format('statio',resolution)) # load dataset dataset = DatasetNetCDF(name=name, folder=folder, filelist=filelist, varlist=varlist, varatts=varatts, multifile=False, ncformat='NETCDF4_CLASSIC') # replace time axis with number of month since Jan 1979 data = np.arange(0,len(dataset.time),1, dtype='int16') + (1901-1979)*12 # month since 1979 (Jan 1979 = 0) timeAxis = Axis(name='time', units='month', coord=data, atts=dict(long_name='Month since 1979-01')) dataset.replaceAxis(dataset.time, timeAxis, asNC=False, deepcopy=False) # add GDAL info dataset = addGDALtoDataset(dataset, projection=None, geotransform=None) # N.B.: projection should be auto-detected as geographic else: # load from neatly formatted and regridded time-series files if folder is None: folder = avgfolder grid, resolution = checkGridRes(grid, resolution, period=None, lclim=False) dataset = loadObservations(name=name, folder=folder, projection=None, resolution=resolution, grid=grid, period=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=lautoregrid, mode='time-series') # return formatted dataset return dataset
def loadCFSR_Shp(name=dataset_name, period=None, shape=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True, lencl=False): ''' Get the pre-processed monthly CFSR climatology averaged over regions as a DatasetNetCDF. ''' grid, resolution = checkGridRes(None, resolution) del grid # load standardized climatology dataset with -specific parameters dataset = loadObservations(name=name, folder=folder, period=period, station=None, shape=shape, lencl=lencl, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, resolution=resolution, lautoregrid=False, projection=None, mode='climatology') # return formatted dataset return dataset
def loadPGMN_TS(name=None, title=None, well=None, varlist=None, varatts=None, conservation_authority=None, folder=avgfolder, filelist=None, lload=True): ''' Get the pre-processed monthly timeseries for GRCA well heads as a DatasetNetCDF. ''' # load standardized time-series dataset with GRCA-specific parameters name = name or conservation_authority or dataset_name dataset = loadObservations(name=name, title=title, folder=folder, station=conservation_authority.lower(), period=None, grid=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=False, mode='climatology') # post-processing if well: dataset = sliceWellName(well, dataset) if lload: dataset.load() # return formatted dataset return dataset
def loadCRU_TS(name=dataset_name, grid=None, varlist=None, resolution=None, varatts=None, filelist=None, folder=None, lautoregrid=None): ''' Get a properly formatted CRU dataset with monthly mean time-series. ''' if grid is None: # load from original time-series files if folder is None: folder = orig_ts_folder # translate varlist if varatts is None: varatts = tsvaratts.copy() if varlist is None: varlist = varatts.keys() if varlist and varatts: varlist = translateVarNames(varlist, varatts) # assemble filelist if filelist is None: # generate default filelist filelist = [orig_ts_file.format(var) for var in varlist if var not in nofile] # load dataset dataset = DatasetNetCDF(name=name, folder=folder, filelist=filelist, varlist=varlist, varatts=varatts, multifile=False, ncformat='NETCDF4_CLASSIC') # replace time axis with number of month since Jan 1979 data = np.arange(0,len(dataset.time),1, dtype='int16') + (1901-1979)*12 # month since 1979 (Jan 1979 = 0) timeAxis = Axis(name='time', units='month', coord=data, atts=dict(long_name='Month since 1979-01')) dataset.replaceAxis(dataset.time, timeAxis, asNC=False, deepcopy=False) # add projection dataset = addGDALtoDataset(dataset, projection=None, geotransform=None, gridfolder=grid_folder) # N.B.: projection should be auto-detected as geographic else: # load from neatly formatted and regridded time-series files if folder is None: folder = avgfolder dataset = loadObservations(name=name, folder=folder, projection=None, resolution=None, grid=grid, period=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=lautoregrid, mode='time-series') # return formatted dataset return dataset
def loadGPCC_Stn( name=dataset_name, period=None, station=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True, ): """ Get the pre-processed monthly GPCC climatology as a DatasetNetCDF at station locations. """ grid, resolution = checkGridRes(None, resolution, period=period, lclim=True) del grid # load standardized climatology dataset with GPCC-specific parameters dataset = loadObservations( name=name, folder=folder, projection=None, period=period, station=station, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, resolution=resolution, lautoregrid=False, mode="climatology", ) # return formatted dataset return dataset
def loadNARR(name=dataset_name, period=None, grid=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True): ''' Get the pre-processed monthly NARR climatology as a DatasetNetCDF. ''' # load standardized climatology dataset with NARR-specific parameters dataset = loadObservations(name=name, folder=folder, projection=projection, resolution=resolution, period=period, grid=grid, station=None, shape=None, varlist=varlist, varatts=varatts, filelist=filelist, filepattern=avgfile, lautoregrid=lautoregrid, mode='climatology') # return formatted dataset return dataset
def loadNARR_ShpTS(name=dataset_name, shape=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True, lencl=False): ''' Get the pre-processed monthly NARR time-series averaged over regions as a DatasetNetCDF. ''' # load standardized time-series dataset with NARR-specific parameters dataset = loadObservations(name=name, folder=folder, period=None, station=None, shape=shape, lencl=lencl, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=False, projection=None, mode='time-series') # return formatted dataset return dataset
def loadPCIC_Shp(name=dataset_name, period=None, shape=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lencl=False): ''' Get the pre-processed monthly PCIC PRISM climatology averaged over regions as a DatasetNetCDF. ''' # only the climatology is available if period is not None: warn( 'Only the full climatology is currently available: setting \'period\' to None.' ) period = None # load standardized climatology dataset with PCIC-specific parameters dataset = loadObservations(name=name, folder=folder, grid=None, station=None, shape=shape, lencl=lencl, varlist=varlist, varatts=varatts, filepattern=avgfile, projection=None, filelist=filelist, lautoregrid=False, period=period, mode='climatology') # return formatted dataset return dataset
def loadCFSR_StnTS(name=dataset_name, station=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True): ''' Get the pre-processed monthly CFSR time-series at station locations as a DatasetNetCDF. ''' grid, resolution = checkGridRes(None, resolution) del grid # load standardized time-series dataset with -specific parameters dataset = loadObservations(name=name, folder=folder, period=None, station=station, shape=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, resolution=resolution, lautoregrid=False, projection=None, mode='time-series') # return formatted dataset return dataset
def loadGPCC_ShpTS(name=dataset_name, shape=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True, lencl=False): ''' Get the pre-processed monthly GPCC time-series as a DatasetNetCDF averaged over regions. ''' grid, resolution = checkGridRes(None, resolution, period=None, lclim=False) del grid # load standardized time-series dataset with GPCC-specific parameters dataset = loadObservations(name=name, folder=folder, projection=None, shape=shape, station=None, lencl=lencl, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, resolution=resolution, lautoregrid=False, mode='time-series', period=None) # return formatted dataset return dataset
def loadGPCC_Stn(name=dataset_name, period=None, station=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True): ''' Get the pre-processed monthly GPCC climatology as a DatasetNetCDF at station locations. ''' grid, resolution = checkGridRes(None, resolution, period=period, lclim=True) del grid # load standardized climatology dataset with GPCC-specific parameters dataset = loadObservations(name=name, folder=folder, projection=None, period=period, station=station, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, resolution=resolution, lautoregrid=False, mode='climatology') # return formatted dataset return dataset
def loadNARR_TS(name=dataset_name, grid=None, varlist=None, resolution=None, varatts=None, filelist=None, folder=None, lautoregrid=None): ''' Get a properly formatted NARR dataset with monthly mean time-series. ''' if grid is None: # load from original time-series files if folder is None: folder = orig_ts_folder # translate varlist if varatts is None: varatts = tsvaratts.copy() if varlist is None: varlist = tsvarlist if varlist and varatts: varlist = translateVarNames(varlist, varatts) if filelist is None: # generate default filelist filelist = [orig_ts_file.format(special[var]) if var in special else orig_ts_file.format(var) for var in varlist if var not in nofile and var in varatts] # load dataset dataset = DatasetNetCDF(name=name, folder=folder, filelist=filelist, varlist=varlist, varatts=varatts, atts=projdict, multifile=False, ncformat='NETCDF4_CLASSIC') # replace time axis with number of month since Jan 1979 data = np.arange(0,len(dataset.time),1, dtype='int16') # month since 1979 (Jan 1979 = 0) timeAxis = Axis(name='time', units='month', coord=data, atts=dict(long_name='Month since 1979-01')) dataset.replaceAxis(dataset.time, timeAxis, asNC=False, deepcopy=False) # add projection projection = getProjFromDict(projdict, name='{0:s} Coordinate System'.format(name)) dataset = addGDALtoDataset(dataset, projection=projection, geotransform=None, gridfolder=grid_folder) else: # load from neatly formatted and regridded time-series files if folder is None: folder = avgfolder dataset = loadObservations(name=name, folder=folder, projection=None, resolution=None, grid=grid, period=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=lautoregrid, mode='time-series') # return formatted dataset return dataset
def loadGPCC_ShpTS( name=dataset_name, shape=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True, lencl=False, ): """ Get the pre-processed monthly GPCC time-series as a DatasetNetCDF averaged over regions. """ grid, resolution = checkGridRes(None, resolution, period=None, lclim=False) del grid # load standardized time-series dataset with GPCC-specific parameters dataset = loadObservations( name=name, folder=folder, projection=None, shape=shape, station=None, lencl=lencl, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, resolution=resolution, lautoregrid=False, mode="time-series", period=None, ) # return formatted dataset return dataset
def loadPCIC(name=dataset_name, period=None, grid=None, resolution=None, varlist=None, varatts=None, folder=None, filelist=None, lautoregrid=True): ''' Get the pre-processed monthly PCIC PRISM climatology as a DatasetNetCDF. ''' if folder is None: folder = avgfolder # only the climatology is available if period is not None: warn( 'Only the full climatology is currently available: setting \'period\' to None.' ) period = None # load standardized climatology dataset with PRISM-specific parameters dataset = loadObservations(name=name, folder=folder, projection=None, period=period, grid=grid, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, lautoregrid=lautoregrid, mode='climatology') # # make sure all fields are masked # dataset.load() # dataset.mask(dataset.datamask, maskSelf=False) # return formatted dataset return dataset
def loadCRU_ShpTS(name=dataset_name, shape=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True, lencl=False): ''' Get the pre-processed monthly CRU time-series as a DatasetNetCDF averaged over regions. ''' dataset = loadObservations(name=name, folder=folder, period=None, station=None, shape=shape, lencl=lencl, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=False, projection=None, mode='time-series') # return formatted dataset return dataset
def loadCRU_Shp(name=dataset_name, period=None, shape=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True, lencl=False): ''' Get the pre-processed monthly CRU climatology as a DatasetNetCDF averaged over regions. ''' # load standardized climatology dataset with CRU-specific parameters dataset = loadObservations(name=name, folder=folder, period=period, station=None, shape=shape, lencl=lencl, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, lautoregrid=False, projection=None, mode='climatology') # return formatted dataset return dataset
def loadNARR_Stn(name=dataset_name, period=None, station=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True): ''' Get the pre-processed monthly NARR climatology at station locations as a DatasetNetCDF. ''' # load standardized climatology dataset with NARR-specific parameters dataset = loadObservations(name=name, folder=folder, period=period, station=station, shape=None, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, lautoregrid=False, projection=None, mode='climatology') # return formatted dataset return dataset
def loadCRU_StnTS(name=dataset_name, station=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=False): ''' Get the pre-processed monthly CRU climatology as a DatasetNetCDF. ''' # load standardized time-series dataset with CRU-specific parameters dataset = loadObservations(name=name, folder=folder, period=None, station=station, shape=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=False, projection=None, mode='time-series') # return formatted dataset return dataset
def loadCRU(name=dataset_name, period=None, grid=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True): ''' Get the pre-processed monthly CRU climatology as a DatasetNetCDF. ''' # load standardized climatology dataset with CRU-specific parameters dataset = loadObservations(name=name, folder=folder, projection=None, period=period, grid=grid, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, lautoregrid=lautoregrid, mode='climatology') # return formatted dataset return dataset
def loadGPCC_Shp(name=dataset_name, period=None, shape=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True, lencl=False): ''' Get the pre-processed monthly GPCC climatology as a DatasetNetCDF averaged over regions. ''' grid, resolution = checkGridRes(None, resolution, period=period, lclim=True); del grid # load standardized climatology dataset with GPCC-specific parameters dataset = loadObservations(name=name, folder=folder, projection=None, period=period, shape=shape, lencl=lencl, station=None, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, resolution=resolution, lautoregrid=False, mode='climatology') # return formatted dataset return dataset
def loadGPCC_StnTS(name=dataset_name, station=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True): ''' Get the pre-processed monthly GPCC time-series as a DatasetNetCDF at station locations. ''' grid, resolution = checkGridRes(None, resolution, period=None, lclim=False); del grid # load standardized time-series dataset with GPCC-specific parameters dataset = loadObservations(name=name, folder=folder, projection=None, period=None, station=station, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, resolution=resolution, lautoregrid=False, mode='time-series') # return formatted dataset return dataset
def loadCFSR_TS(name=dataset_name, grid=None, varlist=None, varatts=None, resolution='hires', filelist=None, folder=None, lautoregrid=None): ''' Get a properly formatted CFSR dataset with monthly mean time-series. ''' if grid is None: # load from original time-series files if folder is None: folder = orig_ts_folder # translate varlist if varatts is None: varatts = tsvaratts.copy() if varlist is None: if resolution == 'hires' or resolution == '03' or resolution == '031': varlist = varlist_hires elif resolution == 'lowres' or resolution == '05': varlist = varlist_lowres if varlist and varatts: varlist = translateVarNames(varlist, varatts) if filelist is None: # generate default filelist if resolution == 'hires' or resolution == '03' or resolution == '031': files = [hiresfiles[var] for var in varlist if var in hiresfiles] elif resolution == 'lowres' or resolution == '05': files = [lowresfiles[var] for var in varlist if var in lowresfiles] # load dataset dataset = DatasetNetCDF(name=name, folder=folder, filelist=files, varlist=varlist, varatts=varatts, check_override=['time'], multifile=False, ncformat='NETCDF4_CLASSIC') # load static data if filelist is None: # generate default filelist if resolution == 'hires' or resolution == '03' or resolution == '031': files = [hiresstatic[var] for var in varlist if var in hiresstatic] elif resolution == 'lowres' or resolution == '05': files = [lowresstatic[var] for var in varlist if var in lowresstatic] # load constants, if any (and with singleton time axis) if len(files) > 0: staticdata = DatasetNetCDF(name=name, folder=folder, filelist=files, varlist=varlist, varatts=varatts, axes=dict(lon=dataset.lon, lat=dataset.lat), multifile=False, check_override=['time'], ncformat='NETCDF4_CLASSIC') # N.B.: need to override the axes, so that the datasets are consistent if len(staticdata.variables) > 0: for var in staticdata.variables.values(): if not dataset.hasVariable(var.name): var.squeeze() # remove time dimension dataset.addVariable(var, copy=False) # no need to copy... but we can't write to the netcdf file! # replace time axis with number of month since Jan 1979 data = np.arange(0,len(dataset.time),1, dtype='int16') # month since 1979 (Jan 1979 = 0) timeAxis = Axis(name='time', units='month', coord=data, atts=dict(long_name='Month since 1979-01')) dataset.replaceAxis(dataset.time, timeAxis, asNC=False, deepcopy=False) # add projection dataset = addGDALtoDataset(dataset, projection=None, geotransform=None, gridfolder=grid_folder) # N.B.: projection should be auto-detected as geographic else: # load from neatly formatted and regridded time-series files if folder is None: folder = avgfolder grid, resolution = checkGridRes(grid, resolution) dataset = loadObservations(name=name, folder=folder, projection=None, resolution=resolution, grid=grid, period=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=lautoregrid, mode='time-series') # return formatted dataset return dataset
def loadPRISM_Shp(name=dataset_name, period=None, shape=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lencl=False): ''' Get the pre-processed monthly PRISM climatology averaged over regions as a DatasetNetCDF. ''' # only the climatology is available if period is not None: warn('Only the full climatology is currently available: setting \'period\' to None.') period = None # load standardized climatology dataset with PRISM-specific parameters dataset = loadObservations(name=name, folder=folder, grid=None, station=None, shape=shape, lencl=lencl, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, lautoregrid=False, period=period, mode='climatology') # return formatted dataset return dataset
def loadPRISM(name=dataset_name, period=None, grid=None, resolution=None, varlist=None, varatts=None, folder=avgfolder, filelist=None, lautoregrid=True): ''' Get the pre-processed monthly PRISM climatology as a DatasetNetCDF. ''' # only the climatology is available if period is not None: warn('Only the full climatology is currently available: setting \'period\' to None.') period = None # load standardized climatology dataset with PRISM-specific parameters dataset = loadObservations(name=name, folder=folder, period=period, grid=grid, station=None, varlist=varlist, varatts=varatts, filepattern=avgfile, filelist=filelist, lautoregrid=lautoregrid, mode='climatology') # # make sure all fields are masked # dataset.load() # dataset.mask(dataset.datamask, maskSelf=False) # return formatted dataset return dataset
def loadSpecialObs(varlist=None, **kwargs): ''' wrapper that adds some special/derived variables ''' # parse and edit varlist if varlist is None: ldryprec = True lwetprec = True lwetdays = True else: # cast/copy varlist if isinstance(varlist, basestring): varlist = [varlist] # cast as list else: varlist = list(varlist) # make copy to avoid interference # select options ldryprec = False lwetprec = False lwetdays = False if 'dryprec' in varlist: # really just an alias for precip ldryprec = True varlist.remove('dryprec') if 'precip' not in varlist: varlist.append('precip') if 'wetprec' in varlist: lwetprec = True varlist.remove('wetprec') # wet-day precip if 'precip' not in varlist: varlist.append('precip') if 'wetfrq' not in varlist: varlist.append('wetfrq') if any([var[:6] == 'wetfrq' for var in varlist]): lwetdays = True if 'wetfrq' not in varlist: varlist.append('wetfrq') # load actual data using standard call to loadObservation dataset = loadObservations(varlist=varlist, **kwargs) # add new/special variables if lwetprec and 'wetprec' not in dataset: wetprec = dataset.precip.load() / dataset.wetfrq.load() dataset += wetprec.copy(plot=variablePlotatts['wetprec'], **varatts['wetprec']) if ldryprec and 'dryprec' not in dataset: dataset += dataset.precip.copy(plot=variablePlotatts['dryprec'], **varatts['dryprec']) if lwetdays: from wrfavg.derived_variables import precip_thresholds for threshold in precip_thresholds: varname = 'wetfrq_{:03d}'.format(int(threshold * 10)) if varname not in dataset: dataset += dataset.wetfrq.copy(name=varname) # return augmented dataset return dataset
def loadSpecialObs(varlist=None, **kwargs): ''' wrapper that adds some special/derived variables ''' # parse and edit varlist if varlist is None: ldryprec = True; lwetprec = True; lwetdays = True else: # cast/copy varlist if isinstance(varlist,basestring): varlist = [varlist] # cast as list else: varlist = list(varlist) # make copy to avoid interference # select options ldryprec = False; lwetprec = False; lwetdays = False if 'dryprec' in varlist: # really just an alias for precip ldryprec = True; varlist.remove('dryprec') if 'precip' not in varlist: varlist.append('precip') if 'wetprec' in varlist: lwetprec = True; varlist.remove('wetprec') # wet-day precip if 'precip' not in varlist: varlist.append('precip') if 'wetfrq' not in varlist: varlist.append('wetfrq') if any([var[:6]=='wetfrq' for var in varlist]): lwetdays = True if 'wetfrq' not in varlist: varlist.append('wetfrq') # load actual data using standard call to loadObservation dataset = loadObservations(varlist=varlist, **kwargs) # add new/special variables if lwetprec and 'wetprec' not in dataset: wetprec = dataset.precip.load() / dataset.wetfrq.load() dataset += wetprec.copy(plot=variablePlotatts['wetprec'], **varatts['wetprec']) if ldryprec and 'dryprec' not in dataset: dataset += dataset.precip.copy(plot=variablePlotatts['dryprec'], **varatts['dryprec']) if lwetdays: for threshold in precip_thresholds: varname = 'wetfrq_{:03d}'.format(int(threshold*10)) if varname not in dataset: dataset += dataset.wetfrq.copy(name=varname) # return augmented dataset return dataset
def loadCRU_TS(name=dataset_name, grid=None, varlist=None, resolution=None, varatts=None, filelist=None, folder=None, lautoregrid=None): ''' Get a properly formatted CRU dataset with monthly mean time-series. ''' if grid is None: # load from original time-series files if folder is None: folder = orig_ts_folder # translate varlist if varatts is None: varatts = tsvaratts.copy() if varlist is None: varlist = varatts.keys() if varlist and varatts: varlist = translateVarNames(varlist, varatts) # assemble filelist if filelist is None: # generate default filelist filelist = [ orig_ts_file.format(var) for var in varlist if var not in nofile ] # load dataset dataset = DatasetNetCDF(name=name, folder=folder, filelist=filelist, varlist=varlist, varatts=varatts, multifile=False, ncformat='NETCDF4_CLASSIC') # replace time axis with number of month since Jan 1979 data = np.arange(0, len(dataset.time), 1, dtype='int16') + ( 1901 - 1979) * 12 # month since 1979 (Jan 1979 = 0) timeAxis = Axis(name='time', units='month', coord=data, atts=dict(long_name='Month since 1979-01')) dataset.replaceAxis(dataset.time, timeAxis, asNC=False, deepcopy=False) # add projection dataset = addGDALtoDataset(dataset, projection=None, geotransform=None, gridfolder=grid_folder) # N.B.: projection should be auto-detected as geographic else: # load from neatly formatted and regridded time-series files if folder is None: folder = avgfolder dataset = loadObservations(name=name, folder=folder, projection=None, resolution=None, grid=grid, period=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=lautoregrid, mode='time-series') # return formatted dataset return dataset
def loadGPCC_TS(name=dataset_name, grid=None, varlist=None, resolution='25', varatts=None, filelist=None, folder=None, lautoregrid=None): ''' Get a properly formatted dataset with the monthly GPCC time-series. ''' if grid is None: # load from original time-series files if folder is None: folder = orig_ts_folder # prepare input if resolution not in ('05', '10', '25'): raise DatasetError, "Selected resolution '%s' is not available!" % resolution # translate varlist if varatts is None: varatts = tsvaratts.copy() if varlist is None: varlist = varatts.keys() if varlist and varatts: varlist = translateVarNames(varlist, varatts) if filelist is None: # generate default filelist filelist = [] if 'p' in varlist: filelist.append(orig_ts_file.format('precip', resolution)) if 's' in varlist: filelist.append(orig_ts_file.format('statio', resolution)) # load dataset dataset = DatasetNetCDF(name=name, folder=folder, filelist=filelist, varlist=varlist, varatts=varatts, multifile=False, ncformat='NETCDF4_CLASSIC') # replace time axis with number of month since Jan 1979 data = np.arange(0, len(dataset.time), 1, dtype='int16') + ( 1901 - 1979) * 12 # month since 1979 (Jan 1979 = 0) timeAxis = Axis(name='time', units='month', coord=data, atts=dict(long_name='Month since 1979-01')) dataset.replaceAxis(dataset.time, timeAxis, asNC=False, deepcopy=False) # add GDAL info dataset = addGDALtoDataset(dataset, projection=None, geotransform=None) # N.B.: projection should be auto-detected as geographic else: # load from neatly formatted and regridded time-series files if folder is None: folder = avgfolder grid, resolution = checkGridRes(grid, resolution, period=None, lclim=False) dataset = loadObservations(name=name, folder=folder, projection=None, resolution=resolution, grid=grid, period=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=lautoregrid, mode='time-series') # return formatted dataset return dataset
def loadCFSR_TS(name=dataset_name, grid=None, varlist=None, varatts=None, resolution='hires', filelist=None, folder=None, lautoregrid=None): ''' Get a properly formatted CFSR dataset with monthly mean time-series. ''' if grid is None: # load from original time-series files if folder is None: folder = orig_ts_folder # translate varlist if varatts is None: varatts = tsvaratts.copy() if varlist is None: if resolution == 'hires' or resolution == '03' or resolution == '031': varlist = varlist_hires elif resolution == 'lowres' or resolution == '05': varlist = varlist_lowres if varlist and varatts: varlist = translateVarNames(varlist, varatts) if filelist is None: # generate default filelist if resolution == 'hires' or resolution == '03' or resolution == '031': files = [ hiresfiles[var] for var in varlist if var in hiresfiles ] elif resolution == 'lowres' or resolution == '05': files = [ lowresfiles[var] for var in varlist if var in lowresfiles ] # load dataset dataset = DatasetNetCDF(name=name, folder=folder, filelist=files, varlist=varlist, varatts=varatts, check_override=['time'], multifile=False, ncformat='NETCDF4_CLASSIC') # load static data if filelist is None: # generate default filelist if resolution == 'hires' or resolution == '03' or resolution == '031': files = [ hiresstatic[var] for var in varlist if var in hiresstatic ] elif resolution == 'lowres' or resolution == '05': files = [ lowresstatic[var] for var in varlist if var in lowresstatic ] # create singleton time axis staticdata = DatasetNetCDF(name=name, folder=folder, filelist=files, varlist=varlist, varatts=varatts, axes=dict(lon=dataset.lon, lat=dataset.lat), multifile=False, check_override=['time'], ncformat='NETCDF4_CLASSIC') # N.B.: need to override the axes, so that the datasets are consistent if len(staticdata.variables) > 0: for var in staticdata.variables.values(): if not dataset.hasVariable(var.name): var.squeeze() # remove time dimension dataset.addVariable( var, copy=False ) # no need to copy... but we can't write to the netcdf file! # replace time axis with number of month since Jan 1979 data = np.arange(0, len(dataset.time), 1, dtype='int16') # month since 1979 (Jan 1979 = 0) timeAxis = Axis(name='time', units='month', coord=data, atts=dict(long_name='Month since 1979-01')) dataset.replaceAxis(dataset.time, timeAxis, asNC=False, deepcopy=False) # add projection dataset = addGDALtoDataset(dataset, projection=None, geotransform=None, gridfolder=grid_folder) # N.B.: projection should be auto-detected as geographic else: # load from neatly formatted and regridded time-series files if folder is None: folder = avgfolder grid, resolution = checkGridRes(grid, resolution) dataset = loadObservations(name=name, folder=folder, projection=None, resolution=resolution, grid=grid, period=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=lautoregrid, mode='time-series') # return formatted dataset return dataset