buckingham

a library for unit conversion and error propagation


License
BSD-3-Clause
Install
pip install buckingham==0.3

Documentation

Example of dimensional analysis and conversions

Install with

pip install buckingham

Example:

>>> a = Number(10,dims='meter/second')
>>> b = Number(2,dims='yard/minute')
>>> c = a + b
>>> print c.convert('kilometer/hour')
(36.109728 ± 0)

>>> print c.value, c.error
10.03048 0.0

Without conversion results are alwayws in: meters, seconds, grams, ampere, kelvin, dollar (and combination)

The error is the standard deviation assuming the true value is Normal distributed

Error propagation assumes independence

>>> a = Number(1,dims='decimeter^3')
>>> b = Number(2,dims='liter')
>>> c = Number(5,dims='gram/centimeter^3')
>>> d = (a + b)*c
>>> print d.convert('kilogram')
(15.000000 ± 0)

Example of formula validation

>>> a = Number(10,dims='meter/second')
>>> b = Number(2,dims='yard^3')
>>> c = a + b
Traceback (most recent call last):
...
RuntimeError: Incompatible Dimentions

Examples of error propagation:

>>> a = Number(10,error=2,dims='meter/second') # (10±2)m/s
>>> b = Number(5,error=1,dims='hour')  # (5±1)h
>>> c = a*b
>>> print c.convert('kilometer')
(1.800 ± 0.509)x10^2
>>> print c.convert('kilometer').value
180.0
>>> print c.convert('kilometer').error
50.9116882454

Examples of more complex formulas

>>> print a**4/(7*b)
(7.94 ± 6.54)/10^2

(last result is implicitely in meter4/second5)

Financial application example:

>>> coupon = Number(200,error=1,dims="dollar/day")
>>> expiration = Number(1,error=0,dims="year")
>>> payoff = coupon*expiration
>>> print payoff.convert('dollar')
(7.3048 ± 0.0365)x10^4

I.e. $73048 dollars with $365 dollas of one sigma uncertainly

License

Created by Massimo Di Pierro (http://experts4solutions.com) @2016 BSDv3 License