Ejemplo n.º 1
0
def test_irregular_initialization_dates():
    """Tests that irregularly spaced initializations convert properly."""
    inits = np.arange(1990, 2010)
    inits = np.delete(inits, [3, 5, 8, 12, 15])
    da = xr.DataArray(np.random.rand(len(inits)), dims="init", coords=[inits])
    new_inits = convert_time_index(da, "init", "")
    assert (new_inits["init"].to_index().year == inits).all()
Ejemplo n.º 2
0
def PM_ds_control_1d_ym_cftime(PM_ds_control_1d):
    """To MPI Perfect-model-framework corresponding control timeseries xr.Dataset with
    time as cftime."""
    PM_ds_control_1d = convert_time_index(
        PM_ds_control_1d, "time", "PM_ds_control_1d.time", calendar=PM_CALENDAR_STR
    )
    return PM_ds_control_1d
Ejemplo n.º 3
0
def test_convert_time_index_does_not_overwrite():
    """Tests that `convert_time_index` does not overwrite the original index."""
    inits = np.arange(1990, 2000)
    da = xr.DataArray(np.random.rand(len(inits)), dims="init", coords=[inits])
    new_inits = convert_time_index(da, "init", "")
    assert isinstance(da.init.to_index(), pd.Int64Index)
    assert isinstance(new_inits.init.to_index(), xr.CFTimeIndex)
Ejemplo n.º 4
0
def reconstruction_ds_1d_cftime(reconstruction_ds_1d):
    """CESM-FOSI historical reconstruction timeseries with cftime time axis."""
    ds = reconstruction_ds_1d
    ds = convert_time_index(ds,
                            'time',
                            'ds.init',
                            calendar=HINDCAST_CALENDAR_STR)
    return ds
Ejemplo n.º 5
0
def hind_ds_initialized_1d_cftime(hind_ds_initialized_1d):
    """CESM-DPLE initialzed hindcast timeseries with cftime initializations."""
    ds = hind_ds_initialized_1d
    ds = convert_time_index(ds,
                            'init',
                            'ds.init',
                            calendar=HINDCAST_CALENDAR_STR)
    ds.lead.attrs['units'] = 'years'
    return ds
Ejemplo n.º 6
0
def test_numeric_index_auto_appends_lead_attrs():
    """Tests that for numeric inits, lead units are automatically set to 'years'"""
    lead = np.arange(3)
    int_inits = np.arange(1990, 2000)
    float_inits = int_inits * 1.0
    int_da = xr.DataArray(
        np.random.rand(len(int_inits), len(lead)),
        dims=["init", "lead"],
        coords=[int_inits, lead],
    )
    float_da = xr.DataArray(
        np.random.rand(len(float_inits), len(lead)),
        dims=["init", "lead"],
        coords=[float_inits, lead],
    )
    new_int_da = convert_time_index(int_da, "init", "")
    new_float_da = convert_time_index(float_da, "init", "")
    assert new_int_da.lead.attrs["units"] == "years"
    assert new_float_da.lead.attrs["units"] == "years"
Ejemplo n.º 7
0
def PM_ds_initialized_1d_ym_cftime(PM_ds_initialized_1d):
    """MPI Perfect-model-framework initialized timeseries xr.Dataset with init as
    cftime."""
    PM_ds_initialized_1d = convert_time_index(
        PM_ds_initialized_1d,
        'init',
        'PM_ds_initialized_1d.init',
        calendar=PM_CALENDAR_STR,
    )
    PM_ds_initialized_1d['lead'].attrs['units'] = 'years'
    return PM_ds_initialized_1d
Ejemplo n.º 8
0
def PM_ds_initialized_1d_ym_cftime(PM_ds_initialized_1d):
    """MPI Perfect-model-framework initialized timeseries xr.Dataset with init as
    cftime."""
    PM_ds_initialized_1d = convert_time_index(
        PM_ds_initialized_1d,
        "init",
        "PM_ds_initialized_1d.init",
        calendar=PM_CALENDAR_STR,
    )
    PM_ds_initialized_1d["lead"].attrs["units"] = "years"
    return PM_ds_initialized_1d
Ejemplo n.º 9
0
def test_float64_converted_to_cftime():
    """Tests the xr.Float64Index is converted to xr.CFTimeIndex."""
    inits = np.arange(1990, 2000) * 1.0
    da = xr.DataArray(np.random.rand(len(inits)), dims="init", coords=[inits])
    new_inits = convert_time_index(da, "init", "")
    assert isinstance(new_inits["init"].to_index(), xr.CFTimeIndex)
Ejemplo n.º 10
0
def test_pandas_datetime_converted_to_cftime():
    """Tests that a pd.DatetimeIndex is converted to xr.CFTimeIndex."""
    inits = pd.date_range("1990", "2000", freq="YS")
    da = xr.DataArray(np.random.rand(len(inits)), dims="init", coords=[inits])
    new_inits = convert_time_index(da, "init", "")
    assert isinstance(new_inits["init"].to_index(), xr.CFTimeIndex)
Ejemplo n.º 11
0
def test_cftime_index_unchanged():
    """Tests that a CFTime index going through convert time is unchanged."""
    inits = xr.cftime_range("1990", "2000", freq="Y", calendar="noleap")
    da = xr.DataArray(np.random.rand(len(inits)), dims="init", coords=[inits])
    new_inits = convert_time_index(da, "init", "")
    assert_allclose(new_inits.init, da.init)
Ejemplo n.º 12
0
def test_int64_converted_to_cftime():
    """Tests the xr.Int64Index is converted to xr.CFTimeIndex."""
    inits = np.arange(1990, 2000)
    da = xr.DataArray(np.random.rand(len(inits)), dims='init', coords=[inits])
    new_inits = convert_time_index(da, 'init', '')
    assert isinstance(new_inits['init'].to_index(), xr.CFTimeIndex)
Ejemplo n.º 13
0
def test_pandas_datetime_converted_to_cftime():
    """Tests that a pd.DatetimeIndex is converted to xr.CFTimeIndex."""
    inits = pd.date_range('1990', '2000', freq='YS')
    da = xr.DataArray(np.random.rand(len(inits)), dims='init', coords=[inits])
    new_inits = convert_time_index(da, 'init', '')
    assert isinstance(new_inits['init'].to_index(), xr.CFTimeIndex)
Ejemplo n.º 14
0
def test_cftime_index_unchanged():
    """Tests that a CFTime index going through convert time is unchanged."""
    inits = xr.cftime_range('1990', '2000', freq='Y', calendar='noleap')
    da = xr.DataArray(np.random.rand(len(inits)), dims='init', coords=[inits])
    new_inits = convert_time_index(da, 'init', '')
    assert_allclose(new_inits.init, da.init)