How to handle h52nx conversion issues
This section present ways to go around some potential issues during conversion from bliss-scan to NXtomo like:
- some bliss entry is skipped / unrecognized
- some mandatory information are missing
- specify some field values
- provide a h52nx configuration file to tomwer
Some bliss entry is skipped / unrecognized
Currently the deduction of a bliss scan type (dark, flat, projection...) is done by:
- looking at the 'technique' group (image_key dataset)
- else look at the title. Title mapping is defined in settings.py file of nxtomomill.
If the titles have a specific naming convention then you can provide updated information to one of the following:
-
modify it from the settings.py file (if this is a local installation
-
provide different name to be used
- from the CLI
- from a configuration file (see later)
- from the python API
Hint
You can 'ignore' the bliss 'technique' dataset (aka bliss tomo config) by using a configuration and turning the ignore_bliss_tomo_config to True
From the CLI without a configuration file
If you look at the help you can see how to redefine title names.
nxtomomill h52nx --help
--init_titles: mark the beginning of a Bliss sequence (eq acquisition). Use for example to retrieve energy.
--dark_titles: specify that this Bliss entry is relative to dark field
--flat_titles: specify that this Bliss entry is relative to flat field
--proj_titles: specify that this Bliss entry is relative to projection
--align_titles: specify that this Bliss entry is relative to alignment (some time called 'return')
--init_zserie_titles, --init_pcotomo_titles same as init-titles but dedicated to zseries and pcotomo (behavior of NXtomo creation is a bit different)
From the CLI with the configuration file
The same information can be provided to ENTRIES_AND_TITLES_SECTION section

From the python API
you can also provide this information to the TomoHDF5Config class like:
configuration = TomoHDF5Config()
configuration.init_titles = ("mytomo:basic", "mytomo:fullturn")
Some mandatory information are missing
From the CLI without a configuration file
There is a limited number of information that the user can provide manually like energy or pixel size. Those can be provided from the set-params option like:
In this case you can provide it from the --set-params option from the CLI like:
nxtomomill h52nx ... --set-params energy 0.5
Warning
the --set-params option should always be put at the end of the command. Because it can take a full list of sub-options
From the CLI with a configuration file
You can also provide this information to the configuration file under the EXTRA_PARAMS_SECTION section like:

From the python API
Or provide this from a python script when defining the configuration
configuration = TomoHDF5Config()
configuration.param_already_defined = {
"energy_kev": 19.2,
}
Specifying field values
For specific fields ("detector name", "translation_x", "translation_y", "translation_z", and "rotation"), we attempt to extract this information from the 'technique' dataset. If the data is not available there, we revert to the generic behavior.
Generic behavior
The generic behavior involves searching for each field in a set of predefined locations or paths. If the dataset's structure matches the expected format, the field value is retrieved from the corresponding location.
Customizing locations
You can customize these locations (similar to titles) using the following methods: * settings.py file: modify this file to change the default locations parsed. * command line options. * h52nx configuration file: overwrite the locations from a configuration file.
From the CLI without a configuration file
For the CLI we can get them using ̀`nxtomomill h52nx --help` again:
- --x_trans_keys: x translation key in bliss HDF5 file.
- --y_trans_keys: y translation key in bliss HDF5 file.
- --z_trans_keys: z translation key in bliss HDF5 file.
- --sample-detector-distance: sample detector distance.
- --valid_camera_names: Valid NXDetector dataset name to be considered. If None will try to deduce the NXdetector from attributes and shape of the dataset
- --rot_angle_keys: Valid dataset name for rotation angle. If None, look name from "technique/scan/motor"
- --acq_expo_time_keys: acquisition exposure time in bliss HDF5 file.
- --x_pixel_size_key x pixel size key in bliss HDF5 file.
- --y_pixel_size_key y pixel size key in bliss HDF5 file.
From the CLI with a configuration file
the same field are available on the KEYS_SECTION of the configuration file.

dataset discovery is done as follow:
- converter will first look at positioner group to resolve key then at root group aka bliss entry*. Collect is done by a look like code:
for parse_group in (positioner, root_aka_bliss_entry):
# first step: look for existing dataset with expected number of elmt
for key_checked in parse_group:
if find_dataset_with_expected_nb_elment:
return it
# second step: look for existing dataset and adapt it if not enought elmt
for key_checked in parse_group:
if find_dataset:
return it
return None