UQTestFuns

UQTestFuns: A Python3 library of uncertainty quantification (UQ) test functions - Published in JOSS (2023)

https://github.com/damar-wicaksono/uqtestfuns

Science Score: 100.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 11 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    1 of 3 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

metamodeling python reliability-analysis sensitivity-analysis test-functions uncertainty-quantification
Last synced: 4 months ago · JSON representation ·

Repository

A Python3 library of test functions from the uncertainty quantification community with a common interface for validation and benchmarking purposes.

Basic Info
Statistics
  • Stars: 8
  • Watchers: 1
  • Forks: 1
  • Open Issues: 25
  • Releases: 9
Topics
metamodeling python reliability-analysis sensitivity-analysis test-functions uncertainty-quantification
Created almost 4 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation

README.md

UQTestFuns

JOSS DOI Code style: black Python 3.7 License PyPI

| Branches | Status | |:--------------------------------------------------------------------------:|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | main (stable) | build codecov Docs | | dev (latest) | build codecov Docs |

UQTestFuns is an open-source Python3 library of test functions commonly used within the applied uncertainty quantification (UQ) community. Specifically, the package provides:

  • an implementation with minimal dependencies (i.e., NumPy and SciPy) and a common interface of many test functions available in the UQ literature
  • a single entry point collecting test functions and their probabilistic input specifications in a single Python package
  • an opportunity for an open-source contribution, supporting the implementation of new test functions or posting reference results.

In short, UQTestFuns is an homage to the Virtual Library of Simulation Experiments (VLSE).

Usage

UQTestFuns includes several commonly used test functions in the UQ community. To list the available functions:

```python-repl

import uqtestfuns as uqtf uqtf.list_functions() +-------+-------------------------------+-----------+------------+----------+---------------+--------------------------------+ | No. | Constructor | # Input | # Output | Param. | Application | Description | +=======+===============================+===========+============+==========+===============+================================+ | 1 | Ackley() | M | 1 | True | optimization, | Optimization test function | | | | | | | metamodeling | from Ackley (1987) | +-------+-------------------------------+-----------+------------+----------+---------------+--------------------------------+ | 2 | Alemazkoor20D() | 20 | 1 | False | metamodeling | High-dimensional low-degree | | | | | | | | polynomial from Alemazkoor & | | | | | | | | Meidani (2018) | +-------+-------------------------------+-----------+------------+----------+---------------+--------------------------------+ | 3 | Alemazkoor2D() | 2 | 1 | False | metamodeling | Low-dimensional high-degree | | | | | | | | polynomial from Alemazkoor & | | | | | | | | Meidani (2018) | +-------+-------------------------------+-----------+------------+----------+---------------+--------------------------------+ | 4 | Borehole() | 8 | 1 | False | metamodeling, | Borehole function from Harper | | | | | | | sensitivity | and Gupta (1983) | +-------+-------------------------------+-----------+------------+----------+---------------+--------------------------------+ ... ```

Consider the Borehole function, a test function commonly used for metamodeling and sensitivity analysis purposes; to create an instance of this test function:

```python-repl

mytestfun = uqtf.Borehole() print(mytestfun) Function ID : Borehole Input Dimension : 8 (fixed) Output Dimension : 1 Parameterized : False Description : Borehole function from Harper and Gupta (1983) Applications : metamodeling, sensitivity ```

The probabilistic input specification of this test function is built-in:

```python-repl

print(mytestfun.probinput) Function ID : Borehole Input ID : Harper1983 Input Dimension : 8 Description : Probabilistic input model of the Borehole model from Harper and Gupta (1983) Marginals :

No. Name Distribution Parameters Description


1 rw normal [0.1 0.0161812] radius of the borehole [m] 2 r lognormal [7.71 1.0056] radius of influence [m] 3 Tu uniform [ 63070. 115600.] transmissivity of upper aquifer [m^2/year] 4 Hu uniform [ 990. 1100.] potentiometric head of upper aquifer [m] 5 Tl uniform [ 63.1 116. ] transmissivity of lower aquifer [m^2/year] 6 Hl uniform [700. 820.] potentiometric head of lower aquifer [m] 7 L uniform [1120. 1680.] length of the borehole [m] 8 Kw uniform [ 9985. 12045.] hydraulic conductivity of the borehole [m/year]

Copulas : Independence ```

A sample of input values can be generated from the input model:

```python-repl

xx = mytestfun.probinput.get_sample(10) array([[8.40623544e-02, 2.43926544e+03, 8.12290909e+04, 1.06612711e+03, 7.24216436e+01, 7.78916695e+02, 1.13125867e+03, 1.02170796e+04], [1.27235295e-01, 3.28026293e+03, 6.36463631e+04, 1.05132831e+03, 6.81653728e+01, 8.17868370e+02, 1.16603931e+03, 1.09370944e+04], [8.72711602e-02, 7.22496512e+02, 9.18506063e+04, 1.06436843e+03, 6.44306474e+01, 7.74700231e+02, 1.46266808e+03, 1.12531788e+04], [1.22301709e-01, 2.29922122e+02, 8.00390345e+04, 1.05290108e+03, 1.10852262e+02, 7.94709283e+02, 1.28026313e+03, 1.01879077e+04], ... ```

...and used to evaluate the test function:

```python-repl

yy = my_testfun(xx) array([ 57.32635774, 110.12229548, 53.10585812, 96.15822154, 58.51714875, 89.40068404, 52.61710076, 61.47419171, 64.18005235, 79.00454634]) ```

Installation

You can obtain UQTestFuns directly from PyPI using pip:

bash $ pip install uqtestfuns

Alternatively, you can also install the latest version from the source:

bash pip install git+https://github.com/damar-wicaksono/uqtestfuns.git

NOTE: UQTestFuns is currently work in progress, therefore interfaces are subject to change.

It's a good idea to install the package in an isolated virtual environment.

Getting help

For a getting-started guide on UQTestFuns, please refer to the Documentation. The documentation also includes details on each of the available test functions.

For any other questions related to the package, post your questions on the GitHub Issue page.

Package development and contribution

UQTestFuns is under ongoing development; any contribution to the code (for example, a new test function) and the documentation (including new reference results) are welcomed!

Please consider the Contribution Guidelines first, before making a pull request.

Citing UQTestFuns

If you use this package in your research or projects, please consider citing both the associated paper and the Zenodo archive (for the specific version used).

Citing the paper (JOSS)

The citation of the paper associated with this package is:

bibtex @article{Wicaksono2023, author = {Wicaksono, Damar and Hecht, Michael}, title = {{UQTestFuns}: A {Python3} library of uncertainty quantification ({UQ}) test functions}, journal = {Journal of Open Source Software}, year = {2023}, volume = {8}, number = {90}, doi = {10.21105/joss.05671}, }

Citing a specific version (Zenodo)

To ensure reproducibility, cite the exact version of the package you used. Each release is archived on Zenodo with a unique DOI; find and use the DOI for the version you used at Zenodo.

The citation for the current public version is:

bibtex @software{UQTestFuns_0_6_0, author = {Wicaksono, Damar and Hecht, Michael}, title = {{UQTestFuns: A Python3 Library of Uncertainty Quantification (UQ) Test Functions}}, month = jan, year = 2025, publisher = {Zenodo}, version = {v0.6.0}, doi = {10.5281/zenodo.14710452}, url = {https://doi.org/10.5281/zenodo.14710452} }

Credits and contributors

This work was partly funded by the Center for Advanced Systems Understanding (CASUS) which is financed by Germany's Federal Ministry of Education and Research (BMBF) and by the Saxony Ministry for Science, Culture and Tourism (SMWK) with tax funds on the basis of the budget approved by the Saxony State Parliament.

UQTestFuns is currently maintained by:

under the Mathematical Foundations of Complex System Science Group led by Michael Hecht (HZDR/CASUS) at CASUS.

License

UQTestFuns is released under the MIT License.

Owner

  • Name: Damar Wicaksono
  • Login: damar-wicaksono
  • Kind: user
  • Location: Görlitz, Germany

JOSS Publication

UQTestFuns: A Python3 library of uncertainty quantification (UQ) test functions
Published
October 30, 2023
Volume 8, Issue 90, Page 5671
Authors
Damar Wicaksono ORCID
Center for Advanced Systems Understanding (CASUS) - Helmholtz-Zentrum Dresden-Rossendorf (HZDR), Germany
Michael Hecht ORCID
Center for Advanced Systems Understanding (CASUS) - Helmholtz-Zentrum Dresden-Rossendorf (HZDR), Germany
Editor
Nikoleta Glynatsi ORCID
Tags
test functions benchmark uncertainty quantification metamodeling surrogate modeling sensitivity analysis reliability analysis rare event estimation

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: UQTestFuns
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Damar
    family-names: Wicaksono
    affiliation: CASUS/HZDR
    orcid: 'https://orcid.org/0000-0001-8587-7730'
  - given-names: Michael
    family-names: Hecht
    affiliation: CASUS/HZDR
    orcid: 'https://orcid.org/0000-0001-9214-8253'
identifiers:
  - type: doi
    value: 10.5281/zenodo.14710452
    description: The Zenodo URL of version 0.6.0 of the package
repository-code: 'https://github.com/damar-wicaksono/uqtestfuns'
url: 'https://uqtestfuns.readthedocs.io/en/latest/'
repository-artifact: 'https://pypi.org/project/uqtestfuns/'
abstract: >-
  UQTestFuns is an open-source Python3 library of test
  functions commonly used within the uncertainty
  quantification (UQ) community. The package aims to provide
  an implementation with minimal dependencies and a common interface
  of many test functions available in the UQ literature,
  a single entry point collecting test functions and their probabilistic
  input specifications in a single Python package,
  and an opportunity for an open-source contribution,
  supporting the implementation of new test functions
  or posting reference results.
keywords:
  - uncertainty-quantification
  - test-functions
  - sensitivity-analysis
  - metamodeling
  - reliability-analysis
  - surrogate-modeling
license: MIT
version: 0.6.0
date-released: '2025-01-21'

GitHub Events

Total
  • Create event: 46
  • Release event: 2
  • Issues event: 72
  • Delete event: 49
  • Issue comment event: 57
  • Push event: 93
  • Pull request event: 112
  • Fork event: 1
Last Year
  • Create event: 46
  • Release event: 2
  • Issues event: 72
  • Delete event: 49
  • Issue comment event: 57
  • Push event: 93
  • Pull request event: 112
  • Fork event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 377
  • Total Committers: 3
  • Avg Commits per committer: 125.667
  • Development Distribution Score (DDS): 0.008
Past Year
  • Commits: 82
  • Committers: 1
  • Avg Commits per committer: 82.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Damar Wicaksono d****o@o****m 374
Daniel S. Katz d****z@i****g 2
Damar Canggih Wicaksono w****2@f****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 182
  • Total pull requests: 153
  • Average time to close issues: 3 months
  • Average time to close pull requests: about 4 hours
  • Total issue authors: 4
  • Total pull request authors: 2
  • Average comments per issue: 1.08
  • Average comments per pull request: 0.35
  • Merged pull requests: 152
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 24
  • Pull requests: 64
  • Average time to close issues: 9 days
  • Average time to close pull requests: 20 minutes
  • Issue authors: 2
  • Pull request authors: 1
  • Average comments per issue: 0.71
  • Average comments per pull request: 0.11
  • Merged pull requests: 64
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • damar-wicaksono (182)
  • JaninaSchreiber (1)
  • regislebrun (1)
  • AdelaHlobilova (1)
Pull Request Authors
  • damar-wicaksono (207)
  • danielskatz (1)
Top Labels
Issue Labels
enhancement (106) documentation (72) uq-test-function (60) organization (29) bug (20) prob-input (15) sensitivity (15) metamodeling (14) core (11) JOSS (6) refactoring (5) in-progress (1) reliability (1)
Pull Request Labels
documentation (109) enhancement (107) uq-test-function (72) metamodeling (28) core (25) organization (24) sensitivity (23) bug (16) refactoring (12) JOSS (3) reliability (2) prob-input (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 43 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 8
  • Total maintainers: 1
pypi.org: uqtestfuns

A Python3 library of test functions from the uncertainty quantification community with a common interface for benchmarking purpose.

  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 43 Last month
Rankings
Dependent packages count: 6.6%
Average: 27.5%
Forks count: 30.5%
Downloads: 30.5%
Dependent repos count: 30.6%
Stargazers count: 39.1%
Maintainers (1)
Last synced: 4 months ago

Dependencies

.github/workflows/draft-pdf.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
.github/workflows/main.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4.0.0 composite
  • actions/upload-artifact v3 composite
  • codecov/codecov-action v3 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/mirror.yml actions
  • actions/checkout v3 composite
  • spyoungtech/mirror-action master composite
docs/requirements.txt pypi
  • jupyter-book *
  • matplotlib *
  • numpy *
pyproject.toml pypi