tools for dealing with physical quantities: uncertainty propagation and unit conversion
MetroloPy is a pure python package and requires Python 3.5 or later and the SciPy stack (NumPy, SciPy and Pandas). It looks best in a Jupyter Notebook.
Install MetroloPy with pip install metrolopy
or
conda install -c conda-forge metrolopy
.
Physical quantities can then be represented in Python as gummy
objects with an uncertainty and (or) a unit:
>>> import metrolopy as uc
>>> a = uc.gummy(1.2345,u=0.0234,unit='cm')
>>> a
1.234(23) cm
>>> b = uc.gummy(3.034,u=0.174,unit='mm')
>>> f = uc.gummy(uc.UniformDist(center=0.9345,half_width=0.096),unit='N')
>>> p = f/(a*b)
>>> p
2.50(21) N/cm2
>>> p.unit = 'kPa'
>>> p.uunit = '%'
>>> p
25.0 kPa ± 8.5%
MetroloPy can do much more including Monte-Carlo uncertainty propagation, generating uncertainty budget tables, and curve fitting. It can also handle expanded uncertainties, degrees of freedom, correlated quantities, and complex valued quantities. See:
- a tutorial (or download the tutorial as Jupyter notebook)
- the documentation
- the issues page on GitHub
- a list of the units built into MetroloPy
- a list of the physical constants built into MetroloPy
-
A constant library has been added with physical constants that can be accessed by name or alias with the
constant
function. Thesearch_constants
function with no argument gives a listing of all built-in constants. Each constant definition includes any correlations with other constants. -
The
Quantity
class has been added to represent a general numerical value multiplied by a unit and theunit
function has been added to retrieveUnit
instances from the unit library by name or alias.Unit
instances can now be multiplied and divided by otherUnit
instances to produce composite units, can be multiplied and divided by numbers to produceQuantity
instances or multiply or divideQuantity
instances. Thegummy
class is now a subclass ofQuantity
with anummy
value rather than a subclass ofnummy
. AQuantityArray
class has been introduced to represent an array of values all with the same unit. Multiplying aUnit
instance by a list, tuple, or numpy array produces aQuantityArray
instance. -
The
immy
class has been introduced as anummy
valued counterpart of thejummy
class for representing complex values with uncertainties.immy
andjummy
values can now be displayed in a polar representation in addition to a cartesian representation.immy
andjummy
.r and .phi properties have been added to access the magnitude and argument of the values as a complement to the .real and .imag properties.