boa-framework
Bayesian Optimization for Anything: A high-level Bayesian optimization framework and model wrapping toolkit. It provides an easy-to-use interface between models and the python libraries Ax and BoTorch.
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 4 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.4%) to scientific vocabulary
Repository
Bayesian Optimization for Anything: A high-level Bayesian optimization framework and model wrapping toolkit. It provides an easy-to-use interface between models and the python libraries Ax and BoTorch.
Basic Info
- Host: GitHub
- Owner: madeline-scyphers
- License: mit
- Language: Python
- Default Branch: develop
- Homepage: https://boa-framework.readthedocs.io/en/latest/
- Size: 23 MB
Statistics
- Stars: 11
- Watchers: 3
- Forks: 1
- Open Issues: 20
- Releases: 46
Metadata Files
README.md
Bayesian Optimization for Anything
BOA is a high-level Bayesian optimization framework and model-wrapping toolkit. It is designed to be highly flexible and easy-to-use. BOA is built upon the lower-level packages Ax (Adaptive Experimentation Platform) and BoTorch to do the heavy lifting of the BO process and subsequent analysis. It supplements these lower-level packages with model-wrapping tools, language-agnostic features, and a flexible interface framework.
Key features
- Language-Agnostic: Although BOA itself is written in Python, users do not need to write any Python code in order to use it. The user’s model, as well as the model wrapper, can be written in any programming language. Users can configure and run an optimization, save outputs, and view results entirely without writing any Python code. This allows the user to write their code in any language they want, or even reuse processing code they already have, and still have access to two of the most full-featured BO (BoTorch) and GP (GPyTorch) libraries available today.
- Scalability and Parallelization: BOA handles optimization tasks of any size, from small problems to large, complex models. It supports parallel evaluations, allowing multiple optimization trials to run at the same time. This greatly reduces optimization time, especially when using powerful computing resources like supercomputing clusters. In many other BO packages, even if batched trial evaluation is supported, the actual parallelization implementation is left as an exercise to the user.
- Reducing Boilerplate Code: BOA aims to reduce the amount of boilerplate code often needed to set up and launch optimizations. BOA does this by providing an application programming interface (API) to the lower-level BO libraries BoTorch and Ax that it is built upon. This API is responsible for initializing, starting, and controlling the user’s optimization. The BOA API can be accessed and controlled almost entirely through a human readable, text based, YAML configuration file, reducing the need to write boilerplate setup code.
- Automatic Saving and Resuming: BOA automatically saves the state of an optimization process, allowing users to pause and resume optimizations easily. This ensures continuous progress and makes it easy to recover and retrieve results, even if there are interruptions or system crashes, making the workflow more resilient and user-friendly. Users can also add additional trials to a completed optimization or explore incoming results as the optimization is still running.
- Support for Multi-Objective Optimization: Streamlined and customizable support for multi-objective optimization.
- Handling High-Dimensional and Complex Models: Support for high-dimensional problems.
- Customizability: BOA allows customization of the optimization process as needed, including adding constraints, adjusting the kernel or acquisition function, or incorporating an early stopping criterion.
Next Steps
Head over to installation guide to get started with installing BOA.
Or
Head over to Bayesian Optimization Guide to read about Bayesian Optimization and how it works.
Citation
If you used this package in your research, please cite it:
@software{
author = {Scyphers, Madeline and
Missik, Justine},
title = {Bayesian Optimization for Anything (BOA)},
year = {2023--},
publisher = {Zenodo},
doi = {10.5281/zenodo.7655353},
url = {https://doi.org/10.5281/zenodo.7655353}
}
Or if you use the paper in Environmental Modelling & Software, cite::
@article{scyphers_bayesian_2024,
title = {Bayesian Optimization for Anything ({BOA}): An open-source framework for accessible, user-friendly Bayesian optimization},
volume = {182},
issn = {13648152},
url = {https://linkinghub.elsevier.com/retrieve/pii/S1364815224002524},
doi = {10.1016/j.envsoft.2024.106191},
shorttitle = {Bayesian Optimization for Anything ({BOA})},
pages = {106191},
journaltitle = {Environmental Modelling \& Software},
shortjournal = {Environmental Modelling \& Software},
author = {Scyphers, Madeline E. and Missik, Justine E.C. and Kujawa, Haley and Paulson, Joel A. and Bohrer, Gil},
urldate = {2024-12-18},
date = {2024-11},
langid = {english},
file = {Scyphers et al. - 2024 - Bayesian Optimization for Anything (BOA) An open-.pdf:/Users/madelinescyphers/Zotero/storage/546J472I/Scyphers et al. - 2024 - Bayesian Optimization for Anything (BOA) An open-.pdf:application/pdf},
}
| | |
|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Docs | |
| DOI |
|
| Conda Install |
|
| PyPI Install |
|
| Github Latest release |
|
| Github dev release |
|
| Build Status |
|
| Coverage |
|
Owner
- Name: Madeline Scyphers
- Login: madeline-scyphers
- Kind: user
- Repositories: 3
- Profile: https://github.com/madeline-scyphers
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: Bayesian Optimization for Anything (BOA)
message: >-
If you use this software, please cite it as below.
type: software
authors:
- given-names: Madeline
family-names: Scyphers
email: mescyphers@gmail.com
orcid: 'https://orcid.org/0000-0003-3733-4330'
- given-names: Justine
family-names: Missik
email: missik.2@osu.edu
orcid: 'https://orcid.org/0000-0002-6448-0694'
- given-names: Joel
family-names: Paulson
orcid: 'https://orcid.org/0000-0002-1518-7985'
- given-names: Gil
family-names: Bohrer
orcid: 'https://orcid.org/0000-0002-9209-9540'
repository-code: 'https://github.com/madeline-scyphers/boa'
url: 'https://boa-framework.readthedocs.io/en/latest/'
doi: '10.5281/zenodo.7655353'
abstract: >-
Bayesian Optimization for Anything: A high-level Bayesian
optimization framework and model wrapping tool. It
provides an easy-to-use interface between models and the
python libraries Ax and BoTorch.
keywords:
- Bayesian optimization
- modeling
- informatics
license: MIT
references:
- authors:
- family-names: Balandat
given-names: Maximilian
- family-names: Karrer
given-names: Brian
- family-names: Jiang
given-names: Daniel R.
- family-names: Daulton
given-names: Samuel
- family-names: Letham
given-names: Benjamin
- family-names: Wilson
given-names: Andrew Gordon
- family-names: Bakshy
given-names: Eytan
type: article
title: 'BoTorch: A Framework for Efficient Monte-Carlo Bayesian Optimization'
journal: 'Advances in Neural Information Processing Systems 33'
year: 2020
url: 'http://arxiv.org/abs/1910.06403'
GitHub Events
Total
- Issues event: 1
- Watch event: 1
- Delete event: 1
- Issue comment event: 1
- Push event: 2
- Pull request event: 2
- Create event: 1
Last Year
- Issues event: 1
- Watch event: 1
- Delete event: 1
- Issue comment event: 1
- Push event: 2
- Pull request event: 2
- Create event: 1
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 62
- Total pull requests: 102
- Average time to close issues: 5 months
- Average time to close pull requests: 3 days
- Total issue authors: 2
- Total pull request authors: 2
- Average comments per issue: 0.44
- Average comments per pull request: 0.47
- Merged pull requests: 96
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 1
- Pull requests: 10
- Average time to close issues: N/A
- Average time to close pull requests: about 10 hours
- Issue authors: 1
- Pull request authors: 1
- Average comments per issue: 1.0
- Average comments per pull request: 0.1
- Merged pull requests: 9
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- madeline-scyphers (40)
- jemissik (22)
Pull Request Authors
- madeline-scyphers (98)
- jemissik (9)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 224 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 21
- Total maintainers: 1
pypi.org: boa-framework
Bayesian Optimization for Anything: A high-level Bayesian optimization framework and model wrapping tool. It provides an easy-to-use interface between models and the python libraries Ax and BoTorch.
- Documentation: http://boa-framework.readthedocs.io
- License: MIT
-
Latest release: 0.11.0
published almost 2 years ago
Rankings
Maintainers (1)
Dependencies
- PyYAML *
- ax-platform >=0.2.0
- botorch >=0.5
- click *
- gpytorch >=1.5
- numpy *
- pandas *
- scikit-learn *
- scipy *
- sqlalchemy *
- torch >=1.9
- torchaudio *
- torchvision *
- xarray *
- MishaKav/pytest-coverage-comment main composite
- actions/cache v3 composite
- actions/checkout v3 composite
- codecov/codecov-action v3 composite
- conda-incubator/setup-miniconda v2 composite
- actions/checkout master composite
- actions/setup-python v1 composite
- pypa/gh-action-pypi-publish release/v1 composite
- attrs
- ax-platform >=0.3.1,<=0.3.4
- click
- ipywidgets >=7.5
- jinja2
- notebook >=5.3
- numpy
- pandas
- panel
- plotly >=5.10.0
- python 3.10.*
- pytorch
- ruamel.yaml
- scikit-learn
- scipy