From d1753490f926b786a885f88c285bdf387e12ad2c Mon Sep 17 00:00:00 2001 From: Pavol Juhas Date: Mon, 13 Oct 2025 14:47:53 -0700 Subject: [PATCH 1/2] Raise correct ValueError on seeing confusion matrices The code for checking confusion matrices had a bug (conversion of numpy array to bool, e.g., `bool(np.eye(2))`) which raised ValueError instead of the ValueError we intended to raise. Make test check exception message and fix the exposed bug too. Follow-up to #630 --- qsimcirq/qsim_circuit.py | 12 +++++------- qsimcirq_tests/qsimcirq_test.py | 4 +++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/qsimcirq/qsim_circuit.py b/qsimcirq/qsim_circuit.py index 9d33881ed..c2f1fb58b 100644 --- a/qsimcirq/qsim_circuit.py +++ b/qsimcirq/qsim_circuit.py @@ -374,13 +374,11 @@ def _check_for_confusion_matrix(self): for _, op, _ in self.findall_operations_with_gate_type(cirq.MeasurementGate) if op.gate.confusion_map ] - for confusion_map in confusion_maps_on_measurement_gates: - for map_values in confusion_map.values(): - if map_values: - raise ValueError( - "Confusion Matrices are not currently supported in Qsim. " - "See https://github.com/quantumlib/Cirq/issues/6305 for latest status" - ) + if any(confusion_maps_on_measurement_gates): + raise ValueError( + "Confusion Matrices are not currently supported in Qsim. " + "See https://github.com/quantumlib/Cirq/issues/6305 for latest status" + ) def translate_cirq_to_qsim( self, qubit_order: cirq.QubitOrderOrList = cirq.QubitOrder.DEFAULT diff --git a/qsimcirq_tests/qsimcirq_test.py b/qsimcirq_tests/qsimcirq_test.py index eb63dc4d6..dee80da3a 100644 --- a/qsimcirq_tests/qsimcirq_test.py +++ b/qsimcirq_tests/qsimcirq_test.py @@ -345,7 +345,9 @@ def test_confusion_matrix_exception(): x, y = sympy.Symbol("x"), sympy.Symbol("y") prs = [{x: np.int64(0), y: np.int64(1)}] qsim_simulator = qsimcirq.QSimSimulator() - with pytest.raises(ValueError): + with pytest.raises( + ValueError, match="Confusion Matrices are not currently supported" + ): _ = qsim_simulator.simulate_sweep(circuit, params=prs) From 4a178d39657acf9fb0903208c7f55922fd6e20ea Mon Sep 17 00:00:00 2001 From: Pavol Juhas Date: Mon, 13 Oct 2025 14:58:27 -0700 Subject: [PATCH 2/2] No need for any() here List was already built from a truth-checked values. --- qsimcirq/qsim_circuit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qsimcirq/qsim_circuit.py b/qsimcirq/qsim_circuit.py index c2f1fb58b..980698ce9 100644 --- a/qsimcirq/qsim_circuit.py +++ b/qsimcirq/qsim_circuit.py @@ -374,7 +374,7 @@ def _check_for_confusion_matrix(self): for _, op, _ in self.findall_operations_with_gate_type(cirq.MeasurementGate) if op.gate.confusion_map ] - if any(confusion_maps_on_measurement_gates): + if confusion_maps_on_measurement_gates: raise ValueError( "Confusion Matrices are not currently supported in Qsim. " "See https://github.com/quantumlib/Cirq/issues/6305 for latest status"