Experiment framework

The experiment runtime system: task queue/execution engine, loops, sequence editing, timing inspection and run monitoring.

Overview

The experiment framework covers the complete chain from writing an experiment through scheduling to running it:

  • Experiment scripts: subclass Experiment and implement build / run (for an introduction see Writing your first experiment; for device mapping see Configuring instruments);
  • Scheduling and execution: the experiment queue (ExperimentQueue) → the execution engine (ExperimentManager) fetches tasks by priority/reservation time; the preparation station and the looper participate in enqueueing;
  • Editing and monitoring: sequence editing/simulation, FPGA timing inspection, run monitoring, the multithreaded task framework and the base window widgets.

Scheduling and execution

PageModuleDescription
Experiment Queue Managerexperiment/experiment_queueTabular task queue
Experiment Run Managerexperiment/experiment_managerExecution engine (measurement/sequence/run)
Experiment Run Schedulerexperiment/Overview of the scheduling mechanism
Experiment Preparationexperiment/prepstationPreparation station (stage/push)
Loop Managerlooper/Conditional loop execution
Process Managerentries/processmanagerProcess start/stop panel

Editing, timing and monitoring

PageModuleDescription
Sequence Editoreditors/editor_sequencerCode editing + sequence simulation
Timeline Viewerentries/experiment_timelineFPGA timing visualisation
Run Monitorstreammonitor/Data/message monitoring
Experiment Browserbrowser/Main application browser

Widgets and utilities

PageModuleDescription
Data Widgetswidgets/arg_boxesParameter input widgets
Experiment Parameter Managerentries/dashboardDefault parameter system
Collapsible Sectionswidgets/theexpandablesCollapsible sections
Preparation Queue Managerwidgets/modelsQueue/preparation table models
Worker Task Managerwidgets/browser_workersWorker threads
Multithreaded Worker Frameworkwidgets/helper_workersWorker threads
Auto-save Editoreditors/auto_save_editorPeriodic save times
Base Window Widgetswidgets/quatmQtGUI base widgets

Data Widgets

Experiment parameter editing widgets: FloatBox/BoolBox/ComboBox, writing changes straight back to the parameter attribute.

Base Window Widgets

GUI base widgets: BWidget/BFrame/BMainWindow and searchable combo boxes, etc.

Sequence Editor

Experiment code editing and sequence simulation: syntax highlighting, parsing and output-channel timing visualisation.

Experiment Run Manager

The core experiment execution engine: takes tasks from the queue and schedules them by measurement/sequence/run level.

Experiment Browser

The main application browser: file tree, queue/preparation station/looper and MDI experiment windows.

Experiment Queue Manager

Tabular experiment task queue: task dictionary, priority sorting, pause/termination and reserved execution.

Worker Task Manager

QRunnable multithreaded tasks: callback execution in Worker + WorkerSignals signalling back to the main thread.

Auto-save Editor

Editor for the list of periodic HDF5 auto-save points in time: checkbox + date/time save instants.

Timeline Viewer

FPGA experiment timing visualisation: a step-plot viewer of the DAC/TTL output channels over time.

Multithreaded Worker Framework

QRunnable multithreaded worker framework: callback execution in Worker + WorkerSignals signalling back to the main thread.

Loop Manager

Conditional loop executor: automatically repeat/jump/terminate a group of tasks based on measurement results.

Preparation Queue Manager

Table models for prepared tasks (preparation station): the list model PrepModel and the queue ScheduleModel.

Experiment Run Scheduler

The run scheduling mechanism: central enqueueing in the queue, workers fetching tasks by priority/reservation time.

Experiment Preparation

The preparation station: staging, editing, ordering and pushing tasks before they are sent to the queue (prepfile persistence).

Process Manager

Distributed process panel: start/stop background processes grouped as Servers/Driver/GUI/Viewer/Monitor.

Experiment Parameter Manager

The default experiment parameter system: DefaultExp aggregates device parameters, Dashboard edits them grouped by device.

Run Monitor

Data-stream monitoring GUI: data/image/command/message multi-tab monitoring and single-stream panels.

Collapsible Sections

Collapsible-section dialog: SectionExpandButton toggling + CollapsibleDialog defining the sections.