# Welcome to Uncertainty Wrapper’s documentation!¶

Version: 0.4.2a1 (Terreneuvian Series)

Contents:

# UncertaintyWrapper¶

Use @unc_wrapper decorator to wrap any Python callable to append the covariance and Jacobian matrices to the return values. See documentation and tests for usage and examples.

## Installation¶

Use pip install UncertaintyWrapper to install from PyPI or download a source distribution, extract and use python setup.py install.

## Usage¶

Example:

from uncertainty_wrapper import unc_wraper
import numpy as np

@unc_wrapper
def f(x):
return np.exp(x)

x, cov = np.array([[1.0]]), np.array([[0.1]])
f(x, __covariance__=cov)


Returns:

(array([[ 2.71828183]]),      # exp(1.0)
array([[[ 0.73890561]]]),    # (delta-f)^2 = (df/dx)^2 * (delta-x)^2
array([[[ 2.71828183]]]))    # df/dx = exp(x)


## History¶

Releases are named after geological eons, periods and epochs.

### v0.4.1Paleozoic Era¶

• Jagged arrays of covariance keys work now.

• simplify

### v0.4Phanerozoic Era¶

• Fixes #5, ValueError if covariance keys have multiple observations

• fix covariance cross terms not scaled correctly

### v0.3.3Neoproterozoic Era¶

• Fixes #4, ValueError if just one observation

### v0.3.2Mesoproterozoic Era¶

• Fixes #2, don’t need to tile scalar x for multiple observations

• Fixes #3, use sparse matrices for dot product instead of dense

• uses pvlib example instead of proprietary solar_utils

### v0.3.1Paleoproterozoic Era¶

• Fixes #1 works with Pint’s @ureg.wraps()

• Use indices for positional arguments. Don’t use inspect.argspec since not guaranteed to be the same for wrapped or decorated functions

• Test Jacobian estimate for IV with AlgoPy

• Show Jacobian errors plot in getting started docs.

### v0.3Proterozoic Eon¶

• new unc_wrapper_args() allows selection of independent variables that the partial derivatives are with respect to and also grouping those arguments together so that in the original function they can stay unpacked.

• return values are grouped correctly so that they can remain unpacked in original function. These allow Uncertainty Wrapper to be used with Pint’s wrapper

• covariance now specified as dimensionaless fraction of square of arguments

• more complex tests: IV curve and solar position (requires NREL’s solpos)

### v0.2.1Eoarchean Era¶

• update documentation

### v0.2Archean Eon¶

• Fix nargs and nf order mixup in Jacobian

• fix tile cov by nobs

• move partial derivative to subfunction

• try threading, but same speed, and would only work with NumPy anyway