From 93ad163d4c950f2f4e0448e4ed12f14f393a250f Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Thu, 19 Feb 2026 00:21:54 +0100 Subject: [PATCH] style(zigzag): harmonize minmax_scale with codebase conventions --- quickadapter/user_data/strategies/Utils.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/quickadapter/user_data/strategies/Utils.py b/quickadapter/user_data/strategies/Utils.py index 47d950e..8351eb1 100644 --- a/quickadapter/user_data/strategies/Utils.py +++ b/quickadapter/user_data/strategies/Utils.py @@ -1733,25 +1733,21 @@ def zigzag( candidate_pivot_value_log = np.nan def minmax_scale(values: list[float]) -> list[float]: - """Scale values to [0, 1] range preserving NaN. - - Edge cases: - - Empty: return [] - - All NaN: return all NaN - - All same finite value: return [0.5, 0.5, ...] - - Normal: return MinMaxScaler result as list - """ if not values: return values + arr = np.asarray(values, dtype=float) valid_mask = np.isfinite(arr) if not valid_mask.any(): - return values # all NaN → preserve - lo, hi = np.nanmin(arr), np.nanmax(arr) - if np.isclose(lo, hi): + return values + + min_val = np.nanmin(arr) + max_val = np.nanmax(arr) + if np.isclose(min_val, max_val): return [0.5 if np.isfinite(v) else np.nan for v in values] - scaled = (arr - lo) / (hi - lo) - return scaled.tolist() + + scaled_arr = (arr - min_val) / (max_val - min_val) + return scaled_arr.tolist() def calculate_pivot_metrics( *, -- 2.53.0