From fcf792a81764e0a27ef8c3f632a15e4e9055f458 Mon Sep 17 00:00:00 2001 From: Paul Jonas Jost <70631928+PaulJonasJost@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:39:49 +0200 Subject: [PATCH 1/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 14def1cb..3d20ec18 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ General Test: - A screen recording of cOmicsArt is available at -- A snapshot upon publication can be found on Zenodo: very last thing; +- A snapshot upon publication can be found on Zenodo: Note, that you can find within the branches the Zenodo based branches. From 8bf96b5da6a04c4e1ebf51520984c68b6afb682f Mon Sep 17 00:00:00 2001 From: Paul Jonas Jost <70631928+PaulJonasJost@users.noreply.github.com> Date: Tue, 10 Sep 2024 15:09:25 +0200 Subject: [PATCH 2/8] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 3d20ec18..432e9fc4 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ Readme](docs/assets/images/cOmicsART_README.png) *Image generated using DALL-E by OpenAI. Adjusted by Lea Seep* +The availability of bulk-omic data is steadily increasing, necessitating collaborative efforts between experimental and computational researchers. While software tools with graphical user interfaces (GUIs) enable rapid and interactive data assessment, they are limited to pre-implemented methods, often requiring transitions to custom code for further adjustments. +However, most available tools lack GUI-independent reproducibility such as direct integration with R, resulting in very limited support for transition. Therefore, we introduce the **customizable Omics Analysis and reporting tool – cOmicsArt**. cOmicsArt aims to enhance collaboration through seamless integration of GUI-based analysis with R. The GUI allows researchers to perform user-friendly exploratory and statistical analyses with interactive visualizations and automatic documentation. +Downloadable R scripts and results ensure reproducibility and smooth integration with R, supporting both novice and experienced programmers by enabling easy customizations and serving as a foundation for more advanced analyses. This versatility also allows for usage in educational settings guiding students from GUI-based analysis to R Code. + Please refer to the following listed links for further information on the respective topics: From 4231db5d858509b12f48d6724bfa7db19b7393df Mon Sep 17 00:00:00 2001 From: Lea Seep <74967328+LeaSeep@users.noreply.github.com> Date: Thu, 19 Dec 2024 14:25:39 +0100 Subject: [PATCH 3/8] Updates based on thorough first user assessment (#426) * changed to show debug text again; to let user know what is going on; addresses #421 * Make things clearer in layout, incl. button design, placement, tip highlights and promoting more parallelism (#419, #413, #414) * changes and clean up to the docs to easen the retrieval of information * indicate that batch collection is optional, adding explicit help file - addresses #418 * making top links more obvious; attention no order change #415 as suggested * make cOmicsArt print prettier * Crash fix sig ana (#420) * add hiding of tabs to avoid usage of results; fixes #417 * fixed to work with native SumExp next to cOmicsArt created #404 (#425) --- docs/interface-details/02-selection.md | 2 +- docs/interface-details/03-pre-processing.md | 2 +- program/shinyApp/R/data_selection/ui.R | 29 ++-- program/shinyApp/R/enrichment_analysis/ui.R | 3 +- program/shinyApp/R/heatmap/ui.R | 2 +- program/shinyApp/R/help_tab/ui.R | 14 +- program/shinyApp/R/module_DownloadReport.R | 3 +- program/shinyApp/R/pca/ui.R | 18 +-- program/shinyApp/R/pre_processing/ui.R | 4 +- program/shinyApp/R/sample_correlation/ui.R | 2 +- program/shinyApp/R/significance_analysis/ui.R | 3 +- .../shinyApp/R/single_gene_visualisation/ui.R | 3 +- .../DataSelection_DataUploadFileInput.md | 10 +- .../helpfiles/DataSelection_MetaData.md | 6 +- .../helpfiles/DataSelection_RowSelection.md | 6 +- .../helpfiles/DataSelection_SummarizedExp.md | 6 +- .../DataSelection_UploadInspection.md | 6 +- program/shinyApp/helpfiles/EA_Options.md | 6 +- .../shinyApp/helpfiles/Heatmap_Aesthetics.md | 6 +- .../helpfiles/Heatmap_FurtherOptions.md | 7 +- program/shinyApp/helpfiles/Heatmap_Options.md | 6 +- .../helpfiles/Heatmap_RowAnnoBased.md | 6 +- program/shinyApp/helpfiles/PCA_Choices.md | 6 +- .../shinyApp/helpfiles/PreProcessing_Batch.md | 12 ++ .../shinyApp/helpfiles/PreProcessing_DESeq.md | 6 +- .../helpfiles/PreProcessing_Procedures.md | 6 +- .../shinyApp/helpfiles/SampleCorr_Choices.md | 7 +- .../shinyApp/helpfiles/SampleCorr_Color.md | 6 +- .../helpfiles/SampleCorr_Downloads.md | 6 +- program/shinyApp/helpfiles/SigAna_Choices.md | 7 +- .../helpfiles/SigAna_Intersections.md | 6 +- program/shinyApp/helpfiles/SigAna_Vis.md | 7 +- .../shinyApp/helpfiles/SingleGene_Options.md | 8 +- .../shinyApp/helpfiles/SingleGene_Select.md | 6 +- .../shinyApp/helpfiles/TakingNotesMD_help.md | 6 +- .../shinyApp/helpfiles/helpTab_question.md | 6 +- program/shinyApp/server.R | 148 +++++++++++++++--- program/shinyApp/ui.R | 47 +++++- 38 files changed, 353 insertions(+), 87 deletions(-) create mode 100644 program/shinyApp/helpfiles/PreProcessing_Batch.md diff --git a/docs/interface-details/02-selection.md b/docs/interface-details/02-selection.md index 5393058a..b4f4cc05 100644 --- a/docs/interface-details/02-selection.md +++ b/docs/interface-details/02-selection.md @@ -61,7 +61,7 @@ Very similar to the `File Input`, but replacing the sample annotation with the - **Omic Type that is uploaded**: Select the type of omics data you are uploading (Transcriptomics, Lipidomics, Metabolomics). -- **Start straight away with a test-dataset!**: Click this button to start with a test dataset. +- **Upload data**: Click this button to start with a test dataset. ## Main Panel πŸ’‘ diff --git a/docs/interface-details/03-pre-processing.md b/docs/interface-details/03-pre-processing.md index b5a8c064..04af179a 100644 --- a/docs/interface-details/03-pre-processing.md +++ b/docs/interface-details/03-pre-processing.md @@ -171,7 +171,7 @@ The options (and steps) of preprocessing are as follows: --- -### Select Batch Effect Column +### [optional] Select Batch Effect Column Choose a batch effect if applicable. Possible choices are taken from the sample annotation columns. **Important**: This step is **optional**, as sometimes no batches need diff --git a/program/shinyApp/R/data_selection/ui.R b/program/shinyApp/R/data_selection/ui.R index 51c2d377..aa5d2f78 100644 --- a/program/shinyApp/R/data_selection/ui.R +++ b/program/shinyApp/R/data_selection/ui.R @@ -44,7 +44,7 @@ data_selection_sidebar_panel <- sidebarPanel( label = "Upload new data", width = "80%", icon = icon('paper-plane'), - style = "color: #fffff; background-color: #90DBF4; border-color: #000000" + style = "color: black; background-color: white; border-color: black;" ), hr(style = "border-top: 1px solid #858585;") ), @@ -71,7 +71,7 @@ data_selection_sidebar_panel <- sidebarPanel( label = "Upload new data", width = "80%", icon = icon('paper-plane'), - style = "color: #fffff; background-color: #90DBF4; border-color: #000000", + style = "color: black; background-color: white; border-color: black;" ), hr(style = "border-top: 1px solid #858585;") ), @@ -111,7 +111,7 @@ data_selection_sidebar_panel <- sidebarPanel( label = "Upload new data", width = "80%", icon = icon('paper-plane'), - style = "color: #fffff; background-color: #90DBF4; border-color: #000000", + style = "color: black; background-color: white; border-color: black;" ), hr(style = "border-top: 1px solid #858585;") ), @@ -130,9 +130,8 @@ data_selection_sidebar_panel <- sidebarPanel( br(), actionButton( inputId = "EasyTestForUser", - label = "Start straight away with a test-dataset!", - icon = icon('paper-plane'), - style = "color: #fffff; background-color: #90DBF4; border-color: #000000" + label = "Upload test data", + style = "color: black; background-color: white; border-color: black;" ), hr(style = "border-top: 1px solid #858585;") ) @@ -145,6 +144,7 @@ data_selection_main_panel <- mainPanel( div(id ="InfoBox_DataSelection", htmlOutput(outputId = "debug", container = pre) ), + div(id = "mainPanel_other", # add link to toggle on the div geneAnno_toggle actionButton( inputId = "geneAnno_toggle_button", @@ -164,7 +164,7 @@ data_selection_main_panel <- mainPanel( fluidRow( column(5, actionButton( - "select_data", "Select Data", + "select_data", "[optional] Select Data", width = "100%", icon = icon('filter'), style = "color: #fffff; background-color: white; border-color: #000000" @@ -175,10 +175,18 @@ data_selection_main_panel <- mainPanel( condition = "input.select_data % 2 == 0", fluidRow(column(5, actionButton( - "use_full_data", "Use Full Dataset", + "use_full_data", "Go to Preprocessing", width = "100%", - icon = icon('rocket'), - style = "color: #fffff; background-color: #70BF4F47; border-color: #000000" + icon = icon("fas fa-mouse-pointer"), + style = " + background-color: white; + color: black; + border: 2px solid darkgrey; + font-size: 15px; + font-weight: bold; + box-shadow: 3px 3px 5px rgba(255, 0, 0, 0.8); + padding: 5px 5px; + border-radius: 10px;" ) )) ), @@ -222,6 +230,7 @@ data_selection_main_panel <- mainPanel( inputId = "refresh1", label = "YOu should not be seeing this" )) + ) ) diff --git a/program/shinyApp/R/enrichment_analysis/ui.R b/program/shinyApp/R/enrichment_analysis/ui.R index 311e8468..be1418d3 100644 --- a/program/shinyApp/R/enrichment_analysis/ui.R +++ b/program/shinyApp/R/enrichment_analysis/ui.R @@ -105,7 +105,8 @@ ea_sidebar <- function(ns){ uiOutput(outputId = ns("UniverseOfGene_ui")), actionButton( inputId = ns("enrichmentGO"), - label = "Get Enrichment Analysis" + label = "Get Enrichment Analysis", + icon = icon("fas fa-mouse-pointer") ), hr(style = "border-top: 1px solid #000000;"), uiOutput(outputId = ns("KeggPathwayID_ui")), diff --git a/program/shinyApp/R/heatmap/ui.R b/program/shinyApp/R/heatmap/ui.R index dadd44ad..40d61928 100644 --- a/program/shinyApp/R/heatmap/ui.R +++ b/program/shinyApp/R/heatmap/ui.R @@ -56,7 +56,7 @@ heatmap_sidebar<- function(ns){ actionButton( inputId = ns("Do_Heatmap"), label = "Get Heatmap", - icon(name = "fas fa-laptop-code") + icon(name = "fas fa-mouse-pointer") ), hr(style = "border-top: 1px solid #000000;"), h5("Aesthetics") %>% helper(type = "markdown", content = "Heatmap_Aesthetics"), diff --git a/program/shinyApp/R/help_tab/ui.R b/program/shinyApp/R/help_tab/ui.R index 8b8213b2..19e95cb5 100644 --- a/program/shinyApp/R/help_tab/ui.R +++ b/program/shinyApp/R/help_tab/ui.R @@ -17,7 +17,7 @@ help_tab_sidebar_panel <- sidebarPanel( inputId = "get_help", label = "GO!", icon = icon('paper-plane'), - style = "color: #fffff; background-color: #90DBF4; border-color: #000000" + style = "color: black; background-color: white; border-color: black;" ), div( id = "horizontalLine", @@ -46,7 +46,17 @@ help_tab_sidebar_panel <- sidebarPanel( help_tab_main_panel <- mainPanel( id = "mainPanel_help_tab", h4("Main Panel",id = "Test"), - actionButton("start_tour", span(icon("hand-pointer"),"Tour around cOmicsArt"),style = "background-color: #00c6ff; color: white; padding: 10px 20px; border-radius: 10px; transition: transform 0.2s;"), + actionButton( + "start_tour", + span(icon("hand-pointer"),"Tour around cOmicsArt"), + style = " + background-color: #00c6ff; + color: white; + padding: 10px 20px; + border-radius: 10px; + font-size: 15px; + font-weight: bold; + transition: transform 0.2s;"), div( id = "help_tab_info", htmlOutput(outputId = "help_tab_info", container = pre), diff --git a/program/shinyApp/R/module_DownloadReport.R b/program/shinyApp/R/module_DownloadReport.R index 0dd5cd8f..7ac52141 100644 --- a/program/shinyApp/R/module_DownloadReport.R +++ b/program/shinyApp/R/module_DownloadReport.R @@ -5,7 +5,8 @@ DownloadReport_ui <- function(id){ tagList( actionLink( inputId = ns("DownloadReport"), - label = "Download Report (as html)" + label = tagList(icon("download"), "Download Report (as html)"), + style = "font-size: 18px; font-weight: bold; color: black;text-decoration: underline;" ) ) } diff --git a/program/shinyApp/R/pca/ui.R b/program/shinyApp/R/pca/ui.R index 83e5cbce..c4f9c786 100644 --- a/program/shinyApp/R/pca/ui.R +++ b/program/shinyApp/R/pca/ui.R @@ -17,41 +17,41 @@ pca_sidebar_panel <- function(ns){ uiOutput(outputId = ns("SampleAnnotationTypes_pca_ui")), uiOutput(outputId = ns("sample_selection_pca_ui")), # Scale data to unit variance y/n - radioGroupButtons( + radioButtons( inputId = ns("scale_data"), label = "Scale data to unit variance?", choices = c("Yes","No"), - direction = "horizontal", + # direction = "horizontal", selected = "No" ), ### start pca --- actionButton( inputId = ns("Do_PCA"), label = "Get PCA", - icon("fas fa-laptop-code") + icon("fas fa-mouse-pointer") ), ### further visualizations hr(style = "border-top: 1px solid #000000;"), uiOutput(outputId = ns("coloring_options_ui")), - radioGroupButtons( + radioButtons( inputId = ns("x_axis_selection"), label = "PC for x-Axis", choices = c("PC1","PC2", "PC3", "PC4"), - direction = "vertical", + # direction = "horizontal", selected = "PC1" ), - radioGroupButtons( + radioButtons( inputId = ns("y_axis_selection"), label = "PC for y-Axis", choices = c("PC1","PC2", "PC3", "PC4"), - direction = "vertical", + # direction = "horizontal", selected = "PC2" ), - radioGroupButtons( + radioButtons( inputId = ns("Show_loadings"), label = "Plot Loadings on top? (currently top 5)", choices = c("Yes","No"), - direction = "horizontal", + # direction = "horizontal", selected = "No" ), helpText("Note: if you would like to change the annotation of the indicated loading vectors please select an option the the tab Loadings"), diff --git a/program/shinyApp/R/pre_processing/ui.R b/program/shinyApp/R/pre_processing/ui.R index b25157a6..836de142 100644 --- a/program/shinyApp/R/pre_processing/ui.R +++ b/program/shinyApp/R/pre_processing/ui.R @@ -21,11 +21,11 @@ pre_processing_sidebar_panel <- sidebarPanel( selected = "none" ) %>% helper(type = "markdown", content = "PreProcessing_Procedures"), uiOutput(outputId = "DESeq_formula_sub_ui"), - uiOutput(outputId = "batch_effect_ui"), + uiOutput(outputId = "batch_effect_ui") %>% helper(type = "markdown", content = "PreProcessing_Batch"), actionButton( inputId = "Do_preprocessing", label = "Get Pre-Processing", - icon(name = "fas fa-laptop-code") + icon(name = "fas fa-mouse-pointer") ), hr(style = "border-top: 1px solid #000000;"), uiOutput("violin_plot_color_ui") diff --git a/program/shinyApp/R/sample_correlation/ui.R b/program/shinyApp/R/sample_correlation/ui.R index 7b00a825..aaf53da9 100644 --- a/program/shinyApp/R/sample_correlation/ui.R +++ b/program/shinyApp/R/sample_correlation/ui.R @@ -12,7 +12,7 @@ sampleCorrelation_sidebar_panel <- function(ns){ actionButton( inputId = ns("Do_SampleCorrelation"), label = "Get Sample Correlation", - icon("fas fa-laptop-code") + icon("fas fa-mouse-pointer") ), hr(style = "border-top: 1px solid #000000;"), uiOutput(outputId = ns("SampleAnnotationChoice_ui")) %>% helper(type = "markdown", content = "SampleCorr_Color"), diff --git a/program/shinyApp/R/significance_analysis/ui.R b/program/shinyApp/R/significance_analysis/ui.R index f6efa6d7..ce6acb56 100644 --- a/program/shinyApp/R/significance_analysis/ui.R +++ b/program/shinyApp/R/significance_analysis/ui.R @@ -27,7 +27,8 @@ significance_analysis_sidebar_ui<- function(ns){ # Button to start analysis actionButton( inputId = ns("significanceGo"), - label = "Get Significance Analysis" + label = "Get Significance Analysis", + icon = icon("fas fa-mouse-pointer") ), hidden(actionButton( inputId = ns("refreshUI"), diff --git a/program/shinyApp/R/single_gene_visualisation/ui.R b/program/shinyApp/R/single_gene_visualisation/ui.R index 0a5c4a80..7565bddb 100644 --- a/program/shinyApp/R/single_gene_visualisation/ui.R +++ b/program/shinyApp/R/single_gene_visualisation/ui.R @@ -8,7 +8,8 @@ single_gene_visualisation_sidebar_ui<- function(ns){ actionButton( inputId = ns("singleGeneGo"), - label = "Get Single Gene Visualisation" + label = "Get Single Gene Visualisation", + icon = icon("fas fa-mouse-pointer") ), # hidden Button to refresh the UI hidden(actionButton( diff --git a/program/shinyApp/helpfiles/DataSelection_DataUploadFileInput.md b/program/shinyApp/helpfiles/DataSelection_DataUploadFileInput.md index e05652e1..4425c29f 100644 --- a/program/shinyApp/helpfiles/DataSelection_DataUploadFileInput.md +++ b/program/shinyApp/helpfiles/DataSelection_DataUploadFileInput.md @@ -1,10 +1,14 @@ ### Data Upload via File Input *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
With `Data upload` you can upload your data to the server via explicit csv files.
-The files must be in the following format:
+The files must be in the following format:
1. data-matrix (.csv)
- contains the actual data, e.g. counts
- must have the samples (e.g. mouse 1) in the columns and a **unique** naming as @@ -22,7 +26,7 @@ The files must be in the following format:
Need help to prepare your data? Check out our Excel Workbook: UploadeHelpcOmicsArt.xlsx. -Some pitfalls you may fall into: +Some pitfalls you may fall into: * The files must be uploaded at their respective position (**data matrix, sample annotation, entities annotation**). * The files need to be **.csv** files, which also means that they need to be comma diff --git a/program/shinyApp/helpfiles/DataSelection_MetaData.md b/program/shinyApp/helpfiles/DataSelection_MetaData.md index 9ff2171f..f648db05 100644 --- a/program/shinyApp/helpfiles/DataSelection_MetaData.md +++ b/program/shinyApp/helpfiles/DataSelection_MetaData.md @@ -1,7 +1,11 @@ ### Data Upload via File Input + Meta Data Sheet *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
With `Data upload` you can upload your data to the server via explicit csv files.
The files must be in the following format:
diff --git a/program/shinyApp/helpfiles/DataSelection_RowSelection.md b/program/shinyApp/helpfiles/DataSelection_RowSelection.md index 270df44e..82d3ed36 100644 --- a/program/shinyApp/helpfiles/DataSelection_RowSelection.md +++ b/program/shinyApp/helpfiles/DataSelection_RowSelection.md @@ -1,7 +1,11 @@ ### Data Selection by Columns and Rows *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
With `Row selection` you can choose the entities (e.g. genes) you want to include in the analysis. diff --git a/program/shinyApp/helpfiles/DataSelection_SummarizedExp.md b/program/shinyApp/helpfiles/DataSelection_SummarizedExp.md index a39d68e1..69a721e4 100644 --- a/program/shinyApp/helpfiles/DataSelection_SummarizedExp.md +++ b/program/shinyApp/helpfiles/DataSelection_SummarizedExp.md @@ -1,7 +1,11 @@ ### Data Upload via Precompiled Data *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
With this option, you can upload previously used data. This allows you to upload everything at once. Additionally, you can upload results from previous analyses. It is diff --git a/program/shinyApp/helpfiles/DataSelection_UploadInspection.md b/program/shinyApp/helpfiles/DataSelection_UploadInspection.md index 5dbf4416..8cf61dfa 100644 --- a/program/shinyApp/helpfiles/DataSelection_UploadInspection.md +++ b/program/shinyApp/helpfiles/DataSelection_UploadInspection.md @@ -1,7 +1,11 @@ ### Data Quality Check - Visual Inspection *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
Using the `Upload visual inspection` tab, you can see the uploaded data and perform a data quality check. diff --git a/program/shinyApp/helpfiles/EA_Options.md b/program/shinyApp/helpfiles/EA_Options.md index 86e7be2a..88733f24 100644 --- a/program/shinyApp/helpfiles/EA_Options.md +++ b/program/shinyApp/helpfiles/EA_Options.md @@ -1,7 +1,11 @@ ## Enrichment Analysis Options *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
In cOmicsArt you can do either a gene set enrichment analysis or an over-representation analysis. The options for both analyses are described below. For more details read here on diff --git a/program/shinyApp/helpfiles/Heatmap_Aesthetics.md b/program/shinyApp/helpfiles/Heatmap_Aesthetics.md index c4b143f4..060e2f71 100644 --- a/program/shinyApp/helpfiles/Heatmap_Aesthetics.md +++ b/program/shinyApp/helpfiles/Heatmap_Aesthetics.md @@ -1,7 +1,11 @@ ## Heatmap Aesthetics Options --- -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
**1. Choose Variable to Color the Samples After:** diff --git a/program/shinyApp/helpfiles/Heatmap_FurtherOptions.md b/program/shinyApp/helpfiles/Heatmap_FurtherOptions.md index d689fe4c..4de873af 100644 --- a/program/shinyApp/helpfiles/Heatmap_FurtherOptions.md +++ b/program/shinyApp/helpfiles/Heatmap_FurtherOptions.md @@ -1,7 +1,12 @@ ## Log Fold Change (LFC) Ordering Options *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
+ **1. Choose Type for LFC-Based Ordering:** diff --git a/program/shinyApp/helpfiles/Heatmap_Options.md b/program/shinyApp/helpfiles/Heatmap_Options.md index 85aab78e..0178dddb 100644 --- a/program/shinyApp/helpfiles/Heatmap_Options.md +++ b/program/shinyApp/helpfiles/Heatmap_Options.md @@ -1,7 +1,11 @@ ## Row Selection Options *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
1. **Batch Correction**: Use batch-corrected data if available (set in Pre-processing). diff --git a/program/shinyApp/helpfiles/Heatmap_RowAnnoBased.md b/program/shinyApp/helpfiles/Heatmap_RowAnnoBased.md index 6afb0af6..ab9b1592 100644 --- a/program/shinyApp/helpfiles/Heatmap_RowAnnoBased.md +++ b/program/shinyApp/helpfiles/Heatmap_RowAnnoBased.md @@ -1,7 +1,11 @@ ## Additional Row Selection Options --- -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
These options only make sense if you selected `rowAnno_based` in the `Row Selection`. They serve to filter the row entities which to include in the heatmap. diff --git a/program/shinyApp/helpfiles/PCA_Choices.md b/program/shinyApp/helpfiles/PCA_Choices.md index 955f989a..6201bc1d 100644 --- a/program/shinyApp/helpfiles/PCA_Choices.md +++ b/program/shinyApp/helpfiles/PCA_Choices.md @@ -1,7 +1,11 @@ ## Principal Component Analysis (PCA) Options *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
A principal component analysis (PCA) is a linear dimensionality reduction technique to visualize clusters within your data. For a small introduction on PCAs, please refer to diff --git a/program/shinyApp/helpfiles/PreProcessing_Batch.md b/program/shinyApp/helpfiles/PreProcessing_Batch.md new file mode 100644 index 00000000..53c7e630 --- /dev/null +++ b/program/shinyApp/helpfiles/PreProcessing_Batch.md @@ -0,0 +1,12 @@ +## Batch Correction +*** +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
+ +### Key Considerations: +Batch correction can be performed during pre-processing if the batch information is already included in your sample annotation. When using DESeq processing, the batch-corrected data will be utilized for visualization purposes. However, for significance analysis, the batch will be treated as a factor. + +--- \ No newline at end of file diff --git a/program/shinyApp/helpfiles/PreProcessing_DESeq.md b/program/shinyApp/helpfiles/PreProcessing_DESeq.md index 41cbdf6a..34d67ebd 100644 --- a/program/shinyApp/helpfiles/PreProcessing_DESeq.md +++ b/program/shinyApp/helpfiles/PreProcessing_DESeq.md @@ -1,7 +1,11 @@ ## DESeq Factor Choices *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
### Understanding the Design Matrix in DESeq2 diff --git a/program/shinyApp/helpfiles/PreProcessing_Procedures.md b/program/shinyApp/helpfiles/PreProcessing_Procedures.md index 29b7cb16..f7da38d4 100644 --- a/program/shinyApp/helpfiles/PreProcessing_Procedures.md +++ b/program/shinyApp/helpfiles/PreProcessing_Procedures.md @@ -1,6 +1,10 @@ ## Data Preprocessing *** -πŸ’‘ **Tip**: For detailed information, visit this link. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
### Key Steps: 1. **Cleaning:** diff --git a/program/shinyApp/helpfiles/SampleCorr_Choices.md b/program/shinyApp/helpfiles/SampleCorr_Choices.md index e3694b92..1e298b17 100644 --- a/program/shinyApp/helpfiles/SampleCorr_Choices.md +++ b/program/shinyApp/helpfiles/SampleCorr_Choices.md @@ -1,7 +1,10 @@ ## Correlation Method *** -πŸ’‘ **Tip**: For details, visit this link. - +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
### Methods: 1. **Pearson:** diff --git a/program/shinyApp/helpfiles/SampleCorr_Color.md b/program/shinyApp/helpfiles/SampleCorr_Color.md index 250b619f..49c86a05 100644 --- a/program/shinyApp/helpfiles/SampleCorr_Color.md +++ b/program/shinyApp/helpfiles/SampleCorr_Color.md @@ -1,7 +1,11 @@ ## Color Annotation *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
You can choose **Multiple** options. Each option is a column from the `sample annotation table`. The clustered samples will be colored on the right side by your diff --git a/program/shinyApp/helpfiles/SampleCorr_Downloads.md b/program/shinyApp/helpfiles/SampleCorr_Downloads.md index 4932c074..abc414a1 100644 --- a/program/shinyApp/helpfiles/SampleCorr_Downloads.md +++ b/program/shinyApp/helpfiles/SampleCorr_Downloads.md @@ -1,7 +1,11 @@ ## Download Helper *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
These buttons serve for various downloading purposes. diff --git a/program/shinyApp/helpfiles/SigAna_Choices.md b/program/shinyApp/helpfiles/SigAna_Choices.md index 049904e7..2e4de2d3 100644 --- a/program/shinyApp/helpfiles/SigAna_Choices.md +++ b/program/shinyApp/helpfiles/SigAna_Choices.md @@ -1,6 +1,9 @@ ## Significance Analysis Options - -πŸ’‘ **Tip**: For more details, visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
1. **Groups to Compare** - Select groups for significance analysis based on predefined factors (for DESeq) or sample annotations. diff --git a/program/shinyApp/helpfiles/SigAna_Intersections.md b/program/shinyApp/helpfiles/SigAna_Intersections.md index 194cd27b..1a5feb99 100644 --- a/program/shinyApp/helpfiles/SigAna_Intersections.md +++ b/program/shinyApp/helpfiles/SigAna_Intersections.md @@ -1,7 +1,11 @@ ## Highlight and Download intersections *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
To allow for a better overview of the intersections, the user can highlight the intersections of interest. You can choose from all available intersections in the diff --git a/program/shinyApp/helpfiles/SigAna_Vis.md b/program/shinyApp/helpfiles/SigAna_Vis.md index f9533337..84cc3a60 100644 --- a/program/shinyApp/helpfiles/SigAna_Vis.md +++ b/program/shinyApp/helpfiles/SigAna_Vis.md @@ -1,7 +1,12 @@ ## Visualizing Significance Analysis Results Options *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
+ **1. Select Comparisons to Visualize:** diff --git a/program/shinyApp/helpfiles/SingleGene_Options.md b/program/shinyApp/helpfiles/SingleGene_Options.md index 0f399eae..6da10a63 100644 --- a/program/shinyApp/helpfiles/SingleGene_Options.md +++ b/program/shinyApp/helpfiles/SingleGene_Options.md @@ -1,7 +1,11 @@ ## Single Gene Visualization Options ---- -πŸ’‘ **Tip**: For more detailed information, please visit here. +*** +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
**1. Choose Data Type:** diff --git a/program/shinyApp/helpfiles/SingleGene_Select.md b/program/shinyApp/helpfiles/SingleGene_Select.md index df00a86b..ffedb46f 100644 --- a/program/shinyApp/helpfiles/SingleGene_Select.md +++ b/program/shinyApp/helpfiles/SingleGene_Select.md @@ -1,7 +1,11 @@ ## Choosing groups for comparison --- -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
This option lets you specify how to group the samples based on the annotation categories provided in the sample annotation file. This only has an effect if you have chosen diff --git a/program/shinyApp/helpfiles/TakingNotesMD_help.md b/program/shinyApp/helpfiles/TakingNotesMD_help.md index 0d319ba3..7bd72c0c 100644 --- a/program/shinyApp/helpfiles/TakingNotesMD_help.md +++ b/program/shinyApp/helpfiles/TakingNotesMD_help.md @@ -1,7 +1,11 @@ ## Personal Note Taking *** -πŸ’‘ **Tip**: For more detailed information, please visit here. +
+πŸ’‘ Tip: For more detailed information, please visit +this page. +
+
This Section is here for your Notes. It can be as easy as just a keyword or as complex as an entire figure description or even an entire book (however I do think there are better tools for this). To enable possibilities to structure your text, involving headings, bullets points or colored chunks `markdown` syntax can be used. diff --git a/program/shinyApp/helpfiles/helpTab_question.md b/program/shinyApp/helpfiles/helpTab_question.md index c6221226..3508b5be 100644 --- a/program/shinyApp/helpfiles/helpTab_question.md +++ b/program/shinyApp/helpfiles/helpTab_question.md @@ -1,6 +1,10 @@ ## Congrats! *** -πŸ’‘ **Tip**: If you click here you will be directed to the correct location within the documentation. Note: Here is the beginning of the documentation. +
+πŸ’‘ Tip: If you click +this page.you will be directed to the correct location within the documentation. Note: Here is the beginning of the documentation. +
+
You found your first question mark. Watch out for these to get immediate help on the particular topic the question mark is attached to. They often also direct you to further diff --git a/program/shinyApp/server.R b/program/shinyApp/server.R index 9fbdccec..2964d4d3 100644 --- a/program/shinyApp/server.R +++ b/program/shinyApp/server.R @@ -71,7 +71,7 @@ server <- function(input,output,session){ hideTab(inputId = "tabsetPanel1", target = "Heatmap") hideTab(inputId = "tabsetPanel1", target = "Single Gene Visualisations") hideTab(inputId = "tabsetPanel1", target = "Enrichment Analysis") - shinyjs::hide("mainPanel_DataSelection") + shinyjs::hideElement(id = "mainPanel_other") shinyjs::hideElement(id = "data_summary") shinyjs::hideElement(id = "div_sampleCorrelation_main_panel") shinyjs::hideElement(id = "PCA_main_panel_div") @@ -461,9 +461,11 @@ server <- function(input,output,session){ observe({ if (input$refresh1 > 0) { req(data_input_shiny() == "DataUploadSuccesful") - shinyjs::show("mainPanel_DataSelection") + shinyjs::showElement("InfoBox_DataSelection") + shinyjs::showElement("mainPanel_other") } else { - shinyjs::hide("mainPanel_DataSelection") + shinyjs::showElement("InfoBox_DataSelection") + shinyjs::hideElement("mainPanel_other") } }) @@ -1046,17 +1048,27 @@ server <- function(input,output,session){ data_input <- list() # upload depending on where the button was clicked if(uploaded_from() == "file_input"){ - data_input <- list( - Matrix = read_file(input$data_matrix1$datapath, check.names=T), - sample_table = read_file(input$data_sample_anno1$datapath, check.names=T), - annotation_rows = read_file(input$data_row_anno1$datapath, check.names=T) - ) - # check if only 1 col in anno row, - # add dummy col to ensure R does not turn it into a vector - if(ncol(data_input$annotation_rows) < 2){ - data_input$annotation_rows$origRownames <- rownames(data_input$annotation_rows) - } + tryCatch({ + data_input <- list( + Matrix = read_file(input$data_matrix1$datapath, check.names=T), + sample_table = read_file(input$data_sample_anno1$datapath, check.names=T), + annotation_rows = read_file(input$data_row_anno1$datapath, check.names=T) + ) + # check if only 1 col in anno row, + # add dummy col to ensure R does not turn it into a vector + if(ncol(data_input$annotation_rows) < 2){ + data_input$annotation_rows$origRownames <- rownames(data_input$annotation_rows) + } + },error = function(e){ + output$debug <- renderText({ + "Upload failed, please check your input." + }) + reset('data_matrix1') + reset('data_sample_anno1') + reset('data_row_anno1') + return(NULL) + }) } else if(uploaded_from() == "metadata"){ tmp_sampleTable <- fun_readInSampleTable(input$metadataInput$datapath) test_data_upload <- function(){ @@ -1084,13 +1096,68 @@ server <- function(input,output,session){ } else if(uploaded_from() == "precompiled"){ + # Expand to work with any SummarizedExperiment object + # (also works with an 'old' pre-compiled object generated by the app) uploadedFile <- readRDS(file = input$data_preDone$datapath) - if(any(names(uploadedFile) %in% input[[paste0("omic_type_", uploaded_from())]])){ - # This is a file precompiled before 14.March.2023 - data_input <- uploadedFile[[input[[paste0("omic_type_", uploaded_from())]]]] - } else { - data_input[[paste0(input[[paste0("omic_type_", uploaded_from())]],"_SumExp")]] <- uploadedFile + # Check if the object is a SummarizedExperiment + if (is(uploadedFile, "SummarizedExperiment")) { + # a SE object - only esnure that naming of the obeject list fits or re-do + data_input[[paste0(omic_type(),"_SumExp")]] <- uploadedFile + count_matrix <- assay(data_input[[paste0(omic_type(),"_SumExp")]]) + if (any(is.na(count_matrix))){ + output$debug <- renderText({ + "The assay data contains missing values, those will be removed." + }) + }else{ + if (any(count_matrix < 0)) { + output$debug <- renderText({ + "The assay data contains negative values, which are invalid for some pre-processing procedures." + }) + } + if (!all(count_matrix == round(count_matrix))) { + output$debug <- renderText({ + "The assay data contains non-integer values, which is invalid for DESeq2 pre-processing procedure." + }) + } + } + } else if(is.list(uploadedFile) & any(sapply(uploadedFile, function(x) is(x, "SummarizedExperiment")))){ + # get the sum exp from the list + getIdxOfSumExp <- sapply(uploadedFile, function(x) is(x, "SummarizedExperiment")) + if(length(which(getIdxOfSumExp)) > 1){ + output$debug <- renderText({ + "Upload failed. The provided input contains more than one Summarized Experiment object. Please only provide one" + return(NULL) + }) + }else{ + data_input[[paste0(omic_type(),"_SumExp")]] <- uploadedFile[[which(getIdxOfSumExp)]] + count_matrix <- assay(data_input[[paste0(omic_type(),"_SumExp")]]) + if (any(is.na(count_matrix))){ + output$debug <- renderText({ + "The assay data contains missing values, those will be removed." + }) + }else{ + if (any(count_matrix < 0)) { + output$debug <- renderText({ + "The assay data contains negative values, which are invalid for some pre-processing procedures." + }) + } + if (!all(count_matrix == round(count_matrix))) { + output$debug <- renderText({ + "The assay data contains non-integer values, which is invalid for DESeq2 pre-processing procedure." + }) + } + } + + } + }else{ + # not a SE object + output$debug <- renderText({ + "Upload failed. Is the provided input Summarized Experiment object?" + }) + return(NULL) } + + } else if(uploaded_from() == "testdata"){ data_input <- readRDS( file = "www/Transcriptomics_only_precompiled-LS.RDS" @@ -1124,8 +1191,11 @@ server <- function(input,output,session){ }, error = function(e){ print("Error! Uploading via file input failed") + custom_error <- list() + custom_error[["message"]] <- "Uploading via file input failed" + error_modal(custom_error) output$debug <- renderText({ - "Uploading failed: The uplaoded files could not be put into a SummarizedExperiment. Try the 'Inspect data' button for potential errors." + "Uploading failed: The uploaded files could not be put into a SummarizedExperiment. Try the 'Inspect data' button for potential errors." }) NULL } @@ -1368,7 +1438,7 @@ server <- function(input,output,session){ } selectInput( inputId = "BatchEffect_Column", - label = "Select Batch Effect Column", + label = "[optional] Select Batch Effect Column", choices = c("NULL", filtered_column_names), selected = "NULL" ) @@ -1419,11 +1489,15 @@ server <- function(input,output,session){ # new object Created for res_tmp[[session$token]] res_tmp[[session$token]]$data <<- res_tmp[[session$token]]$data[rownames(res_tmp[[session$token]]$data),] par_tmp[[session$token]]['BatchColumn'] <<- input$BatchEffect_Column - # preprocessing print(paste0("Do chosen Preprocessing:",input$PreProcessing_Procedure)) + + # Check for DESeq option if more than 100 genes avail as it is for omics! + tryCatch({ - if(input$PreProcessing_Procedure == "vst_DESeq"){ + if(input$PreProcessing_Procedure == "vst_DESeq" & nrow(res_tmp[[session$token]]$data) < 100){ + stop("DESeq Preprocessing is only recommended for omics (here for data with more than 100 genes). Change Pre-processing or your data input!") + }else if(input$PreProcessing_Procedure == "vst_DESeq"& nrow(res_tmp[[session$token]]$data) >= 100){ res_tmp[[session$token]]$data <<- deseq_processing( data = res_tmp[[session$token]]$data, omic_type = par_tmp[[session$token]]$omic_type, @@ -1440,6 +1514,16 @@ server <- function(input,output,session){ } }, error = function(e){ error_modal(e) + output$Statisitcs_Data <- renderText({ + HTML("There has been an error
The current data might not be what you expect.
Ensure you change something within the data or the Pre-Processing,
and click 'Get Pre-Processing' again.
You should not see this message before moving to analysis!
") + }) + hideTab(inputId = "tabsetPanel1", target = "Sample Correlation") + hideTab(inputId = "tabsetPanel1", target = "Significance Analysis") + hideTab(inputId = "tabsetPanel1", target = "PCA") + hideTab(inputId = "tabsetPanel1", target = "Heatmap") + hideTab(inputId = "tabsetPanel1", target = "Single Gene Visualisations") + hideTab(inputId = "tabsetPanel1", target = "Enrichment Analysis") + waiter$hide() req(FALSE) }) @@ -1454,9 +1538,18 @@ server <- function(input,output,session){ ) }, error = function(e){ error_modal( - e, additional_text = "Batch correction failed. Make sure the batch effect column is correct!" + e, additional_text = "Batch correction failed. Make sure the batch effect column is correct or NULL!" ) waiter$hide() + output$Statisitcs_Data <- renderText({ + HTML("There has been an error
The current data might not be what you expect.
Ensure you change something within the data or the Pre-Processing,
and click 'Get Pre-Processing' again.
You should not see this message before moving to analysis!
") + }) + hideTab(inputId = "tabsetPanel1", target = "Sample Correlation") + hideTab(inputId = "tabsetPanel1", target = "Significance Analysis") + hideTab(inputId = "tabsetPanel1", target = "PCA") + hideTab(inputId = "tabsetPanel1", target = "Heatmap") + hideTab(inputId = "tabsetPanel1", target = "Single Gene Visualisations") + hideTab(inputId = "tabsetPanel1", target = "Enrichment Analysis") req(FALSE) }) } else if (input$BatchEffect_Column != "NULL" & input$PreProcessing_Procedure == "vst_DESeq"){ @@ -1478,6 +1571,15 @@ server <- function(input,output,session){ ) ) waiter$hide() + output$Statisitcs_Data <- renderText({ + HTML("There has been an error
The current data might not be what you expect.
Ensure you change something within the data or the Pre-Processing,
and click 'Get Pre-Processing' again.
You should not see this message before moving to analysis!
") + }) + hideTab(inputId = "tabsetPanel1", target = "Sample Correlation") + hideTab(inputId = "tabsetPanel1", target = "Significance Analysis") + hideTab(inputId = "tabsetPanel1", target = "PCA") + hideTab(inputId = "tabsetPanel1", target = "Heatmap") + hideTab(inputId = "tabsetPanel1", target = "Single Gene Visualisations") + hideTab(inputId = "tabsetPanel1", target = "Enrichment Analysis") req(FALSE) }) } else { diff --git a/program/shinyApp/ui.R b/program/shinyApp/ui.R index c1c06281..60948aea 100644 --- a/program/shinyApp/ui.R +++ b/program/shinyApp/ui.R @@ -100,6 +100,17 @@ ui <- shiny::fluidPage( font-size: 24px; color: darkred !important; } + .well button { + background-color: white; + color: black; + border: 2px solid darkgrey; + font-size: 15px; + font-weight: bold; + box-shadow: 3px 3px 5px rgba(255, 0, 0, 0.8); + padding: 5px 5px; + border-radius: 10px; + } + #shiny-disconnected-overlay { background-color: grey; opacity: 1; @@ -287,9 +298,19 @@ ui <- shiny::fluidPage( ) ), div( - id = "TitleID_normal", - column(width=1, tags$img(src = "Logo_cOmicsArt_clear.png", height="100%", width="100%")), - h1(HTML('cOmicsArt')) + id = "TitleID_normal", + column( + width = 1, + tags$img(src = "Logo_cOmicsArt_clear.png", height = "100%", width = "100%") + ), + h1( + "cOmicsArt", + style = "background: linear-gradient(to right, #EC0014 8%, #FD8D33 10%, #3897F1 12%, #FFD335 14%, #A208BA 16%, #EF0089 18%, #EC0014 20%); + background-size: 100%; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + font-weight: bold;" + ) ), div( id = "UsefulLinks", @@ -308,12 +329,28 @@ ui <- shiny::fluidPage( ), splitLayout( cellWidths = c("75%", "10%", "15%"), - tags$a(href = "https://icb-dcm.github.io/cOmicsArt/", "Go To Documentation", target = "_blank"), + tags$a( + href = "https://icb-dcm.github.io/cOmicsArt/", + target = "_blank", + tagList( + icon("book"), # Replace "book" with any other suitable icon + span("Go To Documentation", style = "margin-left: 5px;") + ), + style = "font-size: 18px; color: black; text-decoration: underline;" + ), NULL ), splitLayout( cellWidths = c("75%", "10%", "15%"), - tags$a(href = "https://lea-orga.notion.site/12eab506afb581bf8ecfeeb2bb07c319", "Give Us Feedback!", target = "_blank"), + tags$a( + href = "https://lea-orga.notion.site/12eab506afb581bf8ecfeeb2bb07c319", + target = "_blank", + tagList( + icon("comment-dots"), # Replace "comment-dots" with another icon if desired + span("Give Us Feedback!", style = "margin-left: 5px;") + ), + style = "font-size: 18px; color: black;text-decoration: underline;" + ), NULL ) ), From 161e34699f90c89f2bc52f24d5ecb3281f5cb455 Mon Sep 17 00:00:00 2001 From: PaulJonasJost Date: Fri, 24 Jan 2025 10:22:19 +0100 Subject: [PATCH 4/8] Renamed SigAna to Diff Ana in docs --- docs/code-and-data/examples.md | 4 ++-- docs/index.md | 2 +- docs/interface-details.md | 2 +- docs/interface-details/01-required-data-input.md | 2 +- docs/interface-details/02-selection.md | 2 +- docs/interface-details/03-pre-processing.md | 2 +- docs/interface-details/04-sample-correlation.md | 2 +- docs/interface-details/05-significance-analysis.md | 12 ++++++------ docs/interface-details/06-pca.md | 2 +- docs/interface-details/07-heatmap.md | 2 +- .../08-single-gene-visualisations.md | 4 ++-- docs/interface-details/09-enrichment-analysis.md | 2 +- docs/screen_recording.md | 2 +- docs/showcases/showcase-a.md | 6 +++--- docs/welcome.md | 2 +- 15 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/code-and-data/examples.md b/docs/code-and-data/examples.md index 027b91da..176fc5e1 100644 --- a/docs/code-and-data/examples.md +++ b/docs/code-and-data/examples.md @@ -23,7 +23,7 @@ To recreate this example **within** cOmicsArt, use the following steps: 2. We want to use all the data, so we will not filter the data. Hence, directly click `"Start the Journey"` 3. Select `DESeq2` as the pre-processing method with `condition` as the main factor -4. In the `Significance Analysis`, run the significance analysis for `trt:untrt`, Significance +4. In the `Differential Analysis`, run the differential analysis for `trt:untrt`, significance level: `0.05` and test-correction: `Benjamini-Hochberg` 5. Select now the `trt:untrt` tab, in that the `Volcano` tab 6. Download the data and code by clicking on `Get underlying R code and data` under @@ -58,7 +58,7 @@ the steps to follow: var images = [ {src: "/cOmicsArt/assets/images/Slideshow1.png", subtitle: "1. Select Testdata, 2.1 Choose all data, 2.2 Start the Journey"}, {src: "/cOmicsArt/assets/images/Slideshow2.png", subtitle: "3.1 Select DESeq2 as pre-processing method, 3.2 Select condition as main factor, 3.3 Run the pre-processing"}, - {src: "/cOmicsArt/assets/images/Slideshow3.png", subtitle: "4.1 Select trt:untrt 4.2 Run the significance analysis, 5. Select trt:untrt tab"}, + {src: "/cOmicsArt/assets/images/Slideshow3.png", subtitle: "4.1 Select trt:untrt 4.2 Run the differential analysis, 5. Select trt:untrt tab"}, {src: "/cOmicsArt/assets/images/Slideshow4.png", subtitle: "5.2 Select Volcano tab, 6. Download the data and code"}, ]; var currentIndex = 0; diff --git a/docs/index.md b/docs/index.md index 6d9be167..9f1f620e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -21,4 +21,4 @@ Have fun exploring! πŸŽ‰ - πŸ“š Want to know the required data and format? Visit [Interface Details](interface-details/01-required-data-input.md). - πŸ”§ Need to run the app locally? Check out the [Installation Guide](installation.md). - πŸ’‘ Looking for customization inspiration? Explore our [Customization Examples](code-and-data/examples.md). -- πŸ“Š Want to know more about the significance analysis? Visit [Significance Analysis](interface-details/05-significance-analysis.md) +- πŸ“Š Want to know more about the differential analysis? Visit [Differential Analysis](interface-details/05-significance-analysis.md) diff --git a/docs/interface-details.md b/docs/interface-details.md index 284e6600..ecd94f82 100644 --- a/docs/interface-details.md +++ b/docs/interface-details.md @@ -41,7 +41,7 @@ To get more information on the tabs, navigate to the respective documentation us ![The design of the side panel](/cOmicsArt/assets/images/design_principleSidePanel.png) -2. **Main Panel Structure:** Each main panel contains the visualization of the analysis results. Some panels are further subdivided to show multiple results, for example, the Significance Analysis tab. +2. **Main Panel Structure:** Each main panel contains the visualization of the analysis results. Some panels are further subdivided to show multiple results, for example, the Differential Analysis tab. 3. **Picture Download Options:** Users can download visualizations and results in common formats (e.g., PNG, TIFF, PDF). There are respective buttons to select the file format. Upon 'Save plot' the file is downloaded to the local machine. diff --git a/docs/interface-details/01-required-data-input.md b/docs/interface-details/01-required-data-input.md index 3bff7e6e..4c1e3423 100644 --- a/docs/interface-details/01-required-data-input.md +++ b/docs/interface-details/01-required-data-input.md @@ -82,7 +82,7 @@ Do you want to... - Understand how to select and filter your data? β†’ Go to [Data selection](02-selection.md) - Discover the pre-processing options available? β†’ Go to [Pre-processing](03-pre-processing.md) - Explore how to correlate your samples? β†’ Go to [Sample Correlation](04-sample-correlation.md) -- Perform significance analysis on your data? β†’ Go to [Significance Analysis](05-significance-analysis.md) +- Perform differential analysis on your data? β†’ Go to [Differential Analysis](05-significance-analysis.md) - Conduct Principal Component Analysis? β†’ Go to [PCA](06-pca.md) - Visualize your data with heatmaps? β†’ Go to [Heatmap](07-heatmap.md) - Visualize individual genes? β†’ Go to [Single Gene Visualisations](08-single-gene-visualisations.md) diff --git a/docs/interface-details/02-selection.md b/docs/interface-details/02-selection.md index b4f4cc05..c2cd1a91 100644 --- a/docs/interface-details/02-selection.md +++ b/docs/interface-details/02-selection.md @@ -112,7 +112,7 @@ Do you want to... - Learn how to upload your data? β†’ Go to [Data Input](01-required-data-input.md) - Discover the pre-processing options available? β†’ Go to [Pre-processing](03-pre-processing.md) - Explore how to correlate your samples? β†’ Go to [Sample Correlation](04-sample-correlation.md) -- Perform significance analysis on your data? β†’ Go to [Significance Analysis](05-significance-analysis.md) +- Perform differential analysis on your data? β†’ Go to [Differential Analysis](05-significance-analysis.md) - Conduct Principal Component Analysis? β†’ Go to [PCA](06-pca.md) - Visualize your data with heatmaps? β†’ Go to [Heatmap](07-heatmap.md) - Visualize individual genes? β†’ Go to [Single Gene Visualisations](08-single-gene-visualisations.md) diff --git a/docs/interface-details/03-pre-processing.md b/docs/interface-details/03-pre-processing.md index 04af179a..a4977e10 100644 --- a/docs/interface-details/03-pre-processing.md +++ b/docs/interface-details/03-pre-processing.md @@ -212,7 +212,7 @@ Do you want to... - Learn how to upload your data? β†’ Go to [Data Input](01-required-data-input.md) - Understand how to select and filter your data? β†’ Go to [Data selection](02-selection.md) - Explore how to correlate your samples? β†’ Go to [Sample Correlation](04-sample-correlation.md) -- Perform significance analysis on your data? β†’ Go to [Significance Analysis](05-significance-analysis.md) +- Perform differential analysis on your data? β†’ Go to [Differential Analysis](05-significance-analysis.md) - Conduct Principal Component Analysis? β†’ Go to [PCA](06-pca.md) - Visualize your data with heatmaps? β†’ Go to [Heatmap](07-heatmap.md) - Visualize individual genes? β†’ Go to [Single Gene Visualisations](08-single-gene-visualisations.md) diff --git a/docs/interface-details/04-sample-correlation.md b/docs/interface-details/04-sample-correlation.md index 21a5c157..fbd80caf 100644 --- a/docs/interface-details/04-sample-correlation.md +++ b/docs/interface-details/04-sample-correlation.md @@ -49,7 +49,7 @@ Do you want to... - Learn how to upload your data? β†’ Go to [Data Input](01-required-data-input.md) - Understand how to select and filter your data? β†’ Go to [Data selection](02-selection.md) - Discover the pre-processing options available? β†’ Go to [Pre-processing](03-pre-processing.md) -- Perform significance analysis on your data? β†’ Go to [Significance Analysis](05-significance-analysis.md) +- Perform differential analysis on your data? β†’ Go to [Differential Analysis](05-significance-analysis.md) - Conduct Principal Component Analysis? β†’ Go to [PCA](06-pca.md) - Visualize your data with heatmaps? β†’ Go to [Heatmap](07-heatmap.md) - Visualize individual genes? β†’ Go to [Single Gene Visualisations](08-single-gene-visualisations.md) diff --git a/docs/interface-details/05-significance-analysis.md b/docs/interface-details/05-significance-analysis.md index ac777cff..a7fd15cd 100644 --- a/docs/interface-details/05-significance-analysis.md +++ b/docs/interface-details/05-significance-analysis.md @@ -1,32 +1,32 @@ --- -title: "Significance Analysis" +title: "Differential Analysis" layout: default parent: Interface Details nav_order: 5 --- -# Significance Analysis +# Differential Analysis -The Significance Analysis tab is divided into two main sections: the side panel and the main panel. +The Differential Analysis tab is divided into two main sections: the side panel and the main panel. ## Side Panel πŸ“š In the side panel, you have the following options: ### 1. Choose Groups to Compare -Select the groups from your data for which you want to perform significance analysis. +Select the groups from your data for which you want to perform differential analysis. - For DESeq preprocessing, select from predefined factors. - For other preprocessing methods, choose from available sample annotation columns. ### 2. Choose Comparisons -Select the specific pairings of groups for which you want to perform significance analysis. +Select the specific pairings of groups for which you want to perform differential analysis. - Automatically generates possible pairings based on selected groups. - Notation is "Treatment:Control" and indicates the direction of the comparison. ### 3. Choose Test Method -Select the statistical test method for significance analysis. +Select the statistical test method for differential analysis. - For DESeq preprocessing, a Wald test statistic is used. For more information [read here](https://en.wikipedia.org/wiki/Wald_test) or [check out the original paper](http://www.jstor.org/stable/1990256). - For other preprocessing methods, choose from: diff --git a/docs/interface-details/06-pca.md b/docs/interface-details/06-pca.md index 23c62c88..47f485e3 100644 --- a/docs/interface-details/06-pca.md +++ b/docs/interface-details/06-pca.md @@ -58,7 +58,7 @@ Do you want to... - Understand how to select and filter your data? β†’ Go to [Data selection](02-selection.md) - Discover the pre-processing options available? β†’ Go to [Pre-processing](03-pre-processing.md) - Explore how to correlate your samples? β†’ Go to [Sample Correlation](04-sample-correlation.md) -- Perform significance analysis on your data? β†’ Go to [Significance Analysis](05-significance-analysis.md) +- Perform differential analysis on your data? β†’ Go to [Differential Analysis](05-significance-analysis.md) - Visualize your data with heatmaps? β†’ Go to [Heatmap](07-heatmap.md) - Visualize individual genes? β†’ Go to [Single Gene Visualisations](08-single-gene-visualisations.md) - Perform enrichment analysis on your data? β†’ Go to [Enrichment Analysis](09-enrichment-analysis.md) diff --git a/docs/interface-details/07-heatmap.md b/docs/interface-details/07-heatmap.md index d9f13375..3b01dcbe 100644 --- a/docs/interface-details/07-heatmap.md +++ b/docs/interface-details/07-heatmap.md @@ -93,7 +93,7 @@ Do you want to... - Understand how to select and filter your data? β†’ Go to [Data selection](02-selection.md) - Discover the pre-processing options available? β†’ Go to [Pre-processing](03-pre-processing.md) - Explore how to correlate your samples? β†’ Go to [Sample Correlation](04-sample-correlation.md) -- Perform significance analysis on your data? β†’ Go to [Significance Analysis](05-significance-analysis.md) +- Perform differential analysis on your data? β†’ Go to [Differential Analysis](05-significance-analysis.md) - Conduct Principal Component Analysis? β†’ Go to [PCA](06-pca.md) - Visualize individual genes? β†’ Go to [Single Gene Visualisations](08-single-gene-visualisations.md) - Perform enrichment analysis on your data? β†’ Go to [Enrichment Analysis](09-enrichment-analysis.md) diff --git a/docs/interface-details/08-single-gene-visualisations.md b/docs/interface-details/08-single-gene-visualisations.md index be21948b..492fb964 100644 --- a/docs/interface-details/08-single-gene-visualisations.md +++ b/docs/interface-details/08-single-gene-visualisations.md @@ -31,7 +31,7 @@ In the side panel, you have the following options: The main panel displays the single gene visualisations. Here are some key points: - **Visualisation**: The visualisation provides a boxplot or dot plot based on the number of samples per group and the selected options. Note that you only see boxplots if you have more than 3 samples per group. If there are fewer than 4 samples, only dots will be displayed. -- **Select your desired comparisons**: Here you select which comparisons you want to test and display in the plot. Note that each test is taken as an individual test, there is no multiple testing correction done \([Why it is important](https://www.nature.com/articles/nbt1209-1135)\) when choosing more than one test. For more advanced testing please go to the [Significance analysis tab](05-significance-analysis.md) +- **Select your desired comparisons**: Here you select which comparisons you want to test and display in the plot. Note that each test is taken as an individual test, there is no multiple testing correction done \([Why it is important](https://www.nature.com/articles/nbt1209-1135)\) when choosing more than one test. For more advanced testing please go to the [Differential analysis tab](05-significance-analysis.md) - **Download Options**: The visualisation can be downloaded directly in common formats (e.g., PNG, TIFF, PDF) or sent to the report. You can also download the underlying R code and data. For more information, check out [Interface Details](../interface-details.md). @@ -50,7 +50,7 @@ Do you want to... - Understand how to select and filter your data? β†’ Go to [Data selection](02-selection.md) - Discover the pre-processing options available? β†’ Go to [Pre-processing](03-pre-processing.md) - Explore how to correlate your samples? β†’ Go to [Sample Correlation](04-sample-correlation.md) -- Perform significance analysis on your data? β†’ Go to [Significance Analysis](05-significance-analysis.md) +- Perform differential analysis on your data? β†’ Go to [Differential Analysis](05-significance-analysis.md) - Conduct Principal Component Analysis? β†’ Go to [PCA](06-pca.md) - Visualize your data with heatmaps? β†’ Go to [Heatmap](07-heatmap.md) - Perform enrichment analysis on your data? β†’ Go to [Enrichment Analysis](09-enrichment-analysis.md) diff --git a/docs/interface-details/09-enrichment-analysis.md b/docs/interface-details/09-enrichment-analysis.md index cf86c2d2..d88a5252 100644 --- a/docs/interface-details/09-enrichment-analysis.md +++ b/docs/interface-details/09-enrichment-analysis.md @@ -90,7 +90,7 @@ Do you want to... - Understand how to select and filter your data? β†’ Go to [Data selection](02-selection.md) - Discover the pre-processing options available? β†’ Go to [Pre-processing](03-pre-processing.md) - Explore how to correlate your samples? β†’ Go to [Sample Correlation](04-sample-correlation.md) -- Perform significance analysis on your data? β†’ Go to [Significance Analysis](05-significance-analysis.md) +- Perform differential analysis on your data? β†’ Go to [Differential Analysis](05-significance-analysis.md) - Conduct Principal Component Analysis? β†’ Go to [PCA](06-pca.md) - Visualize your data with heatmaps? β†’ Go to [Heatmap](07-heatmap.md) - Visualize individual genes? β†’ Go to [Single Gene Visualisations](08-single-gene-visualisations.md) diff --git a/docs/screen_recording.md b/docs/screen_recording.md index 4fbc5e41..bd00ffa0 100644 --- a/docs/screen_recording.md +++ b/docs/screen_recording.md @@ -24,7 +24,7 @@ We’ve created a detailed screen recording to guide you through the navigation - [04:40](https://www.youtube.com/watch?v=pTGjtIYQOak&t=280s) Data Preprocessing - [06:28](https://www.youtube.com/watch?v=pTGjtIYQOak&t=388s) Sample Correlation - [08:21](https://www.youtube.com/watch?v=pTGjtIYQOak&t=501s) Principal Component Analysis (PCA) -- [10:26](https://www.youtube.com/watch?v=pTGjtIYQOak&t=626s) Significance Analysis +- [10:26](https://www.youtube.com/watch?v=pTGjtIYQOak&t=626s) Differential Analysis - [12:48](https://www.youtube.com/watch?v=pTGjtIYQOak&t=768s) Single Gene Visualization - [13:31](https://www.youtube.com/watch?v=pTGjtIYQOak&t=811s) Enrichment Analysis - [14:38](https://www.youtube.com/watch?v=pTGjtIYQOak&t=878s) ️ Heatmap diff --git a/docs/showcases/showcase-a.md b/docs/showcases/showcase-a.md index 92bb867b..711c5049 100644 --- a/docs/showcases/showcase-a.md +++ b/docs/showcases/showcase-a.md @@ -93,9 +93,9 @@ To statistically test the two genes identified by their high loadings on PC1 and If we change the 'groups to show the data for' to β€˜Simulation_Treatment’, we can observe for Ppbp that NSD_1 and NSD_2 and HSD_3 and HSD_5 behave differently from the other members of the group (Fig. D4B). This aligns with the PCA results. Note, that we cannot 'test' for a difference as we have a single data point for each. -### Assessing all genes – Significance analysis: +### Assessing all genes – Differential analysis: -We switch to the Significance analysis tab to analyse all genes at once. We want to compare the treatment groups, specifically HSD vs. NSD, taking the latter as control. The order is important to interpret the direction of up- and down-regulation but does not change anything in terms of significance. As we have chosen the DESeq2 pipeline, cOmicsArt automatically selects the appropriate test. We obtain 47 genes (0.29% of the entire set) with significant changes between the conditions. The majority (31 genes) are significantly upregulated (16 downregulated) with a chosen significance level of 0.05 (after Benjamini-Hochberg multiple testing correction) (Table D1). +We switch to the Differential analysis tab to analyse all genes at once. We want to compare the treatment groups, specifically HSD vs. NSD, taking the latter as control. The order is important to interpret the direction of up- and down-regulation but does not change anything in terms of significance. As we have chosen the DESeq2 pipeline, cOmicsArt automatically selects the appropriate test. We obtain 47 genes (0.29% of the entire set) with significant changes between the conditions. The majority (31 genes) are significantly upregulated (16 downregulated) with a chosen significance level of 0.05 (after Benjamini-Hochberg multiple testing correction) (Table D1). The most significant gene is ENSMUSG00000044786 (ZFP36). To get an overview of actual effect sizes (fold changes), we subselect within the shown table to show only the significant genes by clicking into the respective padj column in the table (where 'all' stands). Here we can adjust the sliding bar to select only genes with a padj value in the determined range. A quick check at the bottom of the table confirms we only selected the 49 entries. We then sort the log2Fold changes by clicking on the little grey up and down arrows. The Log2Fold change range goes from -0.34 to 1.23. Switching to the visual representation of the table, we go to the tab Volcano. Setting a Log FC threshold of 0.5, we can see that 10 genes remain as significant highlights (Fig. D5). @@ -207,7 +207,7 @@ Considering the cell type (bone-marrow neutrophils), the studied cells seem to d We saw that on a global scale, we could not observe a clear pattern to distinguish between the treatments. This is, for example, globally visible when assessing sample correlation, as the correlation is overall at a high level. When looking at the PCA, we can see a rather high spread of samples belonging to NSD, whereas the HSD samples are less spread within the dimension reduction plot. Additionally, the statistical analysis returns only a small set of differentially expressed genes, indicating that the treatment effect affects a smaller portion of the entire data set. When performing an overrepresentation analysis of the DE-genes, we obtain a clear signal for TNFa signaling via NFkB. When performing gene set enrichment analysis on the LFC-ranked genes among the most enriched terms oxidative phosphorylation stands out. This together suggests that the effect of the HSD treatment alters the cellular metabolism in a directed fashion to an inflammatory state. -For further analysis, one might be interested in subselecting the data to focus on the potentially relevant aspects. For this, one can add the information from the statistical analysis to the gene annotation. This information is within the results table and can be obtained from the significance analysis tab. Moreover, one could add information to the entities indicating whether they are associated with the term Oxidative phosphorylation (using GO as a resource) to be able to visualize that specific subset within the heatmap panel. Additionally, while it may not be appropriate in this context, one could consider adding information to the samples, such as marking potential outliers and then redoing the analysis. +For further analysis, one might be interested in subselecting the data to focus on the potentially relevant aspects. For this, one can add the information from the statistical analysis to the gene annotation. This information is within the results table and can be obtained from the differential analysis tab. Moreover, one could add information to the entities indicating whether they are associated with the term Oxidative phosphorylation (using GO as a resource) to be able to visualize that specific subset within the heatmap panel. Additionally, while it may not be appropriate in this context, one could consider adding information to the samples, such as marking potential outliers and then redoing the analysis. ## Final Documentation diff --git a/docs/welcome.md b/docs/welcome.md index 2c4f1c41..94694994 100644 --- a/docs/welcome.md +++ b/docs/welcome.md @@ -21,4 +21,4 @@ Otherwise, you can navigate through the documentation using the sidebar on the l OR get stared with our Excel Workbook to prepare your data for cOmicsArt: [UploadeHelpcOmicsArt.xlsx](https://github.com/ICB-DCM/cOmicsArt/blob/main/UploadHelpcOmicsArt.xlsx). - πŸ”§ Need to run the app locally? Check out the [Installation Guide](installation.md). - πŸ’‘ Looking for customization inspiration? Explore our [Customization Examples](code-and-data/examples.md). -- πŸ“Š Want to know more about the significance analysis? Visit [Significance Analysis](interface-details/05-significance-analysis.md) \ No newline at end of file +- πŸ“Š Want to know more about the differential analysis? Visit [Differential Analysis](interface-details/05-significance-analysis.md) \ No newline at end of file From 2fb5426f61f535cabaf8c7d7ed23385ea8a50229 Mon Sep 17 00:00:00 2001 From: PaulJonasJost Date: Fri, 24 Jan 2025 10:22:37 +0100 Subject: [PATCH 5/8] Renamed Sig ana to Diff ana within code --- .../shinyApp/R/significance_analysis/server.R | 10 ++++---- program/shinyApp/R/significance_analysis/ui.R | 6 ++--- .../shinyApp/R/significance_analysis/util.R | 24 +++++++++---------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/program/shinyApp/R/significance_analysis/server.R b/program/shinyApp/R/significance_analysis/server.R index e4c279ee..ef863f8d 100644 --- a/program/shinyApp/R/significance_analysis/server.R +++ b/program/shinyApp/R/significance_analysis/server.R @@ -5,7 +5,7 @@ significance_analysis_server <- function(id, data, params){ sig_ana_reactive <- reactiveValues( start_analysis = 0, update_plot_post_ana = 0, - info_text = "Press 'Get significance analysis' to start!", + info_text = "Press 'Get Differential Analysis' to start!", dds = NULL, scenario = 0, comparisons_for_plot = "all", @@ -642,16 +642,16 @@ significance_analysis_server <- function(id, data, params){ print(sig_ana_reactive$plot_last) dev.off() - fun_LogIt(message = "## Significance analysis {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis {.tabset .tabset-fade}") fun_LogIt(message = "### Info") # log which tests were performed if(params$PreProcessing_Procedure == "vst_DESeq"){ fun_LogIt( - message = "- Significance Analysis was performed using DESeq2 pipeline" + message = "- Differential Analysis was performed using DESeq2 pipeline" ) } else { fun_LogIt(message = paste( - "- Significance Analysis was performed using", input$test_method + "- Differential Analysis was performed using", input$test_method )) } # log the significance level @@ -732,7 +732,7 @@ significance_analysis_server <- function(id, data, params){ input$comparisons_to_visualize,")." )) fun_LogIt(message = paste0( - "**Overview Plot** - ![Significance Analysis](",tmp_filename,")" + "**Overview Plot** - ![Differential Analysis](",tmp_filename,")" )) if(isTruthy(input$NotesSigAna) & !(isEmpty(input$NotesSigAna))){ fun_LogIt(message = "**Personal Notes:**") diff --git a/program/shinyApp/R/significance_analysis/ui.R b/program/shinyApp/R/significance_analysis/ui.R index ce6acb56..2f005f26 100644 --- a/program/shinyApp/R/significance_analysis/ui.R +++ b/program/shinyApp/R/significance_analysis/ui.R @@ -27,7 +27,7 @@ significance_analysis_sidebar_ui<- function(ns){ # Button to start analysis actionButton( inputId = ns("significanceGo"), - label = "Get Significance Analysis", + label = "Get Differential Analysis", icon = icon("fas fa-mouse-pointer") ), hidden(actionButton( @@ -136,10 +136,10 @@ significance_analysis_UI <- function(id){ ns <- NS(id) tabPanel( - title = "Significance Analysis", + title = "Differential Analysis", id = "significance_analysis", fluid = T, - h4("Significance Analysis"), + h4("Differential Analysis"), # sidebar significance_analysis_sidebar_ui(ns), # main diff --git a/program/shinyApp/R/significance_analysis/util.R b/program/shinyApp/R/significance_analysis/util.R index df97a8cf..90d29833 100644 --- a/program/shinyApp/R/significance_analysis/util.R +++ b/program/shinyApp/R/significance_analysis/util.R @@ -355,7 +355,7 @@ create_new_tab_manual <- function(title, targetPanel, result, contrast, alpha, n if(!is.null(session$userData[[paste(contrast[1], contrast[2], "only2Report_Volcano_val", sep = "_")]])){ req(input[[ns(paste(contrast[1], contrast[2], "only2Report_Volcano", sep = "_"))]] > session$userData[[paste(contrast[1], contrast[2], "only2Report_Volcano_val", sep = "_")]]) } - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(sig_ana_reactive$VolcanoPlot, sig_ana_reactive$data4Volcano, contrast, file_path) fun_LogIt(message = "### Publication Snippet") @@ -369,7 +369,7 @@ create_new_tab_manual <- function(title, targetPanel, result, contrast, alpha, n if(!is.null(session$userData[[paste(contrast[1], contrast[2], "only2Report_Volcano_both_val", sep = "_")]])){ req(input[[ns(paste(contrast[1], contrast[2], "only2Report_Volcano_both", sep = "_"))]] > session$userData[[paste(contrast[1], contrast[2], "only2Report_Volcano_both_val", sep = "_")]]) } - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(gridExtra::arrangeGrob(sig_ana_reactive$VolcanoPlot_raw, sig_ana_reactive$VolcanoPlot), sig_ana_reactive$data4Volcano, contrast, file_path) @@ -385,7 +385,7 @@ create_new_tab_manual <- function(title, targetPanel, result, contrast, alpha, n if(!is.null(session$userData[[paste(contrast[1], contrast[2], "only2Report_Volcano_raw_val", sep = "_")]])){ req(input[[ns(paste(contrast[1], contrast[2], "only2Report_Volcano_raw", sep = "_"))]] > session$userData[[paste(contrast[1], contrast[2], "only2Report_Volcano_raw_val", sep = "_")]]) } - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(sig_ana_reactive$VolcanoPlot_raw, sig_ana_reactive$data4Volcano, contrast, file_path) fun_LogIt(message = "### Publication Snippet") @@ -522,7 +522,7 @@ create_new_tab_manual <- function(title, targetPanel, result, contrast, alpha, n device = gsub("\\.","",input[[ns("file_ext_Volcano")]]) ) on.exit({ - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(sig_ana_reactive$VolcanoPlot, sig_ana_reactive$data4Volcano, contrast, file_path) fun_LogIt(message = "### Publication Snippet") @@ -539,7 +539,7 @@ create_new_tab_manual <- function(title, targetPanel, result, contrast, alpha, n device = gsub("\\.","",input[[ns("file_ext_Volcano_raw")]]) ) on.exit({ - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(sig_ana_reactive$VolcanoPlot_raw, sig_ana_reactive$data4Volcano, contrast, file_path) fun_LogIt(message = "### Publication Snippet") @@ -556,7 +556,7 @@ create_new_tab_manual <- function(title, targetPanel, result, contrast, alpha, n device = gsub("\\.","",input[[ns("file_ext_Volcano")]]) ) on.exit({ - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(gridExtra::arrangeGrob(sig_ana_reactive$VolcanoPlot_raw, sig_ana_reactive$VolcanoPlot), sig_ana_reactive$data4Volcano, contrast, file_path) @@ -913,7 +913,7 @@ create_new_tab_DESeq <- function(title, targetPanel, result, contrast, alpha, ns # downloadhandlers observeEvent(input[[ns("only2Report_Volcano")]],{ - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(sig_ana_reactive$VolcanoPlot, sig_ana_reactive$data4Volcano, contrast, file_path) fun_LogIt(message = "### Publication Snippet") @@ -922,7 +922,7 @@ create_new_tab_DESeq <- function(title, targetPanel, result, contrast, alpha, ns }) observeEvent(input[[ns("only2Report_Volcano_both")]],{ - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(gridExtra::arrangeGrob(sig_ana_reactive$VolcanoPlot_raw, sig_ana_reactive$VolcanoPlot) , sig_ana_reactive$data4Volcano, contrast, file_path) @@ -933,7 +933,7 @@ create_new_tab_DESeq <- function(title, targetPanel, result, contrast, alpha, ns }) observeEvent(input[[ns("only2Report_Volcano_raw")]],{ - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(sig_ana_reactive$VolcanoPlot_raw, sig_ana_reactive$data4Volcano, contrast, file_path) fun_LogIt(message = "### Publication Snippet") @@ -1069,7 +1069,7 @@ create_new_tab_DESeq <- function(title, targetPanel, result, contrast, alpha, ns device = gsub("\\.","",input[[ns("file_ext_Volcano")]]) ) on.exit({ - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(sig_ana_reactive$VolcanoPlot, sig_ana_reactive$data4Volcano, contrast, file_path) fun_LogIt(message = "### Publication Snippet") @@ -1086,7 +1086,7 @@ create_new_tab_DESeq <- function(title, targetPanel, result, contrast, alpha, ns device = gsub("\\.","",input[[ns("file_ext_Volcano_raw")]]) ) on.exit({ - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(sig_ana_reactive$VolcanoPlot_raw, sig_ana_reactive$data4Volcano, contrast, file_path) fun_LogIt(message = "### Publication Snippet") @@ -1104,7 +1104,7 @@ create_new_tab_DESeq <- function(title, targetPanel, result, contrast, alpha, ns device = gsub("\\.","",input[[ns("file_ext_Volcano")]]) ) on.exit({ - fun_LogIt(message = "## Significance analysis - Volcano {.tabset .tabset-fade}") + fun_LogIt(message = "## Differential analysis - Volcano {.tabset .tabset-fade}") fun_LogIt(message = "### Info") log_messages_volcano(gridExtra::arrangeGrob(sig_ana_reactive$VolcanoPlot_raw, sig_ana_reactive$VolcanoPlot) , sig_ana_reactive$data4Volcano, contrast, file_path) From 30000d37d6c11b78c33cb35f15c152db766886d8 Mon Sep 17 00:00:00 2001 From: PaulJonasJost Date: Sat, 25 Jan 2025 13:52:53 +0100 Subject: [PATCH 6/8] Changed Sig Ana to Diff ana also in hiding tabs etc --- program/shinyApp/server.R | 2 +- program/shinyApp/ui.R | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/program/shinyApp/server.R b/program/shinyApp/server.R index 2964d4d3..3ee64f05 100644 --- a/program/shinyApp/server.R +++ b/program/shinyApp/server.R @@ -66,7 +66,7 @@ server <- function(input,output,session){ # Layout upon Start ---- hideTab(inputId = "tabsetPanel1", target = "Pre-processing") hideTab(inputId = "tabsetPanel1", target = "Sample Correlation") - hideTab(inputId = "tabsetPanel1", target = "Significance Analysis") + hideTab(inputId = "tabsetPanel1", target = "Differential Analysis") hideTab(inputId = "tabsetPanel1", target = "PCA") hideTab(inputId = "tabsetPanel1", target = "Heatmap") hideTab(inputId = "tabsetPanel1", target = "Single Gene Visualisations") diff --git a/program/shinyApp/ui.R b/program/shinyApp/ui.R index 60948aea..8b9a9561 100644 --- a/program/shinyApp/ui.R +++ b/program/shinyApp/ui.R @@ -185,7 +185,7 @@ ui <- shiny::fluidPage( background-color: #FD8D33 !important; /* Strong Orange */ color: white !important; } - .tabbable > .nav > li > a[data-value='Significance Analysis'] { + .tabbable > .nav > li > a[data-value='Differential Analysis'] { background-color: #FFD33547 !important; /* Lighter Yellow */ color: black !important; } @@ -213,7 +213,7 @@ ui <- shiny::fluidPage( background-color: #A208BA35 !important; /* Lighter Purple */ color: black !important; } - .tabbable > .nav > li[class=active] > a[data-value='Significance Analysis'] { + .tabbable > .nav > li[class=active] > a[data-value='Differential Analysis'] { background-color: #A208BA !important; /* Strong Purple */ color: white !important; } From 906489234d912b3a11c69a54384be70f55e1efb6 Mon Sep 17 00:00:00 2001 From: PaulJonasJost Date: Sat, 25 Jan 2025 13:56:56 +0100 Subject: [PATCH 7/8] Also show tab again after preprocessing --- program/shinyApp/server.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/program/shinyApp/server.R b/program/shinyApp/server.R index 3ee64f05..13ffeda9 100644 --- a/program/shinyApp/server.R +++ b/program/shinyApp/server.R @@ -1610,7 +1610,7 @@ server <- function(input,output,session){ print(colnames(res_tmp[[session$token]]$data)) showTab(inputId = "tabsetPanel1", target = "Sample Correlation") - showTab(inputId = "tabsetPanel1", target = "Significance Analysis") + showTab(inputId = "tabsetPanel1", target = "Differential Analysis") showTab(inputId = "tabsetPanel1", target = "PCA") showTab(inputId = "tabsetPanel1", target = "Heatmap") showTab(inputId = "tabsetPanel1", target = "Single Gene Visualisations") From 8f69b22db1cd991b156c7ed5ae74ba5301911f28 Mon Sep 17 00:00:00 2001 From: Paul Jonas Jost <70631928+PaulJonasJost@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:39:55 +0100 Subject: [PATCH 8/8] Update docs/screen_recording.md Co-authored-by: Lea Seep <74967328+LeaSeep@users.noreply.github.com> --- docs/screen_recording.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/screen_recording.md b/docs/screen_recording.md index bd00ffa0..50677983 100644 --- a/docs/screen_recording.md +++ b/docs/screen_recording.md @@ -24,7 +24,7 @@ We’ve created a detailed screen recording to guide you through the navigation - [04:40](https://www.youtube.com/watch?v=pTGjtIYQOak&t=280s) Data Preprocessing - [06:28](https://www.youtube.com/watch?v=pTGjtIYQOak&t=388s) Sample Correlation - [08:21](https://www.youtube.com/watch?v=pTGjtIYQOak&t=501s) Principal Component Analysis (PCA) -- [10:26](https://www.youtube.com/watch?v=pTGjtIYQOak&t=626s) Differential Analysis +- [10:26](https://www.youtube.com/watch?v=pTGjtIYQOak&t=626s) Differential Analysis (renamed from Significance Analysis) - [12:48](https://www.youtube.com/watch?v=pTGjtIYQOak&t=768s) Single Gene Visualization - [13:31](https://www.youtube.com/watch?v=pTGjtIYQOak&t=811s) Enrichment Analysis - [14:38](https://www.youtube.com/watch?v=pTGjtIYQOak&t=878s) ️ Heatmap