import os
from typing import Dict
from typing import List
from typing import Optional
from typing import Sequence
from typing import Tuple
from typing import Union
from .fluoxas import fluoxas_paths
from .fluoxas import fluoxas_workflow_inputs
from .mosaic_fluoxas import mosaic_fluoxas_paths
from .mosaic_fluoxas import mosaic_fluoxas_workflow_inputs
from .mosaic_xrfmap import mosaic_xrfmap_paths
from .mosaic_xrfmap import mosaic_xrfmap_workflow_inputs
from .utils.execute import execute_graph
from .xrfmap import xrfmap_paths
from .xrfmap import xrfmap_workflow_inputs
[docs]
def xrfmap(*args, **kargs):
workflow_filename, inputs, convert_destination = xrfmap_parameters(*args, **kargs)
execute_graph(
workflow_filename, inputs=inputs, convert_destination=convert_destination
)
[docs]
def mosaic_xrfmap(*args, **kargs):
workflow_filename, inputs, convert_destination = mosaic_xrfmap_parameters(
*args, **kargs
)
execute_graph(
workflow_filename, inputs=inputs, convert_destination=convert_destination
)
[docs]
def fluoxas(*args, **kargs):
workflow_filename, inputs, convert_destination = fluoxas_parameters(*args, **kargs)
execute_graph(
workflow_filename, inputs=inputs, convert_destination=convert_destination
)
[docs]
def mosaic_fluoxas(*args, **kargs):
workflow_filename, inputs, convert_destination = mosaic_fluoxas_parameters(
*args, **kargs
)
execute_graph(
workflow_filename, inputs=inputs, convert_destination=convert_destination
)
[docs]
def xrfmap_parameters(
session: str,
sample: str,
dataset: str,
scan_number: int,
config_filenames: Sequence[str],
detectors: Optional[Sequence[Union[int, str]]] = None,
detector_numbers: Optional[Sequence[int]] = None,
instrument_name: Optional[str] = None,
fast_fitting: bool = True,
quantification: bool = True,
diagnostics: bool = True,
livetime_ref_value: Union[str, int, float, None] = None,
counter_ref_value: Union[str, int, float, None] = None,
counter_name: Optional[str] = None,
energy_name: Optional[str] = None,
energy_multiplier: Optional[float] = None,
dirname: Optional[str] = None,
real_axes: Optional[List[str]] = None,
resolution: Optional[Dict[str, Tuple[Union[int, float], str]]] = None,
demo: bool = False,
) -> Tuple[str, List[dict], str]:
paths = xrfmap_paths(
session,
sample,
dataset,
scan_number,
config_filenames,
dirname=dirname,
demo=demo,
)
workflow, inputs = xrfmap_workflow_inputs(
paths.filename,
paths.output_root_uri,
scan_number,
paths.config_filenames,
instrument_name=instrument_name,
detectors=detectors,
detector_numbers=detector_numbers,
detector_names=None,
fast_fitting=fast_fitting,
quantification=quantification,
diagnostics=diagnostics,
livetime_ref_value=livetime_ref_value,
counter_ref_value=counter_ref_value,
counter_name=counter_name,
energy_name=energy_name,
energy_multiplier=energy_multiplier,
resolution=resolution,
real_axes=real_axes,
)
workflow_filename = os.path.join(paths.workflow_path, workflow + ".json")
return workflow_filename, inputs, paths.convert_destination
[docs]
def mosaic_xrfmap_parameters(
session: str,
sample: str,
datasets: Sequence[str],
scan_ranges: Sequence[Tuple[int, int]],
config_filenames: Sequence[str],
detectors: Optional[Sequence[Union[int, str]]] = None,
detector_numbers: Optional[Sequence[int]] = None,
instrument_name: Optional[str] = None,
fast_fitting: bool = True,
quantification: bool = True,
diagnostics: bool = True,
livetime_ref_value: Union[str, int, float, None] = None,
counter_ref_value: Union[str, int, float, None] = None,
counter_name: Optional[str] = None,
energy_name: Optional[str] = None,
energy_multiplier: Optional[float] = None,
dirname: Optional[str] = None,
exclude_scans: Optional[Sequence[Sequence[int]]] = None,
real_axes: Optional[List[str]] = None,
resolution: Optional[Dict[str, Tuple[Union[int, float], str]]] = None,
demo: bool = False,
):
paths = mosaic_xrfmap_paths(
session,
sample,
datasets,
scan_ranges,
config_filenames,
dirname=dirname,
demo=demo,
)
workflow, inputs = mosaic_xrfmap_workflow_inputs(
paths.filenames,
paths.output_root_uri,
paths.concat_bliss_scan_uri,
scan_ranges,
paths.config_filenames,
instrument_name=instrument_name,
detectors=detectors,
detector_numbers=detector_numbers,
detector_names=None,
fast_fitting=fast_fitting,
quantification=quantification,
diagnostics=diagnostics,
livetime_ref_value=livetime_ref_value,
counter_ref_value=counter_ref_value,
counter_name=counter_name,
energy_name=energy_name,
energy_multiplier=energy_multiplier,
exclude_scans=exclude_scans,
resolution=resolution,
real_axes=real_axes,
)
workflow_filename = os.path.join(paths.workflow_path, workflow + ".json")
return workflow_filename, inputs, paths.convert_destination
[docs]
def fluoxas_parameters(
session: str,
sample: str,
datasets: Sequence[str],
scan_ranges: Sequence[Tuple[int, int]],
config_filenames: Sequence[str],
detectors: Optional[Sequence[Union[int, str]]] = None,
detector_numbers: Optional[Sequence[int]] = None,
instrument_name: Optional[str] = None,
fast_fitting: bool = True,
quantification: bool = True,
diagnostics: bool = True,
livetime_ref_value: Union[str, int, float, None] = None,
counter_ref_value: Union[str, int, float, None] = None,
counter_name: Optional[str] = None,
energy_name: Optional[str] = None,
energy_multiplier: Optional[float] = 2,
dirname: Optional[str] = None,
exclude_scans: Optional[Sequence[Sequence[int]]] = None,
stack_axis: Optional[str] = None,
real_axes: Optional[List[str]] = None,
resolution: Optional[Dict[str, Tuple[Union[int, float], str]]] = None,
do_align: bool = True,
align_counter: Optional[str] = None,
align_crop: Optional[bool] = True,
fast_align_counter_selection: Optional[bool] = False,
demo: bool = False,
):
paths = fluoxas_paths(
session,
sample,
datasets,
scan_ranges,
config_filenames,
dirname=dirname,
demo=demo,
)
workflow, inputs = fluoxas_workflow_inputs(
paths.filenames,
paths.output_root_uri,
scan_ranges,
paths.config_filenames,
instrument_name=instrument_name,
detectors=detectors,
detector_numbers=detector_numbers,
detector_names=None,
fast_fitting=fast_fitting,
quantification=quantification,
diagnostics=diagnostics,
livetime_ref_value=livetime_ref_value,
counter_ref_value=counter_ref_value,
counter_name=counter_name,
energy_name=energy_name,
energy_multiplier=energy_multiplier,
exclude_scans=exclude_scans,
resolution=resolution,
real_axes=real_axes,
do_align=do_align,
align_counter=align_counter,
align_crop=align_crop,
fast_align_counter_selection=fast_align_counter_selection,
)
workflow_filename = os.path.join(paths.workflow_path, workflow + ".json")
return workflow_filename, inputs, paths.convert_destination
[docs]
def mosaic_fluoxas_parameters(
session: str,
sample: str,
datasets: Sequence[Sequence[str]],
scan_ranges: Sequence[Sequence[Tuple[int, int]]],
config_filenames: Sequence[str],
detectors: Optional[Sequence[Union[int, str]]] = None,
detector_numbers: Optional[Sequence[int]] = None,
instrument_name: Optional[str] = None,
fast_fitting: bool = True,
quantification: bool = True,
diagnostics: bool = True,
livetime_ref_value: Union[str, int, float, None] = None,
counter_ref_value: Union[str, int, float, None] = None,
counter_name: Optional[str] = None,
energy_name: Optional[str] = None,
energy_multiplier: Optional[float] = 2,
dirname: Optional[str] = None,
exclude_scans: Optional[Sequence[Sequence[Sequence[int]]]] = None,
stack_axis: Optional[str] = None,
real_axes: Optional[List[str]] = None,
resolution: Optional[Dict[str, Tuple[Union[int, float], str]]] = None,
do_align: bool = True,
align_counter: Optional[str] = None,
align_crop: Optional[bool] = True,
fast_align_counter_selection: Optional[bool] = False,
group_by_index: bool = False,
demo: bool = False,
):
paths = mosaic_fluoxas_paths(
session,
sample,
datasets,
scan_ranges,
config_filenames,
dirname=dirname,
demo=demo,
)
workflow, inputs = mosaic_fluoxas_workflow_inputs(
paths.filenames,
paths.output_root_uri,
paths.concat_output_root_uri,
scan_ranges,
paths.config_filenames,
instrument_name=instrument_name,
detectors=detectors,
detector_numbers=detector_numbers,
detector_names=None,
fast_fitting=fast_fitting,
quantification=quantification,
diagnostics=diagnostics,
livetime_ref_value=livetime_ref_value,
counter_ref_value=counter_ref_value,
counter_name=counter_name,
energy_name=energy_name,
energy_multiplier=energy_multiplier,
exclude_scans=exclude_scans,
resolution=resolution,
real_axes=real_axes,
do_align=do_align,
align_counter=align_counter,
align_crop=align_crop,
fast_align_counter_selection=fast_align_counter_selection,
group_by_index=group_by_index,
)
workflow_filename = os.path.join(paths.workflow_path, workflow + ".json")
return workflow_filename, inputs, paths.convert_destination