Skip to content

Commit 1906a4e

Browse files
authored
Use explicit cupy to numpy conversion in tests (#573)
* Use explicit cupy to numpy conversion in tests * Fix linting errors
1 parent ee4f6da commit 1906a4e

8 files changed

+55
-35
lines changed

xrspatial/focal.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def _mean_dask_cupy(data, excludes):
113113
def _mean(data, excludes):
114114
# numpy case
115115
if isinstance(data, np.ndarray):
116-
out = _mean_numpy(data.astype(np.float), excludes)
116+
out = _mean_numpy(data.astype(float), excludes)
117117

118118
# cupy case
119119
elif has_cuda() and isinstance(data, cupy.ndarray):
@@ -122,11 +122,11 @@ def _mean(data, excludes):
122122
# dask + cupy case
123123
elif has_cuda() and isinstance(data, da.Array) and \
124124
type(data._meta).__module__.split('.')[0] == 'cupy':
125-
out = _mean_dask_cupy(data.astype(cupy.float), excludes)
125+
out = _mean_dask_cupy(data.astype(float), excludes)
126126

127127
# dask + numpy case
128128
elif isinstance(data, da.Array):
129-
out = _mean_dask_numpy(data.astype(np.float), excludes)
129+
out = _mean_dask_numpy(data.astype(float), excludes)
130130

131131
else:
132132
raise TypeError('Unsupported Array Type: {}'.format(type(data)))

xrspatial/tests/test_aspect.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def test_numpy_equals_cupy():
8989
gpu = aspect(small_da_cupy, name='aspect_agg')
9090

9191
assert isinstance(gpu.data, cupy.ndarray)
92-
assert np.isclose(cpu, gpu, equal_nan=True).all()
92+
assert np.isclose(cpu, gpu.data.get(), equal_nan=True).all()
9393

9494

9595
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
@@ -113,7 +113,7 @@ def test_cupy_equals_qgis():
113113
# TODO: We shouldn't ignore edges!
114114
# validate output values
115115
# ignore border edges
116-
xrspatial_vals = xrspatial_aspect.values[1:-1, 1:-1]
116+
xrspatial_vals = xrspatial_aspect.data[1:-1, 1:-1].get()
117117
qgis_vals = QGIS_OUTPUT[1:-1, 1:-1]
118118
assert np.isclose(xrspatial_vals, qgis_vals, equal_nan=True).all()
119119

xrspatial/tests/test_classify.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def test_reclassify_cpu_equals_gpu():
6767
bins=bins,
6868
new_values=new_values)
6969
assert isinstance(gpu.data, cupy.ndarray)
70-
assert np.isclose(cpu, gpu, equal_nan=True).all()
70+
assert np.isclose(cpu, gpu.data.get(), equal_nan=True).all()
7171

7272
# dask + cupy
7373
dask_cupy_agg = xr.DataArray(cupy.asarray(elevation),
@@ -78,7 +78,7 @@ def test_reclassify_cpu_equals_gpu():
7878
assert isinstance(dask_gpu.data, da.Array) and is_cupy_backed(dask_gpu)
7979

8080
dask_gpu.data = dask_gpu.data.compute()
81-
assert np.isclose(cpu, dask_gpu, equal_nan=True).all()
81+
assert np.isclose(cpu, dask_gpu.data.get(), equal_nan=True).all()
8282

8383

8484
def test_quantile_cpu():
@@ -123,7 +123,7 @@ def test_quantile_cpu_equals_gpu():
123123
gpu = quantile(cupy_agg, k=k, name='cupy_result')
124124

125125
assert isinstance(gpu.data, cupy.ndarray)
126-
assert np.isclose(cpu, gpu, equal_nan=True).all()
126+
assert np.isclose(cpu, gpu.data.get(), equal_nan=True).all()
127127

128128

129129
def test_natural_breaks_cpu():
@@ -188,7 +188,7 @@ def test_natural_breaks_cpu_equals_gpu():
188188
gpu = natural_breaks(cupy_agg, k=k, name='cupy_result')
189189

190190
assert isinstance(gpu.data, cupy.ndarray)
191-
assert np.isclose(cpu, gpu, equal_nan=True).all()
191+
assert np.isclose(cpu, gpu.data.get(), equal_nan=True).all()
192192

193193

194194
def test_equal_interval_cpu():
@@ -224,4 +224,4 @@ def test_equal_interval_cpu_equals_gpu():
224224
gpu = equal_interval(cupy_agg, k=k)
225225
assert isinstance(gpu.data, cupy.ndarray)
226226

227-
assert np.isclose(cpu, gpu, equal_nan=True).all()
227+
assert np.isclose(cpu, gpu.data.get(), equal_nan=True).all()

xrspatial/tests/test_curvature.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ def test_curvature_gpu_equals_cpu():
166166

167167
assert isinstance(gpu.data, cupy.ndarray)
168168

169-
assert np.isclose(cpu, gpu, equal_nan=True).all()
169+
assert np.isclose(cpu, gpu.data.get(), equal_nan=True).all()
170170

171171

172172
def test_curvature_numpy_equals_dask():

xrspatial/tests/test_hillshade.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,4 @@ def test_hillshade_gpu_equals_cpu():
9393

9494
assert isinstance(gpu.data, cupy.ndarray)
9595

96-
assert np.isclose(cpu, gpu, equal_nan=True).all()
96+
assert np.isclose(cpu, gpu.data.get(), equal_nan=True).all()

xrspatial/tests/test_multispectral.py

+40-20
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ def test_ndvi_cupy_equals_numpy():
139139
test_result = ndvi(nir_cupy, red_cupy)
140140

141141
assert isinstance(test_result.data, cupy.ndarray)
142-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
142+
assert np.isclose(
143+
numpy_result, test_result.data.get(), equal_nan=True).all()
143144

144145

145146
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
@@ -158,7 +159,8 @@ def test_ndvi_dask_cupy_equals_numpy():
158159
assert is_dask_cupy(test_result)
159160

160161
test_result.data = test_result.data.compute()
161-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
162+
assert np.isclose(
163+
numpy_result, test_result.data.get(), equal_nan=True).all()
162164

163165

164166
# SAVI -------------
@@ -210,7 +212,8 @@ def test_savi_cupy_equals_numpy():
210212
test_result = savi(nir_cupy, red_cupy)
211213

212214
assert isinstance(test_result.data, cupy.ndarray)
213-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
215+
assert np.isclose(
216+
numpy_result, test_result.data.get(), equal_nan=True).all()
214217

215218

216219
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
@@ -227,7 +230,8 @@ def test_savi_dask_cupy_equals_numpy():
227230

228231
assert is_dask_cupy(test_result)
229232
test_result.data = test_result.data.compute()
230-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
233+
assert np.isclose(
234+
numpy_result, test_result.data.get(), equal_nan=True).all()
231235

232236

233237
# arvi -------------
@@ -280,7 +284,8 @@ def test_arvi_cupy_equals_numpy():
280284
test_result = arvi(nir_cupy, red_cupy, blue_cupy)
281285

282286
assert isinstance(test_result.data, cupy.ndarray)
283-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
287+
assert np.isclose(
288+
numpy_result, test_result.data.get(), equal_nan=True).all()
284289

285290

286291
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
@@ -300,7 +305,8 @@ def test_arvi_dask_cupy_equals_numpy():
300305
assert is_dask_cupy(test_result)
301306

302307
test_result.data = test_result.data.compute()
303-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
308+
assert np.isclose(
309+
numpy_result, test_result.data.get(), equal_nan=True).all()
304310

305311

306312
# EVI -------------
@@ -357,7 +363,8 @@ def test_evi_cupy_equals_numpy():
357363
test_result = evi(nir_cupy, red_cupy, blue_cupy)
358364

359365
assert isinstance(test_result.data, cupy.ndarray)
360-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
366+
assert np.isclose(
367+
numpy_result, test_result.data.get(), equal_nan=True).all()
361368

362369

363370
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
@@ -377,7 +384,8 @@ def test_evi_dask_cupy_equals_numpy():
377384
assert is_dask_cupy(test_result)
378385

379386
test_result.data = test_result.data.compute()
380-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
387+
assert np.isclose(
388+
numpy_result, test_result.data.get(), equal_nan=True).all()
381389

382390

383391
# GCI -------------
@@ -424,7 +432,8 @@ def test_gci_cupy_equals_numpy():
424432
test_result = gci(nir_cupy, green_cupy)
425433

426434
assert isinstance(test_result.data, cupy.ndarray)
427-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
435+
assert np.isclose(
436+
numpy_result, test_result.data.get(), equal_nan=True).all()
428437

429438

430439
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Dgcice not Available")
@@ -442,7 +451,8 @@ def test_gci_dask_cupy_equals_numpy():
442451
assert is_dask_cupy(test_result)
443452

444453
test_result.data = test_result.data.compute()
445-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
454+
assert np.isclose(
455+
numpy_result, test_result.data.get(), equal_nan=True).all()
446456

447457

448458
# SIPI -------------
@@ -495,7 +505,8 @@ def test_sipi_cupy_equals_numpy():
495505
test_result = sipi(nir_dask, red_dask, blue_dask)
496506

497507
assert isinstance(test_result.data, cupy.ndarray)
498-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
508+
assert np.isclose(
509+
numpy_result, test_result.data.get(), equal_nan=True).all()
499510

500511

501512
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
@@ -514,7 +525,8 @@ def test_sipi_dask_cupy_equals_numpy():
514525

515526
assert is_dask_cupy(test_result)
516527
test_result.data = test_result.data.compute()
517-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
528+
assert np.isclose(
529+
numpy_result, test_result.data.get(), equal_nan=True).all()
518530

519531

520532
# NBR -------------
@@ -561,7 +573,8 @@ def test_nbr_cupy_equals_numpy():
561573
test_result = nbr(nir_cupy, swir_cupy)
562574

563575
assert isinstance(test_result.data, cupy.ndarray)
564-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
576+
assert np.isclose(
577+
numpy_result, test_result.data.get(), equal_nan=True).all()
565578

566579

567580
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
@@ -579,7 +592,8 @@ def test_nbr_dask_cupy_equals_numpy():
579592
assert is_dask_cupy(test_result)
580593

581594
test_result.data = test_result.data.compute()
582-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
595+
assert np.isclose(
596+
numpy_result, test_result.data.get(), equal_nan=True).all()
583597

584598

585599
# NBR2 -------------
@@ -627,7 +641,8 @@ def test_nbr2_cupy_equals_numpy():
627641
test_result = nbr2(swir1_cupy, swir2_cupy)
628642

629643
assert isinstance(test_result.data, cupy.ndarray)
630-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
644+
assert np.isclose(
645+
numpy_result, test_result.data.get(), equal_nan=True).all()
631646

632647

633648
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Dnbr2ce not Available")
@@ -644,7 +659,8 @@ def test_nbr2_dask_cupy_equals_numpy():
644659

645660
assert is_dask_cupy(test_result)
646661
test_result.data = test_result.data.compute()
647-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
662+
assert np.isclose(
663+
numpy_result, test_result.data.get(), equal_nan=True).all()
648664

649665

650666
# NDMI -------------
@@ -692,7 +708,8 @@ def test_ndmi_cupy_equals_numpy():
692708
test_result = ndmi(nir_cupy, swir1_cupy)
693709

694710
assert isinstance(test_result.data, cupy.ndarray)
695-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
711+
assert np.isclose(
712+
numpy_result, test_result.data.get(), equal_nan=True).all()
696713

697714

698715
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
@@ -709,7 +726,8 @@ def test_ndmi_dask_cupy_equals_numpy():
709726

710727
assert is_dask_cupy(test_result)
711728
test_result.data = test_result.data.compute()
712-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
729+
assert np.isclose(
730+
numpy_result, test_result.data.get(), equal_nan=True).all()
713731

714732

715733
# EBBI -------------
@@ -761,7 +779,8 @@ def test_ebbi_cupy_equals_numpy():
761779
test_result = ebbi(red_dask, swir_dask, tir_dask)
762780

763781
assert isinstance(test_result.data, cupy.ndarray)
764-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
782+
assert np.isclose(
783+
numpy_result, test_result.data.get(), equal_nan=True).all()
765784

766785

767786
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")
@@ -780,7 +799,8 @@ def test_ebbi_dask_cupy_equals_numpy():
780799

781800
assert is_dask_cupy(test_result)
782801
test_result.data = test_result.data.compute()
783-
assert np.isclose(numpy_result, test_result, equal_nan=True).all()
802+
assert np.isclose(
803+
numpy_result, test_result.data.get(), equal_nan=True).all()
784804

785805

786806
def test_true_color_cpu():

xrspatial/tests/test_slope.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def test_slope_against_qgis_gpu():
9494

9595
# validate output values
9696
# ignore border edges
97-
xrspatial_vals = xrspatial_slope.values[1:-1, 1:-1]
97+
xrspatial_vals = xrspatial_slope.data[1:-1, 1:-1].get()
9898
qgis_vals = qgis_slope[1:-1, 1:-1]
9999
assert (np.isclose(xrspatial_vals, qgis_vals, equal_nan=True).all() | (
100100
np.isnan(xrspatial_vals) & np.isnan(qgis_vals))).all()
@@ -114,7 +114,7 @@ def test_slope_gpu_equals_cpu():
114114
gpu = slope(small_da_cupy, name='cupy_result')
115115
assert isinstance(gpu.data, cupy.ndarray)
116116

117-
assert np.isclose(cpu, gpu, equal_nan=True).all()
117+
assert np.isclose(cpu, gpu.data.get(), equal_nan=True).all()
118118

119119

120120
@pytest.mark.skipif(doesnt_have_cuda(), reason="CUDA Device not Available")

xrspatial/tests/test_zonal.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ def test_apply():
219219
def func(x):
220220
return 0
221221

222-
zones_val = np.zeros((3, 3), dtype=np.int)
222+
zones_val = np.zeros((3, 3), dtype=int)
223223
# define some zones
224224
zones_val[1] = 1
225225
zones_val[2] = 2

0 commit comments

Comments
 (0)