Skip to content

Commit 916b868

Browse files
committed
Issue #761 better diff for apex reference check (more robust xy/yx grid handling)
1 parent d88a124 commit 916b868

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

openeo/testing/results.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -92,24 +92,24 @@ def _as_xarray_dataarray(data: Union[str, Path, xarray.DataArray]) -> xarray.Dat
9292

9393

9494
def ascii_art(diff_data: DataArray) -> str:
95-
scale: int = max(1, (diff_data.sizes["x"] / 100))
95+
scale: int = max(1, int(diff_data.sizes["x"] / 100))
9696
data_max = diff_data.max().item()
9797
if data_max == 0:
9898
data_max = 1
9999
grayscale_characters = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. "
100100
coarsened = diff_data.coarsen(dim={"x": scale, "y": scale}, boundary="pad").all()
101+
if coarsened.dims[0] != "y":
102+
coarsened = coarsened.transpose()
101103
top = "┌" + "─" * coarsened.sizes["x"] + "┐\n"
102104
bottom = "\n└" + "─" * coarsened.sizes["x"] + "┘"
103-
return (
104-
top
105-
+ "\n".join(
106-
[
107-
"│" + "".join([grayscale_characters[70 - int(v * 70 / data_max)] for v in row]) + "│"
108-
for row in coarsened.transpose()
109-
]
110-
)
111-
+ bottom
112-
)
105+
106+
def pixelChar(v) -> str:
107+
i = int(v * 70 / data_max)
108+
if v > 0 and i == 0:
109+
i = 1
110+
return grayscale_characters[69 - i]
111+
112+
return top + "\n".join(["│" + "".join([pixelChar(v) for v in row]) + "│" for row in coarsened]) + bottom
113113

114114

115115
def _compare_xarray_dataarray_xy(
@@ -174,14 +174,18 @@ def _compare_xarray_dataarray_xy(
174174

175175
key = ",".join([f"{k} {str(v1)}" for k, v1 in indexers.items()])
176176
issues.append(
177-
f"{key}: value difference min:{diff_data.min().data}, max: {diff_data.max().data}, mean: {diff_mean}, var: {diff_var}"
177+
f"{key}: value difference exceeds tolerance (rtol {rtol}, atol {atol}), min:{diff_data.min().data}, max: {diff_data.max().data}, mean: {diff_mean}, var: {diff_var}"
178178
)
179179

180180
print(f"Difference ascii art for {key}")
181-
print(ascii_art(diff_data))
181+
art = ascii_art(diff_data)
182+
print(art)
183+
184+
coord_grid = np.meshgrid(diff_data.coords["x"], diff_data.coords["y"])
182185

183-
coord_grid = np.meshgrid(diff_data.coords["y"], diff_data.coords["x"])
184186
mask = diff_data.notnull()
187+
if mask.dims[0] != "y":
188+
mask = mask.transpose()
185189
c1 = coord_grid[0][mask]
186190
c2 = coord_grid[1][mask]
187191
coordinates = np.dstack((c1, c2)).reshape(-1, 2)

tests/testing/test_results.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -390,11 +390,11 @@ def test_allclose_minimal_xy_different(self, tmp_path, actual_dir, expected_dir)
390390
with raises_assertion_error_or_not(
391391
r"Issues for file 'data.nc'.*"
392392
r"Issues for variable 'b1'.*"
393-
r"t 0: value difference min:1.0, max: 1.0, mean: 1.0, var: 0.0.*"
393+
r"t 0: value difference exceeds tolerance \(rtol 1e-06, atol 1e-06\), min:1.0, max: 1.0, mean: 1.0, var: 0.0.*"
394394
r"t 0: differing pixels: 20/20 \(100.0%\), spread over 100.0% of the area.*"
395-
r"t 1: value difference min:1.0, max: 1.0, mean: 1.0, var: 0.0.*"
395+
r"t 1: value difference exceeds tolerance \(rtol 1e-06, atol 1e-06\), min:1.0, max: 1.0, mean: 1.0, var: 0.0.*"
396396
r"t 1: differing pixels: 20/20 \(100.0%\), spread over 100.0% of the area.*"
397-
r"t 2: value difference min:1.0, max: 1.0, mean: 1.0, var: 0.0.*"
397+
r"t 2: value difference exceeds tolerance \(rtol 1e-06, atol 1e-06\), min:1.0, max: 1.0, mean: 1.0, var: 0.0.*"
398398
r"t 2: differing pixels: 20/20 \(100.0%\), spread over 100.0% of the area"
399399
):
400400
assert_job_results_allclose(actual=actual_dir, expected=expected_dir, tmp_path=tmp_path)
@@ -432,7 +432,7 @@ def test_allclose_minimal_xy_different_small_area(self, tmp_path, actual_dir, ex
432432
with raises_assertion_error_or_not(
433433
r"Issues for file 'data.nc'.*"
434434
r"Issues for variable 'b2'.*"
435-
r"t 2: value difference min:33.0, max: 42.0, mean: 37.5, var: 11.2.*"
435+
r"t 2: value difference exceeds tolerance \(rtol 1e-06, atol 1e-06\), min:33.0, max: 42.0, mean: 37.5, var: 11.2.*"
436436
r"t 2: differing pixels: 4/20 \(20.0%\), spread over 8.3% of the area"
437437
):
438438
assert_job_results_allclose(actual=actual_dir, expected=expected_dir, tmp_path=tmp_path)

0 commit comments

Comments
 (0)