Skip to content

Commit

Permalink
fix #9102 (#9103)
Browse files Browse the repository at this point in the history
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
  • Loading branch information
ikkoham and mergify[bot] authored Nov 17, 2022
1 parent da1a7e3 commit 599b663
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
8 changes: 6 additions & 2 deletions qiskit/primitives/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@
"""
Utility functions for primitives
"""

from __future__ import annotations

import numpy as np

from qiskit.circuit import Instruction, ParameterExpression, QuantumCircuit
from qiskit.circuit.bit import Bit
from qiskit.extensions.quantum_initializer.initializer import Initialize
Expand Down Expand Up @@ -146,7 +147,10 @@ def _circuit_key(circuit: QuantumCircuit, functional: bool = True) -> tuple:
_bits_key(data.qubits, circuit), # qubits
_bits_key(data.clbits, circuit), # clbits
data.operation.name, # operation.name
tuple(data.operation.params), # operation.params
tuple(
param.data.tobytes() if isinstance(param, np.ndarray) else param
for param in data.operation.params
), # operation.params
)
for data in circuit.data
),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
fixes:
- |
Fixed the problem in which primitives did not work when passing a circuit with ``numpy.ndarray``
as a parameter.
13 changes: 13 additions & 0 deletions test/python/primitives/test_sampler.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
from qiskit.circuit import Parameter
from qiskit.circuit.library import RealAmplitudes
from qiskit.exceptions import QiskitError
from qiskit.extensions.unitary import UnitaryGate
from qiskit.primitives import Sampler, SamplerResult
from qiskit.primitives.utils import _circuit_key
from qiskit.providers import JobStatus, JobV1
Expand Down Expand Up @@ -770,6 +771,18 @@ def test_with_scheduling(n):
keys = [_circuit_key(test_with_scheduling(i)) for i in range(1, 5)]
self.assertEqual(len(keys), len(set(keys)))

def test_circuit_with_unitary(self):
"""Test for circuit with unitary gate."""
gate = UnitaryGate(np.eye(2))

circuit = QuantumCircuit(1)
circuit.append(gate, [0])
circuit.measure_all()

sampler = Sampler()
sampler_result = sampler.run([circuit]).result()
self.assertDictAlmostEqual(sampler_result.quasi_dists[0], {0: 1, 1: 0})


if __name__ == "__main__":
unittest.main()

0 comments on commit 599b663

Please sign in to comment.