@@ -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