From feb76d5f8cb8b53bab1d87e8638068bb6f315fb6 Mon Sep 17 00:00:00 2001 From: Manideep3969 Date: Thu, 20 Aug 2026 12:41:35 +0530 Subject: [PATCH] fix(#56): measurement error returns 0 when no measurements in circuit _get_measured_qubits returned set(range(circuit.num_qubits)) when no measurement instructions were found, inflating measurement error for circuits that don't measure all qubits. Now returns an empty list, so measurement error is correctly 0 when no qubits are measured. Updated existing test and added regression test for partial measurement. --- src/qc_compiler/cost_model.py | 2 +- tests/test_cost_model.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/qc_compiler/cost_model.py b/src/qc_compiler/cost_model.py index fd49dcd..3ff22e7 100644 --- a/src/qc_compiler/cost_model.py +++ b/src/qc_compiler/cost_model.py @@ -475,7 +475,7 @@ def _get_measured_qubits(self, circuit: QuantumCircuit) -> list[int]: for qubit in instr.qubits: measured.add(circuit.find_bit(qubit).index) if not measured: - measured = set(range(circuit.num_qubits)) + return [] return sorted(measured) def estimate_fidelity( diff --git a/tests/test_cost_model.py b/tests/test_cost_model.py index 1b85e70..d67e572 100644 --- a/tests/test_cost_model.py +++ b/tests/test_cost_model.py @@ -167,7 +167,24 @@ def test_measurement_error_no_measure(self): qc.h(0) qc.cx(0, 1) error = model.estimate_measurement_error(qc) + assert error == 0.0 + + def test_measurement_error_only_measured_qubits(self): + model = CostModel() + device = DeviceCharacterization( + backend_name="test", + num_qubits=3, + readout_errors={0: 0.01, 1: 0.02, 2: 0.03}, + ) + model = CostModel() + model.device = device + qc = QuantumCircuit(3, 1) + qc.h(0) + qc.cx(0, 1) + qc.measure(0, 0) + error = model.estimate_measurement_error(qc) assert error > 0 + assert error < 0.02 def test_fidelity_bell_state(self): model = CostModel()