scipp / scipp/ess

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

Open
#152 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

essreduce
Dominant language
Python
Stars
1
Forks
3
Avg merge
2d 11h
Merged PRs (30d)
17

Description

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
  • A package can provide a list of workflows.
  • Input params can be obtained from the workflow. There will be a mapping between input keys of the workflow and implementations of a Param class. The latter includes things such as a description (to be shown in the GUI), bounds, validators, ...
    • Need a way of marking parameters as advanced, so they can be hidden in default view of widgets.
  • Targets could be any key in the pipeline, but likely we will want some customization, i.e., the workflow may specify this.
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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source files or entry points are named; begin by reading the requirement and inspecting ESSsans, the suggested prototype candidate, along with the proposed Python helper module and ipywidgets approach. The issue is done only when a concrete sub-requirement defines the widget scope, inputs, outputs, and test cases; this high-level requirement does not specify those completion criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
jupyter-notebook, python
Domain
frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.