v1.5.0 release notes
Qubex v1.5.0 is the largest update since the v1.4 line. It keeps the
core QuEL-1 Experiment and Measurement workflows available for existing
users, but it substantially reorganizes the lower layers around explicit
system, measurement, and backend responsibilities, adds initial QuEL-3
support, removes fixed 2 ns timing assumptions from key execution paths, and
introduces canonical serializable measurement models.
If you are upgrading from v1.4.8,
read the v1.5.0 migration guide before updating
configuration files, backend imports, or contrib-heavy notebooks.
Highlights
- System-aware configuration is now the default model.
system_idis the canonical selector for one runnable hardware setup,system.yamldefines the backend family for that setup, andwiring.yamlis keyed by the samesystem_id. This makes multi-system and multi-backend deployments explicit. - The low-level stack is now split into
qubex.system,qubex.measurement, andqubex.backend. Configuration loading, schedule execution, and controller implementations are now separated more clearly for users building tooling belowExperiment. - Initial QuEL-3 support is included. Qubex now contains QuEL-3-specific configuration loading, target deployment planning, backend execution, and sequencer tooling, together with dedicated examples and user-guide pages.
- Measurement APIs now support async-first and sweep-first workflows.
MeasurementandExperimentexposerun_measurement(),run_sweep_measurement(), andrun_ndsweep_measurement(), and the measurement layer now includes dedicated sweep builders and executors. - Timing is derived from the backend instead of being assumed to be
2 ns. Key measurement and experiment paths now resolve sampling period from the active backend, which enables QuEL-3 timing and reduces hidden QuEL-1-only assumptions in analysis and scheduling code. - Canonical result models now support structured serialization.
MeasurementResult,CaptureData, and sweep-result models are serializableDataModelobjects with JSON and NetCDF4 persistence, while synchronous legacyMeasureResultcompatibility remains available where needed. - Documentation was overhauled. The repository now ships a full English and Japanese documentation set with installation, configuration, low-level API guides, notebooks, and release-note pages.
Breaking changes
- Python and installation baseline changed. Qubex now requires Python
3.10+. The repository and documentation for thev1.5.0line assume auv-managed environment, and backend dependencies are installed through thebackendextra. qubex.backendis no longer the catch-all namespace for system models.ConfigLoader,SystemManager,ControlSystem,ExperimentSystem,TargetRegistry, and related system-side types now live underqubex.system. The top-levelbackendnamespace is now focused on controller contracts and concrete backend implementations.system_idis now the canonical hardware selector.chip_idis kept as a compatibility input, but the new public configuration model issystem_id+system.yaml+ per-system parameter directories.configuration_modenow resolves as a priority-ordered control layout.ge-ef-crnow means "assign GE, then EF, then CR as channels are available", andge-cr-crnow means "assign GE, then two CR channels." Ports with fewer than three control channels keep the leftmost roles, so a two-channel port now resolvesge-ef-crtoge-efinstead of implicitly falling back toge-cr.- Several
Experimenthelper APIs moved out of the class and intoqubex.contrib. This includes RZX helpers, multipartite entanglement helpers, CR crosstalk helpers, Stark helpers, simultaneous coherence helper workflows, and purity benchmarking helpers. The oldExperimententry points now warn and raise instead of silently delegating. - Deep imports into old internal pulse and simulator modules are no longer
stable. Import from
qubex.pulse,qubex.simulator,qubex.core, or the companion packages directly instead of importing removed internal modules such asqubex.pulse.library.*orqubex.simulator.quantum_system.
Deprecated but still supported in v1.5.0
The following paths still work in v1.5.0, but they emit warnings or are now
compatibility shims. Migrate away from them when you update notebooks and
scripts.
| Old usage | New usage |
|---|---|
chip_id as the primary runtime selector |
system_id as the canonical selector |
shots= |
n_shots= |
interval= |
shot_interval= |
Experiment.linkup() |
Experiment.connect() |
Experiment.device_controller |
Experiment.backend_controller |
Measurement.qubits |
Measurement.qubit_labels |
qubex.analysis.visualization |
qubex.visualization |
result["fig"], result["figure"] |
result.figure or result.get_figure() |
result["figs"], result["figures"] |
result.figures or result.get_figure(name) |
qubex.measurement.measurement_result and other legacy model modules |
qubex.measurement.models |
qubex.experiment.result and other legacy model modules |
qubex.experiment.models |
Known limitations
- The async
run_*measurement APIs are public, but they should still be treated as Experimental. Prefer synchronousmeasure(),execute(), andsweep_parameter()when long-term API stability matters more than async integration. - QuEL-3 support is available, but it is newer than the QuEL-1 path. Validate timing-sensitive sweeps, deployment assumptions, and backend-specific helper flows on your own hardware before broad rollout.
- QuEL-1-specific maintenance hooks such as
reset_awg_and_capunits()andSystemManager.modified_backend_settings(...)do not have a QuEL-3 equivalent. When unsupported on QuEL-3, they are accepted as compatibility no-ops instead of raising.
Upgrade guidance
When upgrading from v1.4.8, prioritize these steps:
- Move system/configuration imports from
qubex.backendtoqubex.system. - Switch runtime selection from
chip_idtosystem_id, and addsystem.yamlif your deployment does not already have one. - Replace deprecated kwargs and properties such as
shots,interval,linkup(), anddevice_controller. - Update any contrib-heavy
Experimentnotebooks to callqubex.contribfunctions explicitly. - Remove hardcoded
2 nstiming assumptions and use backend-derived sampling period values instead.
The migration guide includes concrete before/after examples for each of these changes.