Skip to content
This repository was archived by the owner on Dec 7, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .pylintdict
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ appfactory
arcsin
args
Armijo
arxiv
asmatrix
assertRaises
assertEqual
Expand Down Expand Up @@ -156,6 +157,7 @@ disp
distro
dj
dnf
Dobsicek
docplex
docplex's
Docplex
Expand Down
9 changes: 3 additions & 6 deletions qiskit/aqua/algorithms/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,10 +169,10 @@
:nosignatures:

ClassicalCPLEX
IQPEMinimumEigensolver
IQPE
NumPyMinimumEigensolver
QAOA
QPEMinimumEigensolver
QPE
VQE

"""
Expand All @@ -190,8 +190,7 @@
from .eigen_solvers import NumPyEigensolver, ExactEigensolver, EigensolverResult
from .factorizers import Shor
from .linear_solvers import HHL, NumPyLSsolver, ExactLSsolver
from .minimum_eigen_solvers import (VQE, VQEResult, QAOA, IQPE, IQPEMinimumEigensolver, IQPEResult,
QPE, QPEMinimumEigensolver, QPEResult,
from .minimum_eigen_solvers import (VQE, VQEResult, QAOA, IQPE, IQPEResult, QPE, QPEResult,
ClassicalCPLEX, CPLEX_Ising, NumPyMinimumEigensolver,
MinimumEigensolver, MinimumEigensolverResult)
from .education import EOH, Simon, DeutschJozsa, BernsteinVazirani
Expand Down Expand Up @@ -223,10 +222,8 @@
'QSVM',
'Grover',
'IQPE',
'IQPEMinimumEigensolver',
'IQPEResult',
'QPE',
'QPEMinimumEigensolver',
'QPEResult',
'AmplitudeEstimation',
'IterativeAmplitudeEstimation',
Expand Down
6 changes: 2 additions & 4 deletions qiskit/aqua/algorithms/minimum_eigen_solvers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

from .vqe import VQE, VQEResult
from .qaoa import QAOA
from .iqpe import IQPE, IQPEMinimumEigensolver, IQPEResult
from .qpe import QPE, QPEMinimumEigensolver, QPEResult
from .iqpe import IQPE, IQPEResult
from .qpe import QPE, QPEResult
from .cplex import ClassicalCPLEX, CPLEX_Ising
from .numpy_minimum_eigen_solver import NumPyMinimumEigensolver
from .minimum_eigen_solver import MinimumEigensolver, MinimumEigensolverResult
Expand All @@ -27,10 +27,8 @@
'VQEResult',
'QAOA',
'IQPE',
'IQPEMinimumEigensolver',
'IQPEResult',
'QPE',
'QPEMinimumEigensolver',
'QPEResult',
'ClassicalCPLEX',
'CPLEX_Ising',
Expand Down
38 changes: 9 additions & 29 deletions qiskit/aqua/algorithms/minimum_eigen_solvers/iqpe.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.
"""
The Iterative Quantum Phase Estimation Algorithm.

"""The Iterative Quantum Phase Estimation Algorithm.

See https://arxiv.org/abs/quant-ph/0610214
"""

from typing import Optional, List, Dict, Union
import logging
import warnings
import numpy as np

from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
Expand All @@ -42,16 +42,18 @@
# pylint: disable=invalid-name


class IQPEMinimumEigensolver(QuantumAlgorithm, MinimumEigensolver):
"""
The Iterative Quantum Phase Estimation algorithm.
class IQPE(QuantumAlgorithm, MinimumEigensolver):
"""The Iterative Quantum Phase Estimation algorithm.

IQPE, as its name suggests, iteratively computes the phase so as to require fewer qubits.
It takes has the same set of parameters as :class:`QPE`, except for the number of
ancillary qubits *num_ancillae*, being replaced by *num_iterations* and that
an Inverse Quantum Fourier Transform (IQFT) is not used for IQPE.

See also https://arxiv.org/abs/quant-ph/0610214
**Reference:**

[1]: Dobsicek et al. (2006), Arbitrary accuracy iterative phase estimation algorithm as a two
qubit benchmark, `arxiv/quant-ph/0610214 <https://arxiv.org/abs/quant-ph/0610214>`_
"""

def __init__(self,
Expand Down Expand Up @@ -308,28 +310,6 @@ def _run(self) -> 'IQPEResult':
return result


class IQPE(IQPEMinimumEigensolver):
"""
The deprecated Iterative Quantum Phase Estimation algorithm.
"""

def __init__(self,
operator: Optional[LegacyBaseOperator] = None,
state_in: Optional[InitialState] = None,
num_time_slices: int = 1,
num_iterations: int = 1,
expansion_mode: str = 'suzuki',
expansion_order: int = 2,
shallow_circuit_concat: bool = False) -> None:
warnings.warn('Deprecated class {}, use {}.'.format('IQPE',
'IQPEMinimumEigenSolver'),
DeprecationWarning)
super().__init__(operator, state_in,
num_time_slices, num_iterations,
expansion_mode, expansion_order,
shallow_circuit_concat)


class IQPEResult(QPEResult):
""" IQPE Result."""

Expand Down
24 changes: 1 addition & 23 deletions qiskit/aqua/algorithms/minimum_eigen_solvers/qpe.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
# pylint: disable=invalid-name


class QPEMinimumEigensolver(QuantumAlgorithm, MinimumEigensolver):
class QPE(QuantumAlgorithm, MinimumEigensolver):
"""The Quantum Phase Estimation algorithm.

QPE (also sometimes abbreviated as PEA, for Phase Estimation Algorithm), has two quantum
Expand Down Expand Up @@ -248,28 +248,6 @@ def _run(self) -> 'QPEResult':
return result


class QPE(QPEMinimumEigensolver):
"""
The deprecated Quantum Phase Estimation algorithm.
"""

def __init__(self,
operator: Optional[LegacyBaseOperator] = None,
state_in: Optional[InitialState] = None,
iqft: Optional[IQFT] = None,
num_time_slices: int = 1,
num_ancillae: int = 1,
expansion_mode: str = 'trotter',
expansion_order: int = 1,
shallow_circuit_concat: bool = False) -> None:
warnings.warn('Deprecated class {}, use {}.'.format('QPE',
'QPEMinimumEigenSolver'),
DeprecationWarning)
super().__init__(operator, state_in, iqft,
num_time_slices, num_ancillae, expansion_mode,
expansion_order, shallow_circuit_concat)


class QPEResult(MinimumEigensolverResult):
""" QPE Result."""

Expand Down
8 changes: 4 additions & 4 deletions test/aqua/test_iqpe.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from qiskit import BasicAer
from qiskit.aqua import QuantumInstance
from qiskit.aqua.utils import decimal_to_binary
from qiskit.aqua.algorithms import IQPEMinimumEigensolver
from qiskit.aqua.algorithms import IQPE
from qiskit.aqua.algorithms import NumPyMinimumEigensolver
from qiskit.aqua.operators import WeightedPauliOperator, MatrixOperator
from qiskit.aqua.operators.legacy import op_converter
Expand Down Expand Up @@ -87,9 +87,9 @@ def test_iqpe(self, qubit_op, simulator, num_time_slices, num_iterations):
self.log.debug('The corresponding eigenvector: %s', ref_eigenvec)

state_in = Custom(qubit_op.num_qubits, state_vector=ref_eigenvec)
iqpe = IQPEMinimumEigensolver(qubit_op, state_in, num_time_slices, num_iterations,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)
iqpe = IQPE(qubit_op, state_in, num_time_slices, num_iterations,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)

backend = BasicAer.get_backend(simulator)
quantum_instance = QuantumInstance(backend, shots=100)
Expand Down
8 changes: 4 additions & 4 deletions test/aqua/test_qpe.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from qiskit.aqua.operators.legacy import op_converter
from qiskit.aqua.utils import decimal_to_binary
from qiskit.aqua.algorithms import NumPyMinimumEigensolver
from qiskit.aqua.algorithms import QPEMinimumEigensolver
from qiskit.aqua.algorithms import QPE
from qiskit.circuit.library import QFT
from qiskit.aqua.components.iqfts import Standard
from qiskit.aqua.components.initial_states import Custom
Expand Down Expand Up @@ -105,9 +105,9 @@ def test_qpe(self, qubit_op, simulator, num_time_slices, n_ancillae, use_circuit
warnings.filterwarnings(action="ignore", category=DeprecationWarning)
iqft = Standard(n_ancillae)

qpe = QPEMinimumEigensolver(qubit_op, state_in, iqft, num_time_slices, n_ancillae,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)
qpe = QPE(qubit_op, state_in, iqft, num_time_slices, n_ancillae,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)

backend = BasicAer.get_backend(simulator)
quantum_instance = QuantumInstance(backend, shots=100)
Expand Down
8 changes: 4 additions & 4 deletions test/aqua/test_vqe2iqpe.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
from qiskit.aqua.components.variational_forms import RYRZ
from qiskit.aqua.components.optimizers import SPSA
from qiskit.aqua.algorithms import VQE
from qiskit.aqua.algorithms import IQPEMinimumEigensolver
from qiskit.aqua.algorithms import IQPE


class TestVQE2IQPE(QiskitAquaTestCase):
Expand Down Expand Up @@ -67,9 +67,9 @@ def test_vqe_2_iqpe(self):
num_iterations = 6

state_in = VarFormBased(var_form, result.optimal_point)
iqpe = IQPEMinimumEigensolver(self.qubit_op, state_in, num_time_slices, num_iterations,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)
iqpe = IQPE(self.qubit_op, state_in, num_time_slices, num_iterations,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)
quantum_instance = QuantumInstance(
backend, shots=100, seed_transpiler=self.seed, seed_simulator=self.seed
)
Expand Down
8 changes: 4 additions & 4 deletions test/chemistry/test_app_mgse.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

from qiskit import BasicAer
from qiskit.aqua import QuantumInstance
from qiskit.aqua.algorithms import NumPyMinimumEigensolver, VQE, IQPEMinimumEigensolver
from qiskit.aqua.algorithms import NumPyMinimumEigensolver, VQE, IQPE
from qiskit.aqua.components.optimizers import SLSQP
from qiskit.aqua.components.variational_forms import RY
from qiskit.chemistry import QiskitChemistryError
Expand Down Expand Up @@ -101,9 +101,9 @@ def cb_create_solver(num_particles, num_orbitals,
qubit_mapping, two_qubit_reduction, z2_symmetries):
state_in = HartreeFock(2, num_orbitals, num_particles, qubit_mapping,
two_qubit_reduction, z2_symmetries.sq_list)
iqpe = IQPEMinimumEigensolver(None, state_in, num_time_slices=1, num_iterations=6,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)
iqpe = IQPE(None, state_in, num_time_slices=1, num_iterations=6,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)
iqpe.quantum_instance = QuantumInstance(BasicAer.get_backend('qasm_simulator'),
shots=100)
return iqpe
Expand Down
8 changes: 4 additions & 4 deletions test/chemistry/test_end2end_with_iqpe.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import qiskit
from qiskit.aqua.utils import decimal_to_binary
from qiskit.aqua import QuantumInstance
from qiskit.aqua.algorithms import IQPEMinimumEigensolver, NumPyMinimumEigensolver
from qiskit.aqua.algorithms import IQPE, NumPyMinimumEigensolver
from qiskit.aqua.operators import Z2Symmetries
from qiskit.chemistry.drivers import PySCFDriver, UnitsType
from qiskit.chemistry import FermionicOperator, QiskitChemistryError
Expand Down Expand Up @@ -70,9 +70,9 @@ def test_iqpe(self, distance):
num_iterations = 6
state_in = HartreeFock(qubit_op.num_qubits, num_orbitals,
num_particles, qubit_mapping, two_qubit_reduction)
iqpe = IQPEMinimumEigensolver(qubit_op, state_in, num_time_slices, num_iterations,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)
iqpe = IQPE(qubit_op, state_in, num_time_slices, num_iterations,
expansion_mode='suzuki', expansion_order=2,
shallow_circuit_concat=True)
backend = qiskit.BasicAer.get_backend('qasm_simulator')
quantum_instance = QuantumInstance(backend, shots=100)

Expand Down
8 changes: 4 additions & 4 deletions test/chemistry/test_end2end_with_qpe.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from qiskit.circuit.library import QFT
from qiskit.aqua.utils import decimal_to_binary
from qiskit.aqua import QuantumInstance
from qiskit.aqua.algorithms import QPEMinimumEigensolver, NumPyMinimumEigensolver
from qiskit.aqua.algorithms import QPE, NumPyMinimumEigensolver
from qiskit.aqua.components.iqfts import Standard
from qiskit.aqua.operators import Z2Symmetries
from qiskit.chemistry.drivers import PySCFDriver, UnitsType
Expand Down Expand Up @@ -88,9 +88,9 @@ def test_qpe(self, distance, use_circuit_library):
else:
iqft = Standard(n_ancillae)

qpe = QPEMinimumEigensolver(qubit_op, state_in, iqft, num_time_slices, n_ancillae,
expansion_mode='suzuki',
expansion_order=2, shallow_circuit_concat=True)
qpe = QPE(qubit_op, state_in, iqft, num_time_slices, n_ancillae,
expansion_mode='suzuki',
expansion_order=2, shallow_circuit_concat=True)
backend = qiskit.BasicAer.get_backend('qasm_simulator')
quantum_instance = QuantumInstance(backend, shots=100)
result = qpe.run(quantum_instance)
Expand Down