| name | bulkrna-de |
| description | Bulk RNA-seq differential expression analysis using PyDESeq2 with optional edgeR/limma-voom via rpy2. |
| version | 0.1.0 |
| author | OmicsClaw |
| license | MIT |
| tags | ["bulkrna","differential-expression","DESeq2","PyDESeq2","edgeR","limma"] |
| metadata | {"omicsclaw":{"domain":"bulkrna","emoji":"🔬","trigger_keywords":["bulk differential expression","bulk de","deseq2","bulk rna de","differentially expressed genes"]}} |
| source_reliability | [{"source":"https://github.com/owkin/PyDESeq2","description":"PyDESeq2 main repository maintained by Owkin/scverse; documents supported designs, installation paths, and CI coverage.","score":0.91,"rationale":"Official MIT-licensed implementation with 600+ stars, active releases (0.5.x, Feb 2026), and maintained test matrix for Python 3.11–3.13.\n"},{"source":"https://github.com/K-Dense-AI/claude-scientific-skills","description":"Provides the canonical SKILL.md template and automation guardrails adopted for OmicsClaw skills.","score":0.9,"rationale":"Enterprise-maintained skill pack from K-Dense AI; we mirror its metadata layout to stay interoperable with Claude Scientific Skills.\n"}] |
Bulk RNA-seq Differential Expression
Differential expression analysis for bulk RNA-seq count data. Primary engine is PyDESeq2 (a pure-Python re-implementation of DESeq2); falls back to a scipy Welch's t-test with Benjamini-Hochberg FDR correction when PyDESeq2 is not installed.
CLI Reference
python omicsclaw.py run bulkrna-de --demo
python omicsclaw.py run bulkrna-de --input <counts.csv> --output <dir>
python bulkrna_de.py --input counts.csv --output results/ --control-prefix ctrl --treat-prefix treat
python bulkrna_de.py --demo --output /tmp/bulkrna_de_demo
python bulkrna_de.py --input counts.csv --output results/ --method ttest --padj-cutoff 0.01 --lfc-cutoff 1.5
Why This Exists
- Without it: Researchers must manually install and configure DESeq2 in R, handle count normalization, dispersion estimation, and multiple-testing correction across thousands of genes.
- With it: A single Python command runs the full DESeq2 pipeline (via PyDESeq2), produces publication-ready volcano and MA plots, and exports filtered DE tables ready for downstream enrichment.
- Why OmicsClaw: Wraps the gold-standard negative-binomial GLM approach into the OmicsClaw reporting framework with automatic fallback to simpler statistics when dependencies are unavailable.
Workflow
- Load: Read a genes-by-samples raw count matrix (CSV with a
gene column and sample columns prefixed by condition).
- Partition: Split sample columns into control and treatment groups by prefix matching.
- Model: Fit a negative-binomial GLM per gene using PyDESeq2 (size-factor normalization, dispersion shrinkage, Wald test). Falls back to Welch's t-test with manual Benjamini-Hochberg FDR if PyDESeq2 is not available.
- Filter: Identify significant genes at the user-specified padj and log2FC cutoffs.
- Visualize: Generate volcano plot, MA plot, and DE summary bar chart.
- Report: Write markdown report, result.json, full and filtered DE tables, and a reproducibility script.
PyDESeq2 Enhancements Adopted
- Multi-factor + continuous covariates: Accept formulas like
~ batch + condition or ~ age + condition, mirroring the design support described in the PyDESeq2 repository (v0.5+) so users can adjust for confounders without leaving Python.
- Installer parity:
pip install pydeseq2 (PyPI) or ; OmicsClaw checks for either path at runtime before falling back to the Welch t-test.