From ab9bdf724a94602d006db7d94915bc8a7ffb149b Mon Sep 17 00:00:00 2001 From: "Guan-Ming (Wesley) Chiu" <105915352+guan404ming@users.noreply.github.com> Date: Wed, 29 Oct 2025 13:41:15 +0800 Subject: [PATCH] Fix execute_circuit to handle 0 num_qubits --- qumat/qumat.py | 9 +++++++++ testing/test_create_circuit.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/qumat/qumat.py b/qumat/qumat.py index d5f1afc482..353dbb5189 100644 --- a/qumat/qumat.py +++ b/qumat/qumat.py @@ -28,10 +28,12 @@ def __init__(self, backend_config): self.circuit = None self.num_qubits = None self.parameters = {} + self.num_qubits = None def create_empty_circuit(self, num_qubits: int | None = None): self.num_qubits = num_qubits self.circuit = self.backend_module.create_empty_circuit(num_qubits) + self.num_qubits = num_qubits def apply_not_gate(self, qubit_index): self.backend_module.apply_not_gate(self.circuit, qubit_index) @@ -71,6 +73,13 @@ def apply_pauli_z_gate(self, qubit_index): self.backend_module.apply_pauli_z_gate(self.circuit, qubit_index) def execute_circuit(self, parameter_values=None): + if self.num_qubits == 0: + shots = self.backend_config["backend_options"].get("shots", 1) + if self.backend_name == "cirq": + return [{0: shots}] + else: + return {"": shots} + if parameter_values: self.bind_parameters(parameter_values) self.backend_config["parameter_values"] = self.parameters # Pass parameters diff --git a/testing/test_create_circuit.py b/testing/test_create_circuit.py index 48f0f3099d..e6cea46e66 100644 --- a/testing/test_create_circuit.py +++ b/testing/test_create_circuit.py @@ -60,7 +60,7 @@ def test_create_empty_circuit(self, backend_name): assert qumat.circuit is not None - @pytest.mark.parametrize("num_qubits", [1, 3, 5]) + @pytest.mark.parametrize("num_qubits", [0, 1, 3, 5]) def test_create_circuit_initializes_to_zero(self, backend_name, num_qubits): """Test that create_empty_circuit properly initializes all qubits to |0⟩.""" backend_config = self.get_backend_config(backend_name)