Example #1
0
def loadEnsembleFit(lfit=True, dist=None, dist_args=None, reference=None, target=None,
                    lglobalScale=False, lrescale=False, lflatten=True, sample_axis=None, 
                    lcrossval=False, ncv=0.2, lbootstrap=False, nbs=100,
                    WRF_exps=None, CESM_exps=None, WRF_ens=None, CESM_ens=None, variable_list=None, 
                    load_list=None, lproduct='outer', lshort=True, datatype=None, **kwargs):
  ''' convenience function to load ensemble time-series data and compute associated distribution ensembles '''
  if lrescale and not lfit: raise ArgumentError
  load_list = [] if load_list is None else load_list[:] # use a copy, since the list may be modified

  # load shape ensemble
  if datatype.lower() == 'shape':
    ensemble = loadShapeEnsemble(variable_list=variable_list, WRF_exps=WRF_exps, CESM_exps=CESM_exps, 
                                 WRF_ens=WRF_ens, CESM_ens=CESM_ens, load_list=load_list, lproduct=lproduct, **kwargs)
  if datatype.lower() == 'station':
    ensemble = loadStationEnsemble(variable_list=variable_list, WRF_exps=WRF_exps, CESM_exps=CESM_exps, 
                                   WRF_ens=WRF_ens, CESM_ens=CESM_ens, load_list=load_list, lproduct=lproduct, **kwargs)
  # N.B.: kwargs are first passed on to loadShapeEnsemble/loadStationEnsemble and then to loadEnsembleTS

  # generate matching datasets with fitted distributions
  fitens, sclens = addDistFit(ensemble=ensemble, lfit=lfit, dist=dist, dist_args=dist_args, lflatten=lflatten, 
                              lrescale=lrescale, reference=reference, target=target, lglobalScale=lglobalScale,   
                              lbootstrap=lbootstrap, nbs=nbs, lcrossval=lcrossval, ncv=ncv,
                              sample_axis=sample_axis, load_list=load_list, lproduct=lproduct, **kwargs)
  # N.B.: kwargs are mainly needed to infer the expanded shape of the ensemble list
  
  # return ensembles (will be wrapped in a list, if BatchLoad is used)
  if lshort:
    if lfit and lrescale: return ensemble, fitens, sclens
    elif lfit: return ensemble, fitens
    else: return ensemble
  else:
    return ensemble, fitens, sclens
def loadStationEnsemble(variable_list=None, **kwargs):
    ''' wrapper for clim.load.loadStationEnsemble that sets experiment and variable lists '''
    if variable_list is None: variable_list = variables_rc
    return clim_load.loadStationEnsemble(variable_list=variable_list,
                                         WRF_exps=WRF_exps,
                                         CESM_exps=CESM_exps,
                                         WRF_ens=WRF_ens,
                                         CESM_ens=CESM_ens,
                                         **kwargs)
def loadStationEnsemble(variable_list=None, **kwargs):
    """ wrapper for clim.load.loadStationEnsemble that sets experiment and variable lists """
    if variable_list is None:
        variable_list = variables_rc
    return clim_load.loadStationEnsemble(
        variable_list=variable_list,
        WRF_exps=WRF_exps,
        CESM_exps=CESM_exps,
        WRF_ens=WRF_ens,
        CESM_ens=CESM_ens,
        **kwargs
    )
Example #4
0
    print fitens[0][0].MaxPrecip_1d.atts.sample_axis; print ''
    print fitens[0][1] if fitens is not None else fitens ; print ''
    print sclens[0] if sclens is not None else sclens ; print ''
    assert len(stnens) == len(seasons)
    print stnens[0][0]
    print stnens[0][1].MaxPrecip_1d.mean()
  
  elif test == 'rescaling':
    
    # some settings for tests
    exps = ['max-val','max-all']; exps = [exps_rc[exp].exps for exp in exps]
    provs = ('BC',); seasons = 'summer'
    lflatten = True; lfit = True

    # rescale    
    stnens,fitens,scalens = loadStationEnsemble(names=exps, provs=provs, seasons=seasons, varlist='precip', 
                                                lrescale=True, reference='Observations', target='max-ens',
                                                filetypes='hydro', domain=None, lfit=lfit, lflatten=lflatten,
                                                lbootstrap=False, nbs=10,  
                                                variable_list=variables_rc, default_constraints=constraints_rc,
                                                WRF_exps=WRF_exps, CESM_exps=None, WRF_ens=ensembles, CESM_ens=None,
                                                load_list=['names'], lproduct='outer')
    
    # special rescaling for projection plots
    scalens = [rescaleDistributions(ens, reference=fitens[0]['Observations'], target='max-ens') for ens in fitens]

    # print diagnostics
    print fitens[0]; print ''
    print scalens[0]; print ''
    print scalens[1][1]
Example #5
0
def loadStationEnsemble(variable_list=variables_rc, stationtype=default_stationtype, **kwargs):
  ''' wrapper for clim.load.loadStationEnsemble that sets experiment and variable lists '''
  return clim_load.loadStationEnsemble(variable_list=variable_list, stationtype=stationtype, WRF_exps=WRF_exps, 
                                       CESM_exps=CESM_exps, WRF_ens=WRF_ens, CESM_ens=CESM_ens, obs_ts='EC', **kwargs)
Example #6
0
def loadEnsembleFit(lfit=True,
                    dist=None,
                    dist_args=None,
                    reference=None,
                    target=None,
                    lglobalScale=False,
                    lrescale=False,
                    lflatten=True,
                    sample_axis=None,
                    lcrossval=False,
                    ncv=0.2,
                    lbootstrap=False,
                    nbs=100,
                    WRF_exps=None,
                    CESM_exps=None,
                    WRF_ens=None,
                    CESM_ens=None,
                    variable_list=None,
                    load_list=None,
                    lproduct='outer',
                    lshort=True,
                    datatype=None,
                    **kwargs):
    ''' convenience function to load ensemble time-series data and compute associated distribution ensembles '''
    if lrescale and not lfit: raise ArgumentError
    load_list = [] if load_list is None else load_list[:]  # use a copy, since the list may be modified

    # load shape ensemble
    if datatype.lower() == 'shape':
        ensemble = loadShapeEnsemble(variable_list=variable_list,
                                     WRF_exps=WRF_exps,
                                     CESM_exps=CESM_exps,
                                     WRF_ens=WRF_ens,
                                     CESM_ens=CESM_ens,
                                     load_list=load_list,
                                     lproduct=lproduct,
                                     **kwargs)
    if datatype.lower() == 'station':
        ensemble = loadStationEnsemble(variable_list=variable_list,
                                       WRF_exps=WRF_exps,
                                       CESM_exps=CESM_exps,
                                       WRF_ens=WRF_ens,
                                       CESM_ens=CESM_ens,
                                       load_list=load_list,
                                       lproduct=lproduct,
                                       **kwargs)
    # N.B.: kwargs are first passed on to loadShapeEnsemble/loadStationEnsemble and then to loadEnsembleTS

    # generate matching datasets with fitted distributions
    fitens, sclens = addDistFit(ensemble=ensemble,
                                lfit=lfit,
                                dist=dist,
                                dist_args=dist_args,
                                lflatten=lflatten,
                                lrescale=lrescale,
                                reference=reference,
                                target=target,
                                lglobalScale=lglobalScale,
                                lbootstrap=lbootstrap,
                                nbs=nbs,
                                lcrossval=lcrossval,
                                ncv=ncv,
                                sample_axis=sample_axis,
                                load_list=load_list,
                                lproduct=lproduct,
                                **kwargs)
    # N.B.: kwargs are mainly needed to infer the expanded shape of the ensemble list

    # return ensembles (will be wrapped in a list, if BatchLoad is used)
    if lshort:
        if lfit and lrescale: return ensemble, fitens, sclens
        elif lfit: return ensemble, fitens
        else: return ensemble
    else:
        return ensemble, fitens, sclens
Example #7
0
        seasons = 'summer'
        lflatten = True
        lfit = True

        # rescale
        stnens, fitens, scalens = loadStationEnsemble(
            names=exps,
            provs=provs,
            seasons=seasons,
            varlist='precip',
            lrescale=True,
            reference='Observations',
            target='max-ens',
            filetypes='hydro',
            domain=None,
            lfit=lfit,
            lflatten=lflatten,
            lbootstrap=False,
            nbs=10,
            variable_list=variables_rc,
            default_constraints=constraints_rc,
            WRF_exps=WRF_exps,
            CESM_exps=None,
            WRF_ens=ensembles,
            CESM_ens=None,
            load_list=['names'],
            lproduct='outer')

        # special rescaling for projection plots
        scalens = [
            rescaleDistributions(ens,
                                 reference=fitens[0]['Observations'],