Introduction to Transcriptomics
Workshop material
1 Welcome
Organisation: Data Science Platform
Responsibles: Juliana Assis (jasge@dtu.dk)
Sebastian Schulz (sebschu@dtu.dk)
Alberto Pallejà Caro (apca@dtu.dk)
Teaching Assistant: Edir Sebastian Vidal Castro (s243564@student.dtu.dk)
Welcome to the Introduction to Transcriptomics Workshop!
This workshop introduces RNA-seq data analysis, covering both the theory behind the technology and the full practical workflow — from raw reads to biological interpretation — using real E. coli data.
The course is designed for people with no or little knowledge and practical experience in transcriptomic analysis using RNA sequencing (RNAseq).
Objectives
- Theory on Illumina short-read sequencing technology for transcriptome analysis
- Theory and practical sessions for
- RNAseq data processing using the nf-core/rnaseq pipeline
- Statistical data analysis and visualization of RNAseq results
- Enrichment analysis — gaining biological insights from transcriptomic data
- Effective results reporting using the in-house developed software vuegen
You can also explore the DSP Transcriptomics Training repository
| Time | Session |
|---|---|
| ☕ 9:00–9:15 | Welcome, coffee, and setup |
| 🔬 9:15–10:00 | Theory: Illumina sequencing & RNA-seq experimental design |
| 🔄 10:00–10:45 | Theory: nf-core/rnaseq pipeline overview |
| ⏸️ 10:45–11:00 | Break |
| 💻 11:00–12:00 | Script 01: nf-core/rnaseq — running the pipeline |
| 🍽️ 12:00–13:00 | Lunch |
| 🧬 13:00–14:15 | Script 02: Quality Control & Exploratory Data Analysis |
| ⏸️ 14:15–14:30 | Break |
| 📊 14:30–15:30 | Script 03: Differential Expression Analysis with DESeq2 |
| ⏸️ 15:30–15:45 | Break |
| 🔍 15:45–16:15 | Script 04: Functional Enrichment Analysis (ORA & GSEA with mulea) |
| 🏁 16:15–16:30 | Wrap-up, Q&A, and closing |
Material for the workshop is located at: dsp_transcriptomics_training
Below are two setup options for the practical activities:
Run the workshop in the cloud (no need to install anything).
Launch the app:
Run the workshop locally on your machine.
⚠️ Warning: Please, contact me if you need help! Juliana Assis
To run it on your own machine, install the following packages:
# ============================================================
# DSP Transcriptomics Workshop – Package Installation Script
# ============================================================
# Run this script ONCE before the workshop to install all
# required R packages. Works on macOS, Linux, and Windows.
# Tested with R >= 4.3.
# ============================================================
## ---- 0. Helper: install only if missing --------------------
install_if_missing <- function(pkg, installer, ...) {
if (!requireNamespace(pkg, quietly = TRUE)) {
message("Installing: ", pkg)
installer(pkg, ...)
} else {
message("Already installed: ", pkg)
}
}
## ---- 1. CRAN packages --------------------------------------
cran_pkgs <- c(
"tidyverse",
"reshape2",
"RColorBrewer",
"pheatmap",
"factoextra",
"knitr",
"kableExtra",
"DT",
"plotly",
"ggpubr",
"remotes" # needed for GitHub installs below
)
for (pkg in cran_pkgs) {
install_if_missing(pkg, install.packages,
dependencies = TRUE)
}
## ---- 2. Bioconductor packages ------------------------------
if (!requireNamespace("BiocManager", quietly = TRUE)) {
install.packages("BiocManager")
}
# Pin to the release that matches R 4.4; BiocManager picks the right
# version automatically, but you can force with: BiocManager::install(version = "3.19")
bioc_pkgs <- c(
"DESeq2",
"apeglm", # recommended shrinkage estimator used with DESeq2
"fgsea",
"KEGGREST",
"EnhancedVolcano"
)
for (pkg in bioc_pkgs) {
install_if_missing(pkg, BiocManager::install,
update = FALSE, ask = FALSE)
}
## ---- 3. GitHub packages ------------------------------------
# mulea is not on CRAN/Bioconductor yet
if (!requireNamespace("mulea", quietly = TRUE)) {
message("Installing mulea from GitHub (ELTEbioinformatics/mulea)")
remotes::install_github("ELTEbioinformatics/mulea")
} else {
message("Already installed: mulea")
}
## ---- 4. Verification ---------------------------------------
all_pkgs <- c(
cran_pkgs,
bioc_pkgs,
"mulea"
)
# remove helper-only packages from the check list
check_pkgs <- setdiff(all_pkgs, "remotes")
cat("\n========== Installation check ==========\n")
ok <- character(0)
nok <- character(0)
for (pkg in check_pkgs) {
if (requireNamespace(pkg, quietly = TRUE)) {
ok <- c(ok, pkg)
} else {
nok <- c(nok, pkg)
}
}
cat("OK (", length(ok), "):", paste(ok, collapse = ", "), "\n\n")
if (length(nok) > 0) {
cat("FAILED (", length(nok), "):", paste(nok, collapse = ", "), "\n")
cat("Please re-run the script or install the above packages manually.\n")
} else {
cat("All packages installed successfully. You are ready for the workshop!\n")
}
cat("=========================================\n")