Пример #1
0
def test_inplace(PM_ds_initialized_1d, PM_ds_control_1d):
    """Tests that inplace operations do not work."""
    pm = PerfectModelEnsemble(PM_ds_initialized_1d)
    # Adding a control.
    pm.add_control(PM_ds_control_1d)
    with_ctrl = pm.add_control(PM_ds_control_1d)
    assert pm != with_ctrl
    # Adding an uninitialized ensemble.
    pm = pm.add_control(PM_ds_control_1d)
    pm.generate_uninitialized()
    with_uninit = pm.generate_uninitialized()
    assert pm != with_uninit
    # Applying arbitrary func.
    pm.sum("init")
    summed = pm.sum("init")
    assert pm != summed
Пример #2
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"])
Пример #3
0
def test_PerfectModelEnsemble_plot(PM_ds_initialized_1d, PM_ds_control_1d,
                                   variable, show_members, cmap):
    """Test PredictionEnsemble.plot()."""
    pm = PerfectModelEnsemble(PM_ds_initialized_1d)
    kws = {"cmap": cmap, "show_members": show_members, "variable": variable}
    pm.plot(**kws)
    pm = pm.add_control(PM_ds_control_1d)
    pm.plot(**kws)
    pm = pm.generate_uninitialized()
    pm.plot(**kws)
Пример #4
0
class GeneratePerfectModelEnsemble(GenerateHindcastEnsemble):
    """Generate `PerfectModelEnsemble` out of `HindcastEnsemble`."""
    def setup(self, *args, **kwargs):
        self.get_data()
        self.PredictionEnsemble = PerfectModelEnsemble(
            self.initialized).add_control(self.observations)
        self.PredictionEnsemble = self.PredictionEnsemble.generate_uninitialized(
        )
        self.reference = None
        self.resample_dim = "member"
        self.iterations = ITERATIONS
Пример #5
0
class GeneratePerfectModelEnsembleSmall(GeneratePerfectModelEnsemble):
    """Generate single grid point `PerfectModelEnsemble`."""
    def setup(self, *args, **kwargs):
        self.get_data(spatial_res=360)
        self.PredictionEnsemble = PerfectModelEnsemble(
            self.initialized).add_control(self.observations)
        self.PredictionEnsemble = self.PredictionEnsemble.generate_uninitialized(
        )
        self.alignment = None
        self.reference = None
        self.resample_dim = "member"
        self.iterations = ITERATIONS
def test_compute_uninitialized(pm_ds_ds1d, pm_ds_control1d):
    """Test that compute uninitialized can be run for perfect model ensemble"""
    pm = PerfectModelEnsemble(pm_ds_ds1d)
    pm.add_control(pm_ds_control1d)
    pm.generate_uninitialized()
    pm.compute_uninitialized()
def test_generate_uninit(pm_ds_ds1d, pm_ds_control1d):
    """Test to see if uninitialized ensemble can be bootstrapped"""
    pm = PerfectModelEnsemble(pm_ds_ds1d)
    pm.add_control(pm_ds_control1d)
    pm.generate_uninitialized()
Пример #8
0
def perfectModelEnsemble_initialized_control(PM_ds_initialized_1d,
                                             PM_ds_control_1d):
    """PerfectModelEnsemble initialized with `initialized` and `control` xr.Dataset."""
    pm = PerfectModelEnsemble(PM_ds_initialized_1d).add_control(
        PM_ds_control_1d)
    return pm.generate_uninitialized()