From 87df75786a139da908eca8ca63943b80f4b4f167 Mon Sep 17 00:00:00 2001 From: Awa Khouna Date: Tue, 26 Aug 2025 15:55:54 -0400 Subject: [PATCH] fix: adjust epsilon value for improved numerical stability in format_value method --- ocean/cp/_explanation.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ocean/cp/_explanation.py b/ocean/cp/_explanation.py index 4bb175d..6495d88 100644 --- a/ocean/cp/_explanation.py +++ b/ocean/cp/_explanation.py @@ -11,7 +11,7 @@ class Explanation(Mapper[FeatureVar], BaseExplanation): - _epsilon: float = 1e-3 + _epsilon: float = 1e-6 _x: Array1D = np.zeros((0,), dtype=int) def vget(self, i: int) -> cp.IntVar: @@ -73,6 +73,7 @@ def get(v: FeatureVar) -> Key | Number: return self.reduce(get) def format_value(self, f: int, idx: int, levels: list[float]) -> float: + eps = min(self._epsilon, 0.5 * min(np.diff(levels))) if self.query.shape[0] == 0: return float(levels[idx] + levels[idx + 1]) / 2 j = 0 @@ -82,9 +83,9 @@ def format_value(self, f: int, idx: int, levels: list[float]) -> float: if j == idx: value = float(query_arr[f]) elif j < idx: - value = float(levels[idx]) + self._epsilon + value = float(levels[idx]) + eps else: - value = float(levels[idx + 1]) - self._epsilon + value = float(levels[idx + 1]) - eps return value @property