示例#1
0
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)