Architecture¶
The layers of a typical application are:
![digraph architecture {
rankdir=TB;
node [shape=box];
"Script or GUI" -> "Measure subclass";
"Measure subclass" -> "MGraph";
"MGraph" -> "Device drivers";
"Device drivers" -> "Communication classes";
"Measure subclass" -> "Autosave and history";
"Measure subclass" -> "EUT monitor";
"Measure subclass" -> "Report";
"SCUQ" -> "Measure subclass" [style=dashed];
"SCUQ" -> "MGraph" [style=dashed];
"SCUQ" -> "Device drivers" [style=dashed];
}](../../_images/graphviz-be44ae35286b5bf07b3b7af6b24e71630a499400.png)
Script or GUI¶
The operator layer loads configuration, creates or restores the measurement class, and starts measurement and evaluation. Qt applications move long hardware operations into worker threads.
Measure and measurement classes¶
Measure provides shared infrastructure for logging, user interaction,
autosave, pickle history, device initialization, and safe shutdown. MSC,
TEMCell, and AmplifierTest add their domain workflows.
MGraph¶
MGraph reads DOT topology, evaluates conditions with an explicit context,
creates device instances, and calculates path corrections. Leveling and
amplifier protection also use the measurement graph.
Device drivers and communication¶
Base drivers define the common API for a device class. Instrument-specific drivers map that API to SCPI or proprietary commands. Communication classes encapsulate GPIB, serial, Prologix, and other transports.
SCUQ¶
SCUQ carries nominal value, unit, uncertainty, and correlation through the calculation. mpylab’s centralized helpers convert between linear and logarithmic representations.