Nothing
## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----dependencies, message=FALSE, warning=FALSE-------------------------------
library(simtrial)
library(future)
library(doFuture)
## ----set-plan-sequential, echo=FALSE------------------------------------------
plan("sequential") # Ensure that the backend is sequential
## ----enrollments, fig.height=4, fig.width=6, fig.align="center"---------------
set.seed(1)
n <- 5000
enroll_rate1 <- data.frame(rate = c(5, 20, 10), duration = c(100, 150, 150))
enroll_rate2 <- data.frame(rate = c(10, 15, 30), duration = c(150, 175, 75))
x1 <- rpwexp_enroll(n = n, enroll_rate = enroll_rate1)
x2 <- rpwexp_enroll(n = n, enroll_rate = enroll_rate2)
plot(
x1, 1:n,
type = "l",
col = palette()[4],
xlim = c(0, max(x1, x2)),
main = "Piecewise enrollments",
xlab = "Time",
ylab = "Enrollment"
)
lines(x2, 1:n, col = palette()[7])
legend(
250, 1500,
legend = c("Enrollment 1", "Enrollment 2"),
col = c(palette()[4], palette()[7]),
lty = c(1, 1)
)
## ----confirm-sequential-------------------------------------------------------
set.seed(1)
n_sim <- 200
start_sequential <- proc.time()
seq_result1 <- sim_fixed_n(
n_sim = n_sim,
sample_size = 3000,
target_event = 700,
enroll_rate = enroll_rate1,
timing_type = 2 # Time until targeted event count achieved
)
seq_result2 <- sim_fixed_n(
n_sim = n_sim,
sample_size = 3000,
target_event = 700,
enroll_rate = enroll_rate2,
timing_type = 2 # Time until targeted event count achieved
)
duration_sequential <- proc.time() - start_sequential
## ----sequential-time----------------------------------------------------------
print(duration_sequential)
## ----sequential-display-results, eval=FALSE, echo=FALSE-----------------------
# seq_result1 |>
# head(5) |>
# kable(digits = 2)
# seq_result2 |>
# head(5) |>
# kable(digits = 2)
## ----multisession1------------------------------------------------------------
plan(multisession, workers = 2)
## ----confirm-multisession-----------------------------------------------------
set.seed(1)
start_sequential <- proc.time()
seq_result1m <- sim_fixed_n(
n_sim = n_sim,
sample_size = 3000,
target_event = 700,
enroll_rate = enroll_rate1,
timing_type = 2 # Time until targeted event count achieved
)
seq_result2m <- sim_fixed_n(
n_sim = n_sim,
sample_size = 3000,
target_event = 700,
enroll_rate = enroll_rate2,
timing_type = 2 # Time until targeted event count achieved
)
duration_sequential <- proc.time() - start_sequential
## ----time-parallel------------------------------------------------------------
print(duration_sequential)
## ----plan-sequential----------------------------------------------------------
plan(sequential)
## ----compare-results, eval=FALSE----------------------------------------------
# sum(seq_result1 != seq_result1m)
# sum(seq_result2 != seq_result2m)
## ----schema, echo=FALSE, fig.cap="Available resource schematic.", fig.align="center", out.width="90%"----
knitr::include_graphics("./figures/schema.png")
## ----nested-topology, eval=FALSE----------------------------------------------
# nodes <- c("n1", "n2")
# custom_cores <- function() {
# switch(Sys.info()[["nodename"]],
# "n1" = 3L, # Modify here for number of cores on node1
# "n2" = 3L, # Modify here for number of cores on node2
# ## Default:
# availableCores()
# )
# }
# plan(list(
# tweak(cluster, workers = nodes),
# tweak(multisession, workers = custom_cores)
# ))
## ----confirm-cluster, eval=FALSE----------------------------------------------
# set.seed(1)
#
# enroll_rates <- list(enroll_rate1, enroll_rate2)
#
# seq_resultc <- foreach::foreach(
# i = 1:2,
# .combine = "list",
# .options.future = list(seed = TRUE)
# ) %dofuture% {
# sim_fixed_n(
# n_sim = n_sim,
# sample_size = 3000,
# target_event = 700,
# enroll_rate = enroll_rates[[i]],
# timing_type = 2 # Time until targeted event count achieved
# )
# }
## ----plan-sequential2, eval=FALSE---------------------------------------------
# plan(sequential)
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.