iterative_quantum_pe

This module contains the necessary functions and classes to implement Iterative Quantum Phase Estimation (IQPE). The implementation is based on the following paper:

Dobšíček, Miroslav and Johansson, Göran and Shumeiko, Vitaly and Wendin, Göran. Arbitrary accuracy iterative quantum phase estimation algorithm using a single ancillary qubit: A two-qubit benchmark. Physical Review A 3(76), 2007. https://arxiv.org/abs/quant-ph/0610214*

Author: Gonzalo Ferro Costas & Alberto Manzano Herrero

class QQuantLib.PE.iterative_quantum_pe.IQPE(**kwargs)

Class for using Iterative Quantum Phase Estimation (IQPE) algorithm

Parameters:
  • kwars (dictionary) – dictionary that allows the configuration of the ML-QPE algorithm. Implemented keys:

  • initial_state (kwargs, QLM Program) – QLM Program withe the initial Psi state over the Grover-like operator will be applied Only used if oracle is None

  • unitary_operator (kwargs, QLM gate or routine) – Grover-like operator whose autovalues want to be calculated Only used if oracle is None

  • cbits_number (kwargs, int) – number of classical bits for phase estimation

  • qpu (kwargs, QLM solver) – solver for simulating the resulting circuits

  • shots (kwargs, int) – number of shots for quantum job. If 0 exact probabilities will be computed.

  • easy (kwargs, bool) – If True step_iqpe_easy will be used for each step of the algorithm If False step_iqpe will be used for each step.

apply_iqpe()

Apply a complete IQPE algorithm

property cbits_number

creating cbits_number property

init_iqpe()

Initialize several properties

iqpe(number_of_cbits=None, shots=None)

This method apply a workflow for executing a complete IQPE algorithm

Parameters:
  • number_of_cbits (int (overwrite correspondent property)) – Number of classical bits for storing the phase estimation

  • shots (int (overwrite correspondent property)) – Number of shots for executing the QLM job

static measure_classical_bits(result)

Post-process intermediate measurements from a QLM result.

Parameters:

result (list list with QLM results)

Returns:

pdf – contains extracted information from intermediate_measurements from a qlm result. Columns:

BitStringstr.

String with the bits of the measurements done during simulation of the circuit

BitIntint.

Integer representation of the BitString

Phifloat.

Angle representation of the BitString between [0,1].

Probabilityfloat.

Probability of the measurement of the classical bits.

Return type:

pandas DataFrame

static post_proccess(input_pdf)

This function uses the results property and add it additional columns that are useful for Amplitude Amplification procedure

Parameters:

input_pdf (Pandas DataFrame.)

Returns:

final_results – DataFrame with complete information about the results

Return type:

Pandas DataFrame

restart()

Reinitialize several properties for restart purposes

static run_qprogram(q_prog, q_aux, shots, linalg_qpu)

Executes a complete simulation

Parameters:
  • q_prog (QLM Program)

  • q_aux (QLM qbit) – auxiliary qubit for measuring during all ipe steps

  • shots (int) – number of shots for simulation

  • linalg_qpu (QLM solver)

Returns:

  • result (QLM result object)

  • circuit (QLM circuit)

  • pdf_time (pandas DataFrame) – DataFrame with elapsed time of different parts of the simulation

static step_iqpe(q_prog, q_gate, q_aux, c_bits, l)

Implements a iterative step of the Iterative Phase Estimation (IPE) algorithm.

Parameters:
  • q_prog (QLM program) – QLM Program where the unitary operator will be applied

  • q_gate (QLM AbstractGate) – QLM implementation of the unitary operator. We want estimate the autovalue theta of this operator

  • q_aux (QLM qbit) – auxiliary qubit for IPE. This qbit will be the control for application of the unitary operator to the principal bits of the program. Additionally will be the target qubit for the classical bit controlled rotation. This qubit will be reset at the end of the step.

  • c_bits (list) – list with the classical bits allocated for phase estimation

  • l (int) – iteration step of the IPE algorithm

static sumarize(input_pdf, columns=None)

This method summarize the results.

Parameters:
  • input_pdf (Pandas DataFrame.)

  • columns (list) – list with the names of the input DataFrame for summarize

Returns:

final_results – DataFrame with summary results

Return type:

Pandas DataFrame