diff --git a/R/open_tutorial_and_template.R b/R/open_tutorial_and_template.R index 9b75ed9..bc49f26 100755 --- a/R/open_tutorial_and_template.R +++ b/R/open_tutorial_and_template.R @@ -17,8 +17,14 @@ open_tutorial <- function() { # Check if rstudioapi is installed if (!requireNamespace("rstudioapi", quietly = TRUE)) { stop_call_false( - "The 'rstudioapi' package is not installed. ", - "Please install it manually with: install.packages('rstudioapi')." + "The 'rstudioapi' package is not installed.\n", + "Please install it manually (to your custom_lib_path) using the command", + "below and re-run the function:\n\n", + " install.packages('rstudioapi')\n\n", + "This is an optional dependency of the SplineOmics package, ", + "only needed for optional functionality and not part of the core", + "package, which is why it must be installed manually if this function", + "is used." ) } @@ -56,10 +62,15 @@ open_tutorial <- function() { open_template <- function() { # Check if rstudioapi is installed if (!requireNamespace("rstudioapi", quietly = TRUE)) { - stop( - "The 'rstudioapi' package is not installed. ", - "Please install it manually with: install.packages('rstudioapi').", - call. = FALSE + stop_call_false( + "The 'rstudioapi' package is not installed.\n", + "Please install it manually (to your custom_lib_path) using the", + "command below and re-run the function:\n\n", + " install.packages('rstudioapi')\n\n", + "This is an optional dependency of the SplineOmics package, ", + "only needed for optional functionality and not part of the", + "core package, ", + "which is why it must be installed manually if this function is used." ) } diff --git a/R/preprocess_rna_seq_data.R b/R/preprocess_rna_seq_data.R index 525e591..4ac2e5b 100755 --- a/R/preprocess_rna_seq_data.R +++ b/R/preprocess_rna_seq_data.R @@ -46,11 +46,15 @@ preprocess_rna_seq_data <- function( # Check if edgeR is installed; if not, inform the user if (!requireNamespace("edgeR", quietly = TRUE)) { - stop( - "The 'edgeR' package is not installed. ", - "Please install it manually using BiocManager::install('edgeR') ", - "and re-run the function." + stop_call_false( + "The 'edgeR' package is not installed.\n", + "Please install it manually (to your custom_lib_path) using the command", + " below and re-run the function:\n\n", + " BiocManager::install('edgeR')\n\n", + "This is an optional dependency of the SplineOmics package, ", + "only needed when working with RNA-seq data." ) + } design_matrix <- design2design_matrix( diff --git a/R/run_gsea.R b/R/run_gsea.R index b74a27e..d88f6f8 100755 --- a/R/run_gsea.R +++ b/R/run_gsea.R @@ -178,7 +178,7 @@ control_inputs_create_gsea_report <- function( if (!is.null(background)) { if (!is.character(background)) { - stop("background must be a character vector or NULL.", call. = FALSE) + stop_call_false("background must be a character vector or NULL.") } else { check_genes(background) } @@ -199,11 +199,15 @@ control_inputs_create_gsea_report <- function( ensure_clusterProfiler <- function() { # Check if clusterProfiler is installed; if not, inform the user if (!requireNamespace("clusterProfiler", quietly = TRUE)) { - stop( - "The 'clusterProfiler' package is not installed. ", - "Please install it manually using", - "BiocManager::install('clusterProfiler') ", - "and re-run the function." + stop_call_false( + "The 'clusterProfiler' package is not installed.\n", + "Please install it manually (to your custom_lib_path) using the", + "command below and re-run the function:\n\n", + " BiocManager::install('clusterProfiler')\n\n", + "This is an optional dependency of the SplineOmics package, ", + "only needed for optional functionality and not part of the core", + "package, ", + "which is why it must be installed manually if this function is used." ) } } diff --git a/README.Rmd b/README.Rmd index b25e791..7183717 100755 --- a/README.Rmd +++ b/README.Rmd @@ -98,8 +98,7 @@ Follow the steps below to install the `SplineOmics` package from the GitHub repo Note that some installation paths potentially are not writable on **Windows**. Therefore, it can be necessary to set up a library path and use that path for the installations: ``` r -# Define the custom library path and expand the tilde (~) -custom_lib_path <- path.expand("~/Rlibs") +custom_lib_path <- "C:/Rlibs" # Replace with your desired path # Create the directory if it doesn't exist if (!dir.exists(custom_lib_path)) { diff --git a/README.md b/README.md index 4649963..d229453 100755 --- a/README.md +++ b/README.md @@ -1,102 +1,142 @@ + # SplineOmics -![Version](https://img.shields.io/badge/version-0.1.0-blue) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) ![Maintained? Yes](https://img.shields.io/badge/Maintained%3F-yes-brightgreen.svg) ![R CMD Check](https://img.shields.io/badge/R%20CMD%20check-passed-brightgreen) [![Docker](https://img.shields.io/badge/docker-pull-blue)](https://hub.docker.com/r/thomasrauter/splineomics) ![Dependencies](https://img.shields.io/badge/dependencies-19-blue) ![Platforms](https://img.shields.io/badge/platforms-all-brightgreen) +![Version](https://img.shields.io/badge/version-0.1.0-blue) [![License: +MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) +![Maintained? +Yes](https://img.shields.io/badge/Maintained%3F-yes-brightgreen.svg) ![R +CMD +Check](https://img.shields.io/badge/R%20CMD%20check-passed-brightgreen) +[![Docker](https://img.shields.io/badge/docker-pull-blue)](https://hub.docker.com/r/thomasrauter/splineomics) +![Dependencies](https://img.shields.io/badge/dependencies-19-blue) +![Platforms](https://img.shields.io/badge/platforms-all-brightgreen) -The R package `SplineOmics` finds the significant features (hits) of time-series -omics data by using splines and `limma` for hypothesis testing. It then clusters the hits based on the spline shape while showing all results in summary HTML reports. +The R package `SplineOmics` finds the significant features (hits) of +time-series -omics data by using splines and `limma` for hypothesis +testing. It then clusters the hits based on the spline shape while +showing all results in summary HTML reports. -The graphical abstract below shows the full workflow streamlined by `SplineOmics`: +The graphical abstract below shows the full workflow streamlined by +`SplineOmics`:
- -Graphical Abstract of SplineOmics Workflow - - - + +
## Table of Contents -- [πŸ“˜ Introduction](#-introduction) -- [πŸ”§ Installation](#-installation) - - [🐳 Docker Container](#-docker-container) -- [▢️ Usage](#-usage) - - [Tutorial](#-tutorial) - - [Details](#-details) - - [RNA-seq and Glycan Data](#-rna-seq-and-glycan-data) -- [πŸ“¦ Dependencies](#-dependencies) -- [πŸ“š Further Reading](#-further-reading) -- [❓ Getting Help](#-getting-help) -- [🀝 Contributing](#-contributing) -- [πŸ’¬ Feedback](#-feedback) -- [πŸ“œ License](#-license) -- [πŸŽ“ Citation](#-citation) -- [🌟 Contributors](#-contributors) -- [πŸ™ Acknowledgements](#-acknowledgements) +- [πŸ“˜ Introduction](#-introduction) +- [πŸ”§ Installation](#-installation) + - [🐳 Docker Container](#-docker-container) +- [▢️ Usage](#-usage) + - [Tutorial](#-tutorial) + - [Details](#-details) + - [RNA-seq and Glycan Data](#-rna-seq-and-glycan-data) +- [πŸ“¦ Dependencies](#-dependencies) +- [πŸ“š Further Reading](#-further-reading) +- [❓ Getting Help](#-getting-help) +- [🀝 Contributing](#-contributing) +- [πŸ’¬ Feedback](#-feedback) +- [πŸ“œ License](#-license) +- [πŸŽ“ Citation](#-citation) +- [🌟 Contributors](#-contributors) +- [πŸ™ Acknowledgements](#-acknowledgements) ## πŸ“˜ Introduction -Welcome to `SplineOmics`, an R package designed to streamline the analysis of -omics time-series data, followed by automated HTML report generation. +Welcome to `SplineOmics`, an R package designed to streamline the +analysis of -omics time-series data, followed by automated HTML report +generation. ### Is the SplineOmics package of use for me? -If you have -omics data over time, the package will help you to run `limma` with splines, decide on which parameters to use, perform the clustering, run GSEA and show result plots in HTML reports. Any time-series data that is a valid input to the `limma` package is also a valid input to the `SplineOmics` package (such as transcriptomics, proteomics, phosphoproteomics, metabolomics, glycan fractional abundances, etc.). +If you have -omics data over time, the package will help you to run +`limma` with splines, decide on which parameters to use, perform the +clustering, run GSEA and show result plots in HTML reports. Any +time-series data that is a valid input to the `limma` package is also a +valid input to the `SplineOmics` package (such as transcriptomics, +proteomics, phosphoproteomics, metabolomics, glycan fractional +abundances, etc.). ### What do I need precisely? -1. **Data**: A data matrix where each row is a feature (e.g., protein, metabolite, etc.) and each column is a sample taken at a specific time. The data must have no NA values, should have normally distributed features and no dependence between the samples. +1. **Data**: A data matrix where each row is a feature (e.g., protein, + metabolite, etc.) and each column is a sample taken at a specific + time. The data must have no NA values, should have normally + distributed features and no dependence between the samples. -2. **Meta**: A table with metadata on the columns/samples of the data matrix (e.g., batch, time point, etc.) +2. **Meta**: A table with metadata on the columns/samples of the data + matrix (e.g., batch, time point, etc.) -3. **Annotation** (optional): A table with identifiers on the rows/features of the data matrix (e.g., gene and protein name). +3. **Annotation** (optional): A table with identifiers on the + rows/features of the data matrix (e.g., gene and protein name). ### Capabilities With `SplineOmics`, you can: -- **Automatically perform exploratory data analysis:** +- **Automatically perform exploratory data analysis:** - The `explore_data()` function generates an HTML report, containing various plots, such as density, PCA, and correlation heatmap plots ([example report](https://csbg.github.io/SplineOmics_html_reports/explore_data_PTX.html)). + The `explore_data()` function generates an HTML report, containing + various plots, such as density, PCA, and correlation heatmap plots + ([example + report](https://csbg.github.io/SplineOmics_html_reports/explore_data_PTX.html)). -- **Explore various limma splines hyperparameters:** +- **Explore various limma splines hyperparameters:** - Test combinations of hyperparameters, such as different datasets, `limma` design formulas, degrees of freedom, p-value thresholds, etc., using the `screen_limma_hyperparams()` function ([example report](https://csbg.github.io/SplineOmics_html_reports/Data_1_Design_1_vs_Data_1_Design_2_PTX.html) (along with the [encoding](https://csbg.github.io/SplineOmics_html_reports/hyperparams_screen_meta_table.html))). + Test combinations of hyperparameters, such as different datasets, + `limma` design formulas, degrees of freedom, p-value thresholds, etc., + using the `screen_limma_hyperparams()` function ([example + report](https://csbg.github.io/SplineOmics_html_reports/Data_1_Design_1_vs_Data_1_Design_2_PTX.html) + (along with the + [encoding](https://csbg.github.io/SplineOmics_html_reports/hyperparams_screen_meta_table.html))). -- **Perform limma spline analysis:** +- **Perform limma spline analysis:** - Use the `run_limma_splines()` function to perform the `limma` analysis with splines once the optimal hyperparameters are identified ([example report](https://csbg.github.io/SplineOmics_html_reports/create_limma_report_PTX.html)). + Use the `run_limma_splines()` function to perform the `limma` analysis + with splines once the optimal hyperparameters are identified ([example + report](https://csbg.github.io/SplineOmics_html_reports/create_limma_report_PTX.html)). -- **Cluster significant features:** +- **Cluster significant features:** - Cluster the significant features (hits) identified in the spline analysis with the `cluster_hits()` function ([example report](https://csbg.github.io/SplineOmics_html_reports/report_clustered_hits_PTX.html)). + Cluster the significant features (hits) identified in the spline + analysis with the `cluster_hits()` function ([example + report](https://csbg.github.io/SplineOmics_html_reports/report_clustered_hits_PTX.html)). -- **Run GSEA with clustered hits:** +- **Run GSEA with clustered hits:** - Perform gene set enrichment analysis (GSEA) using the clustered hits with the `create_gsea_report()` function ([example report](https://csbg.github.io/SplineOmics_html_reports/create_gsea_report_PTX.html)). + Perform gene set enrichment analysis (GSEA) using the clustered hits + with the `create_gsea_report()` function ([example + report](https://csbg.github.io/SplineOmics_html_reports/create_gsea_report_PTX.html)). ## πŸ”§ Installation -Follow the steps below to install the `SplineOmics` package from the GitHub repository into your R environment. +Follow the steps below to install the `SplineOmics` package from the +GitHub repository into your R environment. #### Prerequisites -- Ensure **R** is installed on your system. If not, download and install it from [CRAN](https://cran.r-project.org/). -- **RStudio** is recommended for a more user-friendly experience with R. Download and install RStudio from [posit.co](https://posit.co/download/rstudio-desktop/). +- Ensure **R** is installed on your system. If not, download and install + it from [CRAN](https://cran.r-project.org/). +- **RStudio** is recommended for a more user-friendly experience with R. + Download and install RStudio from + [posit.co](https://posit.co/download/rstudio-desktop/). #### Installation Steps > **Note for Windows Users:** -Note that some installation paths potentially are not writable on **Windows**. Therefore, it can be necessary to set up a library path and use that path for the installations: +Note that some installation paths potentially are not writable on +**Windows**. Therefore, it can be necessary to set up a library path and +use that path for the installations: ``` r -# Define the custom library path and expand the tilde (~) -custom_lib_path <- path.expand("~/Rlibs") +custom_lib_path <- "C:/Rlibs" # Replace with your desired path # Create the directory if it doesn't exist if (!dir.exists(custom_lib_path)) { @@ -118,11 +158,14 @@ if (custom_lib_path %in% .libPaths()) { } ``` -Alternatively, you can run `RStudio` as administrator once for the installation (which is however generally not recommended, because it is a security risk). +Alternatively, you can run `RStudio` as administrator once for the +installation (which is however generally not recommended, because it is +a security risk). 1. **Open RStudio** or your R console. -2. **Install `BiocManager`** for Bioconductor dependencies (if not already installed) +2. **Install `BiocManager`** for Bioconductor dependencies (if not + already installed) ``` r install.packages( @@ -141,7 +184,8 @@ BiocManager::install( ) ``` -4. **Install** the **`remotes`** package for GitHub downloads (if not already installed) +4. **Install** the **`remotes`** package for GitHub downloads (if not + already installed) ``` r install.packages( @@ -150,7 +194,8 @@ install.packages( ) ``` -5. **Install** the **`SplineOmics`** package from GitHub and all its non-Bioconductor dependencies, using `remotes` +5. **Install** the **`SplineOmics`** package from GitHub and all its + non-Bioconductor dependencies, using `remotes` ``` r remotes::install_github( @@ -176,29 +221,48 @@ if ("SplineOmics" %in% rownames(installed.packages())) { #### Troubleshooting -If you encounter errors related to dependencies or package versions during installation, try updating your R and RStudio to the latest versions and repeat the installation steps. +If you encounter errors related to dependencies or package versions +during installation, try updating your R and RStudio to the latest +versions and repeat the installation steps. -For issues specifically related to the `SplineOmics` package, check the [Issues section](https://github.com/csbg/SplineOmics/issues) of the GitHub repository for similar problems or to post a new issue. +For issues specifically related to the `SplineOmics` package, check the +[Issues section](https://github.com/csbg/SplineOmics/issues) of the +GitHub repository for similar problems or to post a new issue. ### 🐳 Docker Container -Alternatively, you can run your analysis in a `Docker` container. The underlying `Docker` image encapsulates the `SplineOmics` package together with the necessary environment and dependencies. This ensures higher levels of reproducibility because the analysis is carried out in a consistent environment, independent of the operating system and its custom configurations. +Alternatively, you can run your analysis in a `Docker` container. The +underlying `Docker` image encapsulates the `SplineOmics` package +together with the necessary environment and dependencies. This ensures +higher levels of reproducibility because the analysis is carried out in +a consistent environment, independent of the operating system and its +custom configurations. -Please note that you must have the `Docker Engine` installed on your machine. For instructions on how to install it, consult the official [Docker Engine installation guide](https://docs.docker.com/engine/install/). +Please note that you must have the `Docker Engine` installed on your +machine. For instructions on how to install it, consult the official +[Docker Engine installation +guide](https://docs.docker.com/engine/install/). -More information about `Docker` containers can be found on the [official Docker page](https://www.docker.com/resources/what-container/). +More information about `Docker` containers can be found on the [official +Docker page](https://www.docker.com/resources/what-container/). -For instructions on downloading the image of the `SplineOmics` package and running the container, please refer to the [Docker instructions](https://csbg.github.io/SplineOmics/articles/Docker-instructions.html). +For instructions on downloading the image of the `SplineOmics` package +and running the container, please refer to the [Docker +instructions](https://csbg.github.io/SplineOmics/articles/Docker-instructions.html). #### Troubleshooting -If you face β€œpermission denied” issues on Linux distributions, check this [vignette](https://csbg.github.io/SplineOmics/articles/Docker_permission_denied.html). +If you face β€œpermission denied” issues on Linux distributions, check +this +[vignette](https://csbg.github.io/SplineOmics/articles/Docker_permission_denied.html). ## β–Ά Usage ### Tutorial -[This tutorial](https://csbg.github.io/SplineOmics/articles/get-started.html) covers a real CHO cell time-series proteomics example from start to end. +[This +tutorial](https://csbg.github.io/SplineOmics/articles/get-started.html) +covers a real CHO cell time-series proteomics example from start to end. To open an R Markdown file of the **tutorial** in `RStudio`, run: @@ -207,7 +271,8 @@ library(SplineOmics) open_tutorial() ``` -To open an R Markdown file in `RStudio` containing a **template** for your own analysis, run: +To open an R Markdown file in `RStudio` containing a **template** for +your own analysis, run: ``` r library(SplineOmics) @@ -216,30 +281,56 @@ open_template() ### Details -A detailed description of all arguments and outputs of all the functions in the package (exported and internal functions) can be found [here](https://csbg.github.io/SplineOmics/reference/). +A detailed description of all arguments and outputs of all the functions +in the package (exported and internal functions) can be found +[here](https://csbg.github.io/SplineOmics/reference/). #### Design `limma` design formula -A quick guide on how to design a `limma` design formula can be found [here](https://csbg.github.io/SplineOmics/articles/design_limma_design_formula.html) +A quick guide on how to design a `limma` design formula can be found +[here](https://csbg.github.io/SplineOmics/articles/design_limma_design_formula.html) -An explanation of the three different `limma` results is [here](https://csbg.github.io/SplineOmics/articles/limma_result_categories.html) +An explanation of the three different `limma` results is +[here](https://csbg.github.io/SplineOmics/articles/limma_result_categories.html) ### RNA-seq and Glycan Data #### RNA-seq data -Transcriptomics data must be preprocessed for `limma`. You need to provide an appropriate object, such as a `voom` object, in the `rna_seq_data` argument of the `SplineOmics` object (see [documentation](https://csbg.github.io/SplineOmics/reference/create_splineomics.html)). Along with this, the normalized matrix (e.g., the `$E` slot of the `voom` object) must be passed to the `data` argument. This allows flexibility in preprocessing; you can use any method you prefer as long as the final object and matrix are compatible with limma. One way to preprocess your RNA-seq data is by using the `preprocess_rna_seq_data()` function included in the `SplineOmics` package (see [documentation](https://csbg.github.io/SplineOmics/reference/preprocess_rna_seq_data.html)). +Transcriptomics data must be preprocessed for `limma`. You need to +provide an appropriate object, such as a `voom` object, in the +`rna_seq_data` argument of the `SplineOmics` object (see +[documentation](https://csbg.github.io/SplineOmics/reference/create_splineomics.html)). +Along with this, the normalized matrix (e.g., the `$E` slot of the +`voom` object) must be passed to the `data` argument. This allows +flexibility in preprocessing; you can use any method you prefer as long +as the final object and matrix are compatible with limma. One way to +preprocess your RNA-seq data is by using the `preprocess_rna_seq_data()` +function included in the `SplineOmics` package (see +[documentation](https://csbg.github.io/SplineOmics/reference/preprocess_rna_seq_data.html)). #### Glycan fractional abundance data -The glycan fractional abundance data matrix, where each row represents a type of glycan and the columns correspond to timepoints, must be transformed before analysis. This preprocessing step is essential due to the compositional nature of the data. In compositional data, an increase in the abundance of one component (glycan) necessarily results in a decrease in others, introducing a dependency among the variables that can bias the analysis. One way to address this issue is by applying the Centered Log Ratio (CLR) transformation to the data with the clr function from the compositions package: +The glycan fractional abundance data matrix, where each row represents a +type of glycan and the columns correspond to timepoints, must be +transformed before analysis. This preprocessing step is essential due to +the compositional nature of the data. In compositional data, an increase +in the abundance of one component (glycan) necessarily results in a +decrease in others, introducing a dependency among the variables that +can bias the analysis. One way to address this issue is by applying the +Centered Log Ratio (CLR) transformation to the data with the clr +function from the compositions package: ``` r library(compositions) clr_transformed_data <- clr(data_matrix) # use as SplineOmics input ``` -The results from clr transformed data can be harder to understand and interpret however. If you prefer ease of interpretation and are fine that the results contain some artifacts due to the compositional nature of the data, log2 transform your data instead and use that as input for the `SplineOmics` package. +The results from clr transformed data can be harder to understand and +interpret however. If you prefer ease of interpretation and are fine +that the results contain some artifacts due to the compositional nature +of the data, log2 transform your data instead and use that as input for +the `SplineOmics` package. ``` r log2_transformed_data <- log2(data_matrix) # use as SplineOmics input @@ -247,83 +338,134 @@ log2_transformed_data <- log2(data_matrix) # use as SplineOmics input ## πŸ“¦ Dependencies -The `SplineOmics` package relies on several other R packages for its functionality. Below is a list of dependencies that will automatically be installed along with `SplineOmics`. If you already have these packages installed, ensure they are up to date to avoid any compatibility issues. - -- **ComplexHeatmap** (\>= 2.18.0): For creating complex heatmaps with advanced features. -- **base64enc** (\>= 0.1-3): For encoding/decoding base64. -- **dendextend** (\>= 1.17.1): For extending `dendrogram` objects, allowing for easier manipulation of dendrograms. -- **dplyr** (\>= 1.1.4): For data manipulation. -- **ggplot2** (\>= 3.5.1): For creating elegant data visualizations using the grammar of graphics. -- **ggrepel** (\>= 0.9.5): For better label placement in `ggplot2`. -- **here** (\>= 1.0.1): For constructing paths to your project’s files. -- **limma** (\>= 3.58.1): For linear models in microarray and RNA-seq analysis. -- **openxlsx** (\>= 4.2.6.1): For reading, writing, and editing `.xlsx` files. -- **patchwork** (\>= 1.2.0): For combining multiple `ggplot` objects into a single plot. -- **pheatmap** (\>= 1.0.12): For creating aesthetically pleasing heatmaps. -- **progress** (\>= 1.2.3): For adding progress bars to loops and apply functions. -- **purrr** (\>= 1.0.2): For functional programming tools. -- **rlang** (\>= 1.1.4): For working with core language features of R. -- **scales** (\>= 1.3.0): For scale functions in visualizations. -- **svglite** (\>= 2.1.3): For creating high-quality vector graphics (SVG). -- **tibble** (\>= 3.2.1): For creating tidy data frames. -- **tidyr** (\>= 1.3.1): For tidying data. -- **zip** (\>= 2.3.1): For compressing and combining files into zip archives. +The `SplineOmics` package relies on several other R packages for its +functionality. Below is a list of dependencies that will automatically +be installed along with `SplineOmics`. If you already have these +packages installed, ensure they are up to date to avoid any +compatibility issues. + +- **ComplexHeatmap** (\>= 2.18.0): For creating complex heatmaps with + advanced features. +- **base64enc** (\>= 0.1-3): For encoding/decoding base64. +- **dendextend** (\>= 1.17.1): For extending `dendrogram` objects, + allowing for easier manipulation of dendrograms. +- **dplyr** (\>= 1.1.4): For data manipulation. +- **ggplot2** (\>= 3.5.1): For creating elegant data visualizations + using the grammar of graphics. +- **ggrepel** (\>= 0.9.5): For better label placement in `ggplot2`. +- **here** (\>= 1.0.1): For constructing paths to your project’s files. +- **limma** (\>= 3.58.1): For linear models in microarray and RNA-seq + analysis. +- **openxlsx** (\>= 4.2.6.1): For reading, writing, and editing `.xlsx` + files. +- **patchwork** (\>= 1.2.0): For combining multiple `ggplot` objects + into a single plot. +- **pheatmap** (\>= 1.0.12): For creating aesthetically pleasing + heatmaps. +- **progress** (\>= 1.2.3): For adding progress bars to loops and apply + functions. +- **purrr** (\>= 1.0.2): For functional programming tools. +- **rlang** (\>= 1.1.4): For working with core language features of R. +- **scales** (\>= 1.3.0): For scale functions in visualizations. +- **svglite** (\>= 2.1.3): For creating high-quality vector graphics + (SVG). +- **tibble** (\>= 3.2.1): For creating tidy data frames. +- **tidyr** (\>= 1.3.1): For tidying data. +- **zip** (\>= 2.3.1): For compressing and combining files into zip + archives. ### Optional Dependencies -These packages are optional and are only needed for specific functionality: +These packages are optional and are only needed for specific +functionality: -- **edgeR** (\>= 4.0.16): For preprocessing RNA-seq data in the `preprocess_rna_seq_data()` function. -- **clusterProfiler** (\>= 4.10.1): For the `run_gsea()` function (gene set enrichment analysis). -- **rstudioapi** (\>= 0.16.0): For the `open_tutorial()` and `open_template()` functions. +- **edgeR** (\>= 4.0.16): For preprocessing RNA-seq data in the + `preprocess_rna_seq_data()` function. +- **clusterProfiler** (\>= 4.10.1): For the `run_gsea()` function (gene + set enrichment analysis). +- **rstudioapi** (\>= 0.16.0): For the `open_tutorial()` and + `open_template()` functions. ### R Version -- Recommended: R 4.3.3 or higher +- Recommended: R 4.3.3 or higher ## πŸ“š Further Reading -For those interested in gaining a deeper understanding of the methodologies used in the `SplineOmics` package, here are some recommended publications: +For those interested in gaining a deeper understanding of the +methodologies used in the `SplineOmics` package, here are some +recommended publications: -- **Splines**: To learn more about splines, you can refer to this [review](https://doi.org/10.1186/s12874-019-0666-3). +- **Splines**: To learn more about splines, you can refer to this + [review](https://doi.org/10.1186/s12874-019-0666-3). -- **limma**: To read about the `limma` R package, you can refer to this [publication](https://doi.org/10.1093/nar/gkv007). +- **limma**: To read about the `limma` R package, you can refer to this + [publication](https://doi.org/10.1093/nar/gkv007). -- **PCA**: To learn more about PCA, download and read this [document](https://github.com/csbg/SplineOmics/raw/main/docs/Points_of_Significance_PCA.pdf). +- **PCA**: To learn more about PCA, download and read this + [document](https://github.com/csbg/SplineOmics/raw/main/docs/Points_of_Significance_PCA.pdf). -- **Hierarchical clustering**: To get information about hierarchical clustering, you can refer to this [web article](https://towardsdatascience.com/understanding-the-concept-of-hierarchical-clustering-technique-c6e8243758ec). +- **Hierarchical clustering**: To get information about hierarchical + clustering, you can refer to this [web + article](https://towardsdatascience.com/understanding-the-concept-of-hierarchical-clustering-technique-c6e8243758ec). ## ❓ Getting Help -If you encounter a bug or have a suggestion for improving the `SplineOmics` package, we encourage you to [open an issue](https://github.com/csbg/SplineOmics/issues) on our GitHub repository. Before opening a new issue, please check to see if your question or bug has already been reported by another user. This helps avoid duplicate reports and ensures that we can address problems efficiently. +If you encounter a bug or have a suggestion for improving the +`SplineOmics` package, we encourage you to [open an +issue](https://github.com/csbg/SplineOmics/issues) on our GitHub +repository. Before opening a new issue, please check to see if your +question or bug has already been reported by another user. This helps +avoid duplicate reports and ensures that we can address problems +efficiently. -For more detailed questions, discussions, or contributions regarding the package’s use and development, please refer to the [GitHub Discussions](https://github.com/csbg/SplineOmics/discussions) page for `SplineOmics`. +For more detailed questions, discussions, or contributions regarding the +package’s use and development, please refer to the [GitHub +Discussions](https://github.com/csbg/SplineOmics/discussions) page for +`SplineOmics`. ## 🀝 Contributing -We welcome contributions to the `SplineOmics` package! Whether you’re interested in fixing bugs, adding new features, or improving documentation, your help is greatly appreciated. +We welcome contributions to the `SplineOmics` package! Whether you’re +interested in fixing bugs, adding new features, or improving +documentation, your help is greatly appreciated. Here’s how you can contribute: -1. **Report a Bug or Request a Feature:** If you encounter a bug or have an idea for a new feature, please [open an issue](https://github.com/csbg/SplineOmics/issues) on our GitHub repository. Before opening a new issue, check to see if the issue has already been reported or the feature requested by another user. +1. **Report a Bug or Request a Feature:** If you encounter a bug or + have an idea for a new feature, please [open an + issue](https://github.com/csbg/SplineOmics/issues) on our GitHub + repository. Before opening a new issue, check to see if the issue + has already been reported or the feature requested by another user. -2. **Submit a Pull Request:** If you’ve developed a bug fix or a new feature that you’d like to share, submit a pull request. +2. **Submit a Pull Request:** If you’ve developed a bug fix or a new + feature that you’d like to share, submit a pull request. -3. **Improve Documentation:** Good documentation is crucial for any project. If you notice missing or incorrect documentation, please feel free to contribute. +3. **Improve Documentation:** Good documentation is crucial for any + project. If you notice missing or incorrect documentation, please + feel free to contribute. -Please adhere to our [Code of Conduct](CODE_OF_CONDUCT.md) in all your interactions with the project. +Please adhere to our [Code of Conduct](CODE_OF_CONDUCT.md) in all your +interactions with the project. -Thank you for considering contributing to `SplineOmics`. Your efforts are what make the open-source community a fantastic place to learn, inspire, and create. +Thank you for considering contributing to `SplineOmics`. Your efforts +are what make the open-source community a fantastic place to learn, +inspire, and create. ## πŸ’¬ Feedback -We appreciate your feedback! Besides raising issues, you can provide feedback in the following ways: +We appreciate your feedback! Besides raising issues, you can provide +feedback in the following ways: -- **Direct Email**: Send your feedback directly to [Thomas Rauter](mailto:thomas.rauter@plus.ac.at). +- **Direct Email**: Send your feedback directly to [Thomas + Rauter](mailto:thomas.rauter@plus.ac.at). -- **Anonymous Feedback**: Use [this Google Form](https://forms.gle/jocMXSxLf3GrGBdT9) to provide anonymous feedback by answering questions. +- **Anonymous Feedback**: Use [this Google + Form](https://forms.gle/jocMXSxLf3GrGBdT9) to provide anonymous + feedback by answering questions. -Your feedback helps us improve the project and address any issues you may encounter. +Your feedback helps us improve the project and address any issues you +may encounter. ## πŸ“œ License @@ -333,21 +475,42 @@ This package is licensed under the MIT License: [LICENSE](./LICENSE) ## πŸŽ“ Citation -The `SplineOmics` package is currently not published in a peer-reviewed scientific journal or similar outlet. However, if this package helped you in your work, consider citing this GitHub repository. +The `SplineOmics` package is currently not published in a peer-reviewed +scientific journal or similar outlet. However, if this package helped +you in your work, consider citing this GitHub repository. -To cite this package, you can use the citation information provided in the [`CITATION.cff`](./CITATION.cff) file. +To cite this package, you can use the citation information provided in +the [`CITATION.cff`](./CITATION.cff) file. -You can also generate a citation in various formats using the `CITATION.cff` file by visiting the top right of this repo and clicking on the β€œCite this repository” button. +You can also generate a citation in various formats using the +`CITATION.cff` file by visiting the top right of this repo and clicking +on the β€œCite this repository” button. -Also, if you like the package, consider giving the GitHub repository a star. Your support helps us in the continued development and improvement of `SplineOmics`. Thank you for using our package! +Also, if you like the package, consider giving the GitHub repository a +star. Your support helps us in the continued development and improvement +of `SplineOmics`. Thank you for using our package! ## 🌟 Contributors -- [Thomas-Rauter](https://github.com/Thomas-Rauter) - πŸš€ Wrote the package, developed the approach together with VSchaepertoens under guidance from nfortelny and skafdasschaf. -- [nfortelny](https://github.com/nfortelny) - 🧠 Principal Investigator, provided guidance and support for the overall approach. -- [skafdasschaf](https://github.com/skafdasschaf) - πŸ”§ Helped reviewing code, delivered improvement suggestions and scientific guidance to develop the approach. -- [VSchaepertoens](https://github.com/VSchaepertoens) - ✨ Developed one internal plotting function, as well as some code for the exploratory data analysis plots, and the overall approach together with Thomas-Rauter. +- [Thomas-Rauter](https://github.com/Thomas-Rauter) - πŸš€ Wrote the + package, developed the approach together with VSchaepertoens under + guidance from nfortelny and skafdasschaf. +- [nfortelny](https://github.com/nfortelny) - 🧠 Principal Investigator, + provided guidance and support for the overall approach. +- [skafdasschaf](https://github.com/skafdasschaf) - πŸ”§ Helped reviewing + code, delivered improvement suggestions and scientific guidance to + develop the approach. +- [VSchaepertoens](https://github.com/VSchaepertoens) - ✨ Developed one + internal plotting function, as well as some code for the exploratory + data analysis plots, and the overall approach together with + Thomas-Rauter. ## πŸ™ Acknowledgements -This work was carried out in the context of the DigiTherapeutX project, which was funded by the Austrian Science Fund (FWF). The research was conducted under the supervision of Prof.Β Nikolaus Fortelny, who leads the Computational Systems Biology working group at the Paris Lodron University of Salzburg, Austria. You can find more information about Prof.Β Fortelny’s research group [here](https://www.plus.ac.at/biowissenschaften/der-fachbereich/arbeitsgruppen/fortelny/). +This work was carried out in the context of the DigiTherapeutX project, +which was funded by the Austrian Science Fund (FWF). The research was +conducted under the supervision of Prof.Β Nikolaus Fortelny, who leads +the Computational Systems Biology working group at the Paris Lodron +University of Salzburg, Austria. You can find more information about +Prof.Β Fortelny’s research group +[here](https://www.plus.ac.at/biowissenschaften/der-fachbereich/arbeitsgruppen/fortelny/). diff --git a/docs/articles/RNA-seq analysis.html b/docs/articles/RNA-seq analysis.html index 632f943..6b7febc 100644 --- a/docs/articles/RNA-seq analysis.html +++ b/docs/articles/RNA-seq analysis.html @@ -162,7 +162,7 @@

Load the packages#> 'variancePartition::topTable' when loading 'SplineOmics' library(readr) # For reading the meta CSV file library(here) # For managing filepaths -#> here() starts at /tmp/RtmpDa5Umr +#> here() starts at /tmp/RtmpCTvFNy library(dplyr) # For data manipulation #> #> Attaching package: 'dplyr' @@ -1655,10 +1655,10 @@

Cluster the hits (significant fea

Perform gene set enrichment analysis (GSEA)

-

Usually, the final step in such a bioinformatics analysis is GSEA. To -each clustered hit, the respective gene can be assigned and GSEA -performed. For this, the Enrichr databases of choice have to be -downloaded:

+

Once the clustered hits are identified, a subsequent step to gain +biological insights is to perform GSEA. For this, the respective genes +can be assigned to each clustered hit, and GSEA can be carried out. To +proceed, the Enrichr databases of choice need to be downloaded:

 # Specify which databases you want to download from Enrichr
 gene_set_lib <- c(
diff --git a/docs/articles/get-started.html b/docs/articles/get-started.html
index 5851d0e..a770e8f 100644
--- a/docs/articles/get-started.html
+++ b/docs/articles/get-started.html
@@ -954,10 +954,10 @@ 

Cluster the hits (significant fea

Perform gene set enrichment analysis (GSEA)

-

Usually, the final step in such a bioinformatics analysis is GSEA. To -each clustered hit, the respective gene can be assigned and GSEA -performed. For this, the Enrichr databases of choice have to be -downloaded:

+

Once the clustered hits are identified, a subsequent step to gain +biological insights is to perform GSEA. For this, the respective genes +can be assigned to each clustered hit, and GSEA can be carried out. To +proceed, the Enrichr databases of choice need to be downloaded:

 # Specify which databases you want to download from Enrichr
 gene_set_lib <- c(
diff --git a/docs/index.html b/docs/index.html
index ae73e5b..0a4c614 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -68,8 +68,8 @@
 

The R package SplineOmics finds the significant features (hits) of time-series -omics data by using splines and limma for hypothesis testing. It then clusters the hits based on the spline shape while showing all results in summary HTML reports.

The graphical abstract below shows the full workflow streamlined by SplineOmics:

-

Graphical Abstract of SplineOmics Workflow

-