Source code for openaq.utils
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dateutil
def to_naive_timestamp(timestamp):
"""
Convert a timezone aware timestamp (as a string) and return the
python datetime in the local timezone, but without the tzinfo attribute
"""
return dateutil.parser.parse(timestamp).replace(tzinfo=None).isoformat()
def clean_encodings(unit):
if unit not in ('ppm', 'ppb', 'ppt', 'ugm3'):
unit = unit.encode('utf-8')
if unit == '\xc2\xb5g/m\xc2\xb3':
unit = 'ugm3'
return unit
[docs]def mass_to_mix(value, param, unit='ppb', **kwargs):
"""Convert units from ug/m3 to ppb or ppm. The conversion assumes an ambient
pressure of 1 atmosphere and ambient temperature of 25 degC.
:param value: the concentration in ug/m3
:param param: the parameter to convert {'co', 'no', 'no2', 'so2', 'o3'}
:param unit: the desired output unit {'ppb', 'ppm'}
:type value: float
:type param: string
:type unit: string
:returns: value
:Example:
>>> import openaq
>>> conc_ugm3 = 100
>>> conc_ppb = openaq.utils.mass_to_mix(conc_ugm3, param='co', unit='ppb')
>>> conc_ppb
114.5
"""
lookup = {
'co': 1.145,
'no': 1.25,
'no2': 1.88,
'so2': 2.62,
'o3': 2.0
}
param = param.lower()
if param not in lookup.keys():
return value
value = value / lookup[param]
if unit.lower() == 'ppm':
value *= 1e-3
return value