Source code for PseudoNetCDF.units

from collections import defaultdict

__doc__ = r"""
.. _units
:mod:`units` -- Functions for converting units
========================================================

.. module:: units
   :platform: Unix, Windows
   :synopsis: Provides functions for converting units.
.. moduleauthor:: Barron Henderson <barronh@unc.edu>
"""

__all__ = ['F2C', 'F2K', 'K2C', 'K2F', 'KCMAQ2F', 'M2km', 'MPS2kph',
           'convert', 'converter', 'converters_dict', 'km2m', 'm2ft',
           'm2km', 'm2miles', 'min2h', 'molespsCMAQ2molesph', 'mps2kmps',
           'mps2kph', 'mps2milesph', 'mps2milesps', 's2h', 's2min']


[docs] def s2min(a): return a / 60.
[docs] def min2h(a): return a / 60.
[docs] def s2h(a): return min2h(s2min(a))
[docs] def m2km(a): return a * .001
[docs] def M2km(a): return a * .001
[docs] def km2m(a): return a * 1000.
[docs] def m2ft(a): return a * 3.2808399
[docs] def m2miles(a): return a * 0.000621371192
[docs] def K2C(a): return a - 273.2
[docs] def K2F(a): return K2C(a) * 9 / 5. + 32
[docs] def KCMAQ2F(a): return K2C(a) * 9 / 5. + 32
[docs] def F2C(a): return (a - 32.) * 5 / 9.
[docs] def F2K(a): return F2C(a) + 273.2
[docs] def mps2kph(a): return a * 3.6
[docs] def MPS2kph(a): return a * 3.6
[docs] def mps2kmps(a): return a * .001
[docs] def mps2milesph(a): return a * 2.23693629
[docs] def mps2milesps(a): return a * 0.000621371192
[docs] def molespsCMAQ2molesph(a): return a * 60 * 60
def ppm2ppb(a): return a * 1000. def ppb2ppt(a): return a * 1000. def ppt2ppb(a): return a / 1000. def ppb2ppm(a): return a / 1000. def ppm2ppt(a): return ppm2ppb(ppb2ppt(a)) def ppt2ppm(a): return ppt2ppb(ppb2ppm(a))
[docs] class converters_dict(defaultdict): def __init__(self, dct): for k, v in dct.items(): self[k] = v def __missing__(self, key): if isinstance(key, tuple) and key[0] == key[1]: return lambda a: a
converter = converters_dict({ ('s', 'min'): s2min, ('min', 'h'): min2h, ('s', 'h'): s2h, ('m/s', 'km/h'): mps2kph, ('M/S ', 'km/h'): MPS2kph, ('m/s', 'miles/h'): mps2milesph, ('m/s', 'miles/s'): mps2milesps, ('m', 'km'): m2km, ('M ', 'km'): M2km, ('km', 'm'): km2m, ('m', 'ft'): m2ft, ('m', 'miles'): m2miles, ('moles/s ', 'moles/h'): molespsCMAQ2molesph, ('F', 'K'): F2K, ('F', 'C'): F2C, ('K', 'C'): K2C, ('K', 'F'): K2F, ('K ', 'deg_F'): KCMAQ2F, ('K', 'deg_F'): K2F, ('ppm', 'ppb'): ppm2ppb, ('ppb', 'ppt'): ppb2ppt, ('ppt', 'ppb'): ppt2ppb, ('ppb', 'ppm'): ppb2ppm, ('ppt', 'ppm'): ppt2ppm, ('ppm', 'ppt'): ppm2ppt})
[docs] def convert(var, inunit, outunit): """ Function that converts var from inunit to outunit. both units must be in converter dictionary and be compatible """ return converter[(inunit, outunit)](var)