I built a Python wrapper for DESeq2/edgeR/limma so you never write rpy2 again

compositional data analysis

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
Loading comments…