生信益站,一点就有益
!祝友友们天天开心,月月发 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 中,你可以使用以下函数来进行文件的读写操作:
参数说明:
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 文件。参数说明:
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 中,你可以使用以下函数来进行文件的读写操作:
参数说明:
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群 科研服务 您的关注、点赞、在看、转发
是对益站最大的鼓励和支持
哈