byte_offset
: Byte Offset compression/decompression¶
This module provides a class for CBF byte offset compression/decompression.
-
class
ByteOffset
(raw_size=None, dec_size=None, ctx=None, devicetype='all', platformid=None, deviceid=None, block_size=None, profile=False)[source]¶ Bases:
silx.opencl.processing.OpenclProcessing
Perform the byte offset compression/decompression on the GPU
See
OpenclProcessing
for optional arguments description.- Parameters
raw_size (int) – Size of the raw stream for decompression. It can be (slightly) larger than the array.
dec_size (int) – Size of the decompression output array (mandatory for decompression)
-
decode
(raw, as_float=False, out=None)[source]¶ This function actually performs the decompression by calling the kernels
- Parameters
raw (numpy.ndarray) – The compressed data as a 1D numpy array of char.
as_float (bool) – True to decompress as float32, False (default) to decompress as int32
out (pyopencl.array) – pyopencl array in which to place the result.
- Returns
The decompressed image as an pyopencl array.
- Return type
pyopencl.array
-
encode
(data, out=None)[source]¶ Compress data to CBF.
- Parameters
data (Union[numpy.ndarray, pyopencl.array.Array]) – The data to compress as a numpy array (or a pyopencl Array) of int32.
out (pyopencl.array) – pyopencl array of int8 in which to store the result. The array should be large enough to store the compressed data.
- Returns
The compressed data as a pyopencl array. If out is provided, this array shares the backing buffer, but has the exact size of the compressed data and the queue of the ByteOffset instance.
- Return type
pyopencl.array
- Raises
ValueError – if out array is not large enough
-
encode_to_bytes
(data)[source]¶ Compresses data to CBF and returns compressed data as bytes.
Usage:
Provided an image (image) stored as a numpy array of int32, first, create a byte offset compression/decompression object:
>>> from silx.opencl.codec.byte_offset import ByteOffset >>> byte_offset_codec = ByteOffset()
Then, compress an image into bytes:
>>> compressed = byte_offset_codec.encode_to_bytes(image)
- Parameters
data (Union[numpy.ndarray, pyopencl.array.Array]) – The data to compress as a numpy array (or a pyopencl Array) of int32.
- Returns
The compressed data as bytes.
- Return type
bytes