Esempio n. 1
0
def loadDataset(exp, prd, dom, grd, res, filetypes=None, varlist=None, lbackground=True, lWRFnative=True, 
                lautoregrid=False, WRF_exps=None, CESM_exps=None):
  ''' A function that loads a dataset, based on specified parameters '''
  if not isinstance(exp,basestring): raise TypeError
  if exp[0].isupper():
    if exp == 'Unity': 
      from datasets.Unity import loadUnity
      ext = loadUnity(resolution=res, period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'Merged Observations'        
    elif exp == 'GPCC': 
      from datasets.GPCC import loadGPCC
      ext = loadGPCC(resolution=res, period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'GPCC Observations'
    elif exp == 'CRU': 
      from datasets.CRU import loadCRU
      ext = loadCRU(period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'CRU Observations' 
    elif exp == 'PCIC': # PCIC with some background field
      from datasets.PCIC import loadPCIC
      if lbackground:
        if all(var in ('precip','stations','lon2D','lat2D','landmask','landfrac') for var in varlist): 
          from datasets.GPCC import loadGPCC
          from datasets.PRISM import loadPRISM
          ext = (loadGPCC(grid=grd, varlist=varlist, lautoregrid=lautoregrid), 
                 loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid),
                 loadPCIC(grid=grd, varlist=varlist, lautoregrid=lautoregrid),)
          axt = 'PCIC PRISM (and GPCC)'
        else:
          from datasets.PRISM import loadPRISM 
          from datasets.CRU import loadCRU
          ext = (loadCRU(period='1971-2001', grid=grd, varlist=varlist, lautoregrid=lautoregrid),
                 loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid), 
                 loadPCIC(grid=grd, varlist=varlist, lautoregrid=lautoregrid)) 
          axt = 'PCIC PRISM (and CRU)'
      else:
        ext = loadPCIC(grid=grd, varlist=varlist, lautoregrid=lautoregrid); axt = 'PCIC PRISM'
    elif exp == 'PRISM': # PRISM with some background field
      from datasets.PRISM import loadPRISM
      if lbackground:
        if all(var in ('precip','stations','lon2D','lat2D','landmask','landfrac') for var in varlist): 
          from datasets.GPCC import loadGPCC
          ext = (loadGPCC(grid=grd, varlist=varlist, lautoregrid=lautoregrid), 
                 loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid),)
          axt = 'PRISM (and GPCC)'
        else: 
          from datasets.CRU import loadCRU
          ext = (loadCRU(period='1979-2009', grid=grd, varlist=varlist, lautoregrid=lautoregrid), 
                 loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid)) 
          axt = 'PRISM (and CRU)'
      else:
        ext = loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid); axt = 'PRISM'
    elif exp == 'CFSR': 
      from datasets.CFSR import loadCFSR
      ext = loadCFSR(period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'CFSR Reanalysis' 
    elif exp == 'NARR': 
      from datasets.NARR import loadNARR
      ext = loadNARR(period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'NARR Reanalysis'
    elif exp[-5:] == '_CVDP':
      from datasets.CESM import loadCVDP, loadCVDP_Obs
      # load data generated by CVDP
      exp = exp[:-5]
      if exp in CESM_exps: # CESM experiments/ensembles
        exp = CESM_exps[exp]
        ext = loadCVDP(experiment=exp, period=prd, grid=grd, varlist=varlist, 
                       lautoregrid=lautoregrid, exps=CESM_exps)        
      else: # try observations
        ext = loadCVDP_Obs(name=exp, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = ext.title
    else: # all other uppercase names are CESM runs
      from datasets.CESM import loadCESM
      exp = CESM_exps[exp]
      #print exp.name, exp.title
      ext = loadCESM(experiment=exp, period=prd, grid=grd, varlist=varlist, filetypes=filetypes, 
                     lautoregrid=lautoregrid, exps=CESM_exps)
      axt = exp.title
  else: 
    # WRF runs are all in lower case
    from datasets.WRF import loadWRF
    exp = WRF_exps[exp]      
    parent = None
    if isinstance(dom,(list,tuple)):
      if 0 == dom[0]:
        dom = dom[1:]
        parent, tmp = loadDataset(exp.parent, prd, dom, grd, res, varlist=varlist, lbackground=False, 
                                  lautoregrid=lautoregrid, WRF_exps=WRF_exps, CESM_exps=CESM_exps); del tmp    
    if lWRFnative: grd = None
    ext = loadWRF(experiment=exp, period=prd, grid=grd, domains=dom, filetypes=filetypes, 
                  varlist=varlist, varatts=None, lautoregrid=lautoregrid, exps=WRF_exps)
    if parent is not None: ext = (parent,) + tuple(ext)
    axt = exp.title # defaults to name...
  # return values
  return ext, axt    
Esempio n. 2
0
                 grid=grid,
                 varlist=[
                     'T2', 'Tmin', 'Tmax', 'precip',
                     'datamask', 'lon2D', 'lat2D'
                 ],
                 lautoregrid=True)
 prism = loadPRISM(period=None,
                   grid=grid,
                   varlist=[
                       'T2', 'Tmin', 'Tmax', 'precip',
                       'datamask', 'lon2D', 'lat2D'
                   ],
                   lautoregrid=True)
 gpccprd = loadGPCC(period=period,
                    resolution='05',
                    grid=grid,
                    varlist=['precip'],
                    lautoregrid=True)
 gpccclim = loadGPCC(period=None,
                     resolution='05',
                     grid=grid,
                     varlist=['precip'],
                     lautoregrid=True)
 gpcc025 = loadGPCC(period=None,
                    resolution='025',
                    grid=grid,
                    varlist=['precip', 'landmask'],
                    lautoregrid=True)
 cruprd = loadCRU(period=period,
                  grid=grid,
                  varlist=[
Esempio n. 3
0
def loadDataset(exp, prd, dom, grd, res, filetypes=None, varlist=None, lbackground=True, lWRFnative=True, 
                lautoregrid=False, WRF_exps=None, CESM_exps=None):
  ''' A function that loads a dataset, based on specified parameters '''
  if not isinstance(exp,basestring): raise TypeError
  if exp[0].isupper():
    if exp == 'Unity': 
      from datasets.Unity import loadUnity
      ext = loadUnity(resolution=res, period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'Merged Observations'        
    elif exp == 'GPCC': 
      from datasets.GPCC import loadGPCC
      ext = loadGPCC(resolution=res, period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'GPCC Observations'
    elif exp == 'CRU': 
      from datasets.CRU import loadCRU
      ext = loadCRU(period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'CRU Observations' 
    elif exp == 'PCIC': # PCIC with some background field
      from datasets.PCIC import loadPCIC
      if lbackground:
        if all(var in ('precip','stations','lon2D','lat2D','landmask','landfrac') for var in varlist): 
          from datasets.GPCC import loadGPCC
          from datasets.PRISM import loadPRISM
          ext = (loadGPCC(grid=grd, varlist=varlist, lautoregrid=lautoregrid), 
                 loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid),
                 loadPCIC(grid=grd, varlist=varlist, lautoregrid=lautoregrid),)
          axt = 'PCIC PRISM (and GPCC)'
        else:
          from datasets.PRISM import loadPRISM 
          from datasets.CRU import loadCRU
          ext = (loadCRU(period='1971-2001', grid=grd, varlist=varlist, lautoregrid=lautoregrid),
                 loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid), 
                 loadPCIC(grid=grd, varlist=varlist, lautoregrid=lautoregrid)) 
          axt = 'PCIC PRISM (and CRU)'
      else:
        ext = loadPCIC(grid=grd, varlist=varlist, lautoregrid=lautoregrid); axt = 'PCIC PRISM'
    elif exp == 'PRISM': # PRISM with some background field
      from datasets.PRISM import loadPRISM
      if lbackground:
        if all(var in ('precip','stations','lon2D','lat2D','landmask','landfrac') for var in varlist): 
          from datasets.GPCC import loadGPCC
          ext = (loadGPCC(grid=grd, varlist=varlist, lautoregrid=lautoregrid), 
                 loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid),)
          axt = 'PRISM (and GPCC)'
        else: 
          from datasets.CRU import loadCRU
          ext = (loadCRU(period='1979-2009', grid=grd, varlist=varlist, lautoregrid=lautoregrid), 
                 loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid)) 
          axt = 'PRISM (and CRU)'
      else:
        ext = loadPRISM(grid=grd, varlist=varlist, lautoregrid=lautoregrid); axt = 'PRISM'
    elif exp == 'CFSR': 
      from datasets.CFSR import loadCFSR
      ext = loadCFSR(period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'CFSR Reanalysis' 
    elif exp == 'NARR': 
      from datasets.NARR import loadNARR
      ext = loadNARR(period=prd, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = 'NARR Reanalysis'
    elif exp[-5:] == '_CVDP':
      from datasets.CESM import loadCVDP, loadCVDP_Obs
      # load data generated by CVDP
      exp = exp[:-5]
      if exp in CESM_exps: # CESM experiments/ensembles
        exp = CESM_exps[exp]
        ext = loadCVDP(experiment=exp, period=prd, grid=grd, varlist=varlist, 
                       lautoregrid=lautoregrid, exps=CESM_exps)        
      else: # try observations
        ext = loadCVDP_Obs(name=exp, grid=grd, varlist=varlist, lautoregrid=lautoregrid)
      axt = ext.title
    else: # all other uppercase names are CESM runs
      from datasets.CESM import CESM_exps, loadCESM
      exp = CESM_exps[exp]
      #print exp.name, exp.title
      ext = loadCESM(experiment=exp, period=prd, grid=grd, varlist=varlist, filetypes=filetypes, 
                     lautoregrid=lautoregrid, exps=CESM_exps)
      axt = exp.title
  else: 
    # WRF runs are all in lower case
    from datasets.WRF import loadWRF
    exp = WRF_exps[exp]      
    parent = None
    if isinstance(dom,(list,tuple)):
      if 0 == dom[0]:
        dom = dom[1:]
        parent, tmp = loadDataset(exp.parent, prd, dom, grd, res, varlist=varlist, lbackground=False, lautoregrid=lautoregrid); del tmp    
    if lWRFnative: grd = None
    ext = loadWRF(experiment=exp, period=prd, grid=grd, domains=dom, filetypes=filetypes, 
                  varlist=varlist, varatts=None, lautoregrid=lautoregrid, exps=WRF_exps)
    if parent is not None: ext = (parent,) + tuple(ext)
    axt = exp.title # defaults to name...
  # return values
  return ext, axt    
Esempio n. 4
0
   gpccprd = loadGPCC_Shp(period=period, resolution='05', shape=grid, lencl=True, 
                          varlist=['precip']+shp_params)
   gpccclim = loadGPCC_Shp(period=None, resolution='05', shape=grid, lencl=True, 
                           varlist=['precip']+shp_params)
   gpcc025 = loadGPCC_Shp(period=None, resolution='025', shape=grid, lencl=True, 
                          varlist=['precip','landmask']+shp_params)
   cruprd = loadCRU_Shp(period=period, shape=grid, lencl=True, 
                         varlist=['T2','Tmin','Tmax','Q2','pet','cldfrc','wetfrq','frzfrq']+shp_params)
   cruclim = loadCRU_Shp(period=(1979,2009), shape=grid, lencl=True, 
                         varlist=['T2','Tmin','Tmax','Q2','pet','cldfrc','wetfrq','frzfrq']+shp_params)          
 else:
   lshp = False
   # some regular map-type grid 
   pcic  = loadPCIC(period=None, grid=grid, varlist=['T2','Tmin','Tmax','precip','datamask','lon2D','lat2D'], lautoregrid=True)
   prism = loadPRISM(period=None, grid=grid, varlist=['T2','Tmin','Tmax','precip','datamask','lon2D','lat2D'], lautoregrid=True)
   gpccprd = loadGPCC(period=period, resolution='05', grid=grid, varlist=['precip'], lautoregrid=True)
   gpccclim = loadGPCC(period=None, resolution='05', grid=grid, varlist=['precip'], lautoregrid=True)
   gpcc025 = loadGPCC(period=None, resolution='025', grid=grid, varlist=['precip','landmask'], lautoregrid=True)
   cruprd = loadCRU(period=period, grid=grid, varlist=['T2','Tmin','Tmax','Q2','pet','cldfrc','wetfrq','frzfrq'], lautoregrid=True)
   cruclim = loadCRU(period=(1979,2009), grid=grid, varlist=['T2','Tmin','Tmax','Q2','pet','cldfrc','wetfrq','frzfrq'], lautoregrid=True)
   
 # grid definition
 try:
   griddef = loadPickledGridDef(grid=grid, res=None, folder=grid_folder)
   grid_name = griddef.name
 except IOError:
   griddef = None
   grid_name = grid
 periodstr = '{0:4d}-{1:4d}'.format(*period)
 
 print('\n   ***   Merging Climatology from {0:s} on {1:s} Grid  ***   \n'.format(periodstr,grid,))
Esempio n. 5
0
        lCFSR = lCFSR or lcfsr; lNARR = lNARR or lnarr
      
      ## load data  
      explist, titles, linestyles = getDatasets(expset, titles=titles)
      exps, titles, nlist = loadDatasets(explist, n=None, varlist=loadlist,
					                               titles=titles, periods=period, 
                                         domains=domains, grids=grid,
                                         resolutions='025', filetypes=allfiletypes,                                          
                                         lWRFnative=False, ltuple=True,
                                         lbackground=False,lautoregrid=True,
                                         WRF_exps=WRF_exps, CESM_exps=CESM_exps)
      ref = exps[0][0]; nlen = len(exps)
      # observations  
      if period == 9: period = 10 # nine is only because some experiments don't have 10 yet...
      if lCRU: cru = loadCRU(period=obsprd, grid=grid, varlist=loadlist, varatts=varatts)
      if lGPCC: gpcc = loadGPCC(period=None, grid=grid, varlist=loadlist, varatts=varatts)
      if lPRISM: prism = loadPRISM(period=None, grid=grid, varlist=loadlist, varatts=varatts)
      if lPCIC: pcic = loadPCIC(period=None, grid=grid, varlist=loadlist, varatts=varatts)
      if lUnity: unity = loadUnity(period=obsprd, grid=grid, varlist=loadlist, varatts=varatts)
      if lCFSR: cfsr = loadCFSR(period=period, grid=grid, varlist=loadlist, varatts=varatts)
      if lNARR: narr = loadNARR(period=period, grid=grid, varlist=loadlist, varatts=varatts)  
      print ref
      print ref.name
      
      ## create averaging mask
      if area == 'athabasca': 
        areaname = 'ARB'; subarea = 'WholeARB'; areatitle = 'ARB'
      elif area == 'fraser': 
        areaname = 'FRB'; subarea = 'WholeFRB'; areatitle = 'FRB'
      elif area == 'northcoast': 
        areaname = 'PSB'; subarea = 'NorthernPSB'; areatitle = 'Northern PSB'
Esempio n. 6
0
                                    lautoregrid=True,
                                    WRF_exps=WRF_exps,
                                    CESM_exps=CESM_exps)
 ref = exps[0][0]
 nlen = len(exps)
 # observations
 if period == 9:
     period = 10  # nine is only because some experiments don't have 10 yet...
 if lCRU:
     cru = loadCRU(period=obsprd,
                   grid=grid,
                   varlist=loadlist,
                   varatts=varatts)
 if lGPCC:
     gpcc = loadGPCC(period=None,
                     grid=grid,
                     varlist=loadlist,
                     varatts=varatts)
 if lPRISM:
     prism = loadPRISM(period=None,
                       grid=grid,
                       varlist=loadlist,
                       varatts=varatts)
 if lPCIC:
     pcic = loadPCIC(period=None,
                     grid=grid,
                     varlist=loadlist,
                     varatts=varatts)
 if lUnity:
     unity = loadUnity(period=obsprd,
                       grid=grid,
                       varlist=loadlist,