Skip to content

Commit 0e23cfc

Browse files
committed
handle nan in coloramp
1 parent fe3eeab commit 0e23cfc

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

webgpu/colormap.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,20 @@ class ColorbarUniforms(UniformBase):
4141
def _clean_autoscale_range(minval, maxval):
4242
"""Clean up autoscale min/max values for display.
4343
44+
- Handles invalid/uninitialized ranges (NaN, inf, inverted sentinels).
4445
- Rounds values that are negligibly small relative to the range to zero
4546
(e.g. 1e-13 to 1 becomes 0 to 1).
4647
- Handles constant functions (min == max) by providing a sensible range
4748
to avoid numerical flickering.
4849
"""
50+
import math
51+
52+
# Handle NaN, inf, or inverted ranges (e.g. from uninitialized sentinels)
53+
if (math.isnan(minval) or math.isnan(maxval)
54+
or math.isinf(minval) or math.isinf(maxval)
55+
or minval > maxval):
56+
return 0.0, 1.0
57+
4958
range_size = maxval - minval
5059
abs_max_val = max(abs(minval), abs(maxval))
5160

@@ -145,7 +154,16 @@ def widen_range(self, minval, maxval, timestamp=None):
145154
146155
On the first call with a new timestamp, resets to inverted range so
147156
each frame starts fresh. Subsequent calls in the same frame widen.
157+
Ignores invalid values (NaN, inf, or sentinel 1e99/-1e99 pairs).
148158
"""
159+
import math
160+
161+
# Skip invalid values that come from uninitialized/failed data
162+
if (math.isnan(minval) or math.isnan(maxval)
163+
or math.isinf(minval) or math.isinf(maxval)
164+
or minval > maxval):
165+
return
166+
149167
ts = getattr(self, '_autoscale_ts', None)
150168
if timestamp is not None and timestamp != ts:
151169
self._autoscale_ts = timestamp

0 commit comments

Comments
 (0)