经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » R语言 » 查看文章
R语言rhdf5读写hdf5并展示文件组织结构和索引数据
来源:jb51  时间:2022/6/27 14:14:03  对本文有异议

前言

h5只是一种简单的数据组织格式【层级数据存储格式(HierarchicalDataFormat:HDF)】,该格式被设计用以存储和组织大量数据。

在一些单细胞文献中,作者通常会将分析的数据上传到GEO数据库保存为.h5格式文件,而不是我们常见的工程文件(rds文件,表格数据等),所以为了解析利用这些数据需要对hdf5格式的组织结构有一定的了解。

(注:在Seurat包中有现成的函数Seurat::Read10X_h5()可以用来提取表达矩阵,但似乎此外无法从h5文件中提取更多的信息)。

GEO数据库

在R语言中对HDF5进行操作的软件包为rhdf5

安装

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

打开.h5文件 和 展示内容的组织结构

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

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

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

关闭hdf5文件

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

构建自己的hdf5文件

  1. ###准备数据
  2. 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")))
  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'))
  4. mdat.spar <- Matrix::Matrix(mdat, sparse = TRUE)
  5. my_array <- array(seq(0.1,2.0,by=0.1),dim=c(5,2,2))
  6. my_list <- list(my_array[,,1],my_array[,,2])
  7. my_string <- "This is one hdf structure file"
  8. ###构建.h5文件
  9. h5createFile("new.h5")
  10. # Saving matrix information.
  11. h5createGroup("new.h5","group1_mat")
  12. h5write(mdat, "new.h5", "group1_mat/matrix")
  13. h5write(df, "new.h5", "group1_mat/df")
  14. # Saving sparse_matrix information.
  15. mdat.spar <- as(mdat, "dgCMatrix")
  16. h5createGroup("new.h5","group2_sparseMTX")
  17. h5write(mdat.spar@x, "new.h5", "group2_sparseMTX/data")
  18. h5write(dim(mdat.spar), "new.h5", "group2_sparseMTX/shape")
  19. h5write(mdat.spar@i, "new.h5", "group2_sparseMTX/indices") # already zero-indexed.
  20. h5write(mdat.spar@p, "new.h5", "group2_sparseMTX/indptr")
  21. # Saving array and list data
  22. h5createGroup("new.h5","group3_aL")
  23. h5write(my_list, "new.h5", "group3_aL/list")
  24. h5write(my_array, "new.h5", "group3_aL/array")
  25. # Saving string data
  26. h5createGroup("new.h5","group4_string")
  27. h5write(my_string, "new.h5", "group4_string/string")
  28. h5closeAll()

参考官方说明 rhdf5 - HDF5 interface for R (bioconductor.org)

以上就是R语言rhdf5读写hdf5并展示文件组织结构和索引数据的详细内容,更多关于R语言rhdf5读写hdf5的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号