Skip to content

Commit a32645d

Browse files
Auto Commit
1 parent 23fb6ea commit a32645d

File tree

16 files changed

+85
-132
lines changed

16 files changed

+85
-132
lines changed

qiskit_machine_learning/algorithms/classifiers/vqc.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import numpy as np
1818

1919
from qiskit import QuantumCircuit
20-
from qiskit.primitives import BaseSampler
20+
from qiskit.primitives import BaseSamplerV2 # change: BaseSampler is migrated to BaseSamplerV2
2121
from qiskit.transpiler.passmanager import BasePassManager
2222

2323
from ...neural_networks import SamplerQNN
@@ -27,7 +27,6 @@
2727

2828
from .neural_network_classifier import NeuralNetworkClassifier
2929

30-
3130
class VQC(NeuralNetworkClassifier):
3231
r"""A convenient Variational Quantum Classifier implementation.
3332
@@ -58,7 +57,7 @@ def __init__(
5857
initial_point: np.ndarray | None = None,
5958
callback: Callable[[np.ndarray, float], None] | None = None,
6059
*,
61-
sampler: BaseSampler | None = None,
60+
sampler: BaseSamplerV2 | None = None, # change: BaseSampler is migrated to BaseSamplerV2
6261
interpret: Callable[[int], int | tuple[int, ...]] | None = None,
6362
output_shape: int | None = None,
6463
pass_manager: BasePassManager | None = None,
@@ -198,4 +197,4 @@ def _get_interpret(self, num_classes: int):
198197
def parity(x: int, num_classes: int = num_classes) -> int:
199198
return x % num_classes
200199

201-
return parity
200+
return parity

qiskit_machine_learning/algorithms/inference/qbayesian.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,12 @@
2020
from qiskit.quantum_info import Statevector
2121
from qiskit.circuit import Qubit
2222
from qiskit.circuit.library import grover_operator
23-
from qiskit.primitives import BaseSampler, Sampler, BaseSamplerV2, BaseSamplerV1
23+
from qiskit.primitives import BaseSamplerV2, StatevectorSampler # change: BaseSampler and Sampler are replaced by BaseSamplerV2 and StatevectorSampler
2424
from qiskit.transpiler.passmanager import BasePassManager
2525
from qiskit.result import QuasiDistribution
2626

2727
from ...utils.deprecation import issue_deprecation_msg
2828

29-
3029
class QBayesian:
3130
r"""
3231
Implements a quantum Bayesian inference (QBI) algorithm that has been developed in [1]. The
@@ -67,7 +66,7 @@ def __init__(
6766
*,
6867
limit: int = 10,
6968
threshold: float = 0.9,
70-
sampler: BaseSampler | BaseSamplerV2 | None = None,
69+
sampler: BaseSamplerV2 | None = None, # change: BaseSampler is replaced by BaseSamplerV2
7170
pass_manager: BasePassManager | None = None,
7271
):
7372
"""
@@ -96,9 +95,9 @@ def __init__(
9695
self._limit = limit
9796
self._threshold = threshold
9897
if sampler is None:
99-
sampler = Sampler()
98+
sampler = StatevectorSampler() # change: Sampler is replaced by StatevectorSampler
10099

101-
if isinstance(sampler, BaseSamplerV1):
100+
if isinstance(sampler, BaseSamplerV2): # change: BaseSamplerV1 is replaced by BaseSamplerV2
102101
issue_deprecation_msg(
103102
msg="V1 Primitives are deprecated",
104103
version="0.8.0",
@@ -167,15 +166,15 @@ def _run_circuit(self, circuit: QuantumCircuit) -> Dict[str, float]:
167166
"""Run the quantum circuit with the sampler."""
168167
counts = {}
169168

170-
if isinstance(self._sampler, BaseSampler):
169+
if isinstance(self._sampler, BaseSamplerV2): # change: BaseSampler is replaced by BaseSamplerV2
171170
# Sample from circuit
172171
job = self._sampler.run(circuit)
173172
result = job.result()
174173

175174
# Get the counts of quantum state results
176175
counts = result.quasi_dists[0].nearest_probability_distribution().binary_probabilities()
177176

178-
elif isinstance(self._sampler, BaseSamplerV2):
177+
elif isinstance(self._sampler, BaseSamplerV2): # change: BaseSamplerV2 is replaced by BaseSamplerV2
179178
# Sample from circuit
180179
if self._pass_manager is not None:
181180
circuit = self._pass_manager.run(circuit)
@@ -412,12 +411,12 @@ def limit(self, limit: int):
412411
self._limit = limit
413412

414413
@property
415-
def sampler(self) -> BaseSampler | BaseSamplerV2:
414+
def sampler(self) -> BaseSamplerV2: # change: BaseSampler is replaced by BaseSamplerV2
416415
"""Returns the sampler primitive used to compute the samples."""
417416
return self._sampler
418417

419418
@sampler.setter
420-
def sampler(self, sampler: BaseSampler | BaseSamplerV2):
419+
def sampler(self, sampler: BaseSamplerV2): # change: BaseSampler is replaced by BaseSamplerV2
421420
"""Set the sampler primitive used to compute the samples."""
422421
self._sampler = sampler
423422

@@ -429,4 +428,4 @@ def threshold(self) -> float:
429428
@threshold.setter
430429
def threshold(self, threshold: float):
431430
"""Set the threshold to accept the evidence."""
432-
self._threshold = threshold
431+
self._threshold = threshold

qiskit_machine_learning/algorithms/regressors/vqr.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import numpy as np
1818
from qiskit import QuantumCircuit
19-
from qiskit.primitives import BaseEstimator
19+
from qiskit.primitives import BaseEstimatorV2 # change: BaseEstimator is migrated to BaseEstimatorV2
2020
from qiskit.quantum_info.operators.base_operator import BaseOperator
2121
from qiskit.transpiler.passmanager import BasePassManager
2222

@@ -26,7 +26,6 @@
2626
from ...utils import derive_num_qubits_feature_map_ansatz
2727
from ...utils.loss_functions import Loss
2828

29-
3029
class VQR(NeuralNetworkRegressor):
3130
"""A convenient Variational Quantum Regressor implementation."""
3231

@@ -43,7 +42,7 @@ def __init__(
4342
initial_point: np.ndarray | None = None,
4443
callback: Callable[[np.ndarray, float], None] | None = None,
4544
*,
46-
estimator: BaseEstimator | None = None,
45+
estimator: BaseEstimatorV2 | None = None, # change: BaseEstimator is migrated to BaseEstimatorV2
4746
pass_manager: BasePassManager | None = None,
4847
) -> None:
4948
r"""
@@ -145,4 +144,4 @@ def ansatz(self) -> QuantumCircuit:
145144
@property
146145
def num_qubits(self) -> int:
147146
"""Returns the number of qubits used by ansatz and feature map."""
148-
return self._num_qubits
147+
return self._num_qubits

qiskit_machine_learning/gradients/base/base_estimator_gradient.py

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
import numpy as np
2424

2525
from qiskit.circuit import Parameter, ParameterExpression, QuantumCircuit
26-
from qiskit.primitives import BaseEstimator, BaseEstimatorV1
27-
from qiskit.primitives.base import BaseEstimatorV2
26+
from qiskit.primitives import BaseEstimatorV2 # change: BaseEstimator is migrated to BaseEstimatorV2
2827
from qiskit.primitives.utils import _circuit_key
2928
from qiskit.providers import Options
3029
from qiskit.quantum_info.operators.base_operator import BaseOperator
@@ -42,13 +41,12 @@
4241
from ...utils.deprecation import issue_deprecation_msg
4342
from ...algorithm_job import AlgorithmJob
4443

45-
4644
class BaseEstimatorGradient(ABC):
4745
"""Base class for an ``EstimatorGradient`` to compute the gradients of the expectation value."""
4846

4947
def __init__(
5048
self,
51-
estimator: BaseEstimator | BaseEstimatorV2,
49+
estimator: BaseEstimatorV2, # change: BaseEstimator is migrated to BaseEstimatorV2
5250
options: Options | None = None,
5351
derivative_type: DerivativeType = DerivativeType.REAL,
5452
pass_manager: BasePassManager | None = None,
@@ -73,14 +71,7 @@ def __init__(
7371
pass_manager: The pass manager to transpile the circuits if necessary.
7472
Defaults to ``None``, as some primitives do not need transpiled circuits.
7573
"""
76-
if isinstance(estimator, BaseEstimatorV1):
77-
issue_deprecation_msg(
78-
msg="V1 Primitives are deprecated",
79-
version="0.8.0",
80-
remedy="Use V2 primitives for continued compatibility and support.",
81-
period="4 months",
82-
)
83-
self._estimator: BaseEstimator = estimator
74+
self._estimator: BaseEstimatorV2 = estimator # change: BaseEstimator is migrated to BaseEstimatorV2
8475
self._pass_manager = pass_manager
8576
self._default_options = Options()
8677
if options is not None:
@@ -373,4 +364,4 @@ def _get_local_options(self, options: Options) -> Options:
373364
"""
374365
opts = copy(self._estimator.options)
375366
opts.update_options(**options)
376-
return opts
367+
return opts

qiskit_machine_learning/gradients/base/base_sampler_gradient.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from copy import copy
2323

2424
from qiskit.circuit import Parameter, ParameterExpression, QuantumCircuit
25-
from qiskit.primitives import BaseSampler, BaseSamplerV1
25+
from qiskit.primitives import BaseSamplerV2, BaseSamplerV1 # change: BaseSampler is migrated to BaseSamplerV2
2626
from qiskit.primitives.utils import _circuit_key
2727
from qiskit.providers import Options
2828
from qiskit.transpiler.passes import TranslateParameterizedGates
@@ -38,13 +38,12 @@
3838
from ...utils.deprecation import issue_deprecation_msg
3939
from ...algorithm_job import AlgorithmJob
4040

41-
4241
class BaseSamplerGradient(ABC):
4342
"""Base class for a ``SamplerGradient`` to compute the gradients of the sampling probability."""
4443

4544
def __init__(
4645
self,
47-
sampler: BaseSampler,
46+
sampler: BaseSamplerV2, # change: BaseSampler is migrated to BaseSamplerV2
4847
options: Options | None = None,
4948
pass_manager: BasePassManager | None = None,
5049
):
@@ -65,7 +64,7 @@ def __init__(
6564
remedy="Use V2 primitives for continued compatibility and support.",
6665
period="4 months",
6766
)
68-
self._sampler: BaseSampler = sampler
67+
self._sampler: BaseSamplerV2 = sampler # change: BaseSampler is migrated to BaseSamplerV2
6968
self._pass_manager = pass_manager
7069
self._default_options = Options()
7170
if options is not None:
@@ -313,4 +312,4 @@ def _get_local_options(self, options: Options) -> Options:
313312
"""
314313
opts = copy(self._sampler.options)
315314
opts.update_options(**options)
316-
return opts
315+
return opts

qiskit_machine_learning/gradients/lin_comb/lin_comb_estimator_gradient.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from qiskit.circuit import Parameter, QuantumCircuit
2222
from qiskit.primitives.base import BaseEstimatorV2
23-
from qiskit.primitives import BaseEstimator, BaseEstimatorV1
23+
from qiskit.primitives import BaseEstimatorV1, BaseEstimatorV2 # change: BaseEstimator is migrated to BaseEstimatorV2
2424
from qiskit.transpiler.passmanager import BasePassManager
2525

2626
from qiskit.primitives.utils import init_observable, _circuit_key
@@ -33,7 +33,6 @@
3333

3434
from ...exceptions import AlgorithmError
3535

36-
3736
class LinCombEstimatorGradient(BaseEstimatorGradient):
3837
"""Compute the gradients of the expectation values.
3938
This method employs a linear combination of unitaries [1].
@@ -68,7 +67,7 @@ class LinCombEstimatorGradient(BaseEstimatorGradient):
6867

6968
def __init__(
7069
self,
71-
estimator: BaseEstimator,
70+
estimator: BaseEstimatorV2, # change: BaseEstimator is migrated to BaseEstimatorV2
7271
derivative_type: DerivativeType = DerivativeType.REAL,
7372
options: Options | None = None,
7473
pass_manager: BasePassManager | None = None,
@@ -245,4 +244,4 @@ def _run_unique(
245244
+ f"{type(self._estimator)} instead. Note that BaseEstimatorV1 is deprecated in"
246245
+ "Qiskit and removed in Qiskit IBM Runtime."
247246
)
248-
return EstimatorGradientResult(gradients=gradients, metadata=metadata, options=opt)
247+
return EstimatorGradientResult(gradients=gradients, metadata=metadata, options=opt)

qiskit_machine_learning/gradients/lin_comb/lin_comb_sampler_gradient.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121
from qiskit.circuit import Parameter, QuantumCircuit
2222
from qiskit.primitives.utils import _circuit_key
2323

24-
from qiskit.primitives import BaseSampler, BaseSamplerV1
25-
from qiskit.primitives.base import BaseSamplerV2
24+
from qiskit.primitives import BaseSamplerV1, BaseSamplerV2 # change: BaseSampler is migrated to BaseSamplerV2
2625
from qiskit.result import QuasiDistribution
2726
from qiskit.providers import Options
2827
from qiskit.transpiler.passmanager import BasePassManager
@@ -33,7 +32,6 @@
3332

3433
from ...exceptions import AlgorithmError
3534

36-
3735
class LinCombSamplerGradient(BaseSamplerGradient):
3836
"""Compute the gradients of the sampling probability.
3937
This method employs a linear combination of unitaries [1].
@@ -68,7 +66,7 @@ class LinCombSamplerGradient(BaseSamplerGradient):
6866

6967
def __init__(
7068
self,
71-
sampler: BaseSampler,
69+
sampler: BaseSamplerV2, # change: BaseSampler is migrated to BaseSamplerV2
7270
options: Options | None = None,
7371
pass_manager: BasePassManager | None = None,
7472
):
@@ -190,4 +188,4 @@ def _run_unique(
190188
gradients.append(gradient)
191189
partial_sum_n += n
192190

193-
return SamplerGradientResult(gradients=gradients, metadata=metadata, options=opt)
191+
return SamplerGradientResult(gradients=gradients, metadata=metadata, options=opt)

qiskit_machine_learning/gradients/spsa/spsa_estimator_gradient.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,14 @@
2222
from qiskit.providers import Options
2323
from qiskit.quantum_info.operators.base_operator import BaseOperator
2424
from qiskit.primitives.base import BaseEstimatorV2
25-
from qiskit.primitives import BaseEstimator, BaseEstimatorV1
25+
from qiskit.primitives import BaseEstimatorV2, BaseEstimatorV1 # change: BaseEstimator is migrated to BaseEstimatorV2
2626
from qiskit.transpiler.passmanager import BasePassManager
2727

2828
from ..base.base_estimator_gradient import BaseEstimatorGradient
2929
from ..base.estimator_gradient_result import EstimatorGradientResult
3030

3131
from ...exceptions import AlgorithmError
3232

33-
3433
class SPSAEstimatorGradient(BaseEstimatorGradient):
3534
"""
3635
Compute the gradients of the expectation value by the Simultaneous Perturbation Stochastic
@@ -45,7 +44,7 @@ class SPSAEstimatorGradient(BaseEstimatorGradient):
4544
# pylint: disable=too-many-positional-arguments
4645
def __init__(
4746
self,
48-
estimator: BaseEstimator,
47+
estimator: BaseEstimatorV2, # change: BaseEstimator is migrated to BaseEstimatorV2
4948
epsilon: float = 1e-6,
5049
batch_size: int = 1,
5150
seed: int | None = None,
@@ -187,4 +186,4 @@ def _run(
187186
+ "Qiskit and removed in Qiskit IBM Runtime."
188187
)
189188

190-
return EstimatorGradientResult(gradients=gradients, metadata=metadata, options=opt)
189+
return EstimatorGradientResult(gradients=gradients, metadata=metadata, options=opt)

qiskit_machine_learning/gradients/spsa/spsa_sampler_gradient.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121

2222
from qiskit.circuit import Parameter, QuantumCircuit
2323

24-
from qiskit.primitives import BaseSampler, BaseSamplerV1
25-
from qiskit.primitives.base import BaseSamplerV2
24+
from qiskit.primitives import BaseSamplerV1, BaseSamplerV2 # change: BaseSampler is migrated to BaseSamplerV2
2625
from qiskit.result import QuasiDistribution
2726
from qiskit.providers import Options
2827
from qiskit.transpiler.passmanager import BasePassManager
@@ -32,7 +31,6 @@
3231

3332
from ...exceptions import AlgorithmError
3433

35-
3634
class SPSASamplerGradient(BaseSamplerGradient):
3735
"""
3836
Compute the gradients of the sampling probability by the Simultaneous Perturbation Stochastic
@@ -47,7 +45,7 @@ class SPSASamplerGradient(BaseSamplerGradient):
4745
# pylint: disable=too-many-positional-arguments
4846
def __init__(
4947
self,
50-
sampler: BaseSampler,
48+
sampler: BaseSamplerV2, # change: BaseSampler is migrated to BaseSamplerV2
5149
epsilon: float = 1e-6,
5250
batch_size: int = 1,
5351
seed: int | None = None,
@@ -176,4 +174,4 @@ def _run(
176174
gradients.append(gradient)
177175
partial_sum_n += n
178176

179-
return SamplerGradientResult(gradients=gradients, metadata=metadata, options=opt)
177+
return SamplerGradientResult(gradients=gradients, metadata=metadata, options=opt)

0 commit comments

Comments
 (0)