Skip to content

Commit e19e45c

Browse files
authored
Update calibration tests to test _transpiled_circuits (#1157)
### Summary Previously, the tests were calling `transpile()` on the output of `experiment.circuits()` even though `BaseCalibrationExperiment._transpiled_circuits()` uses a custom pass manager and does not call `transpile()` itself.
1 parent 2a77748 commit e19e45c

File tree

4 files changed

+20
-34
lines changed

4 files changed

+20
-34
lines changed

test/library/calibration/test_drag.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
from qiskit.exceptions import QiskitError
2323
from qiskit.pulse import DriveChannel, Drag
2424
from qiskit.qobj.utils import MeasLevel
25-
from qiskit import transpile
2625

2726
from qiskit_experiments.library import RoughDrag, RoughDragCal
2827
from qiskit_experiments.library.characterization.analysis import DragCalAnalysis
@@ -176,14 +175,13 @@ def setUp(self):
176175
def test_default_circuits(self):
177176
"""Test the default circuit."""
178177

179-
backend = MockIQBackend(DragHelper(gate_name="Drag(xp)", frequency=0.005))
180178
drag = RoughDrag([0], self.x_plus)
181179
drag.set_experiment_options(reps=[2, 4, 8])
182180
drag.backend = MockIQBackend(DragHelper(gate_name="Drag(xp)"))
183-
circuits = drag.circuits()
181+
circuits = drag._transpiled_circuits()
184182

185183
for idx, expected in enumerate([4, 8, 16]):
186-
ops = transpile(circuits[idx * 51], backend).count_ops()
184+
ops = circuits[idx * 51].count_ops()
187185
self.assertEqual(ops["Drag(xp)"], expected)
188186

189187
def test_raise_multiple_parameter(self):

test/library/calibration/test_fine_amplitude.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import numpy as np
1616
from ddt import ddt, data
1717

18-
from qiskit import pulse, transpile
18+
from qiskit import pulse
1919
from qiskit.circuit import Gate
2020
from qiskit.circuit.library import XGate, SXGate
2121
from qiskit.pulse import DriveChannel, Drag
@@ -251,9 +251,9 @@ def test_run_x_cal(self):
251251
# Initial pulse amplitude
252252
init_amp = 0.5
253253

254-
amp_cal = FineXAmplitudeCal([0], self.cals, "x")
254+
amp_cal = FineXAmplitudeCal([0], self.cals, "x", backend=self.backend)
255255

256-
circs = transpile(amp_cal.circuits(), self.backend, inst_map=self.cals.default_inst_map)
256+
circs = amp_cal._transpiled_circuits()
257257

258258
with pulse.build(name="x") as expected_x:
259259
pulse.play(pulse.Drag(160, 0.5, 40, 0), pulse.DriveChannel(0))
@@ -265,12 +265,12 @@ def test_run_x_cal(self):
265265
self.assertEqual(circs[5].calibrations["sx"][((0,), ())], expected_sx)
266266

267267
# run the calibration experiment. This should update the amp parameter of x which we test.
268-
exp_data = amp_cal.run(self.backend)
268+
exp_data = amp_cal.run()
269269
self.assertExperimentDone(exp_data)
270270
d_theta = exp_data.analysis_results(1).value.n
271271
new_amp = init_amp * np.pi / (np.pi + d_theta)
272272

273-
circs = transpile(amp_cal.circuits(), self.backend, inst_map=self.cals.default_inst_map)
273+
circs = amp_cal._transpiled_circuits()
274274

275275
x_cal = circs[5].calibrations["x"][((0,), ())]
276276

@@ -290,22 +290,23 @@ def test_run_sx_cal(self):
290290
# Initial pulse amplitude
291291
init_amp = 0.25
292292

293-
amp_cal = FineSXAmplitudeCal([0], self.cals, "sx")
293+
backend = MockIQBackend(FineAmpHelper(-np.pi * 0.07, np.pi / 2, "sx"))
294+
amp_cal = FineSXAmplitudeCal([0], self.cals, "sx", backend=backend)
294295

295-
circs = transpile(amp_cal.circuits(), self.backend, inst_map=self.cals.default_inst_map)
296+
circs = amp_cal._transpiled_circuits()
296297

297298
with pulse.build(name="sx") as expected_sx:
298299
pulse.play(pulse.Drag(160, 0.25, 40, 0), pulse.DriveChannel(0))
299300

300301
self.assertEqual(circs[5].calibrations["sx"][((0,), ())], expected_sx)
301302

302303
# run the calibration experiment. This should update the amp parameter of x which we test.
303-
exp_data = amp_cal.run(MockIQBackend(FineAmpHelper(-np.pi * 0.07, np.pi / 2, "sx")))
304+
exp_data = amp_cal.run()
304305
self.assertExperimentDone(exp_data)
305306
d_theta = exp_data.analysis_results(1).value.n
306307
new_amp = init_amp * (np.pi / 2) / (np.pi / 2 + d_theta)
307308

308-
circs = transpile(amp_cal.circuits(), self.backend, inst_map=self.cals.default_inst_map)
309+
circs = amp_cal._transpiled_circuits()
309310

310311
sx_cal = circs[5].calibrations["sx"][((0,), ())]
311312

test/library/calibration/test_fine_drag.py

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@
1313
"""Test fine drag calibration experiment."""
1414

1515
from test.base import QiskitExperimentsTestCase
16-
import copy
1716
import numpy as np
1817

19-
from qiskit import pulse, transpile
18+
from qiskit import pulse
2019
from qiskit.circuit import Gate
2120
from qiskit.providers.fake_provider import FakeArmonkV2
2221

@@ -102,13 +101,7 @@ def test_update_cals(self):
102101

103102
drag_cal = FineDragCal([0], self.cals, "x", self.backend)
104103

105-
transpile_opts = copy.copy(drag_cal.transpile_options.__dict__)
106-
transpile_opts["initial_layout"] = list(drag_cal.physical_qubits)
107-
transpile_opts["optimization_level"] = 0
108-
109-
circs = transpile(
110-
drag_cal.circuits(), inst_map=self.cals.default_inst_map, **transpile_opts
111-
)
104+
circs = drag_cal._transpiled_circuits()
112105

113106
with pulse.build(name="x") as expected_x:
114107
pulse.play(pulse.Drag(160, 0.5, 40, 0), pulse.DriveChannel(0))
@@ -127,13 +120,7 @@ def test_update_cals(self):
127120
target_angle = np.pi
128121
new_beta = -np.sqrt(np.pi) * d_theta * sigma / target_angle**2
129122

130-
transpile_opts = copy.copy(drag_cal.transpile_options.__dict__)
131-
transpile_opts["initial_layout"] = list(drag_cal.physical_qubits)
132-
transpile_opts["optimization_level"] = 0
133-
134-
circs = transpile(
135-
drag_cal.circuits(), inst_map=self.cals.default_inst_map, **transpile_opts
136-
)
123+
circs = drag_cal._transpiled_circuits()
137124

138125
x_cal = circs[5].calibrations["x"][((0,), ())]
139126

test/library/calibration/test_rough_amplitude.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from test.base import QiskitExperimentsTestCase
1616
import numpy as np
1717

18-
from qiskit import pulse, transpile
18+
from qiskit import pulse
1919
from qiskit.circuit import Parameter
2020

2121
from qiskit_experiments.calibration_management.basis_gate_library import FixedFrequencyTransmon
@@ -38,9 +38,9 @@ def setUp(self):
3838
def test_circuits(self):
3939
"""Test the quantum circuits."""
4040
test_amps = [-0.5, 0, 0.5]
41-
rabi = RoughXSXAmplitudeCal([0], self.cals, amplitudes=test_amps)
41+
rabi = RoughXSXAmplitudeCal([0], self.cals, amplitudes=test_amps, backend=self.backend)
4242

43-
circs = transpile(rabi.circuits(), self.backend, inst_map=self.cals.default_inst_map)
43+
circs = rabi._transpiled_circuits()
4444

4545
for circ, amp in zip(circs, test_amps):
4646
self.assertEqual(circ.count_ops()["Rabi"], 1)
@@ -124,9 +124,9 @@ def test_ef_circuits(self):
124124
"""Test that we get the expected circuits with calibrations for the EF experiment."""
125125

126126
test_amps = [-0.5, 0, 0.5]
127-
rabi_ef = EFRoughXSXAmplitudeCal([0], self.cals, amplitudes=test_amps)
127+
rabi_ef = EFRoughXSXAmplitudeCal([0], self.cals, amplitudes=test_amps, backend=self.backend)
128128

129-
circs = transpile(rabi_ef.circuits(), self.backend, inst_map=self.cals.default_inst_map)
129+
circs = rabi_ef._transpiled_circuits()
130130

131131
for circ, amp in zip(circs, test_amps):
132132

0 commit comments

Comments
 (0)