77 lines
2.6 KiB
Python
77 lines
2.6 KiB
Python
![]() |
"""
|
||
|
A sample set of units for use with testing unit conversion
|
||
|
of Matplotlib routines. These are used because they use very strict
|
||
|
enforcement of unitized data which will test the entire spectrum of how
|
||
|
unitized data might be used (it is not always meaningful to convert to
|
||
|
a float without specific units given).
|
||
|
|
||
|
UnitDbl is essentially a unitized floating point number. It has a
|
||
|
minimal set of supported units (enough for testing purposes). All
|
||
|
of the mathematical operation are provided to fully test any behaviour
|
||
|
that might occur with unitized data. Remember that unitized data has
|
||
|
rules as to how it can be applied to one another (a value of distance
|
||
|
cannot be added to a value of time). Thus we need to guard against any
|
||
|
accidental "default" conversion that will strip away the meaning of the
|
||
|
data and render it neutered.
|
||
|
|
||
|
Epoch is different than a UnitDbl of time. Time is something that can be
|
||
|
measured where an Epoch is a specific moment in time. Epochs are typically
|
||
|
referenced as an offset from some predetermined epoch.
|
||
|
|
||
|
A difference of two epochs is a Duration. The distinction between a Duration
|
||
|
and a UnitDbl of time is made because an Epoch can have different frames (or
|
||
|
units). In the case of our test Epoch class the two allowed frames are 'UTC'
|
||
|
and 'ET' (Note that these are rough estimates provided for testing purposes
|
||
|
and should not be used in production code where accuracy of time frames is
|
||
|
desired). As such a Duration also has a frame of reference and therefore needs
|
||
|
to be called out as different that a simple measurement of time since a delta-t
|
||
|
in one frame may not be the same in another.
|
||
|
"""
|
||
|
|
||
|
from .Duration import Duration
|
||
|
from .Epoch import Epoch
|
||
|
from .UnitDbl import UnitDbl
|
||
|
|
||
|
from .StrConverter import StrConverter
|
||
|
from .EpochConverter import EpochConverter
|
||
|
from .UnitDblConverter import UnitDblConverter
|
||
|
|
||
|
from .UnitDblFormatter import UnitDblFormatter
|
||
|
|
||
|
|
||
|
__version__ = "1.0"
|
||
|
|
||
|
__all__ = [
|
||
|
'register',
|
||
|
'Duration',
|
||
|
'Epoch',
|
||
|
'UnitDbl',
|
||
|
'UnitDblFormatter',
|
||
|
]
|
||
|
|
||
|
|
||
|
def register():
|
||
|
"""Register the unit conversion classes with matplotlib."""
|
||
|
import matplotlib.units as mplU
|
||
|
|
||
|
mplU.registry[str] = StrConverter()
|
||
|
mplU.registry[Epoch] = EpochConverter()
|
||
|
mplU.registry[Duration] = EpochConverter()
|
||
|
mplU.registry[UnitDbl] = UnitDblConverter()
|
||
|
|
||
|
|
||
|
# Some default unit instances
|
||
|
# Distances
|
||
|
m = UnitDbl(1.0, "m")
|
||
|
km = UnitDbl(1.0, "km")
|
||
|
mile = UnitDbl(1.0, "mile")
|
||
|
# Angles
|
||
|
deg = UnitDbl(1.0, "deg")
|
||
|
rad = UnitDbl(1.0, "rad")
|
||
|
# Time
|
||
|
sec = UnitDbl(1.0, "sec")
|
||
|
min = UnitDbl(1.0, "min")
|
||
|
hr = UnitDbl(1.0, "hour")
|
||
|
day = UnitDbl(24.0, "hour")
|
||
|
sec = UnitDbl(1.0, "sec")
|