Skip to content
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
7 changes: 4 additions & 3 deletions qiskit_neko/aer_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,15 @@

"""Qiskit Aer default backend plugin."""

import qiskit_aer as aer
from qiskit_ibm_runtime.fake_provider import FakeProviderForBackendV2

from qiskit_neko import backend_plugin


class AerBackendPlugin(backend_plugin.BackendPlugin):
"""A backend plugin for using qiskit-aer as the backend."""

def __init__(self):
from qiskit_ibm_runtime.fake_provider import FakeProviderForBackendV2

super().__init__()
self.mock_provider = FakeProviderForBackendV2()
self.mock_provider_backend_names = set()
Expand All @@ -46,6 +45,8 @@ def get_backend(self, backend_selection=None):
the defailt settings.
:raises ValueError: If an invalid backend selection string is passed in
"""
import qiskit_aer as aer

if backend_selection is None:
return aer.AerSimulator()
if backend_selection.startswith("method="):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,10 @@
"""Tests for quantum neural networks classifier."""
import numpy as np
from ddt import ddt, data
import unittest

from qiskit import __version__ as qiskit_version
from qiskit.primitives import StatevectorSampler as ReferenceSampler
from qiskit_aer.primitives import Sampler as AerSampler

from qiskit_machine_learning.optimizers import COBYLA
from qiskit_machine_learning.utils import algorithm_globals

from qiskit_machine_learning.algorithms.classifiers import VQC

from qiskit_neko import decorators
from qiskit_neko.tests import base
Expand All @@ -30,15 +26,31 @@
class TestNeuralNetworkClassifierOnPrimitives(base.BaseTestCase):
"""Test adapted from the qiskit_machine_learning tutorials."""

@unittest.skipIf(
tuple(map(int, qiskit_version.split(".")[:2])) >= (2, 0),
"Skipping test until Qiskit Aer and Machine Learning are ready for Qiskit 2.0. "
"Tracked in: https://github.com/Qiskit/qiskit-neko/issues/54",
)
def setUp(self):
super().setUp()
from qiskit_aer.primitives import Sampler as AerSampler

super().setUp()
self.samplers = dict(reference=ReferenceSampler(), aer=AerSampler(run_options={"seed": 42}))

@unittest.skipIf(
tuple(map(int, qiskit_version.split(".")[:2])) >= (2, 0),
"Skipping test until Qiskit Aer and Machine Learning are ready for Qiskit 2.0. "
"Tracked in: https://github.com/Qiskit/qiskit-neko/issues/54",
)
@decorators.component_attr("terra", "aer", "machine_learning")
@data("reference", "aer")
def test_neural_network_classifier(self, implementation):
"""Test the execution of quantum neural networks using VQC."""

from qiskit_machine_learning.optimizers import COBYLA
from qiskit_machine_learning.utils import algorithm_globals
from qiskit_machine_learning.algorithms.classifiers import VQC

rng = np.random.default_rng(seed=42)
algorithm_globals.random_seed = 42

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@

import numpy as np
from ddt import ddt, data, unpack
import unittest

from qiskit import __version__ as qiskit_version
from qiskit import QuantumCircuit
from qiskit.circuit import Parameter
from qiskit.quantum_info import SparsePauliOp

from qiskit.primitives import (
StatevectorSampler as ReferenceSampler,
StatevectorEstimator as ReferenceEstimator,
)
from qiskit_aer.primitives import Sampler as AerSampler, Estimator as AerEstimator
from qiskit_machine_learning.neural_networks import SamplerQNN, EstimatorQNN

from qiskit_neko import decorators
from qiskit_neko.tests import base
Expand All @@ -33,9 +33,16 @@
class TestNeuralNetworksOnPrimitives(base.BaseTestCase):
"""Test adapted from the qiskit_machine_learning tutorials."""

@unittest.skipIf(
tuple(map(int, qiskit_version.split(".")[:2])) >= (2, 0),
"Skipping test until Qiskit Aer and Machine Learning are ready for Qiskit 2.0. "
"Tracked in: https://github.com/Qiskit/qiskit-neko/issues/54",
)
def setUp(self):
super().setUp()

from qiskit_aer.primitives import Sampler as AerSampler, Estimator as AerEstimator

self.input_params = [Parameter("x")]
self.weight_params = [Parameter("w")]
self.circuit = QuantumCircuit(1)
Expand All @@ -48,11 +55,18 @@ def setUp(self):
reference=ReferenceEstimator(seed=42), aer=AerEstimator(run_options={"seed": 42})
)

@unittest.skipIf(
tuple(map(int, qiskit_version.split(".")[:2])) >= (2, 0),
"Skipping test until Qiskit Aer and Machine Learning are ready for Qiskit 2.0. "
"Tracked in: https://github.com/Qiskit/qiskit-neko/issues/54",
)
@decorators.component_attr("terra", "aer", "machine_learning")
@data(["reference", 2], ["aer", 1])
@unpack
def test_sampler_qnn(self, implementation, decimal):
"""Test the execution of quantum neural networks using SamplerQNN."""
from qiskit_machine_learning.neural_networks import SamplerQNN

sampler = self.samplers[implementation]

qnn = SamplerQNN(
Expand All @@ -70,11 +84,18 @@ def test_sampler_qnn(self, implementation, decimal):
np.testing.assert_array_almost_equal(input_grad, [[[-0.2273], [0.2273]]], decimal)
np.testing.assert_array_almost_equal(weight_grad, [[[-0.2273], [0.2273]]], decimal)

@unittest.skipIf(
tuple(map(int, qiskit_version.split(".")[:2])) >= (2, 0),
"Skipping test until Qiskit Aer and Machine Learning are ready for Qiskit 2.0. "
"Tracked in: https://github.com/Qiskit/qiskit-neko/issues/54",
)
@decorators.component_attr("terra", "aer", "machine_learning")
@data(["reference", 2], ["aer", 1])
@unpack
def test_estimator_qnn(self, implementation, decimal):
"""Test the execution of quantum neural networks using EstimatorQNN."""
from qiskit_machine_learning.neural_networks import EstimatorQNN

estimator = self.estimators[implementation]

qnn = EstimatorQNN(
Expand Down