From 565d3be4c13cc3512c938cad50fcb8ff6a7bcf52 Mon Sep 17 00:00:00 2001 From: Hiroshi Horii Date: Sun, 23 Apr 2023 20:15:19 +0900 Subject: [PATCH 1/2] fix fail of qobj run without run_options --- qiskit_aer/backends/aerbackend.py | 4 +-- .../notes/fix_qobj_run-8ea657a93ce9acd2.yaml | 6 +++++ .../backends/aer_simulator/test_circuit.py | 25 ++++++++++++++++++- 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 releasenotes/notes/fix_qobj_run-8ea657a93ce9acd2.yaml diff --git a/qiskit_aer/backends/aerbackend.py b/qiskit_aer/backends/aerbackend.py index 06481ae144..2b10c688e2 100644 --- a/qiskit_aer/backends/aerbackend.py +++ b/qiskit_aer/backends/aerbackend.py @@ -186,8 +186,8 @@ def run(self, circuits, validate=False, parameter_binds=None, **run_options): for key, value in circuits.config.__dict__.items(): if key not in run_options and value is not None: run_options[key] = value - if "parameter_binds" in run_options: - parameter_binds = run_options.pop("parameter_binds") + if "parameter_binds" in run_options: + parameter_binds = run_options.pop("parameter_binds") return self._run_qobj(circuits, validate, parameter_binds, **run_options) only_circuits = True diff --git a/releasenotes/notes/fix_qobj_run-8ea657a93ce9acd2.yaml b/releasenotes/notes/fix_qobj_run-8ea657a93ce9acd2.yaml new file mode 100644 index 0000000000..615dfd366e --- /dev/null +++ b/releasenotes/notes/fix_qobj_run-8ea657a93ce9acd2.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Aer still supports Qobj as an argument of :meth:`~.AerSimulator.run` though + it was deprecated. However, since 0.12.0, it always fails if no ``run_options`` + is specified. This fix enables simulation of Qobj without ``run_options``. diff --git a/test/terra/backends/aer_simulator/test_circuit.py b/test/terra/backends/aer_simulator/test_circuit.py index f387e27a16..0aa74c6d21 100644 --- a/test/terra/backends/aer_simulator/test_circuit.py +++ b/test/terra/backends/aer_simulator/test_circuit.py @@ -14,7 +14,7 @@ """ from math import sqrt from ddt import ddt -from qiskit import ClassicalRegister, QuantumCircuit, QuantumRegister +from qiskit import ClassicalRegister, QuantumCircuit, QuantumRegister, assemble from qiskit.circuit import CircuitInstruction from test.terra.reference import ref_algorithms @@ -171,3 +171,26 @@ def test_partial_result_a_single_invalid_circuit(self): self.assertEqual(result.status, "PARTIAL COMPLETED") self.assertTrue(hasattr(result.results[1].data, "counts")) self.assertFalse(hasattr(result.results[0].data, "counts")) + + def test_run_qobj(self): + """Test qobj run""" + + qubits = QuantumRegister(3) + clbits = ClassicalRegister(3) + + circuit = QuantumCircuit(qubits, clbits) + circuit.h(qubits[0]) + circuit.cx(qubits[0], qubits[1]) + circuit.cx(qubits[0], qubits[2]) + + for q, c in zip(qubits, clbits): + circuit.measure(q, c) + + backend = self.backend() + + shots = 1000 + with self.assertWarns(DeprecationWarning): + result = backend.run(assemble(circuit), shots=shots).result() + + self.assertSuccess(result) + self.compare_counts(result, [circuit], [{"0x0": 500, "0x7": 500}], delta=0.05 * shots) From 849b8b024b956bc7b9573c14da8cfbb4dde87015 Mon Sep 17 00:00:00 2001 From: Hiroshi Horii Date: Tue, 30 May 2023 17:14:19 +0900 Subject: [PATCH 2/2] fix lint error --- test/terra/backends/aer_simulator/test_circuit.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/terra/backends/aer_simulator/test_circuit.py b/test/terra/backends/aer_simulator/test_circuit.py index 884e8198fb..9c823e875e 100644 --- a/test/terra/backends/aer_simulator/test_circuit.py +++ b/test/terra/backends/aer_simulator/test_circuit.py @@ -237,4 +237,3 @@ def test_floating_shots(self): shots = int(shots) self.assertSuccess(result) self.assertEqual(sum([result.get_counts()[key] for key in result.get_counts()]), shots) -