def test_HindcastEnsemble_as_PerfectModelEnsemble(hindcast_recon_1d_mm): """Test that initialized dataset for HindcastEnsemble can also be used for PerfectModelEnsemble.""" v = "SST" alignment = "maximize" hindcast = hindcast_recon_1d_mm assert (not hindcast.verify( metric="acc", comparison="e2o", dim="init", alignment=alignment)[v].isnull().any()) # try PerfectModelEnsemble predictability init = hindcast.get_initialized() pm = PerfectModelEnsemble(init) assert (not pm.verify(metric="acc", comparison="m2e", dim=["member", "init"])[v].isnull().any()) pm = pm.add_control( init.isel(member=0, lead=0, drop=True).rename({ "init": "time" }).resample(time="1MS").interpolate("linear")) pm = pm.generate_uninitialized() assert (not pm.verify( metric="acc", comparison="m2e", dim=["member", "init"], reference=["uninitialized"], )[v].isnull().any()) pm.bootstrap(iterations=2, metric="acc", comparison="m2e", dim=["member", "init"])
def test_bootstrap(pm_ds_ds1d, pm_ds_control1d): """Test that perfect model ensemble object can be bootstrapped""" pm = PerfectModelEnsemble(pm_ds_ds1d) pm.add_control(pm_ds_control1d) pm.bootstrap(bootstrap=2)