用于LZF压缩阵列的HDF5查看器

Jam*_*esS 2 python hdf5 h5py

我正在使用带有LZF压缩的h5py来将NumPy阵列存储在HDF5文件中.

它运行良好,我的压缩文件比未压缩文件更便携.但是,如果我尝试使用像vitablesHDFView这样的应用程序查看压缩文件,我会收到以下错误:

" 错误:读取记录时出现问题.数据集似乎是使用None库进行压缩.请检查它是否已安装在您的系统中,请 "在vitables

" ncsa.hdf.hdf5lib.exceptions.HDF5Exception:ncsa.hdf.hdf5lib.exceptions.HDF5LibraryException:无法HDFView中打开目录或文件 " .

我可以在两个应用程序中浏览文件结构OK,但打开数组会产生错误.如果我关闭压缩,问题就会消失.例如,在运行下面的代码后,打开array_1会给出错误,但array_2不会.

import numpy as np, h5py

h5_path = r'D:\test.h5'

f = h5py.File(h5_path, 'w')

# Create fake data
data = (np.random.random(1E6)*100).astype(int)

# Save with compression
dset1 = f.create_dataset(r'/path/to/arrays/array_1', data=data, 
                         compression='lzf')

# Save without compression
dset2 = f.create_dataset(r'/path/to/arrays/array_2', data=data)

# Set some object properties
dset1.attrs['Description'] = 'Compressed array.'
dset2.attrs['Description'] = 'Uncompressed array.'

f.close()
Run Code Online (Sandbox Code Playgroud)

这种行为是期待的,还是我做错了什么?

如果vitables和HDFView无法打开压缩数组,是否有另一种查看器可以?

非常感谢!

iip*_*ipr 6

对于使用LZF压缩存储的数据集,我遇到了完全相同的问题,最后我找到了这篇文章.使用HDFView,我设法查看使用压缩级别为9的GZIP压缩的数据集,即:

dset = f.create_dataset('someData', data=data, compression="gzip", compression_opts=9)
Run Code Online (Sandbox Code Playgroud)

但我仍然希望看到LZF压缩数据集.有一个名为HDF Compass(Github repo)的HDF5文件的GUI界面,由HDF世界闻名的Andrew Collette开发.当问到这个问题时,HDF指南针的开发刚刚开始.今天我测试了0.6.0版,我设法正确查看了LZF压缩文件.

PD:只是警告,HDF Compass只是一个只读工具,与HDFView不同.但是,它仍然非常用户友好,非常活泼.