R语言-rhdf5解析hdf5文件(.h5)展示文件组织结构和数据索引实现

简介: 本文简单示例了在R语言如何使用 `rhdf5` 软件包解析 .h5 文件的代码过程

.h5 数据格式是一种基于层次结构设计用于存储和管理大型科学数据的文件格式,可以存储多种类型的数据,包括数值、图像、文本等。h5数据格式是由HDF Group开发的,是HDF5【层级数据存储格式(HierarchicalDataFormat 5)】的缩写。HDF5可以方便地存储和管理大型数据集,有效提高数据读写效率,同时也可以保证数据的安全性和跨平台兼容性,在数据科学领域应用广泛。如生物信息学领域中的单细胞数据,h5数据格式已经成为了一种比较的数据存储格式。
h5数据存储结构

在一些单细胞文献中,作者通常会将保存为.h5格式的分析数据上传到GEO数据库,而不是我们常见的R语言工程文件【Rds,CSV,TSV...】。由于h5数据格式的组织结构比较复杂,因此在解析数据时需要对其组织结构有一定的了解。(注:在Seurat包中有现成的函数 Seurat::Read10X_h5()可以用来提取表达矩阵,但实际使用后发现无法从h5文件中提取更多的数据)。
GEO数据库

1、rhdf5 简介

在R语言中操作 HDF5 数据格式的推荐使用 “rhdf5” 软件包。它是基于h5py和hdf5 C库开发的,提供了一组函数,可以方便地读取和写入hdf5数据格式的文件,包括数据集、数据类型、属性等。本文示例使用 rhdf5 解析 .h5 文件的代码过程:

2、rhdf5 安装

install.packages("BiocManager");BiocManager::install("rhdf5");library(rhdf5)

3、rhdf5 解析H5格式

3.1 读取.h5文件 和 展示内容的组织结构

h5_file= H5Fopen("new.h5")
####如下所示,new.h5文件内创建了一个组(group1_mat)
#组内又创建了df和matrix两个层级用以保存矩阵和数据框
> h5dump(h5_file,load=FALSE)
$group1_mat
$group1_mat$df
  group name       otype   dclass dim
1     /   df H5I_DATASET COMPOUND   5

$group1_mat$matrix
  group   name       otype dclass   dim
1     / matrix H5I_DATASET  FLOAT 3 x 2

3.2 数据索引通过“\$”符进行

> h5_file$group1_mat$df
  C_1 C_2 C_3 name
1   3   5  69   xx
2   2   8  60   yy
3   8   4  92   gg
4   1   6  16   ll
5   7   4  25   mm

3.3 关闭hdf5文件

H5Fclose(h5_file)#关闭当前打开的hdf5文件
h5closeAll()#关闭所有打开的hdf5文件

4、rhdf5 创建H5文件

###准备数据
mdat <- matrix(c(0,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE,dimnames = list(c("row1", "row2"),c("C.1", "C.2", "C.3")))
df <- data.frame(C_1 = c(3,2,8,1,7),C_2 = c(5,8,4,6,4),C_3 = round(runif(n = 5), 2) * 100,name = c("xx","yy","gg",'ll','mm'))
mdat.spar <- Matrix::Matrix(mdat, sparse = TRUE)
my_array <- array(seq(0.1,2.0,by=0.1),dim=c(5,2,2))
my_list <- list(my_array[,,1],my_array[,,2])
my_string <- "This is one hdf structure file"
###构建.h5文件
h5createFile("new.h5")
# Saving matrix information.
h5createGroup("new.h5","group1_mat")
h5write(mdat, "new.h5", "group1_mat/matrix")
h5write(df, "new.h5", "group1_mat/df")
# Saving sparse_matrix information.
mdat.spar <- as(mdat, "dgCMatrix")
h5createGroup("new.h5","group2_sparseMTX")
h5write(mdat.spar@x, "new.h5", "group2_sparseMTX/data")
h5write(dim(mdat.spar), "new.h5", "group2_sparseMTX/shape")
h5write(mdat.spar@i, "new.h5", "group2_sparseMTX/indices") # already zero-indexed.
h5write(mdat.spar@p, "new.h5", "group2_sparseMTX/indptr")
# Saving array and list data
h5createGroup("new.h5","group3_aL")
h5write(my_list, "new.h5", "group3_aL/list")
h5write(my_array, "new.h5", "group3_aL/array")
# Saving string data
h5createGroup("new.h5","group4_string")
h5write(my_string, "new.h5", "group4_string/string")
h5closeAll()

Reference

rhdf5 - HDF5 interface for R (bioconductor.org)

目录
相关文章
|
3天前
|
数据可视化 数据挖掘
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
10 2
|
2天前
|
Linux Go 数据安全/隐私保护
Linux 中的文件属性解析
在 Linux 系统中,每个文件和目录有一组属性控制其操作和访问权限。了解这些属性对有效管理文件至关重要。文件属性包括:文件类型(如 `-` 表示普通文件,`d` 表示目录),权限(如 `rwx` 表示所有者权限,`r-x` 表示组和其他用户权限),所有者,组,硬链接数,文件大小和最后修改时间。通过 `chown` 和 `chmod` 命令可更改文件所有者、所属组及权限。此外,还有特殊权限(如 SUID、SGID)和 ACL(访问控制列表)提供更精细的访问控制。
|
2天前
|
数据可视化 数据挖掘
R语言用igraph对上海公交巴士路线数据进行复杂网络、网络图可视化
R语言用igraph对上海公交巴士路线数据进行复杂网络、网络图可视化
|
2天前
|
机器学习/深度学习 数据可视化
数据分享|R语言用RFM、决策树模型顾客购书行为的数据预测
数据分享|R语言用RFM、决策树模型顾客购书行为的数据预测
|
2天前
|
数据可视化 数据挖掘
数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法
数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法
|
2天前
|
数据可视化
R语言淮河流域水库水质数据相关性分析、地理可视化、广义相加模型GAM调查报告
R语言淮河流域水库水质数据相关性分析、地理可视化、广义相加模型GAM调查报告
|
2天前
数据分享|R语言回归模型诊断、离群值分析学生考试成绩、病人医护质量满意度、婴儿死亡率和人均收入、针叶树荫面积数据
数据分享|R语言回归模型诊断、离群值分析学生考试成绩、病人医护质量满意度、婴儿死亡率和人均收入、针叶树荫面积数据
|
2天前
|
机器学习/深度学习 数据可视化
R语言MCMC的lme4二元对数Logistic逻辑回归混合效应模型分析吸烟、喝酒和赌博影响数据
R语言MCMC的lme4二元对数Logistic逻辑回归混合效应模型分析吸烟、喝酒和赌博影响数据
|
2天前
|
算法 数据可视化 Python
【视频】逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法
【视频】逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法
25 1
|
2天前
|
机器学习/深度学习 算法 前端开发
【视频】为什么要处理缺失数据?如何用R语言进行缺失值填充?
【视频】为什么要处理缺失数据?如何用R语言进行缺失值填充?
11 1

热门文章

最新文章

推荐镜像

更多