Python library for easy unit handling and conversion for scientific & engineering applications.
Project description
misura
>>> from misura.quantities import quantity
>>> quantity(7, "m", 1.5) / quantity(2, "s")
3.5 ± 0.75 m / s
>>> from misura.currencies import currency
>>> currency(2, "EUR") + currency(3, "USD")
5.17 USD
Python library providing effortless unit handling and currency conversion for scientific and engineering purposes.
misura is a powerful Python library designed to facilitate the efficient handling of units of measure for scientific and engineering applications, including currencies handling and conversion with constantly updated exchange rates. With its unified interface for dealing with different units and their conversions, you can quickly and accurately complete calculations without the need for complex manual conversions. Additionally, misura supports uncertainty handling allowing you to work with physical quantities and their associated uncertainties in a user-friendly and intuitive fashion. What's more, misura grants you the flexibility to create custom units of measure, so you can work in your preferred units.
Make sure to take a look at the documentation, at the contributing guidelines and at the examples.
Features
- Mathematical and logical operations between quantities: Example, example
- Currencies handling with daily updated exchange rates.
- Uncertainty handling: Example
- Manual conversions: Example
- Automatic conversions on operations: Example
- Unpack and pack derived units: Example, example
- User defined base and derived units: Example
- Large compatibility with other libraries: Example
- Custom exceptions: Example
Installation
Installing misura
misura can be installed from PyPI by:
python3 -m pip install --upgrade misura
Verifying installation and base informations
By:
python -m misura
you'll be able to verify the installation of misura along getting some informations about the library:
misura
Python library providing effortless unit handling and currency conversion for scientific and engineering purposes.
Developed by Andrea Di Antonio, more on https://github.com/diantonioandrea/misura
Documentation on https://misura.diantonioandrea.com
Bug tracker on https://github.com/diantonioandrea/misura/issues
Importing misura
misura can be imported by:
import misura
Examples
These are some examples of operations between quantities.
Note that, by enabling globals.style.unitHighlighting
, misura uses colorama to highlight units of measure. by disabling it, the output is in the form of num [unit]
Mathematical operations
from misura.quantities import quantity
num1 = quantity(2, "m s-1")
num2 = quantity(4, "m s-1")
num3 = quantity(2, "s", .5)
print(num1 + num2)
print((num1 + num2).dimension())
print(num1 * num2)
print(num1 / num3)
print(num3 ** 2)
The output is:
6 m / s
[length / time]
8 m(2) / s(2)
1.0 ± 0.25 m / s(2)
4 ± 2.0 s(2)
Currencies
from misura.currencies import currency
cur1 = currency(2, "EUR")
cur2 = currency(3, "USD")
print(cur0 * 2)
print(cur1 + cur0)
The output is:
4 EUR
5.17 USD
Working with other libraries
from misura.quantities import quantity, convert
from decimal import Decimal, getcontext
import numpy
getcontext().prec = 40
arr1 = numpy.array([quantity(2, "m"), quantity(50, "m s-1"), quantity(2, "kg")])
arr2 = quantity(numpy.array([1, 2, 3]), "J")
num2 = quantity(numpy.sqrt(Decimal(5)), "kg")
print(arr1 * 3)
print(arr2 ** 2)
print(num2)
The output is:
[6 m 150 m / s 6 kg]
[1 4 9] J(2)
2.236067977499789696409173668731276235441 kg
Unit highlighting helps distinguish between different numbers.
User defined units of measure
from misura.quantities import quantity, convert
from misura.tables import addUnit
addUnit("volume", {"L": 1, "daL": 10, "hL": 100, "kL": 1000, "dL": 0.1, "cL": 0.01, "mL": 0.001}, "dm3")
num1 = quantity(3, "L")
print(convert(num1, "cm3"))
The output is:
3000.0 cm(3)
Manual and automatic conversion
from misura.quantities import quantity, convert
num1 = quantity(2, "m2")
num2 = quantity(4, "kg")
num3 = quantity(400, "m s-1")
print(convert(num1, "cm2"))
print(num2 + quantity(5, "g"))
print(convert(num3, "km", partial=True))
The output is:
20000.0 cm(2)
4.005 kg
0.4 km / s
Unpack derived quantities
from misura.quantities import quantity, unpack
num1 = quantity(2, "J2")
num2 = quantity(4, "C H")
print(unpack(num1))
print(unpack(num2, "H"))
The output is:
2.0 kg(2) m(4) / s(4)
4.0 C kg m(2) / A(2) s(2)
Pack derived quantities
from misura.quantities import quantity, pack
num1 = quantity(3, "N m T")
num2 = quantity(45, "A2 s2")
print(pack(num1, "J", ignore="T"))
print(pack(num2, "C", full=True))
The output is:
3.0 J T
45.0 C(2)
Comparisons
from misura.quantities import quantity
num1 = quantity(2, "m s-1")
num2 = quantity(4, "m s-1")
num3 = quantity(2, "s")
print(num1 > num2)
print(num2 < 6)
print(num1 > num3)
The output is:
False
True
misura.conversion.ConversionError: cannot convert from 's' to 'm s-1'
raised by: '2 s' -> 'm s-1'
Unary operators and functions
from misura.quantities import quantity
from misura.globals import style
from math import trunc
style.quantityHighlighting = False
num1 = quantity(2, "m s-1")
num2 = quantity(4.5, "m s-1")
num3 = quantity(-2, "s")
print(-num1)
print(trunc(num2))
print(abs(num3))
The output is:
-2 [m / s]
4 [m / s]
2 [s]
Formatting
from misura.quantities import quantity
num1 = quantity(2000, "m s-1")
print("Exponential notation: {:.2e}".format(num1))
The output is:
Exponential notation: 2.00e+00 m / s
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.