<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GUI components on Quatm</title><link>https://www.quatm.com/en/docs/gui-components/</link><description>Recent content in GUI components on Quatm</description><generator>Hugo</generator><language>en</language><atom:link href="https://www.quatm.com/en/docs/gui-components/index.xml" rel="self" type="application/rss+xml"/><item><title>Experiment browser</title><link>https://www.quatm.com/en/docs/gui-components/experiment-browser/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/experiment-browser/</guid><description>Overview quatm/GUI/browser/main_window.py provides the experiment browser (Browser): Quatm&amp;rsquo;s main application window, built on QMainWindow + QMdiArea as a multiple-document interface. The file selector on the left browses experiment scripts, the experiment queue, preparation station and looper are docked at the top, and each experiment occupies its own sub-window in the central MDI area.
Layout ┌───────────────┬───────────────────────────────┐ │ FileSelector │ QMdiArea (subwindow area) │ │ (file tree) │ ┌─────────────────────┐ │ │ │ │ ExperimentWindow │ │ ├───────────────┤ └─────────────────────┘ │ │ Queue / Prep │ │ │ / Looper dock │ │ └───────────────┴───────────────────────────────┘ Core components Component Module Description FileSelector browser/file_selector.</description></item><item><title>Experiment manager</title><link>https://www.quatm.com/en/docs/gui-components/experiment-manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/experiment-manager/</guid><description>Overview quatm/GUI/experiment/experiment_manager.py provides the experiment manager (ExperimentManager): the engine that takes tasks from the experiment queue (ExperimentQueue) and executes them. Its queue polling runs in a worker thread, and tasks are scheduled in the hierarchy measurement → repetition → sequence/scan → run.
Execution flow queue_fn (worker thread polls the queue continuously) └─→ run (task wrapper: cleanup is guaranteed however the task ends) ├─→ start_measurement (measurement start hook) ├─→ start_sequence (sequence/scan start hook) │ └─→ … several run calls with varying parameters … ├─→ end_sequence (sequence end hook) └─→ end_measurement (measurement end hook; clears the task table) Key methods Method Description queue_fn Continuously polls the queue for task dictionaries: selects tasks by priority, task number and scheduled time run Task run wrapper: finalises cleanly whether the task ends as Done/Terminated/Failed or is deleted pause Pauses the current experiment; calling it again resumes it terminate_experiment Graceful termination: lets the current run finish naturally before stopping start_measurement, etc.</description></item><item><title>Experiment queue</title><link>https://www.quatm.com/en/docs/gui-components/experiment-queue/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/experiment-queue/</guid><description>Overview ExperimentQ (quatm/GUI/experiment/experiment_queue.py) is the &amp;ldquo;experiment queue&amp;rdquo; panel of the experiment browser (Browser) main window: a task table driven by the queue table model ScheduleModel (module quatm/GUI/widgets/models.py). Task dictionaries are stored with the task number as primary key; each task is one record containing everything needed to run it, and the table sorts by priority priority (lower value first) and then by task number.
Task status The experiment manager (ExperimentManager) and the panel jointly maintain the status of each task:</description></item><item><title>Preparation station</title><link>https://www.quatm.com/en/docs/gui-components/preparation-station/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/preparation-station/</guid><description>Overview PrepStation is a tab in a top dock of the experiment browser (Browser) that acts as the &amp;ldquo;staging area&amp;rdquo; of the experiment queue: tasks that are not yet ready are kept here and are pushed into ExperimentQ for execution once confirmed. The task list is persisted in configuration/browser/prepfile.json and can be viewed and manipulated from the experiment console on the browser side (Web remote control).
Functions Operation Description Stage Clicking the Prep button in the experiment window stages the current parameters (including the scan definition) in the task list Push Copies the selected task into ExperimentQ (the queue retains the complete task number, priority and scan parameters) Add to loop Adds the selected task to a Looper loop group (push_to_looper) Reorder Moves tasks up/down to change their order Sleep Marks a task as Sleeping so that it takes no part in pushes for the time being Edit/view Opens the task parameter editor or a read-only view Save/load Saves a parameter set as JSON (experiment_params/&amp;lt;experiment&amp;gt;/&amp;lt;date&amp;gt;/) Task data structure Every staged task has the same structure as a queue task (generated by the experiment window&amp;rsquo;s setup_task_dict()):</description></item><item><title>Looper</title><link>https://www.quatm.com/en/docs/gui-components/looper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/looper/</guid><description>Overview Looper is a tab in the top dock of the experiment browser (Browser) (quatm/GUI/looper/). It manages groups of experiment tasks, executes the items of a group in order, and decides whether to jump or to stop based on the measurement results. Loop definitions are persisted in configuration/browser/looper/loopfile.json, and the same file is shared with the experiment console on the browser side (Web remote control).
Core logic LoopManager.run_loop(): loop from the start group forever until terminate └─→ run the items of the group in order ├─ Task: submit to the experiment queue and advance after it finishes │ (max count / max consecutive count can be set; reaching either ends the loop) └─ Conditional: read a data-stream field → compare (&amp;gt; &amp;gt;= == !</description></item><item><title>Experiment window</title><link>https://www.quatm.com/en/docs/gui-components/experiment-window/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/experiment-window/</guid><description>Overview quatm/GUI/browser/experiment_window.py provides the experiment window (ExperimentWindow): each experiment script corresponds to a control window carried by an ExperimentSubWindow in the browser&amp;rsquo;s MDI area. It generates a parameter grid automatically from the parameter objects declared by the experiment, and is responsible for submitting to the queue/preparer, building scans and loading/saving JSON parameters.
Components Component Description ExperimentSubWindow Graphical container: stores the window geometry and clamps the window inside the visible area ExperimentWindow Single-experiment control panel: parameter grid + submit/scan/save controls SequenceEditor Scan sequence dialog: sets start, stop and step count per dimension to generate an nD scan Key methods (ExperimentWindow) Method Description submit_to_queue Submits the current experiment to the experiment queue for execution (the unified entry point for all submission buttons) submit_next Submits with the highest priority, ahead of all existing tasks submit_to_prepper Submits to the preparation station (PrepStation) for staging setup_scan Builds the scan sequence (parameter values and randomised run order) from the scan definition setup_task_dict Builds the task dictionary stored in the queue/preparation station build_argument_dict Collects values from the parameter grid controls into a complete parameter dictionary save_params / load_params Saves parameters to JSON (named by date/time, optionally backed up) and loads them back adaptive_columns Re-flows the parameter grid columns to the window width (roughly one extra column per 200 px) edit_sequence Opens the scan sequence editor and applies the new sequence Usage from quatm.</description></item><item><title>Parameter system</title><link>https://www.quatm.com/en/docs/gui-components/parameter-system/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/parameter-system/</guid><description>Overview quatm/GUI/entries/dashboard.py provides a family of &amp;ldquo;parameter manager&amp;rdquo; controls: each manager maps one experiment parameter (stored in the property database, always in SI units internally) to a labelled input control, and synchronises bidirectionally between the interface and the property database.
Control class hierarchy BasicManager (base class of numeric parameter entries) ├── IntManager → integer spin box ├── FloatManager → float spin box (optional unit/step/decimals) ├── BoolManager → check box ├── ComboManager → drop-down box (string list) └── FrequencyManager → DDS frequency spin box (stores Hz, shows MHz) Usage (schematic) from quatm.</description></item><item><title>Property editor</title><link>https://www.quatm.com/en/docs/gui-components/property-editor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/property-editor/</guid><description>Overview quatm/GUI/entries/property_editor.py provides a property editing tool based on parametertree: it presents the key/value tree of the property database as an expandable, editable parameter tree with search filtering, and writes changes back immediately.
Components Component Description TreeEdit Extracts information from Properties and arranges it into a tree-view structure PropEdit Main property editing window (ParameterTree): subtree browsing, search, saving/deleting the selected node Usage from quatm.GUI.entries.property_editor import PropEdit editor = PropEdit(name=&amp;#34;device_status&amp;#34;, props=props, subtree=&amp;#34;/&amp;#34;, parent=parent) Note: subtree restricts the view to the properties under a given path; TreeEdit is responsible for converting the property dictionary into a tree of Parameter nodes.</description></item><item><title>Live plotting</title><link>https://www.quatm.com/en/docs/gui-components/live-plotting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/live-plotting/</guid><description>Overview quatm/GUI/entries/updating_plot.py provides live plotting: UpdatingPlot is a PlotItem subclass that subscribes to a data stream, periodically pulls new data and refreshes the curve; LivePlot is a widget container that embeds one UpdatingPlot, which makes it easy to dock into other windows as a panel.
Components Component Description UpdatingPlot Live plot item: subscribes to a data stream and keeps the curve updated LivePlot Widget container: embeds one UpdatingPlot and may carry an image stream name Key methods (UpdatingPlot) Method Description setnewData Periodically pulls new data; a one-dimensional array gets an x axis automatically, then the curve is updated according to the rotation flag updateConfiguration Cancels the old subscriptions, then resubscribes and rebuilds the curves from the stream list configured in the properties subscribe_window Opens the subscription editor to select data streams and reapplies the subscription configuration on close configureWindow Opens the property editor dialog to adjust settings and reapply the display configuration Usage from quatm.</description></item><item><title>LED indicator</title><link>https://www.quatm.com/en/docs/gui-components/led-indicator/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/led-indicator/</guid><description>Overview LedIndicator (quatm/GUI/widgets/qled.py) is an LED indicator button whose lit/unlit appearance can be toggled: a two-layer circular shell with a gradient centre, using highlighted colors when checked (lit) and dark colors when unchecked (dark). It is commonly used to show device connection status, experiment run status and the execution feedback of loop items.
Color modes Method Description set_green() Green scheme: bright green when checked, dark green when unchecked; usually indicates normal/ready set_red() Red scheme: bright red when checked, dark red when unchecked; usually indicates an error/warning set_cyan() Cyan scheme: used by looper condition items while they wait for data The lit/unlit (checked) state is controlled with setChecked(True/False); the onColor1/onColor2 and offColor1/offColor2 properties customise the primary/secondary colors of the on and off states.</description></item><item><title>GUI base classes</title><link>https://www.quatm.com/en/docs/gui-components/gui-base-classes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/gui-base-classes/</guid><description>Overview quatm/GUI/widgets/quatmQt.py defines the base classes and common controls of the Quatm GUI components: it provides window geometry persistence, the Properties property namespace, and a combo box with completion.
Class hierarchy QWidget → BWidget QFrame → BFrame QMainWindow → BMainWindow Base classes and mixins Component Description GeometrySaveMixin Persists window geometry to QSettings (keyed by window name); saves on close, move and resize (debounced) BWidget Quatm widget base class: carries the Properties namespace and geometry persistence BFrame Base class corresponding to QFrame, with the same behaviour as BWidget BMainWindow Main-window base class with geometry persistence and a property handle from quatm.</description></item><item><title>Image monitor</title><link>https://www.quatm.com/en/docs/gui-components/image-monitor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/image-monitor/</guid><description>Overview quatm/GUI/entries/image_monitor.py provides the automatically updating image display window (ImageDisplay): it periodically pulls the latest frame from the image stream subscribed in the properties, transforms it by resolution and offset and refreshes the display, optionally overlaying a mask stream in sync. It has built-in denoising, spot detection, saving of the current frame and property configuration (display levels, ROI, etc.).
Methods Method Description update_image Periodically pulls the image stream and refreshes the display frame by frame after resolution/offset transforms update_mask Pulls the mask stream and updates the overlay geometry from the mask resolution/offset noise_filter Denoises with a bilateral filter plus a median filter according to the property parameters spot_detector Binarises the image by threshold to detect bright spots saveCurrentImage Saves the currently displayed frame as PNG (named by time) subscribe_window Opens the subscription dialog to select image streams and resubscribes subscribe_mask Opens the subscription dialog to select mask streams and resubscribes configureWindow Opens the property editing dialog to adjust display levels, ROI and other parameters Usage from quatm.</description></item><item><title>Analysis manager</title><link>https://www.quatm.com/en/docs/gui-components/analysis-manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/analysis-manager/</guid><description>Overview quatm/GUI/entries/analysismanager.py provides the analysis manager: it lists the analysis scripts in a checkable tree table (name / script / category / input stream) and is responsible for starting and stopping subprocesses, monitoring and automatic restart, as well as adding, deleting and configuring analysis entries.
Components Component Description AnalysisManager Main panel: loads and organises the analysis entries, and provides delete/configure entry points TreeViewWidget Analysis script management tree: checking starts and stops, monitoring restarts automatically, add/delete/edit addAnalysisWidget Toolbar for adding an analysis entry (name / category / script / input stream) Functions Operation Description Check to start Checking an entry starts the corresponding analysis subprocess; unchecking stops it Stop endProcess: terminates first and waits briefly for exit, then forces the end on timeout Status refresh updateStatus: periodically checks whether the process is still running Clean up stray processes killVagabonding: terminates leftover processes of the same script from the previous round Add / configure / delete The toolbar registers new entries; a selected row can be configured or deleted Usage from quatm.</description></item><item><title>Stream monitor</title><link>https://www.quatm.com/en/docs/gui-components/stream-monitor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/stream-monitor/</guid><description>Overview quatm/GUI/streammonitor/ provides the stream monitor: MainWindow uses tabs to hold monitors for data streams (Data), image streams (Image), commands (Command), message logs (Message) and history (History), among others; each monitor tab is a StreamMonitor that subscribes to a single data stream and displays it in real time.
Components Component Description MainWindow Monitoring main window: multi-tab container + menu StreamMonitor Single-stream monitoring panel: subscribes to one data stream and displays it in real time MessageTableModel Message log table model (timestamp/source/level/content, colored by level) ImageTableModel Image stream metadata table (fixed time/source columns + dynamic key columns) AutoSortProxyModel Auto-sorting proxy model ordered by descending timestamp Monitoring types Tab Content Data Real-time curves/tables of numeric data streams Image Scientific image streams and their metadata Command Command / instruction streams Message Message log (timestamp/source/level/content) History Historical records Usage from quatm.</description></item><item><title>Sequence editor</title><link>https://www.quatm.com/en/docs/gui-components/sequence-editor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/sequence-editor/</guid><description>Overview quatm/GUI/editors/editor_sequencer.py provides the edit and simulate tool (formerly Combi / &amp;ldquo;open simulation window&amp;rdquo;): the CodeEditorParser composite main window combines the CodeEditor on the left with the sequence visualisation on the right: after editing an experiment script you can simulate a run with a single click, drawing the timing of each output channel as a step plot, which makes experiment sequences easier to debug.
Components Component Description CodeEditor Simple code editor: line numbers, Python highlighting, automatic indentation and completion PythonHighlighter Lightweight Python syntax highlighter LineNumberArea Line-number margin widget on the left of the editor ExperimentParser Parses an experiment: buildExperiment / simulateExperiment return the command stack ExperimentSequencer Draws a sequence as a step plot of each output channel against time CodeEditorParser Composite main window: Save / Simulate / Clear toolbar + dock layout Key methods Method Description saveFile (CodeEditor) Saves the current text to a file (returns True on success) simulateExperiment (CodeEditorParser) Simulates the current version of the experiment and hands the command stack to the sequence visualisation buildExperiment / simulateExperiment (ExperimentParser) Builds / simulates the experiment and returns the command stack plotSequence (ExperimentSequencer) Draws the sequence dictionary as a per-channel timing step plot Usage from quatm.</description></item><item><title>Process manager</title><link>https://www.quatm.com/en/docs/gui-components/process-manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/process-manager/</guid><description>Overview quatm/GUI/entries/processmanager.py provides the process manager: it reads the configuration by category (Servers / Driver / GUI / Viewer / Monitor) and generates a SingleProcess start/stop button panel for each script entry, so the whole experiment software suite is managed from one place. Processes are launched with the current interpreter, either as a script or as a module (python -m), carrying the project root and the parent-process watchdog environment.</description></item><item><title>Device manager</title><link>https://www.quatm.com/en/docs/gui-components/device-manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/device-manager/</guid><description>Overview quatm/GUI/entries/device_manager.py provides the device manager (VISADeviceLister): it scans the VISA instruments on the system through PyVISA, queries the device identity (*IDN?) and selects a driver file to bind, then adds the device to the selected list as a DeviceInfo record for use in device configuration.
Components Component Description VISADeviceLister VISA device list tool: two columns (enumeration/query + selected devices/driver files) DeviceInfo Device description: name, type, driver file and additional parameters Workflow 1.</description></item><item><title>Data storage</title><link>https://www.quatm.com/en/docs/gui-components/data-storage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/data-storage/</guid><description>Overview quatm/GUI/h5storage/ provides the HDF5 data storage GUI (a package split out of the former single file, with its public symbols re-exported at package level): three kinds of data manager — aggregate, single-stream and image — subscribe to data and save it automatically at a scheduled time, periodically, or on a Looper command; the current snapshot can also be written to an .h5 file in the background, and historical measurements read back from a file.</description></item><item><title>Live scroll plot</title><link>https://www.quatm.com/en/docs/gui-components/live-scroll-plot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/live-scroll-plot/</guid><description>Overview quatm/GUI/entries/live_plot.py provides live scrolling plots: ScrollWindow is a multi-subplot main window in which each ScrollPlot subplot subscribes to several channels of one data stream, maintains a ring buffer and scrolls scatter/curve data and a running average; PlotDataEditor provides the data-source drop-down panel.
Components Component Description ScrollWindow Multi-subplot scrolling main window: restores or creates subplots from the properties; the toolbar can append subplots ScrollPlot Scrolling subplot: ring buffer, scatter and running-average curves, context-menu operations PlotDataEditor Data-source selection panel: drop-down candidates written back to the properties/parent plot Key methods (ScrollPlot) Method Description feedData Pushes a new data block into the buffer array setnewData Periodically pulls new data into the buffer and refreshes the curves updatePlot Flushes the valid data in the buffer to the scatter and running-average curves running_mean Computes an N-point running average efficiently from cumulative sums and differences dataSelectDialog Selects the data channels displayed in this plot subscribe_window Opens the subscription editor to resubscribe the data stream configureWindow Pauses refreshing and edits this plot&amp;rsquo;s properties inline deletePlot Removes this plot from the parent window and clears its properties Usage from quatm.</description></item><item><title>Auto-save editor</title><link>https://www.quatm.com/en/docs/gui-components/auto-save-editor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/auto-save-editor/</guid><description>Overview AutoSaveEditor (quatm/GUI/editors/auto_save_editor.py) is a pop-up editor used to maintain the &amp;ldquo;time list&amp;rdquo; of periodic h5 automatic saves: each row = one (checkbox + date-time), and a checked row triggers one automatic save at the corresponding time. It is invoked by the data-storage panels.
Components Component Description AutoSaveEditor Dialog for editing the list: loads/writes back the properties, adds, deletes and edits rows, and confirms (Accept) DateTimeWidget Editing row for a single automatic save time: index + checkbox + date-time picker Main methods Method Function load_AutoSaveEditor_props(props, prop_name) Reads the saved date-times and check marks from the properties, padding them up to the maximum number of items update_datetime(idx, datetime_save) Saves a new date-time for a row update_ticked(idx, ticked) Saves the checked state of a row accept() Confirms: writes the list back to the properties and closes Usage from quatm.</description></item><item><title>Experiment helpers</title><link>https://www.quatm.com/en/docs/gui-components/experiment-helpers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/experiment-helpers/</guid><description>Overview Quatm wraps routine experiment calibration tasks as alignment/helper tools. The modules live in quatm/GUI/alignment/, together with a number of standalone entry-point widgets, and provide one-click runs and automatic optimisation.
ODT alignment helper — OdtAlignmentHelper quatm/GUI/alignment/odt_helper.py — builds a single-axis control block for each piezo mirror axis of xODT/cODT, and provides overall run/terminate together with compensation voltage and BA laser parameter settings. The complete alignment sequence for each axis is: full-range scan with the laser off → fine scan near the ion → publish the fit result → move to the target position.</description></item><item><title>Data models</title><link>https://www.quatm.com/en/docs/gui-components/data-models/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/data-models/</guid><description>Overview quatm/GUI/widgets/models.py provides the base classes that map Python dictionaries / lists onto Qt table models (derived from ARTIQ&amp;rsquo;s models). The table interfaces of the experiment queue, preparation station and looper are all built on them.
Core classes Class Description _SyncSubstruct Helper wrapping dictionary operations on the underlying container: triggers the refresh callback after append/insert/pop DictSyncModel Dictionary→table model base class: maps backing_store through the headers/dataNames columns ListSyncModel List→table model base class (the backing store is a list) ScheduleModel Model for the experiment queue (ExperimentQueue): tasks sorted by priority and then by task number PrepModel Model for the preparation station / looper: the backing store is a list whose order can be changed freely Usage from quatm.</description></item><item><title>Collapsible components</title><link>https://www.quatm.com/en/docs/gui-components/collapsible-components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/collapsible-components/</guid><description>Overview quatm/GUI/widgets/theexpandables.py provides the collapsible/expandable tree dialog CollapsibleDialog: each &amp;ldquo;section&amp;rdquo; consists of a tree item with an expand/collapse button and a content widget, which suits configuration interfaces and advanced parameter settings.
Components Component Description SectionExpandButton Button that expands/collapses a section CollapsibleDialog Dialog container; subclasses override define_sections() to define all panels CollapsibleDialog provides add_section(title, widget) to add a panel directly; subclasses may also override define_sections() to organise the tree structure in detail with add_button / add_widget.</description></item><item><title>Parameter boxes</title><link>https://www.quatm.com/en/docs/gui-components/parameter-boxes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/parameter-boxes/</guid><description>Overview quatm/GUI/widgets/arg_boxes.py provides widgets that bind experiment parameter classes to Qt input controls: when the user changes a value it is written back to the experiment parameter (stored internally in SI units, converted for display as needed). They are usually created automatically by the &amp;ldquo;experiment parameter panel / parameter system&amp;rdquo; according to the parameter type.
Controls Control Parameter type Description FloatBox Numeric parameter Floating-point input; converts units via unit and display_multiplier before writing back BoolBox Boolean parameter Checkbox; the value is written back as a boolean ComboBox List of strings Combo box; takes the value from the string list by the selected index Usage (schematic) from quatm.</description></item><item><title>Experiment parameter panel</title><link>https://www.quatm.com/en/docs/gui-components/experiment-parameter-panel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/experiment-parameter-panel/</guid><description>Overview The Dashboard (quatm/GUI/entries/dashboard.py) is the &amp;ldquo;control panel&amp;rdquo; main widget driven by the default experiment (DefaultExp): DefaultExp assembles the parameters of the whole machine from the device database automatically, and Dashboard then arranges these parameters in sections by integer/float/boolean and as a grouped grid, forming an adjustable parameter control interface.
Class hierarchy DefaultExp (experiment base class: auto-assembles device properties and groups them) └─ Dashboard (control panel: sections + grouped grid + adaptive column count) └─ manager widgets (IntManager / FloatManager / BoolManager / ComboManager …) Key features Automatic assembly: DefaultExp.</description></item><item><title>FPGA DAC control</title><link>https://www.quatm.com/en/docs/gui-components/fpga-dac-control/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/fpga-dac-control/</guid><description>Overview quatm/GUI/entries/fpga_controller.py provides simple manual FPGA control for debugging and calibration: each DAC voltage is set with a labelled -10 … +10 V spin box, and the 32 TTL outputs are set with a grid of checkboxes.
Components Component Description dacv(v) Converts -10..+10 V into the 16-bit raw DAC code used by the FPGA DACsingle A single DAC channel: a labelled -10..+10 V spin box, effective as soon as it is written DACvalues All 16 DAC channels stacked vertically TTLQW The 32 TTL outputs: an 8×4 grid of checkboxes, written as a single 32-bit mask simple_page The DAC + TTL manual control page centralWidget / mainQMW Tab container and simple main window (with a File/quit menu) Usage from quatm.</description></item><item><title>Background worker threads</title><link>https://www.quatm.com/en/docs/gui-components/background-worker-threads/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/background-worker-threads/</guid><description>Overview quatm/GUI/widgets/browser_workers.py and helper_workers.py provide a generic background-thread wrapper based on QRunnable: time-consuming tasks are executed in a thread pool, and results/exceptions/progress are passed back to the GUI thread through signals.
Signals Signal Description finished Task completed (no data) error(tuple) (exception type, value, traceback string) result(object) The result returned by processing, of any type progress(int) Progress percentage Usage from quatm.GUI.widgets.browser_workers import Worker worker = Worker(callback=my_long_task, arg1, kw=...) # passed through to the callback worker.</description></item><item><title>Experiment timeline</title><link>https://www.quatm.com/en/docs/gui-components/experiment-timeline/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/experiment-timeline/</guid><description>Overview quatm/GUI/entries/experiment_timeline.py provides the experiment timeline (Timeline): it loads an experiment timing JSON file (experiment.json), draws the variation of each DAC/TTL output channel over time as step subplots, and provides a checkbox panel of output channels to decide which curves are visible, which makes experiment timing logic easier to debug and verify.
Components Component Description Timeline Timeline viewer main window: file loading, plotting and channel control TimelinePlotter Timing visualisation widget: plots the state of each active output against time SelectorWidget Output-channel checkbox panel: select all / select none decides the visible curves Key methods (Timeline) Method Description load_file Loads and parses the timing JSON, constructs the time series and refreshes the channel selector plot_experimental_sequence Creates a separate subplot for each output according to the channel selection and draws a step plot decode_ttl_bitmask Splits the 32-bit TTL bitmask into set/clear commands for the individual channels construct_time_sequences Converts the step-wise timing into times/vals sequences organised per channel reverse_device_db_transformation Device-database reverse transformation: maps internal names back to readable names (including the gauge calibration table) Usage from quatm.</description></item><item><title>Scroll window</title><link>https://www.quatm.com/en/docs/gui-components/scroll-window/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/scroll-window/</guid><description>Overview quatm/GUI/entries/scrollwindow.py provides the scroll window (ScrollWindow): a BMainWindow subclass that acts as a multi-channel real-time scrolling data viewer main window. It lays out ScrollPlot subplots in the requested number (two per row), distributes data blocks to the corresponding subplots and refreshes them uniformly; PlotDataEditor provides the data/image stream selection drop-down.
Components Component Description ScrollWindow Main window: creates subplots by count, distributes data and refreshes ScrollPlot Scrolling subplot: subscribes to a data stream, ring buffer + periodic refresh PlotDataEditor Data-source selection panel: drop-down candidates written back to the property ydata Key methods Method Description initPlots Creates the scrolling subplots by count and places them in the layout (two per row) feedData Feeds a new data block into the buffer data array updatePlot Batch-refreshes the filled interval of the buffer into the curves of each subplot setnewData (ScrollPlot) Timer-driven data pull and curve refresh dataSelectDialog (ScrollPlot) Opens a dialog to select the data channels to plot subscribe_window (ScrollPlot) Opens the subscription editor to change the data stream configureWindow (ScrollPlot) Pauses refreshing and edits this plot&amp;rsquo;s configuration inline Usage from quatm.</description></item><item><title>Subscription editor</title><link>https://www.quatm.com/en/docs/gui-components/subscription-editor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/subscription-editor/</guid><description>Overview SubscriptionEditor (quatm/GUI/editors/subscription_editor.py) manages the program&amp;rsquo;s subscriptions to data streams/image streams: it loads the stored subscriptions from the property database, lists the available streams for selection, supports adding/deleting, and hot-updates the list when properties change. It is commonly used as the data-source selection component of live plotting/monitoring panels.
Main methods Method Function loadSubscriptions() Reads the saved subscriptions from the property database and loads them into the list update_streamlist() Rebuilds the drop-down candidates from the currently available data streams add() Adds the stream selected in the combo box to the subscription list and synchronises the properties deletemarked() Removes the subscription items marked for deletion and synchronises the properties handle_property_changes(changes) Listens for property changes, refreshes the list and broadcasts the change Usage from quatm.</description></item><item><title>Table parameter</title><link>https://www.quatm.com/en/docs/gui-components/table-parameter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/table-parameter/</guid><description>Overview quatm/GUI/widgets/table_parameter.py provides a table editing node for ParameterTree: the table_parameter parameter type works together with the table_parameterItem widget item to edit numpy structured arrays (such as calibration tables and scan sequences) directly in the parameter tree.
Components Component Description table_parameter Parameter type: accepts a numpy structured array as its value table_parameterItem Corresponding widget item: creates a QTableWidget as the editor from the array dtype table_parameterItem creates columns from the array dtype (including field name/type), and cell edits are written back to the array immediately; valueIsDefault() is used to decide whether the value needs to be persisted separately.</description></item><item><title>Remote ROI</title><link>https://www.quatm.com/en/docs/gui-components/remote-roi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/remote-roi/</guid><description>Overview quatm/GUI/widgets/ROI.py provides ROI: it inherits ROI and communicates its color, position and size through the central property database under a unique name, so that remote clients can view and adjust the ROI region in sync.
Methods Method Description update_from_properties Refreshes the ROI pen color and geometry from the color/position/size stored in the properties Usage from quatm.GUI.widgets.ROI import ROI roi = ROI(name=&amp;#34;analysis_roi&amp;#34;, parent=view) # name must be unique; duplicate names share properties roi.</description></item><item><title>Image viewer</title><link>https://www.quatm.com/en/docs/gui-components/image-viewer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/image-viewer/</guid><description>Overview quatm/GUI/entries/image_group.py provides the image viewing window (ImageWindow): the central ImageDisplay is the main widget, with panels such as the row/column profiles and the histogram LUT docked around it, for real-time monitoring and analysis of imaging experiments.
Layout Dock area Widget Purpose Central ImageDisplay Subscribes to and automatically refreshes an image stream; can overlay a mask Top LivePlot (row profile) Intensity profile of an image row Right LivePlot (column profile) Intensity profile of an image column Left HistogramLUTWidget Histogram color scale: level range and false-color mapping Each profile plot is a LivePlot container in which an UpdatingPlot subscribes to the corresponding data stream and refreshes in real time (see Live plotting for details).</description></item><item><title>Property checker</title><link>https://www.quatm.com/en/docs/gui-components/property-checker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/property-checker/</guid><description>Overview PropertiesChecker (quatm/GUI/entries/properties_checker.py) is a property-distribution watchdog: it sets a marker through one property handle and reads it back through a second handle; if the hub has not propagated the change, it raises an alert indicating that the property service may have stalled. The check runs periodically on a timer, so the window is displayed normally and the GUI event loop stays responsive.
Usage from quatm.GUI.entries.properties_checker import PropertiesChecker checker = PropertiesChecker(parent=parent) checker.</description></item><item><title>Data plotter</title><link>https://www.quatm.com/en/docs/gui-components/data-plotter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.quatm.com/en/docs/gui-components/data-plotter/</guid><description>Overview quatm/GUI/alignment/plotter.py provides the data plotter (DataPlotterWidget): it subscribes to and plots data acquired during a measurement. It supports switching the data source, an x-axis selector and multiple y-axis selectors; each y axis is processed through a configurable data chain (scaling factor → filter → binning/fitting) before being drawn in the plot area, and the result can be exported to PDF.
Components Component Description DataPlotterWidget Main plot: data source drop-down, x-axis selector and several y-axis selectors (right-click toggles the configuration panel) YAxisWidgetHelper y-axis data chain: scaling factor, filter, binning and fitting Key methods Method Description setDataSource Sets or changes the data source checkForNewData / updateDatasources Checks for new data/new data sources and refreshes plotData Adds a set of x/y data to the plot area as a new curve toggleConfig Toggles the data source and y-axis configuration panels exportpdf Exports the current plot as a PDF suitable for archiving clear Clears the data summary and all curves in the plot area Y-axis chain (YAxisWidgetHelper): updateYscale sets the scaling factor, the context menu offers addBinning for binning and addFitting for fitting (such as Gaussian/linear), and reevaluateData re-runs the whole data chain after a filter or similar change.</description></item></channel></rss>