- Notifications
You must be signed in to change notification settings - Fork0
Algorithms used in air quality data processing
License
MazamaScience/air-monitor-algorithms
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Algorithms for processing hourly time series data, with an initial focus onair quality monitoring applications.
This package supports theair-monitor ecosystem, whichworks with air quality monitoring data archives hosted by the US ForestService.
Note: All time series data are assumed to be on a regular hourly axiswith no gaps. Missing values should be represented as
null.🚨 Important: All timestamp inputs must beLuxon
DateTimeobjects in the UTC timezone.All timestamp outputs are also returned asDateTimeobjects in UTC.
High-level analysis functions:
dailyStats(datetime, x, timezone)Returns local-time daily statistics (min, max, mean, count) from hourly data.diurnalStats(datetime, x, timezone, dayCount)Returns local-time hourly averages from the most recentdayCountdays.pm_nowcast(pm)Calculates EPA-style NowCast values from hourly PM2.5 or PM10 data.trimDate(datetime, x, timezone)Trims input to full local-time days (midnight to midnight).
Array utility functions:
arrayCount(x)— Count of non-missing (!= null) valuesarraySum(x)— Sum of valid valuesarrayMin(x)— Minimum valid valuearrayMean(x)— Mean of valid valuesarrayMax(x)— Maximum valid value
To install the latest stable release fromnpm:
npm install air-monitor-algorithms
To install the latest development version directly from GitHub:
npm install github:MazamaScience/air-monitor-algorithms
This ES module can be used in modern JavaScript projects, including Svelteand Vue apps. You must use LuxonDateTime objects in UTC as input timestamps.
import { dailyStats, pm_nowcast} from "air-monitor-algorithms";import { DateTime } from "luxon";// Generate fake hourly data for 3 daysconst datetime = [];const x = [];const start = DateTime.fromISO("2023-07-01T00:00:00Z"); // UTCfor (let i = 0; i < 72; i++) { datetime.push(start.plus({ hours: i })); // UTC Luxon DateTime x.push(50 + Math.sin(i / 3) * 10); // sinusoidal variation}// Calculate daily statistics in the 'America/Los_Angeles' timezoneconst daily = dailyStats(datetime, x, "America/Los_Angeles");console.log(daily.mean); // → [meanDay1, meanDay2, meanDay3]// Apply NowCast to the hourly dataconst nowcast = pm_nowcast(x);console.log(nowcast.slice(-5)); // → last 5 hourly NowCast valuesGPL-3.0-or-later© 2024–2025 Jonathan Callahan / USFS AirFire
About
Algorithms used in air quality data processing
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.