🧬 R语言下 Seurat 与 Anndata 的快捷互读

Seurat 是 R 语言中最常用的单细胞分析框架,而 Anndata (.h5ad) 则是 Python 生态下 Scanpy 体系的核心数据格式。跨语言、多模态联合分析场景下,如何快速、安全地在二者之间互相转换,是很多科研人员面临的常见问题。

本文总结了在 R 语言环境下,如何利用 reticulateanndata 包,快速实现:

  • Anndata (.h5ad) 读取并转换为 Seurat 对象
  • Seurat 对象写出为 .h5ad 格式,便于 Python 环境读取

该方法无需中间文件转换,避免信息丢失,适用于空间转录组、单细胞多组学等多种数据类型。


✅ 1. 读取 .h5ad 文件并转换为 Seurat 对象

以下代码示例演示了如何直接在 R 中读取 .h5ad 文件,并转换为标准 Seurat 对象,同时保留常用降维信息(如 UMAP 坐标、空间坐标):

pacman::p_load(Seurat, reticulate, anndata, dplyr)
use_condaenv("<your conda env name which deploy Scanpy>", required = TRUE)

{
    adata.obj <- read_h5ad("<your anndata file>.h5ad")
    stRNA.obj <- CreateSeuratObject(counts = t(as.matrix(adata.obj$X)), meta.data = adata.obj$obs)
    
    ### 添加空间与降维信息
    {
        X_umap <- adata.obj$obsm$X_umap
        dimnames(X_umap) <- list(Cells(stRNA.obj), c("umap_1", "umap_2"))
        stRNA.obj[["umap"]] <- CreateDimReducObject(embeddings = X_umap, key = "UMAP_")

        spatial <- adata.obj$obsm$spatial
        dimnames(spatial) <- list(Cells(stRNA.obj), c("spatial_1", "spatial_2"))
        stRNA.obj[["spatial"]] <- CreateDimReducObject(embeddings = spatial, key = "spatial_")
    }
}

### 保存 Seurat 对象
stRNA.obj %>% qs::qsave("<your seurat file>.qs")

✅ 2. 将 Seurat 对象写出为 .h5ad 文件

依赖 scCustomize::as.anndata() 函数,可将 Seurat 对象直接写出为 .h5ad 格式,便于在 Python 端继续分析:

pacman::p_load(Seurat, reticulate, anndata, dplyr)
use_condaenv("<your conda env name which deploy Scanpy>", required = TRUE)

readRDS("<your seurat file>.Rds") %>% 
    scCustomize::as.anndata(x = ., assay = "RNA", 
                            file_path = ".", 
                            file_name = "<your anndata file>.h5ad", 
                            main_layer = "counts", 
                            other_layers = NULL
    )

✅ 3. 总结

该方法通过 reticulate 无缝桥接 Python 与 R 语言,结合 anndatascCustomize 工具,实现了:

  • 单细胞数据在 R/Python 生态间的高效、双向互读
  • 保留空间信息、降维结果,避免数据丢失
  • 支持多模态、空间组学、单细胞多组学等复杂数据结构
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容