无法写入hdf5文件:H5Dcreate中的错误

时间:2018-10-28 20:16:32

标签: r rhdf5

当我尝试使用dgcMatrix中的30 000x80 000来写rhdf5的{​​{1}}时:

Rstudio

我遇到了错误:

  

H5Dcreate中的错误(loc $ H5Identifier,数据集,tid,sid,dcpl = dcpl):     HDF5。数据集。无法初始化对象。   另外:警告消息:   在h5createDataset(h5loc,name,dim,storage.mode = storage.mode(obj),中:     您使用压缩和分块创建了一个大型数据集。块的大小等于数据集的大小。如果要读取数据集的子集,则应测试较小的块大小以缩短读取时间。使用showWarnings = FALSE关闭此警告。   H5Dopen(h5loc,name)中的错误:HDF5。数据集。找不到对象。   h5writeDatasetHelper(obj = obj,h5dataset = h5dataset,index = index,错误:     找不到对象“ h5dataset”   h5writeDatasetHelper(obj = obj,h5dataset = h5dataset,index = index,错误:     找不到对象“ h5dataset”   另外:警告消息:   在is(h5id,“ H5IdComponent”)中:重新启动中断的promise评估   H5Dclose(h5dataset)中的错误:找不到对象“ h5dataset”

文件肯定存在并打开。

h5writeDataset(as.matrix(dge_cut), file, 'rawcounts')

sessionInfo()

我不明白为什么会这样。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

当我尝试保存一个约有11亿个条目的向量时,我遇到了类似的问题。问题似乎与压缩块太大有关,默认块大小是要保存的数据集的尺寸。对我有用的解决方法是先创建数据集,然后将块设置为较小的值。您可以查看是否运行了以下内容:

h5createDataset(file, 'rawcounts', c(30000, 80000), chunk = c(1000, 1000))
h5writeDataset(as.matrix(dge_cut), file, 'rawcounts')

不是最好选择1000 x 1000的块大小,而是开始的地方。