byte_offset
: Byte Offset compression/decompression¶
This module provides a class for CBF byte offset compression/decompression.
-
class
silx.opencl.codec.byte_offset.
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