Summary: UI components and workflow interfaces
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1
- Forks
- 3
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 17
Description
Overview
I would like to summarize where we are after the widget hackathon (see scipp/ess#152), what key problems to be solved we have identified, etc. The goal is to decide on a course of action, e.g., when key features are essential and must be implemented, what can we defer or ignore.
Key open questions
-
Workflowclasses in technique packages: -> Keeping functions creating pipeline, interface for UI uses free helper functions- Should these subclass
Pipeline, or wrap it, or simply create one? Before the hackathon it was the latter, which had significant advantages when directly interacting with the created workflows (pipelines) in a notebook. We have seen problems with both the subclassing and composition approach that would need to be resolved. - Another option to consider is separating the existing workflows (keeping them as they are) from the corresponding interfaces for the UI. This seems feasible since there is no state in workflows aside from the
Pipelineobject. - Users will still want to modify the workflows, e.g., by adding custom correction steps, which may also require new input parameters. The setup mechanism must be compatible with this.
- Should these subclass
- Dealing with
map-reducetransformations of workflows (usually wrapped in helper functions). -> Using global registry for mappers. Maybe need to be refined to workflow-specific mappers in the future, but this works for now.- This must be linked to "mappable" parameters where users can input a list or table of values. We also need to ensure this is compatible with how results are computed, since keys will get duplicated (may need
sciline.compute_mapped).
- This must be linked to "mappable" parameters where users can input a list or table of values. We also need to ensure this is compatible with how results are computed, since keys will get duplicated (may need
- How to embed or interact with Plopp? Plots will need to be interactive.
- How to define layouts for better UX?
- How to define param descriptions from docstrings? This currently does not work with types defined via
NewTypeor forGenericinstances.
Major features (not curated)
- Dump and load config, to avoid need to repeatedly re-enter same info into many widgets.
- Put workflow outputs into a registry, so they can be accessed programmatically, as well as displayed in a special UI component. This would open the doors to allowing plotting of selected outputs and much more.
- Pass objects from the global (or other) namespace as workflow inputs. For example, a user may have computed the
DirectBeamorBeamCenterusing workflow A (possibly using widget A), and now wants to set it as input to workflow B (in widget B). - We probably want to make the workflow selector optional: In many cases a workflow is either pre-defined (user Python code) or fixed (one notebook per purpose). Split out into a separate widget?
- Generate Python code to set parameters.
- Run workflows on a table of files (independently, not necessarily using
map-reduce) producing a table of outputs.
Architecture and design
- Should/can we use a standard pattern like MVP or MVC for the UI?
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
Start by reviewing the workflow and UI questions in this issue together with the referenced scipp/ess#152 hackathon discussion. Map the unresolved choices around Plopp interaction, layouts, parameter descriptions, and workflow interfaces; done means agreeing on a documented course of action and prioritization for the listed features.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100