def test_ndvi_gpu():
    # cupy
    nir_cupy = create_test_arr(nir_data, backend='cupy')
    red_cupy = create_test_arr(red_data, backend='cupy')
    cupy_result = ndvi(nir_cupy, red_cupy)
    general_output_checks(nir_cupy, cupy_result, ndvi_expected_results)

    # dask + cupy
    nir_dask = create_test_arr(nir_data, backend='dask+cupy')
    red_dask = create_test_arr(red_data, backend='dask+cupy')
    dask_cupy_result = ndvi(nir_dask, red_dask)
    general_output_checks(nir_dask, dask_cupy_result, ndvi_expected_results)
def test_ndvi_cpu():

    # vanilla numpy version
    nir_numpy = create_test_arr(nir_data)
    red_numpy = create_test_arr(red_data)
    numpy_result = ndvi(nir_numpy, red_numpy)
    general_output_checks(nir_numpy, numpy_result, ndvi_expected_results)

    # dask
    nir_dask = create_test_arr(nir_data, backend='dask')
    red_dask = create_test_arr(red_data, backend='dask')
    dask_result = ndvi(nir_dask, red_dask)
    general_output_checks(nir_dask, dask_result, ndvi_expected_results)
Example #3
0
def test_ndvi_dask_cupy_equals_numpy():

    # vanilla numpy version
    nir = create_test_arr(arr1)
    red = create_test_arr(arr2)
    numpy_result = ndvi(nir, red)

    # dask + cupy
    nir_dask = create_test_arr(arr1, backend='dask+cupy')
    red_dask = create_test_arr(arr2, backend='dask+cupy')
    test_result = ndvi(nir_dask, red_dask)

    assert is_dask_cupy(test_result)

    test_result.data = test_result.data.compute()
    assert np.isclose(numpy_result, test_result, equal_nan=True).all()
Example #4
0
def test_ndvi_cupy_equals_numpy():

    import cupy

    # vanilla numpy version
    nir = create_test_arr(arr1)
    red = create_test_arr(arr2)
    numpy_result = ndvi(nir, red)

    # cupy
    nir_cupy = create_test_arr(arr1, backend='cupy')
    red_cupy = create_test_arr(arr2, backend='cupy')
    test_result = ndvi(nir_cupy, red_cupy)

    assert isinstance(test_result.data, cupy.ndarray)
    assert np.isclose(numpy_result, test_result, equal_nan=True).all()
def test_ndvi_numpy_contains_valid_values():
    """
    Assert aspect transfer function
    """
    _x = np.mgrid[1:0:21j]
    a, b = np.meshgrid(_x, _x)
    red = a*b
    nir = (a*b)[::-1, ::-1]

    da_nir = xr.DataArray(nir, dims=['y', 'x'])

    # add crs for tests
    da_nir = _add_EPSG4326_crs_to_da(da_nir)

    da_red = xr.DataArray(red, dims=['y', 'x'])

    da_ndvi = ndvi(da_nir, da_red)

    # test preservation of dims, attrs, coords, including crs
    assert da_ndvi.dims == da_nir.dims
    assert da_ndvi.attrs == da_nir.attrs
    for coord in da_nir.coords:
        assert np.all(da_nir[coord] == da_ndvi[coord])

    assert da_ndvi[0, 0] == -1
    assert da_ndvi[-1, -1] == 1
    assert da_ndvi[5, 10] == da_ndvi[10, 5] == -0.5
    assert da_ndvi[15, 10] == da_ndvi[10, 15] == 0.5
def test_savi():

    max_val = 2**16 - 1

    arr1 = np.array([[max_val, max_val, max_val, max_val],
                     [max_val, 1000.0, 1000.0, max_val],
                     [max_val, 1000.0, 1000.0, max_val],
                     [max_val, 1000.0, 1000.0, max_val],
                     [max_val, max_val, max_val, max_val]],
                    dtype=np.float64)

    arr2 = np.array(
        [[100.0, 100.0, 100.0, 100.0], [100.0, max_val, max_val, 100.0],
         [100.0, max_val, max_val, 100.0], [100.0, max_val, max_val, 100.0],
         [100.0, 100.0, 100.0, 100.0]],
        dtype=np.float64)

    nir = create_test_arr(arr1)
    red = create_test_arr(arr2)

    # savi should be same as ndvi at soil_factor=0
    result_savi = savi(nir, red, soil_factor=0.0)
    result_ndvi = ndvi(nir, red)

    assert (result_savi.data == result_ndvi.data).all()
    assert result_savi.dims == nir.dims

    result_savi = savi(nir, red, soil_factor=1.0)
    assert isinstance(result_savi, xa.DataArray)
    assert result_savi.dims == nir.dims
Example #7
0
def test_savi_numpy():
    nir = create_test_arr(arr1)
    red = create_test_arr(arr2)

    # savi should be same as ndvi at soil_factor=0
    result_savi = savi(nir, red, soil_factor=0.0)
    result_ndvi = ndvi(nir, red)

    assert np.isclose(result_savi.data, result_ndvi.data, equal_nan=True).all()
    assert result_savi.dims == nir.dims

    result_savi = savi(nir, red, soil_factor=1.0)
    assert isinstance(result_savi, xa.DataArray)
    assert result_savi.dims == nir.dims
def test_savi_cpu():
    nir_numpy = create_test_arr(nir_data)
    red_numpy = create_test_arr(red_data)

    # savi should be same as ndvi at soil_factor=0
    result_savi = savi(nir_numpy, red_numpy, soil_factor=0.0)
    result_ndvi = ndvi(nir_numpy, red_numpy)
    assert np.isclose(result_savi.data, result_ndvi.data, equal_nan=True).all()

    # test default savi where soil_factor = 1.0
    numpy_result = savi(nir_numpy, red_numpy, soil_factor=1.0)
    general_output_checks(nir_numpy, numpy_result, savi_expected_results)

    # dask
    nir_dask = create_test_arr(nir_data, backend='dask')
    red_dask = create_test_arr(red_data, backend='dask')
    dask_result = savi(nir_dask, red_dask)
    general_output_checks(nir_dask, dask_result, savi_expected_results)
def test_ndvi_numpy_contains_valid_values():
    _x = np.mgrid[1:0:21j]
    a, b = np.meshgrid(_x, _x)
    red_numpy = a * b
    nir_numpy = (a * b)[::-1, ::-1]

    da_nir = xr.DataArray(nir_numpy, dims=['y', 'x'])
    da_red = xr.DataArray(red_numpy, dims=['y', 'x'])

    da_ndvi = ndvi(da_nir, da_red)

    assert da_ndvi.dims == da_nir.dims
    assert da_ndvi.attrs == da_nir.attrs
    for coord in da_nir.coords:
        assert np.all(da_nir[coord] == da_ndvi[coord])

    assert da_ndvi[0, 0] == -1
    assert da_ndvi[-1, -1] == 1
    assert da_ndvi[5, 10] == da_ndvi[10, 5] == -0.5
    assert da_ndvi[15, 10] == da_ndvi[10, 15] == 0.5
Example #10
0
def test_ndvi():
    """
    Assert aspect transfer function
    """
    _x = np.mgrid[1:0:21j]
    a, b = np.meshgrid(_x, _x)
    red = a * b
    nir = (a * b)[::-1, ::-1]

    da_red = xr.DataArray(red, dims=['y', 'x'])
    da_nir = xr.DataArray(nir, dims=['y', 'x'])

    da_ndvi = ndvi(da_nir, da_red)

    assert da_ndvi.dims == da_nir.dims
    assert da_ndvi.coords == da_nir.coords
    assert da_ndvi.attrs == da_nir.attrs

    assert da_ndvi[0, 0] == -1
    assert da_ndvi[-1, -1] == 1
    assert da_ndvi[5, 10] == da_ndvi[10, 5] == -0.5
    assert da_ndvi[15, 10] == da_ndvi[10, 15] == 0.5
def test_savi_numpy():
    nir = create_test_arr(arr1)

    # add crs for tests
    nir = _add_EPSG4326_crs_to_da(nir)

    red = create_test_arr(arr2)

    # savi should be same as ndvi at soil_factor=0
    result_savi = savi(nir, red, soil_factor=0.0)
    result_ndvi = ndvi(nir, red)

    assert np.isclose(result_savi.data, result_ndvi.data, equal_nan=True).all()
    assert result_savi.dims == nir.dims

    result_savi = savi(nir, red, soil_factor=1.0)
    assert isinstance(result_savi, xa.DataArray)
    assert result_savi.dims == nir.dims

    # crs tests
    assert result_savi.attrs == nir.attrs
    for coord in nir.coords:
        assert np.all(result_savi[coord] == nir[coord])
Example #12
0
 def time_ndvi(self, nx, type):
     ndvi(self.nir, self.red)
def test_ndvi_gpu(nir_data, red_data, result_ndvi):
    result = ndvi(nir_data, red_data)
    general_output_checks(nir_data, result, result_ndvi, verify_dtype=True)