{"id":13409839,"url":"https://github.com/MazamaScience/AirMonitor","last_synced_at":"2025-03-14T15:30:44.732Z","repository":{"id":62459043,"uuid":"414793919","full_name":"MazamaScience/AirMonitor","owner":"MazamaScience","description":"Utilities for working with air quality monitoring data","archived":false,"fork":false,"pushed_at":"2024-12-04T19:48:04.000Z","size":17215,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-08T12:02:10.488Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://MazamaScience.github.io/AirMonitor","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MazamaScience.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-08T00:14:10.000Z","updated_at":"2024-09-26T22:54:07.000Z","dependencies_parsed_at":"2024-01-12T11:51:10.848Z","dependency_job_id":"c20f71b9-43f1-41fb-9854-3f84d6c5206a","html_url":"https://github.com/MazamaScience/AirMonitor","commit_stats":{"total_commits":123,"total_committers":2,"mean_commits":61.5,"dds":"0.016260162601625994","last_synced_commit":"15342875337bfda31402d91821b281b5721adc7e"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MazamaScience%2FAirMonitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MazamaScience%2FAirMonitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MazamaScience%2FAirMonitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MazamaScience%2FAirMonitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MazamaScience","download_url":"https://codeload.github.com/MazamaScience/AirMonitor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243597830,"owners_count":20316843,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T20:01:03.634Z","updated_at":"2025-03-14T15:30:44.688Z","avatar_url":"https://github.com/MazamaScience.png","language":"HTML","funding_links":[],"categories":["Software Libraries","Natural Resources"],"sub_categories":["Air Quality"],"readme":"\u003c!-- badges: start --\u003e\n[![CRAN status](https://www.r-pkg.org/badges/version/AirMonitor)](https://CRAN.R-project.org/package=AirMonitor)\n[![Downloads](https://cranlogs.r-pkg.org/badges/AirMonitor)](https://cran.r-project.org/package=AirMonitor)\n[![DOI](https://zenodo.org/badge/414793919.svg)](https://zenodo.org/badge/latestdoi/414793919)\n\u003c!-- badges: end --\u003e\n\nA dedicated Slack channel has been created for announcements, support and to help build a community of practice around this open source package. You may request an invitation to join from jonathan.callahan@dri.com.\n\n# AirMonitor\n\n```\nUtilities for working with hourly air quality monitoring data\nwith a focus on small particulates (PM2.5). A compact data model is \nstructured as a list with two dataframes. A 'meta' dataframe contains \nspatial and measuring device metadata associated with deployments at known \nlocations. A 'data' dataframe contains a 'datetime' column followed by \ncolumns of measurements associated with each \"device-deployment\".\n```\n\n## Background\n\nThe USFS AirFire group is focused on air quality measurements associated with \nwildfire smoke and maintains both historical and real-time databases of PM2.5 \nmonitoring data obtained from stationary monitors. This data is used in \noperational displays and for retrospective analysis. Data ingest and management \nof air quality “stationary time series” are both important ongoing activities.\n\n## Related Packages\n\nThe **[AirMonitorIngest](https://github.com/pnwairfire/AirMonitorIngest/)** \npackage is used to create data archives for the **AirMonitor** package and \nisolates the work of meticulously cleaning, validating and harmonizing data from \nvarious sources.\n\nThe **AirMonitor** package contains data access functions to easily download \nharmonized data files as well as data manipulation functions that\nmake it easy to create \"recipe style\" analysis pipelines. The combination allows\nanalysts to work efficiently with short, readable R scripts. Interactive and\nbase R plotting functions allow for visual review of the data.\n\nThe **[AirMonitorPlots](https://github.com/mazamascience/AirMonitorPlots)**\npackage contains **ggplot2** based plotting functions for advanced plots.\n\n## Installation\n\n*NOTE:  This package has not yet been uploaded to CRAN*\n\nInstall the latest version from GitHub with:\n\n`devtools::install_github('mazamascience/AirMonitor')`\n\n## Data Model\n\nThe **AirMonitor** package uses the _mts_ data model defined in \n**[MazamaTimeSeries](https://mazamascience.github.io/MazamaTimeSeries/)**.\n\nIn this data model, each unique time series is referred to as a \n_\"device-deployment\"_ -- a timeseries collected by a particular device at a \nspecific location. Multiple device-deployments are stored in memory as a\n_monitor_ object -- an R list with two dataframes:\n\n`monitor$meta` -- rows = unique device-deployments; cols = device/location metadata\n\n`monitor$data` -- rows = UTC times; cols = device-deployments (plus an additional `datetime` column)\n\nA key feature of this data model is the use of the `deviceDeploymentID` as a\n\"foreign key\" that allows `data` columns to be mapped onto the associated\nspatial and device metadata in a `meta` row. The following will always be true:\n\n```\nidentical(names(monitor$data), c('datetime', monitor$meta$deviceDeploymentID))\n```\n\nEach column of `monitor$data` represents a timeseries associated with a particular\ndevice-deployment while each row represents a _synoptic_ snapshot of all\nmeasurements made at a particular time. \n\nIn this manner, software can create both timeseries plots and maps from a single\n`monitor` object in memory.\n\n_**Note:**_ The `monitor` object time axis specified in `data$datetime` is \nguaranteed to be a regular hourly axis with no gaps.\n\n\n------------------------------------------------------------------------\n\nThis project is supported by the [USFS AirFire](https://www.airfire.org) group.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMazamaScience%2FAirMonitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMazamaScience%2FAirMonitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMazamaScience%2FAirMonitor/lists"}