Skip to content

Commit 599b663

Browse files
fix #9102 (#9103)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
1 parent da1a7e3 commit 599b663

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

qiskit/primitives/utils.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
"""
1313
Utility functions for primitives
1414
"""
15-
1615
from __future__ import annotations
1716

17+
import numpy as np
18+
1819
from qiskit.circuit import Instruction, ParameterExpression, QuantumCircuit
1920
from qiskit.circuit.bit import Bit
2021
from qiskit.extensions.quantum_initializer.initializer import Initialize
@@ -146,7 +147,10 @@ def _circuit_key(circuit: QuantumCircuit, functional: bool = True) -> tuple:
146147
_bits_key(data.qubits, circuit), # qubits
147148
_bits_key(data.clbits, circuit), # clbits
148149
data.operation.name, # operation.name
149-
tuple(data.operation.params), # operation.params
150+
tuple(
151+
param.data.tobytes() if isinstance(param, np.ndarray) else param
152+
for param in data.operation.params
153+
), # operation.params
150154
)
151155
for data in circuit.data
152156
),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
fixes:
3+
- |
4+
Fixed the problem in which primitives did not work when passing a circuit with ``numpy.ndarray``
5+
as a parameter.

test/python/primitives/test_sampler.py

+13
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from qiskit.circuit import Parameter
2323
from qiskit.circuit.library import RealAmplitudes
2424
from qiskit.exceptions import QiskitError
25+
from qiskit.extensions.unitary import UnitaryGate
2526
from qiskit.primitives import Sampler, SamplerResult
2627
from qiskit.primitives.utils import _circuit_key
2728
from qiskit.providers import JobStatus, JobV1
@@ -770,6 +771,18 @@ def test_with_scheduling(n):
770771
keys = [_circuit_key(test_with_scheduling(i)) for i in range(1, 5)]
771772
self.assertEqual(len(keys), len(set(keys)))
772773

774+
def test_circuit_with_unitary(self):
775+
"""Test for circuit with unitary gate."""
776+
gate = UnitaryGate(np.eye(2))
777+
778+
circuit = QuantumCircuit(1)
779+
circuit.append(gate, [0])
780+
circuit.measure_all()
781+
782+
sampler = Sampler()
783+
sampler_result = sampler.run([circuit]).result()
784+
self.assertDictAlmostEqual(sampler_result.quasi_dists[0], {0: 1, 1: 0})
785+
773786

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

0 commit comments

Comments
 (0)