Skip to content

Queue Data Structure & UI Layout #382

Open

Description

@Relm-Arrowny

Part of #373 Queue Management & Experiment Control:

Evaluate and build a plan execution queue in the a panel of the interface, supporting plan stacking, insertion, deletion, and deferral.

Goals

Acceptance criteria : What journeys should the user be able to complete to consider your feature done
Be as specific as you can, check them off once they work. Add more if you find more requirements during development. Issue should only be considered done after all of them are checked

  • The user can assemble a series of bluesky plans, insert new ones, delete queued plans, or defer execution.

Tasks

base on the goals, deduce the tasks required. check them off once they're done

Note

A form of queuing exist as as service that push task to blueapi. Making use of the BlueapiClient which mean it is possible to add callback and get data via blueapi here.

   tasks: dict[str, Task]
   queue: list[str]
   history: list[str]
   call_queue: list[BlueapiCall]
   call_history: list[BlueapiCall]

The UI mock in this issue is aspirational. Two specific things it shows are not
confirmed to be supported: the Deferred queue state (see)
Library block editor.

  • Queue Design Evaluation: Evaluate the data structure (Linked List vs. standard Queue) for optimal insertion, deletion, and deferral performance.
  • BlueAPI Queue Connection: Connect the UI queue actions to the BlueAPI/RE queue endpoints.
  • Panel UI: Build the Queue list layout displaying queued, active, and completed plan states.

Screen shot

Image Image

Activity

  1. changed the title [-]Design and integrate the Queue UI component (linked list or event queue) supporting insertion, deletion, and deferral.[/-] [+]Queue Data Structure & UI Layout[/+] on Sep 9, 2026
  2. NKatti2011 commented on Sep 16, 2026

    @NKatti2011
    Collaborator

    Below include notes from meeting with @EmsArnold.

    Current understanding

    • The queue can only submit tasks, but it supports plugins that convert an experiment
      definition into Bluesky plans
      . Reference implementation:
      _construct_blueapi_tasks_from_experiment in i15_1_converter.py
    • Assumption to confirm: the queue also returns plan state/status, so the UI does not need
      a separate status channel. @jacob-williamson: confirmed. It gets task status in the queue - but not BlueAPI status. Queued, in progress, error, success. BlueAPI feedback is 'in progress' or 'finished'. BlueAPI websocket would get more feedback in the queue but not currently a priority. If the queue has a TiledID then that is enough to link up to Tiled instance to get more task information (scan starts etc)
    • We will need a small queue component in the UI regardless.

    Queue capabilities

    Known: tasks can be reordered, and inserted (not in front of 'in progress' task) and deleted.
    Unknown: whether tasks can be deferred. Needs confirming with the DAQ team (i15-1) the UI
    mock in #373 shows a Deferred state, so if the queue does not support it we either need
    it added or need to drop it from the design. @jacob-williamson Deferral is possible but not currently implemented - ticket to be made
    @jacob-williamson: i15-1 plugin allows for alignment to run the experiment plan and calibration tasks prior to a measurement.

    Related

    If interactive moves from the canvas have to go through the queue (see #380), that changes
    what this component needs to display as it would be carrying both scans and one-off moves. ** i-15 is one alignment per data collection which is added automatically in the queue. The transform matrix and offsets will be associated with the 'alignment plan' - not defined - in the csxid case? If alignment happening then it would be 'one plan' which then gets added to the queue.If has manual input because needs to be added to the queue automatically and then a plugin to save the transform/offset matrix.**

  3. NKatti2011 commented on Sep 16, 2026

    @NKatti2011
    Collaborator

    @jacob-williamson Deferral is doeable so can create a ticket for that in daq-queing-service

  4. Relm-Arrowny commented on Sep 25, 2026

    @Relm-Arrowny
    CollaboratorAuthor

    Just more note as I trying to make sense what we are building #387:
    This is almost like labview ux, so something like blocky would allow us to "script" the plans and send it to the queue and we should be able to stop add insert go back between blocks in the queue, which kind of solve the use case for this and #383

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    core dependencyMore needed to know before we can fully scope this work.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions