What's Changed
Breaking Changes
GaussianProcessSurrogateno longer automatically adds a task kernel in multi-task
scenarios. Custom kernel architectures must now explicitly include the task kernel,
e.g. viaICMKernelFactory.parameter_cartesian_prod_pandasandparameter_cartesian_prod_polarsmoved
frombaybe.searchspace.discretetobaybe.searchspace.utilsContinuousLinearConstraint.to_botorchnow returns a collection of constraint tuples
instead of a single tuple (needed for interpoint constraints)Kernel.to_gpytorchnow takes aSearchSpaceinstead of explicitard_num_dims,
batch_shapeandactive_dimsarguments, as kernels now automatically adjust this
configuration to the given search spaceKernelFactorynow obeys the more generalGPComponentFactoryProtocol
Added
- Support for Python 3.14
- Support for pandas 3
Settingsclass 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_SMOOTHEDandHVARFNERpresets for
GaussianProcessSurrogateDiscreteBatchConstraintfor ensuring all recommendations in a batch share
the same value for a specified discrete parameter- Interpoint constraints for continuous search spaces
identify_non_dominated_configurationsmethod toCampaignandObjective
for determining the Pareto frontTypeSelectorandNameSelectorclasses for parameter selection in kernel factoriesparameter_namesattribute to basic kernels for controlling the considered parametersParameterKindflag enum for classifying parameters by their role and automatic
parameter kind validation in kernel factoriesIndexKernelandPositiveIndexKernelclasses- Addition and multiplication operators for kernel objects, enabling kernel
composition via+(sum) and*(product), as well asconstant * kernel
for creating aScaleKernelwith 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_implementationproperty onDiscreteConstraintallow_missingflag onDiscreteConstraint.get_invalidandget_validzizmorpre-commit hook for static analysis of GitHub Actions workflows
Changed
- The
BAYBEGP preset now dispatches between theCHENpreset (when a
SubstanceParameteris present) and custom dimension-scaled Gamma priors (otherwise) - Default transfer learning kernel changed from
IndexKerneltoPositiveIndexKernel,
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 onAutoBoollogic, providing
well-defined Boolean values at query time while exposing theAUTOoption 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.recommendcases ContinuousCardinalityConstraintnow works in hybrid search spacesSHAPInsightbreaking withnumpy>=2.4due to no longer accepted implicit array to
scalar conversion- Using
np.isclosefor assessing equality ofIntervalbounds instead of hard
equality check - Typo in
_FixedNumericalContinuousParameterwhereis_numericwas used
instead ofis_numerical
Removed
parallel_runsargument fromsimulate_scenarios, since parallelization
can now be conveniently controlled via the newSettingsmechanismmake_gp_from_presetutility function, since the same functionality is offered by
GaussianProcessSurrogate.from_preset
Deprecations
BotorchRecommender.max_n_subspaceshas been renamed tomax_n_subsetsset_random_seedandtemporary_seedutility functions- Using a custom kernel with
GaussianProcessSurrogatein a multi-task context now
raises aDeprecationErrorto alert users about the changed kernel logic. This can
be suppressed by setting theBAYBE_DISABLE_CUSTOM_KERNEL_WARNINGenvironment
variable to a truthy value - The environment variables
BAYBE_NUMPY_USE_SINGLE_PRECISION/BAYBE_TORCH_USE_SINGLE_PRECISIONhave been
replaced with the variables
BAYBE_USE_SINGLE_PRECISION_NUMPY/BAYBE_USE_SINGLE_PRECISION_TORCHlinked to the
correspondinguse_single_precision_numpy/use_single_precision_torchattributes of
the newSettingsclass - The environment variable
BAYBE_DEACTIVATE_POLARShas been replaced with
BAYBE_USE_POLARSlinked to theuse_polarsattribute of the newSettingsclass - The environment variable
BAYBE_PARALLEL_SIMULATION_RUNShas been replaced with
BAYBE_PARALLELIZE_SIMULATION_RUNSlinked to theparallelize_simulation_runs
attribute of the newSettingsclass
Expired Deprecations (from 0.11.*)
register_custom_architecturedecoratorBayesianRecommender.surrogate_modelattributeContinuousLinearEqualityConstraint/ContinuousLinearInequalityConstraintclasses
Merged Pull Requests
- Enable Python 3.14 by @AdrianSosic in #716
- Drop pydoclint link by @AdrianSosic in #730
- Bump SHAP to fix Audit by @Scienfitz in #729
- Use Custom instead of OHE encoded categorical parameter for Non-SHAP tests by @Scienfitz in #732
- Update Copyright by @Scienfitz in #736
- Add identify_non_dominated_configurations by @myrazma in #714
- Settings by @AdrianSosic in #662
- Add Continuous Interpoint Constraints by @AVHopp in #625
- GP Cleanup by @AdrianSosic in #743
- Hotfix 0.14.3 by @AdrianSosic in #744
- Fix Minor Docs Issues by @Scienfitz in #741
- Fix Shap for Numpy 2.4+ by @Scienfitz in #751
- Remove MAPLE test skips by @Scienfitz in #759
- Drop unused type ignores by @AdrianSosic in #758
- Mini PR for images required for documentation PR by @Hrovatin in #726
- Add generic GP components by @AdrianSosic in #746
- Index Kernel by @AdrianSosic in #747
- Remove polars override in docbuilding by @Scienfitz in #761
- Update Action Versions by @Scienfitz in #762
- Reduce Warnings by @Scienfitz in #766
- Pin onnxruntime version due to lacking python 3.10 support by @AVHopp in #772
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #777
- AutoBool allow_* flags by @AdrianSosic in #742
- Exclude packages that are newer than 7 days for installation by @AVHopp in #771
- Add Convenience Kernel Arithmetic by @Scienfitz in #763
- Kernel dimension control by @AdrianSosic in #748
- Use
np.isclosefor checking bounds ofIntervalby @AVHopp in #768 - Improve docs accessibility by @Hrovatin in #676
- Update import whitelist by @AdrianSosic in #782
- Parameter validation for kernel factories by @AdrianSosic in #776
- Add inverted and shifted hartmann benchmark by @Hrovatin in #674
- Add AGENTS.md by @Scienfitz in #769
- Adaptive hyper-prior: CHENKernelFactory by @emiliencgm in #752
- Ignore Benchmarking Env Var by @fabianliebig in #785
- Goodbye pytest warnings by @AdrianSosic in #781
- Smartly Apply Constraints During Cartesian Product by @Scienfitz in #773
- GP Criterion by @AdrianSosic in #789
- Botorch preset by @AdrianSosic in #757
- Clean up settings by @AdrianSosic in #774
- Update GitHub Actions by @AdrianSosic in #802
- Transfer Learning Decorator by @AdrianSosic in #790
- Lock docs pipeline by @AdrianSosic in #805
- Surrogates User Guide by @AdrianSosic in #801
- Zizmor by @AdrianSosic in #808
- Handle hypothesis float overflow by @AdrianSosic in #806
- Sigstore attestations by @AdrianSosic in #809
- Factory Cleanup by @AdrianSosic in #804
- Hvarfner preset by @AdrianSosic in #807
- Fix Dependabot Config by @AdrianSosic in #811
- Enable Pandas 3 by @Scienfitz in #803
- Beef up
GaussianProcessSurrogateby @AdrianSosic in #745 - Use
PositiveIndexKernelas default transfer learning kernel by @kalama-ai in #810 - Add
DiscreteBatchConstraintby @Scienfitz in #765 - Fix some Benchmark Bugs by @Scienfitz in #816
- Split user guide by @AdrianSosic in #815
- Expire 0.11.* deprecations by @AdrianSosic in #813
- Include
__call__function asspecial-memberin documentation by @AVHopp in #812 - Fix wrong comment in settings docs by @AdrianSosic in #822
- Make BayBE GP Defaults Dispatch Based on SubstanceParameter Presence by @Scienfitz in #820
- Release 0.15 by @Scienfitz in #825
New Contributors
- @myrazma made their first contribution in #714
- @emiliencgm made their first contribution in #752
Full Changelog: 0.14.3...0.15.0