Metadata-Version: 2.4
Name: currybo
Version: 0.1.1
Summary: Bayesian Optimization for general parameters
Author-email: "Stefan P. Schmid" <stefan.schmid@chem.ethz.ch>, Felix Strieth-Kalthoff <strieth-kalthoff@uni-wuppertal.de>, Mohammad Haddadnia <mohammad_haddadnia@dfci.harvard.edu>, Alexander Schoch <schochal@ethz.ch>, Ella Rajaonson <ella.rajaonson@mail.utoronto.ca>
License-Expression: MIT
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: torch>=2.2.1
Requires-Dist: botorch>=0.10.0
Requires-Dist: gpytorch>=1.11
Requires-Dist: matplotlib>=3.8.3
Requires-Dist: imageio>=2.34.0
Requires-Dist: pandas<3,>=2.2.1
Requires-Dist: rdkit>=2023.9.5
Requires-Dist: gauche>=0.1.6
Requires-Dist: pypalettes
Requires-Dist: pub_ready_plots
Requires-Dist: botier
Provides-Extra: dev
Requires-Dist: black>=21.12b0; extra == "dev"
Requires-Dist: flake8>=6.1.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Dynamic: license-file

![CurryBO-logo](https://raw.githubusercontent.com/digital-chemistry-laboratory/currybo/refs/heads/main/CurryBO-logo.svg)
[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](./LICENSE)
[![Python Version](https://img.shields.io/badge/Python-3.9%2B-blue?logo=python&logoColor=white)](https://www.python.org/)

[![arXiv](https://img.shields.io/badge/arXiv-2502.18966-b31b1b.svg)](https://arxiv.org/abs/2502.18966)



# CurryBO: Bayesian optimization over curried function spaces

`CurryBO` is a pure python package that allows to conduct Bayesian Optimization in the search for general (i.e. transferable) parameters that *work well* across multiple related tasks.

## Installation

To install the package, simply:
```
pip install currybo
```

Installation takes approximately 30 seconds on a consumer-grade laptop.

## Usage

If you are interested in using CurryBO to predict your experiments based on your own measurements, you can simply call
```
currybo \
--measurements [your-data-file.csv] --options [your-options-file.csv] \
--substrates "name=[Your-substrate-class-name],type=smiles" \
--conditions "name=[Your-condition-class-name],type=smiles" \
--targets "name=[Your-target-name],type=scalar" \
--objectives "name=[Your-target-name],abs_threshold=[Your-target-threshold],maximize=True" \
```

The output will be printed to the terminal in json format and contains information on the currently estimated general optimum (which conditions and the generality outcome), as well as the points recommended for next measurement and their expected outcome.
For a test system with 6 substrates and 20 condition combinations, runtime is approximately 2 seconds on consumer-grade hardware.

If you do not want to code, please visit the [CurryBO Website](https://currybo.ethz.ch), where we built a web-based application so that everyone can optimize for general reaction conditions.

If you are interested in reproducing work from the paper, please refer to the [currybo-benchmarks repository](https://github.com/digital-chemistry-laboratory/currybo-benchmarks.git), which contains datasets to reproduce the experiments in this work.

## Citation

If you use CurryBO in your research, please cite the corresponding paper:

```
@misc{schmid_2026_bayesian_optimization_general_reaction,
      title={Bayesian Optimization for General Reaction Conditions}, 
      author={Stefan P. Schmid and Ella Miray Rajaonson and Cher Tian Ser and Mohammad Haddadnia and Shi Xuan Leong and Alán Aspuru-Guzik and Agustinus Kristiadi and Kjell Jorner and Felix Strieth-Kalthoff},
      year={2026},
      eprint={2502.18966},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2502.18966}, 
}
```

## System requirements

The software dependencies are given in `pyproject.toml`, with the version numbers on which it has been tested on.
CurryBO has been executed on Mac OS (Version 15 and later), as well as Linux Ubuntu (Version 22.04). No non-standard hardware is required to run CurryBO.
