biotender-max/differential-expression
Bulk transcriptomics differential expression with count-aware modeling, design validation, contrast handling, thresholded exports, and publication-ready DE figures.
npx skills add https://github.com/BioTender-max/awesome-bio-agent-skills --skill differential-expression
Reference examples assume:
pydeseq2 0.4+pandas 2.2+numpy 1.26+matplotlib 3.8+Verify before use:
python -c "import pydeseq2, pandas; print(pydeseq2.__version__, pandas.__version__)"Use this skill for count-based DE from bulk RNA-seq or similar count matrices when the user needs:
| Requirement | Recommendation |
|---|---:|
| minimum replicates per group | >= 2 |
| preferred replicates per group | >= 3 |
| input values | raw integer counts |
results/de_results.tsvresults/de_ranked_genes.tsvfigures/volcano.pdffigures/ma_plot.pdfqc/sample_pca.pdffrom 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")
Check:
Use raw counts, not TPM or log-normalized expression, for count-based DE frameworks.
Common reporting thresholds:
padj < 0.05abs(log2FoldChange) >= 1Export both the full table and a thresholded table.
At minimum:
Produce a ranked gene list sorted by signed effect or Wald statistic for enrichment workflows.
results/
├── de_results.tsv
├── de_significant.tsv
└── de_ranked_genes.tsv
figures/
├── sample_pca.pdf
├── volcano.pdf
└── ma_plot.pdf
qc/
└── design_check.tsv
baseMean, log2FoldChange, pvalue, and padjpydeseq2Take biotender-max/differential-expression from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.