v1.5.0 リリースノート
Qubex v1.5.0 は、v1.4 系以降で最大規模の更新です。既存の QuEL-1
向け Experiment / Measurement ワークフローは引き続き使えますが、
低レベル層を system / measurement / backend に明確に分離し、
QuEL-3 の初期対応を追加し、主要な実行経路から固定 2 ns
前提を外し、測定結果の正規化されたシリアライズモデルを導入しました。
v1.4.8 から更新する
場合は、設定ファイル、backend import、contrib 系 notebook を更新する前に
v1.5.0 移行ガイド を読んでください。
主な変更点
- 設定モデルが system-aware になりました。 1 つの実行可能な装置構成を
表す識別子として
system_idを正規の入口にし、system.yamlで backend 種別を定義し、wiring.yamlも同じsystem_idで引く形になりました。 - 低レベル API の責務を
qubex.system、qubex.measurement、qubex.backendに分離しました。Experimentの下で使う層を 明確に整理し、設定読み込み、schedule 実行、controller 実装の境界を はっきりさせています。 - QuEL-3 の初期対応を追加しました。 QuEL-3 向け設定読み込み、 target deploy planning、backend 実行、sequencer tooling、および専用の notebook / ガイドを含みます。
- 測定 API に async-first / sweep-first の経路を追加しました。
MeasurementとExperimentでrun_measurement()、run_sweep_measurement()、run_ndsweep_measurement()を公開し、 measurement 層にも専用の sweep builder / executor を追加しました。 - サンプリング周期は backend 由来になりました。 主要な measurement /
experiment の経路で固定
2 nsを前提にせず、実行中の backend からdtを解決するようになりました。 - 測定結果の canonical model を導入しました。
MeasurementResult、CaptureData、sweep result は JSON / NetCDF4 に保存できるDataModelベースの型になり、同期 API との互換のために legacyMeasureResult系も引き続き使えます。 - ドキュメントを全面的に整理しました。 英日両対応の user guide、 low-level API guide、examples、release notes を追加しています。
Breaking changes
- Python とインストール前提が変わりました。 Qubex は Python
3.10+が必要です。v1.5.0系の repository / docs はuv管理環境を前提とし、 実機向け依存関係はbackendextra で導入します。 qubex.backendは system モデルの集約 namespace ではなくなりました。ConfigLoader、SystemManager、ControlSystem、ExperimentSystem、TargetRegistryなどはqubex.systemに移動しました。backendのトップレベルは controller contract と backend 実装に集中しています。- 装置選択の正規入力は
system_idになりました。chip_idは 互換入力として残っていますが、公開向けの設定モデルはsystem_id+system.yaml+ system 単位の parameter directory です。 configuration_modeは優先順付きの制御レイアウトとして解決されるようになりました。ge-ef-crは「channel がある限り GE、EF、CR の順に割り当てる」ことを意味し、ge-cr-crは「GE、CR、CR の順に割り当てる」ことを意味します。 3 本未満の control channel しかない port では左側の役割だけを残すため、 2 channel port に対するge-ef-crは、暗黙のge-crではなくge-efに解決されます。Experimentの一部 helper API はqubex.contribへ移動しました。 RZX helper、multipartite entanglement helper、CR crosstalk helper、 Stark helper、simultaneous coherence helper、purity benchmarking helper などが該当します。旧Experimentメソッドは warning のあとに例外を送出します。- 古い内部 module への deep import は安定 API ではなくなりました。
qubex.pulse.library.*やqubex.simulator.quantum_systemのような内部パスではなく、qubex.pulse、qubex.simulator、qubex.core、あるいは companion package を使ってください。
v1.5.0 でまだ使えるが移行推奨のもの
以下は v1.5.0 でも互換のために残っていますが、warning 付きまたは shim
扱いです。notebook や script を更新する際に置き換えてください。
| 旧 API / 旧書き方 | 新 API / 新書き方 |
|---|---|
実行対象の主入力として chip_id を使う |
正規入力として system_id を使う |
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 または result.get_figure() |
result["figs"]、result["figures"] |
result.figures または result.get_figure(name) |
qubex.measurement.measurement_result などの legacy model module |
qubex.measurement.models |
qubex.experiment.result などの legacy model module |
qubex.experiment.models |
既知の制約
- async の
run_*API は public ですが、まだ Experimental 扱いです。 長期的な API 安定性を優先する場合は、同期のmeasure()、execute()、sweep_parameter()を優先してください。 - QuEL-3 対応は利用可能ですが、QuEL-1 経路より新しい実装です。時間に敏感な sweep、deploy 前提、backend 固有 helper は、広く展開する前に実機で 検証してください。
reset_awg_and_capunits()やSystemManager.modified_backend_settings(...)のような QuEL-1 固有の 保守用 hook には QuEL-3 側の完全な等価物がありません。QuEL-3 で未対応の 場合は例外ではなく互換目的の no-op として扱われます。
アップグレードの要点
v1.4.8 から更新する場合は、まず次を優先してください。
- system / configuration 関連の import を
qubex.backendからqubex.systemへ移す - 実行対象の指定を
chip_idからsystem_idに切り替え、 必要ならsystem.yamlを追加する shots、interval、linkup()、device_controllerなどの旧 API を置き換える- contrib 系 helper を使う notebook を
qubex.contrib呼び出しへ更新する - 固定
2 ns前提をやめ、backend 由来の sampling period を使う
移行ガイド には、それぞれの変更点について具体的な before / after 例を載せています。