{ "cells": [ { "cell_type": "markdown", "id": "73a4bdb4-d3fb-4392-b3ab-c31a2658a366", "metadata": {}, "source": [ "(getting_started)=\n", "# Getting started" ] }, { "cell_type": "markdown", "id": "e307fab9-fc7d-4211-b9c4-c11b58641b63", "metadata": {}, "source": [ "## Installation\n", "\n", "Install the [pyuncertainnumber](https://github.com/leslieDLcy/PyUncertainNumber) library from [PyPI](https://pypi.org/project/pyuncertainnumber/).\n", "\n", "```shell\n", "pip install pyuncertainnumber\n", "```\n", "\n", "```{important}\n", "A virtual enviroment is recommended for installation.\n", "\n", "Follow the [instructions](https://pyuncertainnumber.readthedocs.io/en/latest/guides/installation.html) for additional details on installing `pyuncertainnumber`.\n", "```" ] }, { "cell_type": "markdown", "id": "6d3f8385-f0eb-4e28-bcbe-5fc7d75e9017", "metadata": {}, "source": [ "`pyuncertainnumber` is underpinned by a framework of uncertain number which allows for a closed computation ecosystem whereby trustworthy computations can be conducted in a rigorous manner. It provides capabilities across the typical uncertainty analysis pipeline, encompassing characterisation, aggregation, propagation, and applications including reliability analysis and optimisation under uncertainty, especially with a focus on imprecise probabilities.\n", "\n", "`pyuncertainnumber` exposes APIs at different levels, including **high-level user-friendly APIs** best suited for new users to quickly start with uncertainty computations, and **low-level APIs** which allow experts to have more controls over the algorithm. Each scheme has its advantages and the best uses will certainly depend on the user cases." ] }, { "cell_type": "markdown", "id": "bcef17ee-3e50-4323-89de-9a2b4a09bb18", "metadata": {}, "source": [ "## High-level `Uncertain Number` APIs\n", "\n", "As the name `pyuncertainnumber` suggests, the concept of *uncertain number* is the core to the uncertainty computation. The high-level APIs aim to give users a simple and straightforward syntax to quickly get on without worrying too much underlying nuances. Indeed, *uncertain number* is the umbrella term encompassing a wide range of uncertainty models and high-level APIs aims to allow users to perform calculations directly and consistently on uncertain numbers objects no matter what exactly the underlying uncertainty model (i.e. construct) they may be. Whatever the construct, it is an uncertain number.\n", "\n", "\n", "```{important}\n", "See the tutorial notebook [what is an uncertain number](./what_is_un.ipynb) for a better understanding of what \"uncertain numbers\" are.\n", "```\n", "\n", "Typically, this scheme will start with the import statement `import pyuncertainnumber as pun`. As illustrated below, with the high-level APIs, analysts can accomplish the *uncertainty charactertion-aggregation-propagation* workflow in only several lines of codes." ] }, { "cell_type": "markdown", "id": "74424c50-f631-4e59-a81b-f07ba5e33dea", "metadata": {}, "source": [ "```{tip}\n", "Some more examples of the high-level API can be found in [examples](https://pyuncertainnumber.readthedocs.io/en/latest/examples/index.html).\n", "```" ] }, { "cell_type": "code", "execution_count": null, "id": "b7234abf-f0c0-4d4d-9c6b-ef2c0dea7e7f", "metadata": {}, "outputs": [], "source": [ "%load_ext rich\n", "import pyuncertainnumber as pun\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 23, "id": "86ce05f0-37b5-484b-8756-1df24d3e48c7", "metadata": {}, "outputs": [], "source": [ "# construct uncertain numbers\n", "x0 = pun.normal([2,3], [1])\n", "\n", "expert_a = pun.I(1,5)\n", "expert_b = pun.I(3,6)\n", "expert_c = pun.I(2,3)\n", "expert_d = pun.I(2,9)\n", "\n", "# specify a response function\n", "def foo(x): return x[0] ** 3 + x[1] + 2" ] }, { "cell_type": "code", "execution_count": 24, "id": "12207f34-e7bf-4d2b-8303-3f42086f09a3", "metadata": {}, "outputs": [], "source": [ "# aggregation\n", "\n", "x1 = pun.stochastic_mixture(expert_a, expert_b, expert_c, expert_d)" ] }, { "cell_type": "code", "execution_count": 25, "id": "c93449bd-95ee-478c-ab27-e2df9ec67ab2", "metadata": {}, "outputs": [], "source": [ "# intrusive call signature which allows for drop-in replacements\n", "response1 = foo([x0, x1])" ] }, { "cell_type": "code", "execution_count": 26, "id": "f0cac0fd-bd6d-4bd2-a4a8-c287b3620429", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO: mixed uncertainty propagation\n" ] } ], "source": [ "# alternatively, one can use a more generic call signature for propagation\n", "p = pun.Propagation(vars=[x0, x1], func=foo, method='slicing', interval_strategy='direct')\n", "response2 = p.run(n_slices=100)" ] }, { "cell_type": "code", "execution_count": 27, "id": "d5c3e752-450a-4b53-88e3-4f33291f4c5c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 64\u001b[0m\u001b[1;36m0x480\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "response2.plot(ax=ax, bound_colors=['purple', 'purple'], fill_color='salmon', label='non-intrusive')\n", "response1.plot(ax=ax, style='simple', label='intrusive')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "0e9eeac1-76cb-42a9-9dd1-6782330aeef5", "metadata": {}, "source": [ "```{note}\n", "**Perks of the `Uncertain Number` APIs**\n", "Besides simplicity, the high-level APIs will also normally bring some additional capabilities. For example, the `pun.I()` constructor allows parsing capability for various types of inputs and will dynamically dispatch the right path. Notably, it supports deciphering the uncertainty indicated in everyday colloquialism such as \"about 7\" or \"[7 +- 10%]\". Further, this constructor can show the **significance** of the uncertainty indicated by the significant digits of a number.\n", "```" ] }, { "cell_type": "code", "execution_count": 3, "id": "8286fbb1-9503-4dc7-ac1b-34670526fcfe", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[1;35mUncertainNumber\u001b[0m\u001b[1m(\u001b[0m\u001b[33messence\u001b[0m=\u001b[32m'interval'\u001b[0m, \u001b[33mintervals\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m7.0\u001b[0m,\u001b[1;36m7.0\u001b[0m\u001b[1m]\u001b[0m, \u001b[33m_construct\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m7.0\u001b[0m,\u001b[1;36m7.0\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mnominal_value\u001b[0m=\u001b[1;36m7\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[1m)\u001b[0m" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pun.I(7.0)" ] }, { "cell_type": "code", "execution_count": 4, "id": "61dfd536-a9d1-44f5-8648-b1e0bd4dcd1a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[1;35mUncertainNumber\u001b[0m\u001b[1m(\u001b[0m\u001b[33messence\u001b[0m=\u001b[32m'interval'\u001b[0m, \u001b[33mintervals\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m5.0\u001b[0m,\u001b[1;36m9.0\u001b[0m\u001b[1m]\u001b[0m, \u001b[33m_construct\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m5.0\u001b[0m,\u001b[1;36m9.0\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mnominal_value\u001b[0m=\u001b[1;36m7\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[1m)\u001b[0m" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pun.I(\"about 7\")" ] }, { "cell_type": "code", "execution_count": 7, "id": "525ee972-8a3b-4d5e-afdb-d989b850b562", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[1;35mUncertainNumber\u001b[0m\u001b[1m(\u001b[0m\u001b[33messence\u001b[0m=\u001b[32m'interval'\u001b[0m, \u001b[33mintervals\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m6.3\u001b[0m,\u001b[1;36m7.7\u001b[0m\u001b[1m]\u001b[0m, \u001b[33m_construct\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m6.3\u001b[0m,\u001b[1;36m7.7\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mnominal_value\u001b[0m=\u001b[1;36m7\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[1m)\u001b[0m" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pun.I(\"[7 +- 10%]\")" ] }, { "cell_type": "code", "execution_count": 9, "id": "f30463ca-4984-4a97-a15c-d3ea59dd10aa", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[1;35mUncertainNumber\u001b[0m\u001b[1m(\u001b[0m\u001b[33messence\u001b[0m=\u001b[32m'interval'\u001b[0m, \u001b[33mintervals\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m6.95\u001b[0m,\u001b[1;36m7.05\u001b[0m\u001b[1m]\u001b[0m, \u001b[33m_construct\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m6.95\u001b[0m,\u001b[1;36m7.05\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mnominal_value\u001b[0m=\u001b[1;36m7\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[1m)\u001b[0m" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pun.I(\"7.0\")" ] }, { "cell_type": "code", "execution_count": 10, "id": "1168a5fa-b32b-4757-9a9a-c3f0698a7e16", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[1;35mUncertainNumber\u001b[0m\u001b[1m(\u001b[0m\u001b[33messence\u001b[0m=\u001b[32m'interval'\u001b[0m, \u001b[33mintervals\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m6.995\u001b[0m,\u001b[1;36m7.005\u001b[0m\u001b[1m]\u001b[0m, \u001b[33m_construct\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;36m6.995\u001b[0m,\u001b[1;36m7.005\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mnominal_value\u001b[0m=\u001b[1;36m7\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[1m)\u001b[0m" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pun.I(\"7.00\")" ] }, { "cell_type": "markdown", "id": "2a9c8819-6869-4e97-8136-3452015838d6", "metadata": {}, "source": [ "## Low-level `pba` APIs\n", "\n", "On the other hand, **low-level APIs provide interfaces for deeper controls and customisation**, which enables advanced usage and extension, since low-level APIs expose additional controls. Often when facing with complicated modelling problems (say repeated variable problem, non-monotonicity,etc.), analysts will need to tweak the workflow to suit their needs and this is the way to go. In the above example of uncertainty characterisation and propagation, low-level functions call be called:" ] }, { "cell_type": "code", "execution_count": 20, "id": "8e42c88b-10a4-44c4-a984-31501ca559fd", "metadata": {}, "outputs": [], "source": [ "from pyuncertainnumber import pba\n", "import pyuncertainnumber.propagation.mixed_uncertainty.mixed_up as mix" ] }, { "cell_type": "code", "execution_count": 36, "id": "e7a38d79-f692-4dd1-832b-c0d6b61a50e6", "metadata": {}, "outputs": [], "source": [ "# construct a Pbox object\n", "x0 = pba.normal([2,3], [1]) " ] }, { "cell_type": "code", "execution_count": 37, "id": "1be08ec7-407f-4ff2-a779-1818d2c39f2f", "metadata": {}, "outputs": [], "source": [ "# construct Interval objects\n", "expert_a = pba.I(1,5)\n", "expert_b = pba.I(3,6)\n", "expert_c = pba.I(2,3)\n", "expert_d = pba.I(2,9)" ] }, { "cell_type": "code", "execution_count": 38, "id": "603c6f35-5ef7-43db-af11-e1a755bb0109", "metadata": {}, "outputs": [], "source": [ "# aggregate intervals into a Dempster Shafer structure\n", "x1 = pba.stacking([expert_a, expert_b, expert_c, expert_d])" ] }, { "cell_type": "code", "execution_count": 46, "id": "43fc07bb-9f3b-4f26-bdea-9c2de789f6c7", "metadata": {}, "outputs": [], "source": [ "response3 = mix.slicing(\n", " vars=[x0, x1], \n", " func=foo, \n", " interval_strategy='direct', \n", " n_slices=100\n", ") " ] }, { "cell_type": "code", "execution_count": 48, "id": "ba8b3445-9f9c-4b18-87b0-6bb292590b55", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 64\u001b[0m\u001b[1;36m0x480\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "response3.display(label='low level propagation')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.10" } }, "nbformat": 4, "nbformat_minor": 5 }