||
anndataR:提升单细胞转录组学中R和Python的互操作性
在单细胞转录组学领域,存在三个主要的分析生态系统:scverse、Seurat和 Bioconductor,每个生态系统都定义了自己的内存数据格式。Bioconductor 使用的 SingleCellExperiment 对象和 Seurat 对象,是用 R 实现的,而 scverse 的 AnnData 对象是基于 Python 的。
每个生态系统在单细胞转录组(scRNA-seq)数据分析方面都有其特定的优势,最佳实践和基准建议结合不同生态系统的工具,以获得 scRNA-seq 数据的最佳处理流程。例如,Seurat 可以轻松适应多模态检测,而 Bioconductor 提供了对广泛统计工具的便捷访问,scverse 则利用了可扩展性和对机器学习生态系统的访问。除此之外,不同生态系统在基本功能(例如 PCA)上的微小实现差异可能导致显著不同的结果。因此,用户可能需要在不同分析步骤之间切换数据格式,甚至编程语言,以执行不同分析步骤或复制现有分析。不幸的是,这并不简单,在尝试将数据在不同格式之间转换时会出现一系列问题。这些问题源于 a)数据格式之间的结构差异和 b)不同的编程语言。
结构差异
这三种数据格式都是为了处理单细胞转录组数据而开发的,但它们采用了不同的方法并以不同的方式构建其对象。例如,AnnData 对象包含一个 varm 槽,用于存储多维变量注释(如 PCA 载荷),而 SingleCellExperiment 和 Seurat 则将此信息作为细胞降维对象的元数据存储。Seurat 对象也没有 AnnData varp 槽的对应槽位,该槽位用于成对变量水平注释。Seurat 和 SingleCellExperiment 还可以存储多模态数据,而 AnnData 则无法实现这一点。此外,这些框架在矩阵方向约定上存在差异。AnnData 采用观察值(细胞)在行、特征(基因)在列的布局。相反,SingleCellExperiment 和 Seurat 则将这些矩阵实现为细胞在列、基因在行。由于这些结构差异,正确转换格式需要深入理解每个对象及其相关的存储约定,这对在不同生态系统间迁移的用户来说构成了障碍。
不同的编程语言
不同的编程语言也增加了互操作性的复杂性。Seurat 和 Bioconductor 是用 R 编写的,而 scverse 是用 Python 编写的。如前所述,要优化分析单个数据集,需要这两种编程语言中的工具。为了解决这个问题,scverse 生态系统中的另外两种核心数据结构具有一定的跨语言互操作性:MuData,专为多模态数据设计,提供了 R 和 Julia 的实现版本,以及 SpatialData与 R 开发者保持积极的合作。对于单细胞转录组学分析有许多软件包可以促进不同对象之间的转换。它们使用多种方法在编程语言之间传输数据:它们要么使用所谓的异构函数接口(FFI)在交互式会话期间在不同语言之间传输信息,要么将数据写入和从磁盘读取。
像 reticulate或 rpy2这样的 FFI(外部函数接口)允许用一种语言编写的程序调用或使用用另一种语言编写的函数。这使用户能够灵活地调用外部函数,并根据需要将数据从原生语言传输到外部语言。然而,这种方法存在一些局限性。它仅限于内置数据类型(如向量、列表或整数),需要管理 Python 和 R 两种环境,并且对外部函数接口的简单使用可能导致内存使用过度。使用 FFI 来促进与单细胞特定数据格式交互的软件包包括 anndata2ri和 dynverse/anndata。
第二种方法,处理一个中间存储在磁盘上的对象,需要一个在两种语言中都可访问的标准磁盘格式。虽然引入了一个共享标准 loom,但它并未被社区完全采纳。基于 HDF5(The HDF Group)的 AnnData H5AD 格式已成为 Python 用户和一些公共存储库中的事实标准,而 R 对象通常保存为非互操作的二进制 Rds 文件。为解决这一问题,rds2py、alabaster和 dolomite等包提供了读取和写入 Python 中 SingleCellExperiment 对象的方法。SeuratDisk提供了一种将 Seurat 对象保存为可互操作 HDF5 文件的方法。
其他包,包括 sceasy和 zellkonverter,结合了这些方法,使 H5AD 文件在 R 中可用。它们允许读取和写入 H5AD 文件到 Seurat 或 SingleCellExperiment 对象,但这是通过使用 reticulate 软件包(一个 FFI)来实现的,该软件包在转换格式之前使用 Python anndata 包读取 H5AD 文件。这种方法只能部分减轻使用这些 FFI的负担。即使所有分析都在 R 中完成,R 用户(或包维护者)仍然需要维护一个 Python 环境,并注意内存中的数据重复。从 Python 到 R 的数据类型转换也可能比从磁盘读取 HDF5 文件时需要的转换更繁琐。
为了克服这些限制,Deconinck等人引入了 anndataR(图1,https://bioconductor.org/packages/anndataR/),这是一个新的软件包,它允许在 R 中直接读取和写入 H5AD 文件,无需 Python 环境,提供 R AnnData 对象,并促进与其他数据格式的转换。anndataR 是由 scverse 和 Bioconductor 社区成员共同构思和开发的,他们共同识别了当前互操作性环境中的不足之处。
anndataR 的独特之处在于它能够在 R 中直接读取和写入 H5AD 文件,并将其转换为 SingleCellExperiment 或 Seurat 对象。通过避免 FFI(外部函数接口),anndataR 避免了与之相关的许多挑战。它提供的转换功能弥合了在两个生态系统之间,anndataR 提供了合理的默认设置,并允许高级用户进行细粒度控制。anndataR 使用户可以直接访问 R AnnData 表示,从而可以直接与对象交互,以解决转换问题,并促进轻松提取数据的相关部分。

图1 功能概览和展示如何在分析工作流程中使用 anndataR
参考文献
[1] Louise Deconinck, Luke Zappia, Robrecht Cannoodt, Martin Morgan, scverse core, Isaac Virshup, Chananchida Sang-Aram, Danila Bredikhin, Brian Schilder, Ruth Seurinck, Yvan Saeys. anndataR improves interoperability between R and Python in single-cell transcriptomics. bioRxiv 2025.08.18.669052; doi: https://doi.org/10.1101/2025.08.18.669052
以往推荐如下:
5. EMT标记物数据库:EMTome
8. RNA与疾病关系数据库:RNADisease v4.0
9. RNA修饰关联的读出、擦除、写入蛋白靶标数据库:RM2Target
13. 利用药物转录组图谱探索中药药理活性成分平台:ITCM
19. 基因组、药物基因组和免疫基因组水平基因集癌症分析平台:GSCA
22. 研究资源识别门户:RRID
24. HMDD 4.0:miRNA-疾病实验验证关系数据库
25. LncRNADisease v3.0:lncRNA-疾病关系数据库更新版
26. ncRNADrug:与耐药和药物靶向相关的实验验证和预测ncRNA
28. RMBase v3.0:RNA修饰的景观、机制和功能
29. CancerProteome:破译癌症中蛋白质组景观资源
30. CROST:空间转录组综合数据库
31. FORGEdb:候选功能变异和复杂疾病靶基因识别工具
33. CanCellVar:人类癌症单细胞变异图谱数据库
36. SCancerRNA:肿瘤非编码RNA生物标志物的单细胞表达与相互作用资源
37. CancerSCEM 2.0:人类癌症单细胞表达谱数据资源
38. LncPepAtlas:探索lncRNA翻译潜力综合资源
40. MirGeneDB 3.0:miRNA家族和序列数据库
41. RegNetwork 2025:人类和小鼠基因调控网络整合数据库
42. CircTarget:多种细胞类型circRNA调控综合数据库
43. GreenCells:植物lncRNA单细胞分析资源
44. RM2Target 2.0:RNA修饰的写入者、擦除者和读取者靶基因数据库

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2026-3-29 15:03
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社