diff --git a/bayes_opt/domain_reduction.py b/bayes_opt/domain_reduction.py index 39657f28..c5be3195 100644 --- a/bayes_opt/domain_reduction.py +++ b/bayes_opt/domain_reduction.py @@ -8,6 +8,7 @@ from __future__ import annotations from abc import ABC, abstractmethod +from collections.abc import Iterable, Mapping, Sequence from typing import TYPE_CHECKING, Any from warnings import warn @@ -16,8 +17,6 @@ from bayes_opt.target_space import TargetSpace if TYPE_CHECKING: - from collections.abc import Iterable, Mapping, Sequence - from numpy.typing import NDArray Float = np.floating[Any] @@ -66,12 +65,14 @@ def __init__( gamma_osc: float = 0.7, gamma_pan: float = 1.0, eta: float = 0.9, - minimum_window: NDArray[Float] | Sequence[float] | float | Mapping[str, float] | None = 0.0, + minimum_window: NDArray[Float] | Sequence[float] | Mapping[str, float] | float = 0.0, ) -> None: self.gamma_osc = gamma_osc self.gamma_pan = gamma_pan self.eta = eta - if isinstance(minimum_window, dict): + + self.minimum_window_value: NDArray[Float] | Sequence[float] | float + if isinstance(minimum_window, Mapping): self.minimum_window_value = [ item[1] for item in sorted(minimum_window.items(), key=lambda x: x[0]) ] @@ -90,8 +91,9 @@ def initialize(self, target_space: TargetSpace) -> None: self.original_bounds = np.copy(target_space.bounds) self.bounds = [self.original_bounds] + self.minimum_window: NDArray[Float] | Sequence[float] # Set the minimum window to an array of length bounds - if isinstance(self.minimum_window_value, (list, np.ndarray)): + if isinstance(self.minimum_window_value, (Sequence, np.ndarray)): if len(self.minimum_window_value) != len(target_space.bounds): error_msg = "Length of minimum_window must be the same as the number of parameters" raise ValueError(error_msg)