How to define your own sequence to build an NXtomo#
Design#
The conversion process is done as follow:

The first step this can be done two ways

Until now we were only using the title to deduce the acquisition and the type of frames of each Bliss entry.
But the FRAME_TYPE_SECTION allow us to ignore those titles and define manually the sequence of the acquisition.
Coming back to the FRAME_TYPE_SECTION section
FRAME_TYPE_SECTION section#
If this section is fill then the ENTRIES_AND_TITLES_SECTION will be ignored. Those are mutually exclusive sections.
From it we can define data_scans that allow us to define a sequence of scan defining an acquisition using [url](https://fr.wikipedia.org/wiki/Uniform_Resource_Locator). Like:
data_scans = (
(frame_type=projections, entry=silx:///path/to/file?/path/to/scan/node,),
(frame_type=projections, entry=/path_relative_to_file),
)
Here we will create one acquisition from silx:///path/to/file?/path/to/scan/node to be used as a set of projections and /path_relative_to_file as a set of projections to.
Note
Url can be relative to different file
Warning
The created acquisition will follow the provided order
Example: create an NXtomo using the data_scans field#
Using the configuration file#
You can find a file conversion_using_data_scans.cfg in the solution folder that create an acquisition using data_scans:

It can be executed by calling:
nxtomomill h52nx --config conversion_using_data_scans.cfg
Using the python API#
from nxtomomill.converter import from_h5_to_nx
from nxtomomill.io.config import TomoHDF5Config
from nxtomomill.io.framegroup import FrameGroup
from silx.io.url import DataUrl
input_file_path = "bambou_hercules_0001.h5"
configuration = TomoHDF5Config()
configuration.input_file = input_file_path
configuration.output_file = "bambou_hercules_0001.nx"
configuration.data_frame_grps = (
FrameGroup(
url=DataUrl(
file_path=input_file_path,
data_path="1.1",
scheme="silx",
),
frame_type="initialization",
),
FrameGroup(
url=DataUrl(
file_path=input_file_path,
data_path="2.1",
scheme="silx",
),
frame_type="darks",
),
FrameGroup(
url=DataUrl(
file_path=input_file_path,
data_path="3.1",
scheme="silx",
),
frame_type="flats",
),
FrameGroup(
url=DataUrl(
file_path=input_file_path,
data_path="4.1",
scheme="silx",
),
frame_type="projections",
),
)
res = from_h5_to_nx(configuration=configuration)
Note
you will see another way to create an NXtomo from scratch that could be another alternative.