iqm.benchmarks.randomized_benchmarking.mirror_rb.mirror_rb.MirrorRBConfiguration#

class iqm.benchmarks.randomized_benchmarking.mirror_rb.mirror_rb.MirrorRBConfiguration(*, benchmark: type[~iqm.benchmarks.benchmark_definition.Benchmark] = <class 'iqm.benchmarks.randomized_benchmarking.mirror_rb.mirror_rb.MirrorRandomizedBenchmarking'>, shots: int = 256, max_gates_per_batch: int | None = None, max_circuits_per_batch: int | None = None, routing_method: ~iqm.benchmarks.utils.RoutingMethod = RoutingMethod.SABRE, physical_layout: ~iqm.benchmarks.utils.PhysicalLayout = PhysicalLayout.FIXED, use_dd: bool | None = False, dd_strategy: ~iqm.station_control.interface.models.circuit.DDStrategy | None = None, active_reset_cycles: int | None = None, qubits_array: ~collections.abc.Sequence[~collections.abc.Sequence[int]], depths_array: ~collections.abc.Sequence[~collections.abc.Sequence[int]], num_circuit_samples: int, num_pauli_samples: int, qiskit_optim_level: int = 1, two_qubit_gate_ensemble: dict[str, float] = {'CZGate': 1.0}, density_2q_gates: float = 0.25, clifford_sqg_probability: float = 1.0, sqg_gate_ensemble: dict[str, float] | None = None, simulation_method: ~typing.Literal['automatic', 'statevector', 'stabilizer', 'extended_stabilizer', 'matrix_product_state'] = 'automatic')#

Bases: BenchmarkConfigurationBase

Mirror RB configuration.

Parameters:
benchmark#

Benchmark.

Type:

type[iqm.benchmarks.benchmark_definition.Benchmark]

qubits_array#

Array of physical qubits in which to execute MRB.

Type:

collections.abc.Sequence[collections.abc.Sequence[int]]

depths_array#

Array of physical depths in which to execute MRB for a corresponding qubit list. If len is the same as that of qubits_array, each Sequence[int] corresponds to the depths for the corresponding layout of qubits. If len is different from that of qubits_array, assigns the first Sequence[int].

Type:

collections.abc.Sequence[collections.abc.Sequence[int]]

num_circuit_samples#

Number of random-layer mirror circuits to generate.

Type:

int

num_pauli_samples#

Number of random Pauli layers to interleave per mirror circuit.

Type:

int

shots#

Number of measurement shots to execute per circuit.

qiskit_optim_level#

Qiskit-level of optimization to use in transpilation.

Type:

int

routing_method#

Routing method to use in transpilation.

two_qubit_gate_ensemble#

Two-qubit gate ensemble to use in the random mirror circuits. Keys correspond to str names of Qiskit circuit library gates, e.g., “CZGate” or “CXGate”. Values correspond to the probability for the respective gate to be sampled.

Type:

dict[str, float]

density_2q_gates#

Expected density of 2-qubit gates in the final circuits.

Type:

float

clifford_sqg_probability#

Probability with which to uniformly sample Clifford 1Q gates.

Type:

float

sqg_gate_ensemble#

Dictionary with keys being str specifying 1Q gates, and values being corresponding probabilities.

Type:

dict[str, float] | None

simulation_method#

Qiskit’s Aer simulation method.

Type:

Literal[‘automatic’, ‘statevector’, ‘stabilizer’, ‘extended_stabilizer’, ‘matrix_product_state’]

Attributes

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

benchmark

qubits_array

depths_array

num_circuit_samples

num_pauli_samples

qiskit_optim_level

two_qubit_gate_ensemble

density_2q_gates

clifford_sqg_probability

sqg_gate_ensemble

simulation_method

shots

max_gates_per_batch

max_circuits_per_batch

routing_method

physical_layout

use_dd

dd_strategy

active_reset_cycles

Methods

model_config = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].