1
0

qiskit_experimentsを用いて状態操作

Posted at

Qiskit pulseを用いて状態操作では,qiskit.pulseを用いて状態操作を行いました.今回は同様の実験を,qiskit_experimentsを用いて,より簡単に行いたいと思います.

qiskit_experiments

Qiskit pulseを用いて状態操作では,マイクロ波の波形から逐一設定していました.これらの面倒な設定を代行してくれるのがqiskit_experimentsです(多分).

それでは,Qiskit pulseを用いて状態操作と同じ実験を実際に行ってみましょう.

Calibrations

import numpy as np
import qiskit.pulse as pulse
from qiskit.circuit import Parameter
from qiskit_experiments.calibration_management.calibrations import Calibrations
from qiskit_experiments.library.calibration.rough_frequency import RoughFrequencyCal
from qiskit import schedule
from qiskit import IBMQ


IBMQ.save_account("") #tokenを代入
#IBMQ.load_account()
provider = IBMQ.get_provider(hub='ibm-q')
backend = provider.get_backend('') #使えるbackendを選んでください

qubit = 0
cals=Calibrations.from_backend(backend)

# 単位変換係数
GHz = 1.0e9 # Gigahertz
MHz = 1.0e6 # Megahertz
us = 1.0e-6 # Microseconds
ns = 1.0e-9 # Nanoseconds

# おおよその周波数を取得
freq01_estimate = backend.defaults().qubit_freq_est[qubit]

# その周辺で周波数をスイープ
frequencies = np.linspace(freq01_estimate-30*MHz, freq01_estimate+30*MHz, 100)

spec = RoughFrequencyCal([qubit], cals, frequencies, backend=backend)
spec.set_experiment_options(duration=120*ns, sigma=15*ns, amp=0.05)

これでマイクロ波の波形の設定まで終わりました.Qiskit pulseを用いて状態操作と比較すると,簡略化されていることが分かります.一方で,公式ドキュメントのRoughFrequencyCalを見ると,波形はGaussianSquareしか対応していないことが分かります1.実際に波形について見てみると,

next(iter(circuit.calibrations["Spec"].values())).draw()
circuit.calibrations["Spec"]

#{((0,),
#  (-30000000.0,)): ScheduleBlock(ShiftFrequency(-30000000, DriveChannel(0)), Play(GaussianSquare(duration=240, sigma=30.000000000000004, width=0.0, amp=0.05, angle=0), DriveChannel(0)), ShiftFrequency(30000000, DriveChannel(0)), name="spectroscopy", transform=AlignLeft())}

と,GaussianSquareになっていることが分かります2.このように,波形の種類を制限してしまうという欠点もあります.

結果のプロットも簡単です.

spec_data = spec.run().block_for_results()
spec_data.figure(0)

result.png

自動でローレンツ関数でフィッティングしてくれます.嬉しいですね.Qiskit pulseを用いて状態操作と同様の結果が得られていることが分かります.

最後に

2量子ビット操作も実験してみたいですね.

Version Information

Software Version
qiskit 0.45.1
qiskit_experiments 0.5.4
System information
Python version 3.10.12
  1. 波形については,量子ビットのパルス操作シミュレーションでも少し紹介しました.

  2. durationやsigmaが設定した値の2倍となって表示されていることが分かります.おそらく単位が異なるのだろうと思っているのですが,原因はよく分かっていません.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0