A comprehensive R pipeline for RNA differential expression analysis supporting multiple input formats and enrichment analysis.
URNADES is a flexible and automated pipeline for RNA-seq differential expression analysis that supports:
- Multiple input formats: featureCounts, SALMON quantification
- Dual analysis engines: DESeq2 and edgeR
- Gene set enrichment analysis: Integration with MSigDB collections
- Automated reporting: HTML reports with interactive visualizations
- Containerization: Ready-to-use Singularity container
Build the container:
sudo singularity build urnades.sif Singularity.defPull from a registry:
singularity pull urnades.sif library://blazv/urnades/urnadesInstall required R packages:
# Install BiocManager
install.packages("BiocManager")
# CRAN packages
install.packages(c(
"optparse", "knitr", "rmarkdown", "tidyverse",
"ggplot2", "plotly", "RColorBrewer", "DT",
"gridExtra", "ggvenn", "calibrate", "msigdbr"
))
# Bioconductor packages
BiocManager::install(c(
"DESeq2", "edgeR", "tximport", "EnhancedVolcano", "fgsea"
))# Using Singularity container
singularity exec urnades.sif Rscript URNADES.R \
--sampleInfoFilePath samples.csv \
--featureCounts counts.tsv \
--conditionName treatment \
--output results/
# Direct R execution
Rscript URNADES.R \
--sampleInfoFilePath samples.csv \
--SALMONdata salmon_quants/ \
--conditionName treatment \
--output results/- Sample Information File (
samples.csv):
sample,treatment,batch
sample1,control,1
sample2,control,1
sample3,treated,1
sample4,treated,1- Count Data (one of):
- featureCounts output (
counts.tsv) - SALMON quantification directory
- featureCounts output (
singularity exec urnades.sif Rscript URNADES.R \
--sampleInfoFilePath metadata.csv \
--featureCounts gene_counts.tsv \
--conditionName condition \
--output analysis_results/ \
--fdr 0.05 \
--log2FCT 1.5singularity exec urnades.sif Rscript URNADES.R \
--sampleInfoFilePath samples.csv \
--SALMONdata salmon_output/ \
--conditionName treatment \
--output results/ \
--enrichment_sources "DESeq2,edgeR,common_sig_DE_genes" \
--species "Homo sapiens" \
--gs_collection "H"singularity exec urnades.sif Rscript URNADES.R \
--sampleInfoFilePath complex_design.csv \
--featureCounts counts.tsv \
--conditionName treatment \
--formula_input "~ Patient_ID + Condition" \
--output results/| Parameter | Description |
|---|---|
--sampleInfoFilePath |
Path to sample metadata CSV file |
--conditionName |
Column name for the main condition |
--output |
Output directory path |
| Parameter | Description |
|---|---|
--featureCounts |
Path to featureCounts/STAR output TSV |
--SALMONdata |
Path to SALMON quantification directory |
| Parameter | Default | Description |
|---|---|---|
--fdr |
0.05 | False discovery rate threshold |
--log2FCT |
2 | Log2 fold change threshold |
--min_count |
10 | Minimum count for gene filtering |
--formula_input |
Auto | Custom design formula |
| Parameter | Default | Description |
|---|---|---|
--enrichment_sources |
None | Sources for enrichment (DESeq2,edgeR,common_sig_DE_genes) |
--species |
"Homo sapiens" | Species for MSigDB |
--gs_collection |
"H" | MSigDB collection (H, C1-C8) |
If left unspecified, human references will be downloaded from Ensembl: biomaRt::useMart(biomart = "ensembl", dataset = "hsapiens_gene_ensembl")
| Parameter | Default | Description |
|---|---|---|
--annotatedPath |
Data/annotated.csv | Gene annotation file (CSV/GTF/GFF) |
--t2gPath |
Data/genes.filtered.t2g | Transcript-to-gene mapping |
--gene_name |
gene_id | Gene identifier type |
The pipeline generates:
featureCounts_report.html/SALMON_report.html- Main analysis reports[source]_enrichment_report.html- Enrichment analysis reports
output/
βββ [data_origin]/
β βββ DESeq2.csv # DESeq2 results
β βββ edgeR.csv # edgeR results
β βββ common_sig_genes.csv # Overlapping significant genes
β βββ common_sig_DE_genes.csv # Overlapping DE genes
β βββ DESeq2_counts.csv # Normalized counts
βββ *.html # Generated reports
-
Prepare your data:
# Sample metadata echo "sample,condition,batch" > samples.csv echo "ctrl1,control,1" >> samples.csv echo "ctrl2,control,2" >> samples.csv echo "treat1,treatment,1" >> samples.csv echo "treat2,treatment,2" >> samples.csv
-
Run the analysis:
singularity exec urnades.sif Rscript URNADES.R \ --sampleInfoFilePath samples.csv \ --featureCounts gene_counts.tsv \ --conditionName condition \ --output my_analysis/ \ --enrichment_sources "DESeq2,common_sig_DE_genes" \ --species "Homo sapiens"
-
View results: Open
my_analysis/featureCounts_report.htmlin your browser
Available MSigDB collections:
| Collection | Description |
|---|---|
| H | Hallmark gene sets |
| C1 | Positional gene sets |
| C2 | Curated gene sets |
| C3 | Regulatory target gene sets |
| C4 | Computational gene sets |
| C5 | Ontology gene sets |
| C6 | Oncogenic signature gene sets |
| C7 | Immunologic signature gene sets |
| C8 | Cell type signature gene sets |
- Missing packages: Use the Singularity container for guaranteed compatibility
- Memory issues: Increase available RAM or filter low-count genes more aggressively
- File format errors: Ensure CSV files use comma separators and proper headers
- Check the generated HTML reports for diagnostic information
- Verify input file formats match expected structure
- Use
--helpflag to see all available options
We welcome contributions! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
If you use URNADES in your research, please cite:
URNADES: Universal RNA Differential Expression Scripts
VrhovΕ‘ek et al. (2025)
GitHub: https://github.com/HudoGriz/URNADES-Universal-RNA-Differential-Expression-Scripts
This project is licensed under the MIT License - see the LICENSE file for details.
For questions and support:
- π§ Open an issue on GitHub
- π Check the documentation in the HTML reports
- π Search existing issues for solutions
Happy analyzing! π§¬π