Noether (in development: Alpha 1.1)
Noether is a library designed to provide physical constants and measurements. It is intended to compliment
scipy with features such as:
- An extensive catalogue of scientific units and statistical distributions
- Automatic propagation of dimension and uncertainty for unit-rich work
- Basic graphing (currently requires Astley)
- Basic support for propagating statistical error
BMI, bushel and byte; eotvos, erg and electronvolt; parsec, plethron and potrzebie. Noether has (almost) every unit known, with a thorough unit system allowing for automatic dimensional analysis.
>>> 0.5 * gibibyte / second 4.295×10⁹bps <data rate> >>> a = 12 * pixel / mm >>> a 1.2×10⁴pix·m⁻¹ <image quality> >>> display(ppi) >>> a 304.8ppi <image quality> >>> (joule / kilogram / kelvin)(12, 2) 12 ± 2K⁻¹·m²·s⁻² <specific heat capacity> >>> e / electron.mass (2.187×10¹¹ ± 1649)A·kg⁻¹·s
You may, of course, define your own units and dimensions on the fly:
>>> FF = Unit(furlong / fortnight, 'ff') >>> display(FF) >>> c 1.803×10¹²ff <velocity, speed> >>> health = Dimension.new(3.2, 'health', 'H', 'a') >>> apple = Unit(health) >>> apple / day 1.157×10⁻⁵a·s⁻¹
Installation and use
Noether currently requires Python 3.7 or above. It's not yet on PyPI, but it's easy to jump into a quick calculator-like instance quick:
git clone https://github.com/yunruse/noether cd noether python -im noether
This simply runs
import noether and
from noether import *. Documentation assumes the latter has been done; it makes for a neater experience.
Some yet-undocumented submodules may require
scipy to use:
pip install numpy matplotlib git clone https://github.com/yunruse/astley # modify your PATH as needed
Updates are released to the
master branch every couple of weeks. They are not guaranteed to have a sturdy, documented and tested API just yet, but each release should be pretty dang stable.
Alpha 1.1 (2020-02-16):
- Many bugfixes and units added.
- Introduced basic backend for
UnitSystemfor quality of life (eg
- Made special tweaks so
python -m noetherlazy-loads at fast pace.
Alpha 1 (2020-01-26):
- Made many improvements to display of units.
- The global
displaywas added, alongside a wide range of particles.
- A test suite begins development.
From schoolchild to scientist, all feedback is appreciated. This project is large, and somehow wants to appeal to every single person who would ever use a calculator, so it'll never be perfect :)
Oh, and while you're here – Noether is in early development. Please consider supporting me on Patreon.
Legal (and academical)
Copyright (c) Mia yun Ruse (yunru.se) 2018–2020. All scientific data shown remains in the public domain, and is cited where relevant.
This work is licensed under a Creative Commons Attribution 4.0 International license. In non-legal terms: do whatever you like, including science! But if you want to redistribute this project (derived or not), please credit me, or shoot me a message and I'll see what I can do.