1 Welcome


Organisation: Data Science Platform
Responsibles: Juliana Assis ()
Sebastian Schulz ()
Alberto Pallejà Caro ()
Teaching Assistant: Edir Sebastian Vidal Castro ()


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:

Open in GitHub Codespaces

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")