Error Per Layered Gate (EPLG)#

%load_ext autoreload
%autoreload 2
The autoreload extension is already loaded. To reload it, use:
  %reload_ext autoreload

Set IQM Token if using Resonance.#

import os
from iqm.qiskit_iqm import IQMProvider
os.environ["IQM_TOKEN"] = "" # Replace with your token

Choose (or define) a backend#

quantum_computer = "emerald"
iqm_server_url = "https://resonance.meetiqm.com"
provider = IQMProvider(iqm_server_url, quantum_computer = quantum_computer)
backend = provider.get_backend()

# If manually specifying qubit pairs, you can also simply use the following:
#backend="fakeapollo"

Randomized Benchmarking Configuration#

from iqm.benchmarks.randomized_benchmarking.eplg.eplg import *
import numpy as np
EXAMPLE_EPLG = EPLGConfiguration(
    # custom_qubits_array=list(backend.coupling_map),
    drb_depths=sorted(list(set(np.geomspace(1, 200, num=6, endpoint=True, dtype=int).tolist())), reverse=True),
    drb_circuit_samples=25,
    shots=2**8,
    num_disjoint_layers=2,
    # Parameters for a linear chain layer:
    chain_length=20,
    chain_path_samples=200,
    max_hamiltonian_path_tries=100,
    iqm_server_url=iqm_server_url,
    quantum_computer=quantum_computer
)

Run the experiment#

benchmark_eplg = EPLGBenchmark(backend, EXAMPLE_EPLG)
run_eplg = benchmark_eplg.run()
2026-01-29 15:44:16,284 - iqm.benchmarks.logging_config - INFO - Generating linear chain path
2026-01-29 15:44:16,637 - iqm.benchmarks.logging_config - INFO - Extracting the path that maximizes total 2Q calibration fidelity
2026-01-29 15:44:18,450 - iqm.benchmarks.logging_config - INFO - Clifford dictionaries for both 1 & 2 qubits imported successfully!
2026-01-29 15:44:18,450 - iqm.benchmarks.logging_config - INFO - Executing parallel Direct RB on qubits [(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)] (group 1/2). Will generate and submit all 25 DRB circuits for each depth [200, 69, 24, 8, 2, 1]
2026-01-29 15:44:18,450 - iqm.benchmarks.logging_config - INFO - Depth 200
2026-01-29 15:44:59,368 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [11, 10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36, 28]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:45:28,283 - iqm.benchmarks.logging_config - INFO - Job for depth 200 submitted successfully!
2026-01-29 15:45:28,283 - iqm.benchmarks.logging_config - INFO - Depth 69
2026-01-29 15:45:47,479 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [11, 10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36, 28]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:45:59,758 - iqm.benchmarks.logging_config - INFO - Job for depth 69 submitted successfully!
2026-01-29 15:45:59,759 - iqm.benchmarks.logging_config - INFO - Depth 24
2026-01-29 15:46:08,689 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [11, 10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36, 28]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:46:13,942 - iqm.benchmarks.logging_config - INFO - Job for depth 24 submitted successfully!
2026-01-29 15:46:13,942 - iqm.benchmarks.logging_config - INFO - Depth 8
2026-01-29 15:46:16,674 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [11, 10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36, 28]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:46:18,620 - iqm.benchmarks.logging_config - INFO - Job for depth 8 submitted successfully!
2026-01-29 15:46:18,620 - iqm.benchmarks.logging_config - INFO - Depth 2
2026-01-29 15:46:19,620 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [11, 10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36, 28]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:46:20,416 - iqm.benchmarks.logging_config - INFO - Job for depth 2 submitted successfully!
2026-01-29 15:46:20,426 - iqm.benchmarks.logging_config - INFO - Depth 1
2026-01-29 15:46:20,987 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [11, 10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36, 28]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:46:21,540 - iqm.benchmarks.logging_config - INFO - Job for depth 1 submitted successfully!
2026-01-29 15:46:21,555 - iqm.benchmarks.logging_config - INFO - Executing parallel Direct RB on qubits [(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)] (group 2/2). Will generate and submit all 25 DRB circuits for each depth [200, 69, 24, 8, 2, 1]
2026-01-29 15:46:21,555 - iqm.benchmarks.logging_config - INFO - Depth 200
2026-01-29 15:47:01,352 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:47:30,940 - iqm.benchmarks.logging_config - INFO - Job for depth 200 submitted successfully!
2026-01-29 15:47:30,940 - iqm.benchmarks.logging_config - INFO - Depth 69
2026-01-29 15:47:47,222 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:48:01,508 - iqm.benchmarks.logging_config - INFO - Job for depth 69 submitted successfully!
2026-01-29 15:48:01,509 - iqm.benchmarks.logging_config - INFO - Depth 24
2026-01-29 15:48:15,528 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:48:20,083 - iqm.benchmarks.logging_config - INFO - Job for depth 24 submitted successfully!
2026-01-29 15:48:20,085 - iqm.benchmarks.logging_config - INFO - Depth 8
2026-01-29 15:48:26,039 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:48:28,296 - iqm.benchmarks.logging_config - INFO - Job for depth 8 submitted successfully!
2026-01-29 15:48:28,298 - iqm.benchmarks.logging_config - INFO - Depth 2
2026-01-29 15:48:29,017 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:48:30,143 - iqm.benchmarks.logging_config - INFO - Job for depth 2 submitted successfully!
2026-01-29 15:48:30,145 - iqm.benchmarks.logging_config - INFO - Depth 1
2026-01-29 15:48:30,654 - iqm.benchmarks.logging_config - INFO - Submitting batch with 25 circuits corresponding to qubits [10, 18, 17, 16, 15, 23, 31, 32, 40, 41, 47, 48, 52, 53, 49, 50, 44, 36]
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\iqm\qiskit_iqm\iqm_provider.py:191: UserWarning: Unknown backend option(s): {'calibration_set_id': None}
  warnings.warn(f"Unknown backend option(s): {unknown_options}")
2026-01-29 15:48:31,367 - iqm.benchmarks.logging_config - INFO - Job for depth 1 submitted successfully!
2026-01-29 15:48:31,368 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_200
2026-01-29 15:48:34,190 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a37-4d17-7780-a318-77ac71cd8788 to finish...
2026-01-29 15:48:34,873 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)] and depth 200 run to the dataset
2026-01-29 15:48:34,875 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:48:34,943 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_69
2026-01-29 15:48:38,056 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a37-dee8-7a82-80da-484acbd487aa to finish...
2026-01-29 15:48:38,819 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)] and depth 69 run to the dataset
2026-01-29 15:48:38,820 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:48:38,892 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_24
2026-01-29 15:48:39,371 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a38-1611-7023-833d-9d157e03e1ff to finish...
2026-01-29 15:48:40,503 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)] and depth 24 run to the dataset
2026-01-29 15:48:40,504 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:48:40,576 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_8
2026-01-29 15:48:41,675 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a38-283a-7120-9fad-70861cfef00f to finish...
2026-01-29 15:48:42,271 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)] and depth 8 run to the dataset
2026-01-29 15:48:42,272 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:48:42,329 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_2
2026-01-29 15:48:42,472 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a38-30a8-76b1-b20a-8002bb62e2be to finish...
2026-01-29 15:48:42,989 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)] and depth 2 run to the dataset
2026-01-29 15:48:42,990 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:48:43,130 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_1
2026-01-29 15:48:43,252 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a38-3520-7bb2-bce6-3aa0b6c40197 to finish...
2026-01-29 15:48:43,814 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)] and depth 1 run to the dataset
2026-01-29 15:48:43,815 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:48:43,897 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_200
2026-01-29 15:48:46,963 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a39-37e8-7b20-b8cb-7169eb6e0d19 to finish...
2026-01-29 15:48:47,851 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)] and depth 200 run to the dataset
2026-01-29 15:48:47,853 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:48:47,957 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_69
2026-01-29 15:48:49,101 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a39-b8e9-7d02-a92f-c37a77f895ab to finish...
2026-01-29 15:48:49,897 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)] and depth 69 run to the dataset
2026-01-29 15:48:49,899 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:48:50,049 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_24
2026-01-29 15:48:50,563 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a3a-02fb-76e3-b8c9-45858109d52d to finish...
2026-01-29 15:49:02,221 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)] and depth 24 run to the dataset
2026-01-29 15:49:02,223 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:49:02,398 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_8
2026-01-29 15:49:02,996 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a3a-234d-7c71-8c5d-02b21f06708f to finish...
2026-01-29 15:49:06,850 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)] and depth 8 run to the dataset
2026-01-29 15:49:06,852 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:49:07,041 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_2
2026-01-29 15:49:07,239 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a3a-2b4f-7ab3-b7d3-7fdae2f46939 to finish...
2026-01-29 15:49:10,707 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)] and depth 2 run to the dataset
2026-01-29 15:49:10,708 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:49:10,840 - iqm.benchmarks.logging_config - INFO - Retrieving all counts for qubits_[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_1
2026-01-29 15:49:11,026 - iqm.iqm_server_client.iqm_server_client - INFO - Waiting for job 019c0a3a-3041-7cc3-8831-22f15afb43b6 to finish...
2026-01-29 15:49:13,738 - iqm.benchmarks.logging_config - INFO - Adding counts of qubits [(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)] and depth 1 run to the dataset
2026-01-29 15:49:13,740 - iqm.benchmarks.logging_config - INFO - Adding counts to dataset
2026-01-29 15:49:13,915 - iqm.benchmarks.logging_config - INFO - DRB experiment execution concluded!

Perform the analysis#

plt.rcParams['figure.dpi'] = 175
result_eplg = benchmark_eplg.analyze()
2026-01-29 15:51:39,427 - iqm.benchmarks.logging_config - INFO - Post-processing parallel Direct RB on qubits [(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)].
2026-01-29 15:51:39,457 - iqm.benchmarks.logging_config - INFO - Depth 200
2026-01-29 15:51:39,544 - iqm.benchmarks.logging_config - INFO - Depth 69
2026-01-29 15:51:39,594 - iqm.benchmarks.logging_config - INFO - Depth 24
2026-01-29 15:51:39,638 - iqm.benchmarks.logging_config - INFO - Depth 8
2026-01-29 15:51:39,669 - iqm.benchmarks.logging_config - INFO - Depth 2
2026-01-29 15:51:39,696 - iqm.benchmarks.logging_config - INFO - Depth 1
2026-01-29 15:51:42,127 - iqm.benchmarks.logging_config - INFO - Post-processing parallel Direct RB on qubits [(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)].
2026-01-29 15:51:42,146 - iqm.benchmarks.logging_config - INFO - Depth 200
2026-01-29 15:51:42,202 - iqm.benchmarks.logging_config - INFO - Depth 69
2026-01-29 15:51:42,249 - iqm.benchmarks.logging_config - INFO - Depth 24
2026-01-29 15:51:42,291 - iqm.benchmarks.logging_config - INFO - Depth 8
2026-01-29 15:51:42,325 - iqm.benchmarks.logging_config - INFO - Depth 2
2026-01-29 15:51:42,356 - iqm.benchmarks.logging_config - INFO - Depth 1
C:\Users\RaphaelBrieger\.local\share\mamba\envs\benchmarks_new\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")

Display all the attributes in the dataset

run_eplg.dataset.attrs.keys()
dict_keys(['session_timestamp', 'execution_timestamp', 'backend_configuration_name', 'backend_name', 'benchmark', 'shots', 'quantum_computer', 'max_gates_per_batch', 'max_circuits_per_batch', 'calset_id', 'routing_method', 'physical_layout', 'use_dd', 'active_reset_cycles', 'dd_strategy', 'qubits_array', 'is_eplg', 'parallel_execution', 'depths', 'num_circuit_samples', 'qiskit_optim_level', 'two_qubit_gate_ensembles', 'densities_2q_gates', 'clifford_sqg_probabilities', 'sqg_gate_ensembles', 'parallel_all_0', 0, 'parallel_all_1', 1, 'total_submit_time', 'total_retrieve_time', 'num_qubits', 'qubit_names', 'backend_coupling_map', 'backend_num_qubits', 'drb_depths', 'drb_circuit_samples', 'custom_qubits_array', 'chain_length', 'chain_path_samples', 'num_disjoint_layers', 'max_hamiltonian_path_tries', 'iqm_server_url', 'disjoint_layers', 'edges'])

Inspect all the fidelities and the final EPLG#

for o in result_eplg.observations:
    if o.name != "EPLG":
        print(f"{o.name} {o.identifier.qubit_indices}: {100*o.value:.2f} +/- {100*o.uncertainty:.2f} %")
    else:
        print(f"\n{o.name} {o.identifier.qubit_indices}: {o.value:.2e} +/- {o.uncertainty:.2e}")
average_gate_fidelity (11, 10): 99.66 +/- 0.12 %
average_gate_fidelity (18, 17): 99.68 +/- 0.05 %
average_gate_fidelity (16, 15): 98.34 +/- 0.91 %
average_gate_fidelity (23, 31): 99.48 +/- 0.11 %
average_gate_fidelity (32, 40): 99.77 +/- 0.12 %
average_gate_fidelity (41, 47): 99.11 +/- 0.09 %
average_gate_fidelity (48, 52): 100.00 +/- 0.38 %
average_gate_fidelity (53, 49): 99.23 +/- 0.11 %
average_gate_fidelity (50, 44): 99.57 +/- 0.10 %
average_gate_fidelity (36, 28): 98.75 +/- 2.66 %
average_gate_fidelity (10, 18): 98.33 +/- 0.17 %
average_gate_fidelity (17, 16): 98.98 +/- 0.08 %
average_gate_fidelity (15, 23): 94.48 +/- 0.45 %
average_gate_fidelity (31, 32): 96.88 +/- 3.01 %
average_gate_fidelity (40, 41): 99.41 +/- 0.07 %
average_gate_fidelity (47, 48): 98.67 +/- 0.13 %
average_gate_fidelity (52, 53): 98.60 +/- 0.06 %
average_gate_fidelity (49, 50): 98.76 +/- 0.07 %
average_gate_fidelity (44, 36): 94.30 +/- 2.96 %
layer_fidelity (n_qubits=20): 75.23 +/- 3.99 %
eplg (n_qubits=20): 1.49 +/- 0.28 %

Plot a visualization of the selected layers and all the DRB decays#

result_eplg.plot_all()
../_images/a07579f269d07b840bb9fcd316fd1c0974e2b12269507cf80b179947d9034529.png ../_images/533bd7e62b285e0538b5ee4f729982eecf45d3d911f95eba9a46a9d8d2752b53.png ../_images/01f42399fcdd687f1ff3baf9715a3018c9e283d7730fba8e98077271ddc32b2d.png ../_images/d409ecb1f3262d8e42843d89b21a37696da130c6b932aad77fbd5f741755cc49.png ../_images/d909c80d96aae1fabf63607aff43c14892669c1fec7c0a2237cb2d2259770826.png ../_images/91546ecd4d5d49315cdd853f4ca55657f5dd48df218c4c66ae2db63c8260b8af.png ../_images/626d8e5469de161adb0880cef7c7c560243ce79679723befe3fa72252104b39f.png ../_images/82d26a1421b3e192f81966ef56c3922d4426e75d24d372b4f79814225d83a163.png ../_images/bde78ada0595694a271c44b9608cc574a82c797861530ed8aef8a19f55476daa.png ../_images/676c1075e4a627220e6641247b933f2f9ac3af31ff4e6539861b8c804a219c4c.png ../_images/38cd458298b7de5a557169f3ac5a1dfe443497d357931627c041e177acca370f.png ../_images/e28a76db8de687a77617f7fc7c7d1212c2078d005e98f3ef65b6e8b4734266f0.png ../_images/5218c38da0e22e8dcd5c7dc432b0871fb9000a0f6b6db7f5a6d7a7e40c5e37f6.png ../_images/3259542e4a0ff56fe500919f6f60decd86eedc91ac847e1654bf468949d4a506.png ../_images/ee8b29ff10efe446e50bbf473edacdc50ad44d9d712a2801c56aeebb606774e1.png ../_images/b164024d1030fc418390e6b3af0c5d96720c7aee4c3185cb677849665de6024c.png ../_images/0ae109c42a75de8346f9d4d17bdc1c43bcc3dbad4769c519527d012b1ff9d589.png ../_images/c9d8f30b761a542e7f97469d204bf728e6730aba7c9c223363752fdb0109b5c8.png ../_images/dd4e01766f3ece5b351243ac3203258e608bd11d2ab73c8a9b3864e40d93f5f4.png ../_images/ac8532aad3c996ffae4f3966d575f4c0b5710ba005566616b46856e0d4b2ea57.png ../_images/e78d110eca4378b5c5a172c25c39674da2b306e36510244a558245eaca5a568b.png

Inspect a sample circuit (parallel DRB)#

eplg_circ_names = benchmark_eplg.circuits.benchmark_circuits[0].group_names
for x in eplg_circ_names:
    print(x)
[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_200
[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_69
[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_24
[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_8
[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_2
[(11, 10), (18, 17), (16, 15), (23, 31), (32, 40), (41, 47), (48, 52), (53, 49), (50, 44), (36, 28)]_depth_1
[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_200
[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_69
[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_24
[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_8
[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_2
[(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_1
circ_group_idx = 6
circ_sample = 6

print(f"Circuit group name: {eplg_circ_names[circ_group_idx]}")

circuit_to_draw = benchmark_eplg.circuits.get_benchmark_circuits_by_name('transpiled_circuits').circuit_groups[circ_group_idx].circuits[circ_sample]

circuit_to_draw.draw(output='mpl', fold=0, idle_wires=False)
Circuit group name: [(10, 18), (17, 16), (15, 23), (31, 32), (40, 41), (47, 48), (52, 53), (49, 50), (44, 36)]_depth_200
../_images/94068bd992786c18fe4b41f95e90a7941c9e8f4f0d6f11c4e158759dc6e4b4b4.png