[Requirement] UI components for selecting, configuring, and running workflows
Nobody has claimed this yet.
- 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:
- 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.
- Set workflow params in widgets.
- Optionally, define tables of params.
- Select targets for computation, could be a single final result, or multiple, including intermediate results.
- Run the workflow.
- 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
Paramclass. 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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