Source code for ewoksfluo.tests.tutorials.test_single_scan_single_detector

from typing import Dict
from typing import List

from ewokscore import execute_graph
from ewoksorange.gui.workflows.owscheme import ows_to_ewoks

try:
    from importlib.resources import files as resource_files
except ImportError:
    from importlib_resources import files as resource_files


[docs] def test_single_scan_single_detector_without_qt(tmp_path): from orangecontrib.ewoksfluo.categories.demo import tutorials filename = resource_files(tutorials).joinpath( "mesh_single_scan_single_detector.ows" ) assert_single_scan_single_detector_without_qt(filename, tmp_path)
[docs] def test_single_scan_single_detector_with_qt(ewoks_orange_canvas, tmp_path): from orangecontrib.ewoksfluo.categories.demo import tutorials filename = resource_files(tutorials).joinpath( "mesh_single_scan_single_detector.ows" ) assert_single_scan_single_detector_with_qt(ewoks_orange_canvas, filename, tmp_path)
[docs] def assert_single_scan_single_detector_without_qt(filename, tmp_path): """Execute workflow after converting it to an ewoks workflow""" graph = ows_to_ewoks(filename) outputs = execute_graph( graph, inputs=get_inputs(tmp_path), outputs=[{"all": True}], merge_outputs=False ) expected = get_expected_outputs(tmp_path) label_to_id = { attrs["label"]: node_id for node_id, attrs in graph.graph.nodes.items() } expected = {label_to_id[k]: v for k, v in expected.items()} assert outputs == expected
[docs] def assert_single_scan_single_detector_with_qt(ewoks_orange_canvas, filename, tmp_path): """Execute workflow using the Qt widgets and signals""" ewoks_orange_canvas.load_graph(str(filename), inputs=get_inputs(tmp_path)) ewoks_orange_canvas.start_workflow() ewoks_orange_canvas.wait_widgets(timeout=30) outputs = dict(ewoks_orange_canvas.iter_output_values()) assert outputs == get_expected_outputs(tmp_path)
[docs] def get_inputs(tmp_path) -> List[dict]: return [ { "label": "Mesh (single detector)", "name": "output_filename", "value": str(tmp_path / "input.h5"), }, { "label": "Fit scan (single detector)", "name": "output_root_uri", "value": str(tmp_path / "output.h5::/1.1"), }, ]
[docs] def get_expected_outputs(tmp_path) -> Dict[str, dict]: bliss_scan_uri = str(tmp_path / "input.h5::/1.1") output_root_uri = str(tmp_path / "output.h5::/1.1") return { "Mesh (single detector)": { "config": str(tmp_path / "input.h5::/1.1/theory/configuration/data"), "detector_name": "mca0", "expo_time": 0.1, "filename": str(tmp_path / "input.h5"), "monitor_name": "I0", "monitor_normalization_template": "1000000/<instrument/{}/data>", "detector_normalization_template": "0.1/<instrument/{}/live_time>", "scan_number": 1, }, "Pick scan": {"bliss_scan_uri": bliss_scan_uri}, "Fit scan (single detector)": { "xrf_results_uri": str(tmp_path / "output.h5::/1.1/fit/mca0/results"), "bliss_scan_uri": bliss_scan_uri, "detector_name": "mca0", "output_root_uri": output_root_uri, }, "Normalize": { "xrf_results_uri": str(tmp_path / "output.h5::/1.1/norm/results"), "bliss_scan_uri": bliss_scan_uri, "output_root_uri": output_root_uri, }, "Raw Counters": { "xrf_results_uri": str(tmp_path / "output.h5::/1.1/merge/results"), "bliss_scan_uri": bliss_scan_uri, "output_root_uri": output_root_uri, }, "Regrid": { "xrf_results_uri": str(tmp_path / "output.h5::/1.1/regrid/results"), "bliss_scan_uri": bliss_scan_uri, "output_root_uri": output_root_uri, }, }