python-aqi
python-aqi copied to clipboard
IndexError when PM concentration is higher than the defined maximum
I'm using version 0.6.1 of this library with the default EPA algorithm. When I provide a PM concentration that is higher than the upper limit defined by the maximum AQI range (i.e. it would result in an AQI above 500), the library fails with an IndexError.
The error gets thrown by the line https://github.com/hrbonz/python-aqi/blob/56f6e3bd8200205114307558e1d8329b7477d158/aqi/algos/base.py#L91 since the idx variable is larger than the AQI boundary array allows.
Complete error message:
File "/home/pi/.local/lib/python3.7/site-packages/aqi/__init__.py", line 45, in to_aqi
return _aqi.aqi(ccs)
File "/home/pi/.local/lib/python3.7/site-packages/aqi/algos/base.py", line 36, in aqi
_iaqi = self.iaqi(elem, cc)
File "/home/pi/.local/lib/python3.7/site-packages/aqi/algos/base.py", line 91, in iaqi
(aqilo, aqihi) = self.piecewise['aqi'][idx]
IndexError: list index out of range
An easier solution that I went with is:
AQI_MAX = 500
def my_function(self):
try:
return aqi.to_aqi(
[(aqi.POLLUTANT_PM25, self.pm25),
(aqi.POLLUTANT_PM10, self.pm10)]
)
except IndexError:
# in some cases, the PM2.5/PM10 values can be 99999, which goes beyond the index.
return AQI_MAX