From 0a3f30c294b4da0c6e5792f4c0d37a9ee7bb0db1 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Mon, 23 Sep 2024 19:46:21 +0200 Subject: [PATCH 01/23] Version bump --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 1237f01b..4d144379 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: einprot Type: Package Title: A collection of proteomics analysis utilities and workflows -Version: 0.9.5 +Version: 0.9.6 Authors@R: c( person("Charlotte", "Soneson", email = "charlotte.soneson@fmi.ch", role = c("aut", "cre"), comment = c(ORCID = "0000-0003-3833-2169")), From d8443e5163cf558a0fbf5428b38b993153e07390 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Mon, 23 Sep 2024 19:56:38 +0200 Subject: [PATCH 02/23] Sort test results by test statistic instead of p-value --- R/runTests.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/runTests.R b/R/runTests.R index 34ebecc5..8b5784ec 100644 --- a/R/runTests.R +++ b/R/runTests.R @@ -721,7 +721,7 @@ runTest <- function(sce, comparisons, groupComposition = NULL, testType, if (!is.null(baseFileName)) { write.table(res %>% dplyr::filter(.data$showInVolcano) %>% - dplyr::arrange(.data$P.Value), + dplyr::arrange(dplyr::desc(.data[[camerastat]])), file = paste0(baseFileName, "_testres_", comparisonName, ".txt"), row.names = FALSE, col.names = TRUE, From 53ea30bfe6cde394b982f61846d3d0fd3bee13f1 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Fri, 4 Oct 2024 13:20:48 +0200 Subject: [PATCH 03/23] Allow ComplexHeatmap::Heatmap arguments to be passed on by plotMissingValuesHeatmap --- NEWS.md | 5 ++++ R/plotMissingValues.R | 36 +++++++++++++++++++------ man/plotMissingValuesHeatmap.Rd | 10 ++++++- tests/testthat/test-plotMissingValues.R | 29 +++++++++++++++----- 4 files changed, 65 insertions(+), 15 deletions(-) diff --git a/NEWS.md b/NEWS.md index 0dc90624..1ec5af31 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,8 @@ +# einprot 0.9.6 + +* Sort output tables from differential abundance analysis by t-statistics instead of p-value +* Allow ComplexHeatmap::Heatmap arguments to be passed on by plotMissingValuesHeatmap + # einprot 0.9.5 * Add filtering by score and number of peptides to Spectronaut workflow diff --git a/R/plotMissingValues.R b/R/plotMissingValues.R index ba63f499..fe773723 100644 --- a/R/plotMissingValues.R +++ b/R/plotMissingValues.R @@ -8,6 +8,12 @@ #' logical assay of \code{sce} representing the missingness pattern. #' \code{"FALSE"} entries should represent observed values, while #' \code{"TRUE"} entries represent missing values. +#' @param settings Character scalar or \code{NULL}. Setting this to +#' \code{"clustered"} creates a heatmap with rows and columns +#' clustered (used in the \code{einprot} report). +#' Setting it to \code{NULL} allows any argument to be passed to +#' \code{ComplexHeatmap::Heatmap} via the \code{...} argument. +#' @param ... Additional arguments passed to \code{ComplexHeatmap::Heatmap}. #' #' @export #' @author Charlotte Soneson @@ -29,21 +35,35 @@ #' @importFrom ComplexHeatmap Heatmap #' @importFrom SummarizedExperiment assay assayNames #' -plotMissingValuesHeatmap <- function(sce, assayMissing) { +plotMissingValuesHeatmap <- function(sce, assayMissing, settings = "clustered", + ...) { .assertVector(x = sce, type = "SummarizedExperiment") .assertScalar(x = assayMissing, type = "character", validValues = SummarizedExperiment::assayNames(sce)) if (any(is.na(SummarizedExperiment::assay(sce, assayMissing)))) { stop("Assay contains missing values") } + .assertScalar(x = settings, type = "character", validValues = "clustered", + allowNULL = TRUE) - col_fun <- circlize::colorRamp2(c(0, 1), c("grey50", "white")) - ComplexHeatmap::Heatmap( - SummarizedExperiment::assay(sce, assayMissing) + 0, - col = col_fun, name = "imputed", - column_title = "Missing value pattern (white = missing)", - cluster_rows = TRUE, cluster_columns = TRUE, show_row_names = FALSE, - show_heatmap_legend = FALSE) + if (!is.null(settings) && settings == "clustered") { + col_fun <- circlize::colorRamp2(c(0, 1), c("grey50", "white")) + ComplexHeatmap::Heatmap( + SummarizedExperiment::assay(sce, assayMissing) + 0, + col = col_fun, name = "imputed", + column_title = "Missing value pattern (white = missing)", + cluster_rows = TRUE, cluster_columns = TRUE, show_row_names = FALSE, + show_heatmap_legend = FALSE) + } else if (is.null(settings)) { + ComplexHeatmap::Heatmap( + SummarizedExperiment::assay(sce, assayMissing) + 0, ... + ) + } else { + ## Should never end up here as the parameter is checked above + #nocov start + stop("Unknown value of the settings parameter") + #nocov end + } } #' Plot detection rate per sample diff --git a/man/plotMissingValuesHeatmap.Rd b/man/plotMissingValuesHeatmap.Rd index 7319d671..82e8265f 100644 --- a/man/plotMissingValuesHeatmap.Rd +++ b/man/plotMissingValuesHeatmap.Rd @@ -4,7 +4,7 @@ \alias{plotMissingValuesHeatmap} \title{Plot heatmap of missing values} \usage{ -plotMissingValuesHeatmap(sce, assayMissing) +plotMissingValuesHeatmap(sce, assayMissing, settings = "clustered", ...) } \arguments{ \item{sce}{A \code{SummarizedExperiment} object.} @@ -13,6 +13,14 @@ plotMissingValuesHeatmap(sce, assayMissing) logical assay of \code{sce} representing the missingness pattern. \code{"FALSE"} entries should represent observed values, while \code{"TRUE"} entries represent missing values.} + +\item{settings}{Character scalar or \code{NULL}. Setting this to +\code{"clustered"} creates a heatmap with rows and columns +clustered (used in the \code{einprot} report). +Setting it to \code{NULL} allows any argument to be passed to +\code{ComplexHeatmap::Heatmap} via the \code{...} argument.} + +\item{...}{Additional arguments passed to \code{ComplexHeatmap::Heatmap}.} } \value{ A \code{ComplexHeatmap} object. diff --git a/tests/testthat/test-plotMissingValues.R b/tests/testthat/test-plotMissingValues.R index 0e6b3eb9..f91954ee 100644 --- a/tests/testthat/test-plotMissingValues.R +++ b/tests/testthat/test-plotMissingValues.R @@ -4,23 +4,40 @@ test_that("missing value plots work", { ## plotMissingValuesHeatmap ## ------------------------------------------------------------------------- expect_error(plotMissingValuesHeatmap( - sce = 1, assayMissing = "imputed_iBAQ"), + sce = 1, assayMissing = "imputed_iBAQ", settings = "clustered"), "'sce' must be of class 'SummarizedExperiment'") expect_error(plotMissingValuesHeatmap( - sce = sce_mq_preimputation, assayMissing = 1), + sce = sce_mq_preimputation, assayMissing = 1, settings = "clustered"), "'assayMissing' must be of class 'character'") expect_error(plotMissingValuesHeatmap( - sce = sce_mq_preimputation, assayMissing = c("log2_iBAQ", "imputed_iBAQ")), + sce = sce_mq_preimputation, assayMissing = c("log2_iBAQ", "imputed_iBAQ"), + settings = "clustered"), "'assayMissing' must have length 1") expect_error(plotMissingValuesHeatmap( - sce = sce_mq_preimputation, assayMissing = "missing"), + sce = sce_mq_preimputation, assayMissing = "missing", + settings = "clustered"), "All values in 'assayMissing' must be one of") expect_error(plotMissingValuesHeatmap( - sce = sce_mq_preimputation, assayMissing = "log2_iBAQ_withNA"), + sce = sce_mq_preimputation, assayMissing = "log2_iBAQ_withNA", + settings = "clustered"), "Assay contains missing values") + expect_error(plotMissingValuesHeatmap( + sce = sce_mq_preimputation, assayMissing = "imputed_iBAQ", + settings = 1), + "'settings' must be of class 'character'") + expect_error(plotMissingValuesHeatmap( + sce = sce_mq_preimputation, assayMissing = "imputed_iBAQ", + settings = c("clustered", "clustered")), + "'settings' must have length 1") out <- plotMissingValuesHeatmap(sce = sce_mq_preimputation, - assayMissing = "imputed_iBAQ") + assayMissing = "imputed_iBAQ", + settings = "clustered") + expect_s4_class(out, "Heatmap") + out <- plotMissingValuesHeatmap(sce = sce_mq_preimputation, + assayMissing = "imputed_iBAQ", + settings = NULL, + cluster_rows = FALSE) expect_s4_class(out, "Heatmap") ## ------------------------------------------------------------------------- From 7a55f9dba3cfca42e4b31aaa8c247aabfd3aa6e2 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Fri, 4 Oct 2024 13:51:41 +0200 Subject: [PATCH 04/23] Add option to limit plotMissingValuesHeatmap to rows with at least one missing value --- NEWS.md | 1 + R/plotMissingValues.R | 22 ++++++--- man/plotMissingValuesHeatmap.Rd | 15 ++++-- tests/testthat/test-plotMissingValues.R | 62 +++++++++++++++++++++---- 4 files changed, 83 insertions(+), 17 deletions(-) diff --git a/NEWS.md b/NEWS.md index 1ec5af31..6c2ffde7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,6 +2,7 @@ * Sort output tables from differential abundance analysis by t-statistics instead of p-value * Allow ComplexHeatmap::Heatmap arguments to be passed on by plotMissingValuesHeatmap +* Add option to limit plotMissingValuesHeatmap to rows with at least one missing value # einprot 0.9.5 diff --git a/R/plotMissingValues.R b/R/plotMissingValues.R index fe773723..12a295fe 100644 --- a/R/plotMissingValues.R +++ b/R/plotMissingValues.R @@ -6,8 +6,10 @@ #' @param sce A \code{SummarizedExperiment} object. #' @param assayMissing Character scalar indicating the name of a #' logical assay of \code{sce} representing the missingness pattern. -#' \code{"FALSE"} entries should represent observed values, while -#' \code{"TRUE"} entries represent missing values. +#' \code{FALSE} entries should represent observed values, while +#' \code{TRUE} entries represent missing values. +#' @param onlyRowsWithMissing Logical scalar indicating whether to only +#' include rows with at least one missing (\code{TRUE}) value. #' @param settings Character scalar or \code{NULL}. Setting this to #' \code{"clustered"} creates a heatmap with rows and columns #' clustered (used in the \code{einprot} report). @@ -35,28 +37,36 @@ #' @importFrom ComplexHeatmap Heatmap #' @importFrom SummarizedExperiment assay assayNames #' -plotMissingValuesHeatmap <- function(sce, assayMissing, settings = "clustered", - ...) { +plotMissingValuesHeatmap <- function(sce, assayMissing, + onlyRowsWithMissing = FALSE, + settings = "clustered", ...) { .assertVector(x = sce, type = "SummarizedExperiment") .assertScalar(x = assayMissing, type = "character", validValues = SummarizedExperiment::assayNames(sce)) if (any(is.na(SummarizedExperiment::assay(sce, assayMissing)))) { stop("Assay contains missing values") } + .assertScalar(x = onlyRowsWithMissing, type = "logical") .assertScalar(x = settings, type = "character", validValues = "clustered", allowNULL = TRUE) + ## rows to plot + if (onlyRowsWithMissing) { + idx <- which(rowSums(SummarizedExperiment::assay(sce, assayMissing)) > 0) + } else { + idx <- seq(nrow(sce)) + } if (!is.null(settings) && settings == "clustered") { col_fun <- circlize::colorRamp2(c(0, 1), c("grey50", "white")) ComplexHeatmap::Heatmap( - SummarizedExperiment::assay(sce, assayMissing) + 0, + SummarizedExperiment::assay(sce, assayMissing)[idx, ] + 0, col = col_fun, name = "imputed", column_title = "Missing value pattern (white = missing)", cluster_rows = TRUE, cluster_columns = TRUE, show_row_names = FALSE, show_heatmap_legend = FALSE) } else if (is.null(settings)) { ComplexHeatmap::Heatmap( - SummarizedExperiment::assay(sce, assayMissing) + 0, ... + SummarizedExperiment::assay(sce, assayMissing)[idx, ] + 0, ... ) } else { ## Should never end up here as the parameter is checked above diff --git a/man/plotMissingValuesHeatmap.Rd b/man/plotMissingValuesHeatmap.Rd index 82e8265f..ac17fc81 100644 --- a/man/plotMissingValuesHeatmap.Rd +++ b/man/plotMissingValuesHeatmap.Rd @@ -4,15 +4,24 @@ \alias{plotMissingValuesHeatmap} \title{Plot heatmap of missing values} \usage{ -plotMissingValuesHeatmap(sce, assayMissing, settings = "clustered", ...) +plotMissingValuesHeatmap( + sce, + assayMissing, + onlyRowsWithMissing = FALSE, + settings = "clustered", + ... +) } \arguments{ \item{sce}{A \code{SummarizedExperiment} object.} \item{assayMissing}{Character scalar indicating the name of a logical assay of \code{sce} representing the missingness pattern. -\code{"FALSE"} entries should represent observed values, while -\code{"TRUE"} entries represent missing values.} +\code{FALSE} entries should represent observed values, while +\code{TRUE} entries represent missing values.} + +\item{onlyRowsWithMissing}{Logical scalar indicating whether to only +include rows with at least one missing (\code{TRUE}) value.} \item{settings}{Character scalar or \code{NULL}. Setting this to \code{"clustered"} creates a heatmap with rows and columns diff --git a/tests/testthat/test-plotMissingValues.R b/tests/testthat/test-plotMissingValues.R index f91954ee..9692e7ee 100644 --- a/tests/testthat/test-plotMissingValues.R +++ b/tests/testthat/test-plotMissingValues.R @@ -4,41 +4,87 @@ test_that("missing value plots work", { ## plotMissingValuesHeatmap ## ------------------------------------------------------------------------- expect_error(plotMissingValuesHeatmap( - sce = 1, assayMissing = "imputed_iBAQ", settings = "clustered"), + sce = 1, assayMissing = "imputed_iBAQ", onlyRowsWithMissing = FALSE, + settings = "clustered"), "'sce' must be of class 'SummarizedExperiment'") expect_error(plotMissingValuesHeatmap( - sce = sce_mq_preimputation, assayMissing = 1, settings = "clustered"), + sce = sce_mq_preimputation, assayMissing = 1, + onlyRowsWithMissing = FALSE, settings = "clustered"), "'assayMissing' must be of class 'character'") expect_error(plotMissingValuesHeatmap( sce = sce_mq_preimputation, assayMissing = c("log2_iBAQ", "imputed_iBAQ"), - settings = "clustered"), + onlyRowsWithMissing = FALSE, settings = "clustered"), "'assayMissing' must have length 1") expect_error(plotMissingValuesHeatmap( sce = sce_mq_preimputation, assayMissing = "missing", - settings = "clustered"), + onlyRowsWithMissing = FALSE, settings = "clustered"), "All values in 'assayMissing' must be one of") expect_error(plotMissingValuesHeatmap( sce = sce_mq_preimputation, assayMissing = "log2_iBAQ_withNA", - settings = "clustered"), + onlyRowsWithMissing = FALSE, settings = "clustered"), "Assay contains missing values") expect_error(plotMissingValuesHeatmap( sce = sce_mq_preimputation, assayMissing = "imputed_iBAQ", - settings = 1), + onlyRowsWithMissing = "FALSE", settings = "clustered"), + "'onlyRowsWithMissing' must be of class 'logical'") + expect_error(plotMissingValuesHeatmap( + sce = sce_mq_preimputation, assayMissing = "imputed_iBAQ", + onlyRowsWithMissing = c(TRUE, FALSE), settings = "clustered"), + "'onlyRowsWithMissing' must have length 1") + expect_error(plotMissingValuesHeatmap( + sce = sce_mq_preimputation, assayMissing = "imputed_iBAQ", + onlyRowsWithMissing = FALSE, settings = 1), "'settings' must be of class 'character'") expect_error(plotMissingValuesHeatmap( sce = sce_mq_preimputation, assayMissing = "imputed_iBAQ", - settings = c("clustered", "clustered")), + onlyRowsWithMissing = FALSE, settings = c("clustered", "clustered")), "'settings' must have length 1") out <- plotMissingValuesHeatmap(sce = sce_mq_preimputation, assayMissing = "imputed_iBAQ", + onlyRowsWithMissing = FALSE, settings = "clustered") expect_s4_class(out, "Heatmap") + expect_length(out@column_names_param$labels, 9L) + expect_true(out@column_names_param$show) + expect_length(out@row_names_param$labels, 150L) + expect_equal(out@column_title, "Missing value pattern (white = missing)") + expect_equal(out@name, "imputed") + out <- plotMissingValuesHeatmap(sce = sce_mq_preimputation, assayMissing = "imputed_iBAQ", + onlyRowsWithMissing = FALSE, settings = NULL, - cluster_rows = FALSE) + cluster_rows = FALSE, show_column_names = FALSE) + expect_s4_class(out, "Heatmap") + expect_length(out@column_names_param$labels, 9L) + expect_false(out@column_names_param$show) + expect_length(out@row_names_param$labels, 150L) + expect_equal(out@column_title, character(0)) + expect_equal(substr(out@name, 1, 7), "matrix_") + + out <- plotMissingValuesHeatmap(sce = sce_mq_preimputation, + assayMissing = "imputed_iBAQ", + onlyRowsWithMissing = TRUE, + settings = "clustered") + expect_s4_class(out, "Heatmap") + expect_length(out@column_names_param$labels, 9L) + expect_true(out@column_names_param$show) + expect_length(out@row_names_param$labels, 103L) + expect_equal(out@column_title, "Missing value pattern (white = missing)") + expect_equal(out@name, "imputed") + + kp <- which(rowSums(assay(sce_mq_preimputation, "imputed_iBAQ")) == 0) + out <- plotMissingValuesHeatmap(sce = sce_mq_preimputation[kp, ], + assayMissing = "imputed_iBAQ", + onlyRowsWithMissing = TRUE, + settings = "clustered") expect_s4_class(out, "Heatmap") + expect_length(out@column_names_param$labels, 9L) + expect_true(out@column_names_param$show) + expect_length(out@row_names_param$labels, 0L) + expect_equal(out@column_title, "Missing value pattern (white = missing)") + expect_equal(out@name, "imputed") ## ------------------------------------------------------------------------- ## plotFractionDetectedPerSample From cb22206567a54a1097df848edab1b775051f2be2 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Fri, 4 Oct 2024 14:13:48 +0200 Subject: [PATCH 05/23] Add option to make imputation plots as density plots instead of histograms --- NEWS.md | 1 + R/plotImputation.R | 35 +++++++++++++++++----- man/plotImputationDistribution.Rd | 11 ++++++- tests/testthat/test-plotImputation.R | 45 +++++++++++++++++++++------- 4 files changed, 72 insertions(+), 20 deletions(-) diff --git a/NEWS.md b/NEWS.md index 6c2ffde7..da50d14f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,7 @@ * Sort output tables from differential abundance analysis by t-statistics instead of p-value * Allow ComplexHeatmap::Heatmap arguments to be passed on by plotMissingValuesHeatmap * Add option to limit plotMissingValuesHeatmap to rows with at least one missing value +* Add option to make imputation plots as density plots instead of histograms # einprot 0.9.5 diff --git a/R/plotImputation.R b/R/plotImputation.R index fd076e7e..b2411e69 100644 --- a/R/plotImputation.R +++ b/R/plotImputation.R @@ -9,6 +9,8 @@ #' @param assayImputation Character scalar indicating the name of a #' logical assay of \code{sce} to use for filling the distribution plots. #' @param xlab Character scalar providing the x-axis label for the plot. +#' @param plotType Character scalar indicating the type of plot to make +#' (either "histogram" or "density"). #' #' @export #' @author Charlotte Soneson @@ -30,13 +32,15 @@ #' @importFrom rlang .data #' plotImputationDistribution <- function(sce, assayToPlot, assayImputation, - xlab = "") { + xlab = "", plotType = "histogram") { .assertVector(x = sce, type = "SummarizedExperiment") .assertScalar(x = assayToPlot, type = "character", validValues = SummarizedExperiment::assayNames(sce)) .assertScalar(x = assayImputation, type = "character", validValues = SummarizedExperiment::assayNames(sce)) .assertScalar(x = xlab, type = "character") + .assertScalar(x = plotType, type = "character", + validValues = c("histogram", "density")) plotdf <- as.data.frame( SummarizedExperiment::assay(sce, assayToPlot)) %>% @@ -49,11 +53,26 @@ plotImputationDistribution <- function(sce, assayToPlot, assayImputation, tidyr::gather(key = "sample", value = "imputed", -"pid"), by = c("pid", "sample") ) - ggplot2::ggplot(plotdf, ggplot2::aes(x = .data$log2intensity, - fill = .data$imputed)) + - ggplot2::geom_histogram(bins = 50) + - ggplot2::facet_wrap(~ sample) + - ggplot2::theme_bw() + ggplot2::labs(x = xlab) + - ggplot2::scale_fill_manual(values = c(`TRUE` = "grey", - `FALSE` = "firebrick1")) + if (plotType == "histogram") { + ggplot2::ggplot(plotdf, ggplot2::aes(x = .data$log2intensity, + fill = .data$imputed)) + + ggplot2::geom_histogram(bins = 50) + + ggplot2::facet_wrap(~ sample) + + ggplot2::theme_bw() + ggplot2::labs(x = xlab) + + ggplot2::scale_fill_manual(values = c(`TRUE` = "grey", + `FALSE` = "firebrick1")) + } else if (plotType == "density") { + ggplot2::ggplot(plotdf, ggplot2::aes(x = .data$log2intensity, + color = .data$imputed)) + + ggplot2::geom_density(linewidth = 1.5) + + ggplot2::facet_wrap(~ sample) + + ggplot2::theme_bw() + ggplot2::labs(x = xlab) + + ggplot2::scale_color_manual(values = c(`TRUE` = "grey", + `FALSE` = "firebrick1")) + } else { + ## Should never end up here as the parameter is checked above + #nocov start + stop("Unknown value of the plotType parameter") + #nocov end + } } diff --git a/man/plotImputationDistribution.Rd b/man/plotImputationDistribution.Rd index 6b917123..4165a8a4 100644 --- a/man/plotImputationDistribution.Rd +++ b/man/plotImputationDistribution.Rd @@ -4,7 +4,13 @@ \alias{plotImputationDistribution} \title{Plot distribution of imputed and unimputed values} \usage{ -plotImputationDistribution(sce, assayToPlot, assayImputation, xlab = "") +plotImputationDistribution( + sce, + assayToPlot, + assayImputation, + xlab = "", + plotType = "histogram" +) } \arguments{ \item{sce}{A \code{SummarizedExperiment} object (or a derivative).} @@ -16,6 +22,9 @@ assay of \code{sce} to use for plotting.} logical assay of \code{sce} to use for filling the distribution plots.} \item{xlab}{Character scalar providing the x-axis label for the plot.} + +\item{plotType}{Character scalar indicating the type of plot to make +(either "histogram" or "density").} } \value{ A ggplot object. diff --git a/tests/testthat/test-plotImputation.R b/tests/testthat/test-plotImputation.R index 5b957bc3..3e9afa73 100644 --- a/tests/testthat/test-plotImputation.R +++ b/tests/testthat/test-plotImputation.R @@ -5,46 +5,69 @@ test_that("plotting of imputation results works", { ## ------------------------------------------------------------------------- expect_error(plotImputationDistribution( sce = 1, assayToPlot = "log2_iBAQ", assayImputation = "imputed_iBAQ", - xlab = "log2 intensity"), + xlab = "log2 intensity", plotType = "histogram"), "'sce' must be of class 'SummarizedExperiment'") expect_error(plotImputationDistribution( sce = sce_mq_final, assayToPlot = 1, assayImputation = "imputed_iBAQ", - xlab = "log2 intensity"), + xlab = "log2 intensity", plotType = "histogram"), "'assayToPlot' must be of class 'character'") expect_error(plotImputationDistribution( sce = sce_mq_final, assayToPlot = c("log2_iBAQ", "imputed_iBAQ"), assayImputation = "imputed_iBAQ", - xlab = "log2 intensity"), + xlab = "log2 intensity", plotType = "histogram"), "'assayToPlot' must have length 1") expect_error(plotImputationDistribution( sce = sce_mq_final, assayToPlot = "missing", assayImputation = "imputed_iBAQ", - xlab = "log2 intensity"), + xlab = "log2 intensity", plotType = "histogram"), "All values in 'assayToPlot' must be one of") expect_error(plotImputationDistribution( sce = sce_mq_final, assayToPlot = "log2_iBAQ", assayImputation = 1, - xlab = "log2 intensity"), + xlab = "log2 intensity", plotType = "histogram"), "'assayImputation' must be of class 'character'") expect_error(plotImputationDistribution( sce = sce_mq_final, assayToPlot = "log2_iBAQ", assayImputation = c("log2_iBAQ", "imputed_iBAQ"), - xlab = "log2 intensity"), + xlab = "log2 intensity", plotType = "histogram"), "'assayImputation' must have length 1") expect_error(plotImputationDistribution( sce = sce_mq_final, assayToPlot = "log2_iBAQ", assayImputation = "missing", - xlab = "log2 intensity"), + xlab = "log2 intensity", plotType = "histogram"), "All values in 'assayImputation' must be one of") expect_error(plotImputationDistribution( sce = sce_mq_final, assayToPlot = "log2_iBAQ", assayImputation = "imputed_iBAQ", - xlab = 1), + xlab = 1, plotType = "histogram"), "'xlab' must be of class 'character'") expect_error(plotImputationDistribution( sce = sce_mq_final, assayToPlot = "log2_iBAQ", assayImputation = "imputed_iBAQ", - xlab = c("lab1", "lab2")), + xlab = c("lab1", "lab2"), plotType = "histogram"), "'xlab' must have length 1") + expect_error(plotImputationDistribution( + sce = sce_mq_final, assayToPlot = "log2_iBAQ", assayImputation = "imputed_iBAQ", + xlab = "log2 intensity", plotType = 1), + "'plotType' must be of class 'character'") + expect_error(plotImputationDistribution( + sce = sce_mq_final, assayToPlot = "log2_iBAQ", assayImputation = "imputed_iBAQ", + xlab = "log2 intensity", plotType = c("histogram", "density")), + "'plotType' must have length 1") + expect_error(plotImputationDistribution( + sce = sce_mq_final, assayToPlot = "log2_iBAQ", assayImputation = "imputed_iBAQ", + xlab = "log2 intensity", plotType = "missing"), + "'plotType' must be one of") + + out <- plotImputationDistribution( + sce = sce_mq_final, assayToPlot = "log2_iBAQ", + assayImputation = "imputed_iBAQ", xlab = "lab", plotType = "histogram") + expect_s3_class(out, "ggplot") + expect_true(any(out$data$imputed)) + expect_true(any(!out$data$imputed)) + expect_false(any(grepl("^iBAQ\\.", out$data$sample))) + expect_equal(nrow(out$data), 150 * 9) + expect_equal(ncol(out$data), 4) + expect_named(out$data, c("pid", "sample", "log2intensity", "imputed")) out <- plotImputationDistribution( sce = sce_mq_final, assayToPlot = "log2_iBAQ", - assayImputation = "imputed_iBAQ", xlab = "lab") + assayImputation = "imputed_iBAQ", xlab = "lab", plotType = "density") expect_s3_class(out, "ggplot") expect_true(any(out$data$imputed)) expect_true(any(!out$data$imputed)) @@ -56,7 +79,7 @@ test_that("plotting of imputation results works", { ## PD input out <- plotImputationDistribution( sce = sce_pd_final, assayToPlot = "log2_Abundance", - assayImputation = "imputed_Abundance", xlab = "lab") + assayImputation = "imputed_Abundance", xlab = "lab", plotType = "histogram") expect_s3_class(out, "ggplot") expect_true(any(out$data$imputed)) expect_true(any(!out$data$imputed)) From 9601c21b65328e121b8f2da177532ae46b16b094 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Fri, 4 Oct 2024 14:16:35 +0200 Subject: [PATCH 06/23] Specify default arguments to updated functions in report --- inst/extdata/process_basic_template.Rmd | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/inst/extdata/process_basic_template.Rmd b/inst/extdata/process_basic_template.Rmd index 023afefb..fb441c23 100644 --- a/inst/extdata/process_basic_template.Rmd +++ b/inst/extdata/process_basic_template.Rmd @@ -612,7 +612,9 @@ values correspond to missing values, and the grey ones to observed intensities. ```{r missing-values-overall, fig.height=7, message=FALSE, fig.width = min(14, max(7, 0.5 * ncol(sce))), fig.height = 9/7 * min(14, max(7, 0.5 * ncol(sce)))} if (addHeatmaps) { - plotMissingValuesHeatmap(sce, assayMissing = aNames$assayImputIndic) + plotMissingValuesHeatmap(sce, assayMissing = aNames$assayImputIndic, + onlyRowsWithMissing = FALSE, + settings = "clustered") } ``` @@ -666,7 +668,7 @@ sce <- doImputation(sce, method = imputeMethod, imputedAssayName = aNames$assayImputed) plotImputationDistribution(sce, assayToPlot = aNames$assayImputed, assayImputation = aNames$assayImputIndic, - xlab = aNames$assayImputed) + xlab = aNames$assayImputed, plotType = "histogram") ``` # Overall distribution of log2 feature intensities From f4e981a5fb90e9d3ccb101c988a25d99d7e7bb97 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Fri, 4 Oct 2024 14:41:13 +0200 Subject: [PATCH 07/23] Add link to pkgdown website in report --- inst/extdata/process_basic_template.Rmd | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/inst/extdata/process_basic_template.Rmd b/inst/extdata/process_basic_template.Rmd index fb441c23..8868c243 100644 --- a/inst/extdata/process_basic_template.Rmd +++ b/inst/extdata/process_basic_template.Rmd @@ -71,7 +71,9 @@ of the data is provided via [principal component analysis](#run-pca). If you are using the results from this report in published work, please cite @Soneson2023einprot, as well as the underlying packages that are used for the -analysis (indicated in the text). +analysis (indicated in the text). Documentation of all `einprot` functions, +as well as a vignette describing typical use cases in more detail, are +available from [GitHub](https://fmicompbio.github.io/einprot/). ```{r get-basic-info} ## Get species info and define STRINGdb object From 4225f3725405a353c8feea4d96e1009a3ca94733 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Fri, 4 Oct 2024 15:22:01 +0200 Subject: [PATCH 08/23] Add more details regarding the source of feature collections to report --- NAMESPACE | 1 + NEWS.md | 1 + R/textSnippets.R | 25 +++++++++++++++++++++++++ inst/extdata/process_basic_template.Rmd | 4 ++++ man/textSnippets.Rd | 3 +++ 5 files changed, 34 insertions(+) diff --git a/NAMESPACE b/NAMESPACE index 8cabe74c..71a2a93f 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -11,6 +11,7 @@ export(doNormalization) export(doPCA) export(emptySampleText) export(expDesignText) +export(featureCollectionText) export(filterByModText) export(filterFragPipe) export(filterMaxQuant) diff --git a/NEWS.md b/NEWS.md index da50d14f..f156912d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,7 @@ * Allow ComplexHeatmap::Heatmap arguments to be passed on by plotMissingValuesHeatmap * Add option to limit plotMissingValuesHeatmap to rows with at least one missing value * Add option to make imputation plots as density plots instead of histograms +* Add more details regarding the source of feature collections to report # einprot 0.9.5 diff --git a/R/textSnippets.R b/R/textSnippets.R index 30493e50..13a8c29f 100644 --- a/R/textSnippets.R +++ b/R/textSnippets.R @@ -295,3 +295,28 @@ inputText <- function(expTypeLevel) { "object. ") } } + +#' @rdname textSnippets +#' @export +featureCollectionText <- function(featureCollections) { + if (length(featureCollections) == 0) { + out <- paste0("No feature collections were tested.") + } else { + out <- "" + if ("complexes" %in% featureCollections) { + out <- paste0(out, "Complexes are obtained from Corum, CYC2008, ", + "PomBase, HuMAP2 and the Complex Portal (see ", + "the `makeComplexDB` function for more details. ") + } + if ("GO" %in% featureCollections) { + out <- paste0(out, "GO terms are obtained from MSigDB. ") + } + if ("pathways" %in% featureCollections) { + out <- paste0(out, "Pathway information is obtained from ", + "BIOCARTA, KEGG, PID, REACTOME and WIKIPATHWAYS, ", + "via MSigDB (see the `prepareFeatureCollections` ", + "function for more details). ") + } + } + out +} diff --git a/inst/extdata/process_basic_template.Rmd b/inst/extdata/process_basic_template.Rmd index 8868c243..0721e0e5 100644 --- a/inst/extdata/process_basic_template.Rmd +++ b/inst/extdata/process_basic_template.Rmd @@ -1096,6 +1096,10 @@ isoform level and the feature sets are defined on the protein level, since there will be many (sometimes strongly correlated) features corresponding to a single gene or protein annotated to a feature set. +```{r text-coll, results="asis", echo=FALSE} +cat(featureCollectionText(featureCollections = names(testres$featureCollections))) +``` + ```{r top-feature-sets, fig.width = 9, fig.height = 4 * length(testres$featureCollections) + 0.1, results="asis", eval = (stattest != "none"), echo = (stattest != "none")} for (nm in names(testres$topsets)) { if (length(testres$topsets[[nm]]) > 0) { diff --git a/man/textSnippets.Rd b/man/textSnippets.Rd index 66d6cc95..b38b0fee 100644 --- a/man/textSnippets.Rd +++ b/man/textSnippets.Rd @@ -10,6 +10,7 @@ \alias{introText} \alias{filterByModText} \alias{inputText} +\alias{featureCollectionText} \title{Text snippets for use in analysis reports} \usage{ emptySampleText(sce, assayName) @@ -27,6 +28,8 @@ introText(expType) filterByModText(excludeUnmodifiedPeptides, keepModifications) inputText(expTypeLevel) + +featureCollectionText(featureCollections) } \arguments{ \item{sce}{A SummarizedExperiment object.} From 0fc7787af62f1b9972b9d61cd1885410e66a53eb Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Fri, 4 Oct 2024 15:34:33 +0200 Subject: [PATCH 09/23] Add some more explanation of the assay name table --- inst/extdata/process_basic_template.Rmd | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/inst/extdata/process_basic_template.Rmd b/inst/extdata/process_basic_template.Rmd index 0721e0e5..1c688fc6 100644 --- a/inst/extdata/process_basic_template.Rmd +++ b/inst/extdata/process_basic_template.Rmd @@ -368,7 +368,9 @@ DT::datatable(as.data.frame(colData(sce)), We already now define the names of the assays we will be generating and using later in the workflow. The first column in the table below contains generic names representing the 'stage' that each assay -corresponds to. The second column contains the actual assay names. +corresponds to. The second column contains the actual assay names. Note that +the same actual assay name can correspond to multiple stages - this is the +case, e.g., if normalization is skipped, or if no batch variable is supplied. ```{r define-assaynames} aNames <- defineAssayNames(aName = aName, normMethod = normMethod, From ffc652b0bcc1c44172ff7a47b4bf09121a6ba7ee Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Sat, 5 Oct 2024 19:00:18 +0200 Subject: [PATCH 10/23] Add center.median.shared and center.mean.shared normalization methods --- NEWS.md | 1 + R/checkArgumentsDIANN.R | 3 ++- R/checkArgumentsFragPipe.R | 3 ++- R/checkArgumentsMaxQuant.R | 3 ++- R/checkArgumentsPDTMT.R | 3 ++- R/checkArgumentsSpectronaut.R | 3 ++- R/doNormalization.R | 25 +++++++++++++++++++++++-- man/doNormalization.Rd | 5 ++++- 8 files changed, 38 insertions(+), 8 deletions(-) diff --git a/NEWS.md b/NEWS.md index f156912d..db5c7aca 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,7 @@ * Add option to limit plotMissingValuesHeatmap to rows with at least one missing value * Add option to make imputation plots as density plots instead of histograms * Add more details regarding the source of feature collections to report +* Add center.median.shared and center.mean.shared normalization methods # einprot 0.9.5 diff --git a/R/checkArgumentsDIANN.R b/R/checkArgumentsDIANN.R index 5a9e9115..fcdde8df 100644 --- a/R/checkArgumentsDIANN.R +++ b/R/checkArgumentsDIANN.R @@ -144,7 +144,8 @@ .assertVector(x = assaysForExport, type = "character", allowNULL = TRUE) .assertScalar(x = addHeatmaps, type = "logical") .assertScalar(x = normMethod, type = "character", - validValues = c(MsCoreUtils::normalizeMethods(), "none")) + validValues = c(MsCoreUtils::normalizeMethods(), "none", + "center.mean.shared", "center.median.shared")) .assertVector(x = spikeFeatures, type = "character", allowNULL = TRUE) .assertScalar(x = stattest, type = "character", validValues = c("limma", "ttest", "proDA", "none")) diff --git a/R/checkArgumentsFragPipe.R b/R/checkArgumentsFragPipe.R index 2da38034..521c0370 100755 --- a/R/checkArgumentsFragPipe.R +++ b/R/checkArgumentsFragPipe.R @@ -149,7 +149,8 @@ .assertVector(x = assaysForExport, type = "character", allowNULL = TRUE) .assertScalar(x = addHeatmaps, type = "logical") .assertScalar(x = normMethod, type = "character", - validValues = c(MsCoreUtils::normalizeMethods(), "none")) + validValues = c(MsCoreUtils::normalizeMethods(), "none", + "center.mean.shared", "center.median.shared")) .assertVector(x = spikeFeatures, type = "character", allowNULL = TRUE) .assertScalar(x = stattest, type = "character", validValues = c("limma", "ttest", "proDA", "none")) diff --git a/R/checkArgumentsMaxQuant.R b/R/checkArgumentsMaxQuant.R index ecf13df2..91f1dd9c 100644 --- a/R/checkArgumentsMaxQuant.R +++ b/R/checkArgumentsMaxQuant.R @@ -134,7 +134,8 @@ .assertVector(x = assaysForExport, type = "character", allowNULL = TRUE) .assertScalar(x = addHeatmaps, type = "logical") .assertScalar(x = normMethod, type = "character", - validValues = c(MsCoreUtils::normalizeMethods(), "none")) + validValues = c(MsCoreUtils::normalizeMethods(), "none", + "center.mean.shared", "center.median.shared")) .assertVector(x = spikeFeatures, type = "character", allowNULL = TRUE) .assertScalar(x = stattest, type = "character", validValues = c("limma", "ttest", "proDA", "none")) diff --git a/R/checkArgumentsPDTMT.R b/R/checkArgumentsPDTMT.R index 245209ad..ed44a3a9 100644 --- a/R/checkArgumentsPDTMT.R +++ b/R/checkArgumentsPDTMT.R @@ -157,7 +157,8 @@ .assertVector(x = assaysForExport, type = "character", allowNULL = TRUE) .assertScalar(x = addHeatmaps, type = "logical") .assertScalar(x = normMethod, type = "character", - validValues = c(MsCoreUtils::normalizeMethods(), "none")) + validValues = c(MsCoreUtils::normalizeMethods(), "none", + "center.mean.shared", "center.median.shared")) .assertVector(x = spikeFeatures, type = "character", allowNULL = TRUE) .assertScalar(x = stattest, type = "character", validValues = c("limma", "ttest", "proDA", "none")) diff --git a/R/checkArgumentsSpectronaut.R b/R/checkArgumentsSpectronaut.R index fb37fbc9..a80e2ef2 100644 --- a/R/checkArgumentsSpectronaut.R +++ b/R/checkArgumentsSpectronaut.R @@ -147,7 +147,8 @@ .assertVector(x = assaysForExport, type = "character", allowNULL = TRUE) .assertScalar(x = addHeatmaps, type = "logical") .assertScalar(x = normMethod, type = "character", - validValues = c(MsCoreUtils::normalizeMethods(), "none")) + validValues = c(MsCoreUtils::normalizeMethods(), "none", + "center.mean.shared", "center.median.shared")) .assertVector(x = spikeFeatures, type = "character", allowNULL = TRUE) .assertScalar(x = stattest, type = "character", validValues = c("limma", "ttest", "proDA", "none")) diff --git a/R/doNormalization.R b/R/doNormalization.R index a523bcdb..1fcad555 100644 --- a/R/doNormalization.R +++ b/R/doNormalization.R @@ -5,7 +5,10 @@ #' #' @param sce A \code{SummarizedExperiment} object (or a derivative). #' @param method Character scalar giving the normalization method. Currently, -#' the methods from \code{MsCoreUtils::normalizeMethods()} are supported. +#' the methods from \code{MsCoreUtils::normalizeMethods()} are supported, +#' together with "center.mean.shared" and "center.median.shared", +#' subtracting the mean or median, respectively, across features that are +#' observed in all samples. #' If \code{spikeFeatures} is not \code{NULL}, only #' \code{"center.mean"}, \code{"center.median"}, \code{"div.mean"} and #' \code{"div.median"} are supported. @@ -56,7 +59,9 @@ doNormalization <- function(sce, method, assayName, normalizedAssayName, spikeFeatures = NULL) { .assertVector(x = sce, type = "SummarizedExperiment") .assertScalar(x = method, type = "character", - validValues = MsCoreUtils::normalizeMethods()) + validValues = c(MsCoreUtils::normalizeMethods(), + "center.mean.shared", + "center.median.shared")) .assertScalar(x = assayName, type = "character", validValues = SummarizedExperiment::assayNames(sce)) .assertScalar(x = normalizedAssayName, type = "character") @@ -94,6 +99,22 @@ doNormalization <- function(sce, method, assayName, normalizedAssayName, assayOut <- MsCoreUtils::normalize_matrix(assayIn, method = method) + } else if (method == "center.median.shared") { + idx <- which(rowSums(is.na(assayIn)) == 0) + if (length(idx) == 0) { + stop("No features observed in all samples") + } + assayOut <- sweep(assayIn, MARGIN = 2, + STATS = apply(assayIn[idx, , drop = FALSE], 2, stats::median), + FUN = "-") + } else if (method == "center.mean.shared") { + idx <- which(rowSums(is.na(assayIn)) == 0) + if (length(idx) == 0) { + stop("No features observed in all samples") + } + assayOut <- sweep(assayIn, MARGIN = 2, + STATS = apply(assayIn[idx, , drop = FALSE], 2, mean), + FUN = "-") } else { ## Should never end up here as we check the validity of method above #nocov start diff --git a/man/doNormalization.Rd b/man/doNormalization.Rd index a1e57675..9675ecad 100644 --- a/man/doNormalization.Rd +++ b/man/doNormalization.Rd @@ -16,7 +16,10 @@ doNormalization( \item{sce}{A \code{SummarizedExperiment} object (or a derivative).} \item{method}{Character scalar giving the normalization method. Currently, -the methods from \code{MsCoreUtils::normalizeMethods()} are supported. +the methods from \code{MsCoreUtils::normalizeMethods()} are supported, +together with "center.mean.shared" and "center.median.shared", +subtracting the mean or median, respectively, across features that are +observed in all samples. If \code{spikeFeatures} is not \code{NULL}, only \code{"center.mean"}, \code{"center.median"}, \code{"div.mean"} and \code{"div.median"} are supported.} From b42f4b1e938c430162527a1ea23e9706ba11e215 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Sun, 6 Oct 2024 14:43:56 +0200 Subject: [PATCH 11/23] Add parenthesis --- R/textSnippets.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/textSnippets.R b/R/textSnippets.R index 13a8c29f..ac3fd2cb 100644 --- a/R/textSnippets.R +++ b/R/textSnippets.R @@ -306,7 +306,7 @@ featureCollectionText <- function(featureCollections) { if ("complexes" %in% featureCollections) { out <- paste0(out, "Complexes are obtained from Corum, CYC2008, ", "PomBase, HuMAP2 and the Complex Portal (see ", - "the `makeComplexDB` function for more details. ") + "the `makeComplexDB` function for more details). ") } if ("GO" %in% featureCollections) { out <- paste0(out, "GO terms are obtained from MSigDB. ") From 3793052c08b014a76c356194a1209bb07749d9b1 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Sun, 6 Oct 2024 16:40:47 +0200 Subject: [PATCH 12/23] Add maxComplexSimilarity argument to limit feature set plotting to sets that are not too similar. --- NAMESPACE | 1 + NEWS.md | 1 + R/checkArgumentsDIANN.R | 4 +- R/checkArgumentsFragPipe.R | 4 +- R/checkArgumentsMaxQuant.R | 4 +- R/checkArgumentsPDTMT.R | 4 +- R/checkArgumentsSpectronaut.R | 4 +- R/plotVolcano.R | 86 +++++++++++++++++++- R/runDIANNAnalysis.R | 6 +- R/runFragPipeAnalysis.R | 9 +- R/runMaxQuantAnalysis.R | 13 ++- R/runPDTMTAnalysis.R | 8 +- R/runSpectronautAnalysis.R | 8 +- inst/extdata/process_basic_template.Rmd | 17 ++-- man/getComplexesToPlot.Rd | 38 +++++++++ man/plotVolcano.Rd | 7 ++ man/runDIANNAnalysis.Rd | 7 ++ man/runFragPipeAnalysis.Rd | 7 ++ man/runMaxQuantAnalysis.Rd | 7 ++ man/runPDTMTAnalysis.Rd | 7 ++ man/runSpectronautAnalysis.Rd | 7 ++ tests/testthat/test-checkArgumentsDIANN.R | 10 +++ tests/testthat/test-checkArgumentsFragPipe.R | 10 +++ tests/testthat/test-checkArgumentsMaxQuant.R | 10 +++ tests/testthat/test-checkArgumentsPDTMT.R | 10 +++ tests/testthat/test-plotVolcano.R | 28 +++++++ tests/testthat/test-runDIANNAnalysis.R | 10 +++ tests/testthat/test-runFragPipeAnalysis.R | 10 +++ tests/testthat/test-runMaxQuantAnalysis.R | 10 +++ tests/testthat/test-runPDTMTAnalysis.R | 10 +++ 30 files changed, 331 insertions(+), 26 deletions(-) create mode 100644 man/getComplexesToPlot.Rd diff --git a/NAMESPACE b/NAMESPACE index 71a2a93f..489f2c58 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -21,6 +21,7 @@ export(fixFeatureIds) export(formatTableColumns) export(getCalibrationFrompdAnalysis) export(getColumnNames) +export(getComplexesToPlot) export(getContaminantsDatabaseFrompdAnalysis) export(getConvTable) export(getFirstId) diff --git a/NEWS.md b/NEWS.md index db5c7aca..e7cf1c23 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,7 @@ * Add option to make imputation plots as density plots instead of histograms * Add more details regarding the source of feature collections to report * Add center.median.shared and center.mean.shared normalization methods +* Add maxComplexSimilarity argument to plotVolcano # einprot 0.9.5 diff --git a/R/checkArgumentsDIANN.R b/R/checkArgumentsDIANN.R index fcdde8df..0c0c3792 100644 --- a/R/checkArgumentsDIANN.R +++ b/R/checkArgumentsDIANN.R @@ -17,7 +17,8 @@ minNbrValidValues, minlFC, samSignificance, nperm, volcanoAdjPvalThr, volcanoLog2FCThr, volcanoMaxFeatures, volcanoLabelSign, volcanoS0, volcanoFeaturesToLabel, addInteractiveVolcanos, interactiveDisplayColumns, - interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, seed, + interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, + maxComplexSimilarity, seed, includeFeatureCollections, minSizeToKeepSet, customComplexes, complexSpecies, complexDbPath, stringVersion, stringDir, linkTableColumns, customYml, doRender @@ -164,6 +165,7 @@ .assertScalar(x = complexFDRThr, type = "numeric", rngIncl = c(0, 1)) .assertScalar(x = maxNbrComplexesToPlot, type = "numeric", rngIncl = c(0, Inf)) + .assertScalar(x = maxComplexSimilarity, type = "numeric") .assertScalar(x = minSizeToKeepSet, type = "numeric", rngIncl = c(0, Inf)) .assertVector(x = volcanoFeaturesToLabel, type = "character") .assertVector(x = mergeGroups, type = "list") diff --git a/R/checkArgumentsFragPipe.R b/R/checkArgumentsFragPipe.R index 521c0370..d72f6ec5 100755 --- a/R/checkArgumentsFragPipe.R +++ b/R/checkArgumentsFragPipe.R @@ -16,7 +16,8 @@ minNbrValidValues, minlFC, samSignificance, nperm, volcanoAdjPvalThr, volcanoLog2FCThr, volcanoMaxFeatures, volcanoLabelSign, volcanoS0, volcanoFeaturesToLabel, addInteractiveVolcanos, interactiveDisplayColumns, - interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, seed, + interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, + maxComplexSimilarity, seed, includeFeatureCollections, minSizeToKeepSet, customComplexes, complexSpecies, complexDbPath, stringVersion, stringDir, linkTableColumns, customYml, doRender @@ -169,6 +170,7 @@ .assertScalar(x = complexFDRThr, type = "numeric", rngIncl = c(0, 1)) .assertScalar(x = maxNbrComplexesToPlot, type = "numeric", rngIncl = c(0, Inf)) + .assertScalar(x = maxComplexSimilarity, type = "numeric") .assertScalar(x = minSizeToKeepSet, type = "numeric", rngIncl = c(0, Inf)) .assertVector(x = volcanoFeaturesToLabel, type = "character") .assertVector(x = mergeGroups, type = "list") diff --git a/R/checkArgumentsMaxQuant.R b/R/checkArgumentsMaxQuant.R index 91f1dd9c..9f1d4d9b 100644 --- a/R/checkArgumentsMaxQuant.R +++ b/R/checkArgumentsMaxQuant.R @@ -16,7 +16,8 @@ minNbrValidValues, minlFC, samSignificance, nperm, volcanoAdjPvalThr, volcanoLog2FCThr, volcanoMaxFeatures, volcanoLabelSign, volcanoS0, volcanoFeaturesToLabel, addInteractiveVolcanos, interactiveDisplayColumns, - interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, seed, + interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, + maxComplexSimilarity, seed, includeFeatureCollections, minSizeToKeepSet, customComplexes, complexSpecies, complexDbPath, stringVersion, stringDir, linkTableColumns, customYml, doRender @@ -154,6 +155,7 @@ .assertScalar(x = complexFDRThr, type = "numeric", rngIncl = c(0, 1)) .assertScalar(x = maxNbrComplexesToPlot, type = "numeric", rngIncl = c(0, Inf)) + .assertScalar(x = maxComplexSimilarity, type = "numeric") .assertScalar(x = minSizeToKeepSet, type = "numeric", rngIncl = c(0, Inf)) .assertVector(x = volcanoFeaturesToLabel, type = "character") .assertVector(x = mergeGroups, type = "list") diff --git a/R/checkArgumentsPDTMT.R b/R/checkArgumentsPDTMT.R index ed44a3a9..8471d263 100644 --- a/R/checkArgumentsPDTMT.R +++ b/R/checkArgumentsPDTMT.R @@ -19,7 +19,8 @@ minNbrValidValues, minlFC, samSignificance, nperm, volcanoAdjPvalThr, volcanoLog2FCThr, volcanoMaxFeatures, volcanoLabelSign, volcanoS0, volcanoFeaturesToLabel, addInteractiveVolcanos, interactiveDisplayColumns, - interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, seed, + interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, + maxComplexSimilarity, seed, includeFeatureCollections, minSizeToKeepSet, customComplexes, complexSpecies, complexDbPath, stringVersion, stringDir, linkTableColumns, customYml, doRender @@ -177,6 +178,7 @@ .assertScalar(x = complexFDRThr, type = "numeric", rngIncl = c(0, 1)) .assertScalar(x = maxNbrComplexesToPlot, type = "numeric", rngIncl = c(0, Inf)) + .assertScalar(x = maxComplexSimilarity, type = "numeric") .assertScalar(x = minSizeToKeepSet, type = "numeric", rngIncl = c(0, Inf)) .assertVector(x = volcanoFeaturesToLabel, type = "character") .assertVector(x = mergeGroups, type = "list") diff --git a/R/checkArgumentsSpectronaut.R b/R/checkArgumentsSpectronaut.R index a80e2ef2..62052f5a 100644 --- a/R/checkArgumentsSpectronaut.R +++ b/R/checkArgumentsSpectronaut.R @@ -18,7 +18,8 @@ minNbrValidValues, minlFC, samSignificance, nperm, volcanoAdjPvalThr, volcanoLog2FCThr, volcanoMaxFeatures, volcanoLabelSign, volcanoS0, volcanoFeaturesToLabel, addInteractiveVolcanos, interactiveDisplayColumns, - interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, seed, + interactiveGroupColumn, complexFDRThr, maxNbrComplexesToPlot, + maxComplexSimilarity, seed, includeFeatureCollections, minSizeToKeepSet, customComplexes, complexSpecies, complexDbPath, stringVersion, stringDir, linkTableColumns, customYml, doRender @@ -167,6 +168,7 @@ .assertScalar(x = complexFDRThr, type = "numeric", rngIncl = c(0, 1)) .assertScalar(x = maxNbrComplexesToPlot, type = "numeric", rngIncl = c(0, Inf)) + .assertScalar(x = maxComplexSimilarity, type = "numeric") .assertScalar(x = minSizeToKeepSet, type = "numeric", rngIncl = c(0, Inf)) .assertVector(x = volcanoFeaturesToLabel, type = "character") .assertVector(x = mergeGroups, type = "list") diff --git a/R/plotVolcano.R b/R/plotVolcano.R index 83144597..9412af14 100644 --- a/R/plotVolcano.R +++ b/R/plotVolcano.R @@ -1,3 +1,74 @@ +#' @author Charlotte Soneson +#' @noRd +#' @keywords internal +.getSetSimilarity <- function(set1, set2, method) { + if (method == "jaccard") { + length(intersect(set1, set2)) / length(union(set1, set2)) + } else { + stop("Unknown similarity method") + } +} + +#' Determine which complexes to create plots for +#' +#' @param featureCollections A \code{CharacterList} with feature set +#' definitions. +#' @param complexCandidates A character vector with feature set names that are +#' candidates for plotting. More significant candidates should appear +#' earlier in the vector. +#' @param maxNbrComplexesToPlot A numeric scalar indicating the maximum +#' number of complexes that can be selected. +#' @param maxComplexSimilarity A numeric scalar. If a complex C is more +#' similar than \code{maxComplexSimilarity} to a complex earlier in the +#' vector, which has been selected for plotting, C will not be selected. +#' +#' @returns A character vector with feature sets from \code{complexCandidates} +#' selected for plotting. +#' +#' @author Charlotte Soneson +#' @export +getComplexesToPlot <- function(featureCollections, + complexCandidates, + maxNbrComplexesToPlot, + maxComplexSimilarity) { + .assertVector(x = featureCollections, type = "CharacterList") + .assertVector(x = complexCandidates, type = "character") + .assertScalar(x = maxNbrComplexesToPlot, type = "numeric", + rngIncl = c(0, Inf)) + .assertScalar(x = maxComplexSimilarity, type = "numeric") + ## Select final list of complexes to plot. + ## Go through complexes - if encountering one with similarity + ## above maxComplexSimilarity with any previous included complex, + ## don't include it. + cplxs <- c() + i <- 1 + while ((length(cplxs) < min(length(complexCandidates), + maxNbrComplexesToPlot)) && + i <= length(complexCandidates)) { + if (length(cplxs) > 0) { + include <- TRUE + j <- 1 + while(include && j <= length(cplxs)) { + if (.getSetSimilarity( + featureCollections[[cplxs[j]]], + featureCollections[[complexCandidates[i]]], + method = "jaccard") > + maxComplexSimilarity) { + include <- FALSE + } + j <- j + 1 + } + if (include) { + cplxs <- c(cplxs, complexCandidates[i]) + } + } else { + cplxs <- c(cplxs, complexCandidates[i]) + } + i <- i + 1 + } + cplxs +} + #' @author Charlotte Soneson #' @noRd #' @keywords internal @@ -304,6 +375,11 @@ #' to be considered significant. #' @param maxNbrComplexesToPlot Numeric scalar, the largest number of #' significant complexes to generate separate volcano plots for. +#' @param maxComplexSimilarity Numeric scalar. If a significant complex C has a +#' Jaccard similarity exceeding this value with a complex for which a +#' volcano plot has already been generated, no volcano plot will be +#' generated for C. The default value is 1, which means that no complex +#' will be excluded. #' @param curveparam List with curve parameters for creating the Perseus-like #' significance curves in the volcano plots. #' @param abundanceColPat Character vector providing the column patterns used @@ -365,6 +441,7 @@ plotVolcano <- function(sce, res, testType, xv = NULL, yv = NULL, xvma = NULL, comparisonString, groupComposition = NULL, stringDb = NULL, featureCollections = list(), complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = list(), abundanceColPat = "", xlab = "log2(fold change)", ylab = "-log10(p-value)", xlabma = "Average abundance", @@ -427,6 +504,7 @@ plotVolcano <- function(sce, res, testType, xv = NULL, yv = NULL, xvma = NULL, .assertScalar(x = complexFDRThr, type = "numeric", rngIncl = c(0, 1)) .assertScalar(x = maxNbrComplexesToPlot, type = "numeric", rngIncl = c(0, Inf)) + .assertScalar(x = maxComplexSimilarity, type = "numeric") .assertVector(x = curveparam, type = "list") .assertScalar(x = xlab, type = "character") .assertScalar(x = ylab, type = "character") @@ -721,8 +799,12 @@ plotVolcano <- function(sce, res, testType, xv = NULL, yv = NULL, xvma = NULL, tmpcomplx <- tmpcomplx[order(tmpcomplx[paste0(comparisonString, "_PValue")]), , drop = FALSE] - cplxs <- rownames(tmpcomplx) - cplxs <- cplxs[seq_len(min(length(cplxs), maxNbrComplexesToPlot))] + cplxs <- getComplexesToPlot( + featureCollections = featureCollections[[ftype]], + complexCandidates = rownames(tmpcomplx), + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity) + # cplxs <- cplxs[seq_len(min(length(cplxs), maxNbrComplexesToPlot))] if (length(cplxs) > 0 && !is.null(baseFileName)) { grDevices::pdf(paste0(baseFileName, "_", ftype, ".pdf"), diff --git a/R/runDIANNAnalysis.R b/R/runDIANNAnalysis.R index db6a0744..55253a49 100644 --- a/R/runDIANNAnalysis.R +++ b/R/runDIANNAnalysis.R @@ -143,7 +143,7 @@ runDIANNAnalysis <- function( volcanoS0 = 0.1, volcanoFeaturesToLabel = "", addInteractiveVolcanos = FALSE, interactiveDisplayColumns = NULL, interactiveGroupColumn = NULL, complexFDRThr = 0.1, - maxNbrComplexesToPlot = Inf, seed = 42, + maxNbrComplexesToPlot = Inf, maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = c(), minSizeToKeepSet = 2, customComplexes = list(), complexSpecies = "all", complexDbPath = NULL, stringVersion = "11.5", @@ -200,7 +200,8 @@ runDIANNAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, - maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, customComplexes = customComplexes, complexSpecies = complexSpecies, @@ -255,6 +256,7 @@ runDIANNAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, + maxComplexSimilarity = maxComplexSimilarity, maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, diff --git a/R/runFragPipeAnalysis.R b/R/runFragPipeAnalysis.R index 0daeb3c8..225ca2e0 100755 --- a/R/runFragPipeAnalysis.R +++ b/R/runFragPipeAnalysis.R @@ -94,7 +94,8 @@ runFragPipeAnalysis <- function( volcanoS0 = 0.1, volcanoFeaturesToLabel = "", addInteractiveVolcanos = FALSE, interactiveDisplayColumns = NULL, interactiveGroupColumn = NULL, complexFDRThr = 0.1, - maxNbrComplexesToPlot = Inf, seed = 42, includeFeatureCollections = c(), + maxNbrComplexesToPlot = Inf, maxComplexSimilarity = 1, seed = 42, + includeFeatureCollections = c(), minSizeToKeepSet = 2, customComplexes = list(), complexSpecies = "all", complexDbPath = NULL, stringVersion = "11.5", stringDir = NULL, linkTableColumns = c(), customYml = NULL, doRender = TRUE @@ -149,7 +150,8 @@ runFragPipeAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, - maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, customComplexes = customComplexes, complexSpecies = complexSpecies, @@ -201,7 +203,8 @@ runFragPipeAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, - maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, customComplexes = customComplexes, complexSpecies = complexSpecies, diff --git a/R/runMaxQuantAnalysis.R b/R/runMaxQuantAnalysis.R index 5efa7119..d8724296 100644 --- a/R/runMaxQuantAnalysis.R +++ b/R/runMaxQuantAnalysis.R @@ -160,6 +160,11 @@ #' @param maxNbrComplexesToPlot Numeric, the maximum number of significant #' complexes for which to make separate volcano plots. Defaults to #' \code{Inf}, i.e., no limit. +#' @param maxComplexSimilarity Numeric scalar. If a significant complex C has a +#' Jaccard similarity exceeding this value with a complex for which a +#' volcano plot has already been generated, no volcano plot will be +#' generated for C. The default value is 1, which means that no complex +#' will be excluded. #' @param seed Numeric, random seed to use for any non-deterministic #' calculations. #' @param includeFeatureCollections Character vector, a subset of @@ -274,7 +279,7 @@ runMaxQuantAnalysis <- function( volcanoS0 = 0.1, volcanoFeaturesToLabel = "", addInteractiveVolcanos = FALSE, interactiveDisplayColumns = NULL, interactiveGroupColumn = NULL, complexFDRThr = 0.1, - maxNbrComplexesToPlot = Inf, seed = 42, + maxNbrComplexesToPlot = Inf, maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = c(), minSizeToKeepSet = 2, customComplexes = list(), complexSpecies = "all", complexDbPath = NULL, stringVersion = "11.5", @@ -331,7 +336,8 @@ runMaxQuantAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, - maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, customComplexes = customComplexes, complexSpecies = complexSpecies, @@ -385,7 +391,8 @@ runMaxQuantAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, - maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, customComplexes = customComplexes, complexSpecies = complexSpecies, diff --git a/R/runPDTMTAnalysis.R b/R/runPDTMTAnalysis.R index 7f6cf5b5..b703e463 100644 --- a/R/runPDTMTAnalysis.R +++ b/R/runPDTMTAnalysis.R @@ -141,7 +141,7 @@ runPDTMTAnalysis <- function( volcanoS0 = 0.1, volcanoFeaturesToLabel = "", addInteractiveVolcanos = FALSE, interactiveDisplayColumns = NULL, interactiveGroupColumn = NULL, complexFDRThr = 0.1, - maxNbrComplexesToPlot = 10, seed = 42, + maxNbrComplexesToPlot = 10, maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = c(), minSizeToKeepSet = 2, customComplexes = list(), complexSpecies = "all", complexDbPath = NULL, stringVersion = "11.5", @@ -206,7 +206,8 @@ runPDTMTAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, - maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, customComplexes = customComplexes, complexSpecies = complexSpecies, @@ -267,7 +268,8 @@ runPDTMTAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, - maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, customComplexes = customComplexes, complexSpecies = complexSpecies, diff --git a/R/runSpectronautAnalysis.R b/R/runSpectronautAnalysis.R index 8e044028..4c0c904e 100644 --- a/R/runSpectronautAnalysis.R +++ b/R/runSpectronautAnalysis.R @@ -92,7 +92,7 @@ runSpectronautAnalysis <- function( volcanoS0 = 0.1, volcanoFeaturesToLabel = "", addInteractiveVolcanos = FALSE, interactiveDisplayColumns = NULL, interactiveGroupColumn = NULL, complexFDRThr = 0.1, - maxNbrComplexesToPlot = Inf, seed = 42, + maxNbrComplexesToPlot = Inf, maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = c(), minSizeToKeepSet = 2, customComplexes = list(), complexSpecies = "all", complexDbPath = NULL, stringVersion = "11.5", @@ -150,7 +150,8 @@ runSpectronautAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, - maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, customComplexes = customComplexes, complexSpecies = complexSpecies, @@ -206,7 +207,8 @@ runSpectronautAnalysis <- function( interactiveDisplayColumns = interactiveDisplayColumns, interactiveGroupColumn = interactiveGroupColumn, complexFDRThr = complexFDRThr, - maxNbrComplexesToPlot = maxNbrComplexesToPlot, seed = seed, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, seed = seed, includeFeatureCollections = includeFeatureCollections, minSizeToKeepSet = minSizeToKeepSet, customComplexes = customComplexes, complexSpecies = complexSpecies, diff --git a/inst/extdata/process_basic_template.Rmd b/inst/extdata/process_basic_template.Rmd index 1c688fc6..598d8443 100644 --- a/inst/extdata/process_basic_template.Rmd +++ b/inst/extdata/process_basic_template.Rmd @@ -224,6 +224,7 @@ settingsList <- list( "Custom complexes" = paste(names(customComplexes), collapse = ";"), "FDR Threshold for complexes" = complexFDRThr, "Max nbr complexes to plot" = maxNbrComplexesToPlot, + "Max complex similarity to plot" = maxComplexSimilarity, "Number of permutations" = nperm, "Random seed" = seed, "User-defined feature annotation columns" = paste(names(extraFeatureCols), collapse = ";"), @@ -965,6 +966,7 @@ for (nm in names(testres$tests)) { featureCollections = testres$featureCollections, complexFDRThr = complexFDRThr, maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity, curveparam = testres$curveparams[[nm]], abundanceColPat = assaysForExport, xlab = "log2(fold change)", @@ -1103,14 +1105,19 @@ cat(featureCollectionText(featureCollections = names(testres$featureCollections) ``` ```{r top-feature-sets, fig.width = 9, fig.height = 4 * length(testres$featureCollections) + 0.1, results="asis", eval = (stattest != "none"), echo = (stattest != "none")} -for (nm in names(testres$topsets)) { +for (nm in names(testres$topsets)) { ## for each comparison if (length(testres$topsets[[nm]]) > 0) { - plts <- lapply(names(testres$topsets[[nm]]), function(snm) { + plts <- lapply(names(testres$topsets[[nm]]), function(snm) { ## set type df <- testres$topsets[[nm]][[snm]] - if (nrow(df) > maxNbrComplexesToPlot) { - df <- df[seq_len(maxNbrComplexesToPlot), ] - } + # if (nrow(df) > maxNbrComplexesToPlot) { + # df <- df[seq_len(maxNbrComplexesToPlot), ] + # } if (nrow(df) > 0) { + kp <- getComplexesToPlot(testres$featureCollections[[snm]], + complexCandidates = df$set, + maxNbrComplexesToPlot = maxNbrComplexesToPlot, + maxComplexSimilarity = maxComplexSimilarity) + df <- df[match(kp, df$set), , drop = FALSE] ggplot(df %>% dplyr::mutate(set = factor(.data$set, levels = rev(.data$set))), aes(x = .data$set, y = -log10(.data[[paste0(nm, "_FDR")]]), fill = .data[[paste0(nm, "_Direction")]])) + diff --git a/man/getComplexesToPlot.Rd b/man/getComplexesToPlot.Rd new file mode 100644 index 00000000..ee559c70 --- /dev/null +++ b/man/getComplexesToPlot.Rd @@ -0,0 +1,38 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/plotVolcano.R +\name{getComplexesToPlot} +\alias{getComplexesToPlot} +\title{Determine which complexes to create plots for} +\usage{ +getComplexesToPlot( + featureCollections, + complexCandidates, + maxNbrComplexesToPlot, + maxComplexSimilarity +) +} +\arguments{ +\item{featureCollections}{A \code{CharacterList} with feature set +definitions.} + +\item{complexCandidates}{A character vector with feature set names that are +candidates for plotting. More significant candidates should appear +earlier in the vector.} + +\item{maxNbrComplexesToPlot}{A numeric scalar indicating the maximum +number of complexes that can be selected.} + +\item{maxComplexSimilarity}{A numeric scalar. If a complex C is more +similar than \code{maxComplexSimilarity} to a complex earlier in the +vector, which has been selected for plotting, C will not be selected.} +} +\value{ +A character vector with feature sets from \code{complexCandidates} +selected for plotting. +} +\description{ +Determine which complexes to create plots for +} +\author{ +Charlotte Soneson +} diff --git a/man/plotVolcano.Rd b/man/plotVolcano.Rd index 1e646332..cce60f6c 100644 --- a/man/plotVolcano.Rd +++ b/man/plotVolcano.Rd @@ -25,6 +25,7 @@ plotVolcano( featureCollections = list(), complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = list(), abundanceColPat = "", xlab = "log2(fold change)", @@ -108,6 +109,12 @@ to be considered significant.} \item{maxNbrComplexesToPlot}{Numeric scalar, the largest number of significant complexes to generate separate volcano plots for.} +\item{maxComplexSimilarity}{Numeric scalar. If a significant complex C has a +Jaccard similarity exceeding this value with a complex for which a +volcano plot has already been generated, no volcano plot will be +generated for C. The default value is 1, which means that no complex +will be excluded.} + \item{curveparam}{List with curve parameters for creating the Perseus-like significance curves in the volcano plots.} diff --git a/man/runDIANNAnalysis.Rd b/man/runDIANNAnalysis.Rd index 70f26ed7..5b811b13 100644 --- a/man/runDIANNAnalysis.Rd +++ b/man/runDIANNAnalysis.Rd @@ -60,6 +60,7 @@ runDIANNAnalysis( interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = c(), minSizeToKeepSet = 2, @@ -283,6 +284,12 @@ of complexes.} complexes for which to make separate volcano plots. Defaults to \code{Inf}, i.e., no limit.} +\item{maxComplexSimilarity}{Numeric scalar. If a significant complex C has a +Jaccard similarity exceeding this value with a complex for which a +volcano plot has already been generated, no volcano plot will be +generated for C. The default value is 1, which means that no complex +will be excluded.} + \item{seed}{Numeric, random seed to use for any non-deterministic calculations.} diff --git a/man/runFragPipeAnalysis.Rd b/man/runFragPipeAnalysis.Rd index 34c55369..18f9c94f 100644 --- a/man/runFragPipeAnalysis.Rd +++ b/man/runFragPipeAnalysis.Rd @@ -55,6 +55,7 @@ runFragPipeAnalysis( interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = c(), minSizeToKeepSet = 2, @@ -267,6 +268,12 @@ of complexes.} complexes for which to make separate volcano plots. Defaults to \code{Inf}, i.e., no limit.} +\item{maxComplexSimilarity}{Numeric scalar. If a significant complex C has a +Jaccard similarity exceeding this value with a complex for which a +volcano plot has already been generated, no volcano plot will be +generated for C. The default value is 1, which means that no complex +will be excluded.} + \item{seed}{Numeric, random seed to use for any non-deterministic calculations.} diff --git a/man/runMaxQuantAnalysis.Rd b/man/runMaxQuantAnalysis.Rd index b737027a..2d88db92 100644 --- a/man/runMaxQuantAnalysis.Rd +++ b/man/runMaxQuantAnalysis.Rd @@ -58,6 +58,7 @@ runMaxQuantAnalysis( interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = c(), minSizeToKeepSet = 2, @@ -274,6 +275,12 @@ of complexes.} complexes for which to make separate volcano plots. Defaults to \code{Inf}, i.e., no limit.} +\item{maxComplexSimilarity}{Numeric scalar. If a significant complex C has a +Jaccard similarity exceeding this value with a complex for which a +volcano plot has already been generated, no volcano plot will be +generated for C. The default value is 1, which means that no complex +will be excluded.} + \item{seed}{Numeric, random seed to use for any non-deterministic calculations.} diff --git a/man/runPDTMTAnalysis.Rd b/man/runPDTMTAnalysis.Rd index 3be902bd..45af9434 100644 --- a/man/runPDTMTAnalysis.Rd +++ b/man/runPDTMTAnalysis.Rd @@ -64,6 +64,7 @@ runPDTMTAnalysis( interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = c(), minSizeToKeepSet = 2, @@ -313,6 +314,12 @@ of complexes.} complexes for which to make separate volcano plots. Defaults to \code{Inf}, i.e., no limit.} +\item{maxComplexSimilarity}{Numeric scalar. If a significant complex C has a +Jaccard similarity exceeding this value with a complex for which a +volcano plot has already been generated, no volcano plot will be +generated for C. The default value is 1, which means that no complex +will be excluded.} + \item{seed}{Numeric, random seed to use for any non-deterministic calculations.} diff --git a/man/runSpectronautAnalysis.Rd b/man/runSpectronautAnalysis.Rd index ce361b72..25b564ee 100644 --- a/man/runSpectronautAnalysis.Rd +++ b/man/runSpectronautAnalysis.Rd @@ -59,6 +59,7 @@ runSpectronautAnalysis( interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = c(), minSizeToKeepSet = 2, @@ -284,6 +285,12 @@ of complexes.} complexes for which to make separate volcano plots. Defaults to \code{Inf}, i.e., no limit.} +\item{maxComplexSimilarity}{Numeric scalar. If a significant complex C has a +Jaccard similarity exceeding this value with a complex for which a +volcano plot has already been generated, no volcano plot will be +generated for C. The default value is 1, which means that no complex +will be excluded.} + \item{seed}{Numeric, random seed to use for any non-deterministic calculations.} diff --git a/tests/testthat/test-checkArgumentsDIANN.R b/tests/testthat/test-checkArgumentsDIANN.R index a8b6ae14..9aad9d1f 100644 --- a/tests/testthat/test-checkArgumentsDIANN.R +++ b/tests/testthat/test-checkArgumentsDIANN.R @@ -64,6 +64,7 @@ test_that("argument checking for DIANN works", { interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 123, includeFeatureCollections = "complexes", minSizeToKeepSet = 2, @@ -617,6 +618,15 @@ test_that("argument checking for DIANN works", { "'maxNbrComplexesToPlot' must be within [0,Inf] (inclusive)", fixed = TRUE) + ## maxComplexSimilarity + args <- args0 + args$maxComplexSimilarity <- "1" + expect_error(do.call(.checkArgumentsDIANN, args), + "'maxComplexSimilarity' must be of class 'numeric'") + args$maxComplexSimilarity <- c(0.1, 0.2) + expect_error(do.call(.checkArgumentsDIANN, args), + "'maxComplexSimilarity' must have length 1") + ## seed args <- args0 args$seed <- "1" diff --git a/tests/testthat/test-checkArgumentsFragPipe.R b/tests/testthat/test-checkArgumentsFragPipe.R index 987ad72b..3473e5af 100644 --- a/tests/testthat/test-checkArgumentsFragPipe.R +++ b/tests/testthat/test-checkArgumentsFragPipe.R @@ -61,6 +61,7 @@ test_that("argument checking for FP works", { interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 123, includeFeatureCollections = "complexes", minSizeToKeepSet = 2, @@ -609,6 +610,15 @@ test_that("argument checking for FP works", { "'maxNbrComplexesToPlot' must be within [0,Inf] (inclusive)", fixed = TRUE) + ## maxComplexSimilarity + args <- args0 + args$maxComplexSimilarity <- "1" + expect_error(do.call(.checkArgumentsFragPipe, args), + "'maxComplexSimilarity' must be of class 'numeric'") + args$maxComplexSimilarity <- c(0.1, 0.2) + expect_error(do.call(.checkArgumentsFragPipe, args), + "'maxComplexSimilarity' must have length 1") + ## seed args <- args0 args$seed <- "1" diff --git a/tests/testthat/test-checkArgumentsMaxQuant.R b/tests/testthat/test-checkArgumentsMaxQuant.R index 5e5535b3..12201442 100644 --- a/tests/testthat/test-checkArgumentsMaxQuant.R +++ b/tests/testthat/test-checkArgumentsMaxQuant.R @@ -69,6 +69,7 @@ test_that("argument checking for MQ works", { interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 123, includeFeatureCollections = "complexes", minSizeToKeepSet = 2, @@ -608,6 +609,15 @@ test_that("argument checking for MQ works", { "'maxNbrComplexesToPlot' must be within [0,Inf] (inclusive)", fixed = TRUE) + ## maxComplexSimilarity + args <- args0 + args$maxComplexSimilarity <- "1" + expect_error(do.call(.checkArgumentsMaxQuant, args), + "'maxComplexSimilarity' must be of class 'numeric'") + args$maxComplexSimilarity <- c(0.1, 0.2) + expect_error(do.call(.checkArgumentsMaxQuant, args), + "'maxComplexSimilarity' must have length 1") + ## seed args <- args0 args$seed <- "1" diff --git a/tests/testthat/test-checkArgumentsPDTMT.R b/tests/testthat/test-checkArgumentsPDTMT.R index 7fc3f604..f969280a 100644 --- a/tests/testthat/test-checkArgumentsPDTMT.R +++ b/tests/testthat/test-checkArgumentsPDTMT.R @@ -78,6 +78,7 @@ test_that("argument checking for PD-TMT works", { interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, seed = 123, includeFeatureCollections = "complexes", minSizeToKeepSet = 2, @@ -724,6 +725,15 @@ test_that("argument checking for PD-TMT works", { "'maxNbrComplexesToPlot' must be within [0,Inf] (inclusive)", fixed = TRUE) + ## maxComplexSimilarity + args <- args0 + args$maxComplexSimilarity <- "1" + expect_error(do.call(.checkArgumentsPDTMT, args), + "'maxComplexSimilarity' must be of class 'numeric'") + args$maxComplexSimilarity <- c(0.1, 0.2) + expect_error(do.call(.checkArgumentsPDTMT, args), + "'maxComplexSimilarity' must have length 1") + ## seed args <- args0 args$seed <- "1" diff --git a/tests/testthat/test-plotVolcano.R b/tests/testthat/test-plotVolcano.R index b339c48c..5270cd7e 100644 --- a/tests/testthat/test-plotVolcano.R +++ b/tests/testthat/test-plotVolcano.R @@ -408,6 +408,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_ttest$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_ttest$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -616,6 +617,15 @@ test_that("volcano plots work", { "'maxNbrComplexesToPlot' must be within [0,Inf] (inclusive)", fixed = TRUE) + ## maxComplexSimilarity + args <- args0 + args$maxComplexSimilarity <- "2" + expect_error(do.call(plotVolcano, args), + "'maxComplexSimilarity' must be of class 'numeric'") + args$maxComplexSimilarity <- c(0.1, 0.2) + expect_error(do.call(plotVolcano, args), + "'maxComplexSimilarity' must have length 1") + ## curveparam args <- args0 args$curveparam <- 1 @@ -717,6 +727,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_limma$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -776,6 +787,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_limma$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -834,6 +846,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_limma$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -887,6 +900,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_limma$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -951,6 +965,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_limma$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1011,6 +1026,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_limma$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1068,6 +1084,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = list(), complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1126,6 +1143,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_limma$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1181,6 +1199,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_limma$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1238,6 +1257,7 @@ test_that("volcano plots work", { stringDb = NULL, featureCollections = out_limma_merged$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma_merged$curveparams[[1]], abundanceColPat = c("iBAQ", "LFQ.intensity"), xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1321,6 +1341,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_ttest$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_ttest$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1376,6 +1397,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_ttest$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_ttest$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1431,6 +1453,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_ttest$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_proda$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1486,6 +1509,7 @@ test_that("volcano plots work", { stringDb = NULL, featureCollections = out_ttest$featureCollections, complexFDRThr = 0.001, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_ttest$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1537,6 +1561,7 @@ test_that("volcano plots work", { stringDb = NULL, featureCollections = out_limma$featureCollections, complexFDRThr = 0.8, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1588,6 +1613,7 @@ test_that("volcano plots work", { stringDb = string_db, featureCollections = out_ttest$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_ttest$curveparams[[1]], abundanceColPat = "iBAQ", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1657,6 +1683,7 @@ test_that("volcano plots work", { stringDb = NULL, featureCollections = out_limma$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_limma$curveparams[[1]], abundanceColPat = "Abundance", xlab = "log2(fold change)", ylab = "-log10(p-value)", @@ -1716,6 +1743,7 @@ test_that("volcano plots work", { stringDb = NULL, featureCollections = out_ttest$featureCollections, complexFDRThr = 0.1, maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1, curveparam = out_ttest$curveparams[[1]], abundanceColPat = "Abundance", xlab = "log2(fold change)", ylab = "-log10(p-value)", diff --git a/tests/testthat/test-runDIANNAnalysis.R b/tests/testthat/test-runDIANNAnalysis.R index 2eb110b1..9809a793 100644 --- a/tests/testthat/test-runDIANNAnalysis.R +++ b/tests/testthat/test-runDIANNAnalysis.R @@ -65,6 +65,7 @@ test_that("runDIANNAnalysis works", { interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 123, includeFeatureCollections = "complexes", minSizeToKeepSet = 2, @@ -606,6 +607,15 @@ test_that("runDIANNAnalysis works", { "'maxNbrComplexesToPlot' must be within [0,Inf] (inclusive)", fixed = TRUE) + ## maxComplexSimilarity + args <- args0 + args$maxComplexSimilarity <- "1" + expect_error(do.call(runDIANNAnalysis, args), + "'maxComplexSimilarity' must be of class 'numeric'") + args$maxComplexSimilarity <- c(0.1, 0.2) + expect_error(do.call(runDIANNAnalysis, args), + "'maxComplexSimilarity' must have length 1") + ## seed args <- args0 args$seed <- "1" diff --git a/tests/testthat/test-runFragPipeAnalysis.R b/tests/testthat/test-runFragPipeAnalysis.R index ac5e088e..bd8ea643 100644 --- a/tests/testthat/test-runFragPipeAnalysis.R +++ b/tests/testthat/test-runFragPipeAnalysis.R @@ -63,6 +63,7 @@ test_that("runFragPipeAnalysis works", { interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 123, includeFeatureCollections = "complexes", minSizeToKeepSet = 2, @@ -569,6 +570,15 @@ test_that("runFragPipeAnalysis works", { "'maxNbrComplexesToPlot' must be within [0,Inf] (inclusive)", fixed = TRUE) + ## maxComplexSimilarity + args <- args0 + args$maxComplexSimilarity <- "1" + expect_error(do.call(runFragPipeAnalysis, args), + "'maxComplexSimilarity' must be of class 'numeric'") + args$maxComplexSimilarity <- c(0.1, 0.2) + expect_error(do.call(runFragPipeAnalysis, args), + "'maxComplexSimilarity' must have length 1") + ## seed args <- args0 args$seed <- "1" diff --git a/tests/testthat/test-runMaxQuantAnalysis.R b/tests/testthat/test-runMaxQuantAnalysis.R index 92f511b4..f50f6be8 100644 --- a/tests/testthat/test-runMaxQuantAnalysis.R +++ b/tests/testthat/test-runMaxQuantAnalysis.R @@ -67,6 +67,7 @@ test_that("runMaxQuantAnalysis works", { interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = "complexes", minSizeToKeepSet = 2, @@ -594,6 +595,15 @@ test_that("runMaxQuantAnalysis works", { "'maxNbrComplexesToPlot' must be within [0,Inf] (inclusive)", fixed = TRUE) + ## maxComplexSimilarity + args <- args0 + args$maxComplexSimilarity <- "1" + expect_error(do.call(runMaxQuantAnalysis, args), + "'maxComplexSimilarity' must be of class 'numeric'") + args$maxComplexSimilarity <- c(0.1, 0.2) + expect_error(do.call(runMaxQuantAnalysis, args), + "'maxComplexSimilarity' must have length 1") + ## seed args <- args0 args$seed <- "1" diff --git a/tests/testthat/test-runPDTMTAnalysis.R b/tests/testthat/test-runPDTMTAnalysis.R index 57e65674..33577841 100644 --- a/tests/testthat/test-runPDTMTAnalysis.R +++ b/tests/testthat/test-runPDTMTAnalysis.R @@ -77,6 +77,7 @@ test_that("runPDTMTAnalysis works", { interactiveGroupColumn = NULL, complexFDRThr = 0.1, maxNbrComplexesToPlot = Inf, + maxComplexSimilarity = 1, seed = 42, includeFeatureCollections = "complexes", minSizeToKeepSet = 2, @@ -690,6 +691,15 @@ test_that("runPDTMTAnalysis works", { "'maxNbrComplexesToPlot' must be within [0,Inf] (inclusive)", fixed = TRUE) + ## maxComplexSimilarity + args <- args0 + args$maxComplexSimilarity <- "1" + expect_error(do.call(runPDTMTAnalysis, args), + "'maxComplexSimilarity' must be of class 'numeric'") + args$maxComplexSimilarity <- c(0.1, 0.2) + expect_error(do.call(runPDTMTAnalysis, args), + "'maxComplexSimilarity' must have length 1") + ## seed args <- args0 args$seed <- "1" From 86808b74c1d0b1dc75994b16d66d52f489f0c7f7 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Sun, 6 Oct 2024 16:47:11 +0200 Subject: [PATCH 13/23] Add tests for getComplexesToPlot --- tests/testthat/test-plotVolcano.R | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/testthat/test-plotVolcano.R b/tests/testthat/test-plotVolcano.R index 5270cd7e..6022309c 100644 --- a/tests/testthat/test-plotVolcano.R +++ b/tests/testthat/test-plotVolcano.R @@ -1,3 +1,36 @@ +test_that("set selection for plotting works", { + expect_equal(.getSetSimilarity(set1 = c("A", "B", "X"), + set2 = c("A", "I", "J"), + method = "jaccard"), 0.2) + expect_error(.getSetSimilarity(set1 = c("A", "B", "X"), + set2 = c("A", "I", "J"), + method = "missing"), + "Unknown similarity method") + + expect_equal(getComplexesToPlot(featureCollections = fcoll_mq_final$complexes, + complexCandidates = c("mouse: Arnt-Ahrr complex", + "mouse: Arnt-Sim1 complex", + "mouse: Arnt-Sim2 complex"), + maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 1), + c("mouse: Arnt-Ahrr complex", "mouse: Arnt-Sim1 complex", + "mouse: Arnt-Sim2 complex")) + expect_equal(getComplexesToPlot(featureCollections = fcoll_mq_final$complexes, + complexCandidates = c("mouse: Arnt-Ahrr complex", + "mouse: Arnt-Sim1 complex", + "mouse: Arnt-Sim2 complex"), + maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 0.9), + c("mouse: Arnt-Ahrr complex")) + expect_equal(getComplexesToPlot(featureCollections = fcoll_mq_final$complexes, + complexCandidates = c("mouse: Arnt-Sim1 complex", + "mouse: Arnt-Ahrr complex", + "mouse: Arnt-Sim2 complex"), + maxNbrComplexesToPlot = 10, + maxComplexSimilarity = 0.9), + c("mouse: Arnt-Sim1 complex")) +}) + test_that("volcano plots work", { out_limma <- runTest( From eabf317504c5bed7e9e640de3ba3907fd569c8bc Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Sun, 6 Oct 2024 16:51:14 +0200 Subject: [PATCH 14/23] More unit tests --- tests/testthat/test-plotVolcano.R | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/testthat/test-plotVolcano.R b/tests/testthat/test-plotVolcano.R index 6022309c..a5e0781f 100644 --- a/tests/testthat/test-plotVolcano.R +++ b/tests/testthat/test-plotVolcano.R @@ -7,6 +7,40 @@ test_that("set selection for plotting works", { method = "missing"), "Unknown similarity method") + expect_error(getComplexesToPlot( + featureCollections = 1, complexCandidates = c("mouse: Arnt-Ahrr complex"), + maxNbrComplexesToPlot = 10, maxComplexSimilarity = 1), + "'featureCollections' must be of class 'CharacterList'") + expect_error(getComplexesToPlot( + featureCollections = fcoll_mq_final, complexCandidates = c("mouse: Arnt-Ahrr complex"), + maxNbrComplexesToPlot = 10, maxComplexSimilarity = 1), + "'featureCollections' must be of class 'CharacterList'") + expect_error(getComplexesToPlot( + featureCollections = fcoll_mq_final$complexes, + complexCandidates = 1, + maxNbrComplexesToPlot = 10, maxComplexSimilarity = 1), + "'complexCandidates' must be of class 'character'") + expect_error(getComplexesToPlot( + featureCollections = fcoll_mq_final$complexes, + complexCandidates = c("mouse: Arnt-Ahrr complex"), + maxNbrComplexesToPlot = "10", maxComplexSimilarity = 1), + "'maxNbrComplexesToPlot' must be of class 'numeric'") + expect_error(getComplexesToPlot( + featureCollections = fcoll_mq_final$complexes, + complexCandidates = c("mouse: Arnt-Ahrr complex"), + maxNbrComplexesToPlot = c(10, 2), maxComplexSimilarity = 1), + "'maxNbrComplexesToPlot' must have length 1") + expect_error(getComplexesToPlot( + featureCollections = fcoll_mq_final$complexes, + complexCandidates = c("mouse: Arnt-Ahrr complex"), + maxNbrComplexesToPlot = 10, maxComplexSimilarity = "1"), + "'maxComplexSimilarity' must be of class 'numeric'") + expect_error(getComplexesToPlot( + featureCollections = fcoll_mq_final$complexes, + complexCandidates = c("mouse: Arnt-Ahrr complex"), + maxNbrComplexesToPlot = 10, maxComplexSimilarity = c(1, 2)), + "'maxComplexSimilarity' must have length 1") + expect_equal(getComplexesToPlot(featureCollections = fcoll_mq_final$complexes, complexCandidates = c("mouse: Arnt-Ahrr complex", "mouse: Arnt-Sim1 complex", From 5b13b9a3afae8f7455fb2ef9be9a2bc0180d030d Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Fri, 18 Oct 2024 12:57:30 +0200 Subject: [PATCH 15/23] Update PomBase and WormBase conversion tables --- NEWS.md | 1 + R/constants.R | 4 ++-- .../PomBaseConv_einprot0.9.6_20241018.rds | Bin 0 -> 30677 bytes .../WormBaseConv_einprot0.9.6_20241018.rds | Bin 0 -> 296156 bytes 4 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 inst/extdata/conversion_tables/PomBaseConv_einprot0.9.6_20241018.rds create mode 100644 inst/extdata/conversion_tables/WormBaseConv_einprot0.9.6_20241018.rds diff --git a/NEWS.md b/NEWS.md index e7cf1c23..604ac39a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,6 +7,7 @@ * Add more details regarding the source of feature collections to report * Add center.median.shared and center.mean.shared normalization methods * Add maxComplexSimilarity argument to plotVolcano +* Update PomBase and WormBase conversion tables # einprot 0.9.5 diff --git a/R/constants.R b/R/constants.R index 90804642..e6152735 100644 --- a/R/constants.R +++ b/R/constants.R @@ -18,7 +18,7 @@ NULL EINPROT_COMPLEXES_FILE <- "extdata/complexes/complexdb_einprot0.9.3_20240328_orthologs.rds" #' @export #' @rdname constants -EINPROT_WORMBASE_CONVTABLE <- "extdata/conversion_tables/WormBaseConv_einprot0.5.0_20220211.rds" +EINPROT_WORMBASE_CONVTABLE <- "extdata/conversion_tables/WormBaseConv_einprot0.9.6_20241018.rds" #' @export #' @rdname constants -EINPROT_POMBASE_CONVTABLE <- "extdata/conversion_tables/PomBaseConv_einprot0.5.0_20220211.rds" +EINPROT_POMBASE_CONVTABLE <- "extdata/conversion_tables/PomBaseConv_einprot0.9.6_20241018.rds" diff --git a/inst/extdata/conversion_tables/PomBaseConv_einprot0.9.6_20241018.rds b/inst/extdata/conversion_tables/PomBaseConv_einprot0.9.6_20241018.rds new file mode 100644 index 0000000000000000000000000000000000000000..653b69a053718c01242b7cd1cdd6edf54c559a43 GIT binary patch literal 30677 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 a|MmuXn}3VBg5Dn7631dnV4hj{cm6;1bpZ_k literal 0 HcmV?d00001 diff --git a/inst/extdata/conversion_tables/WormBaseConv_einprot0.9.6_20241018.rds b/inst/extdata/conversion_tables/WormBaseConv_einprot0.9.6_20241018.rds new file mode 100644 index 0000000000000000000000000000000000000000..cf77062a3924247ed7cf3f35d54b7229b4ced539 GIT binary patch literal 296156 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 mm+(!T&qVv0&!eaImi{Zpb2=Gf-BdKKH_GK;bU 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�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 chz@s#sZP*dZ+Z8P_-E(m4fyMce* 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 Date: Wed, 4 Dec 2024 09:40:17 +0100 Subject: [PATCH 16/23] Add contamination filtering to Spectronaut --- NEWS.md | 1 + R/doFilter.R | 21 +++++++++++++++------ inst/extdata/process_basic_template.Rmd | 1 + man/filterSpectronaut.Rd | 6 ++++++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/NEWS.md b/NEWS.md index 604ac39a..255115ef 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,6 +8,7 @@ * Add center.median.shared and center.mean.shared normalization methods * Add maxComplexSimilarity argument to plotVolcano * Update PomBase and WormBase conversion tables +* Add contamination filtering to Spectronaut (presence of contam_ prefix) # einprot 0.9.5 diff --git a/R/doFilter.R b/R/doFilter.R index 75351a1b..689e361b 100644 --- a/R/doFilter.R +++ b/R/doFilter.R @@ -550,6 +550,10 @@ filterFragPipe <- function(sce, minPeptides, plotUpset = TRUE, #' expression) used to identify decoys (reverse hits). The pattern is #' matched against the IDs in the Spectronaut \code{PG.ProteinGroups} #' column. +#' @param contamPattern Character scalar providing the pattern (a regular +#' expression) used to identify contaminants. The pattern is +#' matched against the IDs in the Spectronaut \code{PG.ProteinGroups} +#' column. #' @param exclFile Character scalar, the path to a text file where the #' features that are filtered out are written. If \code{NULL} (default), #' excluded features are not recorded. @@ -562,22 +566,27 @@ filterFragPipe <- function(sce, minPeptides, plotUpset = TRUE, #' @importFrom rlang .data #' filterSpectronaut <- function(sce, minScore, minPeptides, plotUpset = TRUE, - revPattern = "_Decoy$", exclFile = NULL) { + revPattern = "_Decoy$", + contamPattern = "^contam_", exclFile = NULL) { .assertVector(x = sce, type = "SummarizedExperiment") .assertScalar(x = minScore, type = "numeric", allowNULL = TRUE) .assertScalar(x = minPeptides, type = "numeric", allowNULL = TRUE) .assertScalar(x = plotUpset, type = "logical") .assertScalar(x = revPattern, type = "character") + .assertScalar(x = contamPattern, type = "character") .assertScalar(x = exclFile, type = "character", allowNULL = TRUE) ## Make sure that the columns used for filtering later are character vectors rowData(sce)$Reverse <- ifelse(grepl(revPattern, rowData(sce)$PG.ProteinGroups), "+", "") + rowData(sce)$Contaminant <- ifelse(grepl(contamPattern, + rowData(sce)$PG.ProteinGroups), + "+", "") filtdf <- as.data.frame(SummarizedExperiment::rowData(sce)) %>% dplyr::select(dplyr::any_of(c("Reverse", "PG.NrOfStrippedSequencesIdentified.Experiment.wide", - "PG.Cscore"))) %>% - dplyr::mutate(across(dplyr::any_of(c("Reverse")), + "PG.Cscore", "Contaminant"))) %>% + dplyr::mutate(across(dplyr::any_of(c("Reverse", "Contaminant")), function(x) as.numeric(x == "+"))) if ("PG.NrOfStrippedSequencesIdentified.Experiment.wide" %in% colnames(filtdf) && !is.null(minPeptides)) { @@ -601,9 +610,9 @@ filterSpectronaut <- function(sce, minScore, minPeptides, plotUpset = TRUE, if ("Reverse" %in% colnames(rowData(sce))) { keep <- intersect(keep, which(rowData(sce)$Reverse == "")) } - # if ("Potential.contaminant" %in% colnames(rowData(sce))) { - # keep <- intersect(keep, which(rowData(sce)$Potential.contaminant == "")) - # } + if ("Contaminant" %in% colnames(rowData(sce))) { + keep <- intersect(keep, which(rowData(sce)$Contaminant == "")) + } if ("PG.NrOfStrippedSequencesIdentified.Experiment.wide" %in% colnames(rowData(sce)) && !is.null(minPeptides)) { keep <- intersect( diff --git a/inst/extdata/process_basic_template.Rmd b/inst/extdata/process_basic_template.Rmd index 598d8443..1ccabbff 100644 --- a/inst/extdata/process_basic_template.Rmd +++ b/inst/extdata/process_basic_template.Rmd @@ -447,6 +447,7 @@ if (expType == "MaxQuant") { sce <- filterSpectronaut(sce = sce, minScore = minScore, minPeptides = minPeptides, plotUpset = TRUE, revPattern = "_Decoy$", + contamPattern = "^contam_", exclFile = sub("\\.Rmd$", paste0("_filtered_out_features.txt"), knitr::current_input(dir = TRUE))) } else if (expType == "DIANN") { diff --git a/man/filterSpectronaut.Rd b/man/filterSpectronaut.Rd index 589178e3..9069330f 100644 --- a/man/filterSpectronaut.Rd +++ b/man/filterSpectronaut.Rd @@ -10,6 +10,7 @@ filterSpectronaut( minPeptides, plotUpset = TRUE, revPattern = "_Decoy$", + contamPattern = "^contam_", exclFile = NULL ) } @@ -32,6 +33,11 @@ expression) used to identify decoys (reverse hits). The pattern is matched against the IDs in the Spectronaut \code{PG.ProteinGroups} column.} +\item{contamPattern}{Character scalar providing the pattern (a regular +expression) used to identify contaminants. The pattern is +matched against the IDs in the Spectronaut \code{PG.ProteinGroups} +column.} + \item{exclFile}{Character scalar, the path to a text file where the features that are filtered out are written. If \code{NULL} (default), excluded features are not recorded.} From b763329f69453820a5078a6df567c5bf957a3e4a Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Wed, 11 Dec 2024 15:06:22 +0100 Subject: [PATCH 17/23] Don't render any output in seqLogoApp until the loading is complete --- R/seqLogoApp.R | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/R/seqLogoApp.R b/R/seqLogoApp.R index d0fe118c..9a5356e6 100644 --- a/R/seqLogoApp.R +++ b/R/seqLogoApp.R @@ -94,22 +94,30 @@ seqLogoApp <- function(seqTableCsv, "xlsx files containing the retained rows of the table.\n\n")) seqlogo <- shiny::reactive({ - ## Replace ggseqlogo (removed from CRAN) with motifStack - seqs <- df[input$seqtable_rows_all, "seqWindow"] - pfm <- motifStack::pcm2pfm(Biostrings::consensusMatrix( - Biostrings::AAStringSet(seqs))) - pfm <- new("pfm", mat = pfm, name = "", - color = motifStack::colorset(alphabet = "AA", - colorScheme = "chemistry")) - pfm - # ggseqlogo::ggseqlogo(df[input$seqtable_rows_all, "seqWindow"], - # seq_type = "aa") + - # ggseqlogo::theme_logo(base_size = 15) + if (is.null(input$seqtable_rows_all)) { + NULL + } else { + ## Replace ggseqlogo (removed from CRAN) with motifStack + seqs <- df[input$seqtable_rows_all, "seqWindow"] + pfm <- motifStack::pcm2pfm(Biostrings::consensusMatrix( + Biostrings::AAStringSet(seqs))) + pfm <- new("pfm", mat = pfm, name = "", + color = motifStack::colorset(alphabet = "AA", + colorScheme = "chemistry")) + pfm + # ggseqlogo::ggseqlogo(df[input$seqtable_rows_all, "seqWindow"], + # seq_type = "aa") + + # ggseqlogo::theme_logo(base_size = 15) + } }) output$seqlogo <- shiny::renderPlot({ - motifStack::plotMotifLogo(seqlogo(), font = "sans", fontface = "plain") - ## With ggseqlogo - # seqlogo() + if (!is(seqlogo(), "pfm")) { + NULL + } else { + motifStack::plotMotifLogo(seqlogo(), font = "sans", fontface = "plain") + ## With ggseqlogo + # seqlogo() + } }) output$dl <- shiny::downloadHandler( From 53e9499939b9d617326ed9416acd7df5a3c382dd Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Wed, 11 Dec 2024 17:32:29 +0100 Subject: [PATCH 18/23] Fix seqLogoApp download (adapt to motifStack) --- R/seqLogoApp.R | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/R/seqLogoApp.R b/R/seqLogoApp.R index 9a5356e6..3b767542 100644 --- a/R/seqLogoApp.R +++ b/R/seqLogoApp.R @@ -137,8 +137,11 @@ seqLogoApp <- function(seqTableCsv, plotfile <- paste0(exportName, "-seqlogo-", timestamp, ".pdf") xlsxfile <- paste0(exportName, "-seqlogo-", timestamp, ".xlsx") csvfile <- paste0(exportName, "-seqlogo-", timestamp, ".csv") - ggplot2::ggsave(seqlogo(), file = plotfile, - width = 8, height = 5) + pdf(plotfile, width = 8, height = 5) + motifStack::plotMotifLogo(seqlogo(), font = "sans", fontface = "plain") + dev.off() + # ggplot2::ggsave(seqlogo(), file = plotfile, + # width = 8, height = 5) writexl::write_xlsx(df[input$seqtable_rows_all, ], path = xlsxfile) utils::write.table(df[input$seqtable_rows_all, ], From c61fe68581d5cd22afba04a9809a0f927eafd29f Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Tue, 31 Dec 2024 16:23:23 +0100 Subject: [PATCH 19/23] Update actions/cache --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 13b91dac..aa9c0e2f 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -58,7 +58,7 @@ jobs: - name: Cache R packages if: runner.os != 'Windows' && matrix.config.image == null - uses: actions/cache@v1 + uses: actions/cache@v4 with: path: ${{ env.R_LIBS_USER }} key: ${{ env.cache-version }}-${{ runner.os }}-bioc-${{ matrix.config.bioc }}-${{ hashFiles('depends.Rds') }} From 83f9a22aa1493e6f8bf2ac0b175779ce811f24a4 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Tue, 31 Dec 2024 16:25:54 +0100 Subject: [PATCH 20/23] Fix typo --- inst/extdata/process_basic_template.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/extdata/process_basic_template.Rmd b/inst/extdata/process_basic_template.Rmd index 1ccabbff..64f6a5ec 100644 --- a/inst/extdata/process_basic_template.Rmd +++ b/inst/extdata/process_basic_template.Rmd @@ -636,7 +636,7 @@ if (length(no_feats) > 0) { } ``` -# Number or detected features +# Number of detected features As a summary statistic, we calculate the number of features that are observed (non-missing) in at least `r minNbrValidValues` samples, or in at From 6b2f339baa89fbfd77cab2ef51d4256fcbfff052 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Tue, 31 Dec 2024 16:26:43 +0100 Subject: [PATCH 21/23] Name unnamed chunk --- inst/extdata/process_basic_template.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/extdata/process_basic_template.Rmd b/inst/extdata/process_basic_template.Rmd index 64f6a5ec..ab119224 100644 --- a/inst/extdata/process_basic_template.Rmd +++ b/inst/extdata/process_basic_template.Rmd @@ -642,7 +642,7 @@ As a summary statistic, we calculate the number of features that are observed (non-missing) in at least `r minNbrValidValues` samples, or in at least `r minNbrValidValues` samples from the same group. -```{r} +```{r nbr-features-table} ## Total number of observed features nbrFeaturesObsTotal <- length(which( rowSums(!assay(sce, aNames$assayImputIndic)) >= minNbrValidValues)) From 82a4971adb5f9d5c288f133e2d99fc2cdd91e881 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Tue, 31 Dec 2024 16:38:42 +0100 Subject: [PATCH 22/23] Update installation instructions --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 010163b7..12c35890 100644 --- a/README.md +++ b/README.md @@ -18,11 +18,12 @@ or Proteome Discoverer (TMT-labelled). ## Installation You can install the development version of `einprot` from -[GitHub](https://github.com/fmicompbio/einprot) with: +[GitHub](https://github.com/fmicompbio/einprot), e.g. using +[BiocManager](https://cran.r-project.org/web/packages/BiocManager/index.html): ``` r -install.packages("remotes") -remotes::install_github("fmicompbio/einprot") +install.packages("BiocManager") +BiocManager::install("fmicompbio/einprot") ``` ## Usage From a131578748b833ef7144ceb1690bfc4cb325af74 Mon Sep 17 00:00:00 2001 From: Charlotte Soneson Date: Tue, 31 Dec 2024 16:53:51 +0100 Subject: [PATCH 23/23] Only show the top 50 intersections --- inst/extdata/process_basic_template.Rmd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inst/extdata/process_basic_template.Rmd b/inst/extdata/process_basic_template.Rmd index ab119224..8801b972 100644 --- a/inst/extdata/process_basic_template.Rmd +++ b/inst/extdata/process_basic_template.Rmd @@ -1087,7 +1087,8 @@ tmpsign <- tmpsign[rowSums(tmpsign) > 0, , drop = FALSE] colnames(tmpsign) <- gsub("\\.showInVolcano$", "", colnames(tmpsign)) if (length(tests) > 1 && sum(colSums(tmpsign) > 0) > 1) { ComplexUpset::upset(tmpsign, intersect = colnames(tmpsign), - sort_intersections_by = "cardinality") + sort_intersections_by = "cardinality", + n_intersections = 50) } ```