diff --git a/.pylintdict b/.pylintdict index e915b94cc5..7f1bd9d668 100644 --- a/.pylintdict +++ b/.pylintdict @@ -28,6 +28,7 @@ appfactory arcsin args Armijo +arxiv asmatrix assertRaises assertEqual @@ -156,6 +157,7 @@ disp distro dj dnf +Dobsicek docplex docplex's Docplex diff --git a/qiskit/aqua/algorithms/__init__.py b/qiskit/aqua/algorithms/__init__.py index a471ac6f0a..0fe00d8c9f 100644 --- a/qiskit/aqua/algorithms/__init__.py +++ b/qiskit/aqua/algorithms/__init__.py @@ -169,10 +169,10 @@ :nosignatures: ClassicalCPLEX - IQPEMinimumEigensolver + IQPE NumPyMinimumEigensolver QAOA - QPEMinimumEigensolver + QPE VQE """ @@ -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 @@ -223,10 +222,8 @@ 'QSVM', 'Grover', 'IQPE', - 'IQPEMinimumEigensolver', 'IQPEResult', 'QPE', - 'QPEMinimumEigensolver', 'QPEResult', 'AmplitudeEstimation', 'IterativeAmplitudeEstimation', diff --git a/qiskit/aqua/algorithms/minimum_eigen_solvers/__init__.py b/qiskit/aqua/algorithms/minimum_eigen_solvers/__init__.py index 2d0c217c92..629e621621 100644 --- a/qiskit/aqua/algorithms/minimum_eigen_solvers/__init__.py +++ b/qiskit/aqua/algorithms/minimum_eigen_solvers/__init__.py @@ -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 @@ -27,10 +27,8 @@ 'VQEResult', 'QAOA', 'IQPE', - 'IQPEMinimumEigensolver', 'IQPEResult', 'QPE', - 'QPEMinimumEigensolver', 'QPEResult', 'ClassicalCPLEX', 'CPLEX_Ising', diff --git a/qiskit/aqua/algorithms/minimum_eigen_solvers/iqpe.py b/qiskit/aqua/algorithms/minimum_eigen_solvers/iqpe.py index cf08338073..2d051713f9 100644 --- a/qiskit/aqua/algorithms/minimum_eigen_solvers/iqpe.py +++ b/qiskit/aqua/algorithms/minimum_eigen_solvers/iqpe.py @@ -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 @@ -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 `_ """ def __init__(self, @@ -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.""" diff --git a/qiskit/aqua/algorithms/minimum_eigen_solvers/qpe.py b/qiskit/aqua/algorithms/minimum_eigen_solvers/qpe.py index 61cae1bd2d..df3205e983 100644 --- a/qiskit/aqua/algorithms/minimum_eigen_solvers/qpe.py +++ b/qiskit/aqua/algorithms/minimum_eigen_solvers/qpe.py @@ -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 @@ -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.""" diff --git a/test/aqua/test_iqpe.py b/test/aqua/test_iqpe.py index 29e38a1932..1c61e38216 100644 --- a/test/aqua/test_iqpe.py +++ b/test/aqua/test_iqpe.py @@ -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 @@ -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) diff --git a/test/aqua/test_qpe.py b/test/aqua/test_qpe.py index d6a6b28ada..1771e8f054 100644 --- a/test/aqua/test_qpe.py +++ b/test/aqua/test_qpe.py @@ -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 @@ -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) diff --git a/test/aqua/test_vqe2iqpe.py b/test/aqua/test_vqe2iqpe.py index 2d984141ef..127c67b0fc 100644 --- a/test/aqua/test_vqe2iqpe.py +++ b/test/aqua/test_vqe2iqpe.py @@ -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): @@ -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 ) diff --git a/test/chemistry/test_app_mgse.py b/test/chemistry/test_app_mgse.py index c14952475b..b2b01dc849 100644 --- a/test/chemistry/test_app_mgse.py +++ b/test/chemistry/test_app_mgse.py @@ -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 @@ -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 diff --git a/test/chemistry/test_end2end_with_iqpe.py b/test/chemistry/test_end2end_with_iqpe.py index 71e183085b..06eabfdadd 100644 --- a/test/chemistry/test_end2end_with_iqpe.py +++ b/test/chemistry/test_end2end_with_iqpe.py @@ -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 @@ -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) diff --git a/test/chemistry/test_end2end_with_qpe.py b/test/chemistry/test_end2end_with_qpe.py index 41f3211f8e..5d047ad767 100644 --- a/test/chemistry/test_end2end_with_qpe.py +++ b/test/chemistry/test_end2end_with_qpe.py @@ -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 @@ -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)