这两天被seurat与scanpy之前的转换差点折腾断气了.......
电脑也差点干甭了......
SeuratDisk 和 MuDataSeurat 的各种坑.....
为什么要绞尽脑汁去debug别人的包?或许写包的人就是想折磨我们呢?与其在这些事情上浪费时间和精力,还不如自己搞一个?
数据转换的目的只有一个:
转换前后信息保持一致
有什么标准流程吗?
没有.....
于是.....
scBridge就这样出来了.....
🎯 为什么需要 scBridge?
作为单细胞分析人员,我们经常遇到这些困扰:
R和Python生态割裂:Seurat (R) 和 Scanpy (Python) 各有所长,但数据转换总是麻烦
SeuratDisk各种bug:转换失败、数据丢失、版本不兼容...
MuDataSeurat限制多:只支持部分功能,文档不清晰
手动转换太痛苦:写大量代码,还得处理格式问题
✨ scBridge
scBridge是一个专门解决 Seurat 和 AnnData (h5ad) 格式的双向转换问题而生。
吹牛X点说:双向自如,随意切换,想用R就用R,不想用了换python继续搞,看python不爽了,两行代码再回到R。
核心优势
🔄 双向转换:Seurat → h5ad 和 h5ad → Seurat
🐍 Python集成:完美配合 Scanpy 生态系统|
📦 零配置:自动管理临时文件,开箱即用
🔧 版本兼容:同时支持 Seurat v4 和 v5
🛡️ 稳定可靠:绕过已知bug,完整保留数据
🎯 简单易用: 只需两个函数:`seurat2py()` 和 `py2seurat()`
📦 快速安装
# 从GitHub安装
install.packages("remotes")remotes::install("xiaoqqjun/scBridge")
## 依赖要求
R包: Seurat (≥4.0.0), Matrix, reticulate Python模块:scanpy, pandas, numpy, scipy
# python 需要大家自行配置pip install scanpy pandas numpy scipy
🚀 使用示例
场景1:R → Python
源对象UMAP:
将你的 Seurat 分析结果发送给 Python 生态:
library(scBridge)# 一行代码搞定seurat2py(seurat_obj, "output.h5ad")
转换后我在python 绘图:
Python → R
我们再把它转回R,此时我们可以只需要找到这个文件的位置即可,操作还是在R:
library(scBridge)# 读入Rseurat_obj <- py2seurat("output.h5ad")# 继续Seurat分析DimPlot(seurat_obj, reduction = "umap")
table(test_obj$orig.ident)
names(test_obj@meta.data)
DimPlot(test_obj)
seurat2py(test_obj, "output.h5ad")
## 我们再把这个output.h5ad 转回来
test2rda <- py2seurat("output.h5ad")names(test2rda@meta.data)## 对比一下列名完全一致# 此时默认的Idents如果是SeuratProject,需要调整一下## 新版本这里我做了优化,没测试行不行:DimPlot(test2rda)## 可以设置我们之前的DimPlot(test2rda,group.by = "big_celltype")## 可能需要设置一下IdentsIdents(test2rda) <- test2rda$big_celltype
这是再转回来的UMAP.
地址:https://github.com/xiaoqqjun/scBridge
欢迎老铁们试用+建议!!