Py学习  »  Python

支持 Seurat.V5!最新的【R & Python】单细胞数据转换工具~

生信益站 • 1 年前 • 1120 次点击  

生信益站,一点就有益祝友友们天天开心,月月发 CNS~


设我为🌟星标,每天就能第一时间看到推送啦~

easySCF

一种旨在增强 R 和 Python 之间单细胞数据互操作性的工具

通过支持无缝数据交换(HDF5 作为中介),easySCF 提高了单细胞数据分析的效率和准确性

为什么选择 easySCF

easySCF 使用统一的数据格式(.h5 格式)来促进 R 和 Python 平台之间的数据传输。该工具已针对数据处理速度、内存效率和磁盘使用率以及处理大规模单细胞数据集的能力进行了评估。

面对最新版本的 Seurat v5、大规模数据(eg:上百万的细胞)和空间转录组数据,现有的数据格式转换包不太适合实际的数据分析过程。

数据转换示意图

为了解决这个问题并更好地利用 Seurat 和 Scanpy 的不同数据格式,研究人员开发了一种数据格式转换工具,允许研究人员在 Seurat 和 Scanpy 之间无缝切换数据。该工具不仅增强了数据分析的灵活性,还促进了不同研究团队之间的数据共享和协作。借助该工具,研究人员可以充分利用 Seurat 和 Scanpy 的优势,从而对单细胞数据进行更有效的分析和解释。

为什么选 HDF5 作为中介数据存储格式?

选择 HDF5(分层数据格式版本 5)作为中介数据存储格式,并将数据存储为.h5 文件这一选择基于以下几个关键原因和优点

1、分层数据管理:HDF5 格式允许在单个文件内创建复杂的分层结构,将数据组织为组和子组。这特别适合存储单细胞 RNA 测序数据,促进高效管理和访问。

2、数据存储效率:HDF5 是一种高效的数据存储格式,专为处理大规模数据集而设计。其结构化数据存储方法可以在同一文件中存储大量不同的数据集,同时确保快速的数据读写速度。

数据存储结构示意图

3、跨平台兼容性:HDF5 格式支持多种编程语言,可以跨不同软件环境无缝读写。这极大地方便了 Seurat 和 Scanpy 之间的数据转换。研究人员可以使用 Seurat 在 R 环境中对数据进行预处理和分析,然后使用 Scanpy 将数据转换为 HDF5 格式以便在 Python 环境中进一步分析,反之亦然。

a)数据读取时间示意图。b)数据保存时间示意图。c)内存使用示意图。d)磁盘空间使用情况示意图

因此,通过选择 HDF5 作为中间存储格式,将数据存储为.h5 文件,为单细胞 RNA 测序数据格式的转换提供了坚实的基础


本文档介绍了如何在 R 和 Python 中进行文件读写操作。在 R 中和 Python 中的读写操作都很简单,均只需使用一句代码即可完成。

安装 easySCF

在 R 和 Python 中,你可以使用以下命令安装 easySCF:

install.packages("devtools")
devtools::install_github("xleizi/easySCF/r")
!pip install easySCFpy

R 中的读写

R 中的读取

在 R 中,你可以使用以下函数来进行文件的读写操作:

  • loadH5():用于读取 H5 文件。

参数说明:

  • FileName: 字符串,必需。指定要加载的 HDF5 文件的路径。
  • assay: 字符串,默认为 "RNA"。指定在 HDF5 文件中要访问的 layers 类型。
  • SeuratVersion: 默认由 checkSeuratVersion() 提供。这决定了加载数据时使用的 Seurat 对象的版本。
  • image_name: 字符串,默认为 "Spatial"。用于标识图像数据的名称(如果有的话)。
  • useBPcells: 布尔值,默认为 FALSE。是否使用 BPcells 来储存数据。
  • useDisk: 布尔值,默认为 TRUE。BPcells 数据是否使用磁盘存储来优化内存使用。
  • calData: 布尔值,默认为 TRUE。是否在加载数据后计算 normalization。
  • calScale: 布尔值,默认为 FALSE。是否对数据进行 scale。
  • calFeatures: 布尔值,默认为 FALSE。是否计算高变基因。
  • group_by: 默认为 NULL。用于指定分组变量,常用于后续分析中区分不同的数据子集。
  • readType: 字符串,默认为 "Seurat"。指定读取数据的方式或格式,通常与分析软件对应。

以下是一个简单的示例,展示了如何使用这些函数:

library(easySCFr)
sce "data.h5")

R 中的写入

在 R 中,你可以使用以下函数来进行文件的读写操作:

  • saveH5():用于保存 Seurat 对象到 H5 文件。

参数说明:

  • data: 必需。要保存的 Seurat 对象。
  • FileName: 字符串,必需。指定保存文件的路径和名称。
  • assay: 字符串,默认为 "RNA"。指定保存文件中包含的 layers 数据类型。
  • save_graph: 布尔值,默认为 TRUE。是否保存细胞间联系的数据。
  • SeuratVersion: 默认由 checkSeuratVersion() 提供。这决定了保存数据时使用的 Seurat 对象的版本。
  • image_name: 字符串,默认为 NULL。如果提供,指定与数据关联的图像文件的名称。
  • split_save: 布尔值,默认为 TRUE。是否将数据分割成多个子集来保存,适用于非常大的数据集。
  • max_cells_per_subset: 整数,默认为 5000。在分割保存时,每个子集包含的最大细胞数。

以下是一个简单的示例,展示了如何使用这些函数:

library(easySCFr)
saveH5(sce, "data.h5")

Python 中的读写

Python 中的读取

在 Python 中,你可以使用以下函数来进行文件的读写操作:

  • loadH5():用于读取 H5 文件。

参数说明:

  • filename: str | Path,必需。指定要加载的 HDF5 文件的路径。
  • assay: str,默认为 "RNA"。指定要从 HDF5 文件中读取的 layers 数据类型。
  • datatype: str,默认为 "scanpy"。指定数据的格式,可保存为不同类型的数据。
  • image_name: str | None,可选。如果提供,指定与数据关联的图像文件的名称。
  • backed: bool | Literal['r', 'r+'] | None,可选。指定文件的读取模式,'r' 为只读模式,'r+' 为读写模式,None 表示全部载入内存。
  • as_sparse: Sequence[str],默认为 "raw/X"。指定哪些数据应以稀疏矩阵格式存储。
  • as_sparse_fmt: type[spmatrix],默认为 sparse.csr_matrix。定义保存的稀疏矩阵的格式,不建议修改。

以下是一个简单的示例,展示了如何使用这些函数:

from easySCF import loadH5
sce = loadH5("data.h5")

Python 中的写入

在 Python 中,你可以使用以下函数来进行文件的读写操作:

  • saveH5():用于保存 Seurat 对象到 H5 文件。

参数说明:

  • adata: Any,必需。要保存的 AnnData 对象。
  • h5_path: Path | str,必需。HDF5 文件的保存路径。
  • assay: str,默认为 "RNA"。指定 layers 数据类型。
  • datatype: str,默认为 "scanpy"。指定数据的格式。
  • image_name: str,默认为 "slice"。指定与数据关联的图像文件的名称。
  • save_graph: bool,默认为 True。是否保存细胞间联系的数据。
  • as_dense: Sequence[str],默认为空元组。手动指定哪些数据字段应以密集矩阵格式保存。
  • split_save: bool,默认为 True。是否将数据分割成多个子集进行保存,这通常用于非常大的数据集。
  • max_cells_per_subset: int,默认为 5000。指定每个子集最多包含的细胞数。
  • compression: Literal['gzip', 'lzf'] | None,默认为 "gzip"。指定使用的压缩算法。
  • compression_opts: int | None,可选。提供压缩算法的具体参数。

以下是一个简单的示例,展示了如何使用这些函数:

from easySCF import saveH5
saveH5(sce, "data.h5")

代码可用性

easySCF 是一个开源软件包,其实现细节和文档可在 [ https://github.com/xleizi/easySCF ] 上找到。

参考文章

Haoyun Zhang, Wentao Zhang, Shuai Zhao, Guangyu Xu, Yi Shen, Feng Jiang, An Qin, Lei Cui, easySCF: A Tool for Enhancing Interoperability Between R and Python for Efficient Single-Cell Data Analysis, Bioinformatics, 2024;, btae710, https://doi.org/10.1093/bioinformatics/btae710


OK,今天的分享到此为止。咱们明天见~

联系站长

本篇文章有疑问 ,或者有科研服务需求的友友可以在益站发消息留言,也欢迎各位童鞋扫下面的二维码加入我们的 QQ 交流群。

最新QQ群

科研服务

您的关注、点赞、在看、转发是对益站最大的鼓励和支持

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/176333