I built a Python wrapper for DESeq2/edgeR/limma so you never write rpy2 again
I got tired of writing 40 lines of rpy2 boilerplate every time I needed to call DESeq2 from Python. So I built rosetta-bioc - pandas in, pandas out, one line:
pip install rosetta-bioc
import rosetta as rb
results = rb.deseq2(counts_df, metadata_df, design="~ condition")
results.report()
DESeq2 Results Summary
──────────────────────────────
Total genes tested: 12,000
Significant (padj<0.05): 843 (7.0%)
↑ Upregulated: 428
↓ Downregulated: 415
It wraps DESeq2, edgeR, limma, and clusterProfiler. Calls the real R code - nothing reimplemented. MIT-licensed.
You can also compare methods in one call:
consensus = rb.pipelines.compare(counts, metadata)
robust_genes = consensus[consensus["n_methods"] == 3]
Try it without R installed: python -m rosetta runs a self-contained demo.
GitHub: https://github.com/rosetta-bioc/rosetta
PyPI: https://pypi.org/project/rosetta-bioc/
This came out of a GSoC 2026 project. Feedback and PRs welcome - especially if you have wrappers you wish existed!
Posted Jun 11, 2026, 10:27 PM UTC
08