"""Decodes the release's fixed-point integer encoding for shieldings and similar fields. Values are stored as whole numbers equal to the real value times `scale`, with a reserved marker for values that were never computed. This turns them back into real values (NaN where missing); float input passes through untouched, so the same decoder reads either the released int32 encoding or an older plain-float copy. """ import numpy as np FIXED_POINT_SCALE = 1e4 MISSING_MARKER = -2147483648 def decode_fixed_point(values, scale=FIXED_POINT_SCALE, missing_marker=MISSING_MARKER): """Convert fixed-point integers back to real-valued floats, mapping the missing marker to NaN.""" values = np.asarray(values) if np.issubdtype(values.dtype, np.integer): out = values.astype(np.float64) / scale out[values == missing_marker] = np.nan return out return np.asarray(values, dtype=np.float64)