Skip to main content

A library containing functions used for estimating uncertainties

Project description

uncertaintylib logo

uncertaintylib is a Python library for estimating and propagating uncertainties in engineering and scientific calculations. It is designed to work with any Python function whose inputs and outputs are flat dictionaries.

Key Principles

  • Function-agnostic: You can pass any Python function to the library, as long as its inputs and outputs are flat dictionaries (no nested dicts or lists).
  • Standard-inspired: Attempts to follow uncertainty propagation principles outlined in JCGM 100:2008 (Guide to the Expression of Uncertainty in Measurement).

Installation

Install from PyPI:

pip install uncertaintylib

Usage

The main interface is through functions in uncertaintylib.uncertainty_functions. You provide:

  • A Python function (inputs: flat dict, outputs: flat dict)
  • A dictionary containing 'mean' and 'standard_uncertainty' for each variable. These are provided as sub dictionaries.
  • The standard uncertainty can also be given in relative terms (%), using the 'standard_uncertainty_percent' key
  • If both 'standard_uncertainty' and 'standard_uncertainty_percent', the largest of the two will be used. This can be useful for variables where for example noise dominates the uncertainty in the lower region (such as zero stability of a coriolis massflow meter)
  • 'min' and 'max' are only used in Monte Carlo calculations, to address the issue of non-physical distributions (for example distribution of mole-% of a component going below 0)
  • 'distribution' is used mainly by Monte Carlo, but also in cases where some of the inputs are settings (for example 0 or 1), where you dont want to pertubate or calculate sensitivity coefficients for that spesific input variable. In this case 'distribution' can be set to 'none', which will ignore that parameter.

Example usage (standard uncertainty calculation):

from uncertaintylib import uncertainty_functions

inputs = {
    'mean': {'Q': 370, 'rho': 54},
    'standard_uncertainty': {'Q': 1, 'rho': 0.03},
    'standard_uncertainty_percent': {'Q': 0.25, 'rho': 0.1},
    'distribution': {'Q': 'normal', 'rho': 'normal'},
    'min': {'Q': 0, 'rho': 0},
    'max': {'Q': None, 'rho': None}
}

def calculate_massflow(inputs):
    outputs = {}
    
    outputs['MassFlow'] = inputs['Q']*inputs['rho']

    return outputs

results = uncertainty_functions.calculate_uncertainty(
    indata=inputs, 
    function=calculate_massflow
    )

print(results)

Another example, Example 06, demonstrates uncertainty calculations for a natural gas metering station, demonstrating usage of many of the functions available in this library.

Plotting Functionalities

uncertaintylib includes plotting utilities based on matplotlib, available in uncertaintylib.plot_functions. These functions help visualize uncertainty propagation and contributions:

  • Monte Carlo Distribution Plots: Visualize the distribution of output properties from Monte Carlo simulations, including summary tables of mean and uncertainty.
  • Uncertainty Contribution Plots: Show the percentage contribution of each input variable to the total expanded uncertainty of an output property.

All plots are generated using matplotlib and can be customized or saved using standard matplotlib methods. See the API docstrings in plot_functions.py for details.

Documentation & Examples

  • See the examples/ folder for practical scripts demonstrating usage.
  • API documentation is available in the source code docstrings.

License

MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uncertaintylib-1.0.1.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uncertaintylib-1.0.1-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file uncertaintylib-1.0.1.tar.gz.

File metadata

  • Download URL: uncertaintylib-1.0.1.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for uncertaintylib-1.0.1.tar.gz
Algorithm Hash digest
SHA256 23ed5321adf61e93147fcbcbc04febf5d8f9ca086a146fb1385ec4d48fc12c08
MD5 91faad7a30b0b00f6159a7bb64696421
BLAKE2b-256 0596f469e740e04b8596a762b6c12ba17c8d92bd36620de09c55d2c0117759b3

See more details on using hashes here.

File details

Details for the file uncertaintylib-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: uncertaintylib-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for uncertaintylib-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bf241de8b7cccf13aeb4318a9c39d189cc125c5c9a191e0da070b4826344026f
MD5 8b06d03efe90f8b0624b92ab855aa595
BLAKE2b-256 63459117cbb7bf25292d2b69265a32437b26c22b3999e1ff8bb16ff11b64f220

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page