easyvvuq
Python 3 framework to facilitate verification, validation and uncertainty quantification (VVUQ) for a wide variety of simulations.
Science Score: 85.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 8 DOI reference(s) in README -
✓Academic publication links
Links to: researchgate.net -
✓Committers with academic emails
9 of 28 committers (32.1%) from academic institutions -
✓Institutional organization owner
Organization ucl-ccs has institutional domain (ccs.chem.ucl.ac.uk) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.8%) to scientific vocabulary
Keywords
Repository
Python 3 framework to facilitate verification, validation and uncertainty quantification (VVUQ) for a wide variety of simulations.
Basic Info
- Host: GitHub
- Owner: UCL-CCS
- License: lgpl-3.0
- Language: Jupyter Notebook
- Default Branch: dev
- Homepage: https://easyvvuq.readthedocs.io/
- Size: 32.7 MB
Statistics
- Stars: 97
- Watchers: 16
- Forks: 28
- Open Issues: 15
- Releases: 39
Topics
Metadata Files
README.md
EasyVVUQ
The aim of EasyVVUQ is to facilitate verification, validation and uncertainty quantification (VVUQ) for a wide variety of simulations. While very convenient for simple cases, EasyVVUQ is particularly well suited in situations where the simulations are computationally expensive, heterogeneous computing resources are necessary, the sampling space is very large or book-keeping is prohibitively complex. It coordinates execution using an efficient database, it is fault tolerant and all progress can be saved.
Here are some examples of questions EasyVVUQ can answer about your code:
- Given the uncertainties in input parameters, what is the distribution of the output?
- What percentage of the output variance each input parameter contributes?
It also lets you construct surrogate models that are cheaper to evaluate than the complete simulation.
The high-level overview of the library is available at our readthedocs.
Getting Started
For the quick start with EasyVVUQ we recommend to check our basic interactive tutorial available here.
Functionality
Available analysis and sampling methods:
- Polynomial Chaos Expansion
- Stochastic Collocation
- Dimension-adaptive Stochastic Collocation for high-dimensional inputs (incl notebook in
./tutorialsand theoretical tutorial) - Simplex Stochastic Collocation for irregular outputs (incl notebook in
./tutorialsand article) - Monte Carlo Sensitivity Analysis
- Markov-Chain Monte Carlo
EasyVVUQ also supports building surrogate models using:
- Polynomial Chaos Expansion
- Stochastic Collocation
- Gaussian Processes
Supported computing resources:
- Traditional clusters
- Kubernetes clusters
The easiest way to get familiar with the provided functionality is to follow the tutorials (*.ipynb files) in our Binder.
Installation instructions
Requirements
To use the library you will need Python 3.7+.
Installation using pip
If you are unsure of the version of python your default pip works for type:
pip --version
If the output ends with (python 2.7) you should replace pip with pip3 in the following commands.
The following should fully install the library:
pip install easyvvuq
To upgrade the library use:
pip install easyvvuq --upgrade
Installation from the Repository via Bash Script (Recommended for Developers)
Alternatively, you can manually install EasyVVUQ. Note: As above, you need to be sure you are installing for Python3 - if necessary replace pip with pip3 and python with python3 in the commands below.
- Clone the Repository:
git clone https://github.com/UCL-CCS/EasyVVUQ.git
- Install with Bash Script:
The installation of dependencies and testing have been automated using bash script install_EasyVVUQ.sh included in the repository. To execute it:
cd EasyVVUQ/
Make bash script executable:
chmod +x install_EasyVVUQ.sh
Execute bash script:
bash install_EasyVVUQ.sh
Upon successful installation, the process will end with the following message:
EasyVVUQ installation and testing completed successfully!
- Set the
PYTHONPATHEnvironment Variable After installation:
You may need to manually set the PYTHONPATH to ensure EasyVVUQ can be found by Python. This step is required if the library is installed locally within the repository using the provided venv.
While in EasyVVUQ directory, activate the virtual environment (Linux/macOS):
source venv/bin/activate
For Windows users, activate virtual environment using:
venv\Scripts\activate
Export PYTHONPATH:
export PYTHONPATH=$(pwd):$PYTHONPATH
Export PYTHONPATH site-packages according to your Python version (e.g., python3.10):
export PYTHONPATH=$(pwd)/venv/lib/python3.10/site-packages:$PYTHONPATH
Check PYTHONPATH:
python
python -c "import sys; print('\n'.join(sys.path))"
Manual Developer Installation From the Repository
Clone the Repository:
git clone https://github.com/UCL-CCS/EasyVVUQ.gitNavigate to the EasyVVUQ directory:
cd EasyVVUQCreate and Activate Virtual Environment:
Using a virtual environment isolates EasyVVUQ's dependencies and prevents conflicts with other Python projects.
You can create a Python Virtual Environment inside EasyVVUQ directory or outside it. Git is set to ignore venv
python3 -m venv venvActivate the virtual environment (Linux/macOS):
source venv/bin/activateInstall Required Packages using requirements.txt
pip install -r requirements.txtInstall EasyVVUQ in Editable Mode in Virtual Environment:
pip install -e .The
-eflag (editable mode) means any changes you make to the EasyVVUQ source code will be immediately reflected without needing to reinstall.To see easyvvuq in the list of the installed packages in the virtual environment:
pip listInstallation Verification:
After installation, verify the installation:
python python -c "import easyvvuq; print('EasyVVUQ version:', easyvvuq.__version__)"Output:
EasyVVUQ version: 1.2.3
API
You can find the EasyVVUQ API documentation on our GitHub Pages.
Contributing
We welcome contributions! Please see our Contributing Guidelines for details on:
- Setting up a development environment
- Code style and testing requirements
- Git commit guidelines
- Submitting pull requests
- Community guidelines
For bug reports and feature requests, please use GitHub Issues.
Citing EasyVVUQ
Richardson, R A, Wright, D W, Edeling, W, Jancauskas, V, Lakhlili, J and Coveney, P V. 2020 EasyVVUQ: A Library for Verification, Validation and Uncertainty Quantification in High Performance Computing. Journal of Open Research Software, 8: 11. DOI: 10.5334/jors.303.
Wright, D.W., Richardson, R.A., Edeling, W., Lakhlili, J., Sinclair, R.C., Jancauskas, V., Suleimenova, D., Bosak, B., Kulczewski, M., Piontek, T., Kopta, P., Chirca, I., Arabnejad, H., Luk, O.O., Hoenen, O., Weglarz, J., Crommelin, D., Groen, D. and Coveney, P.V. (2020), Building Confidence in Simulation: Applications of EasyVVUQ. Adv. Theory Simul., 3: 1900246. DOI: 10.1002/adts.201900246.
Acknowledgments
Development was funded by the EU Horizon 2020 project VECMA.
Owner
- Name: Centre for Computational Science (UCL)
- Login: UCL-CCS
- Kind: organization
- Location: London
- Website: http://ccs.chem.ucl.ac.uk/
- Repositories: 32
- Profile: https://github.com/UCL-CCS
Citation (CITATION.cff)
# YAML 1.2
---
abstract: "EasyVVUQ is an open source Python library designed to facilitate verification, validation and uncertainty quantification (VVUQ) for a wide variety of simulations. The goal of EasyVVUQ is to make it as easy as possible to implement advanced VVUQ techniques for existing application codes or workflows. Our aim is to expose these features in an accessible way for users of scientific software, in particular for simulation codes running on high performance computers."
authors:
-
affiliation: "Netherlands eScience Center"
family-names: Richardson
given-names: Robin A.
orcid: https://orcid.org/0000-0002-9984-2720
-
affiliation: "University College London"
family-names: Wright
given-names: David W.
orcid: https://orcid.org/0000-0002-5124-8044
-
affiliation: "Leibniz Supercomputing Centre"
family-names: Jancauskas
given-names: Vytautas
orcid: https://orcid.org/0000-0002-6051-210X
-
affiliation: "Centrum voor Wiskunde en Informatica"
family-names: Edeling
given-names: Wouter
orcid: https://orcid.org/0000-0003-4734-7960
-
affiliation: "Max-Planck-Institut für Plasmaphysik"
family-names: Lakhlili
given-names: Jalal
orcid: https://orcid.org/0000-0003-2900-1026
-
affiliation: "Max Planck Institute for Plasma Physics"
family-names: Coster
given-names: David P.
orcid: https://orcid.org/0000-0002-2470-9706
-
affiliation: "Universita della Svizzera italiana, Lugano"
family-names: Kardoš
given-names: Juraj
orcid: https://orcid.org/0000-0002-0197-5470
-
affiliation: "Brunel University London"
family-names: Groen
given-names: Derek
orcid: https://orcid.org/0000-0001-7463-3765
-
affiliation: "Poznań Supercomputing and Networking Centre"
family-names: Bosak
given-names: Bartosz
orcid: https://orcid.org/0000-0002-9331-3166
-
affiliation: "Centre for Computational Science, University College London"
family-names: McCullough
given-names: Jon
orcid: https://orcid.org/0000-0002-9606-0408
-
affiliation: "Brunel University London"
family-names: Suleimenova
given-names: Diana
orcid: https://orcid.org/0000-0003-4474-0943
-
affiliation: "Brunel University London"
family-names: Arabnejad
given-names: Hamid
orcid: https://orcid.org/0000-0002-0789-1825
-
affiliation: "University of York"
family-names: Hill
given-names: Peter
orcid: https://orcid.org/0000-0003-3092-1858
-
affiliation: "Brunel University London"
family-names: Ghorbani
given-names: Maziar
orcid: https://orcid.org/0000-0001-7284-9853
-
affiliation: "University College London"
family-names: Sinclair
given-names: Robert
orcid: https://orcid.org/0000-0003-0418-6415
-
affiliation: "Centrum Wiskunde en Informatica Amsterdam"
family-names: Jansson
given-names: Fredrik
orcid: https://orcid.org/0000-0003-4712-5938
-
affiliation: "University of Amsterdam"
family-names: van der Kolk
given-names: Max
orcid: https://orcid.org/0000-0001-5761-5776
-
affiliation: "Poznań Supercomputing and Networking Centre"
family-names: Chodkowski
given-names: Miłosz
-
affiliation: "University of York"
family-names: Dickinson
given-names: David
orcid: https://orcid.org/0000-0002-0868-211X
-
affiliation: "Brunel University London"
family-names: Harbach
given-names: Laura
orcid: https://orcid.org/0000-0001-7944-0292
-
family-names: Lebedev
given-names: Anton
keywords:
- "Validation"
- "Verification"
- "Uncertainty Quantification"
- "VVUQ"
- "HPC"
license: "GNU Lesser General Public License v3.0"
repository-code: "https://github.com/UCL-CCS/EasyVVUQ"
message: "If you use this software, please cite it using these metadata."
title: "EasyVVUQ: A Library for Verification, Validation and Uncertainty Quantification in High Performance Computing"
version: "0.7.1"
cff-version: "1.0.3"
references:
- type: article
title: "EasyVVUQ: A Library for Verification, Validation and Uncertainty Quantification in High Performance Computing"
doi: 10.5334/jors.303
- type: article
title: "Building Confidence in Simulation: Applications of EasyVVUQ"
doi: 10.1002/adts.201900246
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"type": "SoftwareSourceCode",
"author": [
{
"id": "https://orcid.org/0000-0002-9984-2720",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Netherlands eScience Center"
},
"familyName": "Richardson",
"givenName": "Robin A."
},
{
"id": "https://orcid.org/0000-0002-5124-8044",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "University College London"
},
"familyName": "Wright",
"givenName": "David W."
},
{
"id": "https://orcid.org/0000-0002-6051-210X",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Leibniz Supercomputing Centre"
},
"familyName": "Jancauskas",
"givenName": "Vytautas"
},
{
"id": "https://orcid.org/0000-0003-4734-7960",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Centrum voor Wiskunde en Informatica"
},
"familyName": "Edeling",
"givenName": "Wouter"
},
{
"id": "https://orcid.org/0000-0003-2900-1026",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Max-Planck-Institut fr Plasmaphysik"
},
"familyName": "Lakhlili",
"givenName": "Jalal"
},
{
"id": "https://orcid.org/0000-0002-2470-9706",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Max Planck Institute for Plasma Physics"
},
"familyName": "Coster",
"givenName": "David P."
},
{
"id": "https://orcid.org/0000-0002-0197-5470",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Universita della Svizzera italiana, Lugano"
},
"familyName": "Kardo",
"givenName": "Juraj"
},
{
"id": "https://orcid.org/0000-0001-7463-3765",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Brunel University London"
},
"familyName": "Groen",
"givenName": "Derek"
},
{
"id": "https://orcid.org/0000-0002-9331-3166",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Pozna Supercomputing and Networking Centre"
},
"familyName": "Bosak",
"givenName": "Bartosz"
},
{
"id": "https://orcid.org/0000-0002-9606-0408",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Centre for Computational Science, University College London"
},
"familyName": "McCullough",
"givenName": "Jon"
},
{
"id": "https://orcid.org/0000-0003-4474-0943",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Brunel University London"
},
"familyName": "Suleimenova",
"givenName": "Diana"
},
{
"id": "https://orcid.org/0000-0002-0789-1825",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Brunel University London"
},
"familyName": "Arabnejad",
"givenName": "Hamid"
},
{
"id": "https://orcid.org/0000-0003-3092-1858",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "University of York"
},
"familyName": "Hill",
"givenName": "Peter"
},
{
"id": "https://orcid.org/0000-0001-7284-9853",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Brunel University London"
},
"familyName": "Ghorbani",
"givenName": "Maziar"
},
{
"id": "https://orcid.org/0000-0003-0418-6415",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "University College London"
},
"familyName": "Sinclair",
"givenName": "Robert"
},
{
"id": "https://orcid.org/0000-0003-4712-5938",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Centrum Wiskunde en Informatica Amsterdam"
},
"familyName": "Jansson",
"givenName": "Fredrik"
},
{
"id": "https://orcid.org/0000-0001-5761-5776",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "University of Amsterdam"
},
"familyName": "van der Kolk",
"givenName": "Max"
},
{
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Pozna Supercomputing and Networking Centre"
},
"familyName": "Chodkowski",
"givenName": "Miosz"
},
{
"id": "https://orcid.org/0000-0002-0868-211X",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "University of York"
},
"familyName": "Dickinson",
"givenName": "David"
},
{
"id": "https://orcid.org/0000-0001-7944-0292",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Brunel University London"
},
"familyName": "Harbach",
"givenName": "Laura"
},
{
"type": "Person",
"familyName": "Lebedev",
"givenName": "Anton"
}
],
"codeRepository": "https://github.com/UCL-CCS/EasyVVUQ.git",
"dateCreated": "2018-07-20",
"dateModified": "2025-04-01",
"datePublished": "2018-12-14",
"description": "EasyVVUQ is an open source Python library designed to facilitate verification, validation and uncertainty quantification (VVUQ) for a wide variety of simulations. The goal of EasyVVUQ is to make it as easy as possible to implement advanced VVUQ techniques for existing application codes or workflows. Our aim is to expose these features in an accessible way for users of scientific software, in particular for simulation codes running on high performance computers.",
"downloadUrl": "https://github.com/UCL-CCS/EasyVVUQ/archive/refs/tags/v1.3.zip",
"funder": {
"type": "Organization",
"name": "EU Commission: VECMA Grant agreement ID: 800925"
},
"keywords": [
"Validation",
"Verification",
"Uncertainty Quantification",
"VVUQ",
"HPC"
],
"license": [
"https://spdx.org/licenses/LGPL-3.0-only",
"https://spdx.org/licenses/GPL-3.0"
],
"name": "EasyVVUQ",
"operatingSystem": [
"Linux",
"Windows",
"macOS"
],
"programmingLanguage": "Python 3",
"schema:releaseNotes": "\n Heavily revised and improved documentation.\n A range of fixes and enhancements based on the Hackathon in January 2025 by @wedeling in #440\n Changed sc_analysis.py to suppress divide by zero in Sobol index calculation, if a zero is present. (Unhandled divide by zero case in sc_analysis.py #415 )\n fixed plotting error of analysis.analysis.adaptation_table() fails #430\n Failures when running the non-regression tests manually (1) #387 closed\n Bump jinja2 from 3.1.5 to 3.1.6 by @dependabot in #443\n Improves EasyVVUQ installation script with better user experience by @mzrghorbani in #442\n Fixed pip installation (issue #445 by @wedeling in #446 )\n",
"version": "1.3",
"issueTracker": "https://github.com/UCL-CCS/EasyVVUQ/issues",
"referencePublication": "https://doi.org/10.5334/jors.303"
}
GitHub Events
Total
- Create event: 22
- Release event: 5
- Issues event: 28
- Watch event: 8
- Delete event: 20
- Member event: 3
- Issue comment event: 46
- Push event: 198
- Pull request review comment event: 7
- Pull request event: 48
- Pull request review event: 42
- Fork event: 2
Last Year
- Create event: 22
- Release event: 5
- Issues event: 28
- Watch event: 8
- Delete event: 20
- Member event: 3
- Issue comment event: 46
- Push event: 198
- Pull request review comment event: 7
- Pull request event: 48
- Pull request review event: 42
- Fork event: 2
Committers
Last synced: about 2 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| Vytautas Jancauskas | u****o@g****m | 1,347 |
| David W Wright | d****t@g****m | 452 |
| Robin Richardson | r****n@u****k | 437 |
| Robin Richardson | r****n@g****m | 188 |
| di73kuj2 | v****s@l****e | 184 |
| wouteredeling@gmail.com | w****g@g****m | 162 |
| Jalal Lakhlili | j****i@g****m | 121 |
| David Coster | D****r@i****e | 81 |
| Robin Richardson | r****1 | 48 |
| Juraj Kardos | g****o | 46 |
| Bartosz Bosak | b****k@m****l | 38 |
| Derek Groen | d****l@g****m | 26 |
| Robert Sinclair | r****5@u****k | 13 |
| Jalal Lakhlili | l****a@d****e | 12 |
| Jalal Lakhlili | j****i@i****e | 9 |
| Fredrik Jansson | j****n@c****l | 8 |
| Vytautas Janc_auskas | d****2@m****e | 6 |
| Diana Suleimenova | d****a@b****k | 5 |
| Hamid | h****d@g****m | 4 |
| Wouter Edeling | e****g@k****l | 3 |
| Peter Hill | z****e@g****m | 3 |
| Max van der Kolk | m****k@u****l | 2 |
| Jalal Lakhlili | l****a@d****e | 1 |
| Jalal | j****l@x****p | 1 |
| David Dickinson | d****9 | 1 |
| Anton-Le | l****t@g****t | 1 |
| LGTM Migrator | l****r | 1 |
| DianaS | 1****0@m****k | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 89
- Total pull requests: 61
- Average time to close issues: 4 months
- Average time to close pull requests: about 1 month
- Total issue authors: 11
- Total pull request authors: 10
- Average comments per issue: 3.51
- Average comments per pull request: 0.41
- Merged pull requests: 51
- Bot issues: 0
- Bot pull requests: 5
Past Year
- Issues: 8
- Pull requests: 19
- Average time to close issues: about 1 month
- Average time to close pull requests: 18 days
- Issue authors: 4
- Pull request authors: 6
- Average comments per issue: 0.63
- Average comments per pull request: 0.47
- Merged pull requests: 14
- Bot issues: 0
- Bot pull requests: 5
Top Authors
Issue Authors
- raar1 (32)
- dww100 (29)
- DavidPCoster (12)
- djgroen (7)
- wedeling (5)
- lauraharbach (3)
- bartoszbosak (2)
- mzrghorbani (1)
- jlakhlili (1)
- NicolasMonnier (1)
- mbergmann1324 (1)
- cspgdds (1)
- mvassaux (1)
Pull Request Authors
- raar1 (14)
- dww100 (13)
- bartoszbosak (11)
- DavidPCoster (10)
- djgroen (7)
- wedeling (5)
- dependabot[bot] (5)
- orbitfold (4)
- mzrghorbani (4)
- ZedThree (2)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 364 last-month
- Total dependent packages: 0
- Total dependent repositories: 4
- Total versions: 56
- Total maintainers: 3
pypi.org: easyvvuq
Library to facilitate simple Verification, Validation and Uncertainty Quantification of simulation codes
- Documentation: https://easyvvuq.readthedocs.io/en/dev/
- License: LGPL-3.0 AND GPL-3.0
-
Latest release: 1.2.3
published 7 months ago
Rankings
Maintainers (3)
Dependencies
- easyvvuq *
- SALib *
- SQLAlchemy *
- autopep8 *
- cerberus *
- chaospy ==4.3.2
- cloudpickle *
- dask *
- dask_jobqueue *
- dill *
- jinja2 *
- kubernetes *
- numpoly ==1.1.3
- numpy *
- pandas *
- pytest *
- pytest-benchmark *
- pytest-dependency *
- pytest-pep8 *
- qcg-pilotjob *
- qcg-pilotjob-executor-api *
- scikit-learn *
- scipy *
- squarify *
- tqdm *
- wheel *
- actions/checkout v2 composite
- actions/setup-python v2 composite
- rhysd/github-action-benchmark v1 composite
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/checkout v2 composite
- mr-smithers-excellent/docker-build-push v3.3 composite
- JamesIves/github-pages-deploy-action 4.1.2 composite
- actions/checkout v2.3.1 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- ubuntu latest build