Differential Expression
SkillMediaBulk transcriptomics differential expression with count-aware modeling, design validation, contrast handling, thresholded exports, and publication-ready DE figures.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Differential Expression skill
What this skill tells your AI
The instructions your AI receives, as published by biotender-max/awesome-bio-agent-skills in skills/bioclaw/differential-expression/SKILL.md and read by ahel’s review.
Version Compatibility
Reference examples assume:
pydeseq20.4+pandas2.2+numpy1.26+matplotlib3.8+
Verify before use:
- Python:
python -c "import pydeseq2, pandas; print(pydeseq2.__version__, pandas.__version__)"
Overview
Use this skill for count-based DE from bulk RNA-seq or similar count matrices when the user needs:
- robust model fitting
- explicit contrasts
- ranked gene tables
- volcano and MA plots
- pathway-ready output tables
When To Use This Skill
- raw count matrix and sample metadata are available
- the task is condition, treatment, or genotype comparison
- batch or pairing terms may need explicit modeling
Quick Route
- no replicates: do not pretend formal DE is robust
- 2 replicates per group: possible but conservative interpretation
- 3 or more replicates per group: standard starting point
Progressive Disclosure
- Read technical_reference.md for design formulas, confounding checks, and contrast logic.
- Read commands_and_thresholds.md for PyDESeq2 code, recommended filters, and output file conventions.
Prerequisites
| Requirement | Recommendation |
|---|---|
| minimum replicates per group | >= 2 |
| preferred replicates per group | >= 3 |
| input values | raw integer counts |
Expected Inputs
- raw count matrix
- sample metadata
- explicit contrast such as treated vs control
Expected Outputs
results/de_results.tsvresults/de_ranked_genes.tsvfigures/volcano.pdffigures/ma_plot.pdfqc/sample_pca.pdf
Starter Pattern
from pydeseq2.dds import DeseqDataSet
from pydeseq2.ds import DeseqStats
dds = DeseqDataSet(
counts=counts_df,
metadata=metadata_df,
design_factors=["condition", "batch"],
)
dds.deseq2()
stats = DeseqStats(dds, contrast=("condition", "treated", "control"))
stats.summary()
res = stats.results_df.sort_values("padj")
res.to_csv("results/de_results.tsv", sep="\t")
Workflow
1. Validate the design
Check:
- replicate counts
- factor levels
- batch balance
- paired structure
- confounded variables
2. Fit a count-aware model
Use raw counts, not TPM or log-normalized expression, for count-based DE frameworks.
3. Apply explicit filtering and ranking
Common reporting thresholds:
padj < 0.05abs(log2FoldChange) >= 1
Export both the full table and a thresholded table.
4. Visualize results
At minimum:
- sample PCA
- volcano plot
- MA plot
5. Export pathway-ready artifacts
Produce a ranked gene list sorted by signed effect or Wald statistic for enrichment workflows.
Output Artifacts
results/
├── de_results.tsv
├── de_significant.tsv
└── de_ranked_genes.tsv
figures/
├── sample_pca.pdf
├── volcano.pdf
└── ma_plot.pdf
qc/
└── design_check.tsv
Quality Review
- raw counts only for model fitting
- no fully confounded batch and condition
- outlier samples reviewed before publication claims
- all final tables should include
baseMean,log2FoldChange,pvalue, andpadj
Anti-Patterns
- running DE on TPM as if it were count-based
- omitting batch or pairing terms that clearly exist
- showing only thresholded genes and hiding the full table
- using p-value alone without effect size
Related Skills
- Bulk RNA Expression
- RNA Quantification
- Pathway Analysis
Optional Supplements
pydeseq2
Signals
- GitHub stars
- 178
- Forks
- 32
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
differential-expression- Source
- github.com/biotender-max/awesome-bio-agent-skills