Beispiel #1
0
def run_interpolator(interpolator, filename):
    """Testing an interpolation method."""
    grid = load_data()
    lon = np.arange(-180, 180, 1 / 3.0) + 1 / 3.0
    lat = np.arange(-90, 90, 1 / 3.0) + 1 / 3.0
    time = 898500 + 3
    x, y, t = np.meshgrid(lon, lat, time, indexing="ij")
    z0 = core.trivariate_float64(grid,
                                 x.flatten(),
                                 y.flatten(),
                                 t.flatten(),
                                 interpolator,
                                 num_threads=0)
    z1 = core.trivariate_float64(grid,
                                 x.flatten(),
                                 y.flatten(),
                                 t.flatten(),
                                 interpolator,
                                 num_threads=1)
    shape = (len(lon), len(lat))
    z0 = np.ma.fix_invalid(z0)
    z1 = np.ma.fix_invalid(z1)
    assert np.all(z1 == z0)
    if HAVE_PLT:
        plot(x.reshape(shape), y.reshape(shape), z0.reshape(shape), filename)
    return z0
Beispiel #2
0
def test_grid3d_z_method():
    """Test of the interpolation method used on Z-axis"""
    grid = load_data(temporal_axis=True)
    interpolator = core.TemporalBilinear3D()
    lon = np.arange(-180, 180, 1 / 3.0) + 1 / 3.0
    lat = np.arange(-90, 90 + 1, 1 / 3.0) + 1 / 3.0
    time = np.array([
        netCDF4.num2date(898500 + 3,
                         "hours since 1900-01-01 00:00:0.0",
                         only_use_cftime_datetimes=False,
                         only_use_python_datetimes=True)
    ]).astype("datetime64[h]").astype("int64")
    x, y, t = np.meshgrid(lon, lat, time, indexing="ij")
    z0 = core.trivariate_float64(grid,
                                 x.flatten(),
                                 y.flatten(),
                                 t.flatten(),
                                 interpolator,
                                 num_threads=0)
    z1 = core.trivariate_float64(grid,
                                 x.flatten(),
                                 y.flatten(),
                                 t.flatten(),
                                 interpolator,
                                 z_method="linear",
                                 num_threads=0)
    z0 = np.ma.fix_invalid(z0)
    z1 = np.ma.fix_invalid(z1)
    assert np.all(z0 == z1)
    z1 = core.trivariate_float64(grid,
                                 x.flatten(),
                                 y.flatten(),
                                 t.flatten(),
                                 interpolator,
                                 z_method="nearest",
                                 num_threads=0)
    z1 = np.ma.fix_invalid(z1)
    assert np.all(z0 != z1)
    with pytest.raises(ValueError):
        core.trivariate_float64(grid,
                                x.flatten(),
                                y.flatten(),
                                t.flatten(),
                                interpolator,
                                z_method="NEAREST",
                                num_threads=0)
Beispiel #3
0
def test_grid3d_bounds_error():
    """Test of the detection on interpolation outside bounds"""
    grid = load_data()
    interpolator = core.Bilinear3D()
    lon = np.arange(-180, 180, 1 / 3.0) + 1 / 3.0
    lat = np.arange(-90, 90 + 1, 1 / 3.0) + 1 / 3.0
    time = 898500 + 3
    x, y, t = np.meshgrid(lon, lat, time, indexing="ij")
    core.trivariate_float64(grid,
                            x.flatten(),
                            y.flatten(),
                            t.flatten(),
                            interpolator,
                            num_threads=0)
    with pytest.raises(ValueError):
        core.trivariate_float64(grid,
                                x.flatten(),
                                y.flatten(),
                                t.flatten(),
                                interpolator,
                                bounds_error=True,
                                num_threads=0)