HDF5 Plugins for windows,MacOS and linux
Reason this release was yanked:
Missing python_requires>=3.4
Project description
This module provides HDF5 compression filters (namely: blosc, bitshuffle, lz4, FCIDECOMP, ZFP, zstd) and registers them to the HDF5 library used by h5py.
Supported operating systems: Linux, Windows, macOS.
Supported versions of Python: >= 3.4
hdf5plugin provides a generic way to enable the use of the provided HDF5 compression filters with h5py that can be installed via pip or conda.
Alternatives to install HDF5 compression filters are: system-wide installation on Linux or other conda packages: blosc-hdf5-plugin, hdf5-lz4.
The HDF5 plugin sources were obtained from:
LZ4 plugin (v0.1.0): https://github.com/nexusformat/HDF5-External-Filter-Plugins
bitshuffle plugin (0.3.5): https://github.com/kiyo-masui/bitshuffle
hdf5-blosc plugin (v1.0.0), c-blosc (v1.20.1) and snappy (v1.1.1): https://github.com/Blosc/hdf5-blosc, https://github.com/Blosc/c-blosc and https://github.com/Blosc/c-blosc/tree/v1.17.0/internal-complibs/snappy-1.1.1
FCIDECOMP plugin (v1.0.2) and CharLS (branch 1.x-master SHA1 ID:25160a42fb62e71e4b0ce081f5cb3f8bb73938b5): ftp://ftp.eumetsat.int/pub/OPS/out/test-data/Test-data-for-External-Users/MTG_FCI_Test-Data/FCI_Decompression_Software_V1.0.2/ and https://github.com/team-charls/charls.git
HDF5-ZFP plugin (v1.0.1) and zfp (v0.5.5): https://github.com/LLNL/H5Z-ZFP and https://github.com/LLNL/zfp
HDF5Plugin-Zstandard (commit d5afdb5) and zstd (v1.4.5): https://github.com/aparamon/HDF5Plugin-Zstandard and https://github.com/Blosc/c-blosc/tree/v1.20.1/internal-complibs/zstd-1.4.5
Installation
To install, run:
pip install hdf5plugin [--user]
or, with conda (https://anaconda.org/conda-forge/hdf5plugin):
conda install -c conda-forge hdf5plugin
To install from source and recompile the HDF5 plugins, run:
pip install hdf5plugin --no-binary hdf5plugin [--user]
Installing from source can achieve better performances by enabling AVX2 and OpenMP if available.
Documentation
To use it, just use import hdf5plugin and supported compression filters are available from h5py.
Sample code:
import numpy
import h5py
import hdf5plugin
# Compression
f = h5py.File('test.h5', 'w')
f.create_dataset('data', data=numpy.arange(100), **hdf5plugin.LZ4())
f.close()
# Decompression
f = h5py.File('test.h5', 'r')
data = f['data'][()]
f.close()
hdf5plugin provides:
Compression option helper classes to prepare arguments to provide to h5py.Group.create_dataset:
The HDF5 filter ID of embedded plugins:
BLOSC_ID
BSHUF_ID
FCIDECOMP_ID
LZ4_ID
ZFP_ID
ZSTD_ID
FILTERS: A dictionary mapping provided filters to their ID
PLUGINS_PATH: The directory where the provided filters library are stored.
Bitshuffle(nelems=0, lz4=True)
This class takes the following arguments and returns the compression options to feed into h5py.Group.create_dataset for using the bitshuffle filter:
nelems the number of elements per block, needs to be divisible by eight (default is 0, about 8kB per block)
lz4 if True the elements get compressed using lz4 (default is True)
It can be passed as keyword arguments.
Sample code:
f = h5py.File('test.h5', 'w')
f.create_dataset('bitshuffle_with_lz4', data=numpy.arange(100),
**hdf5plugin.Bitshuffle(nelems=0, lz4=True))
f.close()
Blosc(cname=’lz4’, clevel=5, shuffle=SHUFFLE)
This class takes the following arguments and returns the compression options to feed into h5py.Group.create_dataset for using the blosc filter:
cname the compression algorithm, one of:
‘blosclz’
‘lz4’ (default)
‘lz4hc’
‘snappy’ (optional, requires C++11)
‘zlib’
‘zstd’
clevel the compression level, from 0 to 9 (default is 5)
shuffle the shuffling mode, in:
Blosc.NOSHUFFLE (0): No shuffle
Blosc.SHUFFLE (1): byte-wise shuffle (default)
Blosc.BITSHUFFLE (2): bit-wise shuffle
It can be passed as keyword arguments.
Sample code:
f = h5py.File('test.h5', 'w')
f.create_dataset('blosc_byte_shuffle_blosclz', data=numpy.arange(100),
**hdf5plugin.Blosc(cname='blosclz', clevel=9, shuffle=hdf5plugin.Blosc.SHUFFLE))
f.close()
FciDecomp()
This class returns the compression options to feed into h5py.Group.create_dataset for using the FciDecomp filter:
It can be passed as keyword arguments.
Sample code:
f = h5py.File('test.h5', 'w')
f.create_dataset('fcidecomp', data=numpy.arange(100),
**hdf5plugin.FciDecomp())
f.close()
LZ4(nbytes=0)
This class takes the number of bytes per block as argument and returns the compression options to feed into h5py.Group.create_dataset for using the lz4 filter:
nbytes number of bytes per block needs to be in the range of 0 < nbytes < 2113929216 (1,9GB). The default value is 0 (for 1GB).
It can be passed as keyword arguments.
Sample code:
f = h5py.File('test.h5', 'w')
f.create_dataset('lz4', data=numpy.arange(100),
**hdf5plugin.LZ4(nbytes=0))
f.close()
Zfp()
This class returns the compression options to feed into h5py.Group.create_dataset for using the zfp filter:
It can be passed as keyword arguments.
Sample code:
f = h5py.File('test.h5', 'w')
f.create_dataset('zfp', data=numpy.random.random(100),
**hdf5plugin.Zfp())
f.close()
The zfp filter compression mode is defined by the provided arguments. The following compression modes are supported:
Fixed-rate mode: For details, see zfp fixed-rate mode.
f.create_dataset('zfp_fixed_rate', data=numpy.random.random(100), **hdf5plugin.Zfp(rate=10.0))
Fixed-precision mode: For details, see zfp fixed-precision mode.
f.create_dataset('zfp_fixed_precision', data=numpy.random.random(100), **hdf5plugin.Zfp(precision=10))
Fixed-accuracy mode: For details, see zfp fixed-accuracy mode.
f.create_dataset('zfp_fixed_accuracy', data=numpy.random.random(100), **hdf5plugin.Zfp(accuracy=0.001))
Reversible (i.e., lossless) mode: For details, see zfp reversible mode.
f.create_dataset('zfp_reversible', data=numpy.random.random(100), **hdf5plugin.Zfp(reversible=True))
Expert mode: For details, see zfp expert mode.
f.create_dataset('zfp_expert', data=numpy.random.random(100), **hdf5plugin.Zfp(minbits=1, maxbits=16657, maxprec=64, minexp=-1074))
Zstd()
This class returns the compression options to feed into h5py.Group.create_dataset for using the Zstd filter:
It can be passed as keyword arguments.
Sample code:
f = h5py.File('test.h5', 'w')
f.create_dataset('zstd', data=numpy.arange(100),
**hdf5plugin.Zstd())
f.close()
Dependencies
Testing
To run self-contained tests, from Python:
import hdf5plugin.test
hdf5plugin.test.run_tests()
Or, from the command line:
python -m hdf5plugin.test
To also run tests relying on actual HDF5 files, run from the source directory:
python test/test.py
This tests the installed version of hdf5plugin.
License
The source code of hdf5plugin itself is licensed under the MIT license. Use it at your own risk. See LICENSE
The source code of the embedded HDF5 filter plugin libraries is licensed under different open-source licenses. Please read the different licenses:
bitshuffle: See src/bitshuffle/LICENSE
blosc: See src/hdf5-blosc/LICENSES/ and src/c-blosc/LICENSES/
lz4: See src/LZ4/COPYING
FCIDECOMP: See src/fcidecomp/LICENSE and src/charls/src/License.txt
zfp: See src/H5Z-ZFP/LICENSE and src/zfp/LICENSE
zstd: See src/HDF5Plugin-Zstandard/LICENSE
The HDF5 v1.10.5 headers (and Windows .lib file) used to build the filters are stored for convenience in the repository. The license is available here: src/hdf5/COPYING.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file hdf5plugin-3.0.0.tar.gz
.
File metadata
- Download URL: hdf5plugin-3.0.0.tar.gz
- Upload date:
- Size: 11.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.5.0.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c6f122f2ac23fe59c1f3f7fb636b405f2eded314945ce9a300435bc0006ef1a |
|
MD5 | 07a49c5ec3aa6a6952081f4c80b95d0c |
|
BLAKE2b-256 | 89fe205d6399b5b549e5719475e1103f4de4de0be60f7b2acb4535a19ac7b2c0 |
File details
Details for the file hdf5plugin-3.0.0-py3-none-win_amd64.whl
.
File metadata
- Download URL: hdf5plugin-3.0.0-py3-none-win_amd64.whl
- Upload date:
- Size: 686.3 kB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.5.0.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f1f677dd81c866a3d40088b7a254ed4177936759035f25a8e99d3b8263fe1e0 |
|
MD5 | 2fb5174121bf1a90a0b7a1bb35a704af |
|
BLAKE2b-256 | e63efde5644d143285e2e14806846231e2e65ade62e4e09d6efa62ac4aa863fc |
File details
Details for the file hdf5plugin-3.0.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: hdf5plugin-3.0.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 8.4 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.5.0.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22a6f7087f26cb95cf857268a5e32430def71e31c23bcd9619e5f6674f861f8e |
|
MD5 | e4a72f3cb177dde583eabfd59f5fe64d |
|
BLAKE2b-256 | a171fcc01bc34b48600d30dff5ec1483c01cee3260456fb0ce05839f22641574 |
File details
Details for the file hdf5plugin-3.0.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
.
File metadata
- Download URL: hdf5plugin-3.0.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 8.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.5.0.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 641b12a9d961edc670f445dc1dabd513fc46ff3cac1505933c9871be4e852fa1 |
|
MD5 | 6e35fe2d6acf03531cd2d89de39219f1 |
|
BLAKE2b-256 | 560d57022eb7077905f4b0fbdad2ca86b0f9b2781908d596e4758abcbf782738 |
File details
Details for the file hdf5plugin-3.0.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
.
File metadata
- Download URL: hdf5plugin-3.0.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
- Upload date:
- Size: 4.9 MB
- Tags: Python 3, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.5.0.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c53f935cb301a85bb10c1986ef57d1d9b1c6b72a583b11b740b192e127785d6 |
|
MD5 | 8327e0b4eb6ec34c67d2cbae975a8acc |
|
BLAKE2b-256 | 5493987e7acd7beab22bcc7270cd7d22a5ac380cfdaa290ec97910c7183658da |
File details
Details for the file hdf5plugin-3.0.0-py3-none-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: hdf5plugin-3.0.0-py3-none-macosx_10_9_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.5.0.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fdf0f003a28dab4c180c11cc3ee077acf5c50e89f195a8c6f8cfcb337cf57d94 |
|
MD5 | c18196b4e322ea9596501ae814d88ffc |
|
BLAKE2b-256 | 46f101f34eea57ff0839eea2396b3274c7f719a19ad49d409d58556c030a5eec |