## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----echo = FALSE------------------------------------------------------------- options(crayon.enabled = FALSE, cli.num_colors = 0) ## ----eval = FALSE------------------------------------------------------------- # library(metasnf) # # # First imputed dataset # dl_imp1 <- data_list( # list(subc_v, "subcortical_volume", "neuroimaging", "continuous"), # list(income, "household_income", "demographics", "continuous"), # list(pubertal, "pubertal_status", "demographics", "continuous"), # list(anxiety, "anxiety", "behaviour", "ordinal"), # list(depress, "depressed", "behaviour", "ordinal"), # uid = "unique_id" # ) # # # Second imputed dataset # dl_imp2 <- data_list( # list(subc_v, "subcortical_volume", "neuroimaging", "continuous"), # list(income, "household_income", "demographics", "continuous"), # list(pubertal, "pubertal_status", "demographics", "continuous"), # list(anxiety, "anxiety", "behaviour", "ordinal"), # list(depress, "depressed", "behaviour", "ordinal"), # uid = "unique_id" # ) # # set.seed(42) # sc <- snf_config( # dl = dl_imp1, # n_solutions = 10, # min_k = 20, # max_k = 50 # ) # # # Generation of 20 cluster solutions # sol_df_imp1 <- batch_snf(dl_imp1, sc) # sol_df_imp2 <- batch_snf(dl_imp2, sc) # # nrow(sol_df_imp1) # nrow(sol_df_imp1) # # # Create a stacked solution matrix that stores solutions from both imputations # # Solutions 1:10 are for imputation 1, 11:20 are for imputation 2 # sol_df <- rbind(sol_df_imp1, sol_df_imp2, reset_indices = TRUE) # # sol_df # # # Calculate pairwise similarities across all solutions # # (Including across imputations) # sol_aris <- calc_aris(sol_df) # # meta_cluster_order <- get_matrix_order(sol_aris) # # # Base heatmap for identifying meta clusters # ari_hm <- meta_cluster_heatmap( # sol_aris, # order = meta_cluster_order # ) # # # Identify meta cluster boundaries # shiny_annotator(ari_hm) # # split_vec <- c(7, 13) # # ari_mc_hm <- meta_cluster_heatmap( # sol_aris, # order = meta_cluster_order, # split_vector = split_vec # ) # # # Calculate how features are distributed across solutions # ext_sol_df_imp1 <- extend_solutions( # sol_df, # target_dl = dl_imp1 # ) ## ----eval = FALSE------------------------------------------------------------- # annotation_data <- as.data.frame(ext_sol_df_imp1, keep_attributes = TRUE) # annotation_data$"imputation" <- c(rep("imp_1", 10), rep("imp_2", 10)) # # # Visualize influence of imputation on meta clustering results # annotated_ari_hm <- meta_cluster_heatmap( # sol_aris, # order = meta_cluster_order, # split_vector = split_vec, # data = annotation_data, # top_hm = list( # "Depression p-value" = "cbcl_depress_r_pval", # "Anxiety p-value" = "cbcl_anxiety_r_pval" # ), # left_hm = list( # "Imputation" = "imputation" # ), # annotation_colours = list( # "Depression p-value" = colour_scale( # annotation_data$"cbcl_depress_r_pval", # min_colour = "purple", # max_colour = "black" # ), # "Anxiety p-value" = colour_scale( # annotation_data$"cbcl_anxiety_r_pval", # min_colour = "green", # max_colour = "black" # ), # "Imputation" = c( # "imp_1" = "orange", # "imp_2" = "blue" # ) # ) # )