Triage Session Widget
Overview
The Triage Session Widget provides a structured workflow for reviewing and curating data across video frames. It implements a Mark / Commit / Recall pattern: you mark a starting frame, scrub through the video to review a region, then either commit (execute a batch operation on that region) or recall (abort and return to the mark point).
This widget is especially useful for:
- Line triage — reviewing deep-learning predictions and moving correct outputs to a ground-truth dataset.
- Interval labeling — inspecting scattered regions of a video and recording which frames have been reviewed.
- Multi-step workflows — chaining several operations (move data, record intervals, run transforms) into a single atomic commit.
The Triage Session Widget is accessed via the menu: View → Tools → Triage Session.
Widget Layout
The widget is divided into four sections:
Status
Displays the current state of the triage session:
- Idle — No marking in progress. Shows the current frame number.
- Marking (from X) — Marking is active from frame X. Shows the current frame number.
Controls
Three buttons control the triage workflow:
| Button | Enabled When | Action |
|---|---|---|
| Mark | Idle | Begin a triage range at the current frame |
| Commit | Marking (with valid pipeline) | Execute the pipeline for [mark_frame, current_frame] |
| Recall | Marking | Abort marking and return to Idle without executing anything |
Pipeline
The pipeline section defines what happens when you press Commit. A pipeline is a sequence of commands that operate on your data. You can configure the pipeline in two ways:
- Load JSON — Load a pre-written pipeline from a
.jsonfile. - Guided Editor — Visually build a pipeline by adding commands from a dropdown and filling in parameters with form widgets.
A collapsible Raw JSON section shows the underlying JSON representation and can be edited directly.
See Pipeline Configuration below for details.
Tracked Regions
Shows the number of intervals and total frame count in the tracked-regions DigitalIntervalSeries. This lets you see at a glance how much of the video has been triaged.
The Mark / Commit / Recall Workflow
┌───────┐ Mark ┌─────────┐ Commit ┌───────┐
│ Idle │ ────────► │ Marking │ ──────────► │ Idle │
└───────┘ └─────────┘ └───────┘
│
│ Recall
▼
┌───────┐
│ Idle │
└───────┘
- Navigate to the start of a region you want to process.
- Press Mark. The widget records the current frame as
mark_frameand transitions to the Marking state. - Scrub through the video to the end of the region you want to process.
- Press Commit. The pipeline executes with two runtime variables automatically set:
${mark_frame}— the frame where you pressed Mark.${current_frame}— the frame where you pressed Commit.
- The widget returns to Idle. The tracked-regions counter updates to reflect the committed range.
If you change your mind, press Recall to abort and return to Idle without executing anything.
Pipeline Configuration
A pipeline is a CommandSequenceDescriptor — a JSON document listing commands to execute in order. Each command has a command_name and a parameters object.
Available Commands
| Command | Description |
|---|---|
MoveByTimeRange |
Move entities in a frame range from one data object to another |
CopyByTimeRange |
Copy entities in a frame range (source unmodified) |
AddInterval |
Add an interval to a DigitalIntervalSeries |
ForEachKey |
Iterate a list and execute sub-commands for each item |
Variable Substitution
Parameters can reference variables using the ${variable} syntax:
- Runtime variables —
${mark_frame}and${current_frame}are automatically populated by the triage session when you commit. - Template variables — Define your own in the
variablessection of the pipeline JSON. These are substituted before execution.
Example Pipeline JSON
{
"name": "Line Triage Pipeline",
"version": "1.0",
"commands": [
{
"command_name": "MoveByTimeRange",
"description": "Move correct predictions to ground truth",
"parameters": {
"source_key": "predicted_whisker",
"destination_key": "ground_truth_whisker",
"start_frame": "${mark_frame}",
"end_frame": "${current_frame}"
}
},
{
"command_name": "AddInterval",
"description": "Record triaged region",
"parameters": {
"interval_key": "tracked_regions",
"start_frame": "${mark_frame}",
"end_frame": "${current_frame}",
"create_if_missing": true
}
}
]
}Using the Guided Editor
Instead of writing JSON by hand, you can build a pipeline visually:
- Click Add Command… to open the command picker.
- Select a command from the list (e.g.,
MoveByTimeRange). - Fill in the parameter form — text fields for data keys, number fields for frame indices. You can type
${mark_frame}or${current_frame}in text fields to use runtime variables. - Repeat to add more commands.
- Use the arrow buttons to reorder commands, or the × button to remove one.
The guided editor and raw JSON stay synchronized — edits in one are reflected in the other.
See Also
- How-To: Triage Line Data — step-by-step guide for the line triage workflow
- How-To: Label Video Intervals — step-by-step guide for the interval labeling workflow