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
.
Requirements¶
Optional Requirements¶
- Nose for testing.
- Sphinx to build documentation.
- NREL SOLPOS for testing
- AlgoPy for testing
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.1 Paleozoic Era¶
- Jagged arrays of covariance keys work now.
- simplify
v0.4 Phanerozoic Era¶
- Fixes #5,
ValueError
if covariance keys have multiple observations - fix covariance cross terms not scaled correctly
v0.3.3 Neoproterozoic Era¶
- Fixes #4,
ValueError
if just one observation
v0.3.2 Mesoproterozoic 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.1 Paleoproterozoic 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.3 Proterozoic 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.1 Eoarchean Era¶
- update documentation
v0.2 Archean Eon¶
- Fix nargs and nf order mixup in Jacobian
- add more complex test
- fix tile cov by nobs
- move partial derivative to subfunction
- try threading, but same speed, and would only work with NumPy anyway
v0.1 Hadean Eon¶
- adds covariance to output
- allows __covariance__ to be passed as input
- uses estimate Jacobian based on central finite difference method