airq-dev / hazebot

Building the 411 for air quality in the United States: a texting platform accessible to all, that provides actionable local information to protect your and your community.
https://www.hazebot.org/
MIT License
9 stars 1 forks source link

Support more conversions #215

Open ianhoffman opened 3 years ago

ianhoffman commented 3 years ago

Right now we support the US EPA conversion, and no conversion. We could support the full list of conversions supported by PurpleAir. This is from their website:

Conversions help accomodate different types of pollution with different particle densities. For the same reason that wood floats and rocks sink in water, different particles have different densities - for example wild fire smoke vs road dust in the air. This is why a conversion may be needed when calculating the mass of any combination of particulates derived from particle counts.

None: No conversion applied to the data

US EPA: Courtesy of the United States Environmental Protection Agency Office of Research and Development, correction equation from their US wide study validated for wildfire and woodsmoke. 0-250 ug/m3 range (>250 may underestimate true PM2.5): PM2.5 (µg/m³) = 0.534 x PA(cf_1) - 0.0844 x RH + 5.604

AQandU: Courtesy of the University of Utah, conversion factors from their study of the PA sensors during winter in Salt Lake City. Visit their web site. PM2.5 (µg/m³) = 0.778 x PA + 2.65

LRAPA: Courtesy of the Lane Regional Air Protection Agency, conversion factors from their study of the PA sensors. Visit their web site. 0 - 65 µg/m³ range: LRAPA PM2.5 (µg/m³) = 0.5 x PA (PM2.5 CF=ATM) – 0.66

WOODSMOKE: From a study in Australia comparing Purple Air with NSW Government TEOM PM2.5 and Armidale Regional Council's DustTrak measurements - see published peer-reviewed study - https://www.mdpi.com/2073-4433/11/8/856/htm. Woodsmoke PM2.5 (µg/m³) = 0.55 x PA (PM2.5 CF=1) + 0.53

We already have the data for most of these, I think (and we could always pull and store more data, but that will be a bit more work). Adding a new conversion once we have the data is easy: you can just add a new case to the ConversionStrategy enumeration in airq.lib.readings.