Skip to content

Commit b49a287

Browse files
committed
Add raven filter parameters test
1 parent cb733da commit b49a287

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

tests/test_prep/stripe_cpu_reference.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import pyfftw
33
import pyfftw.interfaces.numpy_fft as fft
44

5-
def raven_filter_cpu(
5+
def raven_filter_numpy(
66
sinogram,
77
uvalue: int = 20,
88
nvalue: int = 4,

tests/test_prep/test_stripe.py

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
raven_filter,
1313
)
1414
from numpy.testing import assert_allclose
15-
from .stripe_cpu_reference import raven_filter_cpu
15+
from .stripe_cpu_reference import raven_filter_numpy
1616

1717
def test_remove_stripe_ti_on_data(data, flats, darks):
1818
# --- testing the CuPy implementation from TomoCupy ---#
@@ -72,16 +72,39 @@ def test_stripe_raven_cupy(data, flats, darks):
7272

7373
data = normalize(data, flats, darks, cutoff=10, minus_log=True)
7474

75-
data_after_raven_gpu = raven_filter(cp.copy(data))
76-
data_after_raven_cpu = cp.asarray(raven_filter_cpu(cp.copy(data).get()))
75+
data_after_raven_gpu = raven_filter(cp.copy(data)).get()
76+
data_after_raven_cpu = raven_filter_numpy(cp.copy(data).get())
7777

78-
cp.testing.assert_allclose(data_after_raven_cpu, data_after_raven_gpu, rtol=0, atol=4e-01)
78+
assert_allclose(data_after_raven_cpu, data_after_raven_gpu, rtol=0, atol=4e-01)
7979

8080
data = None #: free up GPU memory
8181
# make sure the output is float32
8282
assert data_after_raven_gpu.dtype == np.float32
8383
assert data_after_raven_gpu.shape == data_after_raven_cpu.shape
8484

85+
@pytest.mark.parametrize("uvalue", [20, 50, 100])
86+
@pytest.mark.parametrize("nvalue", [2, 4, 6])
87+
@pytest.mark.parametrize("vvalue", [2, 4])
88+
@pytest.mark.parametrize("pad_x", [0, 10, 20])
89+
@pytest.mark.parametrize("pad_y", [0, 10, 20])
90+
@cp.testing.numpy_cupy_allclose(rtol=0, atol=3e-01)
91+
def test_stripe_raven_parameters_cupy(ensure_clean_memory, xp, uvalue, nvalue, vvalue, pad_x, pad_y):
92+
# because it's random, we explicitly seed and use numpy only, to match the data
93+
np.random.seed(12345)
94+
data = np.random.random_sample(size=(256, 5, 512)).astype(np.float32) * 2.0 + 0.001
95+
data = xp.asarray(data)
96+
97+
if xp.__name__ == "numpy":
98+
results = raven_filter_numpy(
99+
data, uvalue=uvalue, nvalue=nvalue, vvalue=vvalue, pad_x=pad_x, pad_y=pad_y
100+
).astype(np.float32)
101+
else:
102+
results = raven_filter(
103+
data, uvalue=uvalue, nvalue=nvalue, vvalue=vvalue, pad_x=pad_x, pad_y=pad_y
104+
).get()
105+
106+
return xp.asarray(results)
107+
85108
@pytest.mark.perf
86109
def test_stripe_removal_sorting_cupy_performance(ensure_clean_memory):
87110
data_host = (
@@ -155,25 +178,6 @@ def test_raven_filter_performance(ensure_clean_memory):
155178

156179
assert "performance in ms" == duration_ms
157180

158-
# @pytest.mark.perf
159-
# def test_raven_filter_cpu_performance(ensure_clean_memory):
160-
# data_host = (
161-
# np.random.random_sample(size=(1801, 5, 2560)).astype(np.float32) * 2.0 + 0.001
162-
# )
163-
# data = cp.asarray(data_host, dtype=np.float32)
164-
#
165-
# # do a cold run first
166-
# raven_filter_cpu(cp.copy(data).get())
167-
#
168-
# start = time.perf_counter_ns()
169-
# for _ in range(10):
170-
# raven_filter_cpu(cp.copy(data).get())
171-
#
172-
# duration_ms = float(time.perf_counter_ns() - start) * 1e-6 / 10
173-
#
174-
# assert "performance in ms" == duration_ms
175-
176-
177181
def test_remove_all_stripe_on_data(data, flats, darks):
178182
# --- testing the CuPy implementation from TomoCupy ---#
179183
data = normalize(data, flats, darks, cutoff=10, minus_log=True)

0 commit comments

Comments
 (0)