Skip to content

Commit 07bef6d

Browse files
committed
Retool for tibble and tidyr upsteam changes.
1 parent 3ae0e0b commit 07bef6d

30 files changed

+51
-47
lines changed

DESCRIPTION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Package: evaluator
22
Title: Quantified Risk Assessment Toolkit
3-
Version: 0.4.1
3+
Version: 0.4.2
44
Authors@R: c(person("David", "Severski", email = "[email protected]", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-7867-0459")))
55
Description: An open source risk analysis toolkit based on the OpenFAIR ontology
66
<https://www2.opengroup.org/ogsys/catalog/C13K> and risk assessment standard

NAMESPACE

+1
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ importFrom(stats,sd)
137137
importFrom(stringi,stri_split_fixed)
138138
importFrom(tibble,add_row)
139139
importFrom(tibble,as_tibble)
140+
importFrom(tibble,deframe)
140141
importFrom(tibble,rownames_to_column)
141142
importFrom(tibble,tibble)
142143
importFrom(tidyr,gather)

NEWS.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# evaluator 0.4.2
2+
3+
* Internal updates for recent `tibble` and `tidyr` changes.
4+
15
# evaluator 0.4.1
26

37
* Update for compatibility with `vctrs` 0.2.0 CRAN release.

R/common_graphs.R

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ theme_evaluator <- function(base_family = "BentonSansRE") {
3939
#' Display a heatmap of impact by domain
4040
#'
4141
#' Given a domain_summary and a list of all domains, generate a heatmap colored
42-
#' by the 95% VaR. This plot displays the domains in which aggregreate risk is
42+
#' by the 95% VaR. This plot displays the domains in which aggregate risk is
4343
#' greater than others.
4444
#'
4545
#' @import ggplot2
@@ -134,7 +134,7 @@ generate_scatterplot <- function(simulation_results, scenario_id){
134134
#' @export
135135
#' @examples
136136
#' data(mc_simulation_results)
137-
#' loss_scatterplot(mc_simulation_results[[1, "results"]])
137+
#' loss_scatterplot(mc_simulation_results$results[[1]])
138138
loss_scatterplot <- function(simulation_result) {
139139
gg <- ggplot(simulation_result, aes(x = .data$loss_events, y = .data$ale))
140140
gg <- gg + geom_point(alpha = 1/4)
@@ -167,7 +167,7 @@ loss_scatterplot <- function(simulation_result) {
167167
#' @export
168168
#' @examples
169169
#' data(mc_simulation_results)
170-
#' result <- mc_simulation_results[[1, "results"]]
170+
#' result <- mc_simulation_results$results[[1]]
171171
#' exposure_histogram(result)
172172
exposure_histogram <- function(simulation_result, bins = 30, show_var_95 = FALSE){
173173
gg <- ggplot(simulation_result, aes(x = .data$ale))

R/encode.R

+5-4
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ encode_scenarios <- function(scenarios, capabilities, mappings) {
7979
#' IDs.
8080
#'
8181
#' @importFrom dplyr filter select
82-
#' @importFrom rlang .data set_names
82+
#' @importFrom tibble deframe
8383
#' @importFrom stringi stri_split_fixed
8484
#' @importFrom vctrs vec_cast
8585
#' @param capability_ids Comma-delimited list of capabilities in scope for a scenario.
@@ -89,7 +89,7 @@ encode_scenarios <- function(scenarios, capabilities, mappings) {
8989
#' @export
9090
#' @examples
9191
#' data(mc_capabilities)
92-
#' capability_ids <- c("1, 3")
92+
#' capability_ids <- c("CAP-01", "CAP-03")
9393
#' derive_control_key(capability_ids, mc_capabilities)
9494
derive_control_key <- function(capability_ids, capabilities) {
9595
control_list <- stringi::stri_split_fixed(capability_ids, ", ") %>% unlist()
@@ -98,8 +98,9 @@ derive_control_key <- function(capability_ids, capabilities) {
9898
dplyr::select(.data$capability_id, .data$capability)
9999

100100
#rlang::as_list(control_frame$capability) %>%
101-
vctrs::vec_cast(control_frame$capability, to = list()) %>%
102-
rlang::set_names(control_frame$capability_id)
101+
# vctrs::vec_cast(control_frame$capability, to = list()) %>%
102+
# rlang::set_names(control_frame$capability_id)
103+
tibble::deframe(control_frame) %>% as.list()
103104

104105
}
105106

R/import.R

-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ import_scenarios <- function(survey_file = NULL, domains = NULL) {
107107
#' @importFrom readxl read_excel
108108
#' @importFrom purrr map
109109
#' @importFrom rlang .data
110-
#' @inheritParams import_scenarios
111110
#' @param survey_file Path to survey Excel file. If not supplied, a default sample file is used.
112111
#' @param domains Dataframe of domains and domain IDs.
113112
#'

R/openfair.R

+8-8
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ select_loss_opportunities <- function(tc, diff, n = NULL, ...) {
298298
#' @export
299299
#' @examples
300300
#' data(mc_quantitative_scenarios)
301-
#' params <- mc_quantitative_scenarios[[1, "scenario"]]$parameters
301+
#' params <- mc_quantitative_scenarios$scenario[[1]]$parameters
302302
#' openfair_tef_tc_diff_lm(params$tef, params$tc, params$diff, params$lm, 10)
303303
openfair_tef_tc_diff_lm <- function(tef, tc, diff, lm, n = 10^4, verbose = FALSE) {
304304

@@ -318,15 +318,15 @@ openfair_tef_tc_diff_lm <- function(tef, tc, diff, lm, n = 10^4, verbose = FALSE
318318

319319
# TEF - how many contacts do we have in each simulated period
320320
TEFestimate <- tef %>% purrr::flatten() %>%
321-
tibble::as_tibble() %>% tidyr::nest(-.data$func, .key = "params")
321+
tibble::as_tibble() %>% tidyr::nest(params = -.data$func)
322322
params <- TEFestimate$params %>% unlist()
323323
TEFsamples <- sample_tef(n = n, .func = TEFestimate$func, params = params)
324324
TEFsamples <- TEFsamples$samples
325325

326326
# TC - what is the strength of each threat event
327327
# - get the threat capability parameters for this scenario
328328
TCestimate <- tc %>% purrr::flatten() %>%
329-
tibble::as_tibble() %>% tidyr::nest(-.data$func, .key = "params")
329+
tibble::as_tibble() %>% tidyr::nest(params = -.data$func)
330330
# - sample threat capability for each TEF event in each sample period
331331
TCsamples <- purrr::map(1:n, function(x) {
332332
params <- TCestimate$params %>% unlist()
@@ -360,7 +360,7 @@ openfair_tef_tc_diff_lm <- function(tef, tc, diff, lm, n = 10^4, verbose = FALSE
360360

361361
# LM - determine the size of losses for each iteration
362362
LMestimate <- lm %>% purrr::flatten() %>%
363-
tibble::as_tibble() %>% tidyr::nest(-.data$func, .key = "params")
363+
tibble::as_tibble() %>% tidyr::nest(params = -.data$func)
364364
loss_samples <- purrr::map(LEFsamples, function(x) {
365365
params <- LMestimate$params %>% unlist()
366366
dat <- sample_lm(n = x, .func = LMestimate$func, params = params)
@@ -435,15 +435,15 @@ openfair_tef_tc_diff_plm_sr <- function(tef, tc, diff, plm, sr, n = 10^4, verbos
435435

436436
# TEF - how many contacts do we have in each simulated period
437437
TEFestimate <- tef %>% purrr::flatten() %>%
438-
tibble::as_tibble() %>% tidyr::nest(-.data$func, .key = "params")
438+
tibble::as_tibble() %>% tidyr::nest(params = -.data$func)
439439
params <- TEFestimate$params %>% unlist()
440440
TEFsamples <- sample_tef(n = n, .func = TEFestimate$func, params = params)
441441
TEFsamples <- TEFsamples$samples
442442

443443
# TC - what is the strength of each threat event
444444
# - get the threat capability parameters for this scenario
445445
TCestimate <- tc %>% purrr::flatten() %>%
446-
tibble::as_tibble() %>% tidyr::nest(-.data$func, .key = "params")
446+
tibble::as_tibble() %>% tidyr::nest(params = -.data$func)
447447
# - sample threat capability for each TEF event in each sample period
448448
TCsamples <- purrr::map(1:n, function(x) {
449449
params <- TCestimate$params %>% unlist()
@@ -474,9 +474,9 @@ openfair_tef_tc_diff_plm_sr <- function(tef, tc, diff, plm, sr, n = 10^4, verbos
474474

475475
# LM - determine the size of losses for each iteration
476476
PLMestimate <- plm %>% purrr::flatten() %>%
477-
tibble::as_tibble() %>% tidyr::nest(-.data$func, .key = "params")
477+
tibble::as_tibble() %>% tidyr::nest(params = -.data$func)
478478
SRestimate <- sr %>% purrr::flatten() %>%
479-
tibble::as_tibble() %>% tidyr::nest(-.data$func, .key = "params")
479+
tibble::as_tibble() %>% tidyr::nest(params = -.data$func)
480480
loss_samples <- purrr::map(LEFsamples, function(x) {
481481
params <- PLMestimate$params %>% unlist()
482482
dat_p <- sample_lm(n = x, .func = PLMestimate$func, params = params)

R/simulate.R

+5-5
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#' @return Dataframe of results.
1919
#' @examples
2020
#' data(mc_quantitative_scenarios)
21-
#' run_simulation(mc_quantitative_scenarios[[1, "scenario"]], 10)
21+
#' run_simulation(mc_quantitative_scenarios$scenario[[1]], 10)
2222
run_simulation <- function(scenario, iterations = 10000L,
2323
ale_maximum = NULL,
2424
verbose = FALSE, simulation_count = NULL) {
@@ -43,7 +43,7 @@ run_simulation <- function(scenario, iterations = 10000L,
4343
if ((!is.null(.pb)) & inherits(.pb, "Progress") && (.pb$i < .pb$n)) .pb$tick()$print()
4444

4545
safe_calculate <- purrr::safely(eval(rlang::parse_expr(func)))
46-
rlang::exec(safe_calculate, !!!params)
46+
rlang::exec("safe_calculate", !!!params)
4747
}
4848

4949
simulation_results <- wrapped_calc(scenario)
@@ -88,9 +88,9 @@ run_simulation <- function(scenario, iterations = 10000L,
8888
#' @examples
8989
#' # fetch three scenarios for this example
9090
#' data(mc_quantitative_scenarios)
91-
#' scenario_a <- mc_quantitative_scenarios[[1, "scenario"]]
92-
#' scenario_b <- mc_quantitative_scenarios[[2, "scenario"]]
93-
#' scenario_c <- mc_quantitative_scenarios[[3, "scenario"]]
91+
#' scenario_a <- mc_quantitative_scenarios$scenario[[1]]
92+
#' scenario_b <- mc_quantitative_scenarios$scenario[[2]]
93+
#' scenario_c <- mc_quantitative_scenarios$scenario[[3]]
9494
#' run_simulations(scenario_a, scenario_b, scenario_c, iterations = 10)
9595
#'
9696
run_simulations <- function(scenario, ..., iterations = 10000L,

R/summarize.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#' @examples
2323
#' data(mc_simulation_results)
2424
#' # summarize a single scenario
25-
#' summarize_scenario(mc_simulation_results[[1, "results"]])
25+
#' summarize_scenario(mc_simulation_results$results[[1]])
2626
#'
2727
summarize_scenario <- function(simulation_result) {
2828
if (!is.data.frame(simulation_result) ||

R/tidyrisk_scenario.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ new_tidyrisk_scenario <- function(..., model = "openfair_tef_tc_diff_lm") {
2424
scenario <- list(
2525
parameters = dots,
2626
model = model)
27-
class(scenario) <- c("tidyrisk_scenario")
27+
class(scenario) <- c("tidyrisk_scenario", "list")
2828
scenario
2929
}
3030

cran-comments.md

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
## Update
22

3-
This is a resubmission of a minor hotfix to address `vctrs` compatability.
4-
This resubmission fixes an invalid URI in the README.
3+
This is a hotfix to address recent breaking changes in `tibble`.
54

65
## Test environments
76

87
* local Windows 10 64 install, R 3.5.3
9-
* local OS X, R 3.6.0
8+
* local OS X, R 3.6.3
109
* Windows Server 2016 (on appveyor), R 3.5
1110
* Ubuntu 16.04 LTS (on travis-ci)
1211
* R-release (both with and without pandoc)

data/mc_capabilities.rda

-3 Bytes
Binary file not shown.

data/mc_domain_summary.rda

-7 Bytes
Binary file not shown.

data/mc_domains.rda

0 Bytes
Binary file not shown.

data/mc_mappings.rda

11 Bytes
Binary file not shown.

data/mc_qualitative_scenarios.rda

-3 Bytes
Binary file not shown.

data/mc_quantitative_scenarios.rda

10 Bytes
Binary file not shown.

data/mc_scenario_summary.rda

-160 Bytes
Binary file not shown.

data/mc_simulation_results.rda

-217 Bytes
Binary file not shown.

man/derive_control_key.Rd

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/exposure_histogram.Rd

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/generate_heatmap.Rd

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/loss_scatterplot.Rd

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/openfair_tef_tc_diff_lm.Rd

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/run_simulation.Rd

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/run_simulations.Rd

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/summarize_scenario.Rd

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/testthat/test-openfair.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ test_that("SR model works as expected", {
217217
mutate(scenario = pmap(list(tef_params = tef_params, tc_params = tc_params,
218218
diff_params = diff_params, plm_params = plm_params,
219219
sr_params = sr_params, model = model), tidyrisk_scenario))
220-
results <- run_simulation(scenario[[1, "scenario"]], 100L)
220+
results <- scenario$scenario %>% map_df(run_simulation, 100L)
221221
expect_s3_class(results, "tbl_df")
222222
expect_equal(nrow(results), 100)
223223
expect_equal(length(results), 11)

tests/testthat/test-simulate.R

+7-7
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,34 @@ context("Simulation-Model Interface")
44

55
test_that("Simulation fails when given a simulation_count", {
66
data("mc_quantitative_scenarios")
7-
good_scen <- mc_quantitative_scenarios[[1, "scenario"]]
7+
good_scen <- mc_quantitative_scenarios$scenario[[1]]
88
expect_error(run_simulation(good_scen, simulation_count = 10L), regexp = "iteration")
99
})
1010

1111
test_that("Simulation fails when not given a scenario object", {
1212
data("mc_quantitative_scenarios")
13-
bad_scen <- mc_quantitative_scenarios[[1, "scenario"]]
13+
bad_scen <- mc_quantitative_scenarios$scenario[[1]]
1414
class(bad_scen) <- "list"
1515
expect_error(run_simulation(bad_scen, 10L), regexp = "object")
1616
})
1717

1818
test_that("Simulation respects maximum ALE", {
1919
data("mc_quantitative_scenarios")
20-
good_scen <- mc_quantitative_scenarios[[1, "scenario"]]
20+
good_scen <- mc_quantitative_scenarios$scenario[[1]]
2121
results <- run_simulation(good_scen, 10L, ale_maximum = 100)
2222
expect_lte(max(results$ale), 100)
2323
})
2424

2525
test_that("Missing mandatory OpenFAIR factors are detected", {
2626
data("mc_quantitative_scenarios")
27-
bad_scen <- mc_quantitative_scenarios[[1, "scenario"]]
27+
bad_scen <- mc_quantitative_scenarios$scenario[[1]]
2828
bad_scen$parameters$tef <- NULL
2929
expect_error(run_simulation(bad_scen, 10L), regexp = "Missing")
3030
})
3131

3232
test_that("Bad scenario parameters throw an error", {
3333
data("mc_quantitative_scenarios")
34-
bad_scen <- mc_quantitative_scenarios[[1, "scenario"]]
34+
bad_scen <- mc_quantitative_scenarios$scenario[[1]]
3535
bad_scen$parameters$tef$func <- "stats::rlnorm"
3636
expect_error(run_simulation(bad_scen, 10L), regexp = "Error")
3737
})
@@ -45,13 +45,13 @@ test_that("Simulating multiple scenarios succeeds", {
4545

4646
test_that("Multiple simulations run fails when not given a scenario object", {
4747
data("mc_quantitative_scenarios")
48-
bad_scen <- mc_quantitative_scenarios[[1, "scenario"]]
48+
bad_scen <- mc_quantitative_scenarios$scenario[[1]]
4949
class(bad_scen) <- "list"
5050
expect_error(run_simulations(bad_scen, iterations = 10L), regexp = "object")
5151
})
5252

5353
test_that("Multiple simulations deprecates the simulation_count parameters", {
5454
data("mc_quantitative_scenarios")
55-
good_scen <- mc_quantitative_scenarios[[1, "scenario"]]
55+
good_scen <- mc_quantitative_scenarios$scenario[[1]]
5656
expect_error(run_simulations(good_scen, simulation_count = 10L), regexp = "iteration")
5757
})

tests/testthat/test-summarize.R

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ test_that("Scenario summary rejects non dataframe inputs", {
1414

1515
test_that("Simulation summary handles NAs for tc/diff exceedance", {
1616
data("mc_simulation_results")
17-
mc_simulation_results[[1, "results"]][[1, "mean_tc_exceedance"]] <- NA
17+
mc_simulation_results[[1, "results"]][[1]]$mean_tc_exceedance <- NA
1818
#simulation_results[1, "mean_tc_exceedance"] <- NA
19-
mc_simulation_results[[10, "results"]][[1, "mean_diff_exceedance"]] <- NA
19+
mc_simulation_results[[10, "results"]][[1]]$mean_diff_exceedance <- NA
2020
dat <- mutate(mc_simulation_results,
2121
result_summary = map(results, summarize_scenario)) %>%
2222
select(-results)

0 commit comments

Comments
 (0)