si type metric
Project description
nist
From the National Institute of Standards and Technology’s Office OF Weights and Measures, one can find a handy list of all the metric prefixes: e.g.
Purpose | Name | Symbol | Factor | Name |
---|---|---|---|---|
larger quantities or whole units | quetta | Q | $$10^{30}$$ | nonillion |
ronna | R | $$10^{27}$$ | octillion | |
yotta | Y | $$10^{24}$$ | septillion | |
… | … | … | … | |
hecto Example: hectare | h | $$10^{2}$$ | hundred | |
deka Example: dekameter | da | $$10^{1}$$ | ten | |
$$10^{o}$$ | one | |||
deci Example: decimeter | da | $$10^{-1}$$ | tenth | |
centi Example: centigram | h | $$10^{-2}$$ | hundredth | |
… | … | … | … | |
yocto Example: yoctosecond | y | $$10^{-24}$$ | septillionth | |
ronto | r | $$10^{-27}$$ | octillionth | |
smaller quantities or sub units | quecto | q | $$10^{-30}$$ | nonillionth |
Oh how nice it would be to have a class like
unit
which we could
subclass and use as follows:
class second(unit):
name = 'second'
s1 = second(1)
s1, s1.kilo, s1.milli, s1.to(3), float(s1.to(3))
(1.0 S, 0.001 KS, 1000.0 mS, 0.001 KS, 0.001)
ah so easy to convert between and even have clean formatting.
Install
pip install nist
Usage
fact
While each fact
(factor) has base: ClassVar[int] = 10
, base
is actually an instance
variable.
>>> float(kilo()), float(kilo(base=2)), float(kilo(base=5)), float(kilo(base=10))
(1000.0, 8.0, 125.0, 1000.0)
In case that behavior is not obvious
fact
is really just a
named and explicilty signed exponent:
>>> kb = kilo(base=2)
>>> kb.abrv, kb.base, kb.expo, kb.sign, kb.ekey, float(kb)
('kilo', 2, 3, 1, 3, 8.0)
Each fact
uses efmt
for its representation by default efmt
is True, but can be turned off
by setting efmt
to False.
>>> (
(decka(), hecto(), kilo(), mega(), giga(), tera()),
(decka(showefmt=False), hecto(showefmt=False), kilo(showefmt=False), mega(showefmt=False), giga(showefmt=False), tera(showefmt=False))
)
((e+1, e+2, e+3, e+6, e+9, e+12), (F1P, F2P, F3P, F6P, F9P, F12P))
Actually we have three formats to work with:
>>> kilo().fstr, kilo(showbase=True).bstr, kilo(showbase=True).efmt
('F3P', '10^+3', 'e+3')
unit
The goal of the unit
class is to make it easy to create units:
class second(unit):
name = 'second'
>>> s1 = second(1)
>>> s1, s1.kilo, s1.milli, s1.to(3), float(s1.to(3)), s1.shownumb
(1.0 S, 0.001 KS, 1000.0 mS, 0.001 KS, 0.001, True)
We can also explore all the different ways of viewing formats:
import pandas as pd
results = list()
factors = (tera, decka, deci, centi, milli, pico)
for fcls in factors:
for flt in (1, 20, 0.03):
for factrepr in {'abrv', 'name', 'symb'}:
for shownumb in (True, False):
for abrvunit in (True, False):
res = fmtunit(
org = flt, flt=flt / float(fcls()), unt = unit, fct = fcls,
factrepr=factrepr, shownumb=shownumb, abrvunit=abrvunit,
unitname='second', factname=None, ndig=3
)
results.append(dict(
fname=fcls.name, flt=flt, res=res, org = flt / float(fcls()),
shownumb=shownumb, abrvunit=abrvunit, factrepr=factrepr
))
df = pd.DataFrame(results).sort_values(by=['fname', 'res'])
df.head()
fname | flt | res | org | shownumb | abrvunit | factrepr | |
---|---|---|---|---|---|---|---|
134 | hundredth | 0.03 | 0.03 S | 3 | False | True | name |
138 | hundredth | 0.03 | 0.03 S | 3 | False | True | abrv |
142 | hundredth | 0.03 | 0.03 S | 3 | False | True | symb |
143 | hundredth | 0.03 | 0.03 S | 3 | False | False | symb |
135 | hundredth | 0.03 | 0.03 seconds | 3 | False | False | name |
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.
Source Distribution
Built Distribution
File details
Details for the file nist-0.0.3.tar.gz
.
File metadata
- Download URL: nist-0.0.3.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33f4f361c90afc16944adb38c03c211c89c31dbabaa919ebdac1b6f29d61b225 |
|
MD5 | cafd0aaf142232471d9499b83b57a4c3 |
|
BLAKE2b-256 | 7835f2eba7ef271961eff00be323a145a29117213ecf8b8d7db479ab50b7d508 |
File details
Details for the file nist-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: nist-0.0.3-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94801177bcbda1953207e72be3ae3188dd1e45d2d2affbf3e9d769a5da64643d |
|
MD5 | b8740352bc263f5e2ee48ac40df7af2b |
|
BLAKE2b-256 | 3863d0649ad297c62c321fae34cef5e5023314188fe47b0fc130eb3b7ce7ff43 |