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.

https://github.com/madeline-scyphers/boa

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
Last synced: 10 months ago · JSON representation ·

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
Statistics
  • Stars: 11
  • Watchers: 3
  • Forks: 1
  • Open Issues: 20
  • Releases: 46
Created about 4 years ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation

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 | Documentation Status | | DOI | DOI | | Conda Install | Conda Version | | PyPI Install | PyPI version | | Github Latest release | Github release | | Github dev release | Github tag | | Build Status | ci | | Coverage | codecov |

Owner

  • Name: Madeline Scyphers
  • Login: madeline-scyphers
  • Kind: user

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
documentation (19) enhancement (18) package (8) CI (5) bug (3)
Pull Request Labels
enhancement (24) package (19) documentation (15) bug (13) CI (3)

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.

  • Versions: 21
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 224 Last month
Rankings
Dependent packages count: 7.1%
Average: 24.1%
Stargazers count: 28.4%
Dependent repos count: 30.3%
Forks count: 30.6%
Maintainers (1)
Last synced: 10 months ago

Dependencies

setup.py pypi
  • 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 *
.github/workflows/CI.yaml actions
  • 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
.github/workflows/release.yaml actions
  • actions/checkout master composite
  • actions/setup-python v1 composite
  • pypa/gh-action-pypi-publish release/v1 composite
pyproject.toml pypi
environment.yml conda
  • 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