mirror of https://github.com/Qiskit/qiskit.git
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
parent
da1a7e3093
commit
599b663e69
|
@ -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
|
||||
|
@ -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
|
||||
),
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixed the problem in which primitives did not work when passing a circuit with ``numpy.ndarray``
|
||||
as a parameter.
|
|
@ -22,6 +22,7 @@ from qiskit import QuantumCircuit, pulse, transpile
|
|||
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
|
||||
|
@ -770,6 +771,18 @@ class TestSampler(QiskitTestCase):
|
|||
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()
|
||||
|
|
Loading…
Reference in New Issue