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