deseq2-differential-expression
Bulk RNA-seq DE with R/Bioconductor DESeq2. Negative binomial GLM, empirical Bayes shrinkage, Wald/LRT tests, multi-factor designs, Salmon tximeta import, apeglm LFC shrinkage, MA/volcano/heatmap viz. R gold standard. Use pydeseq2-differential-expression for Python; use edgeR for TMM normalization.
npx skills add BioTender-max/awesome-bio-agent-skills --skill deseq2-differential-expression --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
Guides an agent to perform bulk RNA-seq differential expression analysis using DESeq2 in R. It describes fitting a negative binomial GLM per gene, applying empirical Bayes dispersion shrinkage, and testing with Wald or likelihood ratio tests. It includes importing Salmon data via tximeta/tximport, performing apeglm LFC shrinkage, and generating MA, volcano, and heatmap visualizations. It notes use of pydeseq2-differential-expression for Python pipelines and edgeR for TMM normalization.
How it works
- Load a count matrix and sample metadata, ensure proper design formula (e.g., ~ condition, with possible batch).
- If Salmon is used, import with tximeta and summarize to gene level, then build a DESeqDataSet and design.
- Pre-filter genes with low counts, apply variance-stabilizing transformation for QC, and inspect PCA.
- Run DESeq() to perform normalization (size factors), dispersion estimation, and GLM fitting.
- Extract results with results(), specifying contrast and alpha; use independent filtering.
- Apply apeglm LFC shrinkage with lfcShrink() for visualization and ranking, keeping padj from unshrunk results for significance.
- Export full results, shrunk results, and a filtered set of significant genes.
- Visualize with MA plot (shrunk LFC), Volcano plot, and a heatmap of top DE genes.
- Demonstrate handling of multi-factor designs and interaction terms, including batch correction and genotype×condition interaction, and optional LRT for complex designs.
When to use it
- To identify differentially expressed genes between two conditions in bulk RNA-seq data.
- When the design includes multiple factors such as batch or covariates, or when interaction terms are of interest.
- When importing Salmon outputs via tximeta/tximport for gene-level analysis.
- When wanting LFC shrinkage with apeglm for ranking and visualization.
- When integrating results with downstream analyses (pathway enrichment, etc.).
- When using Python-based pipelines via pydeseq2-differential-expression or edgeR for alternative normalization approaches.
What it can touch
- Data: raw count matrix (gene rows × sample columns) and sample metadata.
- External tools and packages: DESeq2, tximeta, tximport, apeglm, EnhancedVolcano, pheatmap, ggplot2, dplyr, vST, and pydeseq2-differential-expression as specified.
- Outputs: R objects and CSV/CSV-like results including ddesq2_all_results.csv, deseq2_shrunk_results.csv, deseq2_significant.csv, heatmap_top50.pdf, volcano_plot.pdf, and pca_plot.pdf.
Caveats
- License is LGPL-3.0; use within allowed terms.
- Describes NEB and empirical Bayes shrinkage as core concepts; specific limitations or caveats about samples or filtering are not enumerated beyond standard pre-filtering and independent filtering.
- No outcomes promised; results depend on data and design.
# DESeq2 Differential Expression Analysis (R/Bioconductor) ## Overview DESeq2 is the Bioconductor R package for differential gene expression analysis from bulk RNA-seq count data. It fits a negative binomial generalized linear model per gene, estimates dispersion parameters using empirical Bayes shrinkage across genes, and tests differential expression using Wald tests (two-group) or likelihood ratio tests (complex designs). DESeq2 is the R gold standard for RNA-seq DE analysis, with native Bioconductor integration for seamless import from Salmon (tximeta/tximport), featureCounts, or HTSeq. ## When to Use - Identifying differentially expressed genes between two experimental conditions (treated vs. control, disease vs. healthy) from bulk RNA-seq count data - Analyzing multi-factor designs that account for batch effects or covariates (e.g., `~ batch + condition`) - Testing complex hypotheses with interaction terms (e.g., time × treatment) or reduced models using likelihood ratio tests (LRT) - Importing Salmon pseudoalignment output via tximeta or tximport for transcript-level uncertainty propagation - Performing LFC shrinkage with apeglm for ranked gene lists, volcano plots, and down
- Overview
- When to Use
- Prerequisites
- Quick Start
- Workflow
- Step 1: Prepare Count Matrix and Sample Metadata
- Step 2: Import from Salmon via tximeta
- Step 3: Pre-Filtering and Quality Control
- Step 4: Run DESeq() — Normalization, Dispersion, and Model Fitting
- Step 5: Extract Results and Apply FDR Correction
- Step 6: LFC Shrinkage with apeglm
- Step 7: Visualize — MA Plot, Volcano Plot, and Heatmap
- Step 8: Multi-Factor Design and Interaction Terms
- Key Parameters
What does the deseq2-differential-expression skill do?
Bulk RNA-seq DE with R/Bioconductor DESeq2. Negative binomial GLM, empirical Bayes shrinkage, Wald/LRT tests, multi-factor designs, Salmon tximeta import, apeglm LFC shrinkage, MA/volcano/heatmap viz. R gold standard. Use pydeseq2-differential-expression for Python; use edgeR for TMM normalization.
How do I install it?
Run `npx skills add BioTender-max/awesome-bio-agent-skills --skill deseq2-differential-expression --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From BioTender-max/awesome-bio-agent-skills, a repository with 144 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
