Note

This is the documentation for the current state of the development branch of Qiskit Experiments. The documentation or APIs here can change prior to being released.

InterleavedRB

class InterleavedRB(interleaved_element, physical_qubits, lengths, backend=None, num_samples=3, seed=None, full_sampling=False, circuit_order='RIRIRI')[source]

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

Overview

Interleaved Randomized Benchmarking (RB) is a method to estimate the average error-rate of a certain quantum gate.

An interleaved RB experiment generates a standard RB sequences of random Cliffords and another sequence with the interleaved given gate. After running the two sequences on a backend, it calculates the probabilities to get back to the ground state, fits the two exponentially decaying curves, and estimates the interleaved gate error. See Ref. [1] for details.

References

[1] Easwar Magesan, Jay M. Gambetta, B. R. Johnson, Colm A. Ryan, Jerry M. Chow, Seth T. Merkel, Marcus P. da Silva, George A. Keefe, Mary B. Rothwell, Thomas A. Ohki, Mark B. Ketchen, M. Steffen, Efficient measurement of quantum gate error by interleaved randomized benchmarking, Phys. Rev. Lett. 109, 080505 (2012), doi: 10.1103/PhysRevLett.109.080505 (open)

Analysis class reference

InterleavedRBAnalysis

Experiment options

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

Options
  • Defined in the class InterleavedRB:

    • circuit_order (str)

      Default value: "RIRIRI"
      How to order the reference and the interleaved circuits. "RIRIRI" (alternate a reference and an interleaved circuit) or "RRRIII" (push all reference circuits first, then all interleaved ones).
  • 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.

See also

Initialization

Initialize an interleaved randomized benchmarking experiment.

Parameters:
  • interleaved_element (Union[QuantumCircuit, Gate, Delay, Clifford]) – The element to interleave, given either as a Clifford element, gate, delay or circuit. If the element contains any non-basis gates, it will be transpiled with transpiled_options of this experiment. If it is/contains a delay, its duration and unit must comply with the timing constraints of the backend (BackendTiming is useful to obtain valid delays). Parameterized circuits/instructions are not allowed.

  • 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 (bool) – 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.

  • circuit_order (str) – How to order the reference and the interleaved circuits. "RIRIRI" (default) - Alternate a reference and an interleaved circuit. Or "RRRIII" - Push all reference circuits first, then all interleaved ones.

Raises:
  • QiskitError – When interleaved_element has different number of qubits from the physical_qubits argument.

  • QiskitError – When interleaved_element is not convertible to Clifford object.

  • QiskitError – When interleaved_element has an invalid delay (e.g. violating the timing constraints of the backend).

Attributes

InterleavedRB.analysis

Return the analysis instance for the experiment

InterleavedRB.backend

Return the backend for the experiment

InterleavedRB.experiment_options

Return the options for the experiment.

InterleavedRB.experiment_type

Return experiment type.

InterleavedRB.num_qubits

Return the number of qubits for the experiment.

InterleavedRB.physical_qubits

Return the device qubits for the experiment.

InterleavedRB.run_options

Return options values for the experiment run() method.

InterleavedRB.transpile_options

Return the transpiler options for the run() method.

Methods

InterleavedRB.circuits()

Return a list of RB circuits.

InterleavedRB.config()

Return the config dataclass for this experiment

InterleavedRB.copy()

Return a copy of the experiment

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

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

InterleavedRB.from_config(config)

Initialize an experiment from experiment config

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

Run an experiment and perform analysis.

InterleavedRB.set_experiment_options(**fields)

Set the experiment options.

InterleavedRB.set_run_options(**fields)

Set options values for the experiment run() method.

InterleavedRB.set_transpile_options(**fields)

Set the transpiler options for run() method.