MitigatedProcessTomography#

class MitigatedProcessTomography(circuit, backend=None, physical_qubits=None, measurement_indices=None, preparation_indices=None, basis_indices=None, conditional_circuit_clbits=False, analysis='default')[source]#

A batched experiment to characterize readout error then perform process tomography for doing readout error mitigated process tomography.

Overview

Readout error mitigated Quantum process tomography is a batch experiment consisting of a LocalReadoutError characterization experiments, followed by a ProcessTomography experiment.

During analysis the assignment matrix local readout error model is used to automatically construct a noisy Pauli measurement basis for performing readout error mitigated process tomography fitting.

Analysis class reference

MitigatedTomographyAnalysis

Experiment options

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

Options
  • Defined in the class BatchExperiment:

    • separate_jobs (Boolean)

      Default value: False
      Whether to route different sub-experiments to different jobs.
  • 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.

Note

Performing readout error mitigation full process tomography on an N-qubit circuit requires running 2 readout error characterization circuits and \(4^N 3^N\) measurement circuits using the Pauli preparation and measurement bases.

See also

Initialization

Initialize a quantum process tomography experiment.

Parameters:
  • circuit (QuantumCircuit | Instruction | BaseOperator) – the quantum process circuit. If not a quantum circuit it must be a class that can be appended to a quantum circuit.

  • backend (Backend | None) – The backend to run the experiment on.

  • physical_qubits (Sequence[int] | None) – Optional, the physical qubits for the initial state circuit. If None this will be qubits [0, N) for an N-qubit circuit.

  • measurement_indices (Sequence[int] | None) – Optional, the physical_qubits indices to be measured. If None all circuit physical qubits will be measured.

  • preparation_indices (Sequence[int] | None) – Optional, the physical_qubits indices to be prepared. If None all circuit physical qubits will be prepared.

  • basis_indices (Iterable[Tuple[List[int], List[int]]] | None) – Optional, a list of basis indices for generating partial tomography measurement data. Each item should be given as a pair of lists of preparation and measurement basis configurations ([p[0], p[1], ...], [m[0], m[1], ...]), where p[i] is the preparation basis index, and m[i] is the measurement basis index for qubit-i. If not specified full tomography for all indices of the preparation and measurement bases will be performed.

  • conditional_circuit_clbits (bool | Sequence[int] | Sequence[Clbit]) – Optional, the clbits in the source circuit to be conditioned on when reconstructing the state. If True all circuit clbits will be conditioned on. Enabling this will return a list of reconstructed state components conditional on the values of these clbit values.

  • analysis (BaseAnalysis | None | str) – Optional, a custom tomography analysis instance to use. If "default" ProcessTomographyAnalysis will be used. If None no analysis instance will be set.

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_experiments#

Return the number of sub experiments

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()#

Return a list of experiment circuits.

Returns:

A list of QuantumCircuit.

Note

These circuits should be on qubits [0, .., N-1] for an N-qubit experiment. The circuits mapped to physical qubits are obtained via the internal _transpiled_circuits() method.

component_experiment(index=None)#

Return the component Experiment object.

Parameters:

index (int) – Experiment index, or None if all experiments are to be returned.

Returns:

The component experiment(s).

Return type:

BaseExperiment

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.