StandardRB

class StandardRB(physical_qubits, lengths, backend=None, num_samples=3, seed=None, full_sampling=False)[source]

An experiment to characterize the error rate of a gate set on a device.

Overview

Randomized Benchmarking (RB) is an efficient and robust method for estimating the average error rate of a set of quantum gate operations. See Qiskit Textbook for an explanation on the RB method.

A standard RB experiment generates sequences of random Cliffords such that the unitary computed by the sequences is the identity. After running the sequences on a backend, it calculates the probabilities to get back to the ground state, fits an exponentially decaying curve, and estimates the Error Per Clifford (EPC), as described in Refs. [1, 2].

Note

In 0.5.0, the default value of optimization_level in transpile_options changed from 0 to 1 for RB experiments. That may result in shorter RB circuits hence slower decay curves than before.

References

[1] Easwar Magesan, J. M. Gambetta, Joseph Emerson, Robust randomized benchmarking of quantum processes, Phys. Rev. Lett. 106, 180504 (2011), doi: 10.1103/PhysRevLett.106.180504 (open)

[2] Easwar Magesan, Jay M. Gambetta, Joseph Emerson, Characterizing Quantum Gates via Randomized Benchmarking, Phys. Rev. A 85, 042311 (2012), doi: 10.1103/PhysRevA.85.042311 (open)

Analysis class reference

RBAnalysis

Experiment options

These options can be set by the set_experiment_options() method.

Options
  • Defined in the class StandardRB:

    • lengths (List[int])

      Default value: None
      A list of RB sequences lengths.
    • num_samples (int)

      Default value: None
      Number of samples to generate for each sequence length.
    • seed (None or int or SeedSequence or BitGenerator or Generator)

      Default value: None
      A seed used to initialize numpy.random.default_rng when generating circuits. The default_rng will be initialized with this seed value everytime circuits() is called.
    • full_sampling (bool)

      Default value: None
      If True all Cliffords are independently sampled for all lengths. If False for sample of lengths longer sequences are constructed by appending additional Clifford samples to shorter sequences.
  • Defined in the class BaseExperiment:

    • max_circuits (Optional[int])

      Default value: None
      The maximum number of circuits per job when running an experiment on a backend.

Initialization

Initialize a standard randomized benchmarking experiment.

Parameters:
  • physical_qubits (Sequence[int]) – List of physical qubits for the experiment.

  • lengths (Iterable[int]) – A list of RB sequences lengths.

  • backend (Optional[Backend]) – The backend to run the experiment on.

  • num_samples (int) – Number of samples to generate for each sequence length.

  • seed (Union[int, SeedSequence, BitGenerator, Generator, None]) – Optional, seed used to initialize numpy.random.default_rng. when generating circuits. The default_rng will be initialized with this seed value everytime circuits() is called.

  • full_sampling (Optional[bool]) – If True all Cliffords are independently sampled for all lengths. If False for sample of lengths longer sequences are constructed by appending additional samples to shorter sequences. The default is False.

Raises:

QiskitError – If any invalid argument is supplied.

Attributes

StandardRB.analysis

Return the analysis instance for the experiment

StandardRB.backend

Return the backend for the experiment

StandardRB.experiment_options

Return the options for the experiment.

StandardRB.experiment_type

Return experiment type.

StandardRB.num_qubits

Return the number of qubits for the experiment.

StandardRB.physical_qubits

Return the device qubits for the experiment.

StandardRB.run_options

Return options values for the experiment run() method.

StandardRB.transpile_options

Return the transpiler options for the run() method.

Methods

StandardRB.circuits()

Return a list of RB circuits.

StandardRB.config()

Return the config dataclass for this experiment

StandardRB.copy()

Return a copy of the experiment

StandardRB.enable_restless([rep_delay, ...])

Enables a restless experiment by setting the restless run options and the restless data processor.

StandardRB.from_config(config)

Initialize an experiment from experiment config

StandardRB.run([backend, analysis, timeout])

Run an experiment and perform analysis.

StandardRB.set_experiment_options(**fields)

Set the experiment options.

StandardRB.set_run_options(**fields)

Set options values for the experiment run() method.

StandardRB.set_transpile_options(**fields)

Set the transpiler options for run() method.