IBUReadoutMitigation#

class pennylane_calculquebec.processing.steps.readout_error_mitigation.IBUReadoutMitigation(machine_name: str, initial_guess=None)#

Bases: PostProcStep

a mitigation method that uses iterative bayesian unfolding to mitigate readout errors on a circuit’s results

Constructor for the readout mitigation step

Parameters:
  • machine_name (str) – the name of a machine. Usually either yukon or yamaska

  • initial_guess (list[float], optional) – an initial probability distribution. Defaults to None.

execute(tape, results)

applies iterative bayesian unfolding for readout mitigation

initial_guess(num_qubits)

returns a uniform probability vector if initial guess is not set.

iterative_bayesian_unfolding(readout_matrix, ...)

Iterative Bayesian unfolding to correct measurement errors.

execute(tape, results)#

applies iterative bayesian unfolding for readout mitigation

Parameters:
  • tape (QuantumTape) – the quantum tape to act on

  • results (dict[str, int]) – results from the circuit execution

Returns:

processed results

Return type:

dict[str, int]

initial_guess(num_qubits)#

returns a uniform probability vector if initial guess is not set. Returns initial guess otherwise

Parameters:

num_qubits (int) – the number of qubits

Returns:

an initial probability distribution for the algorithm

Return type:

list[float]

iterative_bayesian_unfolding(readout_matrix, noisy_probs, initial_guess, max_iterations=1000, tolerance=1e-06)#

Iterative Bayesian unfolding to correct measurement errors.

Parameters:
  • readout_matrix (numpy.ndarray) – Response matrix (2^n x 2^n).

  • noisy_probs (numpy.ndarray) – Noisy measured probability distribution.

  • initial_guess (numpy.ndarray) – Initial guess for the true distribution.

  • max_iterations (int) – Maximum number of iterations.

  • tolerance (float) – Convergence tolerance.

Returns:

The final estimate of the true distribution.

Return type:

final probabilities (numpy.ndarray)