Releases: MazamaScience/AirSensor
Releases · MazamaScience/AirSensor
0.5.8
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
AirSensor 0.5.7
timeseriesTbl_multiplot()
now supports astyle
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
AirSensor 0.5.6
- Updated
pat_createNew()
anddownloadParseTimeseriesData()
to support the
id
parameter. - Enhanced
PurpleAirQC_aggregationPlot()
to work with any tibble or dataframe
and renamed it totbl_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 topat_createAirSensor()
to allow for
custom aggregation statistics.
AirSensor 0.5.4
- Added
PurpleAirQC_aggregationPlot()
function. - Improved
datestamp
handling inpas_load()
. - More explicit use of timezones to avoid local/UTC misunderstandings.
0.5.3
AirSensor 0.5.3
- Added
make.names
argument topat_loadMonth()
andpat_loadLatest()
.
AirSensor 0.5.2
- Fixed bug in
pat_dygraph()
which referencedPWFSLSmoke::parseDatetime()
which is now deprecated in favor ofMazamaCoreUtils::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 callloadDataFile()
pat_load()
now continues working in the face of missing data files.
under the hood and will work with data archives found atarchiveBaseDir
.- Removed
pat_calendarPlot()
andsensor_calendarPlot()
from the packge.
These work-in-progress functions are now found inlocal_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
AirSensor 0.4.10
- Fixed bug in
sensor_filterMeta()
where filtering the number of rows in
sensor$meta
did not also filter columns insensor$data
.
0.4.9
AirSensor 0.4.9
- Updated
sensor_videoFrame()
with new arguments and new defaults for
colorPalette
andcolorBins
. - Updated
pat_sample()
to handle cases where the A or B channel contains
only missing values.
AirSensor 0.4.8
sensor_loadLatest()
now supports adays
argument and defaults to loading
a 45-day file.
0.4.7
AirSensor 0.4.7
- Improved
local_executables/
scripts. - Added
timezone
argument todownloadParseTimeseriesData()
. - 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()
defaultretries
was increased from 10 to 30.- Fixed bug where
pat_createNew()
created time ranges that ended (UTC - local)
hours short of the requestedenddate
. - Plots generated with
pat_externalFit()
,pat_internalFit()
,
pat_monitorComparison()
andpat_outliers()
now have time axes with sensor local time rather than UTC. pat_externalFit()
andpat_monitorComparison()
labeling now includes PWFSL
monitorsiteName
- 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 defaultbase::Sys.timezone()
. enhanceSynopticData()
now handles presence or absence ofState
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()
andsensor_calendarPlot()
to handle discrete
color scales.
AirSensor 0.4.2
pat_createAirSensor()
now usespat$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()
andgetArchiveBaseUrl()
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 withsetArchiveBaseUrl()
. - 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 thepat
object was fewer than thesampleSize
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 topat_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
AirSensor 0.3.12
- Renamed
pas_loadLatest()
topas_createNew()
. - Renamed
pat_loadLatest()
topat_createNew()
. - Added "Too Many Requests" error messages to
download~()
functions. - Added
timezone
parameter topas_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()
andsensor_pollutionRose()
. - Added
PurpleAirQC_algorithm
tosensor
objects created by
pat_createAirSensor()
so that they self-document how they were created. - Included an
archival
argument topas_load()
. Whenarchival = 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
tolabel
inpat_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()
andpas_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 topat_multiplot()
.
AirSensor 0.3.9
- Added
sensor_filter()
,sensor_filterDate()
andsensor_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~()
tosensor_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()
andpat_createAirSensor()
so that they
no longer generateNaN
orInf
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 newerpat_<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 topat_multiplot()
.
AirSensor 0.3.3
- renamed
pas_within()
topas_filterNear()
- renamed
airSensorQC_~
functions toPurpleAirQC_~
- 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
andhourly_AB_01
. - Updated
pat_cerateAirSensor()
to accept arguments that impact the conversion
ofpat
data into aggregated period-averages:period
,channel
,qc_algorithm
,
min_count
. - Fixed
pat_aggregate()
so that anyNaN
orInf
values are converted toNA
.
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 frompat
object toairsensor
object that is compatible with thePWFSLSmoke
package. - Changed
pat_qc()
argumenthumidityMax
-->max_humidity
.
AirSensor 0.2.17
- Refactored
pat_aggregate()
to fix an issue with t-test statistics. Also
simplified the function signature to accept justpat
andperiod
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 functionsutils-gen.R
added to support general functions
AirSensor 0.2.11
local_examples/07_pat_archive.R
demonstrates how to efficiently work with
pre-generatedpat
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 frompat_multiplot()
pat_join()
can now accept either individualpat
objects or a list of
pat
objects- new
local_executables/createMonthlyPAT_exec.R
script for populating an
archive withpat
data files
AirSensor 0.2.10
- renamed
pat_load()
topat_loadLatest()
- removed
subset
andweights
parameters frompat_internalFit()
- removed unused
param
parameter frompat_join()
AirSensor 0.2.9
ast_createAirSensor()
convertsast
objects into "airsensor" objects that
are compatible with the PWFSLSmoke packageinitializeMazamaSpatialUtils()
now imports all datasets need to create
pas
objects- updated
example_pas
data file has additional fields introduced by the
0.2.8 version ofenhanceSynopticData()
- 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()
andpas_staticMap()
enhanceSynopticMetadata()
adds the following columns to apas
object:airDistrict
-- CARB air districtsensorManufacturer = "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
toparameter
inpas_leaflet()
- changed
pat_sample()
outlier detection window size ton = 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 samplepat
datasets
...
0.2.1
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()
topat_scatterplot()
with improved functionality - renamed
pat_outliers()
topat_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
AirSensor 0.1.8
pat_subdate()
has been renamed topat_filterDate()
and defaults to
theAmerica/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-generatedpas
objects- a new
pas_loadLatest()
function downloads raw synoptic data from Purple
Air and generates apas
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
andexample_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 samplepas
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