def test_calibrations(self): """Test that the calibrations are preserved and that the circuit transpiles.""" experiments = [] for qubit in range(3): rabi = Rabi(qubit) rabi.set_experiment_options(amplitudes=[0.5]) experiments.append(rabi) par_exp = ParallelExperiment(experiments) par_circ = par_exp.circuits()[0] # If the calibrations are not there we will not be able to transpile try: transpile(par_circ, basis_gates=["rz", "sx", "x", "cx"]) except QiskitError as error: self.fail("Failed to transpile with error: " + str(error)) # Assert that the calibration keys are in the calibrations of the composite circuit. for qubit in range(3): rabi_circuit = experiments[qubit].circuits()[0] cal_key = next(iter(rabi_circuit.calibrations["Rabi"].keys())) self.assertEqual(cal_key[0], (qubit, )) self.assertTrue(cal_key in par_circ.calibrations["Rabi"])
def test_calibrations(self): """Test that the calibrations are preserved and that the circuit transpiles.""" experiments = [] for qubit in range(3): with pulse.build() as sched: pulse.play(pulse.Gaussian(160, Parameter("amp"), 40), pulse.DriveChannel(qubit)) experiments.append(Rabi(qubit, sched, amplitudes=[0.5])) par_exp = ParallelExperiment(experiments) par_circ = par_exp.circuits()[0] # If the calibrations are not there we will not be able to transpile try: transpile(par_circ, basis_gates=["rz", "sx", "x", "cx"]) except QiskitError as error: self.fail("Failed to transpile with error: " + str(error)) # Assert that the calibration keys are in the calibrations of the composite circuit. for qubit in range(3): rabi_circuit = experiments[qubit].circuits()[0] cal_key = next(iter(rabi_circuit.calibrations["Rabi"].keys())) self.assertEqual(cal_key[0], (qubit, )) self.assertTrue(cal_key in par_circ.calibrations["Rabi"])
def test_t1_parallel_exp_transpile(self): """Test parallel transpile options for T1 experiment""" num_qubits = 5 instruction_durations = [] for i in range(num_qubits): instruction_durations += [ ("rx", [i], (i + 1) * 10, "ns"), ("measure", [i], (i + 1) * 1000, "ns"), ] coupling_map = [[i - 1, i] for i in range(1, num_qubits)] basis_gates = ["rx", "delay"] exp1 = T1(1, delays=[50e-9, 100e-9, 160e-9]) exp2 = T1(3, delays=[40e-9, 80e-9, 190e-9]) parexp = ParallelExperiment([exp1, exp2]) parexp.set_transpile_options( basis_gates=basis_gates, instruction_durations=instruction_durations, coupling_map=coupling_map, scheduling_method="alap", ) circs = parexp.circuits() for circ in circs: self.assertEqual(circ.num_qubits, 2) op_counts = circ.count_ops() self.assertEqual(op_counts.get("rx"), 2) self.assertEqual(op_counts.get("delay"), 2) tcircs = parexp._transpiled_circuits() for circ in tcircs: self.assertEqual(circ.num_qubits, num_qubits) op_counts = circ.count_ops() self.assertEqual(op_counts.get("rx"), 2) self.assertGreater(op_counts.get("delay"), num_qubits - 1)