パルスシーケンスの組み方
PulseSchedule は、Qubex でパルスシーケンスを表す共通コンテナです。
Experiment と QuantumSimulator の両方で使われる共有概念です。
PulseSchedule は何に使うか
- 1 つ以上の channel にまたがる時系列の pulse event を表現する
- 実機ワークフローとシミュレーションワークフローのあいだで同じ
Pulseオブジェクトや schedule パターンを再利用する - まずパルスシーケンスを組み立て、その後で実行方法や解析方法を選ぶ
最小パターン
PulseSchedule インスタンスを作り、with ブロックの中で pulse を追加します。
次のブロックに進む前にチャンネルを揃えたいときは barrier() を使います。
import numpy as np
import qubex as qx
Q0 = "Q00"
Q1 = "Q01"
pulse = qx.pulse.Gaussian(duration=64, amplitude=0.05, sigma=16)
schedule = qx.PulseSchedule()
with schedule as s:
s.add(Q0, pulse)
s.add(Q0, pulse.scaled(2.0))
s.barrier()
s.add(Q1, pulse.shifted(np.pi / 6))
schedule.plot()
使い方
add(channel, pulse): 1 つのチャンネルに pulse event を配置するbarrier(): 次のブロックに入る前にチャンネルを揃えるbarrier(labels=[...]): 特定のチャンネルだけに barrier を適用するcall(schedule): 別のPulseScheduleオブジェクトをその場に挿入する- 自動 padding:
withブロックを抜けると、各チャンネルは同じ長さに揃えられる Pulseの再利用:scaled()やshifted()を使って、1 つのベースPulseから派生Pulseを作れる
このあと使う場面
Experiment: 実機で流すワークフローには クイックスタート から進むQuantumSimulator: 同じPulseオブジェクトと schedule の組み方を QuantumSimulator サンプルワークフロー で再利用する低レベル API: 低レベル API 概要 から、measurement実行や backend 固有経路へ進む