summaryrefslogtreecommitdiff
path: root/lib/functions.py
diff options
context:
space:
mode:
authorBirte Kristina Friesel <birte.friesel@uos.de>2024-12-12 18:21:08 +0100
committerBirte Kristina Friesel <birte.friesel@uos.de>2024-12-12 18:21:08 +0100
commit54cb9c0f47b17c57e30c9b8e2b0feb9f11623a09 (patch)
tree89270f88fc1247cc8be418d6cd77a3cd975bfd0f /lib/functions.py
parent50606967e2ae749bf9ab3fa213a7da6e89b0aeed (diff)
Support lower regression bounds other than -∞
DFATOOL_ULS_MIN_BOUND=0 is especially useful in many cases
Diffstat (limited to 'lib/functions.py')
-rw-r--r--lib/functions.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/functions.py b/lib/functions.py
index ae8283a..187e6ff 100644
--- a/lib/functions.py
+++ b/lib/functions.py
@@ -27,6 +27,8 @@ dfatool_rmt_relevance_threshold = float(
os.getenv("DFATOOL_RMT_RELEVANCE_THRESHOLD", "0.5")
)
+dfatool_uls_min_bound = float(os.getenv("DFATOOL_ULS_MIN_BOUND", -np.inf))
+
if dfatool_preproc_relevance_method == "mi":
import sklearn.feature_selection
@@ -97,7 +99,7 @@ class ParamFunction:
num_vars,
repr_str=None,
ini=None,
- bounds=((-np.inf, -np.inf), (np.inf, np.inf)),
+ bounds=((dfatool_uls_min_bound, dfatool_uls_min_bound), (np.inf, np.inf)),
):
"""
Create function object suitable for regression analysis.
@@ -1927,7 +1929,7 @@ class AnalyticFunction(ModelFunction):
upper_bounds.append(np.max(X[param_index]))
self.model_args[i] = np.mean(X[param_index])
else:
- lower_bounds.append(-np.inf)
+ lower_bounds.append(dfatool_uls_min_bound)
upper_bounds.append(np.inf)
error_function = lambda P, X, y: self._function(P, X) - y
try:
@@ -2144,7 +2146,14 @@ class analytic:
lambda model_param: True,
3,
repr_str="β₀ + β₁ * roofline(x, β₂)",
- bounds=((-np.inf, -np.inf, -np.inf), (np.inf, np.inf, np.inf)),
+ bounds=(
+ (
+ dfatool_uls_min_bound,
+ dfatool_uls_min_bound,
+ dfatool_uls_min_bound,
+ ),
+ (np.inf, np.inf, np.inf),
+ ),
),
# "num0_8": ParamFunction(
# lambda reg_param, model_param: reg_param[0]