Skip to content

0.15.0

Latest

Choose a tag to compare

@AdrianSosic AdrianSosic released this 11 Jun 13:54
3d22aed

What's Changed

Breaking Changes

  • GaussianProcessSurrogate no longer automatically adds a task kernel in multi-task
    scenarios. Custom kernel architectures must now explicitly include the task kernel,
    e.g. via ICMKernelFactory.
  • parameter_cartesian_prod_pandas and parameter_cartesian_prod_polars moved
    from baybe.searchspace.discrete to baybe.searchspace.utils
  • ContinuousLinearConstraint.to_botorch now returns a collection of constraint tuples
    instead of a single tuple (needed for interpoint constraints)
  • Kernel.to_gpytorch now takes a SearchSpace instead of explicit ard_num_dims,
    batch_shape and active_dims arguments, as kernels now automatically adjust this
    configuration to the given search space
  • KernelFactory now obeys the more general GPComponentFactoryProtocol

Added

  • Support for Python 3.14
  • Support for pandas 3
  • Settings class for unified and streamlined settings management
  • Settings options to (de-)activate recommendation caching / dataframe preprocessing
  • Settings option for random seed control
  • Gaussian process component factories
  • Support for GPyTorch objects (kernels, means, likelihood) as Gaussian process
    components, enabling full low-level customization
  • Configurable fitting criterion for Gaussian process hyperparameter optimization
  • Factories for all Gaussian process components
  • BOTORCH, CHEN, EDBO, EDBO_SMOOTHED and HVARFNER presets for
    GaussianProcessSurrogate
  • DiscreteBatchConstraint for ensuring all recommendations in a batch share
    the same value for a specified discrete parameter
  • Interpoint constraints for continuous search spaces
  • identify_non_dominated_configurations method to Campaign and Objective
    for determining the Pareto front
  • TypeSelector and NameSelector classes for parameter selection in kernel factories
  • parameter_names attribute to basic kernels for controlling the considered parameters
  • ParameterKind flag enum for classifying parameters by their role and automatic
    parameter kind validation in kernel factories
  • IndexKernel and PositiveIndexKernel classes
  • Addition and multiplication operators for kernel objects, enabling kernel
    composition via + (sum) and * (product), as well as constant * kernel
    for creating a ScaleKernel with a fixed output scale
  • Transfer learning benchmarks for shifted and inverted Hartmann functions
  • Coding convention instructions for agentic developers (AGENTS.md, CLAUDE.md)
  • has_polars_implementation property on DiscreteConstraint
  • allow_missing flag on DiscreteConstraint.get_invalid and get_valid
  • zizmor pre-commit hook for static analysis of GitHub Actions workflows

Changed

  • The BAYBE GP preset now dispatches between the CHEN preset (when a
    SubstanceParameter is present) and custom dimension-scaled Gamma priors (otherwise)
  • Default transfer learning kernel changed from IndexKernel to PositiveIndexKernel,
    enforcing positive task correlations
  • Discrete search space construction now applies constraints incrementally during
    Cartesian product building, significantly reducing memory usage and construction
    time for constrained spaces
  • "User Guide" section has been split into "Components" and "Concepts"
  • The Campaign.allow_* flag mechanism is now based on AutoBool logic, providing
    well-defined Boolean values at query time while exposing the AUTO option to the user
  • Polars path in discrete search space construction now builds the Cartesian product
    only for parameters involved in Polars-capable constraints, merging the rest
    incrementally via pandas
  • Minimum required pandas version increased to 2.1.0

Fixed

  • Broken cache validation for certain Campaign.recommend cases
  • ContinuousCardinalityConstraint now works in hybrid search spaces
  • SHAPInsight breaking with numpy>=2.4 due to no longer accepted implicit array to
    scalar conversion
  • Using np.isclose for assessing equality of Interval bounds instead of hard
    equality check
  • Typo in _FixedNumericalContinuousParameter where is_numeric was used
    instead of is_numerical

Removed

  • parallel_runs argument from simulate_scenarios, since parallelization
    can now be conveniently controlled via the new Settings mechanism
  • make_gp_from_preset utility function, since the same functionality is offered by
    GaussianProcessSurrogate.from_preset

Deprecations

  • BotorchRecommender.max_n_subspaces has been renamed to max_n_subsets
  • set_random_seed and temporary_seed utility functions
  • Using a custom kernel with GaussianProcessSurrogate in a multi-task context now
    raises a DeprecationError to alert users about the changed kernel logic. This can
    be suppressed by setting the BAYBE_DISABLE_CUSTOM_KERNEL_WARNING environment
    variable to a truthy value
  • The environment variables
    BAYBE_NUMPY_USE_SINGLE_PRECISION/BAYBE_TORCH_USE_SINGLE_PRECISION have been
    replaced with the variables
    BAYBE_USE_SINGLE_PRECISION_NUMPY/BAYBE_USE_SINGLE_PRECISION_TORCH linked to the
    corresponding use_single_precision_numpy/use_single_precision_torch attributes of
    the new Settings class
  • The environment variable BAYBE_DEACTIVATE_POLARS has been replaced with
    BAYBE_USE_POLARS linked to the use_polars attribute of the new Settings class
  • The environment variable BAYBE_PARALLEL_SIMULATION_RUNS has been replaced with
    BAYBE_PARALLELIZE_SIMULATION_RUNS linked to the parallelize_simulation_runs
    attribute of the new Settings class

Expired Deprecations (from 0.11.*)

  • register_custom_architecture decorator
  • BayesianRecommender.surrogate_model attribute
  • ContinuousLinearEqualityConstraint/ContinuousLinearInequalityConstraint classes

Merged Pull Requests

New Contributors

Full Changelog: 0.14.3...0.15.0