  PyRoss is an open-source Python library that offers an integrated platform
for inference, prediction and optimisation of NPIs in age- and
contact-structured epidemiological compartment models. This report outlines the
rationale and functionality of the PyRoss library, with various illustrations
and examples focusing on well-mixed, age-structured populations. The PyRoss
library supports arbitrary structured models formulated stochastically (as
master equations) or deterministically (as ODEs) and allows mid-run
transitioning from one to the other. By supporting additional compartmental
subdivision ad libitum, PyRoss can emulate time-since-infection models and
allows medical stages such as hospitalization or quarantine to be modelled and
forecast. The PyRoss library enables fitting to epidemiological data, as
available, using Bayesian parameter inference, so that competing models can be
weighed by their evidence. PyRoss allows fully Bayesian forecasts of the impact
of idealized NPIs by convolving uncertainties arising from epidemiological
data, model choice, parameters, and intrinsic stochasticity. Algorithms to
optimize time-dependent NPI scenarios against user-defined cost functions are
included. PyRoss's current age-structured compartment framework for well-mixed
populations will in future reports be extended to include compartments
structured by location, occupation, use of travel networks and other attributes
relevant to assessing disease spread and the impact of NPIs. We argue that such
compartment models, by allowing social data of arbitrary granularity to be
combined with Bayesian parameter estimation for poorly-known disease variables,
could enable more powerful and robust prediction than other approaches to
detailed epidemic modelling. We invite others to use the PyRoss library for
research to address today's COVID-19 crisis, and to plan for future pandemics.
