QUEENS (Quantification of Uncertain Effects in Engineering Systems) is a Python framework for solver-independent multi-query analyses of large-scale computational models.
📈 QUEENS offers a large collection of cutting-edge algorithms for deterministic and probabilistic analyses such as:
- parameter studies and identification
- sensitivity analysis
- surrogate modeling
- uncertainty quantification
- Bayesian inverse analysis
🧚♂️ QUEENS provides a modular architecture for:
- parallel queries of large-scale computational models
- robust data, resource, and error management
- easy switching between analysis types
- smooth scaling from laptop to HPC cluster
🌐 Website: queens-py.org
📖 Documentation: queens-py.github.io/queens
Prerequisites: Unix system and environment management system (we recommend miniforge)
Clone the QUEENS repository to your local machine. Navigate to its base directory, then:
conda env create
conda activate queens
pip install -e .Note: This installs QUEENS without any fixed dependency versions. In most cases this is no problem and gives you more freedom to install additional packages within your environment. Should there be a problem you can play it safe with fixed versions via
pip install -e .[safe]Let's consider a parallelized Monte Carlo simulation of the Ishigami function:
from queens.distributions import Beta, Normal, Uniform
from queens.drivers import Function
from queens.global_settings import GlobalSettings
from queens.iterators import MonteCarlo
from queens.main import run_iterator
from queens.models import Simulation
from queens.parameters import Parameters
from queens.schedulers import Local
if __name__ == "__main__":
# Set up the global settings
global_settings = GlobalSettings(experiment_name="monte_carlo_uq", output_dir=".")
with global_settings:
# Set up the uncertain parameters
x1 = Uniform(lower_bound=-3.14, upper_bound=3.14)
x2 = Normal(mean=0.0, covariance=1.0)
x3 = Beta(lower_bound=-3.14, upper_bound=3.14, a=2.0, b=5.0)
parameters = Parameters(x1=x1, x2=x2, x3=x3)
# Set up the model
driver = Function(parameters=parameters, function="ishigami90")
scheduler = Local(
experiment_name=global_settings.experiment_name, num_jobs=2, num_procs=4
)
model = Simulation(scheduler=scheduler, driver=driver)
# Set up the algorithm
iterator = MonteCarlo(
model=model,
parameters=parameters,
global_settings=global_settings,
seed=42,
num_samples=1000,
result_description={"write_results": True, "plot_results": True},
)
# Start QUEENS run
run_iterator(iterator, global_settings=global_settings)QUEENS is powered by a community of contributors.
Join us—your contributions are welcome! Please follow our contributing guidelines and code of conduct.
If you use QUEENS in your work, please cite the relevant method papers and the following article
@misc{queens,
title={QUEENS: An Open-Source Python Framework for Solver-Independent Analyses of Large-Scale Computational Models},
author={Jonas Biehler and Jonas Nitzler and Sebastian Brandstaeter and Maximilian Dinkel and Volker Gravemeier and Lea J. Haeusel and Gil Robalo Rei and Harald Willmann and Barbara Wirthl and Wolfgang A. Wall},
year={2025},
eprint={2508.16316},
archivePrefix={arXiv},
primaryClass={cs.CE},
url={https://arxiv.org/abs/2508.16316},
note = {Jonas Biehler, Jonas Nitzler, and Sebastian Brandstaeter contributed equally.}
}Licensed under GNU LGPL-3.0 (or later). See LICENSE.
