nlsq.precision.bound_inference.merge_bounds

nlsq.precision.bound_inference.merge_bounds(inferred_bounds, user_bounds=None)[source]

Merge user-provided bounds with inferred bounds.

User-provided bounds take precedence. If user provides partial bounds (e.g., only lower or only for some parameters), the remaining bounds are filled from inferred bounds.

Parameters:
  • inferred_bounds (tuple of ndarray) – Inferred (lower, upper) bounds

  • user_bounds (tuple of array_like or None, optional) – User-provided (lower, upper) bounds. Can contain -np.inf or np.inf for unbounded parameters.

Returns:

  • lower_bounds (ndarray) – Merged lower bounds

  • upper_bounds (ndarray) – Merged upper bounds

Return type:

tuple[ndarray, ndarray]

Examples

>>> inferred = (np.array([0, 0, 0]), np.array([10, 5, 10]))
>>> user = (np.array([1, -np.inf, 0]), np.array([5, np.inf, 10]))
>>> merged = merge_bounds(inferred, user)
>>> print(merged)
(array([1., 0., 0.]), array([5., 5., 10.]))

Notes

  • If user provides -np.inf for lower bound, use inferred lower bound

  • If user provides np.inf for upper bound, use inferred upper bound

  • Scalar user bounds are broadcast to all parameters