From 45bf389971032d34eeb581d4460023d4c1080206 Mon Sep 17 00:00:00 2001 From: dianichj Date: Fri, 6 Dec 2024 19:55:00 +0100 Subject: [PATCH 01/20] Add pseudobulk-analysis tutorial and associated files --- .../pseudobulk-analysis/data-library.yaml | 19 + .../pseudobulk-analysis/faqs/.Rhistory | 0 .../pseudobulk-analysis/faqs/index.md | 3 + .../pseudobulk-analysis/tutorial.bib | 42 + .../tutorials/pseudobulk-analysis/tutorial.md | 487 ++++++++ .../pseudobulk-analysis/workflows/index.md | 3 + .../workflows/pseudo-bulk_edgeR-tests.yml | 50 + .../workflows/pseudo-bulk_edgeR.ga | 1018 +++++++++++++++++ 8 files changed, 1622 insertions(+) create mode 100644 topics/single-cell/tutorials/pseudobulk-analysis/data-library.yaml create mode 100644 topics/single-cell/tutorials/pseudobulk-analysis/faqs/.Rhistory create mode 100644 topics/single-cell/tutorials/pseudobulk-analysis/faqs/index.md create mode 100644 topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib create mode 100644 topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md create mode 100644 topics/single-cell/tutorials/pseudobulk-analysis/workflows/index.md create mode 100644 topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR-tests.yml create mode 100644 topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/data-library.yaml b/topics/single-cell/tutorials/pseudobulk-analysis/data-library.yaml new file mode 100644 index 00000000000000..ac1ad9631ce248 --- /dev/null +++ b/topics/single-cell/tutorials/pseudobulk-analysis/data-library.yaml @@ -0,0 +1,19 @@ +--- +destination: + type: library + name: GTN - Material + description: Galaxy Training Network Material + synopsis: Galaxy Training Network Material. See https://training.galaxyproject.org +items: +- name: New topic + description: Topic summary + items: + - name: Pseudobulk Analysis with Decoupler and EdgeR + items: + - name: 'DOI: 10.5281/zenodo.13929549' + description: latest + items: + - url: https://zenodo.org/api/records/13929549/files/Source AnnData file.h5ad/content + src: url + ext: '' + info: https://zenodo.org/records/13929549 diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/faqs/.Rhistory b/topics/single-cell/tutorials/pseudobulk-analysis/faqs/.Rhistory new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/faqs/index.md b/topics/single-cell/tutorials/pseudobulk-analysis/faqs/index.md new file mode 100644 index 00000000000000..9ce3fe4fce824b --- /dev/null +++ b/topics/single-cell/tutorials/pseudobulk-analysis/faqs/index.md @@ -0,0 +1,3 @@ +--- +layout: faq-page +--- diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib new file mode 100644 index 00000000000000..9206b0b6e4cae4 --- /dev/null +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib @@ -0,0 +1,42 @@ + +# This is the bibliography file for your tutorial. +# +# To add bibliography (bibtex) entries here, follow these steps: +# 1) Find the DOI for the article you want to cite +# 2) Go to https://doi2bib.org and fill in the DOI +# 3) Copy the resulting bibtex entry into this file +# +# To cite the example below, in your tutorial.md file +# use {% cite Batut2018 %} +# +# If you want to cite an online resourse (website etc) +# you can use the 'online' format (see below) +# +# You can remove the examples below + +@article{Batut2018, + doi = {10.1016/j.cels.2018.05.012}, + url = {https://doi.org/10.1016/j.cels.2018.05.012}, + year = {2018}, + month = jun, + publisher = {Elsevier {BV}}, + volume = {6}, + number = {6}, + pages = {752--758.e1}, + author = {B{\'{e}}r{\'{e}}nice Batut and Saskia Hiltemann and Andrea Bagnacani and Dannon Baker and Vivek Bhardwaj and + Clemens Blank and Anthony Bretaudeau and Loraine Brillet-Gu{\'{e}}guen and Martin {\v{C}}ech and John Chilton + and Dave Clements and Olivia Doppelt-Azeroual and Anika Erxleben and Mallory Ann Freeberg and Simon Gladman and + Youri Hoogstrate and Hans-Rudolf Hotz and Torsten Houwaart and Pratik Jagtap and Delphine Larivi{\`{e}}re and + Gildas Le Corguill{\'{e}} and Thomas Manke and Fabien Mareuil and Fidel Ram{\'{i}}rez and Devon Ryan and + Florian Christoph Sigloch and Nicola Soranzo and Joachim Wolff and Pavankumar Videm and Markus Wolfien and + Aisanjiang Wubuli and Dilmurat Yusuf and James Taylor and Rolf Backofen and Anton Nekrutenko and Bj\"{o}rn Gr\"{u}ning}, + title = {Community-Driven Data Analysis Training for Biology}, + journal = {Cell Systems} +} + +@online{gtn-website, + author = {GTN community}, + title = {GTN Training Materials: Collection of tutorials developed and maintained by the worldwide Galaxy community}, + url = {https://training.galaxyproject.org}, + urldate = {2021-03-24} +} diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md new file mode 100644 index 00000000000000..dfcc478b702c9b --- /dev/null +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -0,0 +1,487 @@ +--- +layout: tutorial_hands_on + +title: Pseudobulk Analysis with Decoupler and EdgeR +zenodo_link: https://zenodo.org/records/13929549 +questions: +- How does pseudobulk analysis help in understanding cell-type-specific gene expression changes? +- What steps are required to prepare single-cell data (e.g., clustering, annotation, and metadata addition) for pseudobulk analysis? +- How can we use pseudobulk data prepared with Decoupler to perform differential expression analysis using edgeR in Galaxy? +objectives: +- Understand the principles of pseudobulk analysis in single-cell data +- Understand and generate the pseudobulk expression matrix with Decoupler +- Perform differential expression analysis using edgeR +time_estimation: 3H +key_points: +- Pseudobulk analysis bridges the gap between single-cell and bulk RNA-seq data +- Decoupler generates a pseudobulk count matrix, enabling downstream differential expression and functional analyses. +- edgeR is a robust tool for differential expression in pseudobulk datasets +contributors: +- dianichj +- pavanvidem +acknowledgments: +- pcm32 + +--- + +Pseudobulk analysis is a powerful technique that bridges the gap between single-cell and bulk RNA-seq data. It involves aggregating gene expression data from groups of cells within the same biological replicate, such as a mouse or patient, typically based on clustering or cell type annotations (citation). + +A key advantage of this approach in differential expression analysis is that it avoids treating individual cells as independent samples, which can underestimate variance and lead to inflated significance or overly optimistic p-values (citation). This occurs because cells from the same biological replicate are inherently more similar to each other than cells from different samples. By grouping data into pseudobulk samples, the analysis aligns with the experimental design, as in bulk RNA-seq, leading to more reliable and robust statistical results. + +Beyond enhancing statistical validity, pseudobulk analysis enables the identification of cell-type-specific gene expression and functional changes across biological conditions. It balances the detailed resolution of single-cell data with the statistical power of bulk RNA-seq, providing insights into the functional transcriptomic landscape relevant to biological questions. + +In this tutorial, we will guide you through a pseudobulk analysis workflow using the **Decoupler** and **edgeR** tools available in Galaxy. These tools facilitate functional and differential expression analysis, and their output can be integrated with other Galaxy tools to visualize results, such as creating Volcano Plots, which we will also cover in this tutorial. + + +> Pseudobulk Analysis Pipeline Agenda: +> +> 1. **Introduction to Pseudobulk Analysis and Data Preprocessing** +> - Overview of pseudobulk analysis +> - Preparing single-cell data for pseudobulk analysis +> - Aggregating data into pseudobulk samples +> - Inspecting Decoupler outputs +> +> 2. **Differential Expression Analysis with edgeR** +> - Preparing input files for edgeR +> - Performing differential expression analysis +> - Understanding and interpreting the results +> +> 3. **Visualization and Reporting** +> - Generating volcano plots for differentially expressed genes +> - Summarizing and presenting functional analysis results +> +> 4. **Key Takeaways and Recommendations** +> - Reviewing the pseudobulk analysis pipeline +> - Suggestions for additional analyses and further exploration +> +{: .agenda} + + +## Let's Get the Data! + +### Overview of the Data + +Our data was extracted from the publication titled _"Elevated Calprotectin and Abnormal Myeloid Cell Subsets Discriminate Severe from Mild COVID-19"_ (Silvin A et al., _Cell_, 2020, 182(6):1401-1418.e18. DOI: [10.1016/j.cell.2020.08.002](https://doi.org/10.1016/j.cell.2020.08.002)). This dataset was chosen because it was utilized by the developers of the `decoupler` tool for pseudobulk aggregate analysis (citation of the tool documentation). + +Pseudobulk analysis is an advanced method in single-cell data analysis. For this tutorial, we assume familiarity with common single-cell data formats, such as AnnData or Seurat objects, and experience analyzing single-cell data, including clustering and annotating cell types. + +If you're new to these concepts, we recommend exploring our other tutorials before going for pseudobulk: +- [Clustering 3K PBMCs with Scanpy)](https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scrna-scanpy-pbmc3k/tutorial.html): Learn how to cluster and annotate cells in Galaxy using our single-cell tools. +- [Combining single cell datasets after pre-processing](https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scrna-case_alevin-combine-datasets/tutorial.html): Understand how to combine multiple datasets into one AnnData object and add metadata from single-cell experiments. + +The data object, which you will import from Zenodo into Galaxy via the provided link, has been preprocessed, analyzed, and annotated. It includes the following key observations: +- **cell_type**: The type of cell identified. +- **disease**: Indicates whether the sample is a control or corresponds to a COVID-19 condition. +- **individual**: The individual donor or sample identifier. +- **sex**: The sex of the individual. + +> Data Upload +> +> 1. Create a new history for this tutorial and name it "Pseudobulk DE Analysis with edgeR" +> 2. Import the AnnData file from [Zenodo](https://zenodo.org/records/13929549): +> +> ``` +> https://zenodo.org/api/records/13929549/files/Source_AnnData_file.h5ad +> ``` +> +> {% snippet faqs/galaxy/datasets_import_via_link.md %} +> +> {% snippet faqs/galaxy/datasets_import_from_data_library.md %} +> +> 3. Rename the dataset: "**AnnData for Pseudobulk**." +> 4. Ensure that the datatype is correct. It should be an AnnData object (`h5ad`). +> +> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="datatypes" %} +> +{: .hands_on} + + +## Generation of the Pseudobulk Count Matrix with Decoupler + +In this step, our goal is to perform a "bioinformatic cell sorting" based on the annotated clusters of the single-cell data. + +To start a pseudobulk analysis, ensure that the AnnData object you will use contains all the necessary metadata for ***"pseudobulking"***. For example, key annotations, such as cell type, condition, disease, and batch, should be present. Most importantly, the AnnData object has to include a layer with the raw counts of gene expression. + +Raw counts are crucial for generating accurate pseudobulk aggregates. Since single-cell data is typically normalized after annotation, it’s important to preserve the raw counts in the AnnData object before normalization steps if you would like to perform a pseudobulk analysis later on. These raw counts are directly used by tools like **Decoupler** to generate the pseudobulk count matrix. Note that normalized count matrices should not be used with Decoupler, even if the tool appears to process them successfully. + +> Missing Raw Counts? +> +> If your AnnData object lacks raw counts, you can use the **[AnnData Operations](toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.9.3+galaxy0)** tool on the **[Single Cell Galaxy instance](https://singlecell.usegalaxy.eu)**. This tool allows you to copy the `.X` matrix into a new layer, such as `counts` or `raw_counts`, making it accessible as an input parameter for Decoupler. +> +> Importantly, ensure that the copying of this matrix as a raw counts layer is done carefully and correctly. To verify that your AnnData object contains the necessary raw counts layer, you can use the **[Inspect AnnData Object](toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.10.9+galaxy0)** tool. This tool helps confirm the presence of raw counts and other essential metadata in your AnnData object before proceeding with pseudobulk analysis. +> +{: .tip} + + +> Pseudobulk with Decoupler +> +> 1. Run the {% tool [Decoupler pseudo-bulk](toolshed.g2.bx.psu.edu/repos/ebi-gxa/decoupler_pseudobulk/decoupler_pseudobulk/1.4.0+galaxy5) %} tool with the following parameters: +> - {% icon param-file %} **Input AnnData file**: `AnnData for Pseudobulk` (Input dataset obtained > from Zenodo) +> - **Produce a list of genes to filter out per contrast?**: `No` +> - **Obs Fields to Merge**: *(Leave empty if not applicable)* +> - **Groupby column**: `cell_type` (Column containing cell type annotations) +> - **Sample Key column**: `individual` (Column containing individual sample identifiers) +> - **Layer**: `counts` (Layer containing raw gene expression counts) +> - **Factor Fields**: `disease` (Column in `adata.obs` specifying experimental factors. For edgeR, the first field should be the main contrast field, followed by covariates.) +> - **Use Raw**: `No` +> - **Minimum Cells**: `10` +> - **Produce plots**: `Yes` +> - **Minimum Counts**: `10` +> - **Minimum Total Counts**: `1000` +> - **Minimum Counts Per Gene Per Contrast Field**: `20` (Genes with fewer counts in specific contrasts are flagged in a separate file but not excluded from the results.) +> - **Enable Filtering by Expression**: `Yes` +> - **Plot Samples Figsize**: `13 13` +> - **Plot Filtering Figsize**: `13 13` +> +> > Performing DEG within Clusters +> > +> > **Important!** The count matrix retrieved from this tool includes all of our samples aggregated by `cell_type`, which can be identified by the column headers. If you want to perform comparisons of conditions within clusters of each individual cell type, you will need to subset the relevant columns of the matrix and use them as your new count matrix. We will demonstrate this in the last section of this tutorial with detailed hands-on steps. +> {: .comment} + + +> What are the outputs of the Decoupler tool? +> +> 1. How many outputs does the Decoupler tool generate? +> 2. What do the outputs represent? What is the interpretation of the plots? +> 3. Which output(s) will we use in edgeR for differential expression analysis? +> +{: .question} + +Solutions + +> 1. The Decoupler tool generates multiple outputs, including: +> - **Pseudobulk Count Matrix** (tabular file) +> - **Samples Metadata (Factor file)** (tabular file) +> - **Genes Metadata** (tabular file) +> - **Pseudobulk Plot** (PNG format) +> - **Filter by Expression Plot** (PNG format) +> - **Genes to Ignore by Contrast Field** (tabular file) +> +> 2. The output files contain the following: +> - **Pseudobulk Count Matrix:** Contains the raw count aggregates for each pseudobulk sample. +> - **Samples Metadata (Factor File):** Provides metadata annotated for each sample, including factors or annotations added to the AnnData object. +> - **Genes Metadata:** Includes gene-related information such as gene symbols, Ensembl IDs, dispersion values, etc. +> - **Genes to Ignore:** Lists of genes to could be excluded or should be carefully considered for specific contrasts. This file contains a contrast field and the corresponding genes written as gene symbols. +> - **Pseudobulk Plot:** A visual representation of the pseudobulk data. +> ![Pseudobulk Plot Example](path_to_image_placeholder) +> - **Filter by Expression Plot:** Illustrates the expression filtering applied to the data. +> ![Filter by Expression Plot Example](path_to_image_placeholder) +> +> 3. The **pseudobulk count matrix** is the primary input required for analysis using **edgeR**, a tool designed for differential expression analysis. The **Samples Metadata** is another file that will serve as an input for the edgeR tool. +> +{: .solution} + +## Sanitation Steps - Part 1 + +The next steps will help you refine your data for easier handling. We will use standard galaxy tools, like: [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1), [Remove columns](toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0) and [Text reformatting](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.3+galaxy1). + +> Replace Text: Count Matrix +> +> 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"File to process"*: `count_matrix` (output of **Decoupler pseudo-bulk** {% icon tool %}) +> - In *"Replacement"*: +> - {% icon param-repeat %} *"Insert Replacement"* +> - *"Find pattern"*: `[ --+*^]+` +> - *"Replace with:"*: `_` +> +{: .hands_on} + + +> Replace Text: Sample Metadata +> +> 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"File to process"*: `samples_metadata` (output of **Decoupler pseudo-bulk** {% icon tool %}) +> - In *"Replacement"*: +> - {% icon param-repeat %} *"Insert Replacement"* +> - *"Find pattern"*: `[ --+*^]+` +> - *"Replace with:"*: `_` +> +{: .hands_on} + +> Remove Columns: Gene Metadata +> +> 1. {% tool [Remove columns](toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0) %} with the following parameters: +> - {% icon param-file %} *"Tabular file"*: `genes_metadata` (output of **Decoupler pseudo-bulk** {% icon tool %}) +> - In *"Select Columns"*: +> - {% icon param-repeat %} *"Insert Select Columns"* +> - *"Header name"*: `start` +> - {% icon param-repeat %} *"Insert Select Columns"* +> - *"Header name"*: `end` +> - {% icon param-repeat %} *"Insert Select Columns"* +> - *"Header name"*: `width` +> +{: .hands_on} + +> Replace Text: Creating Factor File +> +> 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/9.3+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"File to process"*: `outfile` (output of **Replace Text: Sample Metadata Step** {% icon tool %}) +> - In *"Replacement"*: +> - {% icon param-repeat %} *"Insert Replacement"* +> - *"in column"*: `c2` +> - *"Find pattern"*: `^([0-9])(.+)` +> - *"Replace with"*: `GG_\\1\\2` +> +{: .hands_on} + +## Generating Contrast File + +This file will be use as the contrast input file in the edgeR tool. + +> Creating a Contrast File for edgeR +> +> 1. {% tool [Text Reformatting](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.3+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"File to process"*: `outfile` (output generated from the **Replace Text** {% icon tool %} step). +> - *"AWK Program"*: +> ```awk +> BEGIN { print header } +> NR > 1 { if (!seen[$2]++) words[++count]=$2 } +> END { for (i=1; i<=count; i++) +> for (j=i+1; j<=count; j++) +> print words[i]-words[j] } +> ``` +> +> > Explanation of the AWK Program +> > +> > This AWK script performs the following: +> > - Initializes the `header` variable for the output file. +> > - Processes the input file (`NR > 1` skips the header line). +> > - Tracks unique elements in column 2 (`seen[$2]++`) to avoid duplicates. +> > - Creates pairs of unique elements and calculates their difference, outputting the contrast for downstream edgeR analysis. +> {: .comment} +> +{: .hands_on} + +> Understanding the Contrast File +> +> 1. How does your contrast file look, and what contrast is generated by the tool? +> +> Explanation of the Contrast File +> +> 1. The contrast file is a simple tab-delimited text file. It contains: +> - A **header** in the first row that labels the column. +> - The contrast, such as `normal-COVID_19`, written in the second row. +> +> When working with your own data, the contrast file will look different, as it will reflect the specific contrasts in your dataset but the **header** should be the same +> > +> {: .solution} +> +{: .question} + + +# Differential Gene Expression Analysis (DGE) with **edgeR** + + + +> Run a DGE Analysis with edgeR +> +> 1. {% tool [edgeR](toolshed.g2.bx.psu.edu/repos/iuc/edger/edger/3.36.0+galaxy5) %} with the following parameters: +> - *"Count Files or Matrix?"*: `Single Count Matrix` +> - {% icon param-file %} *"Count Matrix"*: `outfile` (output of **Replace Text: Count Matrix** {% icon tool %}) +> - *"Input factor information from file?"*: `Yes` +> - {% icon param-file %} *"Factor File"*: `outfile` (output of **Replace Text: Creating Factor File** {% icon tool %}) +> - *"Use Gene Annotations?"*: `Yes` +> - {% icon param-file %} *"Gene Annotations"*: `output_tabular` (output of **Remove Columns: Gene Metadata** {% icon tool %}) +> - *"Formula for linear model"*: `~ 0 + factor_A` or `~ 0 + factor_A + factor_B:factor_C` +> *(Customize this formula based on your data's contrast names and factor file. Ensure the formula matches EdgeR's syntax and uses only elements from the factor file.)* +> - *"Input contrasts manually or through a file?"*: `file` +> - {% icon param-file %} *"Contrasts File"*: `outfile` (output of **Text Reformatting: Creating a Contrast File for edgeR** {% icon tool %}) +> - In *"Filter Low Counts"*: +> - *"Filter lowly expressed genes?"*: `No` +> +> > edgeR Tool Overview +> > +> > Use this tool to perform DGE analysis using edgeR. It is highly customizable, allowing you to input your count matrix, factor information, and gene annotations prepared during earlier steps. The contrast file should be generated from the previous step, **Text Reformatting: Creating a Contrast File for edgeR**. The model formula should be defined based on your dataset and must include factors that were already specified in the contrast file. +> {: .comment} +> +{: .hands_on} + + +> Understanding edgeR Outputs +> +> 1. What are the output(s) of the edgeR tool? +> 2. How can we interpret our output result file? +> +> edgeR Outputs and Interpretation +> +> 1. **Output files**: +> - **edgeR Tables**: This file includes columns with information such as: +> - **Gene Symbol**: The identifier for each gene. +> - **Log Fold Change (logFC)**: Represents the direction and magnitude of differential expression. Positive values indicate upregulation, and negative values indicate downregulation. +> - **Raw p-value (PValue)**: The unadjusted statistical significance value for each gene, indicating the likelihood of observing the result under the null hypothesis. +> - **False Discovery Rate (FDR)**: The adjusted p-value using the Benjamini-Hochberg correction method to account for multiple testing and control the expected proportion of false positives. +> - **(Optional)**: If additional outputs, such as "normalized counts," are selected in the edgeR tool, the table will also include these counts. +> - **edgeR Report**: This is an HTML file containing various visualizations and summaries of the analysis, such as: +> - **MDS Plot (Multidimensional Scaling)**: Visualizes the relationships between samples based on gene expression profiles. +> - **BCV Plot (Biological Coefficient of Variation)**: Displays the estimated dispersion for each gene. +> - **QL Plot (Quasi-Likelihood)**: Shows the quasi-likelihood dispersions for the dataset. +> - **MD Plot (Mean-Difference Plot)**: Compares the mean expression of genes versus their log fold change. +> +> 2. **Interpreting the Results**: +> - The table contains the results of the differential expression analysis. +> - The **first column** typically lists the gene symbols from the dataset. +> - The **logFC** indicates the direction and magnitude of differential expression: +> - **Upregulated genes**: Genes with higher expression in the first group of the contrast (e.g., 'normal' group in a "normal-COVID_19" contrast). +> - **Downregulated genes**: Genes with lower expression in the first group of the contrast (e.g., 'normal' group in a "normal-COVID_19" contrast). +> - The **raw p-value** represents the statistical significance of the result for each gene before adjustment for multiple comparisons. Lower values indicate stronger evidence against the null hypothesis. +> - The **FDR** is the adjusted p-value, calculated using the Benjamini-Hochberg method, which helps control for false positives when testing many genes. Genes with an FDR below a threshold (e.g., 0.05) are considered statistically significant. +> +> **Plot Interpretations**: +> - **MDS Plot**: Displays relationships between samples based on gene expression profiles. Samples that cluster closely are more similar in their expression. Use this to identify whether samples separate by biological condition or to detect potential batch effects. +> - **BCV Plot**: Shows the dispersion for each gene, with higher values indicating greater variability. This is useful for assessing how variability is modeled in the dataset. +> - **QL Plot**: Highlights the quasi-likelihood dispersions, which represent variability modeled during statistical testing. Proper dispersion modeling ensures robust differential expression analysis. +> - **MD Plot**: Visualizes the mean expression levels against log fold change for each gene. Genes far from the center indicate stronger differential expression, with points above or below the horizontal line showing upregulated or downregulated genes, respectively. +> +> {: .solution} +> +{: .question} + + +## **Extract Element Identifiers** + +This step processes the **edgeR** output, which is a collection of datasets, to extract individual elements for further analysis. We will use the **Extract Element Identifiers** tool in Galaxy to achieve this. + +> Task Description +> +> 1. Use the {% tool [Extract element identifiers](toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2) %} tool with the following parameters: +> - {% icon param-file %} *"Dataset collection"*: `outTables` (output from the **edgeR** tool {% icon tool %}) +> +{: .hands_on} + +--- + +## **Sanitation Steps - Part 2** + +After extracting the element identifiers, we will clean the data to prepare it for visualization or downstream analysis. This involves removing unnecessary columns, standardizing text, and splitting the file if needed. + +### **Step 1: Remove Columns** + +This step filters out unnecessary columns from the **edgeR** output and retains only the essential ones for analysis: Gene ID (`id`), Log Fold Change (`logFC`), P-value (`PValue`), and False Discovery Rate (`FDR`). + +> Remove Unnecessary Columns +> +> 1. Use the {% tool [Remove columns](toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0) %} tool with the following parameters: +> - {% icon param-file %} *"Tabular file"*: `outTables` (output of **edgeR** {% icon tool %}) +> - In *"Select Columns"*: +> - {% icon param-repeat %} *"Insert Select Columns"* +> - *"Header name"*: `{'id': 7, 'output_name': 'output'}` +> - {% icon param-repeat %} *"Insert Select Columns"* +> - *"Header name"*: `logFC` +> - {% icon param-repeat %} *"Insert Select Columns"* +> - *"Header name"*: `PValue` +> - {% icon param-repeat %} *"Insert Select Columns"* +> - *"Header name"*: `FDR` +> - *"Keep named columns"*: `Yes` +> +{: .hands_on} + +--- + +### **Step 2: Replace Text** + +Standardize and clean column headers or dataset identifiers by replacing unnecessary prefixes (e.g., `edgeR_`) with nothing. + +> Replace Text +> +> 1. Use the {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1) %} tool with the following parameters: +> - {% icon param-file %} *"File to process"*: `output` (output of **Extract Element Identifiers** {% icon tool %}) +> - In *"Replacement"*: +> - {% icon param-repeat %} *"Insert Replacement"* +> - *"Find pattern"*: `edgeR_` +> +{: .hands_on} + +--- + +### **Step 3: Split File** + +If the dataset is too large to process in one go, split it into smaller chunks. + +> Split File +> +> 1. Use the {% tool [Split file](toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.5.2) %} tool with the following parameters: +> - *"Select the file type to split"*: `Text files` +> - {% icon param-file %} *"Text file to split"*: `outfile` (output of **Replace Text** {% icon tool %}) +> - *"Specify number of output files or number of records per file?"*: `Number of records per file ('chunk mode')` +> - *"Method to allocate records to new files"*: `Maintain record order` +> +{: .hands_on} + +--- + +### **Step 4: Parse Parameter Value** + +Extract specific parameter values (e.g., dataset names) from the split files for further dynamic inputs in downstream analysis. + +> Parse Parameter Value +> +> 1. Use the {% tool [Parse parameter value](param_value_from_file) %} tool with the following parameters: +> - {% icon param-file %} *"Input file containing parameter to parse out of"*: `list_output_txt` (output of **Split File** {% icon tool %}) +> +{: .hands_on} + + +# Volcano Plot + +In this step, we will use the sanitized output from the previous steps to create a **Volcano Plot**. This plot helps visualize the relationship between statistical significance (P-value) and fold change (LogFC) for differentially expressed genes (DEG). + +> Create a Volcano Plot of the DEG +> +> 1. Use the {% tool [Volcano Plot](toolshed.g2.bx.psu.edu/repos/iuc/volcanoplot/volcanoplot/0.0.6) %} tool with the following parameters: +> - {% icon param-file %} *"Specify an input file"*: `output_tabular` (output from **Remove Columns** {% icon tool %}) +> - *"File has header?"*: `Yes` +> - *"FDR (adjusted P value) column number"*: `c4` +> - *"P value (raw) column number"*: `c3` +> - *"Log Fold Change column number"*: `c2` +> - *"Labels column number"*: `c1` +> - *"LogFC threshold to colour"*: `0.58` +> - *"Points to label"*: `Significant` +> - *"Only label top most significant"*: `40` +> - In *"Plot Options"*: +> - *"Plot title"*: `Differential Expression Volcano Plot` +> +> > What does the Volcano Plot show? +> > +> > The Volcano Plot highlights genes with high statistical significance (low P-values) and large fold changes. Genes meeting the significance thresholds are typically colored and labeled for easier identification. +> {: .tip} +> +{: .hands_on} + +## What are the results of the Volcano Plot? + +Lets take a moment to interpret the Volcano Plot: +- Which genes are most significant? +- How does the fold change correlate with the P-values? +- Are there any unexpected patterns? + +> Reflect on the Volcano Plot +> +> 1. What is the significance of genes located at the extremes of the plot (e.g., high LogFC and low P-value)? +> 2. How many genes meet the significance threshold in this analysis? +> +> > Solution +> > +> > 1. Genes at the extremes are highly significant and show strong differential expression. +> > 2. You can count these genes from the labels or dataset used to generate the plot. +> > +> {: .solution} +> +{: .question} + +# Subsetting Samples from Our Original Pseudobulk Count Matrix + +In our previous analysis, we found that only one gene, **MTND1P23**, was identified as downregulated in our contrast. This result was obtained by "bulking" **all** cell types from our dataset and performing a differential expression analysis comparing normal vs. COVID-19 samples. + +But what if we refine our approach? For instance, instead of analyzing all cell types together, what happens if we focus on a specific cluster, such as **T cells**, and perform the same comparison—normal vs. COVID-19? Would the results remain the same, or would this more targeted approach reveal additional insights? + +Let's perform this analysis step-by-step + + + +# Key Takeaways and Recommendations + +To.... + +# Conclusion + +- Add Workflow image.... \ No newline at end of file diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/workflows/index.md b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR-tests.yml b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR-tests.yml new file mode 100644 index 00000000000000..9ec0fd43155ad4 --- /dev/null +++ b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR-tests.yml @@ -0,0 +1,50 @@ +- doc: Test outline for pseudo-bulk_edgeR + job: + Source AnnData file: + class: File + location: https://zenodo.org/records/13929549/files/Source%20AnnData%20file.h5ad + filetype: h5ad + 'Pseudo-bulk: Fields to merge': null + Group by column: cell_type + Sample key column: individual + Name Your Raw Counts Layer: counts + Factor fields: disease + Gene symbol column: gene_symbol + Formula: '~ 0 + disease' + outputs: + 'Pseudobulk count matrix': + has_text_matching: + expression: "ACAP2\t9.0\t18.0\t20.0\t68.0\t106.0\t122.0\t14.0\t259.0\t279.0\t184.0\t612.0\t293.0\t297.0\t46.0\t1.0\t0.0\t1.0\t12.0\t229.0\t151.0\t141.0\t309.0\t299.0\t181.0\t2.0\t2.0\t28.0\t15.0\t54.0\t210.0\t1.0\t1.0\t1.0\t11.0" + expression: "ACER3\t4.0\t25.0\t21.0\t110.0\t82.0\t91.0\t22.0\t326.0\t297.0\t211.0\t1004.0\t574.0\t370.0\t108.0\t0.0\t0.0\t2.0\t2.0\t188.0\t113.0\t135.0\t322.0\t324.0\t159.0\t7.0\t7.0\t32.0\t5.0\t33.0\t89.0\t2.0\t2.0\t8.0\t48.0" + 'Pseudobulk Plot': + element_test: + has_size: 40116 + delta: 2000 + 'Filtered by expression': + element_test: + has_size: 23490 + delta: 2000 + 'Report Results: HTML File': + element_test: + has_size: 531761 + delta: 25000 + 'Tables: DEG': + element_tests: + edgeR_normal-COVID_19: + has_text_matching: + expression: "RALBP1\tENSG00000017797\tFalse\t0.518[0-9]*\t1.609[0-9]*\t0.402[0-9]*\t2\tFalse\t0.286[0-9]*\t0.552[0-9]*\t-1.967[0-9]*\t7.483[0-9]*\t12.0213[0-9]*\t0.001[0-9]*\t0.436[0-9]*" + expression: "NAPA\tENSG00000105402\tTrue\t0.342[0-9]\t1.686[0-9]\t0.846[0-9]\t4\tFalse\t0.180[0-9]\t0.440[0-9]\t-1.059[0-9]\t6.833[0-9]\t3.291[0-9]\t0.076[0-9]\t0.619[0-9]" + has_n_lines: + n: 1430 + delta: 1 + 'Tables for volcano plot': + element_tests: + edgeR_normal-COVID_19: + has_text_matching: + expression: "CPEB4\t-2.402[0-9]\t0.001[0-9]\t0.436[0-9]" + expression: "FGFR1OP2\t-2.367[0-9]\t0.004[0-9]\t0.458[0-9]" + 'Volcano Plot on input dataset(s): PDF': + element_tests: + edgeR_normal-COVID_19: + has_size: 85052 + delta: 2000 diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga new file mode 100644 index 00000000000000..e8c35ee03935d2 --- /dev/null +++ b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga @@ -0,0 +1,1018 @@ +{ + "a_galaxy_workflow": "true", + "annotation": "This workflow uses the decoupler tool in Galaxy to generate pseudobulk counts from an annotated AnnData file obtained from scRNA-seq analysis. Following the pseudobulk step, differential expression genes (DEG) are calculated using the edgeR tool. The workflow also includes data sanitation steps to ensure smooth operation of edgeR and minimizing potential issues. Additionally, a Volcano plot tool is used to visualize the results after the DEG analysis.", + "comments": [], + "creator": [ + { + "class": "Person", + "identifier": "0000-0002-5857-1477", + "name": "Diana Chiang Jurado" + }, + { + "class": "Person", + "identifier": "0000-0002-5192-126X", + "name": "Pavankumar Videm" + }, + { + "class": "Person", + "identifier": "0000-0002-9856-1679", + "name": "Pablo Moreno" + } + ], + "format-version": "0.1", + "license": "CC-BY-4.0", + "release": "0.1.1", + "name": "Differential gene expression for single-cell data using pseudo-bulk counts with edgeR", + "report": { + "markdown": "\n# Workflow Execution Report\n\n## Workflow Inputs\n```galaxy\ninvocation_inputs()\n```\n\n## Workflow Outputs\n```galaxy\ninvocation_outputs()\n```\n\n## Workflow\n```galaxy\nworkflow_display()\n```\n" + }, + "steps": { + "0": { + "annotation": "Ensure your AnnData object contains all necessary layers before using the decoupler tool. The raw counts should be included in AnnData. If they are missing, create a new layer (e.g., 'raw_counts') and copy the raw counts into it.", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "Ensure your AnnData object contains all necessary layers before using the decoupler tool. The raw counts should be included in AnnData. If they are missing, create a new layer (e.g., 'raw_counts') and copy the raw counts into it.", + "name": "Source AnnData file" + } + ], + "label": "Source AnnData file", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 114.82675544995811 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"format\": [\"h5\", \"h5ad\"], \"tag\": \"\"}", + "tool_version": null, + "type": "data_input", + "uuid": "96604e3b-861d-4d7c-8408-9d68489c1e41", + "when": null, + "workflow_outputs": [] + }, + "1": { + "annotation": "Merge Obs fields before pseudo-bulk analysis to create new categories for grouping, such as 'sample,phase' or 'sample,louvain'. Ensure the fields exist in the Obs of the AnnData object. Multiple groups can be merged with a colon (':'), e.g., 'sample,phase\n,phase' creates 'sample_phase' and 'louvain_phase'.", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [ + { + "description": "Merge Obs fields before pseudo-bulk analysis to create new categories for grouping, such as 'sample,phase' or 'sample,louvain'. Ensure the fields exist in the Obs of the AnnData object. Multiple groups can be merged with a colon (':'), e.g., 'sample,phase\n,phase' creates 'sample_phase' and 'louvain_phase'.", + "name": "Pseudo-bulk: Fields to merge" + } + ], + "label": "Pseudo-bulk: Fields to merge", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 60.495251676792236, + "top": 230.35374378726198 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"text\", \"optional\": true}", + "tool_version": null, + "type": "parameter_input", + "uuid": "b765c928-15de-4a9b-8bf2-96f9a9a5cdba", + "when": null, + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "c70d7068-d535-430f-ba40-199bbfed605c" + } + ] + }, + "2": { + "annotation": "Typically, the column in obs that you want to use for comparisons later (the main contrast field) should be specified here. This column will also be used for plotting the pseudo-bulk samples, showing the number of counts and cells.", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [ + { + "description": "Typically, the column in obs that you want to use for comparisons later (the main contrast field) should be specified here. This column will also be used for plotting the pseudo-bulk samples, showing the number of counts and cells.", + "name": "Group by column" + } + ], + "label": "Group by column", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 123.70374778716867, + "top": 341.8746744746166 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"text\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "fa4b1127-560a-4ce5-8ae7-65b1cbd466f1", + "when": null, + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "9b6c5134-f9fb-413a-8a65-62ca29401dd9" + } + ] + }, + "3": { + "annotation": "The field used to create the pseudo-bulk replicates is typically a combination of multiple Obs fields merged together.", + "content_id": null, + "errors": null, + "id": 3, + "input_connections": {}, + "inputs": [ + { + "description": "The field used to create the pseudo-bulk replicates is typically a combination of multiple Obs fields merged together.", + "name": "Sample key column" + } + ], + "label": "Sample key column", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 151.20372670956235, + "top": 465.91578876790373 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"text\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "5daa239e-1acc-4730-993d-d7a62ae30575", + "when": null, + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "e6d9cb6d-1128-4bd1-bb7e-e8d0d4dd11f6" + } + ] + }, + "4": { + "annotation": "Name of the layer containing your raw (non-normalized) counts.", + "content_id": null, + "errors": null, + "id": 4, + "input_connections": {}, + "inputs": [ + { + "description": "Name of the layer containing your raw (non-normalized) counts.", + "name": "Name Your Raw Counts Layer" + } + ], + "label": "Name Your Raw Counts Layer", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 198.40796524172788, + "top": 596.2242453471495 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"text\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "e2b06f23-4090-4014-b194-9afcd48e3905", + "when": null, + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "ed10dd0c-7c42-4c37-a2ec-788b25900c69" + } + ] + }, + "5": { + "annotation": "The fields from Obs to be provided to EdgeR as factors. The first field should represent the main contrast for comparisons, while the subsequent fields will be used as covariates.", + "content_id": null, + "errors": null, + "id": 5, + "input_connections": {}, + "inputs": [ + { + "description": "The fields from Obs to be provided to EdgeR as factors. The first field should represent the main contrast for comparisons, while the subsequent fields will be used as covariates.", + "name": "Factor fields" + } + ], + "label": "Factor fields", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 223.45860152251703, + "top": 713.2366686237074 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"text\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "d7f40c82-930a-45d4-8392-ecd071162040", + "when": null, + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "b3885b84-8cf3-47ce-9e57-51890d8f6aa8" + } + ] + }, + "6": { + "annotation": "Example 1: ~ 0 + Factor_1\n(Use this formula when you only want to account for one factor, Factor_1).\n\nExample 2 (With covariate adjustment): ~ 0 + Factor_1 + Factor_2\n(Use this formula if you need to adjust for additional factors, such as Factor_2, which serves as a covariate).\n\nNote: Ensure that all factors (e.g., Factor_1, Factor_2) included in the formula are defined in your factor file.", + "content_id": null, + "errors": null, + "id": 6, + "input_connections": {}, + "inputs": [ + { + "description": "Example 1: ~ 0 + Factor_1\n(Use this formula when you only want to account for one factor, Factor_1).\n\nExample 2 (With covariate adjustment): ~ 0 + Factor_1 + Factor_2\n(Use this formula if you need to adjust for additional factors, such as Factor_2, which serves as a covariate).\n\nNote: Ensure that all factors (e.g., Factor_1, Factor_2) included in the formula are defined in your factor file.", + "name": "Formula" + } + ], + "label": "Formula", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 1084.8910833860734, + "top": 839.4664158173962 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"text\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "71d2cf0a-7eaa-41fc-9ffd-f0ffbdbf9657", + "when": null, + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "e1911fda-16a7-4f48-8a17-5d9f4bd635ee" + } + ] + }, + "7": { + "annotation": "Specify the name of the column containing your gene symbols. For example: gene_symbol, gene_name, x, etc.", + "content_id": null, + "errors": null, + "id": 7, + "input_connections": {}, + "inputs": [ + { + "description": "Specify the name of the column containing your gene symbols. For example: gene_symbol, gene_name, x, etc.", + "name": "Gene symbol column" + } + ], + "label": "Gene symbol column", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 1357.37679290235, + "top": 445.59148543814814 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"text\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "e22b8666-3c73-41e2-8d3d-e6a8f4e2ba62", + "when": null, + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "7b3c4345-840d-4305-97ec-20ffe71a3a36" + } + ] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/decoupler_pseudobulk/decoupler_pseudobulk/1.4.0+galaxy8", + "errors": null, + "id": 8, + "input_connections": { + "adata_obs_fields_to_merge": { + "id": 1, + "output_name": "output" + }, + "factor_fields": { + "id": 5, + "output_name": "output" + }, + "groupby": { + "id": 2, + "output_name": "output" + }, + "input_file": { + "id": 0, + "output_name": "output" + }, + "layer": { + "id": 4, + "output_name": "output" + }, + "sample_key": { + "id": 3, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Decoupler pseudo-bulk", + "outputs": [ + { + "name": "count_matrix", + "type": "tabular" + }, + { + "name": "samples_metadata", + "type": "tabular" + }, + { + "name": "genes_metadata", + "type": "tabular" + }, + { + "name": "plot_output", + "type": "png" + }, + { + "name": "filter_by_expr_plot", + "type": "png" + }, + { + "name": "genes_ignore_per_contrast_field", + "type": "tabular" + } + ], + "position": { + "left": 516.0467803847828, + "top": 418.1072761184286 + }, + "post_job_actions": { + "DeleteIntermediatesActioncount_matrix": { + "action_arguments": {}, + "action_type": "DeleteIntermediatesAction", + "output_name": "count_matrix" + }, + "HideDatasetActiongenes_metadata": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "genes_metadata" + }, + "HideDatasetActionsamples_metadata": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "samples_metadata" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/decoupler_pseudobulk/decoupler_pseudobulk/1.4.0+galaxy8", + "tool_shed_repository": { + "changeset_revision": "ef054892d47f", + "name": "decoupler_pseudobulk", + "owner": "ebi-gxa", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adata_obs_fields_to_merge\": {\"__class__\": \"ConnectedValue\"}, \"factor_fields\": {\"__class__\": \"ConnectedValue\"}, \"filter_expr\": true, \"filter_per_contrast\": {\"filter\": \"no\", \"__current_case__\": 1}, \"groupby\": {\"__class__\": \"ConnectedValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"layer\": {\"__class__\": \"ConnectedValue\"}, \"min_cells\": \"10\", \"min_counts\": \"10\", \"min_counts_per_sample\": \"20\", \"min_total_counts\": \"1000\", \"mode\": \"sum\", \"plot_filtering_figsize\": \"13 13\", \"plot_samples_figsize\": \"13 13\", \"produce_anndata\": false, \"produce_plots\": true, \"sample_key\": {\"__class__\": \"ConnectedValue\"}, \"use_raw\": false, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.4.0+galaxy8", + "type": "tool", + "uuid": "12b43361-2dbc-4dd5-89c9-6a9842bb1531", + "when": null, + "workflow_outputs": [ + { + "label": "Pseudobulk count matrix", + "output_name": "count_matrix", + "uuid": "b28fbf89-5621-459e-9321-6cd0a72261ea" + }, + { + "label": "Pseudobulk Plot", + "output_name": "plot_output", + "uuid": "6e8b4090-3ab7-4158-805a-2d757fd5e0fb" + }, + { + "label": "Filtered by expression", + "output_name": "filter_by_expr_plot", + "uuid": "93e42181-49b2-47cf-ab73-98373376caf9" + } + ] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1", + "errors": null, + "id": 9, + "input_connections": { + "infile": { + "id": 8, + "output_name": "count_matrix" + } + }, + "inputs": [], + "label": "Sanitize matrix", + "name": "Replace Text", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 817.694628152607, + "top": 326.31168881503567 + }, + "post_job_actions": { + "DeleteIntermediatesActionoutfile": { + "action_arguments": {}, + "action_type": "DeleteIntermediatesAction", + "output_name": "outfile" + }, + "HideDatasetActionoutfile": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outfile" + }, + "RenameDatasetActionoutfile": { + "action_arguments": { + "newname": "matrix.tsv" + }, + "action_type": "RenameDatasetAction", + "output_name": "outfile" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1", + "tool_shed_repository": { + "changeset_revision": "86755160afbf", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"find_pattern\": \"[ --+*^]+\", \"replace_pattern\": \"_\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "9.3+galaxy1", + "type": "tool", + "uuid": "15d8b67b-a232-4ea9-9639-4308a23823f1", + "when": null, + "workflow_outputs": [] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1", + "errors": null, + "id": 10, + "input_connections": { + "infile": { + "id": 8, + "output_name": "samples_metadata" + } + }, + "inputs": [], + "label": "Sanitize factors", + "name": "Replace Text", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 818.0112059966837, + "top": 492.3401614099875 + }, + "post_job_actions": { + "DeleteIntermediatesActionoutfile": { + "action_arguments": {}, + "action_type": "DeleteIntermediatesAction", + "output_name": "outfile" + }, + "HideDatasetActionoutfile": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outfile" + }, + "RenameDatasetActionoutfile": { + "action_arguments": { + "newname": "factors.tsv" + }, + "action_type": "RenameDatasetAction", + "output_name": "outfile" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1", + "tool_shed_repository": { + "changeset_revision": "86755160afbf", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"find_pattern\": \"[ --+*^]+\", \"replace_pattern\": \"_\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "9.3+galaxy1", + "type": "tool", + "uuid": "a001701e-e3ae-491a-b5cb-8ccf5a1fe80d", + "when": null, + "workflow_outputs": [] + }, + "11": { + "annotation": "A column that may affect EdgeR and DESeq2.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0", + "errors": null, + "id": 11, + "input_connections": { + "input_tabular": { + "id": 8, + "output_name": "genes_metadata" + } + }, + "inputs": [], + "label": "Remove start, end, width", + "name": "Remove columns", + "outputs": [ + { + "name": "output_tabular", + "type": "tabular" + } + ], + "position": { + "left": 834.6675907510573, + "top": 728.5754761171477 + }, + "post_job_actions": { + "HideDatasetActionoutput_tabular": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_tabular" + }, + "RenameDatasetActionoutput_tabular": { + "action_arguments": { + "newname": "genes_metadata.tsv" + }, + "action_type": "RenameDatasetAction", + "output_name": "output_tabular" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0", + "tool_shed_repository": { + "changeset_revision": "2040e4c2750a", + "name": "column_remove_by_header", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"headers\": [{\"__index__\": 0, \"name\": \"start\"}, {\"__index__\": 1, \"name\": \"end\"}, {\"__index__\": 2, \"name\": \"width\"}], \"input_tabular\": {\"__class__\": \"ConnectedValue\"}, \"keep_columns\": false, \"strip_characters\": \"#\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0", + "type": "tool", + "uuid": "b48e0354-6a07-4ae0-a5fe-1dbb84010a26", + "when": null, + "workflow_outputs": [] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/9.3+galaxy1", + "errors": null, + "id": 12, + "input_connections": { + "infile": { + "id": 10, + "output_name": "outfile" + } + }, + "inputs": [], + "label": "Sanitize first factor for leading digits", + "name": "Replace Text", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 1073.6410833860734, + "top": 630.5406345673962 + }, + "post_job_actions": { + "HideDatasetActionoutfile": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outfile" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/9.3+galaxy1", + "tool_shed_repository": { + "changeset_revision": "86755160afbf", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"column\": \"2\", \"find_pattern\": \"^([0-9])(.+)\", \"replace_pattern\": \"GG_\\\\\\\\1\\\\\\\\2\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "9.3+galaxy1", + "type": "tool", + "uuid": "2505066d-49d0-4ed0-888d-455867e6f07d", + "when": null, + "workflow_outputs": [] + }, + "13": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.3+galaxy1", + "errors": null, + "id": 13, + "input_connections": { + "infile": { + "id": 12, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Text reformatting", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 1364.7928022139954, + "top": 910.5816068561169 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.3+galaxy1", + "tool_shed_repository": { + "changeset_revision": "86755160afbf", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"code\": \"BEGIN { print \\\"header\\\" } NR > 1 { if (!seen[$2]++) words[++count]=$2 } END { for (i=1; i<=count; i++) for (j=i+1; j<=count; j++) print words[i]\\\"-\\\"words[j] }\", \"infile\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "9.3+galaxy1", + "type": "tool", + "uuid": "5701bab4-15b7-401a-9689-c127d17e5bdf", + "when": null, + "workflow_outputs": [] + }, + "14": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/edger/edger/3.36.0+galaxy5", + "errors": null, + "id": 14, + "input_connections": { + "anno|geneanno": { + "id": 11, + "output_name": "output_tabular" + }, + "contrasts|cinfo": { + "id": 13, + "output_name": "outfile" + }, + "formula": { + "id": 6, + "output_name": "output" + }, + "input|counts": { + "id": 9, + "output_name": "outfile" + }, + "input|fact|finfo": { + "id": 12, + "output_name": "outfile" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool edgeR", + "name": "anno" + }, + { + "description": "runtime parameter for tool edgeR", + "name": "contrasts" + }, + { + "description": "runtime parameter for tool edgeR", + "name": "input" + } + ], + "label": null, + "name": "edgeR", + "outputs": [ + { + "name": "outTables", + "type": "input" + }, + { + "name": "outReport", + "type": "html" + } + ], + "position": { + "left": 1623.5448063037918, + "top": 655.3696689453593 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/edger/edger/3.36.0+galaxy5", + "tool_shed_repository": { + "changeset_revision": "ae2aad0a6d50", + "name": "edger", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"lfc\": \"0.0\", \"pVal\": \"0.05\", \"pAdjust\": \"BH\", \"normalisationOption\": \"TMM\", \"robOption\": true, \"lrtOption\": false}, \"anno\": {\"annoOpt\": \"yes\", \"__current_case__\": 0, \"geneanno\": {\"__class__\": \"ConnectedValue\"}}, \"contrasts\": {\"contrastOpt\": \"file\", \"__current_case__\": 1, \"cinfo\": {\"__class__\": \"ConnectedValue\"}}, \"f\": {\"filt\": {\"filt_select\": \"no\", \"__current_case__\": 1}}, \"formula\": {\"__class__\": \"ConnectedValue\"}, \"input\": {\"format\": \"matrix\", \"__current_case__\": 1, \"counts\": {\"__class__\": \"ConnectedValue\"}, \"fact\": {\"ffile\": \"yes\", \"__current_case__\": 0, \"finfo\": {\"__class__\": \"ConnectedValue\"}}}, \"out\": {\"normCounts\": false, \"rscript\": false, \"rdaOption\": false}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "3.36.0+galaxy5", + "type": "tool", + "uuid": "33e1a4fc-7001-4d1a-88c2-d492d8faf7e3", + "when": null, + "workflow_outputs": [ + { + "label": "Tables: DEG", + "output_name": "outTables", + "uuid": "851ac5bc-9c57-4f36-b469-33a2e8dde894" + }, + { + "label": "Report Results: HTML File", + "output_name": "outReport", + "uuid": "5ad48faa-d0a7-4bb1-b307-7861f540ec29" + } + ] + }, + "15": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2", + "errors": null, + "id": 15, + "input_connections": { + "input_collection": { + "id": 14, + "output_name": "outTables" + } + }, + "inputs": [], + "label": "Get contrast labels", + "name": "Extract element identifiers", + "outputs": [ + { + "name": "output", + "type": "txt" + } + ], + "position": { + "left": 1855.0434149796085, + "top": 281.6915885082918 + }, + "post_job_actions": { + "HideDatasetActionoutput": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2", + "tool_shed_repository": { + "changeset_revision": "d3c07d270a50", + "name": "collection_element_identifiers", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_collection\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.0.2", + "type": "tool", + "uuid": "6f390fc9-b4ac-485e-867c-f338c902eacb", + "when": null, + "workflow_outputs": [] + }, + "16": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0", + "errors": null, + "id": 16, + "input_connections": { + "headers_0|name": { + "id": 7, + "output_name": "output" + }, + "input_tabular": { + "id": 14, + "output_name": "outTables" + } + }, + "inputs": [], + "label": "Select gene symbols, logFC, PValue and FDR", + "name": "Remove columns", + "outputs": [ + { + "name": "output_tabular", + "type": "tabular" + } + ], + "position": { + "left": 1940.8759531861979, + "top": 513.5126602860244 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0", + "tool_shed_repository": { + "changeset_revision": "2040e4c2750a", + "name": "column_remove_by_header", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"headers\": [{\"__index__\": 0, \"name\": {\"__class__\": \"ConnectedValue\"}}, {\"__index__\": 1, \"name\": \"logFC\"}, {\"__index__\": 2, \"name\": \"PValue\"}, {\"__index__\": 3, \"name\": \"FDR\"}], \"input_tabular\": {\"__class__\": \"ConnectedValue\"}, \"keep_columns\": true, \"strip_characters\": \"#\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0", + "type": "tool", + "uuid": "9935a582-7775-4706-be28-720224f5ba9e", + "when": null, + "workflow_outputs": [ + { + "label": "Tables for volcano plot", + "output_name": "output_tabular", + "uuid": "647df402-93cb-4f9e-9bde-7afcbcffad5b" + } + ] + }, + "17": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1", + "errors": null, + "id": 17, + "input_connections": { + "infile": { + "id": 15, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Replace Text", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 2097.058869383114, + "top": 160.46839568505237 + }, + "post_job_actions": { + "HideDatasetActionoutfile": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outfile" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1", + "tool_shed_repository": { + "changeset_revision": "86755160afbf", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"find_pattern\": \"edgeR_\", \"replace_pattern\": \"\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "9.3+galaxy1", + "type": "tool", + "uuid": "6595e60f-c1a5-4667-946a-69f5bf201d0f", + "when": null, + "workflow_outputs": [] + }, + "18": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.5.2", + "errors": null, + "id": 18, + "input_connections": { + "split_parms|input": { + "id": 17, + "output_name": "outfile" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Split file", + "name": "split_parms" + } + ], + "label": "Split contrasts", + "name": "Split file", + "outputs": [ + { + "name": "list_output_txt", + "type": "input" + } + ], + "position": { + "left": 2376.5570395203194, + "top": 0 + }, + "post_job_actions": { + "HideDatasetActionlist_output_txt": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "list_output_txt" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.5.2", + "tool_shed_repository": { + "changeset_revision": "2dae863c8f42", + "name": "split_file_to_collection", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"split_parms\": {\"select_ftype\": \"txt\", \"__current_case__\": 5, \"input\": {\"__class__\": \"ConnectedValue\"}, \"select_mode\": {\"mode\": \"chunk\", \"__current_case__\": 0, \"chunksize\": \"1\"}, \"newfilenames\": \"split_file\", \"select_allocate\": {\"allocate\": \"batch\", \"__current_case__\": 1}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.5.2", + "type": "tool", + "uuid": "0eb6f773-5ef2-4b50-b4fa-21fdbd7671ff", + "when": null, + "workflow_outputs": [] + }, + "19": { + "annotation": "", + "content_id": "param_value_from_file", + "errors": null, + "id": 19, + "input_connections": { + "input1": { + "id": 18, + "output_name": "list_output_txt" + } + }, + "inputs": [], + "label": "Contrast as parameters", + "name": "Parse parameter value", + "outputs": [ + { + "name": "text_param", + "type": "expression.json" + } + ], + "position": { + "left": 2601.5947847657694, + "top": 142.72866520857775 + }, + "post_job_actions": { + "HideDatasetActiontext_param": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_param" + } + }, + "tool_id": "param_value_from_file", + "tool_state": "{\"input1\": {\"__class__\": \"ConnectedValue\"}, \"param_type\": \"text\", \"remove_newlines\": true, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.1.0", + "type": "tool", + "uuid": "81b2bd80-00c7-4ce5-8d26-f48b0f9f7f08", + "when": null, + "workflow_outputs": [] + }, + "20": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/volcanoplot/volcanoplot/0.0.6", + "errors": null, + "id": 20, + "input_connections": { + "input": { + "id": 16, + "output_name": "output_tabular" + }, + "plot_options|title": { + "id": 19, + "output_name": "text_param" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Volcano Plot", + "name": "plot_options" + } + ], + "label": null, + "name": "Volcano Plot", + "outputs": [ + { + "name": "plot", + "type": "pdf" + } + ], + "position": { + "left": 2858.6197555934036, + "top": 367.5558994050945 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/volcanoplot/volcanoplot/0.0.6", + "tool_shed_repository": { + "changeset_revision": "2f557f6abbfb", + "name": "volcanoplot", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"fdr_col\": \"4\", \"header\": \"yes\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"label_col\": \"1\", \"labels\": {\"label_select\": \"signif\", \"__current_case__\": 0, \"top_num\": \"40\"}, \"lfc_col\": \"2\", \"lfc_thresh\": \"0.58\", \"out_options\": {\"rscript_out\": false}, \"plot_options\": {\"boxes\": false, \"title\": {\"__class__\": \"ConnectedValue\"}, \"xlab\": \"\", \"ylab\": \"\", \"xmin\": null, \"xmax\": null, \"ymax\": null, \"legend\": \"\", \"legend_labs\": \"Down,Not Sig,Up\"}, \"pval_col\": \"3\", \"signif_thresh\": \"0.05\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.0.6", + "type": "tool", + "uuid": "36e45e14-8bec-4321-9b9f-557db6d6ed97", + "when": null, + "workflow_outputs": [ + { + "label": "Volcano Plot on input dataset(s): PDF", + "output_name": "plot", + "uuid": "02cc64ea-d34d-4081-8a2b-2dc59e102c66" + } + ] + } + }, + "tags": [], + "uuid": "e4e4055c-7e3f-4014-a8e6-343199fd9b01", + "version": 31 +} \ No newline at end of file From 93c92c7a6fa7b9cb2cd2c78e560b217d176708d5 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Fri, 6 Dec 2024 19:59:05 +0100 Subject: [PATCH 02/20] Delete topics/single-cell/tutorials/pseudobulk-analysis/faqs/.Rhistory --- topics/single-cell/tutorials/pseudobulk-analysis/faqs/.Rhistory | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 topics/single-cell/tutorials/pseudobulk-analysis/faqs/.Rhistory diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/faqs/.Rhistory b/topics/single-cell/tutorials/pseudobulk-analysis/faqs/.Rhistory deleted file mode 100644 index e69de29bb2d1d6..00000000000000 From fd8eed37f8c21121e1ae6f6627f26888f386281b Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Fri, 6 Dec 2024 20:04:41 +0100 Subject: [PATCH 03/20] Update data-library.yaml --- .../tutorials/pseudobulk-analysis/data-library.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/data-library.yaml b/topics/single-cell/tutorials/pseudobulk-analysis/data-library.yaml index ac1ad9631ce248..5731df82c5fc03 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/data-library.yaml +++ b/topics/single-cell/tutorials/pseudobulk-analysis/data-library.yaml @@ -5,8 +5,8 @@ destination: description: Galaxy Training Network Material synopsis: Galaxy Training Network Material. See https://training.galaxyproject.org items: -- name: New topic - description: Topic summary +- name: single-cell + description: Training material for single-cell items: - name: Pseudobulk Analysis with Decoupler and EdgeR items: @@ -15,5 +15,5 @@ items: items: - url: https://zenodo.org/api/records/13929549/files/Source AnnData file.h5ad/content src: url - ext: '' + ext: h5ad info: https://zenodo.org/records/13929549 From 6e8d4d4f26b16498e882013d660528eac1a2c15b Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Fri, 6 Dec 2024 20:23:28 +0100 Subject: [PATCH 04/20] Update tutorial.bib --- .../pseudobulk-analysis/tutorial.bib | 85 +++++++++++-------- 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib index 9206b0b6e4cae4..f01a5e7cc40086 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib @@ -1,42 +1,53 @@ +@article{Murphy2022, + doi = {10.1038/s41467-022-35519-4}, + url = {https://doi.org/10.1038/s41467-022-35519-4}, + year = {2022}, + month = dec, + publisher = {Springer Nature}, + volume = {13}, + pages = {7851}, + author = {A.E. Murphy and N.G. Skene}, + title = {A balanced measure shows superior performance of pseudobulk methods in single-cell RNA-sequencing analysis}, + journal = {Nature Communications} +} -# This is the bibliography file for your tutorial. -# -# To add bibliography (bibtex) entries here, follow these steps: -# 1) Find the DOI for the article you want to cite -# 2) Go to https://doi2bib.org and fill in the DOI -# 3) Copy the resulting bibtex entry into this file -# -# To cite the example below, in your tutorial.md file -# use {% cite Batut2018 %} -# -# If you want to cite an online resourse (website etc) -# you can use the 'online' format (see below) -# -# You can remove the examples below +@article{Squair2021, + doi = {10.1038/s41467-021-25960-2}, + url = {https://doi.org/10.1038/s41467-021-25960-2}, + year = {2021}, + month = sep, + publisher = {Springer Nature}, + volume = {12}, + pages = {5692}, + author = {Jordan W. Squair and Matthieu Gautier and Claudia Kathe and Mark A. Anderson and Nicholas D. James and Thomas H. Hutson and Rémi Hudelle and Taha Qaiser and Kaya J. E. Matson and Quentin Barraud and Ariel J. Levine and Gioele La Manno and Michael A. Skinnider and Grégoire Courtine}, + title = {Confronting false discoveries in single-cell differential expression}, + journal = {Nature Communications} +} -@article{Batut2018, - doi = {10.1016/j.cels.2018.05.012}, - url = {https://doi.org/10.1016/j.cels.2018.05.012}, - year = {2018}, - month = jun, - publisher = {Elsevier {BV}}, - volume = {6}, - number = {6}, - pages = {752--758.e1}, - author = {B{\'{e}}r{\'{e}}nice Batut and Saskia Hiltemann and Andrea Bagnacani and Dannon Baker and Vivek Bhardwaj and - Clemens Blank and Anthony Bretaudeau and Loraine Brillet-Gu{\'{e}}guen and Martin {\v{C}}ech and John Chilton - and Dave Clements and Olivia Doppelt-Azeroual and Anika Erxleben and Mallory Ann Freeberg and Simon Gladman and - Youri Hoogstrate and Hans-Rudolf Hotz and Torsten Houwaart and Pratik Jagtap and Delphine Larivi{\`{e}}re and - Gildas Le Corguill{\'{e}} and Thomas Manke and Fabien Mareuil and Fidel Ram{\'{i}}rez and Devon Ryan and - Florian Christoph Sigloch and Nicola Soranzo and Joachim Wolff and Pavankumar Videm and Markus Wolfien and - Aisanjiang Wubuli and Dilmurat Yusuf and James Taylor and Rolf Backofen and Anton Nekrutenko and Bj\"{o}rn Gr\"{u}ning}, - title = {Community-Driven Data Analysis Training for Biology}, - journal = {Cell Systems} +@article{Badia-iMompel2022, + doi = {10.1093/bioadv/vbac016}, + url = {https://doi.org/10.1093/bioadv/vbac016}, + year = {2022}, + volume = {2}, + number = {1}, + publisher = {Oxford University Press}, + author = {Pau Badia-i Mompel and Jose Vélez Santiago and Julia Braunger and Clemens Geiss and Dimitar Dimitrov and Stefan Müller-Dott and Patrick Taus and Antoine Dugourd and Christopher H. Holland and Rodrigo O. Ramirez Flores and Julio Saez-Rodriguez}, + title = {decoupleR: ensemble of computational methods to infer biological activities from omics data}, + journal = {Bioinformatics Advances} } -@online{gtn-website, - author = {GTN community}, - title = {GTN Training Materials: Collection of tutorials developed and maintained by the worldwide Galaxy community}, - url = {https://training.galaxyproject.org}, - urldate = {2021-03-24} +@article{Silvin2020, + doi = {10.1016/j.cell.2020.08.002}, + url = {https://doi.org/10.1016/j.cell.2020.08.002}, + year = {2020}, + month = sep, + publisher = {Elsevier {BV}}, + volume = {182}, + number = {6}, + pages = {1401--1418.e18}, + author = {A. Silvin and N. Chapuis and G. Dunsmore and A.G. Goubet and A. Dubuisson and L. Derosa and C. Almire and C. H{\'{e}}non and O. Kosmider and N. Droin and P. Rameau and C. Catelain and A. Alfaro and C. Dussiau and C. Friedrich and E. Sourdeau and N. Marin and T.A. Szwebel and D. Cantin and L. Mouthon and D. Borderie and M. Deloger and D. Bredel and S. Mouraud and D. Drubay and M. Andrieu and A.S. Lhonneur and V. Saada and A. Stoclin and C. Willekens and F. Pommeret and F. Griscelli and L.G. Ng and Z. Zhang and P. Bost and I. Amit and F. Barlesi and A. Marabelle and F. P{\`{e}}ne and B. Gachot and F. Andr{\'{e}} and L. Zitvogel and F. Ginhoux and M. Fontenay and E. Solary}, + title = {Elevated Calprotectin and Abnormal Myeloid Cell Subsets Discriminate Severe from Mild COVID-19}, + journal = {Cell}, + pmid = {32810439}, + pmcid = {PMC7405878} } From d62e5b34cd0ca9e7269e13aa504875b3363f62d5 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Fri, 6 Dec 2024 20:42:14 +0100 Subject: [PATCH 05/20] Update tutorial.bib --- .../tutorials/pseudobulk-analysis/tutorial.bib | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib index f01a5e7cc40086..c27f8e2d72e1e2 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib @@ -51,3 +51,17 @@ @article{Silvin2020 pmid = {32810439}, pmcid = {PMC7405878} } + +@article{Liu2015, + doi = {10.1093/nar/gkv412}, + url = {https://doi.org/10.1093/nar/gkv412}, + year = {2015}, + month = sep, + publisher = {Oxford University Press ({OUP})}, + volume = {43}, + number = {15}, + pages = {e97}, + author = {Ruijie Liu and Aliaksei Z. Holik and Shian Su and Natasha Jansz and Kelan Chen and Huei San Leong and Marnie E. Blewitt and Marie-Liesse Asselin-Labat and Gordon K. Smyth and Matthew E. Ritchie}, + title = {Why weight? Modelling sample and observational level variability improves power in RNA-seq analyses}, + journal = {Nucleic Acids Research} +} From cbf3ef13992bf1d68752fb8db5f5c2e4247bd591 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Fri, 6 Dec 2024 20:51:22 +0100 Subject: [PATCH 06/20] Update tutorial.md --- .../tutorials/pseudobulk-analysis/tutorial.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index dfcc478b702c9b..fa399b80865be4 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -24,13 +24,13 @@ acknowledgments: --- -Pseudobulk analysis is a powerful technique that bridges the gap between single-cell and bulk RNA-seq data. It involves aggregating gene expression data from groups of cells within the same biological replicate, such as a mouse or patient, typically based on clustering or cell type annotations (citation). +Pseudobulk analysis is a powerful technique that bridges the gap between single-cell and bulk RNA-seq data. It involves aggregating gene expression data from groups of cells within the same biological replicate, such as a mouse or patient, typically based on clustering or cell type annotations ({% cite Murphy2022 %}). -A key advantage of this approach in differential expression analysis is that it avoids treating individual cells as independent samples, which can underestimate variance and lead to inflated significance or overly optimistic p-values (citation). This occurs because cells from the same biological replicate are inherently more similar to each other than cells from different samples. By grouping data into pseudobulk samples, the analysis aligns with the experimental design, as in bulk RNA-seq, leading to more reliable and robust statistical results. +A key advantage of this approach in differential expression analysis is that it avoids treating individual cells as independent samples, which can underestimate variance and lead to inflated significance or overly optimistic p-values ({% cite Squair2021 %}). This occurs because cells from the same biological replicate are inherently more similar to each other than cells from different samples. By grouping data into pseudobulk samples, the analysis aligns with the experimental design, as in bulk RNA-seq, leading to more reliable and robust statistical results ({% cite Murphy2022 %}). Beyond enhancing statistical validity, pseudobulk analysis enables the identification of cell-type-specific gene expression and functional changes across biological conditions. It balances the detailed resolution of single-cell data with the statistical power of bulk RNA-seq, providing insights into the functional transcriptomic landscape relevant to biological questions. -In this tutorial, we will guide you through a pseudobulk analysis workflow using the **Decoupler** and **edgeR** tools available in Galaxy. These tools facilitate functional and differential expression analysis, and their output can be integrated with other Galaxy tools to visualize results, such as creating Volcano Plots, which we will also cover in this tutorial. +In this tutorial, we will guide you through a pseudobulk analysis workflow using the **Decoupler** and **edgeR** tools available in Galaxy ({% Badia-iMompel2022 %}) ({% Liu2015 %}). These tools facilitate functional and differential expression analysis, and their output can be integrated with other Galaxy tools to visualize results, such as creating Volcano Plots, which we will also cover in this tutorial. > Pseudobulk Analysis Pipeline Agenda: @@ -61,12 +61,12 @@ In this tutorial, we will guide you through a pseudobulk analysis workflow using ### Overview of the Data -Our data was extracted from the publication titled _"Elevated Calprotectin and Abnormal Myeloid Cell Subsets Discriminate Severe from Mild COVID-19"_ (Silvin A et al., _Cell_, 2020, 182(6):1401-1418.e18. DOI: [10.1016/j.cell.2020.08.002](https://doi.org/10.1016/j.cell.2020.08.002)). This dataset was chosen because it was utilized by the developers of the `decoupler` tool for pseudobulk aggregate analysis (citation of the tool documentation). +Our data was extracted from the publication titled _"Elevated Calprotectin and Abnormal Myeloid Cell Subsets Discriminate Severe from Mild COVID-19"_ ({% cite Silvin2020 %}). This dataset was chosen because it was utilized by the developers of the `decoupler` tool for pseudobulk aggregate analysis (citation of the tool documentation). Pseudobulk analysis is an advanced method in single-cell data analysis. For this tutorial, we assume familiarity with common single-cell data formats, such as AnnData or Seurat objects, and experience analyzing single-cell data, including clustering and annotating cell types. If you're new to these concepts, we recommend exploring our other tutorials before going for pseudobulk: -- [Clustering 3K PBMCs with Scanpy)](https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scrna-scanpy-pbmc3k/tutorial.html): Learn how to cluster and annotate cells in Galaxy using our single-cell tools. +- [Clustering 3K PBMCs with Scanpy](https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scrna-scanpy-pbmc3k/tutorial.html): Learn how to cluster and annotate cells in Galaxy using our single-cell tools. - [Combining single cell datasets after pre-processing](https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scrna-case_alevin-combine-datasets/tutorial.html): Understand how to combine multiple datasets into one AnnData object and add metadata from single-cell experiments. The data object, which you will import from Zenodo into Galaxy via the provided link, has been preprocessed, analyzed, and annotated. It includes the following key observations: @@ -115,20 +115,20 @@ Raw counts are crucial for generating accurate pseudobulk aggregates. Since sing > Pseudobulk with Decoupler > -> 1. Run the {% tool [Decoupler pseudo-bulk](toolshed.g2.bx.psu.edu/repos/ebi-gxa/decoupler_pseudobulk/decoupler_pseudobulk/1.4.0+galaxy5) %} tool with the following parameters: -> - {% icon param-file %} **Input AnnData file**: `AnnData for Pseudobulk` (Input dataset obtained > from Zenodo) -> - **Produce a list of genes to filter out per contrast?**: `No` -> - **Obs Fields to Merge**: *(Leave empty if not applicable)* -> - **Groupby column**: `cell_type` (Column containing cell type annotations) -> - **Sample Key column**: `individual` (Column containing individual sample identifiers) -> - **Layer**: `counts` (Layer containing raw gene expression counts) -> - **Factor Fields**: `disease` (Column in `adata.obs` specifying experimental factors. For edgeR, the first field should be the main contrast field, followed by covariates.) -> - **Use Raw**: `No` -> - **Minimum Cells**: `10` -> - **Produce plots**: `Yes` -> - **Minimum Counts**: `10` -> - **Minimum Total Counts**: `1000` -> - **Minimum Counts Per Gene Per Contrast Field**: `20` (Genes with fewer counts in specific contrasts are flagged in a separate file but not excluded from the results.) +> 1. {% tool [Decoupler pseudo-bulk](toolshed.g2.bx.psu.edu/repos/ebi-gxa/decoupler_pseudobulk/decoupler_pseudobulk/1.4.0+galaxy5) %} tool with the following parameters: +> - {% icon param-file %} **Input AnnData file**: `AnnData for Pseudobulk` (Input dataset obtained > from Zenodo) +> - **Produce a list of genes to filter out per contrast?**: `No` +> - **Obs Fields to Merge**: *(Leave empty if not applicable)* +> - **Groupby column**: `cell_type` (Column containing cell type annotations) +> - **Sample Key column**: `individual` (Column containing individual sample identifiers) +> - **Layer**: `counts` (Layer containing raw gene expression counts) +> - **Factor Fields**: `disease` (Column in `adata.obs` specifying experimental factors. For edgeR, the first field should be the main contrast field, followed by covariates.) +> - **Use Raw**: `No` +> - **Minimum Cells**: `10` +> - **Produce plots**: `Yes` +> - **Minimum Counts**: `10` +> - **Minimum Total Counts**: `1000` +> - **Minimum Counts Per Gene Per Contrast Field**: `20` (Genes with fewer counts in specific contrasts are flagged in a separate file but not excluded from the results.) > - **Enable Filtering by Expression**: `Yes` > - **Plot Samples Figsize**: `13 13` > - **Plot Filtering Figsize**: `13 13` @@ -224,7 +224,7 @@ The next steps will help you refine your data for easier handling. We will use s > {: .hands_on} -## Generating Contrast File +## Generating the Contrast File This file will be use as the contrast input file in the edgeR tool. @@ -271,7 +271,7 @@ This file will be use as the contrast input file in the edgeR tool. # Differential Gene Expression Analysis (DGE) with **edgeR** - +Explain edger... > Run a DGE Analysis with edgeR > @@ -484,4 +484,4 @@ To.... # Conclusion -- Add Workflow image.... \ No newline at end of file +- Add Workflow image.... From 766759129d4954d7cc494e38492f22708065688f Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Fri, 6 Dec 2024 22:17:39 +0100 Subject: [PATCH 07/20] Update tutorial.md --- .../single-cell/tutorials/pseudobulk-analysis/tutorial.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index fa399b80865be4..a0ddd35c83ca90 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -19,8 +19,10 @@ key_points: contributors: - dianichj - pavanvidem -acknowledgments: -- pcm32 +tags: +- single-cell +- transcriptomics +- pseudobulk --- From a02bce3763048337dca35b79c82f6ada7859ca79 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Mon, 9 Dec 2024 13:19:48 +0100 Subject: [PATCH 08/20] Update tutorial.bib --- .../tutorials/pseudobulk-analysis/tutorial.bib | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib index c27f8e2d72e1e2..f1b97cd48c6190 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.bib @@ -65,3 +65,11 @@ @article{Liu2015 title = {Why weight? Modelling sample and observational level variability improves power in RNA-seq analyses}, journal = {Nucleic Acids Research} } + +@online{decoupler-pseudobulk, + author = {Saez Lab and Contributors}, + title = {Pseudobulk Analysis Notebook: A tutorial for pseudobulk analysis using Decoupler}, + url = {https://github.com/saezlab/decoupler-py/blob/main/docs/source/notebooks/pseudobulk.ipynb}, + note = {Accessed via Decoupler documentation: \url{https://decoupler-py.readthedocs.io/en/latest/notebooks/pseudobulk.html}}, + urldate = {2024-12-09} +} From a034ac13903b9c1374aaf81bded2a3750dec6ba3 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Mon, 9 Dec 2024 16:24:39 +0100 Subject: [PATCH 09/20] Update tutorial.md --- .../tutorials/pseudobulk-analysis/tutorial.md | 114 ++++++++---------- 1 file changed, 48 insertions(+), 66 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index a0ddd35c83ca90..9c43238de9efcb 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -30,40 +30,39 @@ Pseudobulk analysis is a powerful technique that bridges the gap between single- A key advantage of this approach in differential expression analysis is that it avoids treating individual cells as independent samples, which can underestimate variance and lead to inflated significance or overly optimistic p-values ({% cite Squair2021 %}). This occurs because cells from the same biological replicate are inherently more similar to each other than cells from different samples. By grouping data into pseudobulk samples, the analysis aligns with the experimental design, as in bulk RNA-seq, leading to more reliable and robust statistical results ({% cite Murphy2022 %}). -Beyond enhancing statistical validity, pseudobulk analysis enables the identification of cell-type-specific gene expression and functional changes across biological conditions. It balances the detailed resolution of single-cell data with the statistical power of bulk RNA-seq, providing insights into the functional transcriptomic landscape relevant to biological questions. +Beyond enhancing statistical validity, pseudobulk analysis enables the identification of cell-type-specific gene expression and functional changes across biological conditions. It balances the detailed resolution of single-cell data with the statistical power of bulk RNA-seq, providing insights into the functional transcriptomic landscape relevant to biological questions. Overall, for differential expression analysis in multi-sample single-cell experiments, pseudo-bulk approaches demonstrate superior performance compared to single-cell-specific DE methods (citation). In this tutorial, we will guide you through a pseudobulk analysis workflow using the **Decoupler** and **edgeR** tools available in Galaxy ({% Badia-iMompel2022 %}) ({% Liu2015 %}). These tools facilitate functional and differential expression analysis, and their output can be integrated with other Galaxy tools to visualize results, such as creating Volcano Plots, which we will also cover in this tutorial. - > Pseudobulk Analysis Pipeline Agenda: > -> 1. **Introduction to Pseudobulk Analysis and Data Preprocessing** +> 1. Introduction to Pseudobulk Analysis and Data Preprocessing > - Overview of pseudobulk analysis > - Preparing single-cell data for pseudobulk analysis > - Aggregating data into pseudobulk samples > - Inspecting Decoupler outputs > -> 2. **Differential Expression Analysis with edgeR** +> 2. Differential Expression Analysis with edgeR > - Preparing input files for edgeR > - Performing differential expression analysis > - Understanding and interpreting the results > -> 3. **Visualization and Reporting** +> 3. Visualization and Reporting > - Generating volcano plots for differentially expressed genes > - Summarizing and presenting functional analysis results > -> 4. **Key Takeaways and Recommendations** +> 4. Key Takeaways and Recommendations > - Reviewing the pseudobulk analysis pipeline > - Suggestions for additional analyses and further exploration > {: .agenda} -## Let's Get the Data! +# Let's Get the Data! -### Overview of the Data +## Overview of the Data -Our data was extracted from the publication titled _"Elevated Calprotectin and Abnormal Myeloid Cell Subsets Discriminate Severe from Mild COVID-19"_ ({% cite Silvin2020 %}). This dataset was chosen because it was utilized by the developers of the `decoupler` tool for pseudobulk aggregate analysis (citation of the tool documentation). +Our data was extracted from the publication titled _"Elevated Calprotectin and Abnormal Myeloid Cell Subsets Discriminate Severe from Mild COVID-19"_ ({% cite Silvin2020 %}). This dataset was chosen because it was utilized by the developers of the `decoupler` tool for pseudobulk aggregate analysis ({% decoupler-pseudobulk %}). Pseudobulk analysis is an advanced method in single-cell data analysis. For this tutorial, we assume familiarity with common single-cell data formats, such as AnnData or Seurat objects, and experience analyzing single-cell data, including clustering and annotating cell types. @@ -71,7 +70,7 @@ If you're new to these concepts, we recommend exploring our other tutorials befo - [Clustering 3K PBMCs with Scanpy](https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scrna-scanpy-pbmc3k/tutorial.html): Learn how to cluster and annotate cells in Galaxy using our single-cell tools. - [Combining single cell datasets after pre-processing](https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scrna-case_alevin-combine-datasets/tutorial.html): Understand how to combine multiple datasets into one AnnData object and add metadata from single-cell experiments. -The data object, which you will import from Zenodo into Galaxy via the provided link, has been preprocessed, analyzed, and annotated. It includes the following key observations: +The data object, which you will import from Zenodo into Galaxy via the provided link, has been preprocessed, analysed, and annotated. It includes the following key observations: - **cell_type**: The type of cell identified. - **disease**: Indicates whether the sample is a control or corresponds to a COVID-19 condition. - **individual**: The individual donor or sample identifier. @@ -98,7 +97,7 @@ The data object, which you will import from Zenodo into Galaxy via the provided {: .hands_on} -## Generation of the Pseudobulk Count Matrix with Decoupler +# Generation of the Pseudobulk Count Matrix with Decoupler In this step, our goal is to perform a "bioinformatic cell sorting" based on the annotated clusters of the single-cell data. @@ -114,32 +113,33 @@ Raw counts are crucial for generating accurate pseudobulk aggregates. Since sing > {: .tip} - > Pseudobulk with Decoupler > > 1. {% tool [Decoupler pseudo-bulk](toolshed.g2.bx.psu.edu/repos/ebi-gxa/decoupler_pseudobulk/decoupler_pseudobulk/1.4.0+galaxy5) %} tool with the following parameters: -> - {% icon param-file %} **Input AnnData file**: `AnnData for Pseudobulk` (Input dataset obtained > from Zenodo) -> - **Produce a list of genes to filter out per contrast?**: `No` -> - **Obs Fields to Merge**: *(Leave empty if not applicable)* -> - **Groupby column**: `cell_type` (Column containing cell type annotations) -> - **Sample Key column**: `individual` (Column containing individual sample identifiers) -> - **Layer**: `counts` (Layer containing raw gene expression counts) -> - **Factor Fields**: `disease` (Column in `adata.obs` specifying experimental factors. For edgeR, the first field should be the main contrast field, followed by covariates.) -> - **Use Raw**: `No` -> - **Minimum Cells**: `10` -> - **Produce plots**: `Yes` -> - **Minimum Counts**: `10` -> - **Minimum Total Counts**: `1000` -> - **Minimum Counts Per Gene Per Contrast Field**: `20` (Genes with fewer counts in specific contrasts are flagged in a separate file but not excluded from the results.) -> - **Enable Filtering by Expression**: `Yes` -> - **Plot Samples Figsize**: `13 13` -> - **Plot Filtering Figsize**: `13 13` +> - {% icon param-file %} **Input AnnData file**: `AnnData for Pseudobulk` (Input dataset obtained > from Zenodo) +> - **Produce a list of genes to filter out per contrast?**: `No` +> - **Obs Fields to Merge**: *(Leave empty if not applicable)* +> - **Groupby column**: `cell_type` (Column containing cell type annotations) +> - **Sample Key column**: `individual` (Column containing individual sample identifiers) +> - **Layer**: `counts` (Layer containing raw gene expression counts) +> - **Factor Fields**: `disease` (Column in `adata.obs` specifying experimental factors. For edgeR, the first field should be the main contrast field, followed by covariates.) +> - **Use Raw**: `No` +> - **Produce AnnData with Pseudo-bulk**: *(Optional, if yes, it will generate an h5ad output file with pseudobulks)* +> - **Minimum Cells**: `10` +> - **Produce plots**: `Yes` +> - **Minimum Counts**: `10` +> - **Minimum Total Counts**: `1000` +> - **Minimum Counts Per Gene Per Contrast Field**: `20` (Genes with fewer counts in specific contrasts are flagged in a separate file but not excluded from the results.) +> - **Enable Filtering by Expression**: `Yes` +> - **Plot Samples Figsize**: `13 13` +> - **Plot Filtering Figsize**: `13 13` > > > Performing DEG within Clusters > > -> > **Important!** The count matrix retrieved from this tool includes all of our samples aggregated by `cell_type`, which can be identified by the column headers. If you want to perform comparisons of conditions within clusters of each individual cell type, you will need to subset the relevant columns of the matrix and use them as your new count matrix. We will demonstrate this in the last section of this tutorial with detailed hands-on steps. +> > **Important!** The count matrix retrieved from this tool includes all of our samples `individual` aggregated by `cell_type`, which can be identified by the column headers. If you want to perform comparisons of conditions within clusters of each individual cell type, you will need to subset the relevant columns of the matrix and use them as your new count matrix. We will demonstrate this in the last section of this tutorial with detailed hands-on steps. > {: .comment} - +> +{: .hands_on} > What are the outputs of the Decoupler tool? > @@ -158,6 +158,7 @@ Raw counts are crucial for generating accurate pseudobulk aggregates. Since sing > - **Pseudobulk Plot** (PNG format) > - **Filter by Expression Plot** (PNG format) > - **Genes to Ignore by Contrast Field** (tabular file) +> - **Pseudobulk AnnData file** (If chosen, h5ad file) > > 2. The output files contain the following: > - **Pseudobulk Count Matrix:** Contains the raw count aggregates for each pseudobulk sample. @@ -168,11 +169,13 @@ Raw counts are crucial for generating accurate pseudobulk aggregates. Since sing > ![Pseudobulk Plot Example](path_to_image_placeholder) > - **Filter by Expression Plot:** Illustrates the expression filtering applied to the data. > ![Filter by Expression Plot Example](path_to_image_placeholder) +> **Pseudobulk AnnData file:**: An AnnData file that contains the aggregated pseudobulks. > > 3. The **pseudobulk count matrix** is the primary input required for analysis using **edgeR**, a tool designed for differential expression analysis. The **Samples Metadata** is another file that will serve as an input for the edgeR tool. > {: .solution} + ## Sanitation Steps - Part 1 The next steps will help you refine your data for easier handling. We will use standard galaxy tools, like: [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1), [Remove columns](toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0) and [Text reformatting](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.3+galaxy1). @@ -273,7 +276,8 @@ This file will be use as the contrast input file in the edgeR tool. # Differential Gene Expression Analysis (DGE) with **edgeR** -Explain edger... + + > Run a DGE Analysis with edgeR > @@ -329,19 +333,20 @@ Explain edger... > - The **FDR** is the adjusted p-value, calculated using the Benjamini-Hochberg method, which helps control for false positives when testing many genes. Genes with an FDR below a threshold (e.g., 0.05) are considered statistically significant. > > **Plot Interpretations**: -> - **MDS Plot**: Displays relationships between samples based on gene expression profiles. Samples that cluster closely are more similar in their expression. Use this to identify whether samples separate by biological condition or to detect potential batch effects. -> - **BCV Plot**: Shows the dispersion for each gene, with higher values indicating greater variability. This is useful for assessing how variability is modeled in the dataset. -> - **QL Plot**: Highlights the quasi-likelihood dispersions, which represent variability modeled during statistical testing. Proper dispersion modeling ensures robust differential expression analysis. -> - **MD Plot**: Visualizes the mean expression levels against log fold change for each gene. Genes far from the center indicate stronger differential expression, with points above or below the horizontal line showing upregulated or downregulated genes, respectively. +> - **MDS Plot**: Displays relationships between samples based on gene expression profiles. Samples that cluster closely are more similar in their expression. Use this to identify whether samples separate by biological condition or to detect potential batch effects. ![MDS Plot](path_to_image_placeholder) +> - **BCV Plot**: Shows the dispersion for each gene, with higher values indicating greater variability. This is useful for assessing how variability is modeled in the dataset. ![BCV Plot](path_to_image_placeholder) +> - **QL Plot**: Highlights the quasi-likelihood dispersions, which represent variability modeled during statistical testing. Proper dispersion modeling ensures robust differential expression analysis. ![QL Plot](path_to_image_placeholder) +> - **MD Plot**: Visualizes the mean expression levels against log fold change for each gene. Genes far from the center indicate stronger differential expression, with points above or below the horizontal line showing upregulated or downregulated genes, respectively. ![MD Plot](path_to_image_placeholder) > > {: .solution} > {: .question} +## Sanitation Steps - Part 2 -## **Extract Element Identifiers** +After performing the differential expression analysis with edgeR, we will clean the data to prepare it for visualization. This involves extracting collection elements, removing unnecessary columns, standardizing text, and splitting the file if needed. We will use the {% tool [Extract element identifiers](toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2) %}, [Remove columns](toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0) %}, {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1) %}, {% tool [Split file](toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.5.2) %}, and {% tool [Parse parameter value](param_value_from_file) %} -This step processes the **edgeR** output, which is a collection of datasets, to extract individual elements for further analysis. We will use the **Extract Element Identifiers** tool in Galaxy to achieve this. +**Extract element identifiers** will allow us to processes the **edgeR** output, which is a collection of datasets, to extract individual elements (like the first table from our collection) for further analysis. > Task Description > @@ -350,15 +355,7 @@ This step processes the **edgeR** output, which is a collection of datasets, to > {: .hands_on} ---- - -## **Sanitation Steps - Part 2** - -After extracting the element identifiers, we will clean the data to prepare it for visualization or downstream analysis. This involves removing unnecessary columns, standardizing text, and splitting the file if needed. - -### **Step 1: Remove Columns** - -This step filters out unnecessary columns from the **edgeR** output and retains only the essential ones for analysis: Gene ID (`id`), Log Fold Change (`logFC`), P-value (`PValue`), and False Discovery Rate (`FDR`). +**Remove columns** to filter out unnecessary columns from the **edgeR** output and retain only the essential ones for analysis: Gene ID (`id`), Log Fold Change (`logFC`), P-value (`PValue`), and False Discovery Rate (`FDR`). > Remove Unnecessary Columns > @@ -374,14 +371,10 @@ This step filters out unnecessary columns from the **edgeR** output and retains > - {% icon param-repeat %} *"Insert Select Columns"* > - *"Header name"*: `FDR` > - *"Keep named columns"*: `Yes` -> +> {: .hands_on} ---- - -### **Step 2: Replace Text** - -Standardize and clean column headers or dataset identifiers by replacing unnecessary prefixes (e.g., `edgeR_`) with nothing. +**Replce text** to standardize and clean column headers or dataset identifiers by replacing unnecessary prefixes (e.g., `edgeR_`) with nothing. > Replace Text > @@ -393,11 +386,7 @@ Standardize and clean column headers or dataset identifiers by replacing unneces > {: .hands_on} ---- - -### **Step 3: Split File** - -If the dataset is too large to process in one go, split it into smaller chunks. +**Split file,** if the dataset is too large to process in one go, split it into smaller chunks. > Split File > @@ -409,11 +398,7 @@ If the dataset is too large to process in one go, split it into smaller chunks. > {: .hands_on} ---- - -### **Step 4: Parse Parameter Value** - -Extract specific parameter values (e.g., dataset names) from the split files for further dynamic inputs in downstream analysis. +**Parse parameter value** to extract specific parameter values (e.g., dataset names) from the split files for further dynamic inputs in downstream analysis. > Parse Parameter Value > @@ -422,7 +407,6 @@ Extract specific parameter values (e.g., dataset names) from the split files for > {: .hands_on} - # Volcano Plot In this step, we will use the sanitized output from the previous steps to create a **Volcano Plot**. This plot helps visualize the relationship between statistical significance (P-value) and fold change (LogFC) for differentially expressed genes (DEG). @@ -444,7 +428,7 @@ In this step, we will use the sanitized output from the previous steps to create > > > What does the Volcano Plot show? > > -> > The Volcano Plot highlights genes with high statistical significance (low P-values) and large fold changes. Genes meeting the significance thresholds are typically colored and labeled for easier identification. +> > The Volcano Plot highlights genes with statistical significance (low P-values) and large fold changes. Genes meeting the significance thresholds are typically colored and labeled for easier identification. > {: .tip} > {: .hands_on} @@ -478,8 +462,6 @@ But what if we refine our approach? For instance, instead of analyzing all cell Let's perform this analysis step-by-step - - # Key Takeaways and Recommendations To.... From 3b977f460c8344b3e52be42e836a516cc7eb5d61 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:13:38 +0100 Subject: [PATCH 10/20] Update tutorial.md --- .../tutorials/pseudobulk-analysis/tutorial.md | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index 9c43238de9efcb..154f9025b0df2b 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -409,7 +409,7 @@ After performing the differential expression analysis with edgeR, we will clean # Volcano Plot -In this step, we will use the sanitized output from the previous steps to create a **Volcano Plot**. This plot helps visualize the relationship between statistical significance (P-value) and fold change (LogFC) for differentially expressed genes (DEG). +In this step, we will use the sanitized output from the previous steps to generate a Volcano Plot, which visualizes the relationship between statistical significance (P-value) and fold change (LogFC) for differentially expressed genes (DEGs). The input file for the Volcano Plot must include four essential columns: _FDR (adjusted P-value), P-value (raw), Log Fold Change, and Gene Symbols (Labels)._ As long as these columns are present, the Volcano Plot can be generated successfully. > Create a Volcano Plot of the DEG > @@ -428,7 +428,7 @@ In this step, we will use the sanitized output from the previous steps to create > > > What does the Volcano Plot show? > > -> > The Volcano Plot highlights genes with statistical significance (low P-values) and large fold changes. Genes meeting the significance thresholds are typically colored and labeled for easier identification. +> > The Volcano Plot highlights genes with statistical significance (low P-values) and large fold changes. Genes meeting the significance thresholds are typically colored and labeled for easier identification. > {: .tip} > {: .hands_on} @@ -436,19 +436,20 @@ In this step, we will use the sanitized output from the previous steps to create ## What are the results of the Volcano Plot? Lets take a moment to interpret the Volcano Plot: +![Volcano Plot](path_to_image_placeholder) - Which genes are most significant? - How does the fold change correlate with the P-values? - Are there any unexpected patterns? > Reflect on the Volcano Plot > -> 1. What is the significance of genes located at the extremes of the plot (e.g., high LogFC and low P-value)? +> 1. What is the significance of genes located at the extremes of the plot (e.g., high LogFC and low P-value)? > 2. How many genes meet the significance threshold in this analysis? > > > Solution > > -> > 1. Genes at the extremes are highly significant and show strong differential expression. -> > 2. You can count these genes from the labels or dataset used to generate the plot. +> > 1. Genes at the extremes of the Volcano plot are highly significant and exhibit strong differential expression. Consider exploring the biological significance of these genes to gain deeper insights into their roles. +> > 2. In our current analysis, we identified only one downregulated gene, MTND1P23, with a logFC of -3.1956, in normal conditions compared to COVID-19 patients. > > > {: .solution} > @@ -458,9 +459,33 @@ Lets take a moment to interpret the Volcano Plot: In our previous analysis, we found that only one gene, **MTND1P23**, was identified as downregulated in our contrast. This result was obtained by "bulking" **all** cell types from our dataset and performing a differential expression analysis comparing normal vs. COVID-19 samples. -But what if we refine our approach? For instance, instead of analyzing all cell types together, what happens if we focus on a specific cluster, such as **T cells**, and perform the same comparison—normal vs. COVID-19? Would the results remain the same, or would this more targeted approach reveal additional insights? +But what if we refine our approach? For instance, instead of analyzing all cell types together, what happens if we focus on a specific cluster, such as **T cells**, and perform the same comparison: normal vs. COVID-19? Would the results remain the same, or would this more targeted approach reveal additional insights? + +## Let's perform this analysis step-by-step + +> Cut Columns on Decoupler Pseudobulk Count Matrix +> +> 1. Use the {% tool [Cut](https://usegalaxy.eu/root?tool_id=Cut1) %} tool with the following parameters: +> - *"Cut columns"*: `c1,c9,c10,c11,c12,c13,c14,c15` +> - *"Delimited by"*: `Tab` +> - *"From"*: `Decoupler pseudo-bulk on data 1: Count Matrix` +> +{: .hands_on} + +> T Cell Count Matrix +> +> 1. What data is included in our new pseudobulk count matrix, and how is it organized? +> 2. How many samples are included in the current dataset, and are all of them derived exclusively from T cells? +> +> > Solution +> > +> > 1. Our new count matrix consists of the original 1,430 rows, representing all genes with their gene labels in the first column. Additionally, it includes seven other columns corresponding to individual samples, like _Control#1Tcell_ or _SARSCoV2posSevere#1Tcell_. +> > 2. Our dataset now includes a total of seven samples: three controls and four COVID-19 positive samples. +> > +> {: .solution} +> +{: .question} -Let's perform this analysis step-by-step # Key Takeaways and Recommendations From 71b28c3488d48cc418798307eb5e0d692c5450c4 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:27:40 +0100 Subject: [PATCH 11/20] Update tutorial.md --- .../tutorials/pseudobulk-analysis/tutorial.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index 154f9025b0df2b..093f48938d96d5 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -67,8 +67,8 @@ Our data was extracted from the publication titled _"Elevated Calprotectin and A Pseudobulk analysis is an advanced method in single-cell data analysis. For this tutorial, we assume familiarity with common single-cell data formats, such as AnnData or Seurat objects, and experience analyzing single-cell data, including clustering and annotating cell types. If you're new to these concepts, we recommend exploring our other tutorials before going for pseudobulk: -- [Clustering 3K PBMCs with Scanpy](https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scrna-scanpy-pbmc3k/tutorial.html): Learn how to cluster and annotate cells in Galaxy using our single-cell tools. -- [Combining single cell datasets after pre-processing](https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scrna-case_alevin-combine-datasets/tutorial.html): Understand how to combine multiple datasets into one AnnData object and add metadata from single-cell experiments. +- [Clustering 3K PBMCs with Scanpy]({% link topics/single-cell/tutorials/scrna-scanpy-pbmc3k/tutorial.md %}): Learn how to cluster and annotate cells in Galaxy using our single-cell tools. +- [Combining single cell datasets after pre-processing]({% link topics/single-cell/tutorials/scrna-case_alevin-combine-datasets/tutorial.md %}): Understand how to combine multiple datasets into one AnnData object and add metadata from single-cell experiments. The data object, which you will import from Zenodo into Galaxy via the provided link, has been preprocessed, analysed, and annotated. It includes the following key observations: - **cell_type**: The type of cell identified. @@ -82,7 +82,7 @@ The data object, which you will import from Zenodo into Galaxy via the provided > 2. Import the AnnData file from [Zenodo](https://zenodo.org/records/13929549): > > ``` -> https://zenodo.org/api/records/13929549/files/Source_AnnData_file.h5ad +> https://zenodo.org/api/records/13929549/files/Source_AnnData_file > ``` > > {% snippet faqs/galaxy/datasets_import_via_link.md %} @@ -344,7 +344,7 @@ This file will be use as the contrast input file in the edgeR tool. ## Sanitation Steps - Part 2 -After performing the differential expression analysis with edgeR, we will clean the data to prepare it for visualization. This involves extracting collection elements, removing unnecessary columns, standardizing text, and splitting the file if needed. We will use the {% tool [Extract element identifiers](toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2) %}, [Remove columns](toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0) %}, {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1) %}, {% tool [Split file](toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.5.2) %}, and {% tool [Parse parameter value](param_value_from_file) %} +After performing the differential expression analysis with edgeR, we will clean the data to prepare it for visualization. This involves extracting collection elements, removing unnecessary columns, standardizing text, and splitting the file if needed. We will use the {% tool [Extract element identifiers](toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2) %}, {[Remove columns](toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0) %}, {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1) %}, {% tool [Split file](toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.5.2) %}, and {% tool [Parse parameter value](param_value_from_file) %} **Extract element identifiers** will allow us to processes the **edgeR** output, which is a collection of datasets, to extract individual elements (like the first table from our collection) for further analysis. @@ -465,7 +465,7 @@ But what if we refine our approach? For instance, instead of analyzing all cell > Cut Columns on Decoupler Pseudobulk Count Matrix > -> 1. Use the {% tool [Cut](https://usegalaxy.eu/root?tool_id=Cut1) %} tool with the following parameters: +> 1. Use the {% tool [Cut](toolshed.g2.bx.psu.edu/repos/iuc/cut/cut/1.0.2) %} tool with the following parameters: > - *"Cut columns"*: `c1,c9,c10,c11,c12,c13,c14,c15` > - *"Delimited by"*: `Tab` > - *"From"*: `Decoupler pseudo-bulk on data 1: Count Matrix` From 95f00fe4e532b3fc22762795af7e3dff922aedd8 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:33:57 +0100 Subject: [PATCH 12/20] Update pseudo-bulk_edgeR.ga added single-cell tag: "tags": ["single-cell"] --- .../pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga index e8c35ee03935d2..787dba43be3bdc 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga +++ b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga @@ -1,6 +1,7 @@ { "a_galaxy_workflow": "true", "annotation": "This workflow uses the decoupler tool in Galaxy to generate pseudobulk counts from an annotated AnnData file obtained from scRNA-seq analysis. Following the pseudobulk step, differential expression genes (DEG) are calculated using the edgeR tool. The workflow also includes data sanitation steps to ensure smooth operation of edgeR and minimizing potential issues. Additionally, a Volcano plot tool is used to visualize the results after the DEG analysis.", + "tags": ["single-cell"], "comments": [], "creator": [ { @@ -1015,4 +1016,4 @@ "tags": [], "uuid": "e4e4055c-7e3f-4014-a8e6-343199fd9b01", "version": 31 -} \ No newline at end of file +} From cc7888368470631cb1c842f56c633b817ebc722f Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:41:36 +0100 Subject: [PATCH 13/20] Update pseudo-bulk_edgeR.ga Edited Tags in Workflow file --- .../pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga index 787dba43be3bdc..14dcc1db88e30f 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga +++ b/topics/single-cell/tutorials/pseudobulk-analysis/workflows/pseudo-bulk_edgeR.ga @@ -1,7 +1,6 @@ { "a_galaxy_workflow": "true", "annotation": "This workflow uses the decoupler tool in Galaxy to generate pseudobulk counts from an annotated AnnData file obtained from scRNA-seq analysis. Following the pseudobulk step, differential expression genes (DEG) are calculated using the edgeR tool. The workflow also includes data sanitation steps to ensure smooth operation of edgeR and minimizing potential issues. Additionally, a Volcano plot tool is used to visualize the results after the DEG analysis.", - "tags": ["single-cell"], "comments": [], "creator": [ { @@ -1013,7 +1012,10 @@ ] } }, - "tags": [], + "tags": [ + "single-cell", + "pseudobulk" + ], "uuid": "e4e4055c-7e3f-4014-a8e6-343199fd9b01", "version": 31 } From 3c710f51cf59aa06019a27d6b657f28c24a5bb4c Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:58:56 +0100 Subject: [PATCH 14/20] Update tutorial.md --- .../single-cell/tutorials/pseudobulk-analysis/tutorial.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index 093f48938d96d5..8f9221cdb1ab67 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -81,9 +81,9 @@ The data object, which you will import from Zenodo into Galaxy via the provided > 1. Create a new history for this tutorial and name it "Pseudobulk DE Analysis with edgeR" > 2. Import the AnnData file from [Zenodo](https://zenodo.org/records/13929549): > -> ``` -> https://zenodo.org/api/records/13929549/files/Source_AnnData_file -> ``` +> ``` +> https://zenodo.org/records/13929549/files/Source_AnnData_file.h5ad +> ``` > > {% snippet faqs/galaxy/datasets_import_via_link.md %} > From 43dc1fefbbe36f54c626a9cfd240fecde1b94747 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:03:59 +0100 Subject: [PATCH 15/20] Update tutorial.md --- topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index 8f9221cdb1ab67..09e974baedd597 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -344,7 +344,7 @@ This file will be use as the contrast input file in the edgeR tool. ## Sanitation Steps - Part 2 -After performing the differential expression analysis with edgeR, we will clean the data to prepare it for visualization. This involves extracting collection elements, removing unnecessary columns, standardizing text, and splitting the file if needed. We will use the {% tool [Extract element identifiers](toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2) %}, {[Remove columns](toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0) %}, {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1) %}, {% tool [Split file](toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.5.2) %}, and {% tool [Parse parameter value](param_value_from_file) %} +After performing the differential expression analysis with edgeR, we will clean the data to prepare it for visualization. This involves extracting collection elements, removing unnecessary columns, standardizing text, and splitting the file if needed. We will use the {% tool [Extract element identifiers](toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.2) %}, {% [Remove columns](toolshed.g2.bx.psu.edu/repos/iuc/column_remove_by_header/column_remove_by_header/1.0) %}, {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1) %}, {% tool [Split file](toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.5.2) %}, and {% tool [Parse parameter value](param_value_from_file) %} **Extract element identifiers** will allow us to processes the **edgeR** output, which is a collection of datasets, to extract individual elements (like the first table from our collection) for further analysis. From 1df1e73f86283abaa1b7ed30d969bb2e1a64100c Mon Sep 17 00:00:00 2001 From: dianichj Date: Wed, 11 Dec 2024 17:14:18 +0100 Subject: [PATCH 16/20] Added Image files for tutorial and their respective links to the md file --- .../Decoupler_Filter_by_Expression_Plot.png | Bin 0 -> 23490 bytes .../Decoupler_Pseudobulk_Plot.png | Bin 0 -> 40116 bytes .../images/pseudobulk-analysis/VolcanoPlot.png | Bin 0 -> 172978 bytes .../images/pseudobulk-analysis/bcvplot.png | Bin 0 -> 21948 bytes .../mdplot_normal-COVID_19.png | Bin 0 -> 9181 bytes .../pseudobulk-analysis/mdsplot_disease.png | Bin 0 -> 14309 bytes .../images/pseudobulk-analysis/qlplot.png | Bin 0 -> 27520 bytes .../tutorials/pseudobulk-analysis/tutorial.md | 14 +++++++------- 8 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 topics/single-cell/images/pseudobulk-analysis/Decoupler_Filter_by_Expression_Plot.png create mode 100644 topics/single-cell/images/pseudobulk-analysis/Decoupler_Pseudobulk_Plot.png create mode 100644 topics/single-cell/images/pseudobulk-analysis/VolcanoPlot.png create mode 100644 topics/single-cell/images/pseudobulk-analysis/bcvplot.png create mode 100644 topics/single-cell/images/pseudobulk-analysis/mdplot_normal-COVID_19.png create mode 100644 topics/single-cell/images/pseudobulk-analysis/mdsplot_disease.png create mode 100644 topics/single-cell/images/pseudobulk-analysis/qlplot.png diff --git a/topics/single-cell/images/pseudobulk-analysis/Decoupler_Filter_by_Expression_Plot.png b/topics/single-cell/images/pseudobulk-analysis/Decoupler_Filter_by_Expression_Plot.png new file mode 100644 index 0000000000000000000000000000000000000000..3ecfedc95ec6187320db0f9ba2b1bdcaa7ea9bea GIT binary patch literal 23490 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 literal 0 HcmV?d00001 diff --git a/topics/single-cell/images/pseudobulk-analysis/Decoupler_Pseudobulk_Plot.png b/topics/single-cell/images/pseudobulk-analysis/Decoupler_Pseudobulk_Plot.png new file mode 100644 index 0000000000000000000000000000000000000000..890eaf8e19d44c10fb08cc3508b97477acd65bb7 GIT binary patch literal 40116 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⁡i4%nt#k6>(7K?2#k3!X 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 jD{=g@m;GO#e2~bBtM#?><-IU$5^49&eLK=dLl literal 0 HcmV?d00001 diff --git a/topics/single-cell/images/pseudobulk-analysis/bcvplot.png b/topics/single-cell/images/pseudobulk-analysis/bcvplot.png new file mode 100644 index 0000000000000000000000000000000000000000..16ac8f3f2300c4024f52635887aa7b687fbcb902 GIT binary patch literal 21948 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 literal 0 HcmV?d00001 diff --git a/topics/single-cell/images/pseudobulk-analysis/mdplot_normal-COVID_19.png b/topics/single-cell/images/pseudobulk-analysis/mdplot_normal-COVID_19.png new file mode 100644 index 0000000000000000000000000000000000000000..0d5728c65912639317148db6873e217f5388b6f3 GIT binary patch literal 9181 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 literal 0 HcmV?d00001 diff --git a/topics/single-cell/images/pseudobulk-analysis/mdsplot_disease.png b/topics/single-cell/images/pseudobulk-analysis/mdsplot_disease.png new file mode 100644 index 0000000000000000000000000000000000000000..025f286ae87cc2392a52f7836aeafaaa0b5149f1 GIT binary patch literal 14309 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 TJ%W6%2PG$^ELkP~KIne|f*lZ3 literal 0 HcmV?d00001 diff --git a/topics/single-cell/images/pseudobulk-analysis/qlplot.png b/topics/single-cell/images/pseudobulk-analysis/qlplot.png new file mode 100644 index 0000000000000000000000000000000000000000..b58e7f30d7e681cf8cc01088c0cfa6a83ca2cc53 GIT binary patch literal 27520 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 literal 0 HcmV?d00001 diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index 09e974baedd597..e8885e0dc553f6 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -166,9 +166,9 @@ Raw counts are crucial for generating accurate pseudobulk aggregates. Since sing > - **Genes Metadata:** Includes gene-related information such as gene symbols, Ensembl IDs, dispersion values, etc. > - **Genes to Ignore:** Lists of genes to could be excluded or should be carefully considered for specific contrasts. This file contains a contrast field and the corresponding genes written as gene symbols. > - **Pseudobulk Plot:** A visual representation of the pseudobulk data. -> ![Pseudobulk Plot Example](path_to_image_placeholder) +> ![Pseudobulk Plot Example](../../topics/single-cell/images/pseudobulk-analysis/Decoupler_Pseudobulk_Plot.png) > - **Filter by Expression Plot:** Illustrates the expression filtering applied to the data. -> ![Filter by Expression Plot Example](path_to_image_placeholder) +> ![Filter by Expression Plot Example](../../topics/single-cell/images/pseudobulk-analysis/Decoupler_Pseudobulk_Plot.png) > **Pseudobulk AnnData file:**: An AnnData file that contains the aggregated pseudobulks. > > 3. The **pseudobulk count matrix** is the primary input required for analysis using **edgeR**, a tool designed for differential expression analysis. The **Samples Metadata** is another file that will serve as an input for the edgeR tool. @@ -333,10 +333,10 @@ This file will be use as the contrast input file in the edgeR tool. > - The **FDR** is the adjusted p-value, calculated using the Benjamini-Hochberg method, which helps control for false positives when testing many genes. Genes with an FDR below a threshold (e.g., 0.05) are considered statistically significant. > > **Plot Interpretations**: -> - **MDS Plot**: Displays relationships between samples based on gene expression profiles. Samples that cluster closely are more similar in their expression. Use this to identify whether samples separate by biological condition or to detect potential batch effects. ![MDS Plot](path_to_image_placeholder) -> - **BCV Plot**: Shows the dispersion for each gene, with higher values indicating greater variability. This is useful for assessing how variability is modeled in the dataset. ![BCV Plot](path_to_image_placeholder) -> - **QL Plot**: Highlights the quasi-likelihood dispersions, which represent variability modeled during statistical testing. Proper dispersion modeling ensures robust differential expression analysis. ![QL Plot](path_to_image_placeholder) -> - **MD Plot**: Visualizes the mean expression levels against log fold change for each gene. Genes far from the center indicate stronger differential expression, with points above or below the horizontal line showing upregulated or downregulated genes, respectively. ![MD Plot](path_to_image_placeholder) +> - **MDS Plot**: Displays relationships between samples based on gene expression profiles. Samples that cluster closely are more similar in their expression. Use this to identify whether samples separate by biological condition or to detect potential batch effects. ![MDS Plot](../../topics/single-cell/images/pseudobulk-analysis/mdsplot_disease.png) +> - **BCV Plot**: Shows the dispersion for each gene, with higher values indicating greater variability. This is useful for assessing how variability is modeled in the dataset. ![BCV Plot](../../topics/single-cell/images/pseudobulk-analysis/bcvplot.png) +> - **QL Plot**: Highlights the quasi-likelihood dispersions, which represent variability modeled during statistical testing. Proper dispersion modeling ensures robust differential expression analysis. ![QL Plot](../../topics/single-cell/images/pseudobulk-analysis/qlplot.png) +> - **MD Plot**: Visualizes the mean expression levels against log fold change for each gene. Genes far from the center indicate stronger differential expression, with points above or below the horizontal line showing upregulated or downregulated genes, respectively. ![MD Plot](../../topics/single-cell/images/pseudobulk-analysis/mdplot_normal-COVID_19.png) > > {: .solution} > @@ -436,7 +436,7 @@ In this step, we will use the sanitized output from the previous steps to genera ## What are the results of the Volcano Plot? Lets take a moment to interpret the Volcano Plot: -![Volcano Plot](path_to_image_placeholder) +![Volcano Plot](../../topics/single-cell/images/pseudobulk-analysis/VolcanoPlot.png) - Which genes are most significant? - How does the fold change correlate with the P-values? - Are there any unexpected patterns? From 7e1b0f519ebd8df314fa71781e69102e7b7560d1 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Thu, 12 Dec 2024 10:45:57 +0100 Subject: [PATCH 17/20] Update tutorial.md Added edgeR explanation for performing DE in pseudobulk aggregates. --- topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index e8885e0dc553f6..c6028c51b5b25e 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -274,10 +274,13 @@ This file will be use as the contrast input file in the edgeR tool. {: .question} -# Differential Gene Expression Analysis (DGE) with **edgeR** +# Differential Expression Analysis (DE) with edgeR +The tool **edgeR** is commonly used for differential expression (DE) analysis of pseudobulk aggregates in single-cell RNA-seq studies (citation). It calculates gene dispersions based on the total counts for each gene and adjusts these estimates using an approach called empirical Bayes. This method improves reliability by pooling information across all genes in the dataset to stabilize dispersion estimates, particularly for genes with low counts or limited data. By "borrowing strength" from the behavior of other genes, empirical Bayes reduces the risk of overestimating or underestimating variability, ensuring more robust and accurate results (citation). Differential expression is then evaluated using an exact test for the negative binomial distribution, which is similar to Fisher’s exact test but modified to handle the variability typically seen in RNA-seq data (citation). +In addition to exact tests, edgeR employs generalized linear models (GLMs), which allow for the analysis of more complex experimental designs. GLMs model gene counts as a function of experimental conditions (e.g., treatment groups or time points) and estimate how these conditions influence gene expression. Likelihood-based methods, such as quasi-likelihood (QL) approaches, are central to this framework. Standard likelihood methods evaluate the fit of the model to the data, while quasi-likelihood methods add an extra layer by explicitly accounting for biological and technical variability, improving the reliability of DE results. These models allow edgeR to identify subtle expression differences while controlling for overdispersion in the data (citation). +Several plots can be generated to assist in understanding the data and the results of the analysis, including MDS, BCV, QL, and MD plots. These visualizations provide insights into sample relationships, variability, and differential expression, and will be explained further in the tutorial. With these concepts in mind, lets now perform our DE analysis using our edgeR tool in Galaxy! > Run a DGE Analysis with edgeR > From 897e05d7b616a4a53de4ce91f2e761f6452d523d Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Wed, 15 Jan 2025 11:50:52 +0100 Subject: [PATCH 18/20] Update tutorial.md --- .../tutorials/pseudobulk-analysis/tutorial.md | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index c6028c51b5b25e..7c9cbec501e363 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -30,7 +30,7 @@ Pseudobulk analysis is a powerful technique that bridges the gap between single- A key advantage of this approach in differential expression analysis is that it avoids treating individual cells as independent samples, which can underestimate variance and lead to inflated significance or overly optimistic p-values ({% cite Squair2021 %}). This occurs because cells from the same biological replicate are inherently more similar to each other than cells from different samples. By grouping data into pseudobulk samples, the analysis aligns with the experimental design, as in bulk RNA-seq, leading to more reliable and robust statistical results ({% cite Murphy2022 %}). -Beyond enhancing statistical validity, pseudobulk analysis enables the identification of cell-type-specific gene expression and functional changes across biological conditions. It balances the detailed resolution of single-cell data with the statistical power of bulk RNA-seq, providing insights into the functional transcriptomic landscape relevant to biological questions. Overall, for differential expression analysis in multi-sample single-cell experiments, pseudo-bulk approaches demonstrate superior performance compared to single-cell-specific DE methods (citation). +Beyond enhancing statistical validity, pseudobulk analysis enables the identification of cell-type-specific gene expression and functional changes across biological conditions. It balances the detailed resolution of single-cell data with the statistical power of bulk RNA-seq, providing insights into the functional transcriptomic landscape relevant to biological questions. Overall, for differential expression analysis in multi-sample single-cell experiments, pseudobulk approaches demonstrate superior performance compared to single-cell-specific DE methods (citation). In this tutorial, we will guide you through a pseudobulk analysis workflow using the **Decoupler** and **edgeR** tools available in Galaxy ({% Badia-iMompel2022 %}) ({% Liu2015 %}). These tools facilitate functional and differential expression analysis, and their output can be integrated with other Galaxy tools to visualize results, such as creating Volcano Plots, which we will also cover in this tutorial. @@ -50,8 +50,11 @@ In this tutorial, we will guide you through a pseudobulk analysis workflow using > 3. Visualization and Reporting > - Generating volcano plots for differentially expressed genes > - Summarizing and presenting functional analysis results -> -> 4. Key Takeaways and Recommendations +> +> 5. Subsetting Samples from the Original AnnData Object +> - Extracting AnnData Object with observations of interest +> +> 6. Key Takeaways and Recommendations > - Reviewing the pseudobulk analysis pipeline > - Suggestions for additional analyses and further exploration > @@ -64,7 +67,7 @@ In this tutorial, we will guide you through a pseudobulk analysis workflow using Our data was extracted from the publication titled _"Elevated Calprotectin and Abnormal Myeloid Cell Subsets Discriminate Severe from Mild COVID-19"_ ({% cite Silvin2020 %}). This dataset was chosen because it was utilized by the developers of the `decoupler` tool for pseudobulk aggregate analysis ({% decoupler-pseudobulk %}). -Pseudobulk analysis is an advanced method in single-cell data analysis. For this tutorial, we assume familiarity with common single-cell data formats, such as AnnData or Seurat objects, and experience analyzing single-cell data, including clustering and annotating cell types. +Pseudobulk analysis is an advanced method in single-cell data analysis. For this tutorial, we assume familiarity with common single-cell data formats, such as AnnData or Seurat objects, and experience analysing single-cell data, including clustering and annotating cell types. If you're new to these concepts, we recommend exploring our other tutorials before going for pseudobulk: - [Clustering 3K PBMCs with Scanpy]({% link topics/single-cell/tutorials/scrna-scanpy-pbmc3k/tutorial.md %}): Learn how to cluster and annotate cells in Galaxy using our single-cell tools. @@ -107,7 +110,7 @@ Raw counts are crucial for generating accurate pseudobulk aggregates. Since sing > Missing Raw Counts? > -> If your AnnData object lacks raw counts, you can use the **[AnnData Operations](toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.9.3+galaxy0)** tool on the **[Single Cell Galaxy instance](https://singlecell.usegalaxy.eu)**. This tool allows you to copy the `.X` matrix into a new layer, such as `counts` or `raw_counts`, making it accessible as an input parameter for Decoupler. +> If your AnnData object lacks raw counts, you can use the **[AnnData Operations](toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.9.3+galaxy0)** tool on the **[Single Cell Galaxy instance](https://singlecell.usegalaxy.eu)**. This tool allows you to copy the `.X` matrix into a new layer that you may assign a new lable, for e.g., `counts` or `raw_counts`, making it available as a parameter for Decoupler. > > Importantly, ensure that the copying of this matrix as a raw counts layer is done carefully and correctly. To verify that your AnnData object contains the necessary raw counts layer, you can use the **[Inspect AnnData Object](toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.10.9+galaxy0)** tool. This tool helps confirm the presence of raw counts and other essential metadata in your AnnData object before proceeding with pseudobulk analysis. > @@ -458,31 +461,37 @@ Lets take a moment to interpret the Volcano Plot: > {: .question} -# Subsetting Samples from Our Original Pseudobulk Count Matrix +# Subsetting Samples from the Original AnnData Object In our previous analysis, we found that only one gene, **MTND1P23**, was identified as downregulated in our contrast. This result was obtained by "bulking" **all** cell types from our dataset and performing a differential expression analysis comparing normal vs. COVID-19 samples. -But what if we refine our approach? For instance, instead of analyzing all cell types together, what happens if we focus on a specific cluster, such as **T cells**, and perform the same comparison: normal vs. COVID-19? Would the results remain the same, or would this more targeted approach reveal additional insights? +Now, what if we refine our approach? For instance, instead of analysing all cell types together, what happens if we focus on a specific cluster, such as **T cells**, and perform the same comparison: normal vs. COVID-19? Would the results remain the same, or would this approach reveal additional insights? -## Let's perform this analysis step-by-step +## Extracting observations of interest as AnnData object -> Cut Columns on Decoupler Pseudobulk Count Matrix -> -> 1. Use the {% tool [Cut](toolshed.g2.bx.psu.edu/repos/iuc/cut/cut/1.0.2) %} tool with the following parameters: -> - *"Cut columns"*: `c1,c9,c10,c11,c12,c13,c14,c15` -> - *"Delimited by"*: `Tab` -> - *"From"*: `Decoupler pseudo-bulk on data 1: Count Matrix` +> Use Manipulate AnnData Tools to extract observations > +> 1. Use the {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.10.9+galaxy0) %} tool with the following parameters: +> - *"Annotated data matrix"*: `AnnData for Pseudobulk` (Your preprocessed, analysed, and annotated AnnData object) +> - *"Function to manipulate the object"*: `Filter observations or variables` +> - *"What to filter?"*: `Observations (obs)` (For filtering cells, select Observations (obs)) +> - *"Type of filtering?"*: `By key (column) values +> - *"Key to filter"*: `cell_type` (the label that identify cell annotations in our AnnData) +> -*"Type of value to filter"*: `Text` +> -*"Filter"*: `equal to` +> -*"Value"*: `T cell` (the name of the cluster of interest for subset analysis) {: .hands_on} +> After using the {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.10.9+galaxy0) %} tool to subset the cell type of interest, go back to the top of this tutorial to the hands-on **Pseudobulk with Decoupler** step, and you may perform once again the same steps in this smaller AnnData object that now should only include your T cells. + > T Cell Count Matrix > -> 1. What data is included in our new pseudobulk count matrix, and how is it organized? -> 2. How many samples are included in the current dataset, and are all of them derived exclusively from T cells? +> 1. What data is included in our new pseudobulk count matrix, How is it organized? +> 2. How many samples are included in the current dataset? Are all of them derived exclusively from T cells? > > > Solution > > -> > 1. Our new count matrix consists of the original 1,430 rows, representing all genes with their gene labels in the first column. Additionally, it includes seven other columns corresponding to individual samples, like _Control#1Tcell_ or _SARSCoV2posSevere#1Tcell_. +> > 1. The new count matrix consists of the original 2,815 rows, representing all genes with their gene labels in the first column. Additionally, it includes seven other columns corresponding to individual samples, like _Control#1Tcell_ or _SARSCoV2posSevere#1Tcell_. > > 2. Our dataset now includes a total of seven samples: three controls and four COVID-19 positive samples. > > > {: .solution} From b5d726eb24dfaa40de71d1a233134c8c645d0fb1 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Wed, 15 Jan 2025 11:54:07 +0100 Subject: [PATCH 19/20] Update tutorial.md --- topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index 7c9cbec501e363..c536f64f2916ab 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -481,9 +481,9 @@ Now, what if we refine our approach? For instance, instead of analysing all cell > -*"Filter"*: `equal to` > -*"Value"*: `T cell` (the name of the cluster of interest for subset analysis) {: .hands_on} - +> > After using the {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.10.9+galaxy0) %} tool to subset the cell type of interest, go back to the top of this tutorial to the hands-on **Pseudobulk with Decoupler** step, and you may perform once again the same steps in this smaller AnnData object that now should only include your T cells. - +> > T Cell Count Matrix > > 1. What data is included in our new pseudobulk count matrix, How is it organized? From 2a9e2b44202997f9545c59afbdb1becdcdf9e995 Mon Sep 17 00:00:00 2001 From: diana chJ <122611454+dianichj@users.noreply.github.com> Date: Wed, 15 Jan 2025 14:33:17 +0100 Subject: [PATCH 20/20] Update tutorial.md --- .../tutorials/pseudobulk-analysis/tutorial.md | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md index c536f64f2916ab..5f7e5bc481053e 100644 --- a/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md +++ b/topics/single-cell/tutorials/pseudobulk-analysis/tutorial.md @@ -501,8 +501,24 @@ Now, what if we refine our approach? For instance, instead of analysing all cell # Key Takeaways and Recommendations -To.... - -# Conclusion - -- Add Workflow image.... +## Key Takeaways +- **Pseudobulk Analysis Advantage:** Pseudobulk analysis bridges single-cell and bulk RNA-seq approaches, combining high resolution with statistical robustness. +- **Importance of Metadata:** Proper annotation and metadata inclusion (e.g., cell types, conditions) are needed for generating pseudobulk matrices. +- **Role of Decoupler:** The Decoupler tool can generate pseudobulk matrices, offering flexibility in filtering and visualization. +- **Strength of edgeR:** edgeR provides robust differential expression analysis for pseudobulk data, accounting for biological and technical variability. +- **Visualization and Interpretation:** Tools like Volcano Plots enhance interpretation by highlighting significant genes and trends in differential expression. + +## Recommendations +1. **Data Preprocessing:** + - Ensure raw counts are preserved in your AnnData object before pseudobulk analysis. + - Verify the presence of important metadata fields to ensure meaningful grouping and contrasts. +2. **Focus on Subsets:** + - Analyse subsets of cell types or clusters for more granular insights. For example, pseudobulk analysis focused on specific immune cell populations can reveal subtle but important expression changes. +3. **Quality Control:** + - Always inspect the outputs of Decoupler (e.g., pseudobulk plots and filtering summaries) to confirm data integrity and address outliers. + - Use edgeR’s diagnostic plots (e.g., MDS, BCV) to check for batch effects or unexpected variability. +4. **Follow-Up Analysis:** + - Consider functional analysis (e.g., GO enrichment, pathway analysis) for the differentially expressed genes to link expression changes to biological processes. + - Use visualization tools, such as heatmaps or boxplots, to further explore expression trends in key genes. +5. **Future Applications:** + - Pseudobulk analysis can be extended to multi-condition experiments, time-course data, or other cell-type-specific investigations.