From 7063aeb9b4b9ef7ef7f239185d427b090b26a64a Mon Sep 17 00:00:00 2001 From: Swaraj Patil Date: Sat, 21 Feb 2026 08:28:16 -0500 Subject: [PATCH 1/7] feat: Add ratio scale checkbox for response curves and update server logic in Statistical modeling and inference --- R/constants.R | 1 + R/module-statmodel-server.R | 2 +- R/statmodel-ui-options-visualization.R | 14 +++++++- tests/testthat/test-module-statmodel-server.R | 35 +++++++++++++++++++ tests/testthat/test-module-statmodel-ui.R | 35 +++++++++++++++++++ 5 files changed, 85 insertions(+), 2 deletions(-) diff --git a/R/constants.R b/R/constants.R index 4900342..12c8454 100644 --- a/R/constants.R +++ b/R/constants.R @@ -27,6 +27,7 @@ NAMESPACE_STATMODEL = list( visualization_heatmap_number_proteins = "visualization_heatmap_number_proteins", visualization_heatmap_cluster_option = "visualization_heatmap_cluster_option", visualization_response_curve_which_drug = "visualization_response_curve_which_drug", + visualization_response_curve_ratio_scale = "visualization_response_curve_ratio_scale", visualization_view_results = "visualization_view_results", visualization_download_plot_results = "visualization_download_plot_results", visualization_plot_output = "visualization_plot_output", diff --git a/R/module-statmodel-server.R b/R/module-statmodel-server.R index 3b91112..0881e62 100644 --- a/R/module-statmodel-server.R +++ b/R/module-statmodel-server.R @@ -230,7 +230,7 @@ statmodelServer = function(id, parent_session, loadpage_input, qc_input, data = dia_prepared, protein_name = input[[NAMESPACE_STATMODEL$visualization_which_protein]], drug_name = input[[NAMESPACE_STATMODEL$visualization_response_curve_which_drug]], - ratio_response = TRUE, + ratio_response = isTRUE(input[[NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale]]), show_ic50 = TRUE, add_ci = TRUE, transform_dose = input[[NAMESPACE_STATMODEL$modeling_response_curve_log_xaxis]], diff --git a/R/statmodel-ui-options-visualization.R b/R/statmodel-ui-options-visualization.R index 01609d5..6793134 100644 --- a/R/statmodel-ui-options-visualization.R +++ b/R/statmodel-ui-options-visualization.R @@ -104,7 +104,19 @@ create_heatmap_options <- function(ns) { create_response_curve_options <- function(ns) { tagList( uiOutput(ns(NAMESPACE_STATMODEL$visualization_which_protein)), - uiOutput(ns(NAMESPACE_STATMODEL$visualization_response_curve_which_drug)) + uiOutput(ns(NAMESPACE_STATMODEL$visualization_response_curve_which_drug)), + checkboxInput( + ns(NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale), + label = span( + "Use ratio scale", + class = "icon-wrapper", + icon("question-circle", lib = "font-awesome"), + div("When enabled, protein abundances are shown relative to the control (control = 1.0). Useful for drug experiments to display fold-change vs. untreated samples. Disable for non-drug experiments (e.g., time courses) where absolute abundances are more meaningful.", + class = "icon-tooltip", + style = "max-width: 280px; width: max-content; white-space: normal; line-height: 1.4; text-align: left;") + ), + value = TRUE + ) ) } diff --git a/tests/testthat/test-module-statmodel-server.R b/tests/testthat/test-module-statmodel-server.R index a6d9d24..011c16c 100644 --- a/tests/testthat/test-module-statmodel-server.R +++ b/tests/testthat/test-module-statmodel-server.R @@ -584,4 +584,39 @@ test_that("handles empty comparison list correctly", { expect_null(comp_list$dList) } ) +}) + +# ============================================================================ +# RESPONSE CURVE RATIO SCALE CHECKBOX TESTS +# ============================================================================ + +test_that("Ratio scale checkbox value is passed to visualizeResponseProtein", { + # Verify that the checkbox namespace is properly defined in constants + namespace <- MSstatsShiny:::NAMESPACE_STATMODEL + expect_true("visualization_response_curve_ratio_scale" %in% names(namespace), + info = "Ratio scale checkbox should be in NAMESPACE_STATMODEL") + + # Verify the checkbox value can be accessed + checkbox_id <- namespace$visualization_response_curve_ratio_scale + expect_equal(checkbox_id, "visualization_response_curve_ratio_scale", + info = "Checkbox ID should match the namespace key") +}) + +test_that("Ratio scale checkbox defaults to TRUE", { + # Verify that the checkbox has a default value of TRUE in the UI definition + ui <- MSstatsShiny:::create_response_curve_options(shiny::NS("test")) + ui_html <- htmltools::renderTags(ui)$html + + # Check that the checkbox is marked as checked (value = TRUE) + expect_true(grepl("checked=\"checked\"|checked", ui_html), + info = "Ratio scale checkbox should be checked by default") +}) + +test_that("Ratio scale checkbox can be toggled between TRUE and FALSE", { + # Simple test to verify the checkbox constant is defined and accessible + checkbox_id <- MSstatsShiny:::NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale + expect_equal(checkbox_id, "visualization_response_curve_ratio_scale", + info = "Ratio scale checkbox ID should be correctly defined") + expect_true(nchar(checkbox_id) > 0, + info = "Checkbox ID should not be empty") }) \ No newline at end of file diff --git a/tests/testthat/test-module-statmodel-ui.R b/tests/testthat/test-module-statmodel-ui.R index 7413436..c994167 100644 --- a/tests/testthat/test-module-statmodel-ui.R +++ b/tests/testthat/test-module-statmodel-ui.R @@ -211,4 +211,39 @@ test_that("Informative messages are present", { expect_true(grepl("Please add a comparison matrix before modeling", ui_html), info = "Matrix requirement message should be present") +}) + +# ============================================================================ +# 12. RESPONSE CURVE RATIO SCALE CHECKBOX TESTS +# ============================================================================ + +test_that("Response curve ratio scale checkbox is present in response curve options", { + ui <- MSstatsShiny:::create_response_curve_options(shiny::NS("test")) + ui_html <- htmltools::renderTags(ui)$html + + expect_true(grepl("Use ratio scale", ui_html), + info = "Ratio scale checkbox label should be present") + expect_true(grepl(MSstatsShiny:::NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale, ui_html), + info = "Ratio scale checkbox input ID should be present") +}) + +test_that("Response curve ratio scale checkbox has tooltip", { + ui <- MSstatsShiny:::create_response_curve_options(shiny::NS("test")) + ui_html <- htmltools::renderTags(ui)$html + + expect_true(grepl("icon-tooltip", ui_html), + info = "Tooltip class should be present") + expect_true(grepl("fa-circle-question|question-circle", ui_html), + info = "Question mark icon should be present") + expect_true(grepl("protein abundances are shown relative to the control", ui_html), + info = "Tooltip text should describe ratio scale") +}) + +test_that("Response curve ratio scale checkbox is checked by default", { + ui <- MSstatsShiny:::create_response_curve_options(shiny::NS("test")) + ui_html <- htmltools::renderTags(ui)$html + + # Check for the value = TRUE in the checkbox definition + expect_true(grepl("value = TRUE", ui_html) || grepl('checked["\']', ui_html), + info = "Ratio scale checkbox should be checked by default") }) \ No newline at end of file From f03f6dcf7d4991cf51f4922e8382cdeafab0bae2 Mon Sep 17 00:00:00 2001 From: Swaraj Patil Date: Sat, 21 Feb 2026 08:59:27 -0500 Subject: [PATCH 2/7] test: Update ratio scale checkbox tests for response curves in UI and server --- tests/testthat/test-module-statmodel-server.R | 19 +++---------------- tests/testthat/test-module-statmodel-ui.R | 2 +- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/tests/testthat/test-module-statmodel-server.R b/tests/testthat/test-module-statmodel-server.R index 011c16c..5084f22 100644 --- a/tests/testthat/test-module-statmodel-server.R +++ b/tests/testthat/test-module-statmodel-server.R @@ -590,33 +590,20 @@ test_that("handles empty comparison list correctly", { # RESPONSE CURVE RATIO SCALE CHECKBOX TESTS # ============================================================================ -test_that("Ratio scale checkbox value is passed to visualizeResponseProtein", { - # Verify that the checkbox namespace is properly defined in constants +test_that("visualization_response_curve_ratio_scale is present in NAMESPACE_STATMODEL", { namespace <- MSstatsShiny:::NAMESPACE_STATMODEL expect_true("visualization_response_curve_ratio_scale" %in% names(namespace), info = "Ratio scale checkbox should be in NAMESPACE_STATMODEL") - # Verify the checkbox value can be accessed checkbox_id <- namespace$visualization_response_curve_ratio_scale expect_equal(checkbox_id, "visualization_response_curve_ratio_scale", info = "Checkbox ID should match the namespace key") }) -test_that("Ratio scale checkbox defaults to TRUE", { - # Verify that the checkbox has a default value of TRUE in the UI definition +test_that("Ratio scale checkbox defaults to checked in UI", { ui <- MSstatsShiny:::create_response_curve_options(shiny::NS("test")) ui_html <- htmltools::renderTags(ui)$html - # Check that the checkbox is marked as checked (value = TRUE) - expect_true(grepl("checked=\"checked\"|checked", ui_html), + expect_true(grepl('type="checkbox"[^>]*checked|checked[^>]*type="checkbox"', ui_html), info = "Ratio scale checkbox should be checked by default") -}) - -test_that("Ratio scale checkbox can be toggled between TRUE and FALSE", { - # Simple test to verify the checkbox constant is defined and accessible - checkbox_id <- MSstatsShiny:::NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale - expect_equal(checkbox_id, "visualization_response_curve_ratio_scale", - info = "Ratio scale checkbox ID should be correctly defined") - expect_true(nchar(checkbox_id) > 0, - info = "Checkbox ID should not be empty") }) \ No newline at end of file diff --git a/tests/testthat/test-module-statmodel-ui.R b/tests/testthat/test-module-statmodel-ui.R index c994167..34ba2b4 100644 --- a/tests/testthat/test-module-statmodel-ui.R +++ b/tests/testthat/test-module-statmodel-ui.R @@ -244,6 +244,6 @@ test_that("Response curve ratio scale checkbox is checked by default", { ui_html <- htmltools::renderTags(ui)$html # Check for the value = TRUE in the checkbox definition - expect_true(grepl("value = TRUE", ui_html) || grepl('checked["\']', ui_html), + expect_true(grepl('checked["\']', ui_html), info = "Ratio scale checkbox should be checked by default") }) \ No newline at end of file From 4988395c57f5267e286d56ae4b02abecafdc9e4b Mon Sep 17 00:00:00 2001 From: Swaraj Patil Date: Sat, 21 Feb 2026 09:31:19 -0500 Subject: [PATCH 3/7] test: Update ratio scale checkbox tests for UI to use dynamic ID reference --- tests/testthat/test-module-statmodel-server.R | 8 -------- tests/testthat/test-module-statmodel-ui.R | 11 +++++++++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/tests/testthat/test-module-statmodel-server.R b/tests/testthat/test-module-statmodel-server.R index 5084f22..d5b1dc2 100644 --- a/tests/testthat/test-module-statmodel-server.R +++ b/tests/testthat/test-module-statmodel-server.R @@ -598,12 +598,4 @@ test_that("visualization_response_curve_ratio_scale is present in NAMESPACE_STAT checkbox_id <- namespace$visualization_response_curve_ratio_scale expect_equal(checkbox_id, "visualization_response_curve_ratio_scale", info = "Checkbox ID should match the namespace key") -}) - -test_that("Ratio scale checkbox defaults to checked in UI", { - ui <- MSstatsShiny:::create_response_curve_options(shiny::NS("test")) - ui_html <- htmltools::renderTags(ui)$html - - expect_true(grepl('type="checkbox"[^>]*checked|checked[^>]*type="checkbox"', ui_html), - info = "Ratio scale checkbox should be checked by default") }) \ No newline at end of file diff --git a/tests/testthat/test-module-statmodel-ui.R b/tests/testthat/test-module-statmodel-ui.R index 34ba2b4..6043a67 100644 --- a/tests/testthat/test-module-statmodel-ui.R +++ b/tests/testthat/test-module-statmodel-ui.R @@ -244,6 +244,13 @@ test_that("Response curve ratio scale checkbox is checked by default", { ui_html <- htmltools::renderTags(ui)$html # Check for the value = TRUE in the checkbox definition - expect_true(grepl('checked["\']', ui_html), - info = "Ratio scale checkbox should be checked by default") + ratio_scale_id <- paste0("test-", + MSstatsShiny:::NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale) + expect_true( + grepl( + paste0('id="', ratio_scale_id, '"[^>]*checked|checked[^>]*id="', ratio_scale_id, '"'), + ui_html + ), + info = "Ratio scale checkbox should be checked by default" + ) }) \ No newline at end of file From 07afa1a8780eca314d7209eba1d9101b09eb6b28 Mon Sep 17 00:00:00 2001 From: Swaraj Patil Date: Sat, 21 Feb 2026 09:48:50 -0500 Subject: [PATCH 4/7] test: Enhance tooltip validation for response curve ratio scale checkbox --- tests/testthat/test-module-statmodel-ui.R | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/testthat/test-module-statmodel-ui.R b/tests/testthat/test-module-statmodel-ui.R index 6043a67..661452d 100644 --- a/tests/testthat/test-module-statmodel-ui.R +++ b/tests/testthat/test-module-statmodel-ui.R @@ -231,8 +231,15 @@ test_that("Response curve ratio scale checkbox has tooltip", { ui <- MSstatsShiny:::create_response_curve_options(shiny::NS("test")) ui_html <- htmltools::renderTags(ui)$html - expect_true(grepl("icon-tooltip", ui_html), - info = "Tooltip class should be present") + ratio_scale_id <- paste0("test-", + MSstatsShiny:::NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale) + expect_true( + grepl( + paste0(ratio_scale_id, '.*icon-tooltip|icon-tooltip.*', ratio_scale_id), + ui_html + ), + info = "Tooltip class should be present near ratio scale checkbox" + ) expect_true(grepl("fa-circle-question|question-circle", ui_html), info = "Question mark icon should be present") expect_true(grepl("protein abundances are shown relative to the control", ui_html), From 0d9148cb339ac6b072a050ec180fc79a90fc3186 Mon Sep 17 00:00:00 2001 From: Swaraj Patil Date: Mon, 23 Feb 2026 21:44:59 -0500 Subject: [PATCH 5/7] fix: Update tooltip text for response curve ratio scale checkbox to specify chemoproteomic experiments --- R/statmodel-ui-options-visualization.R | 2 +- tests/testthat/test-module-statmodel-server.R | 70 ++++++++++++++++--- tests/testthat/test-module-statmodel-ui.R | 2 + 3 files changed, 65 insertions(+), 9 deletions(-) diff --git a/R/statmodel-ui-options-visualization.R b/R/statmodel-ui-options-visualization.R index 6793134..0ae5e01 100644 --- a/R/statmodel-ui-options-visualization.R +++ b/R/statmodel-ui-options-visualization.R @@ -111,7 +111,7 @@ create_response_curve_options <- function(ns) { "Use ratio scale", class = "icon-wrapper", icon("question-circle", lib = "font-awesome"), - div("When enabled, protein abundances are shown relative to the control (control = 1.0). Useful for drug experiments to display fold-change vs. untreated samples. Disable for non-drug experiments (e.g., time courses) where absolute abundances are more meaningful.", + div("When enabled, protein abundances are shown relative to the control (control = 1.0). Useful for chemoproteomic experiments to display fold-change vs. DMSO. Disable for non-chemoproteomic experiments (e.g., time courses) where absolute abundances are more meaningful.", class = "icon-tooltip", style = "max-width: 280px; width: max-content; white-space: normal; line-height: 1.4; text-align: left;") ), diff --git a/tests/testthat/test-module-statmodel-server.R b/tests/testthat/test-module-statmodel-server.R index d5b1dc2..3bea444 100644 --- a/tests/testthat/test-module-statmodel-server.R +++ b/tests/testthat/test-module-statmodel-server.R @@ -590,12 +590,66 @@ test_that("handles empty comparison list correctly", { # RESPONSE CURVE RATIO SCALE CHECKBOX TESTS # ============================================================================ -test_that("visualization_response_curve_ratio_scale is present in NAMESPACE_STATMODEL", { - namespace <- MSstatsShiny:::NAMESPACE_STATMODEL - expect_true("visualization_response_curve_ratio_scale" %in% names(namespace), - info = "Ratio scale checkbox should be in NAMESPACE_STATMODEL") - - checkbox_id <- namespace$visualization_response_curve_ratio_scale - expect_equal(checkbox_id, "visualization_response_curve_ratio_scale", - info = "Checkbox ID should match the namespace key") +test_that("Ratio scale checkbox value is passed to visualizeResponseProtein", { + # Track what ratio_response value gets passed to visualizeResponseProtein + captured_args <- NULL + mock_visualize <- function(...) { + captured_args <<- list(...) + # Return a minimal ggplot to avoid rendering errors + ggplot2::ggplot() + ggplot2::theme_void() + } + + testServer( + statmodelServer, + args = list( + parent_session = MockShinySession$new(), + loadpage_input = reactive({ + list( + BIO = "protein", + DDA_DIA = "DDA", + filetype = "standard", + proceed1 = 0 + ) + }), + qc_input = reactive({ + list(normalization = "equalizeMedians") + }), + get_data = reactive({ + create_mock_raw_data() + }), + preprocess_data = reactive({ + create_mock_data("DDA", "protein") + }) + ), + { + # Set up response curve comparison mode and build matrix + inputs <- list() + inputs[[NAMESPACE_STATMODEL$comparison_mode]] <- CONSTANTS_STATMODEL$comparison_mode_response_curve + inputs[[NAMESPACE_STATMODEL$comparisons_submit]] <- 1 + do.call(session$setInputs, inputs) + matrix_build() + + # Set ratio scale checkbox to TRUE + session$setInputs( + !!NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale := TRUE + ) + + # Verify isTRUE returns TRUE when checkbox is checked + expect_true( + isTRUE(input[[NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale]]), + info = "ratio_response should be TRUE when checkbox is checked" + ) + + # Set ratio scale checkbox to FALSE + session$setInputs( + !!NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale := FALSE + ) + + # Verify isTRUE returns FALSE when checkbox is unchecked + expect_false( + isTRUE(input[[NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale]]), + info = "ratio_response should be FALSE when checkbox is unchecked" + ) + } + ) }) \ No newline at end of file diff --git a/tests/testthat/test-module-statmodel-ui.R b/tests/testthat/test-module-statmodel-ui.R index 661452d..7f17db0 100644 --- a/tests/testthat/test-module-statmodel-ui.R +++ b/tests/testthat/test-module-statmodel-ui.R @@ -244,6 +244,8 @@ test_that("Response curve ratio scale checkbox has tooltip", { info = "Question mark icon should be present") expect_true(grepl("protein abundances are shown relative to the control", ui_html), info = "Tooltip text should describe ratio scale") + expect_true(grepl("chemoproteomic", ui_html), + info = "Tooltip text should mention chemoproteomic experiments") }) test_that("Response curve ratio scale checkbox is checked by default", { From 91ccfc85808972499ce1e963c34771abaab73dbc Mon Sep 17 00:00:00 2001 From: Swaraj Patil Date: Tue, 24 Feb 2026 00:52:53 -0500 Subject: [PATCH 6/7] test: Refactor ratio scale checkbox tests for clarity and conciseness --- tests/testthat/test-module-statmodel-server.R | 21 +------------------ tests/testthat/test-module-statmodel-ui.R | 11 ++-------- 2 files changed, 3 insertions(+), 29 deletions(-) diff --git a/tests/testthat/test-module-statmodel-server.R b/tests/testthat/test-module-statmodel-server.R index 3bea444..a40f2d8 100644 --- a/tests/testthat/test-module-statmodel-server.R +++ b/tests/testthat/test-module-statmodel-server.R @@ -590,15 +590,7 @@ test_that("handles empty comparison list correctly", { # RESPONSE CURVE RATIO SCALE CHECKBOX TESTS # ============================================================================ -test_that("Ratio scale checkbox value is passed to visualizeResponseProtein", { - # Track what ratio_response value gets passed to visualizeResponseProtein - captured_args <- NULL - mock_visualize <- function(...) { - captured_args <<- list(...) - # Return a minimal ggplot to avoid rendering errors - ggplot2::ggplot() + ggplot2::theme_void() - } - +test_that("Ratio scale checkbox input can be toggled", { testServer( statmodelServer, args = list( @@ -622,19 +614,10 @@ test_that("Ratio scale checkbox value is passed to visualizeResponseProtein", { }) ), { - # Set up response curve comparison mode and build matrix - inputs <- list() - inputs[[NAMESPACE_STATMODEL$comparison_mode]] <- CONSTANTS_STATMODEL$comparison_mode_response_curve - inputs[[NAMESPACE_STATMODEL$comparisons_submit]] <- 1 - do.call(session$setInputs, inputs) - matrix_build() - # Set ratio scale checkbox to TRUE session$setInputs( !!NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale := TRUE ) - - # Verify isTRUE returns TRUE when checkbox is checked expect_true( isTRUE(input[[NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale]]), info = "ratio_response should be TRUE when checkbox is checked" @@ -644,8 +627,6 @@ test_that("Ratio scale checkbox value is passed to visualizeResponseProtein", { session$setInputs( !!NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale := FALSE ) - - # Verify isTRUE returns FALSE when checkbox is unchecked expect_false( isTRUE(input[[NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale]]), info = "ratio_response should be FALSE when checkbox is unchecked" diff --git a/tests/testthat/test-module-statmodel-ui.R b/tests/testthat/test-module-statmodel-ui.R index 7f17db0..45ad295 100644 --- a/tests/testthat/test-module-statmodel-ui.R +++ b/tests/testthat/test-module-statmodel-ui.R @@ -231,15 +231,8 @@ test_that("Response curve ratio scale checkbox has tooltip", { ui <- MSstatsShiny:::create_response_curve_options(shiny::NS("test")) ui_html <- htmltools::renderTags(ui)$html - ratio_scale_id <- paste0("test-", - MSstatsShiny:::NAMESPACE_STATMODEL$visualization_response_curve_ratio_scale) - expect_true( - grepl( - paste0(ratio_scale_id, '.*icon-tooltip|icon-tooltip.*', ratio_scale_id), - ui_html - ), - info = "Tooltip class should be present near ratio scale checkbox" - ) + expect_true(grepl("icon-tooltip", ui_html), + info = "Tooltip class should be present") expect_true(grepl("fa-circle-question|question-circle", ui_html), info = "Question mark icon should be present") expect_true(grepl("protein abundances are shown relative to the control", ui_html), From 75eaf2e9675c4adb77ae283bf4c67c0c2ddb3f49 Mon Sep 17 00:00:00 2001 From: tonywu1999 Date: Tue, 24 Feb 2026 10:21:46 -0500 Subject: [PATCH 7/7] Clarify tooltip for ratio scale option Updated tooltip text for ratio scale option to clarify meaning of protein abundance values. --- R/statmodel-ui-options-visualization.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/statmodel-ui-options-visualization.R b/R/statmodel-ui-options-visualization.R index 0ae5e01..ba68fd9 100644 --- a/R/statmodel-ui-options-visualization.R +++ b/R/statmodel-ui-options-visualization.R @@ -111,7 +111,7 @@ create_response_curve_options <- function(ns) { "Use ratio scale", class = "icon-wrapper", icon("question-circle", lib = "font-awesome"), - div("When enabled, protein abundances are shown relative to the control (control = 1.0). Useful for chemoproteomic experiments to display fold-change vs. DMSO. Disable for non-chemoproteomic experiments (e.g., time courses) where absolute abundances are more meaningful.", + div("When enabled, protein abundances are shown relative to the control (control = 1.0). Useful for chemoproteomic experiments to display fold-change vs. DMSO. Disable for non-chemoproteomic experiments (e.g., time courses) where protein abundance values are more meaningful.", class = "icon-tooltip", style = "max-width: 280px; width: max-content; white-space: normal; line-height: 1.4; text-align: left;") ), @@ -139,4 +139,4 @@ create_plot_action_buttons <- function(ns) { actionButton(ns(NAMESPACE_STATMODEL$visualization_view_results), "View plot in browser (only for one comparison/protein)"), downloadButton(ns(NAMESPACE_STATMODEL$visualization_download_plot_results), "Save plot results as Zip") ) -} \ No newline at end of file +}