Skip to content

Commit 38fd933

Browse files
committed
ebbi
1 parent 4d466ee commit 38fd933

File tree

2 files changed

+73
-103
lines changed

2 files changed

+73
-103
lines changed

xrspatial/multispectral.py

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,6 @@ def _gci_dask(nir_data, green_data):
258258

259259

260260
def _gci_cupy(nir_data, green_data):
261-
262-
import cupy
263-
264261
griddim, blockdim = cuda_args(nir_data.shape)
265262
out = cupy.empty(nir_data.shape, dtype='f4')
266263
out[:] = cupy.nan
@@ -269,9 +266,6 @@ def _gci_cupy(nir_data, green_data):
269266

270267

271268
def _gci_dask_cupy(nir_data, green_data):
272-
273-
import cupy
274-
275269
out = da.map_blocks(_gci_cupy, nir_data, green_data,
276270
dtype=cupy.float32, meta=cupy.array(()))
277271
return out
@@ -517,9 +511,6 @@ def _normalized_ratio_gpu(arr1, arr2, out):
517511

518512

519513
def _run_normalized_ratio_cupy(arr1, arr2):
520-
521-
import cupy
522-
523514
griddim, blockdim = cuda_args(arr1.shape)
524515
out = cupy.empty(arr1.shape, dtype='f4')
525516
out[:] = cupy.nan
@@ -528,9 +519,6 @@ def _run_normalized_ratio_cupy(arr1, arr2):
528519

529520

530521
def _run_normalized_ratio_dask_cupy(arr1, arr2):
531-
532-
import cupy
533-
534522
out = da.map_blocks(_run_normalized_ratio_cupy, arr1, arr2,
535523
dtype=cupy.float32, meta=cupy.array(()))
536524
return out
@@ -571,9 +559,6 @@ def _savi_dask(nir_data, red_data, soil_factor):
571559

572560

573561
def _savi_cupy(nir_data, red_data, soil_factor):
574-
575-
import cupy
576-
577562
griddim, blockdim = cuda_args(nir_data.shape)
578563
out = cupy.empty(nir_data.shape, dtype='f4')
579564
out[:] = cupy.nan
@@ -582,9 +567,6 @@ def _savi_cupy(nir_data, red_data, soil_factor):
582567

583568

584569
def _savi_dask_cupy(nir_data, red_data, soil_factor):
585-
586-
import cupy
587-
588570
out = da.map_blocks(_savi_cupy, nir_data, red_data, soil_factor,
589571
dtype=cupy.float32, meta=cupy.array(()))
590572
return out
@@ -671,9 +653,6 @@ def _sipi_dask(nir_data, red_data, blue_data):
671653

672654

673655
def _sipi_cupy(nir_data, red_data, blue_data):
674-
675-
import cupy
676-
677656
griddim, blockdim = cuda_args(nir_data.shape)
678657
out = cupy.empty(nir_data.shape, dtype='f4')
679658
out[:] = cupy.nan
@@ -682,9 +661,6 @@ def _sipi_cupy(nir_data, red_data, blue_data):
682661

683662

684663
def _sipi_dask_cupy(nir_data, red_data, blue_data):
685-
686-
import cupy
687-
688664
out = da.map_blocks(_sipi_cupy, nir_data, red_data, blue_data,
689665
dtype=cupy.float32, meta=cupy.array(()))
690666
return out
@@ -732,7 +708,7 @@ def sipi(nir_agg: DataArray, red_agg: DataArray, blue_agg: DataArray,
732708
# EBBI -------------
733709
@ngjit
734710
def _ebbi_cpu(red_data, swir_data, tir_data):
735-
out = np.zeros(red_data, dtype=np.float32)
711+
out = np.zeros(red_data.shape, dtype=np.float32)
736712
rows, cols = red_data.shape
737713
for y in range(0, rows):
738714
for x in range(0, cols):
@@ -764,9 +740,6 @@ def _ebbi_dask(red_data, swir_data, tir_data):
764740

765741

766742
def _ebbi_cupy(red_data, swir_data, tir_data):
767-
768-
import cupy
769-
770743
griddim, blockdim = cuda_args(red_data.shape)
771744
out = cupy.empty(red_data.shape, dtype='f4')
772745
out[:] = cupy.nan
@@ -775,9 +748,6 @@ def _ebbi_cupy(red_data, swir_data, tir_data):
775748

776749

777750
def _ebbi_dask_cupy(red_data, swir_data, tir_data):
778-
779-
import cupy
780-
781751
out = da.map_blocks(_ebbi_cupy, red_data, swir_data, tir_data,
782752
dtype=cupy.float32, meta=cupy.array(()))
783753
return out

xrspatial/tests/test_multispectral.py

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -736,75 +736,75 @@ def test_ndmi_dask_cupy_equals_numpy():
736736
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
737737

738738

739-
# # EBBI -------------
740-
# def test_ebbi_numpy():
741-
# red = create_test_arr(arr1)
742-
# swir = create_test_arr(arr2)
743-
# tir = create_test_arr(arr3)
744-
# numpy_result = ebbi(red, swir, tir)
745-
#
746-
# assert numpy_result.dims == red.dims
747-
# assert isinstance(numpy_result, xa.DataArray)
748-
# assert numpy_result.dims == red.dims
749-
#
750-
#
751-
# def test_ebbi_dask_equals_numpy():
752-
#
753-
# # vanilla numpy version
754-
# red = create_test_arr(arr1)
755-
# swir = create_test_arr(arr2)
756-
# tir = create_test_arr(arr3)
757-
# numpy_result = ebbi(red, swir, tir)
758-
#
759-
# # dask
760-
# red_dask = create_test_arr(arr1, backend='dask')
761-
# swir_dask = create_test_arr(arr2, backend='dask')
762-
# tir_dask = create_test_arr(arr3, backend='dask')
763-
# test_result = ebbi(red_dask, swir_dask, tir_dask)
764-
#
765-
# assert isinstance(test_result.data, da.Array)
766-
# test_result.data = test_result.data.compute()
767-
# assert np.isclose(numpy_result, test_result, equal_nan=True).all()
768-
#
769-
#
770-
# @pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
771-
# def test_ebbi_cupy_equals_numpy():
772-
#
773-
# import cupy
774-
#
775-
# # vanilla numpy version
776-
# red = create_test_arr(arr1)
777-
# swir = create_test_arr(arr2)
778-
# tir = create_test_arr(arr3)
779-
# numpy_result = ebbi(red, swir, tir)
780-
#
781-
# # cupy
782-
# red_dask = create_test_arr(arr1, backend='cupy')
783-
# swir_dask = create_test_arr(arr2, backend='cupy')
784-
# tir_dask = create_test_arr(arr3, backend='cupy')
785-
# test_result = ebbi(red_dask, swir_dask, tir_dask)
786-
#
787-
# assert isinstance(test_result.data, cupy.ndarray)
788-
# assert np.isclose(numpy_result, test_result, equal_nan=True).all()
789-
#
790-
#
791-
# @pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
792-
# def test_ebbi_dask_cupy_equals_numpy():
793-
#
794-
# import cupy
795-
#
796-
# # vanilla numpy version
797-
# red = create_test_arr(arr1)
798-
# swir = create_test_arr(arr2)
799-
# tir = create_test_arr(arr3)
800-
# numpy_result = ebbi(red, swir, tir)
801-
#
802-
# # dask + cupy
803-
# red_dask_cupy = create_test_arr(arr1, backend='dask+cupy')
804-
# swir_dask_cupy = create_test_arr(arr2, backend='dask+cupy')
805-
# tir_dask_cupy = create_test_arr(arr3, backend='dask+cupy')
806-
# test_result = ebbi(red_dask_cupy, swir_dask_cupy, tir_dask_cupy)
807-
#
808-
# assert is_dask_cupy(test_result)
809-
# test_result.data = test_result.data.compute()
810-
# assert np.isclose(numpy_result, test_result, equal_nan=True).all()
739+
# EBBI -------------
740+
def test_ebbi_numpy():
741+
red = create_test_arr(arr1)
742+
swir = create_test_arr(arr2)
743+
tir = create_test_arr(arr3)
744+
numpy_result = ebbi(red, swir, tir)
745+
746+
assert numpy_result.dims == red.dims
747+
assert isinstance(numpy_result, xa.DataArray)
748+
assert numpy_result.dims == red.dims
749+
750+
751+
def test_ebbi_dask_equals_numpy():
752+
753+
# vanilla numpy version
754+
red = create_test_arr(arr1)
755+
swir = create_test_arr(arr2)
756+
tir = create_test_arr(arr3)
757+
numpy_result = ebbi(red, swir, tir)
758+
759+
# dask
760+
red_dask = create_test_arr(arr1, backend='dask')
761+
swir_dask = create_test_arr(arr2, backend='dask')
762+
tir_dask = create_test_arr(arr3, backend='dask')
763+
test_result = ebbi(red_dask, swir_dask, tir_dask)
764+
765+
assert isinstance(test_result.data, da.Array)
766+
test_result.data = test_result.data.compute()
767+
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
768+
769+
770+
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
771+
def test_ebbi_cupy_equals_numpy():
772+
773+
import cupy
774+
775+
# vanilla numpy version
776+
red = create_test_arr(arr1)
777+
swir = create_test_arr(arr2)
778+
tir = create_test_arr(arr3)
779+
numpy_result = ebbi(red, swir, tir)
780+
781+
# cupy
782+
red_dask = create_test_arr(arr1, backend='cupy')
783+
swir_dask = create_test_arr(arr2, backend='cupy')
784+
tir_dask = create_test_arr(arr3, backend='cupy')
785+
test_result = ebbi(red_dask, swir_dask, tir_dask)
786+
787+
assert isinstance(test_result.data, cupy.ndarray)
788+
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
789+
790+
791+
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
792+
def test_ebbi_dask_cupy_equals_numpy():
793+
794+
import cupy
795+
796+
# vanilla numpy version
797+
red = create_test_arr(arr1)
798+
swir = create_test_arr(arr2)
799+
tir = create_test_arr(arr3)
800+
numpy_result = ebbi(red, swir, tir)
801+
802+
# dask + cupy
803+
red_dask_cupy = create_test_arr(arr1, backend='dask+cupy')
804+
swir_dask_cupy = create_test_arr(arr2, backend='dask+cupy')
805+
tir_dask_cupy = create_test_arr(arr3, backend='dask+cupy')
806+
test_result = ebbi(red_dask_cupy, swir_dask_cupy, tir_dask_cupy)
807+
808+
assert is_dask_cupy(test_result)
809+
test_result.data = test_result.data.compute()
810+
assert np.isclose(numpy_result, test_result, equal_nan=True).all()

0 commit comments

Comments
 (0)