Source code for nxtomomill.app.blissfluo2nx
# coding: utf-8
"""
Application to convert a fluo-tomo dataset, after PyMCA (https://www.silx.org/doc/PyMca/dev/index.html) fit, into an hdf5/nexus file.
.. program-output:: nxtomomill fluo2nx --help
"""
import argparse
import logging
from nxtomomill import converter
from nxtomomill.models.blissfluo2nx import BlissFluo2nxModel
from tqdm import tqdm
logging.basicConfig(level=logging.INFO)
[docs]def main(argv):
""" """
parser = argparse.ArgumentParser(
description="Converts Bliss fluo-tomo data (after PyMca fit) "
"to hdf5 - nexus compliant file format."
)
parser.add_argument(
"ewoksfluo_filename",
help="Path to the ewoksfluo-generated (h5) filename taht contains fitted XRF data.",
)
parser.add_argument(
"output_file",
help="File produced by the converter. '.nx' extension recommended.",
)
parser.add_argument(
"--detectors",
nargs="*",
default=list(),
help="Define a list of (real or virtual) detector names used for the exp (space separated values - no comma). E.g. 'falcon xmap'. If not specified, all detectors are processed.",
)
parser.add_argument(
"--dimension",
help="2 for 2D XRFCT, 3 for 3D XRFCT. Default is 3.",
default=3,
)
parser.add_argument(
"--config",
"--configuration-file",
"--configuration",
default=None,
help="file containing the full configuration to convert from (PyMCA-computed) fluo projections to nexus. "
"Default configuration file can be created from `nxtomomill fluo-config` command",
)
parser.add_argument(
"--overwrite",
default=False,
action="store_true",
help="If the output file exists then overwrite.",
)
options = parser.parse_args(argv[1:])
config = BlissFluo2nxModel()
if options.config is not None:
config = config.from_cfg_file(options.config)
check_input = {
"ewoksfluo_filename": (
options.ewoksfluo_filename,
config.general_section.ewoksfluo_filename,
),
"output file": (options.output_file, config.general_section.output_file),
}
for input_name, (opt_value, config_value) in check_input.items():
if (
opt_value is not None
and config_value is not None
and opt_value != config_value
):
raise ValueError(
f"two values for {input_name} are provided from arguments and configuration file ({opt_value, config_value})"
)
if options.ewoksfluo_filename is not None:
config.general_section.ewoksfluo_filename = options.ewoksfluo_filename
if options.output_file is not None:
config.general_section.output_file = options.output_file
if options.detectors is not None:
config.general_section.detector_names = options.detectors
config.general_section.dimension = options.dimension
config.general_section.overwrite = options.overwrite
converter.from_blissfluo_to_nx(
configuration=config,
progress=tqdm("blissfluo2nx"),
)