Releases: MazamaScience/AirSensor
0.9.11
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 bydatetime
. - Added warning for duplicated timesteps to
pat_isPat()
andsensor_isSensor()
.
AirSensor 0.9.8
- Added
idPattern
argument to allpas_get~()
functions. - Fixed bug in
sensor_load()
.
0.9.7
AirSensor 0.9.7
- Removed inappropriate application of
round(1)
from internalpat_aggregate()
calculations. - Refactored
patData_aggregate()
to work properly. The passed inFUN
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()
andsensor_polarPlot()
.
AirSensor 0.9.0
Pre-release candidate.
- Removed old, unused files from the code base.
setArchiveBaseDir(NULL)
now works identically toremoveArchiveBasesDir()
.
Ditto forsetArchiveBaseUrl(NULL)
.pas_load()
returns helpful message when the archiveBASE_DIR
is set and
no requestedpas
data is found:removeArchiveBaseDir()
.- Added "Temporal Aggregation" article.
- Added "Custom QC Algorithms" article.
- Added
verbose
parameter tosensor_polarPlot()
andsensor_pollutionRose()
. - Added
pat_multiplot()
as an alias forpat_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
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
AirSensor 0.8.2
- Removed unnecessary
pat_createNew()
check for spatial data.
0.8.1
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 forparameter = "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 frompat_downloadParseRawData()
. New fieldspressure
and
bsec_iaq
are included in the createdpat
object. - Including dependency on httpcode and readr packages.
- Renamed
pat_multiplot()
topat_multiPlot()
(capital 'P'). - Renamed
pat_scatterMatrixPlot
topat_scatterPlotMatrx()
.
AirSensor 0.7.6
pat_createAirSensor()
pas_load()
now ignores duplicated warning messages.- The upper threshold for
pm25
inpat_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()
andpat_createAirSensor()
functions. - New default QC function
PurpleAirQC_hourly_AB_02()
. pat_externalFit()
andpat_monitorComparison()
updated to use new
aggregation/QC functions.- Previous version of
pat_aggregate()
andpat_createAirSensor()
are now
now available aspat_aggregate_old
andpat_createAirSensor_old()
. PurpleAirQC_validationPlot()
renamed toPurpleAirQC_validationPlot_old()
.pat_outliers()
defaults updated to reflect current default 120 second sample
interval.pat_multiPlot()
now returns aggplot2
object which can be manipulated.
AirSensor 0.7.4
- Renamed
downloadParseTimeseriesData()
topat_downloadParseRawData()
.
AirSensor 0.7.3
- Improved error messaging in
pas_load()
.
AirSensor 0.7.2
- Updated
pas_upgrade()
to addsensorManufacturer
,targetPollutant
and
technologyType
columns.
AirSensor 0.7.1
- Updated example
archiveBaseUrl
fromhttp://smoke.mazamascience.com/data/PurpleAir
tohttp://data.mazamascience.com/PurpleAir/v1
.
0.7.0
AirSensor 0.7.0
- Renamed
pat_scatterplot()
topat_scatterMatrixPlot()
.
AirSensor 0.6.17
- Renamed
downloadParseSynopticData()
topas_downloadParseData()
. - Renamed
enhanceSynopticData()
topas_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 upgradepas
files created with
AirSensor version 0.5.
AirSensor 0.6.15
- Fixed bug in
enhanceSynopticData()
whencountryCodes = NULL
. This was
encountered when runningpas_createNew()
withcountryCodes = 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()
andpat_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 emptydata
dataframe
rather than an emptymeta
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 underneathpat/YYYY/
. Thepat_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 valuePM2.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
inpas_createNew()
and
enhanceSynopticData()
so that it is easier to create pas objects for other
countries. - Removed
countryCode
andstateCode
arguments frompas_get~
functions.
Filter should be done withpas_filter()
before these functions are called.
AirSensor 0.6.7
- Fixed bug in
enhanceSynopticData()
which failed to addpwfsl~
columns when
includePWFSL = FALSE
. (The columns should still exist but with all NA.) - All
pas_get~()
functions now support subsetting bycountryCode
and US
stateCode
.
AirSensor 0.6.6
- Added
days
argument topat_loadLatest()
. pat_load()
andsensor_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 optionalpwfsl_~
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 first
idargument is used as the
deviceDeploymentID` unique time series identifier. - The second and third arguments are now
label
andpas
and provide an
alternative to specifyingid
. - 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
anddeviceDeploymentID
.
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()
topas_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 asID
but more explicitlocationID
-- generated withMazamaLocationUtils::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
AirSensor 0.5.17
Minor documentation updates and package rebuild.
0.5.16
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
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()
topat_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
:
startdate
timezone if it isPOSIXct
timezone
if it is passed inpat$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()
argumentparameterPatter
topattern
.
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
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()