有没有办法使用 Julia 的 HDF5.jl 在 HDF5 中调整分块数据集的大小?我在文档中没有看到任何内容。查看源代码,我发现的只有set_dims!()
,但这不能扩展数据集(只能缩小它)。 HDF5.jl 是否能够放大现有(分块)数据集?这对我来说是一个非常重要的功能,我宁愿不必调用另一种语言。
最佳答案
我相信我已经弄清楚了。问题是我忘记给数据空间一个足够大的 max_dims。这样做需要深入研究较低级别的 API。我找到的解决方案是:
dspace = HDF5.dataspace((6,20)::Dims, max_dims=(6,typemax(Int64)))
dtype = HDF5.datatype(Float64)
dset = HDF5.d_create(prt, "trajectory", dtype, dspace, "chunk", (6,10))
一旦我创建了一个可以适当调整大小的数据集,
set_dims!
函数正确调整数据集的大小。我想我找到了 API 的一些小问题,我必须在本地版本中解决或更改这些问题。我会就这些问题与 HDF5.jl 所有者联系。对于那些有兴趣的人:
H5S_UNLIMITED
类型为 Uint64
,但 dataspace
函数只接受 Int64
的元组,这就是为什么我使用 typemax(Int64)
我的 max_dims
如何模仿H5S_UNLIMITED
是派生的。 d_create
表格我使用的电话 h5d_create
错误地;它通过 parent
而不是 checkvalid(parent).id
(与其他形式的 d_create
对比可以看出)。 关于julia - 在 Julia 中调整 HDF5 数据集的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875815/