  NUBO, short for Newcastle University Bayesian Optimization, is a Bayesian
optimization framework for optimizing expensive-to-evaluate black-box
functions, such as physical experiments and computer simulators. Bayesian
optimization is a cost-efficient optimization strategy that uses surrogate
modeling via Gaussian processes to represent an objective function and
acquisition functions to guide the selection of candidate points to approximate
the global optimum of the objective function. NUBO focuses on transparency and
user experience to make Bayesian optimization accessible to researchers from
all disciplines. Clean and understandable code, precise references, and
thorough documentation ensure transparency, while a modular and flexible
design, easy-to-write syntax, and careful selection of Bayesian optimization
algorithms ensure a good user experience. NUBO allows users to tailor Bayesian
optimization to their problem by writing a custom optimization loop using the
provided building blocks. It supports sequential single-point, parallel
multi-point, and asynchronous optimization of bounded, constrained, and mixed
(discrete and continuous) parameter input spaces. Only algorithms and methods
extensively tested and validated to perform well are included in NUBO. This
ensures that the package remains compact and does not overwhelm the user with
an unnecessarily large number of options. The package is written in Python but
does not require expert knowledge of Python to optimize simulators and
experiments. NUBO is distributed as open-source software under the BSD 3-Clause
license.
