diff --git a/src/optimagic/parameters/conversion.py b/src/optimagic/parameters/conversion.py index d087afcfd..602b545b7 100644 --- a/src/optimagic/parameters/conversion.py +++ b/src/optimagic/parameters/conversion.py @@ -5,6 +5,7 @@ import numpy as np +from optimagic.parameters.bounds import get_internal_bounds from optimagic.parameters.constraints import resolve_constraints, to_legacy_dicts from optimagic.parameters.scale_conversion import get_scale_converter from optimagic.parameters.space_conversion import InternalParams, get_space_converter @@ -185,15 +186,7 @@ def _fast_derivative_to_internal( has_transforming_constraints=False, ) - if bounds is None or bounds.lower is None: - lower_bounds = None - else: - lower_bounds = bounds.lower.astype(float) - - if bounds is None or bounds.upper is None: - upper_bounds = None - else: - upper_bounds = bounds.upper.astype(float) + lower_bounds, upper_bounds = get_internal_bounds(params=params, bounds=bounds) internal_params = InternalParams( values=params.astype(float), diff --git a/tests/optimagic/parameters/test_conversion.py b/tests/optimagic/parameters/test_conversion.py index 68bc47828..dc8a6fd3c 100644 --- a/tests/optimagic/parameters/test_conversion.py +++ b/tests/optimagic/parameters/test_conversion.py @@ -13,7 +13,7 @@ from optimagic.typing import AggregationLevel -def test_get_converter_fast_case(): +def test_get_converter_fast_path(): converter, internal = get_converter( params=np.arange(3), constraints=None, @@ -35,6 +35,21 @@ def test_get_converter_fast_case(): ) +@pytest.mark.parametrize("container", [list, tuple, np.array]) +def test_get_converter_fast_path_with_sequence_bounds(container): + converter, internal = get_converter( + params=np.arange(3), + constraints=None, + bounds=Bounds(lower=container([-1, -2, -3]), upper=container([1, 2, 3])), + func_eval=3, + derivative_eval=None, + solver_type=AggregationLevel.SCALAR, + ) + + aaae(internal.lower_bounds, np.array([-1, -2, -3])) + aaae(internal.upper_bounds, np.array([1, 2, 3])) + + def test_get_converter_with_constraints_and_bounds(): bounds = Bounds( lower=np.array([-1, -np.inf, -np.inf]),