rnaseq-de

Differential expression analysis for bulk RNA-seq and pseudo-bulk count matrices with QC, PCA, and contrast testing.

🧬 RNA-seq Differential Expression

This skill performs differential expression on bulk RNA-seq or pseudo-bulk count matrices.

Core Capabilities

  1. Input validation for count matrix and sample metadata
  2. Pre-DE QC (library size, detected genes, low-count filtering)
  3. PCA visualisation on normalized expression
  4. Differential expression from formula + contrast
  5. Volcano and MA plots
  6. Markdown report with reproducibility files

Input Contract

  • Count matrix (.csv or .tsv): rows are genes, columns are samples, first column is gene identifier
  • Metadata table (.csv or .tsv): one row per sample, must include sample_id
  • Formula: e.g. ~ condition or ~ batch + condition
  • Contrast: factor,numerator,denominator (e.g. condition,treated,control)

Output Structure

rnaseq_de_report/
ā”œā”€ā”€ report.md
ā”œā”€ā”€ figures/
│   ā”œā”€ā”€ pca.png
│   ā”œā”€ā”€ volcano.png
│   └── ma_plot.png
ā”œā”€ā”€ tables/
│   ā”œā”€ā”€ qc_summary.csv
│   ā”œā”€ā”€ normalized_counts.csv
│   └── de_results.csv
└── reproducibility/
    ā”œā”€ā”€ commands.sh
    ā”œā”€ā”€ environment.yml
    └── checksums.sha256

Usage

python rnaseq_de.py \
  --counts counts.csv \
  --metadata metadata.csv \
  --formula "~ batch + condition" \
  --contrast "condition,treated,control" \
  --output report_dir

Safety

  • Local-only processing
  • Warn before overwriting existing output
  • Report-level disclaimer required