Nothing
# TESTS SET for the covid19.analytics package
# M.Ponce
#############################################
############ DATA RETRIEVAL ##############
#############################################
test_that("Data Retrieval", {
skip_if_not_installed("curl")
loc.data <- c(F,T)
for (repo in loc.data) {
# WORLD DATA
# aggregated
agg.data <- covid19.data("aggregated", local.data=repo)
expect_s3_class(agg.data,"data.frame")
# TS
ts.data <- covid19.data("ts-ALL", local.data=repo)
expect_s3_class(ts.data,"data.frame")
# ALL
all.data <- covid19.data("ALL", local.data=repo)
expect_type(all.data,"list")
}
# Toronto Data
# original data type
if (curl::has_internet())
expect_type(covid19.Toronto.data(origin="city",data.fmt="original"), "list")
# TS Toronto data
# failing on WINDOWS ##i386
#tor.data <- covid19.Toronto.data()
#expect_s3_class(tor.data,"data.frame")
## failing on WINDOWS -- R 3.6.3
tor.data <- covid19.Toronto.data(local.data=TRUE)
expect_s3_class(tor.data,"data.frame")
# US data
us.data <- covid19.US.data()
expect_s3_class(us.data,"data.frame")
})
#####################################################################
### Toronto Data
test_that("Toronto Data", {
# TS Toronto data
# failing on WINDOWS ##i386
#tor.data <- covid19.Toronto.data()
#expect_s3_class(tor.data,"data.frame")
# failing on WINDOWS -- R 3.6.3
tor.data <- covid19.Toronto.data(local.data=TRUE)
expect_s3_class(tor.data,"data.frame")
# TRENDS
# single trend
st.Tor <- unique(tor.data$status)
for (i in st.Tor) {
expect_warning(single.trend(tor.data[tor.data$status == i,], info=i))
}
# Multiple trends
expect_output(mtrends(tor.data))
})
#####################################################################
### Integrity/Consistencies tests
test_that("integrity/consistency", {
source("covid19_checks_tests.R")
expect_warning(test.data.checks())
})
#####################################################################
##### CONTIONAL TESTS ####### ==> to reduce testing time
# flag to control how many test need to be run...
# using *either*
# an OS enviroment variable COVID19ANALYTICS = "full.test"
# OR
# an R variable covid19analytics.testing = "full.test"
# check OS environment variable
c19fulltest_OS <- Sys.getenv("COVID19ANALYTICS")=="full.test"
# check R enviroment variable
c19fulltest_R <- ( ("covid19analytics.testing" %in% ls()) && (covid19analytics.testing == "full.test") )
message(c19fulltest_OS)
message(c19fulltest_R)
#c19fulltest_R <- TRUE
#assign("N",tot.population, envir = .SIR.model.env) #.GlobalEnv)
# check if the fulltest flags were activated...
if (c19fulltest_OS | c19fulltest_R) {
message("Running FULL batery of TEST for covid19.analytics...")
### TOTS.PER.LOCATION()
test_that("TOTS.PER.LOCATION fn", {
cases <- c("confirmed","deaths","recovered")
for (i in seq_along(cases)) {
i.case <- cases[i]
header("",paste('processing ',i.case))
# read the time series data for confirmed cases
all.data <- covid19.data(paste0('ts-',i.case))
expect_s3_class(all.data,"data.frame")
# run on all the cases
#pdf(paste0("Japan_",i.case,".pdf"))
expect_invisible(tots.per.location(all.data,"Japan"))
#dev.off()
}
})
### GROWTH.RATE()
test_that("GROWTH.RATE fn", {
# read time series data for confirmed cases
TS.data <- covid19.data("ts-confirmed")
expect_s3_class(TS.data,"data.frame")
locs <- c("Hubei","Italy","Germany","Canada")
for (i in seq_along(locs)) {
i.loc <- locs[i]
print(i.loc)
# compute changes and growth rates per location for 'Italy'
#pdf(paste0("gr-changes_",i.loc,".pdf"))
expect_output( growth.rate(TS.data,geo.loc=i.loc) )
#dev.off()
}
})
test_that("GROWTH.RATE fn with more cases...", {
# obtain Time Series data
TSconfirmed <- covid19.data("ts-confirmed")
# explore different combinations of regions/cities/countries
# when combining different locations heatmaps will also be generated comparing the trends among these locations
expect_output( growth.rate(TSconfirmed,geo.loc=c("Italy","Canada","Ontario","Quebec","Uruguay")) )
expect_output( growth.rate(TSconfirmed,geo.loc=c("Hubei","Italy","Spain","United States","Canada","Ontario","Quebec","Uruguay")) )
expect_output( growth.rate(TSconfirmed,geo.loc=c("Hubei","Italy","Spain","US","Canada","Ontario","Quebec","Uruguay")) )
})
##########################################################################
########### REPORTS ##############
test_that("REPORTS ...", {
expect_output(report.summary(graphical.output=FALSE))
expect_output(report.summary(graphical.output=FALSE, saveReport=TRUE) )
})
###########################################################################
#### INTERACTIVE PLOTS
# retrieve time series data
TS.data <- covid19.data("ts-ALL")
# static and interactive plot
totals.plt(TS.data, interactive.display=FALSE)
# retrieve aggregated data
data <- covid19.data("aggregated")
# interactive map of aggregated cases -- with more spatial resolution
live.map(data, interactive.display=FALSE)
# or
live.map(interactive.display=FALSE)
# interactive map of the time series data of the confirmed cases with less spatial resolution, ie. aggregated by country
live.map(covid19.data("ts-confirmed"), interactive.display=FALSE)
#### SIR MODEL
# read time series data for confirmed cases
data <- covid19.data("ts-confirmed")
# run a SIR model for a given geographical location
generate.SIR.model(data,"Hubei", t0=1,t1=15)
generate.SIR.model(data,"Germany",tot.population=83149300)
generate.SIR.model(data,"Uruguay", tot.population=3500000)
generate.SIR.model(data,"Ontario",tot.population=14570000)
# the function will agregate data for a geographical location, like a country with multiple entries
generate.SIR.model(data,"Canada",tot.population=37590000)
# modelling the spread for the whole world, storing the model and generating an interactive visualization
world.SIR.model <- generate.SIR.model(data,"ALL", t0=1,t1=15, tot.population=7.8e9, staticPlt=FALSE)
# plotting and visualizing the model
plt.SIR.model(world.SIR.model,"World",interactiveFig=FALSE,fileName="world.SIR.model")
}
####
# clean up
# use a variable "covid19analytics.test.DONT.cleanup" to don't delete files
#if(!("covid19analytics.test.DONT.cleanup" %in% ls())) {
if (FALSE) {
rm.file.tps <- c("txt","pdf")
for (tp in rm.file.tps)
for (fl in dir(pattern=tp)) {
message("clean-up: removing",fl)
file.remove(fl)
}
}
####
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.