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.
SkillScore91Maintained
Automatic
◆Research pack
Last verified 9/3/2026
What it changes
Passed 20 of 22 test cases with the skill, and 16 of 22 without it.
Without skill73%
With skill91%
Checks it passed that the model alone missed
The script calls vst() with parameter blind = TRUE.
The script calls results() prior to calling lfcShrink().
The lfcShrink() call passes the unshrunk results object into res.
and 2 more in the full report
4 fixed16 passed either way2 still failing0 broke
Pass-rate lift
+18 pp
Tokens
+292%
Agent turns
0%
Response time
-6%
Model gemini-3.6-flashMeasured 9/3/2026v2 · latest is v320 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
See it in action
One of 4 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 4
Prompt
I have an RNA-seq count matrix file (counts.csv) and sample metadata (metadata.csv) comparing treated vs control samples. Can you write an R script using DESeq2 to run differential gene expression? I need the code to load the data, handle low-count filtering, estimate dispersions, run statistical testing, perform log-fold change shrinkage for better visualization, and export both full and filtered result tables along with a sample PCA plot.
What was checked, without and with the skill
Checked
Without skill
With skill
The script calls results() prior to calling lfcShrink().
Missed
Passed
The script calls vst() with parameter blind = TRUE.
Missed
Passed
The script calls plotPCA() to generate the sample PCA plot.
Passed
Passed
case-01 · gemini-3.6-flash · 9/3/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
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 downstream pathway analysis
Conducting time-series experiments or any design with more than two levels requiring model comparison
Working in an R/Bioconductor ecosystem where integration with SummarizedExperiment, clusterProfiler, or EnhancedVolcano is needed
Use pydeseq2-differential-expression instead for Python-based pipelines with the same statistical model
Use edgeR for negative binomial DE with TMM normalization, quasi-likelihood F-tests, or TREAT testing
Use omics-plotting SKILL after DE and for publication-quality plots of DESeq2 results
Use gseapy-gene-enrichment SKILL after DE to interpret results at the pathway level
Prerequisites
R packages: DESeq2 (Bioconductor), tximeta or tximport (Salmon import), apeglm (LFC shrinkage), pheatmap, ggplot2, EnhancedVolcano
Data requirements: Raw (unnormalized) integer count matrix — gene rows × sample columns — plus a sample metadata data frame with matching column names. If using Salmon: per-sample quant.sf files and a transcript-to-gene mapping