Skip to main content

UQTestFuns


JOSS DOI Hatch Ruff Python License PyPI

Branches Status
main (stable) build codecov Docs
dev (latest) build codecov Docs

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

  • an implementation of many test functions available in the UQ literature, with a consistent interface and minimal dependencies (i.e., NumPy, SciPy, PyYAML, and tabulate)
  • a single entry point collecting test functions and their probabilistic input specifications in one Python package
  • an opportunity for open-source contributions, such as implementing 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:

>>> import uqtestfuns as uqtf
>>> uqtf.list_functions()
+-------+-----------------------+-----------+---------------+--------------------------------+
|  No.  | Constructor           |  # Input  | Application   | Description                    |
+=======+=======================+===========+===============+================================+
|   1   | Ackley()              |     M     | optimization, | Optimization test function     |
|       |                       |           | metamodeling  | from Ackley (1987)             |
+-------+-----------------------+-----------+---------------+--------------------------------+
|   2   | Alemazkoor20D()       |    20     | metamodeling  | High-dimensional high-degree   |
|       |                       |           |               | polynomial from Alemazkoor and |
|       |                       |           |               | Meidani (2018)                 |
+-------+-----------------------+-----------+---------------+--------------------------------+
|   3   | Alemazkoor2D()        |     2     | metamodeling  | Two-dimensional high-degree    |
|       |                       |           |               | polynomial from Alemazkoor and |
|       |                       |           |               | Meidani (2018)                 |
+-------+-----------------------+-----------+---------------+--------------------------------+
|   4   | Borehole()            |     8     | metamodeling, | Eight-dimensional water flow   |
|       |                       |           | sensitivity   | model through a borehole from  |
|       |                       |           |               | Harper 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:

>>> my_testfun = uqtf.Borehole()
>>> print(my_testfun)
Name          : Borehole
Description   : Eight-dimensional water flow model through a borehole from Harper and Gupta (1983)
Input dim.    : 8
Output dim.   : 1
Parameterized : False

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

>>> print(my_testfun.prob_input)
Name      : Harper1983
Dimension : 8
Marginals :

 No.    Variable   Distribution                      Description
-----  ----------  --------------------------------  -----------------------------------------------
  1        rw      Normal(mu=0.1, sigma=0.0161812)   Radius of the borehole [m]
  2        r       LogNormal(mu=7.71, sigma=1.0056)  Radius of influence [m]
  3        Tu      Uniform(a=63070, b=115600)        Transmissivity of upper aquifer [m^2/year]
  4        Hu      Uniform(a=990, b=1100)            Potentiometric head of upper aquifer [m]
  5        Tl      Uniform(a=63.1, b=116)            Transmissivity of lower aquifer [m^2/year]
  6        Hl      Uniform(a=700, b=820)             Potentiometric head of lower aquifer [m]
  7        L       Uniform(a=1120, b=1680)           Length of the borehole [m]
  8        Kw      Uniform(a=9985, b=12045)          Hydraulic conductivity of the borehole [m/year]

Copulas   : Independence

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

>>> xx = my_testfun.prob_input.get_sample(3)
>>> xx
array([[1.14767352e-01, 2.03186041e+03, 7.22520341e+04, 1.08721577e+03,
        6.72807052e+01, 7.32078512e+02, 1.25201069e+03, 1.19356620e+04],
       [1.10369118e-01, 1.67792766e+03, 8.95368986e+04, 1.00066209e+03,
        6.98963053e+01, 8.12938360e+02, 1.39096239e+03, 1.06572602e+04],
       [9.35256001e-02, 5.87630961e+02, 9.42363505e+04, 1.00844966e+03,
        1.04179964e+02, 7.67443161e+02, 1.51149823e+03, 1.11376654e+04]])

...and used to evaluate the test function:

>>> yy = my_testfun(xx)
>>> yy
array([138.82622459,  54.69015322,  48.66889977])

Installation

You can obtain UQTestFuns directly from PyPI using pip:

$ pip install uqtestfuns

Alternatively, you can also install the latest version from the source, including changes not yet published to PyPI:

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

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

It's a good idea to install the package in an isolated virtual environment. See the documentation for Python version requirements and more detailed instructions.

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 Issues 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, please cite both the paper and the software archive, or use the citation metadata in CITATION.cff. The documentation provides a ready-to-use BibTeX entry for the paper, guidance on citing the specific version you used, and instructions on citing individual test functions.

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:

The project was originally developed under the Mathematical Foundations of Complex System Science Group led by Michael Hecht at CASUS.

Contributors:

  • Daniel S. Katz: editorial contributions to the JOSS paper during review

See AUTHORS.md for the full, up-to-date list.

License

UQTestFuns is released under the MIT License.

Metadata

Release files for uqtestfuns 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uqtestfuns 0.7.0
File Size Uploaded
uqtestfuns-0.7.0.tar.gz 1.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for uqtestfuns 0.7.0
File Interpreter ABI Platform
uqtestfuns-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.8 MB

Release files / uqtestfuns-0.7.0.tar.gz

Download URL uqtestfuns-0.7.0.tar.gz
Size 1.6 MB
Tags Source
SHA-256 checksum
How to use checksums
4db0b58bbd5b90b05ae1da3c1430d1ea8bcda2b887d0bf41057150e7ab1c88f8
BLAKE2b-256 checksum
How to use checksums
b520ad683e6a7c2dbf5d7df97d880102de85ce1bf800814dc93e99339a7cdde8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / uqtestfuns-0.7.0-py3-none-any.whl

Download URL uqtestfuns-0.7.0-py3-none-any.whl
Size 189.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0b866199ff00298eb7780ac933892aaa81f8ae70c8057c01f75fe211904303cf
BLAKE2b-256 checksum
How to use checksums
bd35683e8482e03035f59a6336a4df12b1acdf82551cc8ac36fbe562a123260b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page