diff --git a/docs/technical_docs/vqls.md b/docs/technical_docs/vqls.md index 4cf66a9..0264a3e 100644 --- a/docs/technical_docs/vqls.md +++ b/docs/technical_docs/vqls.md @@ -46,7 +46,7 @@ Systems of linear equations arise naturally in many real-life applications in a from qalcore.qiskit.vqls.vqls import VQLS, VQLSLog from qiskit.circuit.library.n_local.real_amplitudes import RealAmplitudes from qiskit_algorithms import optimizers as opt - from qiskit import Aer, BasicAer + from qiskit_aer import Aer, BasicAer import numpy as np from qiskit.quantum_info import Statevector diff --git a/tests/test_hadamard.py b/tests/test_hadamard.py index a208405..4476c29 100644 --- a/tests/test_hadamard.py +++ b/tests/test_hadamard.py @@ -10,9 +10,9 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. -import numpy as np -from qiskit.test import QiskitTestCase +import unittest +import numpy as np from qiskit.circuit.library import RealAmplitudes from qiskit_algorithms import optimizers as opt @@ -24,7 +24,7 @@ from vqls_prototype.hadamard_test.direct_hadamard_test import BatchDirectHadammardTest -class TestHadamard(QiskitTestCase): +class TestHadamard(unittest.TestCase): def setUp(self): super().setUp() diff --git a/tests/test_hybrid_qst_vqls.py b/tests/test_hybrid_qst_vqls.py index 0496e62..f1e5357 100644 --- a/tests/test_hybrid_qst_vqls.py +++ b/tests/test_hybrid_qst_vqls.py @@ -14,19 +14,16 @@ import unittest -from qiskit.test import QiskitTestCase import numpy as np - -from qiskit import BasicAer from qiskit.circuit.library import RealAmplitudes from qiskit_algorithms.optimizers import COBYLA -from qiskit.primitives import Estimator, Sampler, BackendEstimator, BackendSampler +from qiskit.primitives import Estimator, Sampler from vqls_prototype import Hybrid_QST_VQLS, VQLSLog -class TestHybridQSTVQLS(QiskitTestCase): +class TestHybridQSTVQLS(unittest.TestCase): """Test VQLS""" def setUp(self): @@ -36,12 +33,12 @@ def setUp(self): self.estimators = ( Estimator(), - BackendEstimator(BasicAer.get_backend("qasm_simulator")), + # AerEstimator(), ) self.samplers = ( Sampler(), - BackendSampler(BasicAer.get_backend("qasm_simulator")), + # AerSampler(), ) self.log = VQLSLog([], []) diff --git a/tests/test_qst_vqls.py b/tests/test_qst_vqls.py index 74bd996..c0f56d1 100644 --- a/tests/test_qst_vqls.py +++ b/tests/test_qst_vqls.py @@ -14,19 +14,16 @@ import unittest -from qiskit.test import QiskitTestCase import numpy as np - -from qiskit import BasicAer from qiskit.circuit.library import RealAmplitudes from qiskit_algorithms.optimizers import COBYLA -from qiskit.primitives import Estimator, Sampler, BackendEstimator, BackendSampler +from qiskit.primitives import Estimator, Sampler from vqls_prototype import QST_VQLS, VQLSLog -class TestQSTVQLS(QiskitTestCase): +class TestQSTVQLS(unittest.TestCase): """Test VQLS""" def setUp(self): @@ -36,12 +33,12 @@ def setUp(self): self.estimators = ( Estimator(), - BackendEstimator(BasicAer.get_backend("qasm_simulator")), + # AerEstimator(), ) self.samplers = ( Sampler(), - BackendSampler(BasicAer.get_backend("qasm_simulator")), + # AerSampler(), ) self.log = VQLSLog([], []) diff --git a/tests/test_tomography.py b/tests/test_tomography.py index 5cd146b..d95e7ae 100644 --- a/tests/test_tomography.py +++ b/tests/test_tomography.py @@ -10,17 +10,18 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. +import unittest import numpy as np -from qiskit.test import QiskitTestCase -from qiskit import Aer + +from qiskit_aer import Aer from qiskit.circuit.library import RealAmplitudes from qiskit.primitives import Sampler from vqls_prototype.tomography import FullQST, SimulatorQST, HTreeQST, ShadowQST -class TestTomography(QiskitTestCase): +class TestTomography(unittest.TestCase): def setUp(self): super().setUp() diff --git a/tests/test_vqls.py b/tests/test_vqls.py index 149ae58..7504159 100644 --- a/tests/test_vqls.py +++ b/tests/test_vqls.py @@ -14,15 +14,14 @@ import unittest -from qiskit.test import QiskitTestCase import numpy as np -from qiskit import BasicAer, QuantumCircuit +from qiskit import QuantumCircuit from qiskit.circuit.library import RealAmplitudes from qiskit_algorithms.optimizers import ADAM -from qiskit.primitives import Estimator, Sampler, BackendEstimator, BackendSampler +from qiskit.primitives import Estimator, Sampler from vqls_prototype import VQLS # 8-11-2023 @@ -30,7 +29,7 @@ # this test case is skipped for now -class TestVQLS(QiskitTestCase): +class TestVQLS(unittest.TestCase): """Test VQLS""" def setUp(self): @@ -44,12 +43,12 @@ def setUp(self): self.estimators = ( Estimator(), - BackendEstimator(BasicAer.get_backend("qasm_simulator")), + # AerEstimator(), ) self.samplers = ( Sampler(), - BackendSampler(BasicAer.get_backend("qasm_simulator")), + # AerSampler(), ) def test_numpy_input(self): diff --git a/vqls_prototype/hadamard_test/hadamard_overlap_test.py b/vqls_prototype/hadamard_test/hadamard_overlap_test.py index 0d8822c..526f4ff 100644 --- a/vqls_prototype/hadamard_test/hadamard_overlap_test.py +++ b/vqls_prototype/hadamard_test/hadamard_overlap_test.py @@ -1,8 +1,6 @@ -from typing import Optional, List, Union -from qiskit import QuantumCircuit, QuantumRegister, transpile +from typing import Optional, List +from qiskit import QuantumCircuit, QuantumRegister from qiskit_algorithms.exceptions import AlgorithmError -from qiskit.opflow import TensoredOp -from qiskit.quantum_info import SparsePauliOp import numpy as np import numpy.typing as npt diff --git a/vqls_prototype/hadamard_test/hadamard_test.py b/vqls_prototype/hadamard_test/hadamard_test.py index 24eb91d..72e629f 100644 --- a/vqls_prototype/hadamard_test/hadamard_test.py +++ b/vqls_prototype/hadamard_test/hadamard_test.py @@ -1,9 +1,9 @@ """Hadammard test.""" from typing import Optional, List, Union -from qiskit import QuantumCircuit, QuantumRegister, transpile +from qiskit import QuantumCircuit from qiskit_algorithms.exceptions import AlgorithmError -from qiskit.opflow import TensoredOp +from qiskit.quantum_info import Operator from qiskit.quantum_info import SparsePauliOp import numpy as np import numpy.typing as npt @@ -212,7 +212,7 @@ def _build_circuit( return circuits - def _build_observable(self) -> List[TensoredOp]: + def _build_observable(self) -> List[Operator]: """Create the operator to measure |1> on the control qubit. Returns: diff --git a/vqls_prototype/matrix_decomposition/matrix_decomposition.py b/vqls_prototype/matrix_decomposition/matrix_decomposition.py index b3496c4..da0f6f8 100644 --- a/vqls_prototype/matrix_decomposition/matrix_decomposition.py +++ b/vqls_prototype/matrix_decomposition/matrix_decomposition.py @@ -1,4 +1,5 @@ """Methods to decompose a matrix into quantum circuits""" + from itertools import chain, combinations from collections import namedtuple from itertools import product diff --git a/vqls_prototype/matrix_decomposition/optimized_matrix_decomposition.py b/vqls_prototype/matrix_decomposition/optimized_matrix_decomposition.py index c71caff..05dc19d 100644 --- a/vqls_prototype/matrix_decomposition/optimized_matrix_decomposition.py +++ b/vqls_prototype/matrix_decomposition/optimized_matrix_decomposition.py @@ -1,4 +1,5 @@ """Methods to decompose a matrix into quantum circuits""" + import itertools from dataclasses import dataclass from collections import OrderedDict diff --git a/vqls_prototype/solver/base_solver.py b/vqls_prototype/solver/base_solver.py index cbf11e9..fa6289d 100644 --- a/vqls_prototype/solver/base_solver.py +++ b/vqls_prototype/solver/base_solver.py @@ -11,7 +11,7 @@ from qiskit_algorithms.utils.validation import validate_min from qiskit.circuit.library.n_local.real_amplitudes import RealAmplitudes from qiskit_algorithms.optimizers import Minimizer, Optimizer -from qiskit.opflow.gradients import GradientBase +from qiskit_algorithms.gradients import BaseEstimatorGradient from .variational_linear_solver import ( VariationalLinearSolver, @@ -45,7 +45,7 @@ def __init__( optimizer: Union[Optimizer, Minimizer], sampler: Union[BaseSampler, None], initial_point: Union[np.ndarray, None], - gradient: Union[GradientBase, Callable, None], + gradient: Union[BaseEstimatorGradient, Callable, None], max_evals_grouped: int, ) -> None: r""" diff --git a/vqls_prototype/solver/hybrid_qst_vqls.py b/vqls_prototype/solver/hybrid_qst_vqls.py index 4cb01db..ac062eb 100644 --- a/vqls_prototype/solver/hybrid_qst_vqls.py +++ b/vqls_prototype/solver/hybrid_qst_vqls.py @@ -10,9 +10,9 @@ from typing import Optional, Union, List, Callable, Dict, Tuple from qiskit_algorithms.optimizers import Minimizer, Optimizer import numpy as np -from qiskit.opflow.gradients import GradientBase +from qiskit_algorithms.gradients import BaseEstimatorGradient from qiskit.primitives import BaseEstimator, BaseSampler -from qiskit import Aer +from qiskit_aer import Aer from qiskit import QuantumCircuit from qiskit_algorithms.utils import validate_bounds @@ -55,7 +55,7 @@ class Hybrid_QST_VQLS(BaseSolver): from qalcore.qiskit.vqls.vqls import VQLS, VQLSLog from qiskit.circuit.library.n_local.real_amplitudes import RealAmplitudes from qiskit_algorithms import optimizers as opt - from qiskit import Aer, BasicAer + from qiskit_aer import Aer, BasicAer import numpy as np from qiskit.quantum_info import Statevector @@ -122,7 +122,7 @@ def __init__( optimizer: Union[Optimizer, Minimizer], sampler: Union[BaseSampler, None], initial_point: Optional[Union[np.ndarray, None]] = None, - gradient: Optional[Union[GradientBase, Callable, None]] = None, + gradient: Optional[Union[BaseEstimatorGradient, Callable, None]] = None, max_evals_grouped: Optional[int] = 1, options: Optional[Union[Dict, None]] = None, ) -> None: diff --git a/vqls_prototype/solver/qst_vqls.py b/vqls_prototype/solver/qst_vqls.py index 3e09844..823beb9 100644 --- a/vqls_prototype/solver/qst_vqls.py +++ b/vqls_prototype/solver/qst_vqls.py @@ -12,9 +12,9 @@ import numpy as np import sparse -from qiskit.opflow.gradients import GradientBase +from qiskit_algorithms.gradients import BaseEstimatorGradient from qiskit.primitives import BaseEstimator, BaseSampler -from qiskit import Aer +from qiskit_aer import Aer from qiskit import QuantumCircuit from qiskit.quantum_info import SparsePauliOp from qiskit_algorithms.utils import validate_bounds @@ -52,7 +52,7 @@ class QST_VQLS(BaseSolver): from qalcore.qiskit.vqls.vqls import VQLS, VQLSLog from qiskit.circuit.library.n_local.real_amplitudes import RealAmplitudes from qiskit_algorithms import optimizers as opt - from qiskit import Aer, BasicAer + from qiskit_aer import Aer, BasicAer import numpy as np from qiskit.quantum_info import Statevector @@ -119,7 +119,7 @@ def __init__( optimizer: Union[Optimizer, Minimizer], sampler: Union[BaseSampler, None], initial_point: Optional[Union[np.ndarray, None]] = None, - gradient: Optional[Union[GradientBase, Callable, None]] = None, + gradient: Optional[Union[BaseEstimatorGradient, Callable, None]] = None, max_evals_grouped: Optional[int] = 1, options: Optional[Union[Dict, None]] = None, ) -> None: diff --git a/vqls_prototype/solver/vqls.py b/vqls_prototype/solver/vqls.py index 1ae0522..c77609d 100644 --- a/vqls_prototype/solver/vqls.py +++ b/vqls_prototype/solver/vqls.py @@ -15,7 +15,7 @@ from qiskit_algorithms.utils import validate_bounds from qiskit.quantum_info import Statevector from qiskit_algorithms.optimizers import Minimizer, Optimizer -from qiskit.opflow.gradients import GradientBase +from qiskit_algorithms.gradients import BaseEstimatorGradient from .variational_linear_solver import ( VariationalLinearSolverResult, @@ -63,7 +63,7 @@ class VQLS(BaseSolver): from qalcore.qiskit.vqls.vqls import VQLS, VQLSLog from qiskit.circuit.library.n_local.real_amplitudes import RealAmplitudes from qiskit_algorithms import optimizers as opt - from qiskit import Aer, BasicAer + from qiskit_aer import Aer, BasicAer import numpy as np from qiskit.quantum_info import Statevector @@ -130,7 +130,7 @@ def __init__( optimizer: Union[Optimizer, Minimizer], sampler: Optional[Union[BaseSampler, None]] = None, initial_point: Optional[Union[np.ndarray, None]] = None, - gradient: Optional[Union[GradientBase, Callable, None]] = None, + gradient: Optional[Union[BaseEstimatorGradient, Callable, None]] = None, max_evals_grouped: Optional[int] = 1, options: Optional[Union[Dict, None]] = None, ) -> None: