On this page 9 sections
QCoDeS instruments through QcodesDriver
Generated by MHS/registry/build_registry.py on 2026-10-20T00:00:00Z from 26 registry records and their task cards. A plan, not a conformance claim.
- bridge_status:
available - helper:
QcodesDriver - exemplar:
MHS/drivers/labs/qcodes__qcodes_contrib_drivers
Launch
Every driver package starts the same way; per-repo configuration (environment id, model path, port, baud rate, VISA resource) lives in the package's driver.py, never in launch flags:
mhs serve <driver-dir>A package is done when python3 -m mhs.driver check <driver-dir> --backend fake exits 0 (evidence contract_checked; a fake never yields an MHS-Device level).
Registry coverage
- Repos: 26
- Decisions: bridge-runtime 2, family-config 3, reference 4, skip 17
- Waves: 3: 1, 5: 2, 9: 23
- Dispatchable now: 0
- Modes: hardware 6, simulated 4
Applicability
QCoDeS instrument classes: triage rule 9, family:qcodes. QcodesDriver is a configuration-only helper over the Python-object bridge. Each field is a Field in parameters plus one parameter_bindings entry: parameter (the attribute path of a Parameter), get: True, set (equal to Field.writable), timeout_ms (1..60000) and source_ref (the path:LINE[-END] of its constructor). Gate G7 proves a self.<name> = Parameter(...) assignment in __init__ of the card's entry class or its in-clone ancestry, with Parameter imported from qcodes.parameters and an explicit get_cmd (and set_cmd for a write); a same-file factory needs factory_ref. Parameters created by add_parameter, channel lists, submodules or dynamic factories are not provable today, and most QCoDeS drivers use add_parameter: such a card stops blocked with the G7 finding QCODES_PARAMETER_SOURCE.
The PM100D exemplar serves a Thorlabs PM100D optical power meter (R1): seven Parameters, two writes through cap.device.configure.v1 (one Limit.operator_required), the stop write("ABOR") (the abort command the source sends before it re-initializes a measurement), and a source-cited reason for every Parameter it does not serve. The QCoDeS driver guide gives the complete contract.
Capability mapping
| native call | OpenMHS target | notes |
|---|---|---|
Parameter.get() | a parameters Field and a parameter_bindings entry with get: True | every read is a new native get; cache and get_latest are never substituted |
Parameter.set(value) | a writable Field (set: True), served as cap.device.configure.v1 | the whole setter is awaited, steps and delays included; a QCoDeS validator becomes a sourced Limit only where it bounds the device, else Limit.operator_required |
Parameter unit, scale, get_parser, val_mapping | the Field's type and unit follow what get() returns after the parsers | a unit OpenMHS does not know (dB) goes into the description, not unit; a scale without a get_parser makes the upstream get fail on the reply string |
the instrument's write() / ask() | a native stop: safety_bindings.estop with invoke: write and a stop or abort command the source itself sends | the stop shares the VISA session with a running call; prefer a write that expects no reply |
Instrument.close() | native_close = "close" | teardown, never a capability |
| construction with a VISA address | lifecycle: the native.py factory | QCoDeS constructors talk to the instrument before they return; disclose those commands |
add_parameter, channels, submodules, ArrayParameter | not expressible | G7 reports QCODES_PARAMETER_SOURCE or QCODES_UNDECLARED_MEMBER: stop blocked |
Class ids come from python3 -m mhs.driver catalog search <words>. The deprecated classes cap.device.describe.v1, cap.world.state.v1, cap.world.snapshot.v1 and cap.world.restore.v1 are replaced by the protocol methods mhs.devices.get, mhs.resource.read, mhs.snapshot and mhs.restore.
Safety
The risk floor of a device is the highest catalogue risk_class of its classes (CAP-017); a driver may declare a higher risk, never a lower one. Hardware at R1 or above needs a native stop (safety_bindings.estop) and a non-empty safe state. Sources, heaters, magnets and RF outputs: parameter validators are not safety limits, risk follows the hazard table of the safety specification, and a model-authored R2 or R3 package never runs its hardware backend before a human signs reviewed_by. Cancelling a Parameter set is not a stop acknowledgement.
Fidelity
A source-shaped fake holds one stand-in per bound Parameter (get(), and set() where the upstream has a set_cmd) plus the instrument methods the driver calls, with placeholder values typed as the upstream parsers return them. It yields contract_checked evidence only: VISA timing, SCPI error queues and instrument state machines are not modelled.
Pitfalls
Contributed drivers vary in quality: check every parser, scale and set_cmd placeholder against the source. A MEAS:...? read reconfigures the instrument; a constructor that writes settings belongs to the hardware factory, not to a capability.
First task cards
gh.qcodes/qcodes_contrib_drivers: family-config, wave 3, rank 17,MHS/registry/tasks/labs/qcodes__qcodes_contrib_drivers.jsongh.aalto-qcd/qickodes: family-config, wave 5, rank 9,MHS/registry/tasks/labs/aalto-qcd__qickodes.jsongh.qcoherence/qcodes-drivers: family-config, wave 5, rank 44,MHS/registry/tasks/labs/qcoherence__qcodes-drivers.jsongh.microsoft/qcodes: bridge-runtime, wave 9, rank 24,MHS/registry/tasks/labs/microsoft__qcodes.jsongh.sldesnoo-delft/q1simulator: bridge-runtime, wave 9, rank 71,MHS/registry/tasks/labs/sldesnoo-delft__q1simulator.json
Sources
- Task cards:
MHS/registry/tasks/<track>/<owner>__<repo>.json(schema/taskcard.schema.json). - Triage rules and the helper table:
MHS/registry/triage.py; curated decisions:MHS/registry/overrides/. - Driver API and gate:
MHS/sdk/docs/driver-authoring.md; exemplars:MHS/drivers/. - QCoDeS driver contract and driver authoring.
- PM100D exemplar fake, tests, source facts and result/evidence scope.
Packages
Top 24 of 26 by stars. Filter the full list.
| Package | Tier | Ring | Evidence | Stars |
|---|---|---|---|---|
| microsoft/qcodes microsoft/qcodes: DAQ and electronic measurement model for microscopy imaging; optics; electronic measurement and DAQ (l | Tier A | 3 | agent read | 463 |
| bluesky/bluesky bluesky/bluesky: experiment orchestration for microscopy imaging; optics; electronic measurement and DAQ (lab instrument | Tier D | 3 | agent read | 242 |
| dicarlolab-delft/pycqed_py3 dicarlolab-delft/pycqed_py3: orchestration/scheduling for physics (lab instrumentation track). OpenMHS plan: reference o | Tier D | 3 | static scan | 74 |
| qcodes/qcodes_contrib_drivers qcodes/qcodes_contrib_drivers: instrument SDK for microscopy imaging; optics; electronic measurement and DAQ (lab instru | Tier B | 1 | contract checked | 69 |
| toolsforexperiments/plottr toolsforexperiments/plottr: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not | Tier D | 3 | static scan | 55 |
| rubenknex/qtplot rubenknex/qtplot: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not integrated | Tier D | 3 | static scan | 14 |
| toolsforexperiments/instrumentserver toolsforexperiments/instrumentserver: protocol implementation/bridge for electronic measurement (lab instrumentation tra | Tier D | 3 | static scan | 13 |
| qcodes/broadbean qcodes/broadbean: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not integrated | Tier D | 3 | static scan | 10 |
| aalto-qcd/qickodes aalto-qcd/qickodes: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: family-config w | Tier B | 3 | static scan | 9 |
| jonaskoelzer/qcodes-tutorials jonaskoelzer/qcodes-tutorials: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: n | Tier D | 3 | static scan | 7 |
| qutech/qumada qutech/qumada: orchestration/scheduling for electronic measurement (lab instrumentation track). OpenMHS plan: reference | Tier D | 3 | static scan | 7 |
| andncl/arbok_driver andncl/arbok_driver: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: not integrated | Tier D | 3 | static scan | 6 |
| knalj/qcodesgui knalj/qcodesgui: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not integrated | Tier D | 3 | static scan | 5 |
| sldesnoo-delft/q1simulator sldesnoo-delft/q1simulator: quantum electronic pulse sequence simulation for microscopy imaging; optics; electronic meas | Tier A | 3 | static scan | 5 |
| andncl/arbok_inspector andncl/arbok_inspector: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not inte | Tier D | 3 | static scan | 4 |
| decs-visa/qcodes_contrib_drivers decs-visa/qcodes_contrib_drivers: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: n | Tier B | 3 | static scan | 2 |
| levylabpitt/levylab-qcodes levylabpitt/levylab-qcodes: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not | Tier D | 3 | static scan | 2 |
| qcoherence/qcodes-drivers qcoherence/qcodes-drivers: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: family-c | Tier B | 3 | static scan | 2 |
| qnlsydney/qcodes_measurements qnlsydney/qcodes_measurements: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: n | Tier D | 3 | static scan | 2 |
| knightforest/qctools knightforest/qctools: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not integr | Tier D | 3 | static scan | 1 |
| ku-do-lab/peppermint ku-do-lab/peppermint: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not integr | Tier D | 3 | static scan | 1 |
| qcodes/qcodes_loop qcodes/qcodes_loop: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not integrat | Tier D | 3 | static scan | 1 |
| qcodespp/qcodespp qcodespp/qcodespp: control framework for electronic measurement (lab instrumentation track). OpenMHS plan: not integrate | Tier D | 3 | static scan | 1 |
| bluesky/bluesky-queueserver bluesky/bluesky-queueserver: orchestration/scheduling (lab instrumentation track). OpenMHS plan: reference only (host). | Tier D | 3 | static scan | 0 |