Releases: emdgroup/baybe
Releases · emdgroup/baybe
0.15.0
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 https://github.com/emdgroup/baybe/pull/...
0.14.3
What's Changed
Fixed
- Deserialization of
NumericalTargetobjects using the optionalconstructorfield - Broken cache validation for certain
Campaign.recommendcases
Merged Pull Requests
- Fix constructor deserialization of
NumericalTargetby @AdrianSosic in #740
Full Changelog: 0.14.2...0.14.3
0.14.2
What's Changed
Added
NumericalTarget.match_*constructors now accept amismatch_insteadargument. If
set toTrue, targets seek to avoid the givenmatch_valueinstead of matching itNumericalTarget.match_*constructors now accept amatch_modeargument. While"="
corresponds to traditional set point matching, values">="and"<="indicate that
the entire associated interval is a valid match, resulting in identical transformed
target values as for thematch_valueitselfNumericalTarget.normalized_rampandNumericalTarget.normalized_sigmoid
constructors now accept aminimizeargument for controlling the optimization
direction of the targetNumericalTarget.constructor_infoproperty, which returns what constructor and
arguments were used to create the objectNumericalTarget.from_constructor_infoconvenience constructor for creating a
target from existing constructor details- Transfer learning regression benchmarks infrastructure for evaluating TL model
performance on regression tasks (direct arylation and aryl halide) - Scalar addition and subtraction for
Intervalobjects - Methods
hshiftandvshifttoTransformationfor conveniently performing
horizontal / vertical shifts Objective.to_botorch_posterior_transformfor use of affine transformations with
analytical acquisition functionsDesirabilityObjective.normalized_weightsproperty- Possibility to set
n_mc_iterationstoNoneinsimulate_scenarios, which
increments the simulation random seed per initial data set without having to execute
the full Cartesian product of all (seed, data)-configurations Campaign.posteriorandSurrogate.posteriornow accept ajointargument
Changed
- Creating one-element composite transformations now returns the contained
transformation directly - Dataframe-to-tensor conversion now yields contiguous tensors, improving
reproducibility of downstream operations
Fixed
- Random seed not entering simulation when explicitly passed to
simulate_scenarios DesirabilityObjectivenow properly interplays with analytical acquisition functionsfarthest_point_samplingnow correctly handles predefinedinitializationindicesSearchSpace.from_dataframenow validates that dataframes contain only
active_values, raisingIncompatibilityErrorotherwise- False-negative surrogate cache hits when using multi-model surrogates
IndependentGaussianSurrogatemodels now properly refuse batch recommendation
regardless of their context (e.g. when used within aCompositeSurrogate)CompositeSurrogatemodels are now fit on the correct input when using
pre-transformations in the objectiveIndependentGaussianSurrogatemodels now correctly reject batch posterior evaluations
by throwing anIncompatibleSurrogateError. This means that.posteriorcalls that
worked previously may now require an explicitjoint=Falseargument.
Removed
AffinePosteriorTransformationclass (since BoTorch provides equivalent functionality)InvalidSurrogateModelErrorexception because there already exists a more appropriate
IncompatibleSurrogateErrorexception
Merged Pull Requests
- Add GPU testing workflows and add gpu tox configuration by @fabianliebig in #635
- Drop attrs typing workaround by @AdrianSosic in #600
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #663
- Mismatch Targets by @Scienfitz in #652
- Feature/initial example tl regression benchmark by @kalama-ai in #629
- Fix random seed handling in simulation by @AdrianSosic in #668
- Add minimal torch version required for benchmarks by @Hrovatin in #675
vshiftandhshiftforTransformationby @Scienfitz in #665- One-Sided Match Targets by @Scienfitz in #657
- Fix BoTorch-related typing by @AdrianSosic in #679
- Remove xfail for
test_kernel_assemblyby @Scienfitz in #685 - Extend scipy Import Whitelist by @Scienfitz in #686
- Add Aryl halides TL regression benchmarks by @kalama-ai in #669
- Add Contributor Thanks to README by @Scienfitz in #687
- Refactor dataframe conversion by @AdrianSosic in #671
- Improve Surrogate-Conti Limitations by @Scienfitz in #667
- Fix aryl alides TL regression benchmark by @kalama-ai in #692
- Posterior transform for objectives by @AdrianSosic in #672
- Fix
farthest_point_samplingandinitializationinterplay by @Scienfitz in #702 - Fix CI by @Scienfitz in #704
- Fix width issue in README.md by @AVHopp in #706
- Validate dataframe content against
active_valuesby @kalama-ai in #699 - Enable automatic random seeds for simulation by @AdrianSosic in #693
- Fix fpsample related things by @Scienfitz in #710
- Constructor Metadata (Lightweight) by @Scienfitz in #700
minimizeflag forNumericalTarget.normalized_*constructors by @AdrianSosic in #723- Surrogate caching for replicated models by @AdrianSosic in #682
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #720
- Release 0.14.2 by @AdrianSosic in #725
Full Changelog: 0.14.1...0.14.2
0.14.1
What's Changed
Added
to_jsonandfrom_jsonmethods now also natively support (de)serialization to/from
files and file-like objects
Changed
- Instead of requiring already read string representations of json files,
.from_json
now also supports file paths as argument and will read the file itself from_jsonnow strictly expects the source as a positional argumentto_jsonnow acceptskwargsand passes them tojson.dumps
Fixed
- Crash in
simulate_experimentwhen calculating cumulative best values for
batch_size>1 Campaign.allow_*flags now properly take into account recommendation caching- The campaign recommendation cache is now properly invalidated during context changes
Merged Pull Requests
- Fix Numerical Test Failures by @Scienfitz in #639
- Fix cumulative best in simulation by @Scienfitz in #643
- Delete backtesting Transfer Learning example by @AVHopp in #647
- Make
allow_*flags work with caching by @AdrianSosic in #655 - Post-Release 0.14.0 Fixes by @Scienfitz in #646
- Make
.from_jsonAccept File Paths by @Scienfitz in #653 - Add generic parameters to
to_json()method to be funneled tojson.dumps()by @dasmy in #656 - Release 0.14.1 by @Scienfitz in #659
Full Changelog: 0.14.0...0.14.1
0.14.0
What's Changed
Added
transformationssubpackage- New
NumericalTargetinterface, including advanced machinery for defining and
manipulating target transformations based on the newTransformationclass hierarchy match_bellandmatch_triangularconvenience constructors toNumericalTarget
for reproducing the legacyMATCHmodesnormalized_rampconvenience constructor toNumericalTargetfor reproducing the
legacy behavior when imposing bounds onMIN/MAXtargetsnormalized_sigmoid,match_absolute,match_quadraticandmatch_power
convenience constructors toNumericalTargetenabling additional matching/normalizing
behaviors- Full support for accessing posterior information of
NumericalTarget, i.e. now
including settings consideredMATCHmode in the legacy interface, as well as targets
used inDesirabilityObjective as_pre_transformationflag toDesirabilityObjectivefor controlling whether the
desirability transformation is applied before or after model fittingsupports_partial_measurementsproperty toObjectiveis_normalizedproperty toNumericalTargetnegate,normalize,abs,clamp,log,expandpowermethods to
NumericalTargetfor easy creation of transformed targets from existing ones- Addition and multiplication dunder methods (for scalar values) to
NumericalTarget get_imagemethod toNumericalTargetfor computing the images of transformed
target value ranges- Support for non-normalized targets in
DesirabilityObjective Objective.to_botorchmethod for converting objectives to BoTorchqEHVIandqLogEHVIacquisition functions (in addition to their noisy variants)- Tests for migrating to new
NumericalTargetinterface - API diagram in user guide
MetadataandMeasurableMetadataclasses providing optional information for BayBE
objectsObjectivenow has ametadataattribute as well as adescriptionpropertyTargetandParameternow have ametadataattribute as well asdescriptionand
unitpropertiesFPSRecommendernow optionally uses the fpsample library (if installed) with fallback
to internal implementation. The use offpsamplecan be deactivated by setting the
environment variableBAYBE_USE_FPSAMPLEfarthest_point_samplingnow also supports a collection of integers for
initialization, using them for pre-selecting points- Benchmarks can now run in different modes, store detailed machine information, and
local usage got new file naming and execution options
Changed
- The behavior of
NumericalTargetis no longer defined via amode(i.e.MIN,
MAX,MATCHin legacy interface) but controlled using a minimization flag and
corresponding target transformations. This allows for more flexible target
definitions, makes invalid target configurations unrepresentable, and is in line with
the definition of mathematical optimization problems. Also, it avoids the need to
explicitly specify an irrelevant optimization direction in the context of active
learning. - By default,
DesirabilityObjectivenow fits separate models for each target, rather
than modeling only the scalarized desirability value (see new
DesirabilityObjective.as_pre_transformationflag). As a result, posterior
evaluations now return information for each target individually, instead of just for
the desirability value. - Objective transformations (both tensor and dataframe based) now always use the Torch
computation route, avoiding the need for duplicated transformation logic - Specifying bounds for
Intervalis now optional unstructure_baseandget_base_structure_hook(de-)serialization utilities
have been replaced withunstructure_with_typeandmake_base_structure_hook
Fixed
- It is no longer possible to use identical names between parameters and targets
- Random seed context is correctly set within benchmarks
- Measurement input validation now respects typical tolerances associated with floating
point representation inaccuracy - Exotic serialization issues with constraints and conditions arising from missing
converters for floats MetaRecommender's no longer expose their private attributes via the constructor
Removed
- Telemetry
- Option to specify reference values for
add_fake_measurements convert_boundsutility (since now equivalent toInterval.create)geom_meanutility
Deprecations
- Creating
NumericalTargets using amodeargument TargetModeandTargetTransformationenumslinear_transform,triangular_transformandbell_transformfunctions
Expired Deprecations (from 0.10.*)
SequentialGreedyRecommenderclassSubspaceContinuous.samples_randommethodSubspaceContinuous.samples_full_factorialmethoddataargument totransformmethod of search space classes- Automatically setting
allow_extra=Trueintransformmethods of search space
classes when left unspecified
Merged Pull Requests
- Redesign numerical targets and transformations by @AdrianSosic in #512
- Forbid Overlapping Target and Parameter Names in Campaign by @Scienfitz in #593
- Add API overview to user guide by @Hrovatin in #597
- Testing for redesigned targets by @AdrianSosic in #564
- Add flexible metadata system by @tobiasploetz in #580
- Addons enabled by target refactoring by @AdrianSosic in #573
- Fix NumericalTarget constructor calls by @AdrianSosic in #602
- Remove polars xfails by @Scienfitz in #606
- Modern targets for simulation package by @AdrianSosic in #608
- Add Paper Citation by @Scienfitz in #609
- Enable Scalable FPS via optional
fpsamplepackage by @Scienfitz in #601 - Composite transformations by @AdrianSosic in #599
- Desirability as pre-transformation by @AdrianSosic in #582
- Lockfile check via pre-commit by @AdrianSosic in #613
- Fix: Set random seed within benchmark by @Hrovatin in #576
- Use
importlib.metadataby @AdrianSosic in #617 - Disable telemetry by @AdrianSosic in #615
- Doc Fixes and Minor Improvements by @Scienfitz in #616
- Run all benchmarks on release by @fabianliebig in #614
- New docs for
NumericalTargetby @AdrianSosic in #584 - Fix Floating Point Tolerance in Validations by @Scienfitz in #604
- Feature/base tl regr benchmark by @kalama-ai in #619
- Bring back downloads badge by @AdrianSosic in #627
- Expire 0.10.* deprecations by @AdrianSosic in #589
- Harmonize
floatRelated Converters and Validators in Constraints and Conditions by @Scienfitz in #624 - Forbid Overlap in Target and Parameter Names by @Scienfitz in #623
- Move target negation to objective by @AdrianSosic in #628
- Refactor serialization workarounds by @AdrianSosic in #577
- Extend CLI capabilities of the benchmark models for extended local usage by @Hrovatin in #611
- Final target cleanup by @AdrianSosic in #630
- Laser tuning example by @AdrianSosic in #633
- Target Refactoring by @AdrianSosic in #636
- Release 0.14.0 by @AdrianSosic in #637
New Contributors
- @kalama-ai made their first contribution in #619
Full Changelog: 0.13.2...0.14.0
0.13.2
What's Changed
Changed
- Lockfiles are now generated using
uv lockand consumed usinguv sync
Fixed
- The Python version specifier now also allows patch versions of Python 3.13
Merged Pull Requests
- Fix Python version specifier by @AdrianSosic in #587
- Uv lock by @AdrianSosic in #581
- Link badges to main branch by @AdrianSosic in #585
- xfail polars tests by @AdrianSosic in #586
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #588
- Release 0.13.2 by @AdrianSosic in #591
New Contributors
- @pre-commit-ci made their first contribution in #588
Full Changelog: 0.13.1...0.13.2
0.13.1
What's Changed
Added
- Support for Python 3.13
random_tie_breakflag tofarthest_point_samplingto toggle between
random or deterministic sampling for equidistant casesrandom_tie_breakandinitializationattributes toFPSRecommenderto
control sampling infarthest_point_sampling- Flag for toggling parallel computation in
simulate_scenarios - Additional transfer learning and synthetic benchmarks
- Utility
normalize_input_dtypesfor ensuring all input dataframe columns have the
expected dtypes CompositeSurrogatenow has a_posterior_compmethod similar toSurrogateSHAPInsight.explain_targetmethod for computing explanations for only a specific
target
Changed
CategoricalParameterandTaskParameternow also allow Boolean entries as
valuesandactive_valuesSubspaceDiscrete.from_dataframenow handles purely Boolean columns differently,
inferring aCategoricalParameterwithINTencoding for themSHAPInsight.explainnow returns a tuple of explanations that contains one
explanation for each surrogate model used by the (possibly multi-output) objectiveSHAPInsight.plotnow has the optionaltarget_indexargument, enabling users to
select for which target they want to plot the shap assessment (default is the first
target)add_measurements,update_measurements,fuzzy_row_matchand some.recommend
calls now operate on dtype-normalized copies of the input if it contained unexpected
dtypes for a parameter or targetscikit-learnandscipyare now lazy-loaded- Validity of optional
model_paramsattribute ofRandomForestSurrogate,
NGBoostSurrogateandBayesianLinearSurrogateis now checked via a hardcoded
TypedDictinstead of dynamically retrieved specifications, required for
lazy-loading related packages CustomONNXSurrogate.onnx_stris no longer validated before being used
Fixed
- Using
PosteriorStandardDeviationwithMINtargets no longer results in
minimization of the acquisition function - Added missing garbage collection call to
pareto.py, potentially solving
serialization issues in certain cases catch_constant_targetsdecorator is now properly typed- Incorrect normalization of explanation shapes for
SHAPInsight
Removed
SHAPInsight.uses_shap_explainer
Merged Pull Requests
- Tie breaking for FPS by @StefanPSchmid in #519
- Enable parallel execution of scenarios by @monken in #543
- Add missing garbage collection call by @AdrianSosic in #551
- Fix guard clause by @AdrianSosic in #554
- Make import of deprecated ONNX function robust by @AVHopp in #555
- Add boolean flag for toggling parallel execution of scenarios by @AVHopp in #548
- Enable Python 3.13 by @AdrianSosic in #414
- Add missing decorator return type by @AdrianSosic in #559
- Add benchmarks by @Hrovatin in #491
- Adhere to new mypy rules by @AdrianSosic in #563
- Remove ONNX Workarounds by @Scienfitz in #562
- Lazy-load sklearn and scipy + adjust required model validations by @Scienfitz in #556
- Allow Booleans for
CategoricalParameterby @Scienfitz in #552 - Amend
SHAPInsightforCompositeSurrogateby @Scienfitz in #558 - Release 0.13.1 by @Scienfitz in #565
- Fix required Python version by @AdrianSosic in #566
New Contributors
- @StefanPSchmid made their first contribution in #519
- @monken made their first contribution in #543
Full Changelog: 0.13.0...0.13.1
0.13.0
What's Changed
Added
extrasgroup for installing all dependencies required for optional features- Support for NumPy 2.0+
ParetoObjectiveclass for Pareto optimization of multiple targets and corresponding
qNoisyExpectedHypervolumeImprovement/qLogNoisyExpectedHypervolumeImprovement/
qLogNParEGOacquisition functions- Composite surrogates now drop rows containing NaNs (separately for each target),
effectively enabling partial measurements SubstanceParameter,CustomDiscreteParameterandCategoricalParameternow also
support restricting the search space viaactive_values, whilevaluescontinue to
identify allowed measurement inputsCampaign.posterior_statsandSurrogate.posterior_statsas convenience methods for
providing statistical measures about the target predictions of a given set of
candidatesacquisition_valuesandjoint_acquisition_valueconvenience methods to
CampaignandBayesianRecommenderfor computing acquisition valuesCampaign.get_acquisition_functionandBayesianRecommender.get_acquisition_function
convenience methods for retrieving the underlying acquisition functionAcquisitionFunction.evaluateconvenience method for computing acquisition values
from candidates in experimental representationqPSTDacquisition functionBCUT2Dencoding forSubstanceParameterSHAPInsightnow supports thewaterfallplot type- Cardinality constraints sections to the user guide
ContinuousCardinalityConstraintis now compatible withBotorchRecommender- Attribute
max_n_subspacestoBotorchRecommender, allowing to control
optimization behavior in the presence of cardinality constraints Surrogate.replicatemethod for making single-target surrogate models multi-target
compatibleCompositeSurrogateclass for composing multi-target surrogates from single-target
surrogatesis_multi_outputattribute toObjectivesupports_multi_outputattribute/property toSurrogate/AcquisitionFunctionn_outputsproperty toObjective- Attribute
relative_thresholdand methodget_absolute_thresholdsto
ContinuousCardinalityConstraintfor handling inactivity ranges - Utilities
inactive_parameter_combinationsandn_inactive_parameter_combinations
to bothContinuousCardinalityConstraintandSubspaceContinuousfor iterating
over cardinality-constrained parameter sets - Utilities
activate_parameterandis_cardinality_fulfilledfor enforcing and
validating cardinality constraints - Utility
is_inactivefor determining if parameters are inactive - A
MinimumCardinalityViolatedWarningis triggered when minimum cardinality
constraints are violated - Stored benchmarking results now include the Python environment and version
Changed
- Targets are now allowed to contain NaN, deferring potential failure to attempted
recommendation instead of data ingestion - For label-like parameters,
SubspaceDiscretenow only includes parameter values
that are inactive_values - The default value for
sequential_continuousinBotorchRecommenderhas been
changed toTrue SHAPInsightnow allows explanation input that has additional columns compared to
the background data (will be ignored)- Acquisition function indicator
is_mchas been removed in favor of new indicators
supports_batchingandsupports_pending_experiments fuzzy_row_matchnow uses vectorized operations, resulting in a speedup of matching
measurements to the search space between 4x and 40x- Model scaling now uses the parameter bounds instead of the search space bounds
benchmarksmodule now accepts a list of domains to be executed- Construction of BoTorch acquisition functions has been redesigned from ground up
ngboostis now an optional dependencysetuptools-scmis now an optional dependency, used for improved version inferencecreate_example_plots,to_stringandindenthave been relocated within utils
Fixed
- Incorrect optimization direction with
PSTDwith a single minimization target - Provide version fallback in case scm fails to infer version during installation
Removed
fuzzy_row_matchwill no longer warn about entries not matching to the search spacefuncydependencyscikit-learn-extradependency by integrating relevant code parts intobaybe
Expired Deprecations (from 0.9.*)
baybe.objectivenamespaceacquisition_function_clsconstructor parameter forBayesianRecommenderVarUCBandqVarUCBacquisition functions
Merged Pull Requests
- Fix Substance Encodings by @Scienfitz in #474
- Add Python environment and version metadata to benchmark results by @fabianliebig in #476
- Serialize python env and version data by @fabianliebig in #478
- Refactor benchmark architecture by @AdrianSosic in #477
- Refactor ACQF indicators by @Scienfitz in #479
- XFail bugged test case by @Scienfitz in #481
- Fix SHAP Plot Tests by @Scienfitz in #486
- Rework validation for
measurementsandpending_experimentsby @Scienfitz in #456 - Negative
betavalues by @AdrianSosic in #488 - Minor SHAP improvements by @Scienfitz in #494
- Increase timeout for benchmark test to 1440 minutes (24 hours) by @fabianliebig in #498
- Add logging to indicate currently running benchmark and its runtime by @fabianliebig in #499
- Vectorize
fuzzy_row_matchby @Scienfitz in #489 - Disable pre-commit.ci autofixing by @AdrianSosic in #501
- Pareto optimization by @AdrianSosic in #475
- Botorch with cardinality constraint via sampling by @Waschenbacher in #301
- Fix Pareto example plot export by @AdrianSosic in #505
- Fix serialization errors on 3.12 by @AdrianSosic in #506
- User guide for cardinality constraints by @AdrianSosic in #496
- Generalize
active_valuesby @Scienfitz in #495 - Pipeline benchmark parallelization by @fabianliebig in #502
- Xfail bugged SHAP plot tests by @Scienfitz in #510
- Fix converter typing by @AdrianSosic in #511
- Acquisition function builder by @AdrianSosic in #490
- Add
Campaign.posterior_statsby @Scienfitz in #504 - Provide version fallback in case scm fails to infer version during installation by @dasmy in #524
- Fix lockfile creation for uv>=0.6.0 by @AdrianSosic in #527
- Drop funcy dependency by @AdrianSosic in #528
- Add qLogNParEGO by @Scienfitz in #532
- More hypervolume acquisition functions by @AdrianSosic in #507
- Make
ngboostoptional by @AdrianSosic in #529 - Posterior Stats: Catch No Measurements Case by @Scienfitz in #536
- Make
scikit-learn-extraoptional by @AdrianSosic in #530 - Make
setuptools-scmoptional by @AdrianSosic in #526 - Enable Pareto and MATCH by @Scienfitz in #537
- Acquisition utility method by @AdrianSosic in #509
- Remove xfail for fixed SHAP case by @Scienfitz in #540
- Expire 0.9.* deprecations by @AdrianSosic in #497
- Enable Partial Measurements by @Scienfitz in #514
- Integrate KMedoids by @Scienfitz in #538
- Bump dev tools versions by @AdrianSosic in #503
- Release 0.13.0 by @AdrianSosic in #541
New Contributors
Full Changelog: 0.12.2...0.13.0
0.12.2
What's Changed
Changed
- More robust settings for the GP fitting
Merged Pull Requests
- Improve GP Fit by @Scienfitz in #472
Full Changelog: 0.12.1...0.12.2