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 91a8f4c97a..9c823e875e 100644 --- a/test/terra/backends/aer_simulator/test_circuit.py +++ b/test/terra/backends/aer_simulator/test_circuit.py @@ -15,7 +15,7 @@ from math import sqrt from ddt import ddt import numpy as np -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 @@ -173,6 +173,29 @@ def test_partial_result_a_single_invalid_circuit(self): 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) + def test_numpy_integer_shots(self): """Test implicit cast of shot option from np.int_ to int."""