Skip to content

Releases: MazamaScience/AirSensor

0.9.11

26 Aug 23:23
Compare
Choose a tag to compare
0.9.11 Pre-release
Pre-release

AirSensor 0.9.11

  • Refactored pat_join() to remove overlapping data in incoming PAT objects
    before joining.

AirSensor 0.9.10

  • Added pat_filterDatetime() function for times that are not aligned to date
    boundaries.
  • Modified pat_createNew() to not trim data at date boundaries.
  • Modified pat_load() to not trim data at date boundaries and removed the
    days parameter.

AirSensor 0.9.9

  • Added sensor_join() function to "join" _airsensor_objects from different
    months.
  • Updated pat_distinct() to remove duplicated timestamps and guarantee proper
    ordering by datetime.
  • Added warning for duplicated timesteps to pat_isPat() and sensor_isSensor().

AirSensor 0.9.8

  • Added idPattern argument to all pas_get~() functions.
  • Fixed bug in sensor_load().

0.9.7

14 Jul 23:31
Compare
Choose a tag to compare
0.9.7 Pre-release
Pre-release

AirSensor 0.9.7

  • Removed inappropriate application of round(1) from internal pat_aggregate()
    calculations.
  • Refactored patData_aggregate() to work properly. The passed in FUN must
    now return a matrix.

AirSensor 0.9.6

  • Restored/fixed examples in sensor_load~() functions.
  • Properly handling duplicate datetimes in pat_createPATimeseriesObject.R.

AirSensor 0.9.5

Changes requested by CRAN maintainers:

  • Improved function examples.
  • Removed function internal use of option(warn = -1).

AirSensor 0.9.4

  • Updates to pass CRAN checks.

AirSensor 0.9.3

  • More updates to pass win-builder checks.

AirSensor 0.9.2

  • Updates to pass win-builder checks.

AirSensor 0.9.1

  • Removed sensor_videoFrame(). This function is not general and has beem moved
    to the AQ-SPEC-sensor-data-ingest-v1 private repository.
  • New R Markdown document for comparing QC algorithms: local_Rmd/PurpleAirQC_Comparison.Rmd.
  • Now using PurpleAirQC_hourly_AB_01() as the default QC algorithm throughout
    the code. (The _02 version removed too much data.)
  • Updated examples in sensor_pollutionRose() and sensor_polarPlot().

AirSensor 0.9.0

Pre-release candidate.

  • Removed old, unused files from the code base.
  • setArchiveBaseDir(NULL) now works identically to removeArchiveBasesDir().
    Ditto for setArchiveBaseUrl(NULL).
  • pas_load() returns helpful message when the archive BASE_DIR is set and
    no requested pas data is found: removeArchiveBaseDir().
  • Added "Temporal Aggregation" article.
  • Added "Custom QC Algorithms" article.
  • Added verbose parameter to sensor_polarPlot() and sensor_pollutionRose().
  • Added pat_multiplot() as an alias for pat_multiPlot().

AirSensor 0.8.6

  • Fixed pat_dailySoH() bug that showed up with dplyr 1.0.0.
  • Improved examples in function documentation.

0.8.5

11 Jun 23:41
Compare
Choose a tag to compare
0.8.5 Pre-release
Pre-release

AirSensor 0.8.5

  • Fixed pat_aggregate() to always return a "regular" time axis with no
    missing timesteps.
  • Restored example_sensor dataset.
  • Additional unit tests.

AirSensor 0.8.4

  • Added another QC function -- PurpleAirQC_hourly_AB_03().
  • Modified pat_monitorComparison()
    • simplified function signature by removing unused color and shape parameters
    • added FUN to specify which QC algorithm to apply
    • added distanceCutoff specifying the radius within which to search for a
      nearby monitor.

AirSensor 0.8.3

  • Restored unit tests for pat_filterDate().

0.8.2

11 Jun 23:43
Compare
Choose a tag to compare
0.8.2 Pre-release
Pre-release

AirSensor 0.8.2

  • Removed unnecessary pat_createNew() check for spatial data.

0.8.1

11 Jun 23:42
Compare
Choose a tag to compare
0.8.1 Pre-release
Pre-release

AirSensor 0.8.1

  • New pat_upgrade() function to bring version 0.6 'pat' objects up to the
    version 0.8 data model.
  • Improved error messages in pas_createNew().
  • Updated pat_dygraph() to include support for parameter = "pressure".
  • Refactored pat_aggregateOutlierCounts().

AirSensor 0.8.0

This release completely refactors the way that 'pat' data are downloaded from
ThingSpeak. Additional data columns are added to the standard pat$data
dataframe.

  • Refactored pat_downloadParseRawData() data access times and also reduced the
    volume of data downloaded by switching from the .json to the .csv API from
    ThingSpeak. This function now returns a list of five dataframes.
  • Renamed and refactored pat_createPATimeseriesObject() to work with the new
    list of dataframes from pat_downloadParseRawData(). New fields pressure and
    bsec_iaq are included in the created pat object.
  • Including dependency on httpcode and readr packages.
  • Renamed pat_multiplot() to pat_multiPlot() (capital 'P').
  • Renamed pat_scatterMatrixPlot to pat_scatterPlotMatrx().

AirSensor 0.7.6

  • pat_createAirSensor()
  • pas_load() now ignores duplicated warning messages.
  • The upper threshold for pm25 in pat_qc() was increased to 2,000 based on
    a 2020-05-14 conversation with PurpleAir founder Adrian Dybwad.

AirSensor 0.7.5

This release completely refactors the way that aggregation and QC are
performed. The changes should make the code easier to maintain, faster and
much more flexible for those developing QC algorithms.

  • New pat_aggregate() and pat_createAirSensor() functions.
  • New default QC function PurpleAirQC_hourly_AB_02().
  • pat_externalFit() and pat_monitorComparison() updated to use new
    aggregation/QC functions.
  • Previous version of pat_aggregate() and pat_createAirSensor() are now
    now available as pat_aggregate_old and pat_createAirSensor_old().
  • PurpleAirQC_validationPlot() renamed to PurpleAirQC_validationPlot_old().
  • pat_outliers() defaults updated to reflect current default 120 second sample
    interval.
  • pat_multiPlot() now returns a ggplot2 object which can be manipulated.

AirSensor 0.7.4

  • Renamed downloadParseTimeseriesData() to pat_downloadParseRawData().

AirSensor 0.7.3

  • Improved error messaging in pas_load().

AirSensor 0.7.2

  • Updated pas_upgrade() to add sensorManufacturer, targetPollutant and
    technologyType columns.

AirSensor 0.7.1

  • Updated example archiveBaseUrl from http://smoke.mazamascience.com/data/PurpleAir
    to http://data.mazamascience.com/PurpleAir/v1.

0.7.0

18 Apr 20:32
Compare
Choose a tag to compare

AirSensor 0.7.0

  • Renamed pat_scatterplot() to pat_scatterMatrixPlot().

AirSensor 0.6.17

  • Renamed downloadParseSynopticData() to pas_downloadParseData().
  • Renamed enhanceSynopticData() to pas_enhanceData().
  • New functions used in creating pas objects: pas_addAirDistrict(),
    pas_addSpatialMetadata(), pas_addUniqueIDs(), pas_addUniqueIDs(),
    pas_hasSpatial().

AirSensor 0.6.16

  • New pas_upgrade() function to upgrade pas files created with
    AirSensor version 0.5.

AirSensor 0.6.15

  • Fixed bug in enhanceSynopticData() when countryCodes = NULL. This was
    encountered when running pas_createNew() with countryCodes = NULL.
  • Added "PurpleAir Synoptic Data" article.

AirSensor 0.6.14

  • PAS function documentation typo fixes.
  • Added "Developer Style Guide" article.
  • Updated to use MazamaCoreUtils::loadDatafile() function .
  • Added more unit testing for pas_~() functions.

AirSensor 0.6.13

  • Proper timezone handling in pat_multiplot() and pat_monitorComparison()

AirSensor 0.6.12

  • Separated calculation of SoHIndex into PurpleAirSoH_dailyToIndex()

AirSensor 0.6.11

  • Fixed bug in pat_isEmpty() so that it test for an empty data dataframe
    rather than an empty meta dataframe.
  • pat_trimDate() now preserves the first day if it begins at local midnight.

AirSensor 0.6.10

  • Improved error message in downloadParseTimeseriesData().

AirSensor 0.6.9

  • Archive directory structure was changed so that monthly pat files are found
    in a monthly directiory underneath pat/YYYY/. The pat_loadMonth() function
    was modified to search in this locaiton.
  • pat$meta$pm25_A/B values now come from the raw data outdoor value
    PM2.5 (ATM) rather than the indoor value PM2.5 (CF=1). See
    https://www2.purpleair.com/community/faq#!hc-what-is-the-difference-between-cf-1-and-cf-atm
  • Added more logging to downloadParseTimeseriesData().

AirSensor 0.6.8

  • Changed default value to countryCodes = NULL in pas_createNew() and
    enhanceSynopticData() so that it is easier to create pas objects for other
    countries.
  • Removed countryCode and stateCode arguments from pas_get~ functions.
    Filter should be done with pas_filter() before these functions are called.

AirSensor 0.6.7

  • Fixed bug in enhanceSynopticData() which failed to add pwfsl~ columns when
    includePWFSL = FALSE. (The columns should still exist but with all NA.)
  • All pas_get~() functions now support subsetting by countryCode and US
    stateCode.

AirSensor 0.6.6

  • Added days argument to pat_loadLatest().
  • pat_load() and sensor_load() default to the last 7 days when no dates
    are provided.
  • New pat_trimDate() function trims data to local time full days.
  • pas_isPas() no longer requires presence of optional pwfsl_~ columns.

AirSensor 0.6.5

  • Reordered arguments in pas_filterNear() to package standard
    longitude, latitude.

AirSensor 0.6.4

  • Refactored pas objects to include: deviceID, locationID,
    deviceDeploymentID.
  • Refactored pat_createNew() and pat_load~()functions so that the firstid argument is used as thedeviceDeploymentID` unique time series identifier.
  • The second and third arguments are now label and pas and provide an
    alternative to specifying id.
  • Recreated example data with the new functions.

AirSensor 0.6.3

  • Improved examples.

AirSensor 0.6.2

  • Documentation corrections.
  • Recreated all exaple_pat~ data files with so they have the new metadata
    fields: sensorID, locationID and deviceDeploymentID.

AirSensor 0.6.1

Revisited everything at the pas object level:

  • Error message harmonization.
  • Updated package data files.
  • Updated documentation.
  • Updated tests.
  • Renamed pas_sensorDeploymentID() to pas_deviceDeploymentID()

AirSensor 0.6.0

Version 0.6 is a backwards incompatible release. It replaces label identifier
with a proper "sensor-deployment" identifier and relies on the
MazamaLocationUtils package to create location identifiers. Becuase of this
change, archives must be regenerated and many functions must be refactored.

New fields in pat$meta include:

  • sensorID -- same as ID but more explicit
  • locationID -- generated with MazamaLocationUtils::location_createID()
  • sensorDeploymentID -- combination of the above

The following functions were added/refactored to use "sensor-deployment"
identifiers:

  • pas_sensorDeploymentID() creates a unique "sensor-deployment"
    identifier. This identifier is used in creation of file names in the archive
    database and as the unique time series identifer in airsensor objects.
  • pas_getColumn(), past_getLabels(), pas_getIDs()
  • pat_createNew()
  • pat_load(), pat_loadLatest(), pat_loadMonth()
  • pat_createAirSensor()

AirSensor 0.5.18

  • Linted for timezones - fixed in Mutliplot and monitor comparison.

0.5.17

14 Dec 02:06
Compare
Choose a tag to compare

AirSensor 0.5.17

Minor documentation updates and package rebuild.

0.5.16

05 Dec 00:22
Compare
Choose a tag to compare

AirSensor 0.5.16

  • sensor_polarPlot() now uses the second-nearest met station if no data are
    found at the nearest station.
  • pat_filterDate() now issues a warning if requested data range is outside
    aviailable date range
  • removed print statements from downloadParseTimeseriesData()

0.5.15

03 Dec 23:50
Compare
Choose a tag to compare

AirSensor 0.5.15

Additional functionality for calculating a state of health index to be used as
an overall assessment of sensor functioning.

  • renamed pat_dailyStateOfHealth() to pat_dailySoH()
  • new functions pat_dailySoHPlot(), pat_dailySoHIndex_00(),
    pat_dailySoHIndexPlot()

AirSensor 0.5.14

Modified how pat_filterDate() obtains the timezone used to interpret the
incoming startdate and enddate:

  1. startdate timezone if it is POSIXct
  2. timezone if it is passed in
  3. pat$meta$timezone otherwise

AirSensor 0.5.13

  • pat_outliers() no longer fails in the face of DC signals
  • New pas_getLabels() functions simplifies the creation of vectors of sensor
    labels (currently used as unique identifiers)

AirSensor 0.5.12

Refactored PurpleAirSoH_daily~() functions to use dplyr resulting in code
that runs faster and is easier to understand.

  • Changed ~SoH_dailyCorrelation() to ~SoH_dailyOtherFit().
  • Changed timeseriesTbl_multiplot() argument parameterPatter to pattern.

AirSensor 0.5.11

Fixed bug in datetime axis that caused SoH functions to return missing values
after the switch from PST to PDT.

0.5.10

01 Nov 20:27
Compare
Choose a tag to compare

AirSensor 0.5.10

Removed logger.error() statements from the following low-level functions as
they couldn't be turned off and ended up cluttering the log files:

  • loadDataFile()
  • pas_load()
  • pat_createNew()
  • pat_loadLatest()
  • pat_loadMonth()
  • sensor_loadLatest()
  • sensor_loadMonth()
  • sensor_loadYear()

Improved pat_join() logic to deal with metadata changes associated
with the value pwfsl_closestMonitorID when temporary monitors come and go
in the PWFSL database.

AirSensor 0.5.9

New PurpleAirSoH~ functions calculate daily state-of-health metrics from PAT
data. These metrics can be combined to create multi-metric indices that provide
an overall assessment of the health of a Purple Air sensor.

  • PurpleAirSoH_dailyCorrelation()
  • PurpleAirSoH_dailyPctDC()
  • PurpleAirSoH_dailyPctReporting()
  • PurpleAirSoH_dailyPctValid()
  • pat_dailyStateOfHealth()