Example #1
0
def build_climate_cube(
    tlim=(1970, 2099), variables=['tmean'], downscaling_method='quantile-mapping-v3'
):
    """"""
    gcms = [
        ('CanESM5-CanOE', 'r3i1p2f1'),
        ('MIROC-ES2L', 'r1i1p1f2'),
        ('ACCESS-CM2', 'r1i1p1f1'),
        ('ACCESS-ESM1-5', 'r10i1p1f1'),
        ('MRI-ESM2-0', 'r1i1p1f1'),
        ('MPI-ESM1-2-LR', 'r10i1p1f1'),
    ]
    scenarios = ['ssp245', 'ssp370', 'ssp585']
    all_scenarios = []
    for scenario in scenarios:
        all_gcms = []
        for (gcm, ensemble_member) in gcms:
            cmip = load.cmip(
                store='az',
                model=gcm,
                tlim=tlim,
                scenario=scenario,
                historical=True,
                member=ensemble_member,
                method=downscaling_method,
                sampling='annual',
                variables=variables,
            )
            all_gcms.append(cmip)
        concatted = xr.concat(all_gcms, dim='gcm')
        concatted = concatted.assign_coords({'gcm': [gcm[0] for gcm in gcms]})
        all_scenarios.append(concatted)
    ds = xr.concat(all_scenarios, dim='scenario')
    ds = ds.assign_coords({'scenario': scenarios})
    return ds
Example #2
0
def cmip_fia_long(cmip_table, method):
    # generate long data w/ cmip

    df_fia = load.fia(store='az', states=states, clean=False)
    keep_vars = (['lat', 'lon', 'plot_cn'] +
                 [var + '_min' for var in variables] +
                 [var + '_mean'
                  for var in variables] + [var + '_max' for var in variables])

    for i, row in cmip_table.iterrows():
        if 'hist' in row.scenario:
            targets = targets_historical
        else:
            targets = targets_future

        for target in targets:
            historical = target == '2015'
            tlim = (str(int(target) - 5), str(int(target) + 4))

            print(tlim, row)
            df = load.cmip(
                store='az',
                tlim=(int(tlim[0]), int(tlim[1])),
                variables=variables,
                df=df_fia,
                model=row.model,
                scenario=row.scenario,
                member=row.member,
                historical=historical,
                method=method,
                sampling='annual',
            )
            df = df[keep_vars]
            write_df(
                df,
                f'{method}/FIA-CMIP6-Long-{row.model}.{row.scenario}.{row.member}-{tlim[0]}.{tlim[1]}',
            )
Example #3
0
targets = list(map(lambda x: str(x), np.arange(2020, 2120, 20)))
cmip_models = [
    'BCC-CSM2-MR', 'ACCESS-ESM1-5', 'CanESM5', 'MIROC6', 'MPI-ESM1-2-LR'
]
scenarios = ['ssp245', 'ssp370', 'ssp585']
for it in tqdm(range(len(targets))):
    target = targets[it]
    tlim = (str(int(target) - 5), str(int(target) + 4))
    for cmip_model in cmip_models:
        for scenario in scenarios:
            key = cmip_model + '_' + scenario + '_' + target
            df = load.cmip(
                store=store,
                tlim=(int(tlim[0]), int(tlim[1])),
                data_vars=data_vars,
                data_aggs=data_aggs,
                model=cmip_model,
                scenario=scenario,
                annual=True,
                df=df,
            )
            pf[key] = np.NaN
            x, meta = prepare.insects(df, eval_only=True, duration=10)
            x_z = utils.zscore_2d(x, x_mean, x_std)
            for code in codes:
                if code in models.keys():
                    model = models[code]
                    inds = df['type_code'] == code
                    pf.loc[inds, key] = model.predict(x=x_z[inds])

pf['r2'] = pf['type_code'].map(lambda k: models[k].train_r2
                               if k in models.keys() else np.NaN)
Example #4
0
    ('ACCESS-CM2', 'r1i1p1f1'),
    ('ACCESS-ESM1-5', 'r10i1p1f1'),
    ('MRI-ESM2-0', 'r1i1p1f1'),
    ('MPI-ESM1-2-LR', 'r10i1p1f1'),
]
scenarios = ['ssp245', 'ssp370', 'ssp585']
for (cmip_model, member) in cmip_models:
    for scenario in tqdm(scenarios):
        results = []
        climate = load.cmip(
            store=store,
            model=cmip_model,
            coarsen=coarsen_predict,
            method='quantile-mapping-v3',
            scenario=scenario,
            tlim=('1969', '2099'),
            variables=data_vars,
            sampling='monthly',
            member=member,
            historical=True,
            mask=mask,
        )
        try:
            for year in np.arange(1970, 2100, 10):
                ds_future = xr.Dataset()

                print('[fire] conducting prediction for {} {} {}'.format(
                    cmip_model, scenario, year))
                prepend_time_slice = slice(str(year - 1), str(year - 1))
                analysis_time_slice = slice(str(year), str(year + 9))
Example #5
0
    'ACCESS-ESM1-5',
    'MRI-ESM2-0',
    'MPI-ESM1-2-LR',
]
scenarios = ['ssp245', 'ssp370', 'ssp585']
for it in tqdm(range(len(targets))):
    target = targets[it]
    tlim = (str(int(target) - 10), str(int(target) + 9))
    for cmip_model in cmip_models:
        for scenario in scenarios:
            key = cmip_model + '_' + scenario + '_' + target
            df = load.cmip(
                store=store,
                tlim=(int(tlim[0]), int(tlim[1])),
                variables=variables,
                historical=True if int(tlim[0]) < 2015 else False,
                model=cmip_model,
                scenario=scenario,
                sampling='annual',
                df=df,
            )
            pf[key] = np.NaN
            for code in type_codes:
                if code in models.keys():
                    model = models[code]
                    inds = df['type_code'] == code
                    x = df[inds]['age']
                    year = df[inds]['year']
                    f = [df[inds]['tmean_mean'], df[inds]['ppt_mean']]
                    if it == 0:
                        pf.loc[inds, key] = model.predict(
                            np.maximum(x + (float(target) - year), 0), f