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 theassignment_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
inqiskit.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
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.
Example
from qiskit_experiments.library import CorrelatedReadoutError exp = CorrelatedReadoutError(physical_qubits=(0,1,2), backend=backend) exp_data = exp.run().block_for_results() display(exp_data.figure(0)) exp_data.analysis_results(dataframe=True)
name experiment components value quality backend run_time c9084059 Correlated Readout Mitigator CorrelatedReadoutError [Q0, Q1, Q2] <qiskit.result.mitigation.correlated_readout_m... None aer_simulator_from(generic_backend_5q) None 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.
Methods
- circuits()[source]¶
Returns the experiment’s circuits
- Return type:
List[QuantumCircuit]
- config()¶
Return the config dataclass for this experiment
- Return type:
- copy()¶
Return a copy of the experiment
- Return type:
- classmethod from_config(config)¶
Initialize an experiment from experiment config
- Return type:
- 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, sampler=None, analysis='default', timeout=None, backend_run=None, **run_options)¶
Run an experiment and perform analysis.
- Parameters:
backend (Backend | None) – Optional, the backend to run on. Will override existing backend settings.
sampler (BaseSamplerV2 | None) – Optional, the sampler to run the experiment on. If None then a sampler will be invoked from previously set backend
analysis (BaseAnalysis | None) – Optional, a custom analysis instance to use for performing analysis. If None analysis will not be run. If
"default"
the experimentsanalysis()
instance will be used if it contains one.timeout (float | None) – Time to wait for experiment jobs to finish running before cancelling.
backend_run (bool | None) – Use backend run (temp option for testing)
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:
- 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.