From f719f395a8069f8d2f0229ac3e834bac576ccb6e Mon Sep 17 00:00:00 2001 From: ciaranra Date: Wed, 16 Jul 2025 04:50:57 -0600 Subject: [PATCH 1/2] Making sure conditional error modeling works --- .../src/pecos/engines/hybrid_engine_old.py | 2 +- .../pecos/error_models/fake_error_model.py | 1 + .../test_hybrid_engine_old_error_model.py | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 python/tests/pecos/integration/test_hybrid_engine_old_error_model.py diff --git a/python/quantum-pecos/src/pecos/engines/hybrid_engine_old.py b/python/quantum-pecos/src/pecos/engines/hybrid_engine_old.py index 476e449d4..1e689eb51 100644 --- a/python/quantum-pecos/src/pecos/engines/hybrid_engine_old.py +++ b/python/quantum-pecos/src/pecos/engines/hybrid_engine_old.py @@ -158,7 +158,7 @@ def run( error_circuits = error_gen.generate_tick_errors( tick_circuit, time, - # output, + output, **params, ) errors = error_circuits.get(time, {}) diff --git a/python/quantum-pecos/src/pecos/error_models/fake_error_model.py b/python/quantum-pecos/src/pecos/error_models/fake_error_model.py index 43d3ec701..03793ec5c 100644 --- a/python/quantum-pecos/src/pecos/error_models/fake_error_model.py +++ b/python/quantum-pecos/src/pecos/error_models/fake_error_model.py @@ -60,6 +60,7 @@ def generate_tick_errors( self, _tick_circuit: QuantumCircuit, _time: int | tuple[int, ...], + _output: dict, **_params: GateParams, ) -> ErrorCircuits: """Generate tick errors that ignores parameters and returns pre-configured error circuits.""" diff --git a/python/tests/pecos/integration/test_hybrid_engine_old_error_model.py b/python/tests/pecos/integration/test_hybrid_engine_old_error_model.py new file mode 100644 index 000000000..300329062 --- /dev/null +++ b/python/tests/pecos/integration/test_hybrid_engine_old_error_model.py @@ -0,0 +1,19 @@ +from pecos import QuantumCircuit +from pecos.error_models.error_depolar import DepolarizingErrorModel +from pecos import HybridEngine +from pecos.simulators import SparseSim + + +def test_simple_conditional(): + """Verify simulation and noise modeling works with conditional operations""" + qc = QuantumCircuit(cvar_spec={'m': 1, 'a': 1}, num_qubits=1) + qc.append("X", {0}, cond={'a': 'a', 'op': '==', 'b': 0}) + qc.append("measure Z", {0}, var_output = {0: ('m', 0)}) + + eng = HybridEngine() + state = SparseSim(1) + err = DepolarizingErrorModel() + + error_params = {"p1": 0.01, "p2": 0.01, "p_init": 0.01, "p_meas": 0.01, "p2_mem": 0.01} + + eng.run(state, qc, error_gen=err, shot_id=0, error_params=error_params) From f594f32725a822a9b3fb4dded7c6ba01ce9d57dc Mon Sep 17 00:00:00 2001 From: Ciaran Ryan-Anderson Date: Wed, 16 Jul 2025 05:50:07 -0600 Subject: [PATCH 2/2] Lint --- .../tests/simple_determinism_test.rs | 2 +- .../test_hybrid_engine_old_error_model.py | 23 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/crates/pecos-cli/tests/simple_determinism_test.rs b/crates/pecos-cli/tests/simple_determinism_test.rs index e315e4aa5..f7330d3c7 100644 --- a/crates/pecos-cli/tests/simple_determinism_test.rs +++ b/crates/pecos-cli/tests/simple_determinism_test.rs @@ -254,7 +254,7 @@ fn test_noise_impact_on_determinism() -> Result<(), Box> /// /// NOTE: Currently skipped as worker count determinism is an open issue in PECOS #[test] -#[ignore] +#[ignore = "worker count determinism is an open issue in PECOS"] fn test_worker_count_consistency() -> Result<(), Box> { let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); let phir_path = manifest_dir.join("../../examples/phir/simple_test.json"); diff --git a/python/tests/pecos/integration/test_hybrid_engine_old_error_model.py b/python/tests/pecos/integration/test_hybrid_engine_old_error_model.py index 300329062..48e45786b 100644 --- a/python/tests/pecos/integration/test_hybrid_engine_old_error_model.py +++ b/python/tests/pecos/integration/test_hybrid_engine_old_error_model.py @@ -1,19 +1,26 @@ -from pecos import QuantumCircuit +"""Integration tests for hybrid engine with old error model.""" + +from pecos import HybridEngine, QuantumCircuit from pecos.error_models.error_depolar import DepolarizingErrorModel -from pecos import HybridEngine from pecos.simulators import SparseSim -def test_simple_conditional(): - """Verify simulation and noise modeling works with conditional operations""" - qc = QuantumCircuit(cvar_spec={'m': 1, 'a': 1}, num_qubits=1) - qc.append("X", {0}, cond={'a': 'a', 'op': '==', 'b': 0}) - qc.append("measure Z", {0}, var_output = {0: ('m', 0)}) +def test_simple_conditional() -> None: + """Verify simulation and noise modeling works with conditional operations.""" + qc = QuantumCircuit(cvar_spec={"m": 1, "a": 1}, num_qubits=1) + qc.append("X", {0}, cond={"a": "a", "op": "==", "b": 0}) + qc.append("measure Z", {0}, var_output={0: ("m", 0)}) eng = HybridEngine() state = SparseSim(1) err = DepolarizingErrorModel() - error_params = {"p1": 0.01, "p2": 0.01, "p_init": 0.01, "p_meas": 0.01, "p2_mem": 0.01} + error_params = { + "p1": 0.01, + "p2": 0.01, + "p_init": 0.01, + "p_meas": 0.01, + "p2_mem": 0.01, + } eng.run(state, qc, error_gen=err, shot_id=0, error_params=error_params)