scipp / essreduce

Common functionality for ESS data reduction
https://scipp.github.io/essreduce/
BSD 3-Clause "New" or "Revised" License
1 stars 1 forks source link

[Requirement] UI components for selecting, configuring, and running workflows #28

Open SimonHeybrock opened 6 months ago

SimonHeybrock commented 6 months ago

Executive summary

For the "80%" of basic workflow use, we need a simple interface that reduces the need for Python knowledge.

Context and background knowledge

Users need to create and configure workflows. In many cases the workflow are pre-built in the ESS packages and need configuration. Simple GUI tools based on (probably?) ipywidgets are needed for all ESS packages. These GUI components will, step by step (e.g., in a series of tabs), allow for:

  1. Select a workflow. Assume that we can get a list of workflows from the package, i.e., as input. Each workflow will come with a description (e.g., the docstring) which should be displayed.
  2. Set workflow params in widgets.
  3. Optionally, define tables of params.
  4. Select targets for computation, could be a single final result, or multiple, including intermediate results.
  5. Run the workflow.
  6. Plot or save outputs.

This requirement is a high-level overview, individual parts will be described in more detail in sub-requirements.

Have a look at, e.g., https://docs.mantidproject.org/v6.1.0/algorithms/LoadEventNexus-v1.html. The widget and the table of properties in the docs page was generated programmatically. This corresponds to step 2.) above.

Inputs

Methodology

Python function in a helper module that can be used to auto-generate a widget.

Outputs

A widget that can be used in a Jupyter notebook. Depending on where we stop in the listing, this might return a configured pipeline, a task graph, results, or even run, plot, and save directly.

Which interfaces are required?

Python module / function

Test cases

ESSsans is a good candidate for prototyping and trying this out

Comments

No response

SimonHeybrock commented 4 months ago

Widget team initial goal:

Parameter/workflow team initial goal:

See https://github.com/scipp/esssans/blob/a614f49492453cf6ea0f1615e63898b77b7303f6/src/ess/loki/general.py#L60-L84 for an example of a current workflow, which also defines default params.

YooSunYoung commented 4 months ago
  • What is needed from Python package beyond Sequence[Workflow]?

Description helpers

SimonHeybrock commented 4 months ago

Whiteboards from today: IMG_0728 IMG_0727