qiskit.ignis.verification.gates_per_clifford¶
-
gates_per_clifford
(transpiled_circuits_list, clifford_lengths, basis, qubits)[source]¶ Take a list of transpiled
QuantumCircuit
and use these to calculate the number of gates per Clifford. EachQuantumCircuit
should be transpiled into givenbasis
set. The result can be used to convert a value of error per Clifford into error per basis gate under appropriate assumption.Example
This example shows how to calculate gate per Clifford of 2Q RB sequence for qubit 0 and qubit 1. You can refer to the function
randomized_benchmarking_seq
for the detail of RB circuit generation.import pprint import qiskit import qiskit.ignis.verification.randomized_benchmarking as rb from qiskit.test.mock.backends import FakeAlmaden rb_circs_list, xdata = rb.randomized_benchmarking_seq( nseeds=5, length_vector=[1, 20, 50, 100], rb_pattern=[[0, 1]]) basis = FakeAlmaden().configuration().basis_gates # transpile transpiled_circuits_list = [] for rb_circs in rb_circs_list: rb_circs_transpiled = qiskit.transpile(rb_circs, basis_gates=basis) transpiled_circuits_list.append(rb_circs_transpiled) # count gate per Clifford ngates = rb.rb_utils.gates_per_clifford( transpiled_circuits_list=transpiled_circuits_list, clifford_lengths=xdata[0], basis=basis, qubits=[0, 1]) pprint.pprint(ngates)
{0: {'cx': 1.52, 'id': 0.0, 'u1': 0.14057142857142857, 'u2': 1.7142857142857142, 'u3': 0.1382857142857143}, 1: {'cx': 1.52, 'id': 0.0, 'u1': 0.11657142857142858, 'u2': 1.776, 'u3': 0.13942857142857143}}
The gate counts for qubit 0 (1) is obtained by
ngates[0]
(ngates[1]
) as usual python dictionary. If all gate counts are zero, you might specify wrongbasis
or input circuit list is not transpiled into basis gates.- Parameters
transpiled_circuits_list (
Union
[List
[List
[QuantumCircuit
]],List
[QasmQobj
]]) – List of transpiled RB circuit for each seed.clifford_lengths (
Union
[ndarray
,List
[int
]]) – number of Cliffords in each circuitbasis (
List
[str
]) – gates basis for the qobjqubits (
List
[int
]) – qubits to count over
- Return type
Dict
[int
,Dict
[str
,float
]]- Returns
Nested dictionary of gate counts per Clifford.
- Raises
QiskitError – when input object is not a list of QuantumCircuit.