add aggregated boxes metadata to monitor

pull/17/head
noerw 7 years ago
parent 5ea78e9505
commit de5028d823

@ -1,28 +1,23 @@
FROM r-base
RUN apt-get update && \
apt-get install -y libssl-dev libcurl3-dev cron
apt-get install -y libssl-dev libcurl3-dev cron libgdal-dev libgeos-dev libproj-dev libudunits2-dev liblwgeom-dev
# install dependencies
RUN Rscript -e 'install.packages("httr")'
RUN Rscript -e 'install.packages("dplyr")'
RUN Rscript -e 'install.packages("sf")'
RUN Rscript -e 'install.packages("magrittr")'
#RUN Rscript -e 'install.packages("readr")'
# install opensensemap package
RUN Rscript -e 'install.packages("devtools")'
RUN Rscript -e 'devtools::install_github("noerw/opensensmapR")'
COPY docker-entry.sh /docker-entry.sh
RUN chmod 0755 /docker-entry.sh
# install crontab
COPY crontab /crontab
RUN /usr/bin/crontab /crontab
RUN apt-get clean && apt-get autoremove -y
# install script
COPY osem-monitor.R /script/osem-monitor.R
WORKDIR /script/data
COPY get-counts.R /script/get-counts.R
COPY get-boxes.R /script/get-boxes.R
CMD ["/docker-entry.sh"]
WORKDIR /script/data
CMD ["cron", "-f"]

@ -4,3 +4,6 @@ ts = osem_counts_ts
# compute our own measurements per minute, to check against the provided computation
ts$measurement_diff = c(diff(ts$measurements), 0)
ts$measurement_minute = ts$measurement_diff / c(as.numeric(diff(ts$time), unit = 'mins'), 0)
plot(measurements~time, ts)
plot(measurements_per_minute~time, ts)

@ -1 +1,8 @@
*/10 * * * * cd /script/data && /usr/bin/Rscript --save --restore ../osem-monitor.R > rscript.log
#!/bin/sh
# once every 15 mins
*/15 * * * * cd /script/data && /usr/bin/Rscript --save --restore ../get-counts.R > get-counts.log 2>&1
# mondays, 12:02
#(may not run simultanously, to avoid override of .RData save)
2 12 * * 1 cd /script/data && /usr/bin/Rscript --save --restore ../get-boxes.R > get-boxes.log

@ -1,5 +0,0 @@
#!/bin/sh
# start cron
cron -f -l 0

@ -0,0 +1,22 @@
library(magrittr)
library(opensensmapr)
library(sf)
if (is.null(as.list(environment())$osem_boxes_ts))
osem_boxes_ts = data.frame()
b = osem_boxes()
# only keep aggregated data
b_agg = data.frame(time = Sys.time(), boxcount = nrow(b))
b_agg$model = b$model %>% table() %>% as.list() %>% list()
b_agg$exposure = b$exposure %>% table() %>% as.list() %>% list()
b_agg$geometry = b %>% osem_as_sf() %>% st_geometry() %>% list()
b_agg$phenomena = b %>% osem_phenomena() %>% list()
# combine with existing time series
osem_boxes_ts = rbind(b_agg, osem_boxes_ts)
# cleanup
rm(b)
rm(b_agg)

@ -1,6 +1,5 @@
library(dplyr)
library(magrittr)
library(opensensemap)
library(opensensmapr)
if (is.null(as.list(environment())$osem_counts_ts))
osem_counts_ts = data.frame()
@ -8,5 +7,4 @@ if (is.null(as.list(environment())$osem_counts_ts))
osem_counts_ts = osem_counts() %>%
list(time = Sys.time()) %>%
as.data.frame() %>%
dplyr::bind_rows(osem_counts_ts)
rbind(osem_counts_ts)
Loading…
Cancel
Save