From b5b0351355aa7b90cf18eca7c2a5da9a1c5080d7 Mon Sep 17 00:00:00 2001
From: Dong Xi <38050865+xidongdxi@users.noreply.github.com>
Date: Tue, 27 Feb 2024 11:48:13 -0500
Subject: [PATCH 1/4] De-duplicate columns in test values

Merge the column * with its previous column, e.g., Weight*, to avoid duplicated columns of *
---
 DESCRIPTION                              |  2 +-
 NEWS.md                                  |  5 ++
 R/graph_rejection_orderings.R            |  3 +-
 R/graph_test_closure.R                   |  4 +-
 R/graph_test_shortcut.R                  |  3 +-
 R/plot.initial_graph.R                   | 24 +++----
 R/print.graph_report.R                   |  8 +--
 R/test_values.R                          | 18 ++---
 man/graph_calculate_power.Rd             |  2 +-
 man/graphicalMCP-package.Rd              |  4 +-
 tests/testthat/test-graph_test_closure.R |  1 -
 vignettes/closed-testing.Rmd             | 36 +++++-----
 vignettes/comparisons.Rmd                | 83 ++++++++++++------------
 vignettes/generate-closure.Rmd           | 66 +++++++++----------
 vignettes/graph-examples.Rmd             | 26 ++++----
 vignettes/graphicalMCP.Rmd               | 13 ++--
 vignettes/shortcut-testing.Rmd           | 18 ++---
 17 files changed, 157 insertions(+), 159 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index 272fa68a..273bd4e9 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Type: Package
 Package: graphicalMCP
 Title: Graphical Multiple Comparison Procedures
-Version: 0.1.0
+Version: 0.1.1
 Authors@R: c(
     person("Dong", "Xi", , "dong.xi1@gilead.com", role = c("aut", "cre")),
     person("Ethan", "Brockmann", , "ethan.brockmann@atorusresearch.com", role = "aut"),
diff --git a/NEWS.md b/NEWS.md
index 03773f79..1e0a137b 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,8 @@
 # graphicalMCP 0.1.0
 
 * First release
+
+# graphicalMCP 0.1.1
+
+* Added compilation of vignettes (#73)
+* De-duplicated test values column names (#75)
diff --git a/R/graph_rejection_orderings.R b/R/graph_rejection_orderings.R
index bf74299c..9df41951 100644
--- a/R/graph_rejection_orderings.R
+++ b/R/graph_rejection_orderings.R
@@ -44,7 +44,7 @@ graph_rejection_orderings <- function(shortcut_test_result) {
     rev(expand.grid(rep(list(rejected), length(rejected)))),
     1,
     function(row) {
-      if (length(unique(row)) == length(row)){
+      if (length(unique(row)) == length(row)) {
         structure(row, names = hyp_names[row])
       } else {
         NULL
@@ -61,7 +61,6 @@ graph_rejection_orderings <- function(shortcut_test_result) {
     intermediate_graph <- graph
 
     for (hyp_num in hyp_ordering) {
-
       if (p[[hyp_num]] <= intermediate_graph$hypotheses[[hyp_num]] * alpha) {
         intermediate_graph <-
           graph_update(intermediate_graph, hyp_num)$updated_graph
diff --git a/R/graph_test_closure.R b/R/graph_test_closure.R
index 42d24321..61190159 100644
--- a/R/graph_test_closure.R
+++ b/R/graph_test_closure.R
@@ -309,12 +309,10 @@ graph_test_closure <- function(graph,
     df_test_values <- do.call(rbind, test_values_list)
     rownames(df_test_values) <- NULL
 
-
-
     # "c" value is only used in parametric testing, so there's no need to
     # include this column when there are no parametric groups
     if (!any(test_types == "parametric")) {
-      df_test_values[c("c_value", "*")] <- NULL
+      df_test_values[c("c_value*")] <- NULL
     }
   }
 
diff --git a/R/graph_test_shortcut.R b/R/graph_test_shortcut.R
index e6e4e88f..b0c2ad08 100644
--- a/R/graph_test_shortcut.R
+++ b/R/graph_test_shortcut.R
@@ -146,7 +146,7 @@ graph_test_shortcut <- function(graph,
       # algorithm")
       names(test_values_step)[[1]] <- "Step"
       test_values_step$Step <- step_num
-      test_values_step[c("Test", "c_value", "*")] <- NULL
+      test_values_step[c("Test", "c_value*")] <- NULL
 
       df_test_values <- rbind(df_test_values, test_values_step)
 
@@ -161,6 +161,7 @@ graph_test_shortcut <- function(graph,
         step_graph <- graph_after_rejections
       }
     }
+    rownames(df_test_values) <- NULL
   }
 
   # Build the report -----------------------------------------------------------
diff --git a/R/plot.initial_graph.R b/R/plot.initial_graph.R
index 8e21d340..6fefb407 100644
--- a/R/plot.initial_graph.R
+++ b/R/plot.initial_graph.R
@@ -64,23 +64,23 @@
 #'
 #' epsilon <- 1e-5
 #' transitions <- rbind(
-#'   c(0,       0.5,     0.25,        0,    0.25, 0),
-#'   c(0.5,     0,       0,           0.25, 0,    0.25),
-#'   c(0,       0,       0,           0,    1,    0),
-#'   c(epsilon, 0,       0,           0,    0,    1 - epsilon),
-#'   c(0,       epsilon, 1 - epsilon, 0,    0,    0),
-#'   c(0,       0,       0,           1,    0,    0)
+#'   c(0, 0.5, 0.25, 0, 0.25, 0),
+#'   c(0.5, 0, 0, 0.25, 0, 0.25),
+#'   c(0, 0, 0, 0, 1, 0),
+#'   c(epsilon, 0, 0, 0, 0, 1 - epsilon),
+#'   c(0, epsilon, 1 - epsilon, 0, 0, 0),
+#'   c(0, 0, 0, 1, 0, 0)
 #' )
 #'
 #' g <- graph_create(hypotheses, transitions)
 #'
 #' plot_layout <- rbind(
-#'   c(.15, .5),
-#'   c(.65, .5),
-#'   c(  0,  0),
-#'   c( .5,  0),
-#'   c( .3,  0),
-#'   c( .8,  0)
+#'   c(0.15, 0.5),
+#'   c(0.65, 0.5),
+#'   c(0, 0),
+#'   c(0.5, 0),
+#'   c(0.3, 0),
+#'   c(0.8, 0)
 #' )
 #'
 #' plot(g, layout = plot_layout, eps = epsilon, edge_curves = c(pairs = .5))
diff --git a/R/print.graph_report.R b/R/print.graph_report.R
index 88b47113..7acc609c 100644
--- a/R/print.graph_report.R
+++ b/R/print.graph_report.R
@@ -186,9 +186,9 @@ print.graph_report <- function(x, ..., precision = 4, indent = 2, rows = 10) {
     section_break("Detailed test values ($test_values)")
 
     if (any(x$inputs$test_types == "parametric")) {
-      num_cols <- c("p", "c_value", "Weight", "Alpha")
+      num_cols <- c("p", "c_value*", "Weight*", "Alpha")
     } else {
-      num_cols <- c("p", "Weight", "Alpha")
+      num_cols <- c("p", "Weight*", "Alpha")
     }
 
     crit_res <- x$test_values$results
@@ -201,9 +201,9 @@ print.graph_report <- function(x, ..., precision = 4, indent = 2, rows = 10) {
     )
     if (any(x$inputs$test_types == "parametric")) {
       crit_res$c_value <- ifelse(
-        trimws(crit_res$c_value) == "NA",
+        trimws(crit_res$"c_value*") == "NA",
         "",
-        crit_res$c_value
+        crit_res$"c_value*"
       )
     }
 
diff --git a/R/test_values.R b/R/test_values.R
index 45fa91ae..fd5be1d8 100644
--- a/R/test_values.R
+++ b/R/test_values.R
@@ -36,10 +36,8 @@ test_values_bonferroni <- function(p, hypotheses, alpha, intersection = NA) {
       Test = "bonferroni",
       p = p,
       "<=" = "<=",
-      c_value = "",
-      "*" = "",
-      Weight = hypotheses,
-      "*" = "*",
+      "c_value*" = "",
+      "Weight*" = hypotheses,
       Alpha = alpha,
       Inequality_holds = ifelse(
         p == 0 & hypotheses == 0,
@@ -68,10 +66,8 @@ test_values_parametric <- function(p,
       Test = "parametric",
       p = p,
       "<=" = "<=",
-      c_value = c_value,
-      "*" = "*",
-      Weight = hypotheses,
-      "*" = "*",
+      "c_value*" = c_value,
+      "Weight*" = hypotheses,
       Alpha = alpha,
       Inequality_holds = ifelse(
         p == 0 & hypotheses == 0,
@@ -102,10 +98,8 @@ test_values_simes <- function(p, hypotheses, alpha, intersection = NA) {
       Test = "simes",
       p = p,
       "<=" = "<=",
-      c_value = "",
-      "*" = "",
-      Weight = w_sum,
-      "*" = "*",
+      "c_value*" = "",
+      "Weight*" = w_sum,
       Alpha = alpha,
       Inequality_holds = ifelse(
         p == 0 & w_sum == 0,
diff --git a/man/graph_calculate_power.Rd b/man/graph_calculate_power.Rd
index 0a1cf4e4..ce6ec2d0 100644
--- a/man/graph_calculate_power.Rd
+++ b/man/graph_calculate_power.Rd
@@ -57,7 +57,7 @@ A list with three elements
 \item power - A list of measures of how often hypotheses are rejected
 \itemize{
 \item power_local - Rejection proportion for each hypothesis individually
-\item power_expected - Average number of hypotheses rejected in a single
+\item rejection_expected - Average number of hypotheses rejected in a single
 simulation
 \item power_at_least_1 - Proportion of simulations which reject any
 hypothesis
diff --git a/man/graphicalMCP-package.Rd b/man/graphicalMCP-package.Rd
index 4b8117ca..0661c9fe 100644
--- a/man/graphicalMCP-package.Rd
+++ b/man/graphicalMCP-package.Rd
@@ -4,11 +4,11 @@
 \name{graphicalMCP-package}
 \alias{graphicalMCP}
 \alias{graphicalMCP-package}
-\title{graphicalMCP: Graphical Approach for Multiple Comparison Procedures}
+\title{graphicalMCP: Graphical Multiple Comparison Procedures}
 \description{
 \if{html}{\figure{logo.png}{options: style='float: right' alt='logo' width='120'}}
 
-A multiple comparison procedure (or multiple test procedure) is a a statistical analysis method for determining efficacy of multiple drugs, or multiple doses of the same drug, in a single clinical trial. (Bretz et al., 2011) laid out a graph-based approach to these multiple comparison procedures, in which the weights of the vertices and edges of the graph are determined independently of the particular statistical test used to assess results. This is a low-dependency implementation of the methods described in that and subsequent papers.
+Graphical multiple comparison procedures (MCPs) control the familywise error rate. This class includes many commonly used procedures as special cases. This package is a low-dependency implementation of graphical MCPs which allow mixed types of tests. It also includes power simulations and visualization of graphical MCPs.
 }
 \seealso{
 Useful links:
diff --git a/tests/testthat/test-graph_test_closure.R b/tests/testthat/test-graph_test_closure.R
index 863e2b93..e1b45f9f 100644
--- a/tests/testthat/test-graph_test_closure.R
+++ b/tests/testthat/test-graph_test_closure.R
@@ -308,7 +308,6 @@ test_that("compare adjusted p-values to lrstat - Bonferroni & Simes", {
         ignore_attr = TRUE
       )
     }
-
   }
 })
 
diff --git a/vignettes/closed-testing.Rmd b/vignettes/closed-testing.Rmd
index 68f662cc..38b3df03 100644
--- a/vignettes/closed-testing.Rmd
+++ b/vignettes/closed-testing.Rmd
@@ -55,19 +55,19 @@ hyp_names <- c("H1", "H2", "H3", "H4", "H5", "H6")
 g <- graph_create(hypotheses, transitions, hyp_names)
 
 plot_layout <- rbind(
-  c(.15, .5),
-  c(.65, .5),
+  c(0.15, 0.5),
+  c(0.65, 0.5),
   c(0, 0),
-  c(.5, 0),
-  c(.3, 0),
-  c(.8, 0)
+  c(0.5, 0),
+  c(0.3, 0),
+  c(0.8, 0)
 )
 
 plot(
   g,
   layout = plot_layout,
   eps = epsilon,
-  edge_curves = c(pairs = .8),
+  edge_curves = c(pairs = 0.8),
   vertex.size = 35
 )
 ```
@@ -80,12 +80,12 @@ Given a set of p-values for $H_1, \ldots, H_6$, the graphical multiple compariso
 ```{r graph-test-bonferroni}
 p_values <- c(0.015, 0.013, 0.01, 0.007, 0.1, 0.0124)
 test_results <- graph_test_closure(
-  g, 
-  p = p_values, 
-  alpha = 0.025, 
-  verbose = TRUE, 
+  g,
+  p = p_values,
+  alpha = 0.025,
+  verbose = TRUE,
   test_values = TRUE
-  )
+)
 
 test_results$outputs$adjusted_p
 
@@ -203,7 +203,7 @@ sample_size <- rep(200, 3)
 
 unpooled_variance <-
   prop[-1] * (1 - prop[-1]) / sample_size[-1] +
-  prop[1]  * (1 - prop[1])  / sample_size[1]
+  prop[1] * (1 - prop[1]) / sample_size[1]
 
 noncentrality_parameter_primary <-
   -(prop[-1] - prop[1]) / sqrt(unpooled_variance)
@@ -230,7 +230,7 @@ variance <- sd[-1]^2 / sample_size[-1] + sd[1]^2 / sample_size[1]
 
 noncentrality_parameter_se1 <-
   (mean_change_se1[-1] - mean_change_se1[1]) /
-  sqrt(variance)
+    sqrt(variance)
 
 marginal_power_se1 <- pnorm(
   qnorm(alpha, lower.tail = FALSE),
@@ -246,7 +246,7 @@ mean_change_se2 <- c(6, 8, 9)
 
 noncentrality_parameter_se2 <-
   (mean_change_se2[-1] - mean_change_se2[1]) /
-  sqrt(variance)
+    sqrt(variance)
 
 marginal_power_se2 <- pnorm(
   qnorm(alpha, lower.tail = FALSE),
@@ -309,20 +309,20 @@ These are the default outputs from the `graph_calculate_power` function. In addi
 success_fns <- list(
   # Probability to reject H1
   H1 = function(x) x[1],
-  
+
   # Expected number of rejections
   `Expected no. of rejections` =
     function(x) x[1] + x[2] + x[3] + x[4] + x[5] + x[6],
 
   # Probability to reject at least one hypothesis
   `AtLeast1` = function(x) x[1] | x[2] | x[3] | x[4] | x[5] | x[6],
-  
+
   # Probability to reject all hypotheses
   `All` = function(x) x[1] & x[2] & x[3] & x[4] & x[5] & x[6],
-  
+
   # Probability to reject both H1 and H2
   `H1andH2` = function(x) x[1] & x[2],
-  
+
   # Probability to reject all hypotheses for the low dose or the high dose
   `(H1andH3andH5)or(H2andH4andH6)` <-
     function(x) (x[1] & x[3] & x[5]) | (x[2] & x[4] & x[6])
diff --git a/vignettes/comparisons.Rmd b/vignettes/comparisons.Rmd
index c9f42642..87ead722 100644
--- a/vignettes/comparisons.Rmd
+++ b/vignettes/comparisons.Rmd
@@ -60,11 +60,11 @@ for (i in 1:1000) {
   graph <- random_graph(5)
   graphicalmcp_weights <- graphicalMCP::graph_generate_weights(graph)
   dimnames(graphicalmcp_weights) <- list(NULL, NULL)
-  gmcp_weights <- 
+  gmcp_weights <-
     gMCP::generateWeights(graph$transitions, graph$hypotheses)
   gmcp_weights <- gmcp_weights[nrow(gmcp_weights):1, ] # Reorder rows
   identical <- c(
-    identical, 
+    identical,
     all.equal(gmcp_weights, graphicalmcp_weights, tolerance = 1e-7)
   )
 }
@@ -83,12 +83,12 @@ identical <- NULL
 for (i in 1:10000) {
   graph <- random_graph(5)
   p <- runif(5, 0, alpha)
-  graphicalmcp_test_shortcut <- 
+  graphicalmcp_test_shortcut <-
     graph_test_shortcut(graph, p, alpha = alpha)$outputs$adjusted_p
-  gmcp_test_shortcut <- 
+  gmcp_test_shortcut <-
     gMCP(as_graphMCP(graph), p, alpha = alpha)@adjPValues
   identical <- c(
-    identical, 
+    identical,
     all.equal(graphicalmcp_test_shortcut, gmcp_test_shortcut, tolerance = 1e-7)
   )
 }
@@ -110,9 +110,9 @@ for (i in 1:1000) {
   graph <- random_graph(5)
   marginal_power <- runif(5, 0.5, 0.9)
   noncentrality_parameter <-
-  qnorm(1 - 0.025, lower.tail = TRUE) -
-  qnorm(1 - marginal_power, lower.tail = TRUE)
-  
+    qnorm(1 - 0.025, lower.tail = TRUE) -
+    qnorm(1 - marginal_power, lower.tail = TRUE)
+
   set.seed(1234 + i - 1)
   graphicalmcp_power <- rbind(
     graphicalmcp_power,
@@ -124,7 +124,7 @@ for (i in 1:1000) {
       sim_n = 2^17
     )$power$power_local
   )
-  
+
   set.seed(1234 + i - 1)
   gmcp_power <- rbind(
     gmcp_power,
@@ -143,7 +143,7 @@ diff <- data.frame(
   rbind(graphicalmcp_power, gmcp_power),
   procedure = rep(c("graphicalMCP", "gMCP"), each = nrow(graphicalmcp_power))
 )
-  
+
 write.csv(
   diff,
   here::here("vignettes/cache/comparisons_power_shortcut.csv"),
@@ -156,10 +156,10 @@ gmcp_power <- subset(diff, procedure == "gMCP")
 round(
   max(
     abs(
-      graphicalmcp_power[, - ncol(graphicalmcp_power)] - 
-        gmcp_power[, - ncol(gmcp_power)]
-      )
-    ),
+      graphicalmcp_power[, -ncol(graphicalmcp_power)] -
+        gmcp_power[, -ncol(gmcp_power)]
+    )
+  ),
   4
 ) # Maximum difference in local power among 1000 cases
 ```
@@ -170,10 +170,10 @@ round(
 A successive graph with two primary and two secondary hypotheses will be generated and used for the comparison. A set of p-values is randomly generated to be used for the graphical MCP. Adjusted p-values are calculated and compared using the following functions: `graphicalMCP::graph_test_closure()` and `gMCP::gMCP()`. Parametric tests are used for two primary hypotheses. This process is repeated 10000 times. Adjusted p-values are matched for all 10000 cases.
 
 ```{r parametric}
-hypotheses <- c(.5, .5, 0, 0)
+hypotheses <- c(0.5, 0.5, 0, 0)
 transitions <- rbind(
-  c(0, .5, .5, 0),
-  c(.5, 0, 0, .5),
+  c(0, 0.5, 0.5, 0),
+  c(0.5, 0, 0, 0.5),
   c(0, 1, 0, 0),
   c(1, 0, 0, 0)
 )
@@ -183,16 +183,16 @@ set.seed(1234)
 alpha <- 0.025
 identical <- NULL
 test_corr <- rbind(
-  c(1, .5, NA, NA),
-  c(.5, 1, NA, NA),
+  c(1, 0.5, NA, NA),
+  c(0.5, 1, NA, NA),
   c(NA, NA, 1, NA),
   c(NA, NA, NA, 1)
 )
 for (i in 1:10000) {
   p <- runif(4, 0, alpha)
   graphicalmcp_test_parametric <- graph_test_closure(
-    graph, 
-    p, 
+    graph,
+    p,
     alpha = alpha,
     test_groups = list(1:2, 3:4),
     test_types = c("parametric", "bonferroni"),
@@ -205,7 +205,7 @@ for (i in 1:10000) {
     correlation = test_corr
   )@adjPValues
   identical <- c(
-    identical, 
+    identical,
     all.equal(graphicalmcp_test_parametric, gmcp_test_parametric, tolerance = 1e-7)
   )
 }
@@ -217,21 +217,21 @@ all(identical)
 A successive graph with two primary and two secondary hypotheses will be generated and used for the comparison. A set of marginal power (without multiplicity adjustment) is randomly generated. Local power (with multiplicity adjustment) is calculated and compared using the following functions: `graphicalMCP::graph_calculate_power()` and `gMCP::calcPower()`. Parametric tests are used for two primary hypotheses. This process is repeated 100 times. Since different simulation methods are used, results are slightly different. The maximum absolute difference in local power is 0.0142 (1.42%) among 100 cases, which is small.
 
 ```{r power-parametric, eval = FALSE}
-hypotheses <- c(.5, .5, 0, 0)
+hypotheses <- c(0.5, 0.5, 0, 0)
 transitions <- rbind(
-  c(0, .5, .5, 0),
-  c(.5, 0, 0, .5),
+  c(0, 0.5, 0.5, 0),
+  c(0.5, 0, 0, 0.5),
   c(0, 1, 0, 0),
   c(1, 0, 0, 0)
 )
 graph <- graph_create(hypotheses, transitions)
 test_corr <- rbind(
-  c(1, .5, NA, NA),
-  c(.5, 1, NA, NA),
+  c(1, 0.5, NA, NA),
+  c(0.5, 1, NA, NA),
   c(NA, NA, 1, NA),
   c(NA, NA, NA, 1)
 )
-sim_corr <- matrix(.5, 4, 4)
+sim_corr <- matrix(0.5, 4, 4)
 diag(sim_corr) <- 1
 set.seed(1234)
 alpha <- 0.025
@@ -241,7 +241,7 @@ for (i in 1:100) {
   marginal_power <- runif(4, 0.5, 0.9)
   noncentrality_parameter <-
     qnorm(1 - 0.025, lower.tail = TRUE) -
-      qnorm(1 - marginal_power, lower.tail = TRUE)
+    qnorm(1 - marginal_power, lower.tail = TRUE)
 
   set.seed(1234 + i - 1)
   graphicalmcp_power_parametric <- rbind(
@@ -257,7 +257,7 @@ for (i in 1:100) {
       sim_n = 2^14
     )$power$power_local
   )
-  
+
   set.seed(1234 + i - 1)
   gmcp_power_parametric <- rbind(
     gmcp_power_parametric,
@@ -277,7 +277,7 @@ diff <- data.frame(
   rbind(graphicalmcp_power_parametric, gmcp_power_parametric),
   procedure = rep(c("graphicalMCP", "gMCP"), each = nrow(gmcp_power_parametric))
 )
-  
+
 write.csv(
   diff,
   here::here("vignettes/cache/comparisons_power_parametric.csv"),
@@ -290,10 +290,11 @@ gmcp_power <- subset(diff, procedure == "gMCP")
 round(
   max(
     abs(
-      graphicalmcp_power_parametric[, - ncol(graphicalmcp_power_parametric)] - 
-        gmcp_power_parametric[, - ncol(gmcp_power)]
-      )
-    ), 4
+      graphicalmcp_power_parametric[, -ncol(graphicalmcp_power_parametric)] -
+        gmcp_power_parametric[, -ncol(gmcp_power)]
+    )
+  ),
+  4
 ) # Maximum difference in local power among 100 cases
 ```
 
@@ -303,7 +304,7 @@ round(
 A successive graph with two primary and two secondary hypotheses will be generated and used for the comparison. A set of p-values is randomly generated to be used for the graphical MCP. Adjusted p-values are calculated and compared using the following functions: `graphicalMCP::graph_test_closure()` and `lrstat::fadjpsim()`. Simes tests are used for two primary hypotheses. This process is repeated 10000 times. Adjusted p-values are matched for all 10000 cases.
 
 ```{r simes}
-hypotheses <- c(.5, .5, 0, 0)
+hypotheses <- c(0.5, 0.5, 0, 0)
 eps <- 0.0001
 transitions <- rbind(
   c(0, 1 - eps, eps, 0),
@@ -324,8 +325,8 @@ family <- rbind(
 for (i in 1:10000) {
   p <- runif(4, 0, alpha)
   graphicalmcp_test_simes <- graph_test_closure(
-    graph, 
-    p, 
+    graph,
+    p,
     alpha = alpha,
     test_groups = list(1:2, 3:4),
     test_types = c("simes", "bonferroni")
@@ -336,10 +337,10 @@ for (i in 1:10000) {
       fwgtmat(graph$hypotheses, graph$transitions),
       p,
       family
-  )
-  
+    )
+
   identical <- c(
-    identical, 
+    identical,
     all.equal(graphicalmcp_test_simes, lrstat_test_simes, tolerance = 1e-7)
   )
 }
diff --git a/vignettes/generate-closure.Rmd b/vignettes/generate-closure.Rmd
index 90e5e7f1..9b2854ee 100644
--- a/vignettes/generate-closure.Rmd
+++ b/vignettes/generate-closure.Rmd
@@ -208,7 +208,7 @@ Note that the same step to update the graph may repeat in many replications, whi
 ```{r power-conventional, eval = FALSE}
 gcp_conventional <- function(
     graph,
-    alpha = .025,
+    alpha = 0.025,
     power_marginal = rep(alpha, length(graph$hypotheses)),
     sim_n = 100,
     sim_corr = diag(length(graph$hypotheses)),
@@ -218,10 +218,10 @@ gcp_conventional <- function(
   num_hyps <- length(graph$hypotheses)
 
   graphicalMCP:::power_input_val(
-    graph, 
-    sim_n, 
-    power_marginal, 
-    sim_corr, 
+    graph,
+    sim_n,
+    power_marginal,
+    sim_corr,
     sim_success
   )
 
@@ -361,30 +361,30 @@ benchmark_list <- lapply(
     # A graph for the Holm procedure
     transitions <- matrix(1 / (num_hyps - 1), num_hyps, num_hyps)
     diag(transitions) <- 0
-    
+
     graph <- graph_create(rep(1 / num_hyps, num_hyps), transitions)
-    
+
     corr <- diag(num_hyps)
-    
+
     benchmark <- mark(
       `gMCP (C)` = gMCP::calcPower(
-        graph$hypotheses, 
-        .025, 
+        graph$hypotheses,
+        0.025,
         graph$transitions,
-        n.sim = 2^14, 
+        n.sim = 2^14,
         corr.sim = corr
       ),
-      `graphicalMCP conventional (R)` = 
+      `graphicalMCP conventional (R)` =
         gcp_conventional(
-          graph, 
-          .025,
+          graph,
+          0.025,
           power_marginal = rep(.9, num_hyps),
           sim_n = 2^14
         ),
       `graphicalMCP parent-child (R)` =
         graph_calculate_power(
-          graph, 
-          .025,
+          graph,
+          0.025,
           power_marginal = rep(.9, num_hyps),
           sim_n = 2^14
         ),
@@ -393,11 +393,11 @@ benchmark_list <- lapply(
       time_unit = "s",
       min_iterations = 5
     )[, 1:5]
-    
-    benchmark <- benchmark[benchmark$median > .00001, ]
+
+    benchmark <- benchmark[benchmark$median > 0.00001, ]
     benchmark$char_expression <- as.character(benchmark$expression)
     benchmark <- benchmark[, c("char_expression", "median")]
-    
+
     cbind(data.frame(num_hyps = num_hyps), benchmark)
   }
 )
@@ -430,26 +430,26 @@ benchmark_list <- lapply(
     graph <- fixed_sequence(num_hyps)
 
     corr <- diag(num_hyps)
-    
+
     benchmark <- mark(
       `gMCP (C)` = gMCP::calcPower(
-        graph$hypotheses, 
-        .025, 
+        graph$hypotheses,
+        0.025,
         graph$transitions,
-        n.sim = 2^14, 
+        n.sim = 2^14,
         corr.sim = corr
       ),
-      `graphicalMCP conventional (R)` = 
+      `graphicalMCP conventional (R)` =
         gcp_conventional(
-          graph, 
-          .025,
+          graph,
+          0.025,
           power_marginal = rep(.9, num_hyps),
           sim_n = 2^14
         ),
       `graphicalMCP parent-child (R)` =
         graph_calculate_power(
-          graph, 
-          .025,
+          graph,
+          0.025,
           power_marginal = rep(.9, num_hyps),
           sim_n = 2^14
         ),
@@ -458,11 +458,11 @@ benchmark_list <- lapply(
       time_unit = "s",
       min_iterations = 5
     )[, 1:5]
-    
-    benchmark <- benchmark[benchmark$median > .00001, ]
+
+    benchmark <- benchmark[benchmark$median > 0.00001, ]
     benchmark$char_expression <- as.character(benchmark$expression)
     benchmark <- benchmark[, c("char_expression", "median")]
-    
+
     cbind(data.frame(num_hyps = num_hyps), benchmark)
   }
 )
@@ -486,7 +486,7 @@ write.csv(
 ```
 
 ```{r plot-power-benchmarks, fig.dim=c(8, 5), eval=FALSE}
-benchmarks_holm <- 
+benchmarks_holm <-
   read.csv(here::here("vignettes/cache/power_benchmarks_holm.csv"))
 benchmarks_fixed_sequence <-
   read.csv(here::here("vignettes/cache/power_benchmarks_fixed_sequence.csv"))
@@ -513,7 +513,7 @@ benchmarks_plot_standard <-
   geom_line(size = 1) +
   # scale_y_continuous(labels = scales::label_comma(suffix = "ms")) +
   scale_color_discrete() +
-  facet_wrap(~ Procedure, labeller = label_both)+
+  facet_wrap(~Procedure, labeller = label_both)+
   labs(
     title = "Computing time of power simulations",
     subtitle = "Median runtime in seconds",
diff --git a/vignettes/graph-examples.Rmd b/vignettes/graph-examples.Rmd
index ac6033e3..69587b00 100644
--- a/vignettes/graph-examples.Rmd
+++ b/vignettes/graph-examples.Rmd
@@ -94,7 +94,7 @@ test_results$outputs$rejected
 
 Fixed sequence (or hierarchical) procedures pre-specify an order of testing [@maurer-1995-multiple;westfall-2001-optimally]. For example, the procedure will test $H_1$ first. If it is rejected, it will test $H_2$; otherwise the testing stops. If $H_2$ is rejected, it will test $H_3$; otherwise the testing stops. For each hypothesis, it will be tested at the full $\alpha$ level, when it can be tested.
 
-```{r fixed-sequence-1, fig.dim=c(4.5, .9)}
+```{r fixed-sequence-1, fig.dim=c(4.5, 0.9)}
 set.seed(1234)
 alpha <- 0.025
 m <- 3
@@ -106,7 +106,7 @@ fixed_sequence_graph <- fixed_sequence(m)
 # )
 # fixed_sequence_graph <- graph_create(c(1, 0, 0), transitions)
 
-plot(fixed_sequence_graph, nrow = 1, asp = .05, vertex.size = 40)
+plot(fixed_sequence_graph, nrow = 1, asp = 0.05, vertex.size = 40)
 
 p_values <- runif(m, 0, alpha)
 
@@ -124,7 +124,7 @@ test_results$outputs$rejected
 
 Fallback procedures have one-way propagation (like fixed sequence procedures) but allow hypotheses to be tested at different significance levels [@wiens-2003-fixed].
 
-```{r fallback, fig.dim=c(4.5, .9)}
+```{r fallback, fig.dim=c(4.5, 0.9)}
 set.seed(1234)
 alpha <- 0.025
 m <- 3
@@ -137,7 +137,7 @@ transitions <- rbind(
 
 fallback_graph_2003 <- graph_create(rep(1 / m, m), transitions)
 
-plot(fallback_graph_2003, nrow = 1, asp = .05, vertex.size = 40)
+plot(fallback_graph_2003, nrow = 1, asp = 0.05, vertex.size = 40)
 
 p_values <- runif(m, 0, alpha)
 
@@ -155,7 +155,7 @@ Further they can be improved to allow propagation from later hypotheses to earli
 hypotheses, because it is possible that a later hypothesis is rejected before an earlier 
 hypothesis can be rejected [@wiens-2005-fallback;@hommel-2008-aesthetics].
 
-```{r fallback-improved, fig.dim=c(4.5, .9)}
+```{r fallback-improved, fig.dim=c(4.5, 0.9)}
 set.seed(1234)
 alpha <- 0.025
 m <- 3
@@ -171,7 +171,7 @@ fallback_graph_2005 <- graph_create(rep(1 / m, m), transitions)
 plot(
   fallback_graph_2005,
   nrow = 1,
-  asp = .05,
+  asp = 0.05,
   vertex.size = 40,
   edge_curves = c("pairs" = 7, "H3|H1" = -10)
 )
@@ -189,8 +189,8 @@ fallback_graph_2008 <- graph_create(rep(1 / m, m), transitions)
 plot(
   fallback_graph_2008,
   nrow = 1,
-  asp = .05,
-  eps = .0001,
+  asp = 0.05,
+  eps = 0.0001,
   edge_curves = c("pairs" = 7, "H3|H1" = -10),
   vertex.size = 40
 )
@@ -211,7 +211,7 @@ test_results$outputs$rejected
 
 Serial gatekeeping procedures involve ordered multiple families of hypotheses, where all hypotheses of a family of hypotheses must be rejected before proceeding in the test sequence. The example below considers a primary family consisting of two hypotheses $H_1$ and $H_2$ and a secondary family consisting of a single hypothesis $H_3$. In the primary family, the Holm procedure is applied. If both $H_1$ and $H_2$ are rejected, $H_3$ can be tested at level $\alpha$; otherwise $H_3$ cannot be rejected. To allow the conditional propagation to $H_3$, an $\varepsilon$ edge is used from $H_2$ to $H_3$. It has a very small transition weight so that $H_2$ propagates most of its hypothesis weight to $H_1$ (if not already rejected) and retains a small (non-zero) weight for $H_3$ so that if $H_1$ has been rejected, all hypothesis weight of $H_2$ will be propagated to $H_3$. Here $\varepsilon$ is assigned to be 0.0001 and in practice, the value could be adjusted but it should be much smaller than the smallest p-value observed.
 
-```{r serial-gatekeeping, fig.dim=c(4.5, .9)}
+```{r serial-gatekeeping, fig.dim=c(4.5, 0.9)}
 set.seed(1234)
 alpha <- 0.025
 m <- 3
@@ -228,8 +228,8 @@ serial_gatekeeping_graph <- graph_create(c(0.5, 0.5, 0), transitions)
 plot(
   serial_gatekeeping_graph,
   nrow = 1,
-  asp = .05,
-  eps = .0001,
+  asp = 0.05,
+  eps = 0.0001,
   edge_curves = c("pairs" = 7, "H3|H1" = -10),
   vertex.size = 40
 )
@@ -298,7 +298,7 @@ transitions <- rbind(
 parallel_gatekeeping_improved_graph <-
   graph_create(c(0.5, 0.5, 0, 0), transitions)
 
-plot(parallel_gatekeeping_improved_graph, eps = .0001, vertex.size = 70)
+plot(parallel_gatekeeping_improved_graph, eps = 0.0001, vertex.size = 70)
 
 p_values <- runif(m, 0, alpha)
 
@@ -352,7 +352,7 @@ m <- 4
 
 successive_var <- simple_successive_var <- function(gamma) {
   graph_create(
-    c(.5, .5, 0, 0),
+    c(0.5, 0.5, 0, 0),
     rbind(
       c(0, gamma, 1 - gamma, 0),
       c(gamma, 0, 0, 1 - gamma),
diff --git a/vignettes/graphicalMCP.Rmd b/vignettes/graphicalMCP.Rmd
index e031160c..a52d3c47 100644
--- a/vignettes/graphicalMCP.Rmd
+++ b/vignettes/graphicalMCP.Rmd
@@ -71,8 +71,9 @@ Given the set of p-values of all hypotheses, graphical MCPs can be performed usi
 ```{r test-graph-shortcut}
 test_results <- graph_test_shortcut(
   example_graph,
-  p = c(.01, .005, .03, .01),
-  alpha = .025)
+  p = c(0.01, 0.005, 0.03, 0.01),
+  alpha = 0.025
+)
 test_results$outputs$rejected
 ```
 
@@ -81,8 +82,8 @@ A similar testing procedure can be performed using the closure principle. This w
 ```{r test-graph}
 test_results_closed <- graph_test_closure(
   example_graph,
-  p = c(.01, .005, .03, .01),
-  alpha = .025,
+  p = c(0.01, 0.005, 0.03, 0.01),
+  alpha = 0.025,
   test_types = "bonferroni",
   test_groups = list(1:4)
 )
@@ -91,14 +92,14 @@ test_results_closed$outputs$rejected
 
 # Power simulations
 
-With multiplicity adjustment, such as graphical MCPs, the "power" to reject each hypothesis will be affected, compared to its marginal power. The latter is the power to rejected a hypothesis at the significance level `alpha` without multiplicity adjustment. The marginal power is usually obtained from other pieces of statistical software. `graph_calculate_power()` performs power simulations to assess the power after adjusting for the graphical MCP [@bretz-2011-test]. Assume that the marginal power to reject H1-H4 is 90%, 90%, 80%, and 80% and all test statistics are independent of each other. The local power after the multiplicity adjustment is 87.7%, 87.7, 67.2%, and 67.2% respectively for H1-H4. Additional details about power simulations can be found in `vignette("shortcut-testing")` and `vignette("closed-testing")`.
+With multiplicity adjustment, such as graphical MCPs, the "power" to reject each hypothesis will be affected, compared to its marginal power. The latter is the power to rejected a hypothesis at the significance level `alpha` without multiplicity adjustment. The marginal power is usually obtained from other pieces of statistical software. `graph_calculate_power()` performs power simulations to assess the power after adjusting for the graphical MCP [@bretz-2011-test]. Assume that the marginal power to reject H1-H4 is 90%, 90%, 80%, and 80% and all test statistics are independent of each other. The local power after the multiplicity adjustment is 87.7%, 87.7%, 67.2%, and 67.2% respectively for H1-H4. Additional details about power simulations can be found in `vignette("shortcut-testing")` and `vignette("closed-testing")`.
 
 ```{r power}
 set.seed(1234)
 power_results <- graph_calculate_power(
   example_graph,
   sim_n = 1e6,
-  power_marginal = c(.9, .9, .8, .8)
+  power_marginal = c(0.9, 0.9, 0.8, 0.8)
 )
 power_results$power$power_local
 ```
diff --git a/vignettes/shortcut-testing.Rmd b/vignettes/shortcut-testing.Rmd
index 7432f6c4..335e7cf5 100644
--- a/vignettes/shortcut-testing.Rmd
+++ b/vignettes/shortcut-testing.Rmd
@@ -58,7 +58,7 @@ plot(g, vertex.size = 60)
 Given a set of p-values for $H_1, \ldots, H_4$, the graphical multiple comparison procedure can be performed to control the familywise error rate (FWER) at the significance level `alpha`. The `graph_test_shortcut` function is agnostic to one-sided or two-sided tests. For one-sided p-values, `alpha` is often set to 0.025 (default); for two-sided p-values, `alpha` is often set to 0.05. We consider one-sided tests here. A hypothesis is rejected if its adjusted p-value is less than or equal to `alpha`. After running the procedure, hypotheses $H_1$, $H_2$, and $H_4$ are rejected with their adjusted p-value calculated. 
 
 ```{r graph-test}
-p_values <- c(.018, .01, .105, .006)
+p_values <- c(0.018, 0.01, 0.105, 0.006)
 test_results <- graph_test_shortcut(g, p = p_values, alpha = 0.025)
 
 test_results$outputs$adjusted_p # Adjusted p-values
@@ -93,7 +93,7 @@ The order of rejections may not be unique and not all orders are valid. For this
 
 ```{r graph-test-order}
 # Obtain all valid orders of rejections
-orders <- graph_rejection_orderings(test_results)$valid_orderings 
+orders <- graph_rejection_orderings(test_results)$valid_orderings
 orders
 
 # Intermediate graphs following the order of H2 and H4
@@ -130,7 +130,7 @@ sample_size <- rep(200, 3)
 
 unpooled_variance <-
   prop[-1] * (1 - prop[-1]) / sample_size[-1] +
-  prop[1]  * (1 - prop[1] ) / sample_size[1]
+  prop[1] * (1 - prop[1]) / sample_size[1]
 
 noncentrality_parameter_primary <-
   -(prop[-1] - prop[1]) / sqrt(unpooled_variance)
@@ -208,19 +208,19 @@ These are the default outputs from the `graph_calculate_power` function. In addi
 success_fns <- list(
   # Probability to reject H1
   H1 = function(x) x[1],
-  
+
   # Expected number of rejections
   `Expected no. of rejections` = function(x) x[1] + x[2] + x[3] + x[4],
 
   # Probability to reject at least one hypothesis
   `AtLeast1` = function(x) x[1] | x[2] | x[3] | x[4],
-  
+
   # Probability to reject all hypotheses
   `All` = function(x) x[1] & x[2] & x[3] & x[4],
-  
+
   # Probability to reject both H1 and H2
   `H1andH2` = function(x) x[1] & x[2],
-  
+
   # Probability to reject both hypotheses for the low dose or the high dose
   `(H1andH3)or(H2andH4)` = function(x) (x[1] & x[3]) | (x[2] & x[4])
 )
@@ -234,7 +234,7 @@ Given the above inputs, we can estimate "power" via simulation for the graphical
 set.seed(1234)
 power_output <- graph_calculate_power(
   g,
-  alpha = .025,
+  alpha = 0.025,
   sim_corr = corr,
   sim_n = 1e5,
   power_marginal = c(power_marginal_primary, power_marginal_secondary),
@@ -253,7 +253,7 @@ To see the detailed outputs of all simulated p-values and rejection decisions fo
 set.seed(1234)
 power_verbose_output <- graph_calculate_power(
   g,
-  alpha = .025,
+  alpha = 0.025,
   sim_corr = corr,
   sim_n = 1e5,
   power_marginal = c(power_marginal_primary, power_marginal_secondary),

From 44b5f2d38631bec50a634aef9c8f544c53e39ee8 Mon Sep 17 00:00:00 2001
From: Dong Xi <38050865+xidongdxi@users.noreply.github.com>
Date: Tue, 27 Feb 2024 13:32:27 -0500
Subject: [PATCH 2/4] update figure paths

---
 man/adjust_p.Rd                               |  12 ++++-----
 man/adjusted-weights.Rd                       |  12 ++++-----
 man/calc-test_values.Rd                       |  12 ++++-----
 man/example-graphs.Rd                         |  12 ++++-----
 man/graph_calculate_power.Rd                  |  12 ++++-----
 man/graph_create.Rd                           |  12 ++++-----
 man/graph_generate_weights.Rd                 |  12 ++++-----
 man/graph_update.Rd                           |  12 ++++-----
 man/plot.initial_graph.Rd                     |  24 +++++++++---------
 man/testing-fast.Rd                           |  12 ++++-----
 man/testing.Rd                                |  12 ++++-----
 vignettes/generate-closure.Rmd                |   6 ++---
 .../man/figures/README-create-graph-1.png     | Bin 12895 -> 0 bytes
 13 files changed, 75 insertions(+), 75 deletions(-)
 delete mode 100644 vignettes/man/figures/README-create-graph-1.png

diff --git a/man/adjust_p.Rd b/man/adjust_p.Rd
index 2abc98ef..b6cb0646 100644
--- a/man/adjust_p.Rd
+++ b/man/adjust_p.Rd
@@ -48,29 +48,29 @@ graphicalMCP:::adjust_p_parametric(p, w, corr2)
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/adjusted-weights.Rd b/man/adjusted-weights.Rd
index 48ff90fb..bdd95713 100644
--- a/man/adjusted-weights.Rd
+++ b/man/adjusted-weights.Rd
@@ -84,29 +84,29 @@ graphicalMCP:::adjust_weights_simes(gw_0, p, list(4:6))
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/calc-test_values.Rd b/man/calc-test_values.Rd
index eae05563..a5ffdfa2 100644
--- a/man/calc-test_values.Rd
+++ b/man/calc-test_values.Rd
@@ -45,29 +45,29 @@ graphicalMCP:::test_values_simes(p, w, .05)
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/example-graphs.Rd b/man/example-graphs.Rd
index 1c4da935..a7879ff8 100644
--- a/man/example-graphs.Rd
+++ b/man/example-graphs.Rd
@@ -50,29 +50,29 @@ bonferroni_holm(3, hyp_names = paste("dose", letters[1:3]))
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/graph_calculate_power.Rd b/man/graph_calculate_power.Rd
index ce6ec2d0..a00f6808 100644
--- a/man/graph_calculate_power.Rd
+++ b/man/graph_calculate_power.Rd
@@ -122,29 +122,29 @@ graph_calculate_power(
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/graph_create.Rd b/man/graph_create.Rd
index 4377a862..d9a061b8 100644
--- a/man/graph_create.Rd
+++ b/man/graph_create.Rd
@@ -104,29 +104,29 @@ g
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/graph_generate_weights.Rd b/man/graph_generate_weights.Rd
index 0bc639ee..0b019163 100644
--- a/man/graph_generate_weights.Rd
+++ b/man/graph_generate_weights.Rd
@@ -48,29 +48,29 @@ graph_generate_weights(par_gate)
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/graph_update.Rd b/man/graph_update.Rd
index bb0c1b59..f0088cdb 100644
--- a/man/graph_update.Rd
+++ b/man/graph_update.Rd
@@ -53,29 +53,29 @@ graph_update(g, 2:3)
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/plot.initial_graph.Rd b/man/plot.initial_graph.Rd
index d39ed168..11f51937 100644
--- a/man/plot.initial_graph.Rd
+++ b/man/plot.initial_graph.Rd
@@ -97,23 +97,23 @@ hypotheses <- c(0.5, 0.5, 0, 0, 0, 0)
 
 epsilon <- 1e-5
 transitions <- rbind(
-  c(0,       0.5,     0.25,        0,    0.25, 0),
-  c(0.5,     0,       0,           0.25, 0,    0.25),
-  c(0,       0,       0,           0,    1,    0),
-  c(epsilon, 0,       0,           0,    0,    1 - epsilon),
-  c(0,       epsilon, 1 - epsilon, 0,    0,    0),
-  c(0,       0,       0,           1,    0,    0)
+  c(0, 0.5, 0.25, 0, 0.25, 0),
+  c(0.5, 0, 0, 0.25, 0, 0.25),
+  c(0, 0, 0, 0, 1, 0),
+  c(epsilon, 0, 0, 0, 0, 1 - epsilon),
+  c(0, epsilon, 1 - epsilon, 0, 0, 0),
+  c(0, 0, 0, 1, 0, 0)
 )
 
 g <- graph_create(hypotheses, transitions)
 
 plot_layout <- rbind(
-  c(.15, .5),
-  c(.65, .5),
-  c(  0,  0),
-  c( .5,  0),
-  c( .3,  0),
-  c( .8,  0)
+  c(0.15, 0.5),
+  c(0.65, 0.5),
+  c(0, 0),
+  c(0.5, 0),
+  c(0.3, 0),
+  c(0.8, 0)
 )
 
 plot(g, layout = plot_layout, eps = epsilon, edge_curves = c(pairs = .5))
diff --git a/man/testing-fast.Rd b/man/testing-fast.Rd
index fb0fb198..47f178a9 100644
--- a/man/testing-fast.Rd
+++ b/man/testing-fast.Rd
@@ -66,29 +66,29 @@ graphicalMCP:::graph_test_shortcut_fast(
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/testing.Rd b/man/testing.Rd
index d3e1b197..4e55bebb 100644
--- a/man/testing.Rd
+++ b/man/testing.Rd
@@ -111,29 +111,29 @@ graph_test_closure(
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489–1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894–913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041–4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918–931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268–5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/vignettes/generate-closure.Rmd b/vignettes/generate-closure.Rmd
index 9b2854ee..a1a78080 100644
--- a/vignettes/generate-closure.Rmd
+++ b/vignettes/generate-closure.Rmd
@@ -74,7 +74,7 @@ $m$ is the number of hypotheses.
 
 To benchmark against existing approaches to calculating weighting strategies, we compare the following approaches: `gMCP::generateWeights()` [@rohmeyer-2020-gmcp], `lrstat::fwgtmat()` [@lu-2016-graphical], Approach 1 (graphicalMCP simple) and Approach 2 (graphicalMCP parent-child). Random graphs are generated for the numbers of hypotheses of 4, 8, 12, and 16. Computing time (in median log-10 milliseconds) is plotted below. We can see that `gMCP::generateWeights()` is the slowest and `lrstat::fwgtmat()` is the fastest. Approach 2 (graphicalMCP parent-child) is faster than Approach 1 (graphicalMCP simple). Note that `lrstat::fwgtmat()` implements the calculation using C++, which is known to be faster than R. But it is less stable than other approaches, e.g., giving errors more often than others. Given that the computing time of R-based approaches is acceptable, adding Rcpp dependency is not considered in `graphicalMCP`. For these considerations, we implement Approach 2 in `graphicalMCP::graph_generate_weights()`.
 
-![](img/gw-benchmarks-plot.png)
+![](img\gw-benchmarks-plot.png)
 
 ```{r gw-benchmarks-functions, eval=FALSE}
 ggw_simple <- function(graph) {
@@ -348,7 +348,7 @@ The small modification in Step 3b makes this approach much faster than the conve
 
 To benchmark against existing approaches to calculating weighting strategies, we compare the following approaches: `gMCP::calcPower()`, Approach 1 (graphicalMCP conventional), and Approach 2 (graphicalMCP parent-child). Both Holm and fixed sequence procedures are considered with the numbers of hypotheses of 4, 8, 12, and 16. Computing time (in median log-10 seconds) is plotted below. We can see that `gMCP::calcPower()` is the fastest and Approach 1 (graphicalMCP conventional) is the lowest. Note that `gMCP::calcPower()` implements the simulation using C, which is known to be faster than R but is not easy to extend to other situations. Given that the computing time of Approach 2 (graphicalMCP parent-child) is acceptable, we implement it in `graphicalMCP::graph_calculate_power()`.
 
-![](img/power-benchmarks-plot.png)
+![](img\power-benchmarks-plot.png)
 
 # Reference
 
@@ -513,7 +513,7 @@ benchmarks_plot_standard <-
   geom_line(size = 1) +
   # scale_y_continuous(labels = scales::label_comma(suffix = "ms")) +
   scale_color_discrete() +
-  facet_wrap(~Procedure, labeller = label_both)+
+  facet_wrap(~Procedure, labeller = label_both) +
   labs(
     title = "Computing time of power simulations",
     subtitle = "Median runtime in seconds",
diff --git a/vignettes/man/figures/README-create-graph-1.png b/vignettes/man/figures/README-create-graph-1.png
deleted file mode 100644
index c8cd4b33706f77ffd9f850468ccb73786a2e5dad..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12895
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
V%i4N>fM1M2WZub3REin+{|}_&<P!h@


From ba7386fe949ec35b32d7a5ff1319c991259acd0b Mon Sep 17 00:00:00 2001
From: Dong Xi <38050865+xidongdxi@users.noreply.github.com>
Date: Tue, 27 Feb 2024 13:59:34 -0500
Subject: [PATCH 3/4] update tests

---
 man/adjust_p.Rd                             |  12 +-
 man/adjusted-weights.Rd                     |  12 +-
 man/calc-test_values.Rd                     |  12 +-
 man/example-graphs.Rd                       |  12 +-
 man/graph_calculate_power.Rd                |  12 +-
 man/graph_create.Rd                         |  12 +-
 man/graph_generate_weights.Rd               |  12 +-
 man/graph_update.Rd                         |  12 +-
 man/testing-fast.Rd                         |  12 +-
 man/testing.Rd                              |  12 +-
 tests/testthat/_snaps/print.graph_report.md | 126 ++++++++++----------
 11 files changed, 123 insertions(+), 123 deletions(-)

diff --git a/man/adjust_p.Rd b/man/adjust_p.Rd
index b6cb0646..b6135211 100644
--- a/man/adjust_p.Rd
+++ b/man/adjust_p.Rd
@@ -48,29 +48,29 @@ graphicalMCP:::adjust_p_parametric(p, w, corr2)
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/adjusted-weights.Rd b/man/adjusted-weights.Rd
index bdd95713..6c7cb91e 100644
--- a/man/adjusted-weights.Rd
+++ b/man/adjusted-weights.Rd
@@ -84,29 +84,29 @@ graphicalMCP:::adjust_weights_simes(gw_0, p, list(4:6))
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/calc-test_values.Rd b/man/calc-test_values.Rd
index a5ffdfa2..4eff8c1f 100644
--- a/man/calc-test_values.Rd
+++ b/man/calc-test_values.Rd
@@ -45,29 +45,29 @@ graphicalMCP:::test_values_simes(p, w, .05)
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/example-graphs.Rd b/man/example-graphs.Rd
index a7879ff8..e0d430bd 100644
--- a/man/example-graphs.Rd
+++ b/man/example-graphs.Rd
@@ -50,29 +50,29 @@ bonferroni_holm(3, hyp_names = paste("dose", letters[1:3]))
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/graph_calculate_power.Rd b/man/graph_calculate_power.Rd
index a00f6808..72a2e1c9 100644
--- a/man/graph_calculate_power.Rd
+++ b/man/graph_calculate_power.Rd
@@ -122,29 +122,29 @@ graph_calculate_power(
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/graph_create.Rd b/man/graph_create.Rd
index d9a061b8..a0ac062c 100644
--- a/man/graph_create.Rd
+++ b/man/graph_create.Rd
@@ -104,29 +104,29 @@ g
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/graph_generate_weights.Rd b/man/graph_generate_weights.Rd
index 0b019163..f2edc900 100644
--- a/man/graph_generate_weights.Rd
+++ b/man/graph_generate_weights.Rd
@@ -48,29 +48,29 @@ graph_generate_weights(par_gate)
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/graph_update.Rd b/man/graph_update.Rd
index f0088cdb..fce67872 100644
--- a/man/graph_update.Rd
+++ b/man/graph_update.Rd
@@ -53,29 +53,29 @@ graph_update(g, 2:3)
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/testing-fast.Rd b/man/testing-fast.Rd
index 47f178a9..6210c665 100644
--- a/man/testing-fast.Rd
+++ b/man/testing-fast.Rd
@@ -66,29 +66,29 @@ graphicalMCP:::graph_test_shortcut_fast(
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/man/testing.Rd b/man/testing.Rd
index 4e55bebb..10812aa9 100644
--- a/man/testing.Rd
+++ b/man/testing.Rd
@@ -111,29 +111,29 @@ graph_test_closure(
 \references{
 Bretz, F., Maurer, W., Brannath, W., and Posch, M. (2009). A graphical
 approach to sequentially rejective multiple test procedures. Statistics in
-Medicine, 28(4), 586–604. \url{https://doi.org/10.1002/sim.3495}
+Medicine, 28(4), 586-604. \url{https://doi.org/10.1002/sim.3495}
 
 Bretz, F., Maurer, W., and Hommel, G. (2011). Test and power considerations
 for multiple endpoint analyses using sequentially rejective graphical
-procedures. Statistics in Medicine, 30(13), 1489–1501.
+procedures. Statistics in Medicine, 30(13), 1489-1501.
 \url{https://doi.org/10.1002/sim.3988}
 
 Bretz, F., Posch, M., Glimm, E., Klinglmueller, F., Maurer, W., and Rohmeyer,
 K. (2011). Graphical approaches for multiple comparison procedures using
 weighted Bonferroni, Simes, or parametric tests. Biometrical Journal, 53(6),
-894–913. \url{https://doi.org/10.1002/bimj.201000239}
+894-913. \url{https://doi.org/10.1002/bimj.201000239}
 
 Lu, K. (2016). Graphical approaches using a Bonferroni mixture of weighted
-Simes tests. Statistics in Medicine, 35(22), 4041–4055.
+Simes tests. Statistics in Medicine, 35(22), 4041-4055.
 \url{https://doi.org/10.1002/sim.6985}
 
 Xi, D., Glimm, E., Maurer, W., and Bretz, F. (2017). A unified framework for
 weighted parametric multiple test procedures. Biometrical Journal, 59(5),
-918–931. \url{https://doi.org/10.1002/bimj.201600233}
+918-931. \url{https://doi.org/10.1002/bimj.201600233}
 
 Xi, D., and Bretz, F. (2019). Symmetric graphs for equally weighted tests,
 with application to the Hochberg procedure. Statistics in Medicine, 38(27),
-5268–5282. \url{https://doi.org/10.1002/sim.8375}
+5268-5282. \url{https://doi.org/10.1002/sim.8375}
 
 Rohmeyer K, Klinglmueller F (2020). \emph{gMCP: Graph Based Multiple Test
 Procedures}. R package version 0.8-15,
diff --git a/tests/testthat/_snaps/print.graph_report.md b/tests/testthat/_snaps/print.graph_report.md
index d73cee3c..caa4eb8f 100644
--- a/tests/testthat/_snaps/print.graph_report.md
+++ b/tests/testthat/_snaps/print.graph_report.md
@@ -171,17 +171,17 @@
         H4 NA NA NA NA
       
       Detailed test values ($test_values) --------------------------------------------
-        Intersection Hypothesis       Test    p <= Weight * Alpha Inequality_holds
-                1111         H1 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                1111         H2 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                1111         H3 bonferroni 0.01 <=    0.0 * 0.025            FALSE
-                1111         H4 bonferroni 0.01 <=    0.0 * 0.025            FALSE
-                1110         H1 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                1110         H2 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                1110         H3 bonferroni 0.01 <=    0.0 * 0.025            FALSE
-                1101         H1 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                1101         H2 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                1101         H4 bonferroni 0.01 <=    0.0 * 0.025            FALSE
+        Intersection Hypothesis       Test    p <= Weight* Alpha Inequality_holds
+                1111         H1 bonferroni 0.01 <=     0.5 0.025             TRUE
+                1111         H2 bonferroni 0.01 <=     0.5 0.025             TRUE
+                1111         H3 bonferroni 0.01 <=     0.0 0.025            FALSE
+                1111         H4 bonferroni 0.01 <=     0.0 0.025            FALSE
+                1110         H1 bonferroni 0.01 <=     0.5 0.025             TRUE
+                1110         H2 bonferroni 0.01 <=     0.5 0.025             TRUE
+                1110         H3 bonferroni 0.01 <=     0.0 0.025            FALSE
+                1101         H1 bonferroni 0.01 <=     0.5 0.025             TRUE
+                1101         H2 bonferroni 0.01 <=     0.5 0.025             TRUE
+                1101         H4 bonferroni 0.01 <=     0.0 0.025            FALSE
         ... (Use `print(x, rows = <nn>)` for more)
       
 
@@ -330,17 +330,17 @@
         ... (Use `print(x, rows = <nn>)` for more)
       
       Detailed test values ($test_values) --------------------------------------------
-        Intersection Hypothesis       Test    p <= c_value * Weight * Alpha
-                1111         H1 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1111         H2 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1111         H3      simes 0.01 <=              0.0 * 0.025
-                1111         H4      simes 0.01 <=              0.0 * 0.025
-                1110         H1 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1110         H2 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1110         H3      simes 0.01 <=              0.0 * 0.025
-                1101         H1 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1101         H2 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1101         H4      simes 0.01 <=              0.0 * 0.025
+        Intersection Hypothesis       Test    p <= c_value* Weight* Alpha
+                1111         H1 parametric 0.01 <=    1.006    0.5  0.025
+                1111         H2 parametric 0.01 <=    1.006    0.5  0.025
+                1111         H3      simes 0.01 <=             0.0  0.025
+                1111         H4      simes 0.01 <=             0.0  0.025
+                1110         H1 parametric 0.01 <=    1.006    0.5  0.025
+                1110         H2 parametric 0.01 <=    1.006    0.5  0.025
+                1110         H3      simes 0.01 <=             0.0  0.025
+                1101         H1 parametric 0.01 <=    1.006    0.5  0.025
+                1101         H2 parametric 0.01 <=    1.006    0.5  0.025
+                1101         H4      simes 0.01 <=             0.0  0.025
         Inequality_holds
                     TRUE
                     TRUE
@@ -442,17 +442,17 @@
         ... (Use `print(x, rows = <nn>)` for more)
       
       Detailed test values ($test_values) --------------------------------------------
-        Intersection Hypothesis       Test    p <= c_value * Weight * Alpha
-                1111         H1 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1111         H2 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1111         H3 parametric 0.01 <=   1.000 *    0.0 * 0.025
-                1111         H4 parametric 0.01 <=   1.000 *    0.0 * 0.025
-                1110         H1 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1110         H2 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1110         H3 parametric 0.01 <=   1.000 *    0.0 * 0.025
-                1101         H1 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1101         H2 parametric 0.01 <=   1.006 *    0.5 * 0.025
-                1101         H4 parametric 0.01 <=   1.000 *    0.0 * 0.025
+        Intersection Hypothesis       Test    p <= c_value* Weight* Alpha
+                1111         H1 parametric 0.01 <=    1.006     0.5 0.025
+                1111         H2 parametric 0.01 <=    1.006     0.5 0.025
+                1111         H3 parametric 0.01 <=    1.000     0.0 0.025
+                1111         H4 parametric 0.01 <=    1.000     0.0 0.025
+                1110         H1 parametric 0.01 <=    1.006     0.5 0.025
+                1110         H2 parametric 0.01 <=    1.006     0.5 0.025
+                1110         H3 parametric 0.01 <=    1.000     0.0 0.025
+                1101         H1 parametric 0.01 <=    1.006     0.5 0.025
+                1101         H2 parametric 0.01 <=    1.006     0.5 0.025
+                1101         H4 parametric 0.01 <=    1.000     0.0 0.025
         Inequality_holds
                     TRUE
                     TRUE
@@ -895,17 +895,17 @@
           ... (Use `print(x, rows = <nn>)` for more)
       
       Detailed test values ($test_values) --------------------------------------------
-          Intersection Hypothesis       Test    p <= Weight * Alpha Inequality_holds
-                  1111         H1 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                  1111         H2 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                  1111         H3 bonferroni 0.01 <=    0.0 * 0.025            FALSE
-                  1111         H4 bonferroni 0.01 <=    0.0 * 0.025            FALSE
-                  1110         H1 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                  1110         H2 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                  1110         H3 bonferroni 0.01 <=    0.0 * 0.025            FALSE
-                  1101         H1 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                  1101         H2 bonferroni 0.01 <=    0.5 * 0.025             TRUE
-                  1101         H4 bonferroni 0.01 <=    0.0 * 0.025            FALSE
+          Intersection Hypothesis       Test    p <= Weight* Alpha Inequality_holds
+                  1111         H1 bonferroni 0.01 <=     0.5 0.025             TRUE
+                  1111         H2 bonferroni 0.01 <=     0.5 0.025             TRUE
+                  1111         H3 bonferroni 0.01 <=     0.0 0.025            FALSE
+                  1111         H4 bonferroni 0.01 <=     0.0 0.025            FALSE
+                  1110         H1 bonferroni 0.01 <=     0.5 0.025             TRUE
+                  1110         H2 bonferroni 0.01 <=     0.5 0.025             TRUE
+                  1110         H3 bonferroni 0.01 <=     0.0 0.025            FALSE
+                  1101         H1 bonferroni 0.01 <=     0.5 0.025             TRUE
+                  1101         H2 bonferroni 0.01 <=     0.5 0.025             TRUE
+                  1101         H4 bonferroni 0.01 <=     0.0 0.025            FALSE
           ... (Use `print(x, rows = <nn>)` for more)
       
 
@@ -1054,11 +1054,11 @@
                H4 NA NA NA NA
       
       Detailed test values ($test_values) --------------------------------------------
-               Step Hypothesis    p <= Weight * Alpha Inequality_holds
-                  1         H1 0.01 <=    0.5 * 0.025             TRUE
-                  2         H2 0.01 <=    0.5 * 0.025             TRUE
-                  3         H3 0.01 <=    0.5 * 0.025             TRUE
-                  4         H4 0.01 <=    1.0 * 0.025             TRUE
+               Step Hypothesis    p <= Weight* Alpha Inequality_holds
+                  1         H1 0.01 <=     0.5 0.025             TRUE
+                  2         H2 0.01 <=     0.5 0.025             TRUE
+                  3         H3 0.01 <=     0.5 0.025             TRUE
+                  4         H4 0.01 <=     1.0 0.025             TRUE
       
 
 ---
@@ -1247,13 +1247,13 @@
         H6 NA NA NA NA NA NA
       
       Detailed test values ($test_values) --------------------------------------------
-        Step Hypothesis     p <= Weight * Alpha Inequality_holds
-           1         H4 0.010 <=   0.50 * 0.025             TRUE
-           2         H6 0.000 <=   0.25 * 0.025             TRUE
-           3         H5 0.005 <=   0.50 * 0.025             TRUE
-           4         H1 0.025 <=   1.00 * 0.025             TRUE
-           5         H3 0.015 <=   0.50 * 0.025            FALSE
-           5         H2 0.020 <=   0.50 * 0.025            FALSE
+        Step Hypothesis     p <= Weight* Alpha Inequality_holds
+           1         H4 0.010 <=    0.50 0.025             TRUE
+           2         H6 0.000 <=    0.25 0.025             TRUE
+           3         H5 0.005 <=    0.50 0.025             TRUE
+           4         H1 0.025 <=    1.00 0.025             TRUE
+           5         H3 0.015 <=    0.50 0.025            FALSE
+           5         H2 0.020 <=    0.50 0.025            FALSE
       
 
 ---
@@ -1480,13 +1480,13 @@
         H6 NA NA NA NA NA NA
       
       Detailed test values ($test_values) --------------------------------------------
-        Step Hypothesis      p <= Weight * Alpha Inequality_holds
-           1         H4 0.0075 <=   0.50 * 0.025             TRUE
-           2         H6 0.0025 <=   0.25 * 0.025             TRUE
-           3         H5 0.0050 <=   0.50 * 0.025             TRUE
-           4         H1 0.0150 <=   1.00 * 0.025             TRUE
-           5         H3 0.0100 <=   0.50 * 0.025             TRUE
-           6         H2 0.0125 <=   1.00 * 0.025             TRUE
+        Step Hypothesis      p <= Weight* Alpha Inequality_holds
+           1         H4 0.0075 <=    0.50 0.025             TRUE
+           2         H6 0.0025 <=    0.25 0.025             TRUE
+           3         H5 0.0050 <=    0.50 0.025             TRUE
+           4         H1 0.0150 <=    1.00 0.025             TRUE
+           5         H3 0.0100 <=    0.50 0.025             TRUE
+           6         H2 0.0125 <=    1.00 0.025             TRUE
       
       Alternate rejection orderings ($valid_rejection_orderings) ---------------------
       H4 H5 H6 H1 H2 H3 

From c253d8a4acdee48c103c08092bb4aee09bd1c003 Mon Sep 17 00:00:00 2001
From: Dong Xi <38050865+xidongdxi@users.noreply.github.com>
Date: Tue, 27 Feb 2024 15:59:13 -0500
Subject: [PATCH 4/4] update tests and as_igraph

---
 R/as_graph.R                                |  6 +++---
 R/print.graph_report.R                      |  2 +-
 tests/testthat/_snaps/print.graph_report.md | 20 ++++++++++----------
 tests/testthat/test-graph_test_closure.R    |  2 +-
 4 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/R/as_graph.R b/R/as_graph.R
index 9e456381..1dee2423 100644
--- a/R/as_graph.R
+++ b/R/as_graph.R
@@ -45,10 +45,10 @@ as_initial_graph.igraph <- function(graph) {
   hypotheses <- igraph::vertex_attr(graph, "weight")
   names(hypotheses) <- igraph::vertex_attr(graph, "name")
 
-  transitions <- matrix(0, length(graph), length(graph))
-  dimnames(transitions) <- rep(list(igraph::vertex_attr(graph, "name")), 2)
+  transitions <- matrix(0, length(hypotheses), length(hypotheses))
+  dimnames(transitions) <- rep(list(names(hypotheses)), 2)
 
-  for (tail in seq_along(graph)) {
+  for (tail in seq_along(hypotheses)) {
     transitions[tail, ] <- graph[tail]
   }
 
diff --git a/R/print.graph_report.R b/R/print.graph_report.R
index 7acc609c..fd661433 100644
--- a/R/print.graph_report.R
+++ b/R/print.graph_report.R
@@ -200,7 +200,7 @@ print.graph_report <- function(x, ..., precision = 4, indent = 2, rows = 10) {
       }
     )
     if (any(x$inputs$test_types == "parametric")) {
-      crit_res$c_value <- ifelse(
+      crit_res$"c_value*" <- ifelse(
         trimws(crit_res$"c_value*") == "NA",
         "",
         crit_res$"c_value*"
diff --git a/tests/testthat/_snaps/print.graph_report.md b/tests/testthat/_snaps/print.graph_report.md
index caa4eb8f..6dfaa9b4 100644
--- a/tests/testthat/_snaps/print.graph_report.md
+++ b/tests/testthat/_snaps/print.graph_report.md
@@ -331,16 +331,16 @@
       
       Detailed test values ($test_values) --------------------------------------------
         Intersection Hypothesis       Test    p <= c_value* Weight* Alpha
-                1111         H1 parametric 0.01 <=    1.006    0.5  0.025
-                1111         H2 parametric 0.01 <=    1.006    0.5  0.025
-                1111         H3      simes 0.01 <=             0.0  0.025
-                1111         H4      simes 0.01 <=             0.0  0.025
-                1110         H1 parametric 0.01 <=    1.006    0.5  0.025
-                1110         H2 parametric 0.01 <=    1.006    0.5  0.025
-                1110         H3      simes 0.01 <=             0.0  0.025
-                1101         H1 parametric 0.01 <=    1.006    0.5  0.025
-                1101         H2 parametric 0.01 <=    1.006    0.5  0.025
-                1101         H4      simes 0.01 <=             0.0  0.025
+                1111         H1 parametric 0.01 <=    1.006     0.5 0.025
+                1111         H2 parametric 0.01 <=    1.006     0.5 0.025
+                1111         H3      simes 0.01 <=              0.0 0.025
+                1111         H4      simes 0.01 <=              0.0 0.025
+                1110         H1 parametric 0.01 <=    1.006     0.5 0.025
+                1110         H2 parametric 0.01 <=    1.006     0.5 0.025
+                1110         H3      simes 0.01 <=              0.0 0.025
+                1101         H1 parametric 0.01 <=    1.006     0.5 0.025
+                1101         H2 parametric 0.01 <=    1.006     0.5 0.025
+                1101         H4      simes 0.01 <=              0.0 0.025
         Inequality_holds
                     TRUE
                     TRUE
diff --git a/tests/testthat/test-graph_test_closure.R b/tests/testthat/test-graph_test_closure.R
index e1b45f9f..42a3aaa2 100644
--- a/tests/testthat/test-graph_test_closure.R
+++ b/tests/testthat/test-graph_test_closure.R
@@ -351,7 +351,7 @@ test_that("closure internal consistency", {
   if (requireNamespace("dplyr", quietly = TRUE)) {
     df_test_values_inter_reject <- dplyr::mutate(
       dplyr::group_by(
-        tibble::as_tibble(closure_results$test_values$results[-c(7, 9)]),
+        tibble::as_tibble(closure_results$test_values$results),
         Intersection
       ),
       Hypothesis = Hypothesis,