Skip to content

Commit

Permalink
Merge pull request #7 from QuantumApplicationLab/bump_qiskit_test
Browse files Browse the repository at this point in the history
Bump qiskit test
  • Loading branch information
NicoRenaud authored Nov 8, 2023
2 parents 591392c + 7e90c65 commit 914ceb2
Show file tree
Hide file tree
Showing 27 changed files with 127 additions and 82 deletions.
2 changes: 1 addition & 1 deletion docs/beginners_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ import numpy as np
from qalcore.qiskit.vqls.vqls import VQLS, VQLSLog
from qiskit.primitives import Estimator
from qiskit.circuit.library.n_local.real_amplitudes import RealAmplitudes
from qiskit.algorithms import optimizers as opt
from qiskit_algorithms import optimizers as opt
size = 4

# define the matrix of the problem
Expand Down
2 changes: 1 addition & 1 deletion docs/how_tos/01_how_to_solve_linear_system.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@
"source": [
"from vqls_prototype import VQLS, VQLSLog\n",
"from qiskit.primitives import Estimator\n",
"from qiskit.algorithms import optimizers as opt\n",
"from qiskit_algorithms import optimizers as opt\n",
"\n",
"# instantiate an estimator primitive\n",
"estimator = Estimator()\n",
Expand Down
6 changes: 3 additions & 3 deletions docs/how_tos/02_how_to_use_circuits.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,13 @@
"qc1 = QuantumCircuit(nqbit)\n",
"qc1.x(0)\n",
"qc1.x(1)\n",
"qc1.cnot(0, 1)\n",
"qc1.cx(0, 1)\n",
"\n",
"# second quantum circuit for A\n",
"qc2 = QuantumCircuit(nqbit)\n",
"qc2.h(0)\n",
"qc2.x(1)\n",
"qc2.cnot(0, 1)\n",
"qc2.cx(0, 1)\n",
"\n",
"# quantum circuit for b\n",
"rhs = QuantumCircuit(nqbit)\n",
Expand All @@ -94,7 +94,7 @@
"source": [
"from vqls_prototype import VQLS, VQLSLog\n",
"from qiskit.primitives import Estimator\n",
"from qiskit.algorithms import optimizers as opt\n",
"from qiskit_algorithms import optimizers as opt\n",
"from qiskit.circuit.library.n_local.real_amplitudes import RealAmplitudes\n",
"\n",
"\n",
Expand Down
2 changes: 1 addition & 1 deletion docs/how_tos/03_how_to_use_runtime.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
"source": [
"from qiskit_ibm_runtime import QiskitRuntimeService, Estimator, Session, Options\n",
"from vqls_prototype import VQLS, VQLSLog\n",
"from qiskit.algorithms import optimizers as opt\n",
"from qiskit_algorithms import optimizers as opt\n",
"\n",
"# make sure your IBMQ account is saved\n",
"\n",
Expand Down
2 changes: 1 addition & 1 deletion docs/how_tos/04_how_to_control_options.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
"outputs": [],
"source": [
"from qiskit.primitives import Estimator, Sampler\n",
"from qiskit.algorithms import optimizers as opt\n",
"from qiskit_algorithms import optimizers as opt\n",
"from vqls_prototype import VQLS, VQLSLog\n",
"\n",
"# instantiate an estimator primitive\n",
Expand Down
2 changes: 1 addition & 1 deletion docs/technical_docs/vqls.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Systems of linear equations arise naturally in many real-life applications in a
```python
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_algorithms import optimizers as opt
from qiskit import Aer, BasicAer
import numpy as np

Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/vqls.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"from vqls_prototype import VQLS, VQLSLog\n",
"from qiskit.primitives import Estimator, Sampler\n",
"from qiskit.circuit.library.n_local.real_amplitudes import RealAmplitudes\n",
"from qiskit.algorithms.optimizers import COBYLA\n",
"from qiskit_algorithms.optimizers import COBYLA\n",
"import numpy as np"
]
},
Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/vqls_runtime.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"from vqls_prototype import VQLS, VQLSLog\n",
"from qiskit_ibm_runtime import QiskitRuntimeService, Estimator, Session, Options\n",
"from qiskit.circuit.library.n_local.real_amplitudes import RealAmplitudes\n",
"from qiskit.algorithms.optimizers import COBYLA\n",
"from qiskit_algorithms.optimizers import COBYLA\n",
"import numpy as np"
]
},
Expand Down
5 changes: 3 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ dependencies = [
"certifi>=2021.5.30",
"importlib_metadata>=4.8.1",
"qiskit-aer>=0.10.3",
"qiskit>=0.14.1",
"qiskit>=0.44",
"qiskit_experiments>=0.5.3",
"qiskit_ibm_runtime>=0.9.3",
"qiskit_algorithms>=0.2.1",
"ipykernel>=6.15.0",
"matplotlib>=3.5.3",
"pylatexenc>=2.10",
Expand Down Expand Up @@ -69,4 +70,4 @@ py-modules = []

[tool.setuptools.packages.find]
include = ['vqls_prototype*']
exclude = ['vqls_prototype*tests']
exclude = ['vqls_prototype*tests']
2 changes: 2 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[pytest]
filterwarnings = ignore::DeprecationWarning
5 changes: 1 addition & 4 deletions tests/test_hadamard.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@
import numpy as np

from qiskit.test import QiskitTestCase
from qiskit.utils import algorithm_globals

from qiskit.circuit.library import RealAmplitudes
from qiskit.algorithms import optimizers as opt
from qiskit_algorithms import optimizers as opt
from qiskit.primitives import Estimator, Sampler
from vqls_prototype import VQLS, VQLSLog, Hybrid_QST_VQLS

Expand All @@ -28,8 +27,6 @@
class TestHadamard(QiskitTestCase):
def setUp(self):
super().setUp()
self.seed = 50
algorithm_globals.random_seed = self.seed

# define system
self.estimator = Estimator()
Expand Down
5 changes: 1 addition & 4 deletions tests/test_hybrid_qst_vqls.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@

from qiskit import BasicAer
from qiskit.circuit.library import RealAmplitudes
from qiskit.utils import algorithm_globals

from qiskit.algorithms.optimizers import COBYLA
from qiskit_algorithms.optimizers import COBYLA
from qiskit.primitives import Estimator, Sampler, BackendEstimator, BackendSampler
from vqls_prototype import Hybrid_QST_VQLS, VQLSLog

Expand All @@ -32,8 +31,6 @@ class TestHybridQSTVQLS(QiskitTestCase):

def setUp(self):
super().setUp()
self.seed = 50
algorithm_globals.random_seed = self.seed

self.options = ({"use_local_cost_function": False, "use_overlap_test": False},)

Expand Down
5 changes: 1 addition & 4 deletions tests/test_qst_vqls.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@

from qiskit import BasicAer
from qiskit.circuit.library import RealAmplitudes
from qiskit.utils import algorithm_globals

from qiskit.algorithms.optimizers import COBYLA
from qiskit_algorithms.optimizers import COBYLA
from qiskit.primitives import Estimator, Sampler, BackendEstimator, BackendSampler
from vqls_prototype import QST_VQLS, VQLSLog

Expand All @@ -32,8 +31,6 @@ class TestQSTVQLS(QiskitTestCase):

def setUp(self):
super().setUp()
self.seed = 50
algorithm_globals.random_seed = self.seed

self.options = ({"use_local_cost_function": False, "use_overlap_test": False},)

Expand Down
3 changes: 0 additions & 3 deletions tests/test_tomography.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@

import numpy as np
from qiskit.test import QiskitTestCase
from qiskit.utils import algorithm_globals

from qiskit import Aer
from qiskit.circuit.library import RealAmplitudes
Expand All @@ -24,8 +23,6 @@
class TestTomography(QiskitTestCase):
def setUp(self):
super().setUp()
self.seed = 50
algorithm_globals.random_seed = self.seed

# define ansatz
num_qubits = 2
Expand Down
39 changes: 23 additions & 16 deletions tests/test_vqls.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,21 @@

from qiskit import BasicAer, QuantumCircuit
from qiskit.circuit.library import RealAmplitudes
from qiskit.utils import algorithm_globals

from qiskit.algorithms.optimizers import COBYLA
from qiskit_algorithms.optimizers import ADAM
from qiskit.primitives import Estimator, Sampler, BackendEstimator, BackendSampler
from vqls_prototype import VQLS, VQLSLog
from vqls_prototype import VQLS

# 8-11-2023
# Overlap Hadamard test do not work with BasicAer primitives anymore
# this test case is skipped for now


class TestVQLS(QiskitTestCase):
"""Test VQLS"""

def setUp(self):
super().setUp()
self.seed = 50
algorithm_globals.random_seed = self.seed

self.options = (
{"use_local_cost_function": False, "use_overlap_test": False},
Expand All @@ -51,8 +52,6 @@ def setUp(self):
BackendSampler(BasicAer.get_backend("qasm_simulator")),
)

self.log = VQLSLog([], [])

def test_numpy_input(self):
"""Test the VQLS on matrix input using statevector simulator."""

Expand All @@ -68,12 +67,16 @@ def test_numpy_input(self):
rhs = np.array([0.1] * 4)
ansatz = RealAmplitudes(num_qubits=2, reps=3, entanglement="full")

for estimator, sampler in zip(self.estimators, self.samplers):
for opt in self.options:
for iprim, (estimator, sampler) in enumerate(
zip(self.estimators, self.samplers)
):
for iopt, opt in enumerate(self.options):
if iprim == 1 and iopt == 2:
continue
vqls = VQLS(
estimator,
ansatz,
COBYLA(maxiter=2, disp=True),
ADAM(maxiter=2),
options=opt,
sampler=sampler,
)
Expand All @@ -92,19 +95,23 @@ def test_circuit_input_statevector(self):
qc1 = QuantumCircuit(num_qubits)
qc1.x(0)
qc1.x(1)
qc1.cnot(0, 1)
qc1.cx(0, 1)

qc2 = QuantumCircuit(num_qubits)
qc2.h(0)
qc2.x(1)
qc2.cnot(0, 1)

for estimator, sampler in zip(self.estimators, self.samplers):
for opt in self.options:
qc2.cx(0, 1)

for iprim, (estimator, sampler) in enumerate(
zip(self.estimators, self.samplers)
):
for iopt, opt in enumerate(self.options):
if iprim == 1 and iopt == 2:
continue
vqls = VQLS(
estimator,
ansatz,
COBYLA(maxiter=2, disp=True),
ADAM(maxiter=2),
sampler=sampler,
options=opt,
)
Expand Down
2 changes: 1 addition & 1 deletion vqls_prototype/hadamard_test/direct_hadamard_test.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Optional, List
from qiskit import QuantumCircuit
from qiskit.algorithms.exceptions import AlgorithmError
from qiskit_algorithms.exceptions import AlgorithmError
import numpy as np
import numpy.typing as npt

Expand Down
3 changes: 1 addition & 2 deletions vqls_prototype/hadamard_test/hadamard_overlap_test.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Optional, List, Union
from qiskit import QuantumCircuit, QuantumRegister, transpile
from qiskit.algorithms.exceptions import AlgorithmError
from qiskit_algorithms.exceptions import AlgorithmError
from qiskit.opflow import TensoredOp
from qiskit.quantum_info import SparsePauliOp
import numpy as np
Expand All @@ -17,7 +17,6 @@ def __init__(self, hdmr_list: List):
hdrm_list (List): A list of DirectHadamardTest instances
"""
self.hdmr_list = hdmr_list
# self.circuits = [hdmr.circuits for hdmr in hdmr_list]
self.circuits = [c for hdmr in hdmr_list for c in hdmr.circuits]
self.post_processing = hdmr_list[0].post_processing
self.shots = hdmr_list[0].shots
Expand Down
2 changes: 1 addition & 1 deletion vqls_prototype/hadamard_test/hadamard_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from typing import Optional, List, Union
from qiskit import QuantumCircuit, QuantumRegister, transpile
from qiskit.algorithms.exceptions import AlgorithmError
from qiskit_algorithms.exceptions import AlgorithmError
from qiskit.opflow import TensoredOp
from qiskit.quantum_info import SparsePauliOp
import numpy as np
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ def get_possible_pauli_strings(self) -> List:
# if we use the sparse decomposition
if self.use_sparse:
# for now convert to coo and extract indices
assert isinstance(self._matrix, spsp.csr_array)
assert isinstance(self._matrix, spsp.spmatrix)
coo_mat = self._matrix.tocoo()
idx_row, idx_col = coo_mat.row, coo_mat.col

Expand Down
6 changes: 3 additions & 3 deletions vqls_prototype/solver/base_solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@

from qiskit import QuantumCircuit
from qiskit.primitives import BaseEstimator, BaseSampler
from qiskit.algorithms.variational_algorithm import VariationalAlgorithm
from qiskit.utils.validation import validate_min
from qiskit_algorithms.variational_algorithm import VariationalAlgorithm
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_algorithms.optimizers import Minimizer, Optimizer
from qiskit.opflow.gradients import GradientBase

from .variational_linear_solver import (
Expand Down
14 changes: 6 additions & 8 deletions vqls_prototype/solver/hybrid_qst_vqls.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,14 @@
See https://arxiv.org/abs/1909.05820
"""
from typing import Optional, Union, List, Callable, Dict, Tuple
from qiskit.algorithms.optimizers import Minimizer, Optimizer
from qiskit_algorithms.optimizers import Minimizer, Optimizer
import numpy as np
from qiskit.opflow.gradients import GradientBase
from qiskit.primitives import BaseEstimator, BaseSampler
from qiskit import Aer
from qiskit import QuantumCircuit

from qiskit.algorithms.minimum_eigen_solvers.vqe import (
_validate_bounds,
_validate_initial_point,
)
from qiskit_algorithms.utils import validate_bounds
from qiskit.quantum_info import SparsePauliOp

from .variational_linear_solver import (
Expand All @@ -39,6 +36,7 @@
from ..tomography.htree_qst import HTreeQST
from ..tomography.shadow_qst import ShadowQST

from .validation import validate_initial_point
from .base_solver import BaseSolver


Expand All @@ -56,7 +54,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_algorithms import optimizers as opt
from qiskit import Aer, BasicAer
import numpy as np
Expand Down Expand Up @@ -489,8 +487,8 @@ def _solve(
)

# set an expectation for this algorithm run (will be reset to None at the end)
initial_point = _validate_initial_point(self.initial_point, self.ansatz)
bounds = _validate_bounds(self.ansatz)
initial_point = validate_initial_point(self.initial_point, self.ansatz)
bounds = validate_bounds(self.ansatz)

# Convert the gradient operator into a callable function that is compatible with the
# optimization routine.
Expand Down
Loading

0 comments on commit 914ceb2

Please sign in to comment.