Skip to content

Releases: MazamaScience/AirSensor

0.5.8

01 Nov 20:27
Compare
Choose a tag to compare
0.5.8 Pre-release
Pre-release

AirSensor 0.5.8

  • Added sensor_loadYear() to load annual files (~2-3 MB).
  • sensor_load() now attempts to load and join annual files before attempting
    the slower process of loading and joining monthly files.
  • Removed excessive logging in some of the loading functions.

0.5.7

01 Nov 20:26
Compare
Choose a tag to compare
0.5.7 Pre-release
Pre-release

AirSensor 0.5.7

  • timeseriesTbl_multiplot() now supports a style paramter which can be set
    to "point", "line" or "area".
  • Improved handling of missing files in data loading functions.
  • Added state-of-health functions: SoH_pctValid(), SoH_pctDC().
  • Harmonized naming of state-of-health metrics.

0.5.6

01 Nov 20:26
Compare
Choose a tag to compare
0.5.6 Pre-release
Pre-release

AirSensor 0.5.6

  • Updated pat_createNew() and downloadParseTimeseriesData() to support the
    id parameter.
  • Enhanced PurpleAirQC_aggregationPlot() to work with any tibble or dataframe
    and renamed it to tbl_multiplot().
  • Added a state-of-health metrics calculation function: SoH_pctReporting().

AirSensor 0.5.5

  • Now requiring MazamaCoreUtils 0.3.10.
  • pat_aggregate() non longer stops in the face of data with a DC signal on
    one of the pm25 channels.
  • Added aggregation_FUN argument to pat_createAirSensor() to allow for
    custom aggregation statistics.

AirSensor 0.5.4

  • Added PurpleAirQC_aggregationPlot() function.
  • Improved datestamp handling in pas_load().
  • More explicit use of timezones to avoid local/UTC misunderstandings.

0.5.3

01 Nov 20:25
Compare
Choose a tag to compare
0.5.3 Pre-release
Pre-release

AirSensor 0.5.3

  • Added make.names argument to pat_loadMonth() and pat_loadLatest().

AirSensor 0.5.2

  • Fixed bug in pat_dygraph() which referenced PWFSLSmoke::parseDatetime()
    which is now deprecated in favor of MazamaCoreUtils::parseDatetime().

AirSensor 0.5.1

  • Upudated data loding to allow for loading data from a local archive. New
    functions include: loadDataFile(), getArchiveBaseDir(),
    setArchiveBaseDir().
  • All ~_load() and ~_loadLatest() functions now call loadDataFile()
  • pat_load() now continues working in the face of missing data files.
    under the hood and will work with data archives found at archiveBaseDir.
  • Removed pat_calendarPlot() and sensor_calendarPlot() from the packge.
    These work-in-progress functions are now found in local_R/. We anticipate
    including calendar plotting functionality in the AirMonitorPlots package.

AirSensor 0.5.0

Version 0.5.x represents the version of the package that is ready for public
release.

0.4.10

18 Sep 00:14
Compare
Choose a tag to compare
0.4.10 Pre-release
Pre-release

AirSensor 0.4.10

  • Fixed bug in sensor_filterMeta() where filtering the number of rows in
    sensor$meta did not also filter columns in sensor$data.

0.4.9

17 Sep 18:19
Compare
Choose a tag to compare
0.4.9 Pre-release
Pre-release

AirSensor 0.4.9

  • Updated sensor_videoFrame() with new arguments and new defaults for
    colorPalette and colorBins.
  • Updated pat_sample() to handle cases where the A or B channel contains
    only missing values.

AirSensor 0.4.8

  • sensor_loadLatest() now supports a days argument and defaults to loading
    a 45-day file.

0.4.7

17 Sep 18:20
Compare
Choose a tag to compare
0.4.7 Pre-release
Pre-release

AirSensor 0.4.7

  • Improved local_executables/ scripts.
  • Added timezone argument to downloadParseTimeseriesData().
  • Improved logging in local_executables/crontab~ files.
  • Fixed implementation of downloadParseTimeseriesData() to avoid using day
    boundaries when explicit times are specified.

AirSensor 0.4.6

  • pas_load() default retries was increased from 10 to 30.
  • Fixed bug where pat_createNew() created time ranges that ended (UTC - local)
    hours short of the requested enddate.
  • Plots generated with pat_externalFit(), pat_internalFit(),
    pat_monitorComparison() and pat_outliers()
    now have time axes with sensor local time rather than UTC.
  • pat_externalFit() and pat_monitorComparison() labeling now includes PWFSL
    monitor siteName
  • Documentation improvements.
  • Internal refactoring for consistency.

AirSensor 0.4.5

  • Using MazamaCoreUtil::stopIfNull() throughout.

AirSensor 0.4.4

  • Updated requirements: MazamaCoreUtils (>= 0.3.5).
  • All time-related functions now specify a timezone explicitly so as to avoid
    confusion related to the default base::Sys.timezone().
  • enhanceSynopticData() now handles presence or absence of State column
    in raw data obtained from PurpleAir. This was apparently removed some time
    during the summer of 2019.

AirSensor 0.4.3

  • Updated pat_calendarPlot() and sensor_calendarPlot() to handle discrete
    color scales.

AirSensor 0.4.2

  • pat_createAirSensor() now uses pat$meta$label to populate
    sensor$meta$siteName.
  • New sensor_calendarPlot().
  • Added aspectRatio argument to ~calendarPlot() functions.
  • Updated requirements: MazamaCoreUtils (>= 0.3.1), PWFSLSmoke (>= 1.2.100)
  • sensor_load() no longer stops when monthly files cannot be found. This helps
    when asking for the current year's worth of data for a calendar plot.

AirSensor 0.4.1

  • Minor documentation tweaks.
  • Updated usage of MazamaCoreUtils::dateRange() to reflect change from "end of
    enddate" to "start of enddate".

AirSensor 0.4.0

  • New setArchiveBaseUrl() and getArchiveBaseUrl() functions allow per
    session specification of the location of pre-generated data files.
  • Removed baseUrl parameter from all data loading functions. Now users must
    begin a session with setArchiveBaseUrl().
  • Modified behavior of sensor_load() to trim data to the requested time
    range.
  • Fixed bug in pat_scatterplot() that generated an error when the number of
    records in the pat object was fewer than the sampleSize parameter.

AirSensor 0.3.15

  • New pat_calendarPlot() tailored to full-year calendar heatmaps.
  • Added pat_distinct() to remove duplicate data records.
  • All pat_~() functions now remove duplicate records to guarantee proper
    functioning of chained functions.

AirSensor 0.3.14

  • Removed Shiny app related functions.
  • Added pat_loadLatest() to always get the most recent 7 days.
  • Added pat_loadSensor() to always get the most recent 7 days.
  • Added timezone argument to pat_createNew().
  • pat_createNew() now accepts start and end points not on date boundaries.

AirSensor 0.3.13

  • Removed popups from AirShiny_leaflet()
  • Fixed pas_leaflet() coloring issue.pwd
  • Fixed bug in pat_load() which didn't trim data to date boundaries when a
    local timezone was passed in.
  • Added pat_calendarPlot() to plot annual daily heat map.

0.3.12

17 Sep 18:21
Compare
Choose a tag to compare
0.3.12 Pre-release
Pre-release

AirSensor 0.3.12

  • Renamed pas_loadLatest() to pas_createNew().
  • Renamed pat_loadLatest() to pat_createNew().
  • Added "Too Many Requests" error messages to download~() functions.
  • Added timezone parameter to pas_load().
  • Included timezone information in every internal function call where it can
    be specified so that R's default "system local timezone" does not accidentally
    get used.
  • When no wind data is provided, use nearest worldmet met station in
    sensor_polarplot() and sensor_pollutionRose().
  • Added PurpleAirQC_algorithm to sensor objects created by
    pat_createAirSensor() so that they self-document how they were created.
  • Included an archival argument to pas_load(). When archival = TRUE a
    pas object will be loaded that contains metadata for all PurpleAir sensors
    including those that have ceased reporting.
  • Removed unneeded downloadParseSensorList().
  • Changed argument name to label in pat_createNew() and
    downloadParseTimeseriesData().
  • Updated all scripts in local_executables/ to work with the latest release.

AirSensor 0.3.11

  • Faster geodesic calculations in pas_staticMap() and pas_filterNear().
  • Include downloadParseSensorList() to download a list of archived PurpleAir
    sensors.

AirSensor 0.3.10

  • Added sensor_videoFrame() function to create a single frame map for a
    network of sensors. These can be used to create videos showing the evolution
    of PM2.5 levels over several days.
  • Added local_executables/createVideo_exec.R script to generate mp4 videos.
  • Added ylim argument to pat_multiplot().

AirSensor 0.3.9

  • Added sensor_filter(), sensor_filterDate() and sensor_filterMeta().
  • Added local_examples/downloadSpeeds.Rmd to benchmark data download times
    from ThinkSpeak.
  • New Purple Air Failure Modes vignette.

AirSensor 0.3.8

  • Added pat_aggregateOutlierCounts() to count outliers per aggregation
    period.
  • Revamped pat_aggregate() to fix warnings and optimize

AirSensor 0.3.7

  • Added wind_loadMonth() to load pre-generated monthly wind data
  • Added wind_load() to load pre-generated wind data from timestamps
  • Updated sensor_pollutionRose() to accept new wind data model
  • Added sensor_polarPlot() to plot bivariate polar plots
  • Renamed airsensor_load~() to sensor_load~().
  • Added sensor_~ utility functions: isSensor(), isEmpty(), extractMeta()
    , extractData().
  • Added example_sensor dataset for use in documentation examples.
  • Added local_examples/LA_fireworks_2019.R
  • Default required data retentaion rate during hourly aggregation was increased
    from 10/30 to 20/30 (min_count = 20).
  • Improved examples in the documentation.
  • Suppressing warnings from pat_scatterplot().
  • Updated "PurpleAir Timeseries" vignette.
  • Added returnAllColumns option to `PurpleAirQC_~1 functions.
  • New PurpleQC_validationPlot() function.
  • createPATimeseriesObject() now retains additional metadata:
    sensorManufacturer, targetPollutant, technologyType, communityRegion
  • Updated all package datasets so they include additional metadata.

AirSensor 0.3.6

  • Fixed airsensor_load() so that it includes monitors found in any month
    rather that those found in every month.
  • Fixed createPATimeseriesObject() and pat_createAirSensor() so that they
    no longer generate NaN or Inf values.

AirSensor 0.3.5

  • Added as_pollutionRose()
  • Added createMonthlyWind_exec()
  • Include example_as as an example "airsensor" object
  • initializeMazamaSpatialUtils() now only sets up logging if it hasn't
    already been set up.
  • Cleanup/refactoring of local_executables scripts.
  • Modified pat_loadMonth() to use the newer pat_<label>_<monthstamp>.rda
    naming system.

AirSensor 0.3.4

  • Added pat_monitorComparison().
  • Added local_examples/bikesgv_story.Rmd.
  • Improved error handling in pas_filter().
  • Added "pm25_a" and "pm25_b" plot types to pat_multiplot().

AirSensor 0.3.3

  • renamed pas_within() to pas_filterNear()
  • renamed airSensorQC_~ functions to PurpleAirQC_~
  • refactored scripts in local_executables/ to be more similar

AirSensor 0.3.2

  • Created an archive of airsensor data files with pre-generated,
    hourly-aggregated data suitable for use with the PWFSLSmoke package.
  • Added airsensor_load() to load pre-generated, hourly-aggregated data files
    suitable for use with the PWFSLSmoke package.

AirSensor 0.3.1

  • Added quality control algorithms: hourly_AB_00 and hourly_AB_01.
  • Updated pat_cerateAirSensor() to accept arguments that impact the conversion
    of pat data into aggregated period-averages: period, channel, qc_algorithm,
    min_count.
  • Fixed pat_aggregate() so that any NaN or Inf values are converted to NA.

AirSensor 0.3.0

The AirSensor package is now almost feature complete with functions for QC
and aggregation to an houly axis.

  • Fixed bug in pat_aggregate() that occasionaly returned empty columns of data.
  • Added local_examples/Jons_qc_1.R with Jon's best take on appropriate QC of
    the hourly aggregated data.
  • Updated AirShiny theme and include About section
  • Revamped AirShiny UI
  • Support for pat_createAirSensor() added to barplot
  • Dockerized AirShiny
  • Updated Namespace
  • Added global.R to improve clarity of scope
  • Added hex-sticker logo for AirShiny
  • Added pas_within() for spatial analysis

AirSensor 0.2.18

  • New pat_createAirSensor() function converts from pat object to airsensor
    object that is compatible with the PWFSLSmoke package.
  • Changed pat_qc() argument humidityMax --> max_humidity.

AirSensor 0.2.17

  • Refactored pat_aggregate() to fix an issue with t-test statistics. Also
    simplified the function signature to accept just pat and period arguments.

AirSensor 0.2.16

  • Updated pat_load() to default to the most recent week of data
  • New pat_qc() function applies low level QC
  • updated pat_outliers() to retain records with missing PM2.5 values when
    replace = TRUE
  • modified pat_aggregate() defaults to: period = "1 hour", quickStats = TRUE
  • removed pat_aggregate() dataThreshold argument
  • added example_pat_failure_B dataset with severe A channel errors

AirSensor 0.2.15

  • Fixed default parameters bug in pat_scatterplot()
  • New shiny utilities for AirShiny

AirSensor 0.2.14

  • Remove out-of-time-range records in pat_loadLatest()
  • Corrected default date calculation in createMonthlyPAT_exec.R

AirSensor 0.2.13

  • Added ShinyAirSensor directory for alpha web-apps
  • Added threePlot web-app
  • Added dailyAveragePlot web-app

AirSensor 0.2.12

  • renamed internal sample() to .sample() to avoid confusion with
    base::sample()
  • simplified end-user parameters
  • Added ShinyAirSensor
  • utils-plot.R added to support general functions
  • utils-gen.R added to support general functions

AirSensor 0.2.11

  • local_examples/07_pat_archive.R demonstrates how to efficiently work with
    pre-generated pat files from the archive
  • new pat_loadMonth() loads pre-generated "pat" objects from a data archive
  • simplified pat_aggregate() -- it now always returns all statistics
  • removed unused plotList parameter from pat_multiplot()
  • pat_join() can now accept either individual pat objects or a list of
    pat objects
  • new local_executables/createMonthlyPAT_exec.R script for populating an
    archive with pat data files

AirSensor 0.2.10

  • renamed pat_load() to pat_loadLatest()
  • removed subset and weights parameters from pat_internalFit()
  • removed unused param parameter from pat_join()

AirSensor 0.2.9

  • ast_createAirSensor() converts ast objects into "airsensor" objects that
    are compatible with the PWFSLSmoke package
  • initializeMazamaSpatialUtils() now imports all datasets need to create
    pas objects
  • updated example_pas data file has additional fields introduced by the
    0.2.8 version of enhanceSynopticData()
  • removed first attempt pat_timeAverage() function
  • new pat_aggregate() function performs temporal aggregation

AirSensor 0.2.8

  • improvements in enhanceSynopticData() now handle changing order of json
    properties and validate locations before adding spatial metadata
  • new pat_createASTimeseries() function handles conversion of
    Purple Air-specific "pat" objects into sensor-generic "ast" objects.
  • new ast_createAirSensor() objects converts "ast" objects into a "as" data
    type that is compatible with the "ws_monitor" data type used in the
    PWFSLSmoke package

AirSensor 0.2.7

  • corrected the algorithm for pat_sample(forGraphics = TRUE)
  • consistent support for named palettes in pas_leaflet() and pas_staticMap()
  • enhanceSynopticMetadata() adds the following columns to a pas object:
    • airDistrict -- CARB air district
    • sensorManufacturer = "Purple Air"
    • targetPollutant = "PM"
    • technologyType = "consumer-grade"
    • communityRegion -- (where known)

AirSensor 0.2.6

  • added example_pat_failure dataset
  • added createASTimeseriesObject()
  • improved labeling in all plots
  • new pas_staticMap() function with customizable base maps and color schemes
  • removed pas_esriMap() because the ESRI map service we were using started
    requiring tokens on April 25, 2019

AirSensor 0.2.5

  • changed parameter name from param to parameter in pas_leaflet()
  • changed pat_sample() outlier detection window size to n = 23 to match
    pat_outliers()

AirSensor 0.2.4

  • uniform parameter validation in all pat~ functions
  • improved defaults for pat_sample() function
  • minor improvements to pat~ plot functions

AirSensor 0.2.3

  • pat_sample() included to sample pat datasets
    ...
Read more

0.2.1

17 Sep 18:21
Compare
Choose a tag to compare
0.2.1 Pre-release
Pre-release

AirSensor 0.2.1

  • minor documentation cleanup
  • graphical options and other improvements for pas_esriMap()
  • added local_examples/example_02_pas-filtering.R
  • added pas_filterArea()
  • new utility functions pas_isPas(), pas_isEmpty()

AirSensor 0.2.0

  • renamed package to AirSensor
  • renamed pat_internalData() to pat_scatterplot() with improved functionality
  • renamed pat_outliers() to pat_outliers() with improved functionality
  • new utility functions pat_isPat(), pat_isEmpty(), pat_extractMeta(),
    pat_extractData()
  • first pass at pat_internalFit() function
  • added pas_filter() to filter toolbox
  • fixed binning of pas_esriMap()

AirSensor 0.1.9

  • added generalized multiplot function multi_ggplot()
  • include static mapping functionality with pas_esriMap()
  • added pat_filterData

0.1.8

17 Sep 18:22
Compare
Choose a tag to compare
0.1.8 Pre-release
Pre-release

AirSensor 0.1.8

  • pat_subdate() has been renamed to pat_filterDate() and defaults to
    the America/Los_Angeles timezone
  • improved handling of date ranges in pat_loadLatest() -- all requests are assumed
    to be in the sensor's local timezone
  • pas_load() function now downloads pre-generated pas objects
  • a new pas_loadLatest() function downloads raw synoptic data from Purple
    Air and generates a pas object
  • simplified docker image usage

AirSensor 0.1.7

  • include docker image
  • added subdating feature

AirSensor 0.1.6

  • added multiplotting tools
  • added outlier detection
  • added pat_internalData

AirSensor 0.1.5

  • added PurpleAir timeseries functionality
  • updated PurpleAir synoptic vignette

AirSensor 0.1.4

  • improved, more consistent documentation
  • renamed example datasets to example_pas and example_raw_pas

AirSensor 0.1.3

  • added documentation file for package datasets
  • changed header of vignette so that it is built properly

AirSensor 0.1.2

  • added parameter validation and testing for all existing functions
  • adding data/ directory with sample pas object
  • added vignettes/purple-air-synoptic.Rmd

AirSensor 0.1.1

  • added parameter validation to pas_leaflet.R
  • added test-pas_leaflet.R file

AirSensor 0.1.0

Initial functions to download and map Purple Air synoptic data.

  • downloadParseSynopticData.R -- gets the most recent syoptic data from purpleair.com
  • enhanceSynopticData.R -- adds spatial metadata to a synoptic dataset
  • initializeMazamaSpatialUtils.R -- convenience function to install Mazama spatial data
  • pas_leaflet.R -- creates an interactive map from a synoptic dataset
  • pas_load.R -- download/parse/enhance synoptic data
  • pwfsl_load.R -- download PWFSL monitoring data