Skip to content

Commit ce0cc5f

Browse files
committed
Issue #761 better diff for apex reference check (fixed boundary value issue)
1 parent 916b868 commit ce0cc5f

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

openeo/testing/results.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,16 +97,19 @@ def ascii_art(diff_data: DataArray) -> str:
9797
if data_max == 0:
9898
data_max = 1
9999
grayscale_characters = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. "
100-
coarsened = diff_data.coarsen(dim={"x": scale, "y": scale}, boundary="pad").all()
101-
if coarsened.dims[0] != "y":
102-
coarsened = coarsened.transpose()
100+
coarsened = diff_data.coarsen(dim={"x": scale, "y": scale}, boundary="pad").mean()
101+
coarsened = coarsened.transpose("y", "x", ...)
103102
top = "┌" + "─" * coarsened.sizes["x"] + "┐\n"
104103
bottom = "\n└" + "─" * coarsened.sizes["x"] + "┘"
105104

106105
def pixelChar(v) -> str:
107-
i = int(v * 70 / data_max)
106+
if np.isnan(v):
107+
return " "
108+
i = int(v * 69 / data_max)
108109
if v > 0 and i == 0:
109110
i = 1
111+
else:
112+
i = min(69, i)
110113
return grayscale_characters[69 - i]
111114

112115
return top + "\n".join(["│" + "".join([pixelChar(v) for v in row]) + "│" for row in coarsened]) + bottom
@@ -169,18 +172,14 @@ def _compare_xarray_dataarray_xy(
169172

170173
if diff_pixel_count > 0:
171174
diff_pixel_percentage = round(diff_pixel_count * 100 / total_pixel_count, 1)
172-
diff_mean = round(diff_data.mean().item(), 1)
173-
diff_var = round(diff_data.var().item(), 1)
175+
diff_mean = round(diff_data.mean().item(), 2)
176+
diff_var = round(diff_data.var().item(), 2)
174177

175178
key = ",".join([f"{k} {str(v1)}" for k, v1 in indexers.items()])
176179
issues.append(
177180
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}"
178181
)
179182

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

186185
mask = diff_data.notnull()
@@ -189,6 +188,11 @@ def _compare_xarray_dataarray_xy(
189188
c1 = coord_grid[0][mask]
190189
c2 = coord_grid[1][mask]
191190
coordinates = np.dstack((c1, c2)).reshape(-1, 2)
191+
192+
art = ascii_art(diff_data)
193+
print(f"Difference ascii art for {key}")
194+
print(art)
195+
192196
if len(coordinates) > 2:
193197
hull = ConvexHull(coordinates)
194198
area = hull.volume

0 commit comments

Comments
 (0)