diff --git a/docs/user-guide/loki/workflow-widget-loki.ipynb b/docs/user-guide/loki/workflow-widget-loki.ipynb index 7c8c3a83..93eaeb36 100644 --- a/docs/user-guide/loki/workflow-widget-loki.ipynb +++ b/docs/user-guide/loki/workflow-widget-loki.ipynb @@ -60,10 +60,10 @@ "pbox = wfw.parameter_box\n", "pbox.parameter_refresh_button.click()\n", "# Enable DirectBeam input\n", - "pbox._input_widgets[DirectBeam].children[0].enabled = True\n", - "pbox._input_widgets[DirectBeam].children[0].wrapped._option_box.value = None\n", + "pbox._input_widgets[DirectBeam].children[0].value = True\n", + "pbox._input_widgets[DirectBeam].children[1].children[1]._option_box.value = None\n", "# Adjust Q range\n", - "pbox._input_widgets[QBins].children[0].fields[\"start\"].value = 0.01\n", + "pbox._input_widgets[QBins].fields[\"start\"].value = 0.01\n", "# Run the workflow\n", "rbox = wfw.result_box\n", "rbox.run_button.click()" diff --git a/pyproject.toml b/pyproject.toml index efe0b867..37385196 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ requires-python = ">=3.10" dependencies = [ "dask", "graphviz", - "essreduce>=24.10.2, <24.11.0", + "essreduce>=24.11.3", "numpy", "pandas", "plopp", diff --git a/requirements/base.in b/requirements/base.in index 3a21abf1..dc371692 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -4,7 +4,7 @@ # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! dask graphviz -essreduce>=24.10.2, <24.11.0 +essreduce>=24.11.3 numpy pandas plopp diff --git a/requirements/base.txt b/requirements/base.txt index 670dc877..da532947 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:01b4e247f3980e3f21b6b9ad70d3e5e49610d9c4 +# SHA1:71fbc763453db59fbe23acb0df92531c0434f7ef # # This file is autogenerated by pip-compile-multi # To update, run: @@ -23,13 +23,13 @@ dask==2025.1.0 # via -r base.in decorator==5.1.1 # via ipython -essreduce==24.10.3 +essreduce==24.12.0 # via -r base.in exceptiongroup==1.2.2 # via ipython -executing==2.1.0 +executing==2.2.0 # via stack-data -fonttools==4.55.3 +fonttools==4.55.5 # via matplotlib fsspec==2024.12.0 # via dask @@ -130,7 +130,9 @@ scipp==25.1.0 # scippneutron # scippnexus scippneutron==25.1.0 - # via -r base.in + # via + # -r base.in + # essreduce scippnexus==24.11.1 # via # -r base.in @@ -160,7 +162,7 @@ traittypes==0.2.1 # via ipydatawidgets typing-extensions==4.12.2 # via ipython -tzdata==2024.2 +tzdata==2025.1 # via pandas wcwidth==0.2.13 # via prompt-toolkit diff --git a/requirements/ci.txt b/requirements/ci.txt index 3b26f277..9ffaa1db 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -5,7 +5,7 @@ # # pip-compile-multi # -cachetools==5.5.0 +cachetools==5.5.1 # via tox certifi==2024.12.14 # via requests @@ -17,7 +17,7 @@ colorama==0.4.6 # via tox distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via # tox # virtualenv @@ -38,7 +38,7 @@ platformdirs==4.3.6 # virtualenv pluggy==1.5.0 # via tox -pyproject-api==1.8.0 +pyproject-api==1.9.0 # via tox requests==2.32.3 # via -r ci.in @@ -48,7 +48,7 @@ tomli==2.2.1 # via # pyproject-api # tox -tox==4.23.2 +tox==4.24.1 # via -r ci.in typing-extensions==4.12.2 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index 6b109ba2..448ba646 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -87,7 +87,7 @@ prometheus-client==0.21.1 # via jupyter-server pycparser==2.22 # via cffi -pydantic==2.10.5 +pydantic==2.10.6 # via copier pydantic-core==2.27.2 # via pydantic diff --git a/requirements/nightly.txt b/requirements/nightly.txt index ae202219..9b960561 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -26,9 +26,9 @@ decorator==5.1.1 # via ipython essreduce @ git+https://github.com/scipp/essreduce@main # via -r nightly.in -executing==2.1.0 +executing==2.2.0 # via stack-data -fonttools==4.55.3 +fonttools==4.55.5 # via matplotlib fsspec==2024.12.0 # via dask @@ -140,7 +140,7 @@ traittypes==0.2.1 # via ipydatawidgets typing-extensions==4.12.2 # via ipython -tzdata==2024.2 +tzdata==2025.1 # via pandas wcwidth==0.2.13 # via prompt-toolkit diff --git a/requirements/static.txt b/requirements/static.txt index cf2b5a96..b7eb0124 100644 --- a/requirements/static.txt +++ b/requirements/static.txt @@ -9,7 +9,7 @@ cfgv==3.4.0 # via pre-commit distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via virtualenv identify==2.6.6 # via pre-commit diff --git a/src/ess/loki/workflow.py b/src/ess/loki/workflow.py index 73aa7e0a..cd257beb 100644 --- a/src/ess/loki/workflow.py +++ b/src/ess/loki/workflow.py @@ -14,23 +14,31 @@ from ess.sans.parameters import typical_outputs from ..sans.types import ( + BackgroundRun, + BeamCenter, DetectorBankSizes, DetectorData, DetectorPixelShape, DirectBeam, DirectBeamFilename, + EmptyBeamRun, + Filename, Incident, MonitorData, MonitorType, NeXusComponent, + NeXusDetectorName, NeXusMonitorName, NonBackgroundWavelengthRange, + PixelMaskFilename, PixelShapePath, RunType, + SampleRun, ScatteringRunType, TofData, TofMonitor, Transmission, + TransmissionRun, ) DETECTOR_BANK_SIZES = { @@ -105,7 +113,7 @@ def LokiAtLarmorWorkflow() -> sciline.Pipeline: for key, param in default_parameters().items(): workflow[key] = param workflow.insert(read_xml_detector_masking) - workflow[sans.types.NeXusDetectorName] = 'larmor_detector' + workflow[NeXusDetectorName] = 'larmor_detector' workflow.typical_outputs = typical_outputs return workflow @@ -115,25 +123,14 @@ def LokiAtLarmorTutorialWorkflow() -> sciline.Pipeline: from ess.loki import data workflow = LokiAtLarmorWorkflow() - # TODO This does not work with multiple - workflow[sans.types.PixelMaskFilename] = data.loki_tutorial_mask_filenames()[0] - workflow[sans.types.Filename[sans.types.SampleRun]] = ( - data.loki_tutorial_sample_run_60339() - ) - workflow[sans.types.Filename[sans.types.BackgroundRun]] = ( - data.loki_tutorial_background_run_60393() - ) - workflow[sans.types.Filename[sans.types.TransmissionRun[sans.types.SampleRun]]] = ( + workflow[PixelMaskFilename] = data.loki_tutorial_mask_filenames() + workflow[Filename[SampleRun]] = data.loki_tutorial_sample_run_60339() + workflow[Filename[BackgroundRun]] = data.loki_tutorial_background_run_60393() + workflow[Filename[TransmissionRun[SampleRun]]] = ( data.loki_tutorial_sample_transmission_run() ) - workflow[ - sans.types.Filename[sans.types.TransmissionRun[sans.types.BackgroundRun]] - ] = data.loki_tutorial_run_60392() - workflow[sans.types.Filename[sans.types.EmptyBeamRun]] = ( - data.loki_tutorial_run_60392() - ) - workflow[sans.types.BeamCenter] = sc.vector( - value=[-0.02914868, -0.01816138, 0.0], unit='m' - ) + workflow[Filename[TransmissionRun[BackgroundRun]]] = data.loki_tutorial_run_60392() + workflow[Filename[EmptyBeamRun]] = data.loki_tutorial_run_60392() + workflow[BeamCenter] = sc.vector(value=[-0.02914868, -0.01816138, 0.0], unit='m') return workflow diff --git a/src/ess/sans/parameters.py b/src/ess/sans/parameters.py index 4aaef525..350791f3 100644 --- a/src/ess/sans/parameters.py +++ b/src/ess/sans/parameters.py @@ -54,6 +54,7 @@ CorrectForGravity, default=False ) parameter_registry[NeXusDetectorName] = StringParameter.from_type(NeXusDetectorName) + parameter_registry[NeXusMonitorName[Incident]] = StringParameter.from_type( NeXusMonitorName[Incident], default='' ) @@ -76,10 +77,10 @@ parameter_registry[UncertaintyBroadcastMode] = ParamWithOptions.from_enum( UncertaintyBroadcastMode, default=UncertaintyBroadcastMode.upper_bound ) -parameter_registry[Filename[SampleRun]] = FilenameParameter.from_type( +parameter_registry[Filename[SampleRun]] = MultiFilenameParameter.from_type( Filename[SampleRun] ) -parameter_registry[Filename[BackgroundRun]] = FilenameParameter.from_type( +parameter_registry[Filename[BackgroundRun]] = MultiFilenameParameter.from_type( Filename[BackgroundRun] ) parameter_registry[Filename[TransmissionRun[SampleRun]]] = FilenameParameter.from_type( @@ -91,6 +92,7 @@ parameter_registry[Filename[EmptyBeamRun]] = FilenameParameter.from_type( Filename[EmptyBeamRun] ) + parameter_registry[WavelengthBins] = BinEdgesParameter( WavelengthBins, dim='wavelength', start=2, stop=12.0, nbins=300, log=False ) diff --git a/src/ess/sans/workflow.py b/src/ess/sans/workflow.py index 15a1a567..e01b81aa 100644 --- a/src/ess/sans/workflow.py +++ b/src/ess/sans/workflow.py @@ -140,7 +140,10 @@ def with_background_runs( parameter_mappers[PixelMaskFilename] = with_pixel_mask_filenames -parameter_mappers[NeXusDetectorName] = with_banks +# TODO: for now, we leave the mapping over detector banks out, because we do not have a +# method to merge the I(Q) of different banks, and we thus cannot compute a single +# result from the workflow. So only a single detector bank can be processed at a time. +# parameter_mappers[NeXusDetectorName] = with_banks parameter_mappers[Filename[SampleRun]] = with_sample_runs parameter_mappers[Filename[BackgroundRun]] = with_background_runs