You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中读取ARCHS4的HDF5文件时出现H5Identifier无效错误怎么办?

问题描述

我下载了ARCHS4的28G人类HDF5文件(archs4_gene_human_v2.1.2.h5),想要从中提取表达数据和分组信息。执行以下代码时抛出错误:

h5_exprs <- h5read("archs4_gene_human_v2.1.2.h5", "data/expression")

Error (scratch_11.R#9): Error in h5checktype(). H5Identifier not valid.

但运行h5ls("archs4_gene_human_v2.1.2.h5")可以正常显示文件结构,输出如下:

group                  name       otype  dclass            dim
0              /                  data   H5I_GROUP                       
1          /data            expression H5I_DATASET INTEGER 620825 x 62548
2              /                  meta   H5I_GROUP                       
3          /meta                 genes   H5I_GROUP                       
4    /meta/genes           gene_symbol H5I_DATASET  STRING          62548
5          /meta               samples   H5I_GROUP                       
6  /meta/samples         aligned_reads H5I_DATASET INTEGER         620825
7  /meta/samples         channel_count H5I_DATASET  STRING         620825
8  /meta/samples   characteristics_ch1 H5I_DATASET  STRING         620825
9  /meta/samples       contact_address H5I_DATASET  STRING         620825
10 /meta/samples          contact_city H5I_DATASET  STRING         620825
11 /meta/samples       contact_country H5I_DATASET  STRING         620825
12 /meta/samples     contact_institute H5I_DATASET  STRING         620825
13 /meta/samples          contact_name H5I_DATASET  STRING         620825
14 /meta/samples           contact_zip H5I_DATASET  STRING         620825
15 /meta/samples       data_processing H5I_DATASET  STRING         620825
16 /meta/samples  extract_protocol_ch1 H5I_DATASET  STRING         620825
17 /meta/samples         geo_accession H5I_DATASET  STRING         620825
18 /meta/samples      instrument_model H5I_DATASET  STRING         620825
19 /meta/samples      last_update_date H5I_DATASET  STRING         620825
20 /meta/samples     library_selection H5I_DATASET  STRING         620825
21 /meta/samples        library_source H5I_DATASET  STRING         620825
22 /meta/samples      library_strategy H5I_DATASET  STRING         620825
23 /meta/samples          molecule_ch1 H5I_DATASET  STRING         620825
24 /meta/samples          organism_ch1 H5I_DATASET  STRING         620825
25 /meta/samples           platform_id H5I_DATASET  STRING         620825
26 /meta/samples              relation H5I_DATASET  STRING         620825
27 /meta/samples             series_id H5I_DATASET  STRING         620825
28 /meta/samples singlecellprobability H5I_DATASET   FLOAT         620825
29 /meta/samples       source_name_ch1 H5I_DATASET  STRING         620825
30 /meta/samples                sra_id H5I_DATASET  STRING         620825
31 /meta/samples                status H5I_DATASET  STRING         620825
32 /meta/samples       submission_date H5I_DATASET  STRING         620825
33 /meta/samples             taxid_ch1 H5I_DATASET  STRING         620825
34 /meta/samples                 title H5I_DATASET  STRING         620825
35 /meta/samples                  type H5I_DATASET  STRING         620825

求解决该错误的可行步骤。

解决步骤

1. 校验文件完整性

28G的大文件很容易在下载过程中损坏,导致读取大矩阵时出错。可以用官方提供的校验和(如SHA256)对比本地文件的校验值,确认文件是否完整。若不匹配,重新下载文件。

2. 分块读取大矩阵

直接读取620825 x 62548的整数矩阵会占用极大内存,超出系统承载能力进而触发错误。建议分块读取:

library(rhdf5)
# 打开HDF5文件连接
h5_file <- H5Fopen("archs4_gene_human_v2.1.2.h5")
# 设置分块大小,可根据内存调整
chunk_size <- 1000
total_samples <- 620825
expr_list <- list()

# 循环分块读取
for(i in seq(1, total_samples, chunk_size)){
  end <- min(i + chunk_size - 1, total_samples)
  expr_chunk <- h5read(h5_file, "data/expression", index=list(i:end, NULL))
  expr_list[[length(expr_list)+1]] <- expr_chunk
}

# 合并分块数据
h5_exprs <- do.call(rbind, expr_list)
# 关闭文件连接
H5Fclose(h5_file)

3. 更新rhdf5包

旧版本的rhdf5可能存在HDF5标识符处理的bug,更新到最新版本:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("rhdf5")

4. 检查系统HDF5库兼容性

确保系统安装的HDF5库版本与rhdf5依赖的版本兼容。可以通过h5version()查看当前使用的HDF5版本,若版本过低,更新系统的HDF5库(Ubuntu用apt-get install libhdf5-dev,CentOS用yum install hdf5-devel,macOS可通过Homebrew安装hdf5)。


内容的提问来源于Stack Exchange,提问作者Nmgh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 08:47:43