silx.io.spectoh5: SpecFile to HDF5 conversion

This module provides functions to convert a SpecFile into a HDF5 file.

Read the documentation of silx.io.spech5 for information on the structure of the output HDF5 files.

Strings are written to the HDF5 datasets as fixed-length ASCII (NumPy S type). This is done in order to produce files that have maximum compatibility with other HDF5 libraries, as recommended in the h5py documentation.

If you read the files back with h5py in Python 3, you will recover strings as bytes, which you should decode to transform them into python strings:

>>> import h5py
>>> f = h5py.File("myfile.h5")
>>> f["/1.1/instrument/specfile/scan_header"][0]
b'#S 94  ascan  del -0.5 0.5  20 1'
>>> f["/1.1/instrument/specfile/scan_header"][0].decode()
'#S 94  ascan  del -0.5 0.5  20 1'

Arrays of strings, such as file and scan headers, are stored as fixed-length strings. The length of all strings in an array is equal to the length of the longest string. Shorter strings are right-padded with blank spaces.

Note

This module has a dependency on the h5py library, which is not a mandatory dependency for silx. You might need to install it if you don’t already have it.

silx.io.spectoh5.write_spec_to_h5(specfile, h5file, h5path='/', mode='a', overwrite_data=False, link_type='hard', create_dataset_args=None)[source]

Write content of a SpecFile in a HDF5 file.

Parameters:
  • specfile – Path of input SpecFile or SpecH5 instance
  • h5file – Path of output HDF5 file or HDF5 file handle
  • h5path – Target path in HDF5 file in which scan groups are created. Default is root ("/")
  • mode – Can be "r+" (read/write, file must exist), "w" (write, existing file is lost), "w-" (write, fail if exists) or "a" (read/write if exists, create otherwise). This parameter is ignored if h5file is a file handle.
  • overwrite_data – If True, existing groups and datasets can be overwritten, if False they are skipped. This parameter is only relevant if file_mode is "r+" or "a".
  • link_type"hard" (default) or "soft"
  • create_dataset_args – Dictionary of args you want to pass to h5f.create_dataset. This allows you to specify filters and compression parameters. Don’t specify name and data. These arguments don’t apply to scalar datasets.

The structure of the spec data in an HDF5 file is described in the documentation of silx.io.spech5.

silx.io.spectoh5.convert(specfile, h5file, mode='w-', create_dataset_args=None)[source]

Convert a SpecFile into an HDF5 file, write scans into the root (/) group.

Parameters:
  • specfile – Path of input SpecFile or SpecH5 instance
  • h5file – Path of output HDF5 file or HDF5 file handle
  • mode – Can be "w" (write, existing file is lost), "w-" (write, fail if exists). This is ignored if h5file is a file handle.
  • create_dataset_args – Dictionary of args you want to pass to h5f.create_dataset. This allows you to specify filters and compression parameters. Don’t specify name and data.

This is a convenience shortcut to call:

write_spec_to_h5(specfile, h5file, h5path='/',
                 mode="w-", link_type="hard")

Previous topic

silx.io.spech5: h5py-like API to SpecFile

Next topic

silx.io.utils: I/O utilities

This Page