CorrelatedReadoutError#

class CorrelatedReadoutError(physical_qubits=None, backend=None)[source]#

Correlated readout error characterization experiment.

Overview

This class constructs the a CorrelatedReadoutMitigator containing the full assignment matrix \(A\) characterizing the readout error for the given qubits from the experiment results accessible via the assignment_matrix() method.

Readout errors affect quantum computation during the measurement of the qubits in a quantum device. By characterizing the readout errors, it is possible to construct a readout error mitigator that is used both to obtain a more accurate distribution of the outputs, and more accurate measurements of expectation value for measurables.

The readout mitigator is generated from an assignment matrix: a \(2^n\times 2^n\) matrix \(A\) such that \(A_{y,x}\) is the probability to observe \(y\) given the true outcome should be \(x\). The assignment matrix is used to compute the mitigation matrix used in the readout error mitigation process itself.

A Correlated readout mitigator uses the full \(2^n \times 2^n\) assignment matrix, meaning it can only be used for small values of \(n\). The corresponding class in Qiskit is the CorrelatedReadoutMitigator in qiskit.result.

The experiment generates \(2^n\) circuits, for every possible \(n\)-qubit quantum state and constructs the assignment matrix and correlated mitigator from the results.

See CorrelatedReadoutErrorAnalysis documentation for additional information on correlated readout error experiment analysis.

References

[1] Sergey Bravyi, Sarah Sheldon, Abhinav Kandala, David C. Mckay, Jay M. Gambetta, Mitigating measurement errors in multi-qubit experiments, Phys. Rev. A 103, 042605 (2021), doi: 10.1103/PhysRevA.103.042605 (open)

User manual

Readout Mitigation

Analysis class reference

CorrelatedReadoutErrorAnalysis

Experiment options

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

Options
  • 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 correlated readout error characterization experiment.

Parameters:
  • physical_qubits (Iterable[int] | None) – Optional, the backend qubits being characterized for readout error. If None all qubits on the provided backend will be characterized.

  • backend (Backend | None) – Optional, the backend to characterize.

Raises:

QiskitError – If args are not valid.

Attributes

analysis#

Return the analysis instance for the experiment

backend#

Return the backend for the experiment

experiment_options#

Return the options for the experiment.

experiment_type#

Return experiment type.

num_qubits#

Return the number of qubits for the experiment.

physical_qubits#

Return the device qubits for the experiment.

run_options#

Return options values for the experiment run() method.

transpile_options#

Return the transpiler options for the run() method.

Methods

circuits()[source]#

Returns the experiment’s circuits

Return type:

List[QuantumCircuit]

config()#

Return the config dataclass for this experiment

Return type:

ExperimentConfig

copy()#

Return a copy of the experiment

Return type:

BaseExperiment

classmethod from_config(config)#

Initialize an experiment from experiment config

Return type:

BaseExperiment

job_info(backend=None)#

Get information about job distribution for the experiment on a specific backend.

Parameters:

backend (Backend) – Optional, the backend for which to get job distribution information. If not specified, the experiment must already have a set backend.

Returns:

A dictionary containing information about job distribution.

  • ”Total number of circuits in the experiment”: Total number of circuits in the experiment.

  • ”Maximum number of circuits per job”: Maximum number of circuits in one job based on backend and experiment settings.

  • ”Total number of jobs”: Number of jobs needed to run this experiment on the currently set backend.

Return type:

dict

Raises:

QiskitError – if backend is not specified.

run(backend=None, analysis='default', timeout=None, **run_options)#

Run an experiment and perform analysis.

Parameters:
  • backend (Backend | None) – Optional, the backend to run the experiment on. This will override any currently set backends for the single execution.

  • analysis (BaseAnalysis | None) – Optional, a custom analysis instance to use for performing analysis. If None analysis will not be run. If "default" the experiments analysis() instance will be used if it contains one.

  • timeout (float | None) – Time to wait for experiment jobs to finish running before cancelling.

  • run_options – backend runtime options used for circuit execution.

Returns:

The experiment data object.

Raises:

QiskitError – If experiment is run with an incompatible existing ExperimentData container.

Return type:

ExperimentData

set_experiment_options(**fields)#

Set the experiment options.

Parameters:

fields – The fields to update the options

Raises:

AttributeError – If the field passed in is not a supported options

set_run_options(**fields)#

Set options values for the experiment run() method.

Parameters:

fields – The fields to update the options

See also

The Setting options for your experiment guide for code example.

set_transpile_options(**fields)#

Set the transpiler options for run() method.

Parameters:

fields – The fields to update the options

Raises:

QiskitError – If initial_layout is one of the fields.

See also

The Setting options for your experiment guide for code example.