Upload counts and metadata files for one or more datasets.
Check sample coverage, inspect PCA, and review outlier detection.
Run the fixed DESeq2 workflow for standard or timepoint-specific contrasts.
Review DEGs, heatmaps, gene expression plots, volcano plots, comparisons, and optional pathway analysis.
R-ODAF-Shiny is designed to make standardised RNA-seq differential expression analysis accessible to a wide range of users. Built on the R-ODAF framework for regulatory application, it provides a fixed and transparent workflow for quality control, DEG analysis, visualisation, and downloadable results. By combining accessibility with reproducibility, the app supports more consistent transcriptomic analysis across datasets.
This tutorial demonstrates a complete run of the current R-ODAF-Shiny workflow using the bundled human doxorubicin organoid example dataset from the published study by Rodrigues et al., 2022.
The goal of this tutorial is to show how a user can move from loading an example dataset to reviewing quality control, differential expression, gene-level visualisation, optional pathway analysis, session-based result storage, and summary export.
The tutorial reflects the current app structure and the current bundled screenshots.
Key features of the tool:
Open the Analysis tab and start with the bundled example dataset.
For this tutorial:
1HumanBecause this dataset is bundled inside the app, the counts and metadata are loaded internally from the example files and do not need to be uploaded manually.
This step confirms that the example dataset has been selected correctly and that the analysis will use the human annotation setting for gene symbol mapping.
After loading the bundled example dataset, review the dataset settings in the left panel.
Important settings visible here include:
Pathway analysis is optional. If enabled, the app performs downstream enrichment through enrichR using three pathway libraries:
The pathway settings shown in the app indicate that:
If pathway analysis is not enabled before running the analysis, the Pathway analysis tab will not appear later.
This example uses a standard two-group comparison.
Leave:
Then set or confirm:
treatmentcontrolexposureThis is important because the example uses the metadata column named treatment to define the comparison, with control as the reference group and exposure as the case group.
The screenshot for this step also shows the Data preview tab, where you should inspect both input tables.
This should contain:
This should contain:
At this stage, always confirm that the sample IDs in the metadata match the sample columns in the counts table. This is essential for a successful run.
After confirming the dataset settings, click Run analysis.
Once clicked, the app starts the fixed R-ODAF workflow and shows a progress window indicating that the pipeline is running. This confirms that the selected dataset settings, design column, labels, and optional analysis settings are being processed.
At this stage, the app runs the core workflow behind the scenes, including:
This step confirms that the analysis has been launched successfully and that the app is processing the selected dataset.
After the run finishes, open the PCA & outliers tab.
This tab contains three key parts:
The first PCA plot is used to assess:
Use this view to ask:
This is an important first quality-control checkpoint because it provides a quick overview of the global structure of the dataset after the fixed workflow has been applied.
The same tab also reports whether any samples were removed by the outlier procedure and shows the PCA again after this step.
In this example, no outliers were removed, so the before and after PCA views remain effectively the same.
This is still an important part of the workflow because, in other datasets, this section determines whether the final downstream analysis is based on the full dataset or on a cleaned dataset after sample exclusion.
If samples are removed in your own run, they should be reviewed carefully before biological interpretation.
Open the DE results tab.
This tab provides the main differential expression output of the run.
At the top of the tab, the app reports a summary including:
Below that is the interactive DEG table, which contains one row per significant DEG and includes columns such as:
GeneIDGeneSymbolbaseMeanlog2FoldChangelfcSEstatpvaluepadjThis tab also provides several download options, including:
Note: In some runs, the DEG heatmap may not display directly inside the Shiny interface after the analysis finishes. If this happens, the heatmap can still be accessed by downloading it from the DE results tab. When running the app locally through RStudio, it may also still be visible in the RStudio plotting/output environment. This does not affect the underlying DEG results.
These outputs are central for both interpretation and reproducibility.
Open the Gene expression tab.
This tab contains three sub-tabs:
Together, these views help the user move from a DEG table to more interpretable gene-level visualisation.
The Top gene expression sub-tab shows per-gene expression distributions using boxplots with overlaid sample points.
Controls available here include:
Ensembl ID or Gene symbol)This view is especially useful because it shows not only the group-level difference, but also the spread of individual samples within each condition.
This helps users judge whether a DEG is driven by a stable group shift or by only a few samples.
The Average expression sub-tab shows mean expression values for selected top-ranked DEGs across groups.
Controls available here include:
Ensembl ID or Gene symbol)This view is useful for quickly comparing average expression differences between control and exposure for a selected gene subset.
The Volcano plot sub-tab shows the full differential expression result as a volcano plot.
It includes:
Ensembl ID or Gene symbol)In this app, the volcano categories are based on adjusted p-value and the direction of the fold change:
padj < 0.01 and log2FoldChange > 0padj < 0.01 and log2FoldChange < 0So a gene is considered not significant if:
padj is missing, orpadj >= 0.01, orlog2FoldChange is missingThe dashed horizontal line represents the statistical threshold used in the app.
Open the Results tab.
This tab has two separate functions.
The upper table stores DEG results from analyses performed during the current session only.
This means:
This section is still useful even when Results Comparison is available, because it serves as the internal DEG archive that comparison queries use. It also allows users to inspect all stored gene-level results directly.
The lower section supports comparison of two stored analyses using the archived DEG results.
The comparison controls include:
Available comparison questions include:
The Largest effect-size shift query identifies genes that are present in both analyses but show a substantial difference in fold change magnitude between the two studies.
In the screenshot shown here, Study A and Study B are both set to the same dataset. Because of that, the comparison is aligned to itself, so the matching genes return the same fold changes and the difference columns such as DeltaFC and AbsDeltaFC are zero. This is expected for this demonstration example.
This comparison feature becomes especially useful when multiple datasets, doses, or filtered analysis runs are performed in the same session.
If Add pathway analysis was enabled before running the analysis, the Pathway analysis tab becomes available.
This tab provides:
Below the summary is the interactive pathway results table.
The table includes columns such as:
TermOverlapP.valueAdjusted.P.valueOdds.RatioCombined.ScoreGenesThis step provides a quick functional interpretation layer on top of the DEG results.
In the current app, pathway analysis is based on filtered DEG input only and is performed through enrichR using:
Finally, open the Summary tab.
This tab provides a compact text summary of the complete run and includes information such as:
This tab also includes download options for:
These files are valuable for record keeping, reproducibility, and documenting exactly how the analysis was run.
When using your own RNA-seq datasets in the app:
The app supports up to 5 datasets in one session, which makes it possible to perform multiple runs and use the comparison tools without restarting the app.
This tutorial demonstrated the current R-ODAF-Shiny workflow using the bundled human doxorubicin organoid example dataset from Rodrigues et al., 2022.
By completing these steps, the user is taken through:
The same workflow can now be applied to your own RNA-seq datasets within the same app structure.
R-ODAF-Shiny is a standardised Shiny tool for RNA-seq differential expression analysis. It applies a fixed DESeq2-based workflow so users can move from counts and metadata to quality-controlled DEGs, visualisations, and downloadable results in a transparent and reproducible way. The app also supports analysis of multiple datasets within the same session.
For detailed step-by-step guidance, examples, and additional notes, see the Tutorial tab and the full R-ODAF documentation page .
Formal citation information for this app is currently in preparation and will be added in a future update.
MIT License
Copyright (c) 2025 Saad Lodhi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
For questions, suggestions, or bug reports: