Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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
Beispiel #13
0
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
Beispiel #14
0
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
Beispiel #15
0
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
Beispiel #16
0
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
Beispiel #17
0
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
Beispiel #18
0
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
Beispiel #19
0
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
Beispiel #20
0
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
Beispiel #21
0
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
Beispiel #22
0
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
Beispiel #23
0
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
Beispiel #24
0
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
Beispiel #25
0
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
Beispiel #26
0
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
Beispiel #27
0
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
Beispiel #28
0
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
Beispiel #29
0
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
Beispiel #30
0
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
Beispiel #31
0
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
Beispiel #32
0
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
Beispiel #33
0
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