## ===== Packages =====
suppressPackageStartupMessages({
  library(MASS)
  library(Matrix)
  library(dplyr)
  library(tidyr)
  library(ggplot2)
  library(forcats)
  library(scales)
  library(tibble)
})
## Warning: package 'forcats' was built under R version 4.4.3
set.seed(12345)

## ===== Global config =====
nsim       <- 10000
n_per_arm  <- 225
alpha_tot  <- 0.05
sided      <- "two"
pC         <- 0.50

endpts <- c("H1","H2","H3","H4","H5","H6")

## ===== Correlation =====
Sigma <- matrix(c(
  1.0, 0.1, 0.5, 0.1, 0.1, 0.1,
  0.1, 1.0, 0.1, 0.8, 0.5, 0.5,
  0.5, 0.1, 1.0, 0.1, 0.1, 0.1,
  0.1, 0.8, 0.1, 1.0, 0.5, 0.5,
  0.1, 0.5, 0.1, 0.5, 1.0, 0.5,
  0.1, 0.5, 0.1, 0.5, 0.5, 1.0
), 6, 6, byrow=TRUE, dimnames=list(endpts,endpts))
if (min(eigen(Sigma, symmetric=TRUE, only.values=TRUE)$values) < 1e-8) {
  Sigma <- as.matrix(nearPD(Sigma)$mat)
}
Sigma <- (Sigma + t(Sigma))/2

## ===== Graphs for D1–D6 =====
G13 <- rbind(
  H1 = c(0,0,1,0,0,0),
  H2 = c(0,0,1,0,0,0),
  H3 = c(0,0,0,1,0,0),
  H4 = c(0,0,0,0,1,0),
  H5 = c(0,0,0,0,0,1),
  H6 = c(0,0,0,0,0,0)
); colnames(G13) <- rownames(G13) <- endpts

G4 <- rbind(
  H1 = c(0,0,1,0,0,0),
  H2 = c(0,0,0,1,0,0),
  H3 = c(0,1,0,0,0,0),
  H4 = c(0,0,0,0,1,0),
  H5 = c(1,0,0,0,0,0),
  H6 = c(0,0,0,0,0,0)
); colnames(G4) <- rownames(G4) <- endpts

G5 <- rbind(
  H1 = c(0, 2/3, 1/3, 0, 0, 0),
  H2 = c(0, 0,   1,   0, 0, 0),
  H3 = c(0, 0,   0,   1, 0, 0),
  H4 = c(0, 0,   0,   0, 1, 0),
  H5 = c(0, 0,   0,   0, 0, 1),
  H6 = c(1, 0,   0,   0, 0, 0)
); colnames(G5) <- rownames(G5) <- endpts

G6 <- rbind(
  H1 = c(0,0,1,0,0,0),
  H2 = c(0,0,0,1,0,0),
  H3 = c(0,0,0,0,1,0),
  H4 = c(1,0,0,0,0,0),
  H5 = c(0,1,0,0,0,0),
  H6 = c(0,0,0,0,0,0)
); colnames(G6) <- rownames(G6) <- endpts

## ===== Initial weights =====
w_D1 <- c(H1=1/2, H2=1/2, H3=0, H4=0, H5=0, H6=0)
w_D2 <- c(H1=4/5, H2=1/5, H3=0, H4=0, H5=0, H6=0)
w_D3 <- c(H1=2/3, H2=1/3, H3=0, H4=0, H5=0, H6=0)
w_D4 <- c(H1=1/2, H2=1/2, H3=0, H4=0, H5=0, H6=0)
w_D5 <- c(H1=4/5, H2=1/5, H3=0, H4=0, H5=0, H6=0)
w_D6 <- c(H1=4/5, H2=1/5, H3=0, H4=0, H5=0, H6=0)

## ===== Colors =====
cols <- c("D1"="#1f77b4","D2"="#ff7f0e","D3"="#2ca02c",
          "D4"="#9467bd","D5"="#8c564b","D6"="#17becf")

## ===== Helpers =====
axis_limits <- function(mx) {
  if (is.na(mx) || mx <= 0) return(c(0, 0.05))
  top <- min(1.00, ceiling(mx / 0.05) * 0.05)
  c(0, top)
}
breaks_for_limits <- function(ylim) seq(0, ylim[2], by = 0.05)

has_path_to_nonrejected <- function(start, rejected, G) {
  q <- which(names(rejected)==start)
  visited <- setNames(rep(FALSE, length(rejected)), names(rejected))
  while (length(q)) {
    i <- q[1]; q <- q[-1]
    if (visited[i]) next
    visited[i] <- TRUE
    nbrs <- names(which(G[i,] > 0))
    for (jname in nbrs) {
      j <- which(names(rejected)==jname)
      if (!rejected[j]) return(TRUE)
      if (!visited[j]) q <- c(q, j)
    }
  }
  FALSE
}
push_alpha_through_rejected <- function(a, rejected, G) {
  repeat {
    moved <- FALSE
    for (i in seq_along(a)) {
      if (rejected[i] && a[i] > 0) {
        if (has_path_to_nonrejected(names(a)[i], rejected, G)) {
          ai <- a[i]; a <- a + ai * G[i, ]; a[i] <- 0; moved <- TRUE
        } else { a[i] <- 0; moved <- TRUE }
      }
    }
    if (!moved) break
  }
  a
}
run_graph <- function(p, w, G, alpha_tot=0.05) {
  stopifnot(abs(sum(w)-1) < 1e-12, identical(names(w), colnames(G)))
  a <- alpha_tot * w
  tested   <- setNames(rep(FALSE, 6), names(w))
  rejected <- setNames(rep(FALSE, 6), names(w))
  tested[a > 0] <- TRUE
  repeat {
    can_reject <- (!rejected) & (p <= a)
    if (!any(can_reject)) break
    rej_nodes <- names(which(can_reject))
    for (i in rej_nodes) {
      ai <- a[i]
      if (ai > 0) { a <- a + ai * G[i, ]; a[i] <- 0 }
      rejected[i] <- TRUE
    }
    a <- push_alpha_through_rejected(a, rejected, G)
    tested[a > 0] <- TRUE
  }
  list(tested=tested, rejected=rejected)
}
run_andgate_H6 <- function(p, w, G, alpha_tot=0.05) {
  a <- alpha_tot * w
  tested   <- setNames(rep(FALSE, 6), names(w))
  rejected <- setNames(rep(FALSE, 6), names(w))
  tested[a > 0] <- TRUE
  repeat {
    can_reject <- (!rejected[1:5]) & (p[1:5] <= a[1:5])
    if (!any(can_reject)) break
    rej_nodes <- names(which(can_reject))
    for (i in rej_nodes) {
      ai <- a[i]
      if (ai > 0) { a <- a + ai * G[i, ]; a[i] <- 0 }
      rejected[i] <- TRUE
    }
    a <- push_alpha_through_rejected(a, rejected, G)
    tested[a > 0] <- TRUE
  }
  if (all(rejected[1:5])) {
    tested["H6"]  <- TRUE
    rejected["H6"] <- (p["H6"] <= 0.05)
  }
  list(tested=tested, rejected=rejected)
}

## ===== Data generation & p-values =====
gen_arm <- function(trt, n, Sigma, Delta, SD, pC) {
  Z <- mvrnorm(n, mu=rep(0,6), Sigma=Sigma); colnames(Z) <- endpts
  means <- setNames(rep(0,6), endpts)
  if (trt==1) means[c("H1","H2","H4","H5","H6")] <- Delta[c("H1","H2","H4","H5","H6")]
  dat <- data.frame(
    kccq   = means["H1"] + SD["H1"] * Z[,"H1"],
    pvo2   = means["H2"] + SD["H2"] * Z[,"H2"],
    zscore = means["H4"] + SD["H4"] * Z[,"H4"],
    ntprob = means["H5"] + SD["H5"] * Z[,"H5"],
    lavi   = means["H6"] + SD["H6"] * Z[,"H6"],
    trt    = trt
  )
  p <- if (trt==1) pmin(pmax(pC + Delta["H3"], 1e-8), 1-1e-8) else pC
  dat$imp <- as.integer(Z[,"H3"] <= qnorm(p))
  dat
}
p_two_or_one <- function(tstat, sided=c("two","one"), delta_sign=1) {
  sided <- match.arg(sided)
  if (sided=="two") 2*pnorm(-abs(tstat)) else pnorm(-delta_sign*tstat)
}
pvals_from_data <- function(dt, Delta) {
  pv <- setNames(rep(NA_real_,6), endpts)
  pv["H1"] <- p_two_or_one(t.test(kccq ~ trt, data=dt, var.equal=FALSE)$statistic, sided=sided, delta_sign=sign(Delta["H1"]))
  pv["H2"] <- p_two_or_one(t.test(pvo2 ~ trt, data=dt, var.equal=FALSE)$statistic, sided=sided, delta_sign=sign(Delta["H2"]))
  pv["H3"] <- suppressWarnings(chisq.test(table(dt$trt, dt$imp), correct=FALSE)$p.value)
  pv["H4"] <- p_two_or_one(t.test(zscore ~ trt, data=dt, var.equal=FALSE)$statistic, sided=sided, delta_sign=sign(Delta["H4"]))
  pv["H5"] <- p_two_or_one(t.test(ntprob ~ trt, data=dt, var.equal=FALSE)$statistic, sided=sided, delta_sign=sign(Delta["H5"]))
  pv["H6"] <- p_two_or_one(t.test(lavi   ~ trt, data=dt, var.equal=FALSE)$statistic, sided=sided, delta_sign=sign(Delta["H6"]))
  pv
}

## ===== Scenarios =====
H5_fix <- list(diff=-1.0, sd=1.0)
H6_fix <- list(diff=-3.5, sd=10.0)

scenarios <- list(
  "Scenario 1"  = list(H1=list(diff=5.00, sd=15), H2=list(diff=1.00, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 2"  = list(H1=list(diff=5.00, sd=15), H2=list(diff=0.75, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 3"  = list(H1=list(diff=5.00, sd=15), H2=list(diff=0.54, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 4"  = list(H1=list(diff=5.00, sd=15), H2=list(diff=0.30, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),

  "Scenario 5"  = list(H1=list(diff=3.75, sd=15), H2=list(diff=1.00, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 6"  = list(H1=list(diff=3.75, sd=15), H2=list(diff=0.75, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 7"  = list(H1=list(diff=3.75, sd=15), H2=list(diff=0.54, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 8"  = list(H1=list(diff=3.75, sd=15), H2=list(diff=0.30, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),

  "Scenario 9"  = list(H1=list(diff=2.70, sd=15), H2=list(diff=1.00, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 10" = list(H1=list(diff=2.70, sd=15), H2=list(diff=0.75, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 11" = list(H1=list(diff=2.70, sd=15), H2=list(diff=0.54, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 12" = list(H1=list(diff=2.70, sd=15), H2=list(diff=0.30, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),

  "Scenario 13" = list(H1=list(diff=1.50, sd=15), H2=list(diff=1.00, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 14" = list(H1=list(diff=1.50, sd=15), H2=list(diff=0.75, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 15" = list(H1=list(diff=1.50, sd=15), H2=list(diff=0.54, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix),
  "Scenario 16" = list(H1=list(diff=1.50, sd=15), H2=list(diff=0.30, sd=3), H3=0.15, H4=list(diff=0.2, sd=1), H5=H5_fix, H6=H6_fix)
)
stopifnot(length(scenarios) == 16)

## ===== Simulation per scenario =====
simulate_designs_for_scenario <- function(sc) {
  Delta <- c(H1=sc$H1$diff, H2=sc$H2$diff, H3=sc$H3, H4=sc$H4$diff, H5=sc$H5$diff, H6=sc$H6$diff)
  SD    <- c(H1=sc$H1$sd,   H2=sc$H2$sd,                 H4=sc$H4$sd,   H5=sc$H5$sd,   H6=sc$H6$sd)

  p_list <- vector("list", nsim)
  for (b in seq_len(nsim)) {
    trt <- gen_arm(1, n_per_arm, Sigma, Delta, SD, pC)
    ctl <- gen_arm(0, n_per_arm, Sigma, Delta, SD, pC)
    dt  <- rbind(trt, ctl)
    p_list[[b]] <- pvals_from_data(dt, Delta)
  }

  simulate_with_p <- function(label, w_init, Gmat, mode=c("generic","andgate")) {
    mode <- match.arg(mode)
    tested_acc <- matrix(0L, nsim, 6, dimnames=list(NULL,endpts))
    reject_acc <- matrix(0L, nsim, 6, dimnames=list(NULL,endpts))
    for (b in seq_len(nsim)) {
      p <- p_list[[b]]
      out <- if (mode=="andgate") run_andgate_H6(p, w_init, Gmat, alpha_tot)
             else                  run_graph      (p, w_init, Gmat, alpha_tot)
      tested_acc[b, ] <- as.integer(out$tested)
      reject_acc[b, ] <- as.integer(out$rejected)
    }
    tibble(endpoint=endpts,
           prob_tested=colMeans(tested_acc),
           power=colMeans(reject_acc),
           design=label)
  }

  bind_rows(
    simulate_with_p("D1", w_D1, G13, "generic"),
    simulate_with_p("D2", w_D2, G13, "generic"),
    simulate_with_p("D3", w_D3, G13, "generic"),
    simulate_with_p("D4", w_D4, G4,  "andgate"),
    simulate_with_p("D5", w_D5, G5,  "generic"),
    simulate_with_p("D6", w_D6, G6,  "andgate")
  )
}

## ===== Output dir for CSVs =====
out_dir <- "C:/Users/admin/Downloads"
if (!dir.exists(out_dir)) dir.create(out_dir, recursive = TRUE)

## ===== Run all scenarios and plot (5% ticks) =====
for (sc_name in names(scenarios)) {
  res <- simulate_designs_for_scenario(scenarios[[sc_name]])

  ## Probability of being tested: ONLY H3–H6
  res_prob <- res %>%
    filter(endpoint %in% paste0("H",3:6)) %>%
    mutate(endpoint=factor(endpoint, levels=paste0("H",3:6)))
  ylims_prob <- axis_limits(max(res_prob$prob_tested, na.rm=TRUE))

  # SAVE dataframe used by the prob-tested bar plot
  prob_file <- file.path(out_dir, paste0(gsub("\\s+","_", tolower(sc_name)), "_prob_tested.csv"))
  write.csv(res_prob, prob_file, row.names = FALSE)

  p_prob <- ggplot(res_prob, aes(endpoint, prob_tested, fill=design)) +
    geom_col(position=position_dodge(width=0.82), width=0.72) +
    labs(title=paste("Probability of Being Tested —", sc_name),
         x="Endpoint", y="Probability tested") +
    scale_y_continuous(limits=ylims_prob,
                       breaks = breaks_for_limits(ylims_prob),
                       labels = scales::percent_format(accuracy=1),
                       expand = expansion(mult=c(0,0))) +
    theme_minimal(base_size=12) +
    scale_fill_manual(values=cols)
  print(p_prob)

  ## Power: H1–H6
  res_power <- res %>% mutate(endpoint=fct_inorder(endpoint))
  ylims_pow <- axis_limits(max(res_power$power, na.rm=TRUE))

  # SAVE dataframe used by the power bar plot
  power_file <- file.path(out_dir, paste0(gsub("\\s+","_", tolower(sc_name)), "_power.csv"))
  write.csv(res_power, power_file, row.names = FALSE)

  p_pow <- ggplot(res_power, aes(endpoint, power, fill=design)) +
    geom_col(position=position_dodge(width=0.82), width=0.72) +
    labs(title=paste("Power by Endpoint —", sc_name),
         x="Endpoint", y="Power") +
    scale_y_continuous(limits=ylims_pow,
                       breaks = breaks_for_limits(ylims_pow),
                       labels = scales::percent_format(accuracy=1),
                       expand = expansion(mult=c(0,0))) +
    theme_minimal(base_size=12) +
    scale_fill_manual(values=cols)
  print(p_pow)

  cat("\n===== ", sc_name, " — Table =====\n", sep = "")
  print(res %>% arrange(endpoint, design), n = Inf)
}

## 
## ===== Scenario 1 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested power design
##    <chr>          <dbl> <dbl> <chr> 
##  1 H1             1     0.901 D1    
##  2 H1             1     0.930 D2    
##  3 H1             1     0.920 D3    
##  4 H1             1     0.919 D4    
##  5 H1             1     0.933 D5    
##  6 H1             1     0.934 D6    
##  7 H2             1     0.904 D1    
##  8 H2             1     0.830 D2    
##  9 H2             1     0.874 D3    
## 10 H2             1     0.933 D4    
## 11 H2             1     0.920 D5    
## 12 H2             1     0.921 D6    
## 13 H3             0.988 0.879 D1    
## 14 H3             0.985 0.876 D2    
## 15 H3             0.988 0.879 D3    
## 16 H3             0.919 0.786 D4    
## 17 H3             0.985 0.872 D5    
## 18 H3             0.934 0.819 D6    
## 19 H4             0.879 0.487 D1    
## 20 H4             0.876 0.481 D2    
## 21 H4             0.879 0.483 D3    
## 22 H4             0.933 0.536 D4    
## 23 H4             0.872 0.483 D5    
## 24 H4             0.921 0.519 D6    
## 25 H5             0.487 0.487 D1    
## 26 H5             0.481 0.481 D2    
## 27 H5             0.483 0.483 D3    
## 28 H5             0.536 0.536 D4    
## 29 H5             0.483 0.483 D5    
## 30 H5             0.819 0.819 D6    
## 31 H6             0.487 0.453 D1    
## 32 H6             0.481 0.447 D2    
## 33 H6             0.483 0.448 D3    
## 34 H6             0.460 0.430 D4    
## 35 H6             0.483 0.448 D5    
## 36 H6             0.464 0.434 D6

## 
## ===== Scenario 2 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested power design
##    <chr>          <dbl> <dbl> <chr> 
##  1 H1             1     0.905 D1    
##  2 H1             1     0.934 D2    
##  3 H1             1     0.922 D3    
##  4 H1             1     0.921 D4    
##  5 H1             1     0.936 D5    
##  6 H1             1     0.936 D6    
##  7 H2             1     0.664 D1    
##  8 H2             1     0.536 D2    
##  9 H2             1     0.604 D3    
## 10 H2             1     0.733 D4    
## 11 H2             1     0.704 D5    
## 12 H2             1     0.715 D6    
## 13 H3             0.963 0.842 D1    
## 14 H3             0.964 0.852 D2    
## 15 H3             0.964 0.847 D3    
## 16 H3             0.921 0.790 D4    
## 17 H3             0.964 0.829 D5    
## 18 H3             0.936 0.823 D6    
## 19 H4             0.842 0.466 D1    
## 20 H4             0.852 0.466 D2    
## 21 H4             0.847 0.464 D3    
## 22 H4             0.733 0.513 D4    
## 23 H4             0.829 0.461 D5    
## 24 H4             0.715 0.498 D6    
## 25 H5             0.466 0.466 D1    
## 26 H5             0.466 0.466 D2    
## 27 H5             0.464 0.464 D3    
## 28 H5             0.513 0.513 D4    
## 29 H5             0.461 0.461 D5    
## 30 H5             0.823 0.823 D6    
## 31 H6             0.466 0.432 D1    
## 32 H6             0.466 0.431 D2    
## 33 H6             0.464 0.429 D3    
## 34 H6             0.445 0.414 D4    
## 35 H6             0.461 0.426 D5    
## 36 H6             0.449 0.418 D6

## 
## ===== Scenario 3 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested power design
##    <chr>          <dbl> <dbl> <chr> 
##  1 H1             1     0.903 D1    
##  2 H1             1     0.929 D2    
##  3 H1             1     0.920 D3    
##  4 H1             1     0.913 D4    
##  5 H1             1     0.929 D5    
##  6 H1             1     0.930 D6    
##  7 H2             1     0.370 D1    
##  8 H2             1     0.253 D2    
##  9 H2             1     0.312 D3    
## 10 H2             1     0.450 D4    
## 11 H2             1     0.428 D5    
## 12 H2             1     0.436 D6    
## 13 H3             0.930 0.799 D1    
## 14 H3             0.940 0.830 D2    
## 15 H3             0.937 0.816 D3    
## 16 H3             0.913 0.778 D4    
## 17 H3             0.940 0.778 D5    
## 18 H3             0.930 0.82  D6    
## 19 H4             0.799 0.407 D1    
## 20 H4             0.830 0.451 D2    
## 21 H4             0.816 0.431 D3    
## 22 H4             0.450 0.386 D4    
## 23 H4             0.778 0.378 D5    
## 24 H4             0.436 0.373 D6    
## 25 H5             0.407 0.407 D1    
## 26 H5             0.451 0.451 D2    
## 27 H5             0.431 0.431 D3    
## 28 H5             0.386 0.386 D4    
## 29 H5             0.378 0.378 D5    
## 30 H5             0.82  0.82  D6    
## 31 H6             0.407 0.370 D1    
## 32 H6             0.451 0.416 D2    
## 33 H6             0.431 0.395 D3    
## 34 H6             0.342 0.312 D4    
## 35 H6             0.378 0.342 D5    
## 36 H6             0.345 0.315 D6

## 
## ===== Scenario 4 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested  power design
##    <chr>          <dbl>  <dbl> <chr> 
##  1 H1             1     0.903  D1    
##  2 H1             1     0.932  D2    
##  3 H1             1     0.922  D3    
##  4 H1             1     0.906  D4    
##  5 H1             1     0.932  D5    
##  6 H1             1     0.933  D6    
##  7 H2             1     0.120  D1    
##  8 H2             1     0.0647 D2    
##  9 H2             1     0.0914 D3    
## 10 H2             1     0.171  D4    
## 11 H2             1     0.164  D5    
## 12 H2             1     0.163  D6    
## 13 H3             0.911 0.763  D1    
## 14 H3             0.935 0.819  D2    
## 15 H3             0.927 0.797  D3    
## 16 H3             0.906 0.758  D4    
## 17 H3             0.935 0.738  D5    
## 18 H3             0.933 0.817  D6    
## 19 H4             0.763 0.355  D1    
## 20 H4             0.819 0.435  D2    
## 21 H4             0.797 0.401  D3    
## 22 H4             0.171 0.166  D4    
## 23 H4             0.738 0.285  D5    
## 24 H4             0.163 0.159  D6    
## 25 H5             0.355 0.355  D1    
## 26 H5             0.435 0.435  D2    
## 27 H5             0.401 0.401  D3    
## 28 H5             0.166 0.166  D4    
## 29 H5             0.285 0.285  D5    
## 30 H5             0.817 0.817  D6    
## 31 H6             0.355 0.316  D1    
## 32 H6             0.435 0.401  D2    
## 33 H6             0.401 0.364  D3    
## 34 H6             0.146 0.128  D4    
## 35 H6             0.285 0.244  D5    
## 36 H6             0.148 0.130  D6

## 
## ===== Scenario 5 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested power design
##    <chr>          <dbl> <dbl> <chr> 
##  1 H1             1     0.665 D1    
##  2 H1             1     0.728 D2    
##  3 H1             1     0.704 D3    
##  4 H1             1     0.704 D4    
##  5 H1             1     0.733 D5    
##  6 H1             1     0.737 D6    
##  7 H2             1     0.900 D1    
##  8 H2             1     0.828 D2    
##  9 H2             1     0.869 D3    
## 10 H2             1     0.920 D4    
## 11 H2             1     0.894 D5    
## 12 H2             1     0.895 D6    
## 13 H3             0.961 0.855 D1    
## 14 H3             0.945 0.831 D2    
## 15 H3             0.954 0.843 D3    
## 16 H3             0.704 0.591 D4    
## 17 H3             0.945 0.827 D5    
## 18 H3             0.737 0.638 D6    
## 19 H4             0.855 0.471 D1    
## 20 H4             0.831 0.441 D2    
## 21 H4             0.843 0.458 D3    
## 22 H4             0.920 0.514 D4    
## 23 H4             0.827 0.442 D5    
## 24 H4             0.895 0.479 D6    
## 25 H5             0.471 0.471 D1    
## 26 H5             0.441 0.441 D2    
## 27 H5             0.458 0.458 D3    
## 28 H5             0.514 0.514 D4    
## 29 H5             0.442 0.442 D5    
## 30 H5             0.638 0.638 D6    
## 31 H6             0.471 0.432 D1    
## 32 H6             0.441 0.401 D2    
## 33 H6             0.458 0.419 D3    
## 34 H6             0.370 0.342 D4    
## 35 H6             0.442 0.402 D5    
## 36 H6             0.377 0.350 D6

## 
## ===== Scenario 6 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested power design
##    <chr>          <dbl> <dbl> <chr> 
##  1 H1             1     0.660 D1    
##  2 H1             1     0.723 D2    
##  3 H1             1     0.699 D3    
##  4 H1             1     0.699 D4    
##  5 H1             1     0.728 D5    
##  6 H1             1     0.731 D6    
##  7 H2             1     0.661 D1    
##  8 H2             1     0.522 D2    
##  9 H2             1     0.596 D3    
## 10 H2             1     0.711 D4    
## 11 H2             1     0.659 D5    
## 12 H2             1     0.667 D6    
## 13 H3             0.866 0.751 D1    
## 14 H3             0.849 0.737 D2    
## 15 H3             0.859 0.745 D3    
## 16 H3             0.699 0.584 D4    
## 17 H3             0.849 0.718 D5    
## 18 H3             0.731 0.627 D6    
## 19 H4             0.751 0.435 D1    
## 20 H4             0.737 0.414 D2    
## 21 H4             0.745 0.424 D3    
## 22 H4             0.711 0.489 D4    
## 23 H4             0.718 0.406 D5    
## 24 H4             0.667 0.450 D6    
## 25 H5             0.435 0.435 D1    
## 26 H5             0.414 0.414 D2    
## 27 H5             0.424 0.424 D3    
## 28 H5             0.489 0.489 D4    
## 29 H5             0.406 0.406 D5    
## 30 H5             0.627 0.627 D6    
## 31 H6             0.435 0.399 D1    
## 32 H6             0.414 0.375 D2    
## 33 H6             0.424 0.385 D3    
## 34 H6             0.352 0.327 D4    
## 35 H6             0.406 0.368 D5    
## 36 H6             0.355 0.331 D6

## 
## ===== Scenario 7 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested power design
##    <chr>          <dbl> <dbl> <chr> 
##  1 H1             1     0.662 D1    
##  2 H1             1     0.726 D2    
##  3 H1             1     0.702 D3    
##  4 H1             1     0.690 D4    
##  5 H1             1     0.729 D5    
##  6 H1             1     0.731 D6    
##  7 H2             1     0.373 D1    
##  8 H2             1     0.257 D2    
##  9 H2             1     0.317 D3    
## 10 H2             1     0.427 D4    
## 11 H2             1     0.390 D5    
## 12 H2             1     0.392 D6    
## 13 H3             0.776 0.656 D1    
## 14 H3             0.786 0.679 D2    
## 15 H3             0.785 0.670 D3    
## 16 H3             0.690 0.573 D4    
## 17 H3             0.786 0.635 D5    
## 18 H3             0.731 0.631 D6    
## 19 H4             0.656 0.364 D1    
## 20 H4             0.679 0.381 D2    
## 21 H4             0.670 0.371 D3    
## 22 H4             0.427 0.363 D4    
## 23 H4             0.635 0.328 D5    
## 24 H4             0.392 0.332 D6    
## 25 H5             0.364 0.364 D1    
## 26 H5             0.381 0.381 D2    
## 27 H5             0.371 0.371 D3    
## 28 H5             0.363 0.363 D4    
## 29 H5             0.328 0.328 D5    
## 30 H5             0.631 0.631 D6    
## 31 H6             0.364 0.328 D1    
## 32 H6             0.381 0.345 D2    
## 33 H6             0.371 0.336 D3    
## 34 H6             0.266 0.244 D4    
## 35 H6             0.328 0.291 D5    
## 36 H6             0.272 0.249 D6

## 
## ===== Scenario 8 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested  power design
##    <chr>          <dbl>  <dbl> <chr> 
##  1 H1             1     0.653  D1    
##  2 H1             1     0.721  D2    
##  3 H1             1     0.696  D3    
##  4 H1             1     0.664  D4    
##  5 H1             1     0.721  D5    
##  6 H1             1     0.722  D6    
##  7 H2             1     0.120  D1    
##  8 H2             1     0.0662 D2    
##  9 H2             1     0.0949 D3    
## 10 H2             1     0.155  D4    
## 11 H2             1     0.141  D5    
## 12 H2             1     0.140  D6    
## 13 H3             0.687 0.558  D1    
## 14 H3             0.733 0.628  D2    
## 15 H3             0.718 0.599  D3    
## 16 H3             0.664 0.536  D4    
## 17 H3             0.733 0.556  D5    
## 18 H3             0.722 0.618  D6    
## 19 H4             0.558 0.280  D1    
## 20 H4             0.628 0.344  D2    
## 21 H4             0.599 0.318  D3    
## 22 H4             0.155 0.149  D4    
## 23 H4             0.556 0.234  D5    
## 24 H4             0.140 0.136  D6    
## 25 H5             0.280 0.280  D1    
## 26 H5             0.344 0.344  D2    
## 27 H5             0.318 0.318  D3    
## 28 H5             0.149 0.149  D4    
## 29 H5             0.234 0.234  D5    
## 30 H5             0.618 0.618  D6    
## 31 H6             0.280 0.247  D1    
## 32 H6             0.344 0.315  D2    
## 33 H6             0.318 0.284  D3    
## 34 H6             0.114 0.0995 D4    
## 35 H6             0.234 0.197  D5    
## 36 H6             0.117 0.103  D6

## 
## ===== Scenario 9 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested power design
##    <chr>          <dbl> <dbl> <chr> 
##  1 H1             1     0.372 D1    
##  2 H1             1     0.444 D2    
##  3 H1             1     0.416 D3    
##  4 H1             1     0.420 D4    
##  5 H1             1     0.450 D5    
##  6 H1             1     0.456 D6    
##  7 H2             1     0.902 D1    
##  8 H2             1     0.829 D2    
##  9 H2             1     0.872 D3    
## 10 H2             1     0.911 D4    
## 11 H2             1     0.866 D5    
## 12 H2             1     0.865 D6    
## 13 H3             0.932 0.806 D1    
## 14 H3             0.895 0.745 D2    
## 15 H3             0.918 0.783 D3    
## 16 H3             0.420 0.332 D4    
## 17 H3             0.895 0.742 D5    
## 18 H3             0.456 0.372 D6    
## 19 H4             0.806 0.413 D1    
## 20 H4             0.745 0.348 D2    
## 21 H4             0.783 0.382 D3    
## 22 H4             0.911 0.470 D4    
## 23 H4             0.742 0.349 D5    
## 24 H4             0.865 0.401 D6    
## 25 H5             0.413 0.413 D1    
## 26 H5             0.348 0.348 D2    
## 27 H5             0.382 0.382 D3    
## 28 H5             0.470 0.470 D4    
## 29 H5             0.349 0.349 D5    
## 30 H5             0.372 0.372 D6    
## 31 H6             0.413 0.370 D1    
## 32 H6             0.348 0.302 D2    
## 33 H6             0.382 0.337 D3    
## 34 H6             0.222 0.204 D4    
## 35 H6             0.349 0.302 D5    
## 36 H6             0.226 0.208 D6

## 
## ===== Scenario 10 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested power design
##    <chr>          <dbl> <dbl> <chr> 
##  1 H1             1     0.372 D1    
##  2 H1             1     0.441 D2    
##  3 H1             1     0.413 D3    
##  4 H1             1     0.419 D4    
##  5 H1             1     0.447 D5    
##  6 H1             1     0.453 D6    
##  7 H2             1     0.654 D1    
##  8 H2             1     0.526 D2    
##  9 H2             1     0.596 D3    
## 10 H2             1     0.681 D4    
## 11 H2             1     0.604 D5    
## 12 H2             1     0.603 D6    
## 13 H3             0.772 0.654 D1    
## 14 H3             0.718 0.591 D2    
## 15 H3             0.748 0.624 D3    
## 16 H3             0.419 0.327 D4    
## 17 H3             0.718 0.577 D5    
## 18 H3             0.453 0.369 D6    
## 19 H4             0.654 0.392 D1    
## 20 H4             0.591 0.328 D2    
## 21 H4             0.624 0.359 D3    
## 22 H4             0.681 0.450 D4    
## 23 H4             0.577 0.325 D5    
## 24 H4             0.603 0.380 D6    
## 25 H5             0.392 0.392 D1    
## 26 H5             0.328 0.328 D2    
## 27 H5             0.359 0.359 D3    
## 28 H5             0.450 0.450 D4    
## 29 H5             0.325 0.325 D5    
## 30 H5             0.369 0.369 D6    
## 31 H6             0.392 0.350 D1    
## 32 H6             0.328 0.283 D2    
## 33 H6             0.359 0.315 D3    
## 34 H6             0.208 0.192 D4    
## 35 H6             0.325 0.280 D5    
## 36 H6             0.213 0.197 D6

## 
## ===== Scenario 11 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested power design
##    <chr>          <dbl> <dbl> <chr> 
##  1 H1             1     0.369 D1    
##  2 H1             1     0.441 D2    
##  3 H1             1     0.413 D3    
##  4 H1             1     0.404 D4    
##  5 H1             1     0.446 D5    
##  6 H1             1     0.451 D6    
##  7 H2             1     0.363 D1    
##  8 H2             1     0.252 D2    
##  9 H2             1     0.313 D3    
## 10 H2             1     0.394 D4    
## 11 H2             1     0.338 D5    
## 12 H2             1     0.335 D6    
## 13 H3             0.587 0.477 D1    
## 14 H3             0.575 0.47  D2    
## 15 H3             0.589 0.479 D3    
## 16 H3             0.404 0.314 D4    
## 17 H3             0.575 0.440 D5    
## 18 H3             0.451 0.368 D6    
## 19 H4             0.477 0.307 D1    
## 20 H4             0.47  0.285 D2    
## 21 H4             0.479 0.296 D3    
## 22 H4             0.394 0.331 D4    
## 23 H4             0.440 0.253 D5    
## 24 H4             0.335 0.276 D6    
## 25 H5             0.307 0.307 D1    
## 26 H5             0.285 0.285 D2    
## 27 H5             0.296 0.296 D3    
## 28 H5             0.331 0.331 D4    
## 29 H5             0.253 0.253 D5    
## 30 H5             0.368 0.368 D6    
## 31 H6             0.307 0.270 D1    
## 32 H6             0.285 0.244 D2    
## 33 H6             0.296 0.256 D3    
## 34 H6             0.162 0.148 D4    
## 35 H6             0.253 0.212 D5    
## 36 H6             0.167 0.153 D6

## 
## ===== Scenario 12 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested  power design
##    <chr>          <dbl>  <dbl> <chr> 
##  1 H1            1      0.376  D1    
##  2 H1            1      0.451  D2    
##  3 H1            1      0.420  D3    
##  4 H1            1      0.387  D4    
##  5 H1            1      0.453  D5    
##  6 H1            1      0.454  D6    
##  7 H2            1      0.122  D1    
##  8 H2            1      0.0695 D2    
##  9 H2            1      0.0941 D3    
## 10 H2            1      0.140  D4    
## 11 H2            1      0.118  D5    
## 12 H2            1      0.116  D6    
## 13 H3            0.442  0.338  D1    
## 14 H3            0.486  0.394  D2    
## 15 H3            0.467  0.368  D3    
## 16 H3            0.387  0.290  D4    
## 17 H3            0.486  0.342  D5    
## 18 H3            0.454  0.368  D6    
## 19 H4            0.338  0.195  D1    
## 20 H4            0.394  0.228  D2    
## 21 H4            0.368  0.212  D3    
## 22 H4            0.140  0.135  D4    
## 23 H4            0.342  0.159  D5    
## 24 H4            0.116  0.112  D6    
## 25 H5            0.195  0.195  D1    
## 26 H5            0.228  0.228  D2    
## 27 H5            0.212  0.212  D3    
## 28 H5            0.135  0.135  D4    
## 29 H5            0.159  0.159  D5    
## 30 H5            0.368  0.368  D6    
## 31 H6            0.195  0.165  D1    
## 32 H6            0.228  0.198  D2    
## 33 H6            0.212  0.180  D3    
## 34 H6            0.0715 0.0608 D4    
## 35 H6            0.159  0.125  D5    
## 36 H6            0.075  0.064  D6

## 
## ===== Scenario 13 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested  power design
##    <chr>          <dbl>  <dbl> <chr> 
##  1 H1            1      0.117  D1    
##  2 H1            1      0.157  D2    
##  3 H1            1      0.139  D3    
##  4 H1            1      0.150  D4    
##  5 H1            1      0.162  D5    
##  6 H1            1      0.167  D6    
##  7 H2            1      0.903  D1    
##  8 H2            1      0.830  D2    
##  9 H2            1      0.872  D3    
## 10 H2            1      0.906  D4    
## 11 H2            1      0.843  D5    
## 12 H2            1      0.842  D6    
## 13 H3            0.911  0.774  D1    
## 14 H3            0.851  0.664  D2    
## 15 H3            0.886  0.726  D3    
## 16 H3            0.150  0.110  D4    
## 17 H3            0.851  0.663  D5    
## 18 H3            0.167  0.126  D6    
## 19 H4            0.774  0.392  D1    
## 20 H4            0.664  0.278  D2    
## 21 H4            0.726  0.337  D3    
## 22 H4            0.906  0.468  D4    
## 23 H4            0.663  0.278  D5    
## 24 H4            0.842  0.354  D6    
## 25 H5            0.392  0.392  D1    
## 26 H5            0.278  0.278  D2    
## 27 H5            0.337  0.337  D3    
## 28 H5            0.468  0.468  D4    
## 29 H5            0.278  0.278  D5    
## 30 H5            0.126  0.126  D6    
## 31 H6            0.392  0.346  D1    
## 32 H6            0.278  0.223  D2    
## 33 H6            0.337  0.285  D3    
## 34 H6            0.0802 0.0745 D4    
## 35 H6            0.278  0.223  D5    
## 36 H6            0.08   0.0743 D6

## 
## ===== Scenario 14 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested  power design
##    <chr>          <dbl>  <dbl> <chr> 
##  1 H1            1      0.123  D1    
##  2 H1            1      0.167  D2    
##  3 H1            1      0.149  D3    
##  4 H1            1      0.156  D4    
##  5 H1            1      0.170  D5    
##  6 H1            1      0.176  D6    
##  7 H2            1      0.662  D1    
##  8 H2            1      0.529  D2    
##  9 H2            1      0.604  D3    
## 10 H2            1      0.670  D4    
## 11 H2            1      0.561  D5    
## 12 H2            1      0.558  D6    
## 13 H3            0.695  0.578  D1    
## 14 H3            0.598  0.455  D2    
## 15 H3            0.654  0.522  D3    
## 16 H3            0.156  0.111  D4    
## 17 H3            0.598  0.451  D5    
## 18 H3            0.176  0.131  D6    
## 19 H4            0.578  0.363  D1    
## 20 H4            0.455  0.259  D2    
## 21 H4            0.522  0.308  D3    
## 22 H4            0.670  0.434  D4    
## 23 H4            0.451  0.258  D5    
## 24 H4            0.558  0.328  D6    
## 25 H5            0.363  0.363  D1    
## 26 H5            0.259  0.259  D2    
## 27 H5            0.308  0.308  D3    
## 28 H5            0.434  0.434  D4    
## 29 H5            0.258  0.258  D5    
## 30 H5            0.131  0.131  D6    
## 31 H6            0.363  0.32   D1    
## 32 H6            0.259  0.207  D2    
## 33 H6            0.308  0.260  D3    
## 34 H6            0.0789 0.0721 D4    
## 35 H6            0.258  0.206  D5    
## 36 H6            0.0809 0.0741 D6

## 
## ===== Scenario 15 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested  power design
##    <chr>          <dbl>  <dbl> <chr> 
##  1 H1            1      0.119  D1    
##  2 H1            1      0.159  D2    
##  3 H1            1      0.142  D3    
##  4 H1            1      0.141  D4    
##  5 H1            1      0.161  D5    
##  6 H1            1      0.164  D6    
##  7 H2            1      0.366  D1    
##  8 H2            1      0.251  D2    
##  9 H2            1      0.312  D3    
## 10 H2            1      0.377  D4    
## 11 H2            1      0.283  D5    
## 12 H2            1      0.281  D6    
## 13 H3            0.436  0.350  D1    
## 14 H3            0.363  0.275  D2    
## 15 H3            0.402  0.312  D3    
## 16 H3            0.141  0.0957 D4    
## 17 H3            0.363  0.262  D5    
## 18 H3            0.164  0.122  D6    
## 19 H4            0.350  0.270  D1    
## 20 H4            0.275  0.194  D2    
## 21 H4            0.312  0.232  D3    
## 22 H4            0.377  0.315  D4    
## 23 H4            0.262  0.184  D5    
## 24 H4            0.281  0.229  D6    
## 25 H5            0.270  0.270  D1    
## 26 H5            0.194  0.194  D2    
## 27 H5            0.232  0.232  D3    
## 28 H5            0.315  0.315  D4    
## 29 H5            0.184  0.184  D5    
## 30 H5            0.122  0.122  D6    
## 31 H6            0.270  0.232  D1    
## 32 H6            0.194  0.151  D2    
## 33 H6            0.232  0.190  D3    
## 34 H6            0.0585 0.0537 D4    
## 35 H6            0.184  0.141  D5    
## 36 H6            0.0627 0.0577 D6

## 
## ===== Scenario 16 — Table =====
## # A tibble: 36 × 4
##    endpoint prob_tested  power design
##    <chr>          <dbl>  <dbl> <chr> 
##  1 H1            1      0.114  D1    
##  2 H1            1      0.157  D2    
##  3 H1            1      0.138  D3    
##  4 H1            1      0.120  D4    
##  5 H1            1      0.158  D5    
##  6 H1            1      0.158  D6    
##  7 H2            1      0.120  D1    
##  8 H2            1      0.0653 D2    
##  9 H2            1      0.0929 D3    
## 10 H2            1      0.125  D4    
## 11 H2            1      0.0823 D5    
## 12 H2            1      0.0792 D6    
## 13 H3            0.216  0.156  D1    
## 14 H3            0.208  0.151  D2    
## 15 H3            0.214  0.153  D3    
## 16 H3            0.120  0.0772 D4    
## 17 H3            0.208  0.132  D5    
## 18 H3            0.158  0.114  D6    
## 19 H4            0.156  0.118  D1    
## 20 H4            0.151  0.102  D2    
## 21 H4            0.153  0.108  D3    
## 22 H4            0.125  0.119  D4    
## 23 H4            0.132  0.0787 D5    
## 24 H4            0.0792 0.076  D6    
## 25 H5            0.118  0.118  D1    
## 26 H5            0.102  0.102  D2    
## 27 H5            0.108  0.108  D3    
## 28 H5            0.119  0.119  D4    
## 29 H5            0.0787 0.0787 D5    
## 30 H5            0.114  0.114  D6    
## 31 H6            0.118  0.0956 D1    
## 32 H6            0.102  0.0806 D2    
## 33 H6            0.108  0.085  D3    
## 34 H6            0.0226 0.0192 D4    
## 35 H6            0.0787 0.0564 D5    
## 36 H6            0.0246 0.0211 D6