iqm.benchmarks.randomized_benchmarking.direct_rb.direct_rb.generate_drb_circuits

iqm.benchmarks.randomized_benchmarking.direct_rb.direct_rb.generate_drb_circuits#

iqm.benchmarks.randomized_benchmarking.direct_rb.direct_rb.generate_drb_circuits(qubits: Sequence[int], depth: int, circ_samples: int, backend_arg: IQMBackendBase | str, density_2q_gates: float = 0.25, two_qubit_gate_ensemble: dict[str, float] | None = None, clifford_sqg_probability: float = 1.0, sqg_gate_ensemble: dict[str, float] | None = None, qiskit_optim_level: int = 1, routing_method: RoutingMethod = RoutingMethod.BASIC) dict[str, list[IQMCircuit]]#

Generates lists of samples of Direct RB circuits.

The structure is: Stabilizer preparation - Layers of canonical randomly sampled gates - Stabilizer measurement

Parameters:
  • qubits (Sequence[int]) – Qubits of the backend.

  • depth (int) – Depth (number of canonical layers) of the circuit.

  • circ_samples (int) – Number of circuit samples to generate.

  • backend_arg (IQMBackendBase | str) – Backend.

  • density_2q_gates (float) – Expected density of 2Q gates.

  • two_qubit_gate_ensemble (dict[str, float] | None) – Dictionary with keys being str specifying 2Q gates, and values being corresponding probabilities. Default is None.

  • clifford_sqg_probability (float) – Probability with which to uniformly sample Clifford 1Q gates. Default is 1.0.

  • sqg_gate_ensemble (dict[str, float] | None) – Dictionary with keys being str specifying 1Q gates, and values being corresponding probabilities. Default is None.

  • qiskit_optim_level (int) – Qiskit transpiler optimization level. Default is 1.

  • routing_method (RoutingMethod) – Qiskit transpiler routing method. Default is “basic”.

Returns:

Dictionary with keys “transpiled”, “untranspiled” and values as lists of respective DRB circuits.

Return type:

dict[str, list[IQMCircuit]]