From 082641c5ef691bc743495b70035df8e1dfacd3d8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 7 Jan 2026 02:08:17 +0100 Subject: [PATCH] feat(quickadapter): add logging for invalid fit data in ExtremaWeightingTransformer Add warning when fit() receives data with no finite values, improving observability of data quality issues. Uses fallback [0.0, 1.0] to prevent pipeline crashes while alerting users to upstream preprocessing problems. --- .../strategies/ExtremaWeightingTransformer.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/quickadapter/user_data/strategies/ExtremaWeightingTransformer.py b/quickadapter/user_data/strategies/ExtremaWeightingTransformer.py index 613472f..89c727b 100644 --- a/quickadapter/user_data/strategies/ExtremaWeightingTransformer.py +++ b/quickadapter/user_data/strategies/ExtremaWeightingTransformer.py @@ -1,5 +1,6 @@ from typing import Any, Final, Literal +import logging import numpy as np import scipy as sp from datasieve.transforms.base_transform import ( @@ -16,6 +17,8 @@ from sklearn.preprocessing import ( StandardScaler, ) +logger = logging.getLogger(__name__) + WeightStrategy = Literal[ "none", "amplitude", @@ -355,7 +358,14 @@ class ExtremaWeightingTransformer(BaseTransform): values = np.asarray(X, dtype=float) finite_values = values[np.isfinite(values)] - fit_values = finite_values if finite_values.size > 0 else np.array([0.0, 1.0]) + if finite_values.size == 0: + logger.warning( + "Invalid fit data: no finite values found in X, " + "using default fallback [0.0, 1.0]" + ) + fit_values = np.array([0.0, 1.0]) + else: + fit_values = finite_values self._fit_standardization(fit_values) -- 2.43.0