From 9d3da81247c5de80260a3757ec78e988be340907 Mon Sep 17 00:00:00 2001 From: Rahil Doshi <rahil.doshi@fau.de> Date: Fri, 28 Feb 2025 17:47:39 +0100 Subject: [PATCH] Enhance check_equidistant with configurable tolerance parameters --- src/pymatlib/core/data_handler.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pymatlib/core/data_handler.py b/src/pymatlib/core/data_handler.py index 5c4232e..5cc1152 100644 --- a/src/pymatlib/core/data_handler.py +++ b/src/pymatlib/core/data_handler.py @@ -258,18 +258,20 @@ def thousand_times(q: Union[float, np.ndarray]) -> Union[float, np.ndarray]: # Moved from interpolators.py to data_handler.py -def check_equidistant(temp: np.ndarray) -> float: +def check_equidistant(temp: np.ndarray, rtol: float = 1e-5, atol: float = 1e-10) -> float: """ Tests if the temperature values are equidistant. :param temp: Array of temperature values. + :param rtol: Relative tolerance for comparison. + :param atol: Absolute tolerance for comparison. :return: The common difference if equidistant, otherwise 0. """ if len(temp) < 2: - raise ValueError(f"{temp} array has length < 2") + raise ValueError(f"Array has length < 2") temperature_diffs = np.diff(temp) - if np.allclose(temperature_diffs, temperature_diffs[0], atol=1e-10): + if np.allclose(temperature_diffs, temperature_diffs[0], rtol=rtol, atol=atol): return float(temperature_diffs[0]) return 0.0 -- GitLab