Skip to content

Experiment mitigation orchestration

scpn_quantum_control.hardware.experiment_mitigation defines six hardware-runner workflows for zero-noise extrapolation, calibration drift, dynamical decoupling, and decoherence scaling. These functions orchestrate circuit construction, submission, result parsing, and classical comparison. They do not authenticate a runner or choose a backend.

Execution boundary

Every function receives an already configured HardwareRunner. Calls may submit sampler work and therefore inherit the runner's credential, approval, provider, cost, timeout, and backend policies. Importing the module performs no submission. The functions print progress to standard output; the noise baseline and dynamical-decoupling workflows also ask the runner to save one result file.

Tests use deterministic boundary doubles to verify orchestration without claiming provider or device evidence. A passing local test proves result-schema and routing behaviour only. It does not validate hardware noise reduction, calibration stability, or a device-specific extrapolation model.

Zero-noise extrapolation

kuramoto_4osc_zne_experiment and kuramoto_8osc_zne_experiment build a fixed Kuramoto evolution, fold the circuit at each requested scale, submit X/Y/Z measurement batches, and apply a first-order extrapolation. Their default scales are [1, 3, 5]; an explicit list is preserved exactly.

zne_higher_order_experiment extends the default scale list to [1, 3, 5, 7, 9] and reports every polynomial order from one through poly_order. Its outputs are fits to the measured points, not proof that the zero-noise limit is physically accurate.

Calibration and decoupling

noise_baseline_experiment submits a four-qubit near-identity circuit and returns measured and classical order parameters plus per-qubit expectations. It saves the first sampler result as noise_baseline.json through the runner.

upde_16_dd_experiment submits raw and dynamical-decoupling variants of the same 16-layer evolution. It reports both order parameters and the decoupled expectation vectors, then saves the raw sampler result as upde_16_dd.json. The returned comparison does not establish that decoupling improves every backend or calibration window.

Decoherence scaling

decoherence_scaling_experiment evaluates a caller-supplied qubit-count list, or [2, 4, 6, 8, 10, 12] by default. It records transpiled depth and measured versus classical order parameters, then fits R_hw / R_classical = exp(-gamma * depth) over positive ratios. Fewer than two valid points produce NaN fit metrics. The fit is a bounded diagnostic for the submitted circuits, not a universal per-gate error rate.

Result handling

All functions return JSON-oriented dictionaries. NumPy-derived scalar values remain numeric, and expectation arrays are converted to lists where exposed. Callers must retain runner provenance, calibration, job identifiers, and raw counts when using these summaries as evidence. Do not publish or compare a result without the runner's associated custody record.

For exact signatures and return fields, see the Experiment mitigation API.