From e1b40f043d3df2918cf8434638d0ac7314e99978 Mon Sep 17 00:00:00 2001 From: Robert Allaway Date: Thu, 30 Jan 2020 11:08:38 -0800 Subject: [PATCH] Revert "Cibersort & mcpcounter" --- DESCRIPTION | 3 +- NAMESPACE | 2 - R/mod_explore_page.R | 10 ++-- R/mod_immune_signatures.R | 93 ---------------------------------- R/mod_latent_variables.R | 2 - data-raw/immune_predictions.R | 9 ---- data/immune_predictions.rda | Bin 22709 -> 0 bytes man/mod_immune_signatures.Rd | 24 --------- 8 files changed, 5 insertions(+), 138 deletions(-) delete mode 100644 R/mod_immune_signatures.R delete mode 100644 data-raw/immune_predictions.R delete mode 100644 data/immune_predictions.rda delete mode 100644 man/mod_immune_signatures.Rd diff --git a/DESCRIPTION b/DESCRIPTION index eca70dc..8cad06e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -22,8 +22,7 @@ Imports: readr, shinycssloaders, wrapr, - forcats, - ggridges + forcats RoxygenNote: 7.0.2 Suggests: testthat (>= 2.1.0), diff --git a/NAMESPACE b/NAMESPACE index 97ef5df..a771613 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -11,8 +11,6 @@ export(mod_explore_page_server) export(mod_explore_page_ui) export(mod_gene_variant_server) export(mod_gene_variant_ui) -export(mod_immune_signatures_server) -export(mod_immune_signatures_ui) export(mod_latent_variables_server) export(mod_latent_variables_ui) export(mod_resources_page_server) diff --git a/R/mod_explore_page.R b/R/mod_explore_page.R index 97eb66f..a86de82 100644 --- a/R/mod_explore_page.R +++ b/R/mod_explore_page.R @@ -18,7 +18,7 @@ mod_explore_page_ui <- function(id){ tagList( dashboardPage( dashboardHeader(disable = T), - dashboardSidebar(sidebarMenu( + dashboardSidebar( id = "explorertabs", menuItem("Explore Home", tabName = "dashboard", @@ -27,7 +27,7 @@ mod_explore_page_ui <- function(id){ menuItem("Analysis Modules", icon = icon("chart-area"), startExpanded = TRUE, menuSubItem( - "Immune Cell Deconvolution", + "Immune Infiltration", tabName = "immune_infiltration", icon = icon("cog") ), @@ -39,7 +39,7 @@ mod_explore_page_ui <- function(id){ menuSubItem( "Latent Variables", tabName = "latent_variables", - icon = icon("cog"))))), + icon = icon("cog")))), dashboardBody( tagList( tabItems( @@ -47,8 +47,7 @@ mod_explore_page_ui <- function(id){ tabName = "dashboard" ), tabItem( - tabName = 'immune_infiltration', - mod_immune_signatures_ui(ns("immune_signatures_ui_1")) + tabName = 'immune_infiltration' ), tabItem( tabName = "gene_var", @@ -75,7 +74,6 @@ mod_explore_page_server <- function(input, output, session, specimens){ callModule(mod_gene_variant_server, "gene_variant_ui", specimens) callModule(mod_latent_variables_server, "latent_variables_ui_1", specimens) - callModule(mod_immune_signatures_server, "immune_signatures_ui_1", specimens) } ## To be copied in the UI diff --git a/R/mod_immune_signatures.R b/R/mod_immune_signatures.R deleted file mode 100644 index c794d9b..0000000 --- a/R/mod_immune_signatures.R +++ /dev/null @@ -1,93 +0,0 @@ -# Module UI - -#' @title mod_immune_signatures_ui and mod_immune_signatures_server -#' @description A shiny Module. -#' -#' @param id shiny id -#' @param input internal -#' @param output internal -#' @param session internal -#' -#' @rdname mod_immune_signatures -#' -#' @keywords internal -#' @export -#' @importFrom shiny NS tagList -mod_immune_signatures_ui <- function(id){ - ns <- NS(id) - - tagList( - h2("Immune Cell Deconvolution"), - box(h4('Module Summary'), - p('This immune cell deconvolution module can be used to estimate the presence of different types of immune cells from RNA-Seq tumor data. Two algorithms, ', - a(href='https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5895181/', 'CIBERSORT', .noWS = "outside"), ' and ', - a(href='https://genomebiology.biomedcentral.com/articles/10.1186/s13059-016-1070-5', 'MCPcounter', .noWS = "outside"), - ', were used to estimate immune cell abundance in NF tumor samples. A rightward shift of the peak indicates that the group of samples is predicted to have more of a given cell type. Please note that cell lines and non-human models are not available; only patient samples and PDX models of human tumors are available for analysis.', - .noWS = c("after-begin", "before-end")), - width = 12), - box(title = "CIBERSORT", - status = "primary", solidHeader = TRUE, - width = 12, - collapsible = FALSE, - plotOutput(ns('cibersort_ridgeplot')) - # %>% shinycssloaders::withSpinner(custom.css=T) ##throws an error that looks to be css related - ), - box(title = "MCPcounter", - status = "primary", solidHeader = TRUE, - width = 12, - collapsible = FALSE, - plotOutput(ns('mcpcounter_ridgeplot') - # %>% shinycssloaders::withSpinner(custom.css=T) ##throws an error that looks to be css related - )) - ) - -} - -# Module Server - -#' @rdname mod_immune_signatures -#' @export -#' @keywords internal - -mod_immune_signatures_server <- function(input, output, session, specimens){ - ns <- session$ns - - output$cibersort_ridgeplot <- renderPlot({ - - foo <- kairos::immune_predictions %>% - dplyr::filter(specimenID %in% specimens() & - method == 'cibersort') - ggplot(foo) + - ggridges::geom_density_ridges(aes(x = score, y=cell_type, fill = cell_type)) + - facet_grid(cols = vars(tumorType)) + - theme_minimal() + - theme(legend.position = 'none', - text = element_text(size = 12)) + - labs(x = 'Cell Type', y = "Density") - - }) - - output$mcpcounter_ridgeplot <- renderPlot({ - - foo <- kairos::immune_predictions %>% - dplyr::filter(specimenID %in% specimens() & - method == 'mcp_counter') - - ggplot(foo) + - ggridges::geom_density_ridges(aes(x = score, y=cell_type, fill = cell_type)) + - facet_grid(cols = vars(tumorType)) + - theme_minimal() + - theme(legend.position = 'none', - text = element_text(size = 12)) + - labs(x = 'Cell Type', y = "Density") - - }) - -} - -## To be copied in the UI -# mod_immune_signatures_ui("immune_signatures_ui_1") - -## To be copied in the server -# callModule(mod_immune_signatures_server, "immune_signatures_ui_1") - diff --git a/R/mod_latent_variables.R b/R/mod_latent_variables.R index f0fb41d..4e3107e 100644 --- a/R/mod_latent_variables.R +++ b/R/mod_latent_variables.R @@ -51,8 +51,6 @@ mod_latent_variables_server <- function(input, output, session, specimens){ dplyr::summarize(sdev = sd(value)) %>% dplyr::top_n(10, sdev) - validate(need(nrow(foo)>0, "No latent variable data found. Please modify your cohort.")) - foo2 <- dplyr::filter(kairos::latent_var, latent_var %in% foo$latent_var) %>% dplyr::mutate(latent_var = stringr::str_trunc(latent_var, 15)) %>% diff --git a/data-raw/immune_predictions.R b/data-raw/immune_predictions.R deleted file mode 100644 index f7cafc2..0000000 --- a/data-raw/immune_predictions.R +++ /dev/null @@ -1,9 +0,0 @@ -## code to prepare `immune_predictions` dataset goes here -library(synapser) -library(dplyr) -synLogin() -immune_predictions <- synTableQuery("SELECT * FROM syn21177277")$filepath %>% - readr::read_csv() %>% - select(method, cell_type, score, specimenID, tumorType, sex, diagnosis) - -usethis::use_data(immune_predictions) diff --git a/data/immune_predictions.rda b/data/immune_predictions.rda deleted file mode 100644 index ae893c2f640ec0f0b7c7b088b50048a8b0e8e308..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22709 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