Bulk RNA-seq nf-core Workflow

Run nf-core/rnaseq from FASTQ input through counts and QC reports

What it does

This workflow uses nf-core/rnaseq to process bulk RNA-seq FASTQ files into aligned reads, quantification outputs, merged count matrices, and consolidated QC reports. The committed README focuses on samplesheet structure, Nextflow execution, cluster submission, and the output directories most useful for downstream differential-expression analysis.

When to use it

Use this workflow when you want a standardized, container-friendly bulk RNA-seq pipeline rather than a hand-assembled alignment and quantification script. It is most useful when the main goal is to generate reproducible count matrices and QC outputs that can feed directly into downstream DEG workflows or the RNA-seq workflow page in this site.

Prerequisites

  • Source folder: RNAseq_nfcore_workflow
  • Main documentation: readme.md
  • Required software:
    • Nextflow
    • a supported container/runtime profile such as singularity
  • Required inputs:
    • FASTQ or fastq.gz files
    • a samplesheet.csv describing sample names, read files, and strandedness

Steps

Build the samplesheet with sample names, read files, and strandedness

The README expects an nf-core/rnaseq samplesheet with one row per library and explicit strandedness information.

sample,fastq_1,fastq_2,strandedness
CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz,forward
CONTROL_REP2,AEG588A2_S2_L002_R1_001.fastq.gz,AEG588A2_S2_L002_R2_001.fastq.gz,forward
TREATMENT_REP1,AEG588A4_S4_L003_R1_001.fastq.gz,,reverse

This is the most important workflow-specific contract: the pipeline behavior depends on the samplesheet being formatted correctly before any compute job is launched.

Launch nf-core/rnaseq either interactively or through Slurm

The committed guide uses Nextflow directly and shows both a simple command and a SLURM job script for OSC-style execution.

module load nextflow/24.10.4

nextflow run nf-core/rnaseq \
   --input samplesheet.csv \
   --outdir <OUTDIR> \
   --genome GRCh38 \
   -profile singularity
#!/bin/bash
#SBATCH --job-name=RNAseq
#SBATCH --mem=80G
#SBATCH --time=40:00:00

module load nextflow/24.10.4
nextflow run nf-core/rnaseq \
   --input samplesheet.csv \
   --outdir bulkRNA_pipeline_output \
   --genome GRCm38 \
   -profile singularity

The practical choice here is not between different workflow branches but between execution contexts: a direct shell launch for smaller runs or a scheduler submission pattern for longer cluster jobs.

Start downstream review with MultiQC, then move to merged counts

The README emphasizes the output tree rather than individual intermediate commands. The key directories are multiqc, fastqc, star_salmon, and trimgalore, with merged gene counts and DESeq2-ready artifacts under star_salmon.

outdir/
├── multiqc/
├── fastqc/
├── star_salmon/
│   ├── deseq2_qc/
│   ├── featurecounts/
│   ├── quant/
│   ├── merged_gene_counts/
│   └── all_sorted_BAM/
└── trimgalore/

For this page, the main operational takeaway is: start with multiqc, then move to the merged counts and DESeq2-oriented outputs for downstream analysis.

Hand off the count outputs to downstream RNA-seq analysis

The committed README stops at pipeline execution and output inspection, not differential expression itself. In practice, the main handoff is from star_salmon/merged_gene_counts/ and related QC outputs into downstream DEG, PCA, and enrichment workflows.

Gotchas / notes

  • This folder is README-driven and does not include a committed notebook or figure set, so the page stays concise.
  • The README uses example genomes (GRCh38, GRCm38); readers need to choose the right reference for their study.
  • Single-end data are allowed, but fastq_2 must be left empty in the samplesheet.
  • The methods paragraph includes a placeholder version string for nf-core/rnaseq, so users should record the real version used in their run.
  • The samplesheet examples mix single-end and paired-end rows, so readers should confirm that their own sheet matches the library structure they actually sequenced.

📄 View source on GitHub