0.12.0
What's Changed
Breaking Changes
- Lookup callables for simulation are now expected to accept/return dataframes with
the corresponding parameter/target column labels
Added
- SHAP explanations via the new
SHAPInsight
class - Optional
insights
dependency group - Insights user guide
- Example for a traditional mixture
allow_missing
andallow_extra
keyword arguments toObjective.transform
add_noise_to_perturb_degenerate_rows
utilitybenchmarks
subpackage for defining and running performance testsCampaign.toggle_discrete_candidates
to dynamically in-/exclude discrete candidatesfilter_df
utility for filtering dataframe contentarrays_to_dataframes
decorator to create lookups from array-based callablesDiscreteConstraint.get_valid
to conveniently access valid candidates- Functionality for persisting benchmarking results on S3 from a manual pipeline run
remain_switched
option toTwoPhaseMetaRecommender
is_stateful
class variable toMetaRecommender
get_non_meta_recommender
method toMetaRecommender
Changed
SubstanceParameter
encodings are now computed exclusively with the
scikit-fingerprints
package, granting access to all fingerprints available therein- Example for slot-based mixtures has been revised and grouped together with the new
traditional mixture example - Memory caching is now non-verbose
CustomDiscreteParameter
does not allow duplicated rows indata
anymore- De-/activating Polars via
BAYBE_DEACTIVATE_POLARS
now requires passing values
compatible withstrtobool
- All arguments to
MetaRecommender.select_recommender
are now optional MetaRecommender
s can now be composed of otherMetaRecommender
s- For performance reasons, search space manipulation using
polars
is no longer
guaranteed to produce the same row order as the correspondingpandas
operations allow_repeated_recommendations
has been renamed to
allow_recommending_already_recommended
and is nowTrue
by default
Fixed
- Rare bug arising from degenerate
SubstanceParameter.comp_df
rows that caused
wrong number of recommendations being returned ContinuousConstraint
s can now be used in single point precision- Search spaces are now stateless, preventing unintended side effects that could lead to
incorrect candidate sets when reused in different optimization contexts qNIPV
not working with singleMIN
targets- Passing a
TargetTransformation
without passingbounds
when creating a
NumericalTarget
now raises an error - Crash when using
ContinuousCardinalityConstraint
caused by an unintended interplay
between constraints and dropped parameters yielding empty parameter sets - Minimizing a single
NumericalTarget
with specified bounds/transformation via
SingleTargetObjective
no longer erroneously maximizes it allow_*
flags are now context-aware, i.e. setting them in a context where they are
irrelevant now raises an error instead of passing silently
Removed
botorch_function_wrapper
utility for creating lookup callables
Deprecations
- Passing a dataframe via the
data
argument toObjective.transform
is no longer
possible. The dataframe must now be passed as positional argument. - The new
allow_extra
flag is automatically set toTrue
inObjective.transform
when left unspecified get_transform_parameters
has been replaced withget_transform_objects
- Passing a dataframe via the
data
argument toTarget.transform
is no longer
possible. The data must now be passed as a series as first positional argument. SubstanceEncoding
valueMORGAN_FP
. As a replacement,ECFP
with 1024 bits and
radius of 4 can be used.SubstanceEncoding
valueRDKIT
. As a replacement,RDKIT2DDESCRIPTORS
can be used.- The
metadata
attribute ofSubspaceDiscrete
no longer exists. Metadata is now
exclusively handled by theCampaign
class. get_current_recommender
andget_next_recommender
ofMetaRecommender
have become
obsolete and calling them is no longer possible- Passing
allow_*
flags to recommenders is no longer supported since the necessary
metadata required for the flags is no longer available at that level. The
functionality has been taken over byCampaign
.
Merged Pull Requests
- Fix math in CardinalityConstraint docstring by @AVHopp in #405
- Typing overrides by @AdrianSosic in #400
- Bump Streamlit Requirement by @Scienfitz in #407
- Refactor objective transform interface by @AdrianSosic in #398
- Add Polars installation issues to known_issues by @AVHopp in #404
- Refactor target transform interface by @AdrianSosic in #406
- Drop
batch_quantity
keyword by @AdrianSosic in #411 - Add downloads badge by @AdrianSosic in #418
- Unpin protobuf by @Scienfitz in #421
- Fix some typos by @AdrianSosic in #426
- Fix Asserts in Dependency Constraint Example by @Scienfitz in #422
- Rework Mixture Examples by @Scienfitz in #394
- Use correct precision in botorch wrapper by @AVHopp in #417
- Enable scikit-fingerprints by @Hrovatin in #364
- Fix rare degenerate
comp_df
bug by @Scienfitz in #399 - Basic benchmarking structure by @fabianliebig in #413
- Require truthy/falsy values for
BAYBE_DEACTIVATE_POLARS
by @AdrianSosic in #427 - Fix dtype in continuous comp rep by @AVHopp in #415
- Drop CI audit dependence by @AdrianSosic in #434
- Immutable searchspace by @AdrianSosic in #412
- Fix: qNIPV not working with single MIN target by @Scienfitz in #435
- Add manual benchmark workflow and S3 result persistence by @fabianliebig in #429
- Raise error when specifying transformation without bounds by @AVHopp in #451
- Fix empty constraints after dropping parameters by @AVHopp in #448
- Include robust check for extracting column names for fingerprints by @AVHopp in #447
- Correct typo in docs on acquisition functions by @Hrovatin in #442
- Refactor callable lookup mechanism by @AdrianSosic in #441
- Pin version of scipy to <1.15 by @AVHopp in #458
- Hotfix: Minimization with bounds properly minimize targets by @AVHopp in #462
- Insights module and SHAPInsight by @Alex6022 in #391
- Simplify and extend meta recommender logic by @AdrianSosic in #457
- Fix minimization of improvement-based MC acquisition functions by @AdrianSosic in #465
- Maintain row order after cross join by @AdrianSosic in #463
- Move
allow_*
flags toCampaign
by @AdrianSosic in #423 - Insights User Guide by @Scienfitz in #466
- Include 0.11.4 Hotfix Changes in main by @Scienfitz in #469
- Release 0.12.0 by @Scienfitz in #470
New Contributors
- @Hrovatin made their first contribution in #364
- @fabianliebig made their first contribution in #413
- @Alex6022 made their first contribution in #391
Full Changelog: 0.11.2...0.12.0