From 879cbba3ebdf5338c82939f511df857dc451e18e Mon Sep 17 00:00:00 2001 From: Iftach Yakar Date: Sat, 27 Jun 2026 22:13:28 +0300 Subject: [PATCH 1/2] Added a test for stimflow basis_subset methods --- .../stimflow/_chunk/_stabilizer_code_test.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/glue/stimflow/src/stimflow/_chunk/_stabilizer_code_test.py b/glue/stimflow/src/stimflow/_chunk/_stabilizer_code_test.py index cf0828e0d..6d9e01f89 100644 --- a/glue/stimflow/src/stimflow/_chunk/_stabilizer_code_test.py +++ b/glue/stimflow/src/stimflow/_chunk/_stabilizer_code_test.py @@ -312,3 +312,37 @@ def test_with_remaining_degrees_of_freedom_as_logicals(): ), ], ) + +def test_basis_subset(): + code = stimflow.StabilizerCode( + stabilizers=[ + stimflow.Tile(bases="XX", data_qubits=[0, 1]), + stimflow.Tile(bases="ZZ", data_qubits=[2, 3]), + ], + logicals=[ + ( + stimflow.PauliMap.from_xs([0]).with_obs_name("X"), + stimflow.PauliMap.from_zs([1]).with_obs_name("Z"), + ), + ], + ) + + x_subset = code.x_basis_subset() + z_subset = code.z_basis_subset() + + assert x_subset.stabilizers == stimflow.Patch( + [ + stimflow.Tile(bases="XX", data_qubits=[0, 1]), + ] + ) + assert x_subset.logicals == ( + stimflow.PauliMap.from_xs([0]).with_obs_name("X"), + ) + assert z_subset.stabilizers == stimflow.Patch( + [ + stimflow.Tile(bases="ZZ", data_qubits=[2, 3]), + ] + ) + assert z_subset.logicals == ( + stimflow.PauliMap.from_zs([1]).with_obs_name("Z"), + ) From b3cab0a638bffaa8a24f02b345c1ff64c61731eb Mon Sep 17 00:00:00 2001 From: Iftach Yakar Date: Sat, 27 Jun 2026 22:49:06 +0300 Subject: [PATCH 2/2] Also added a unit test for flat_logicals --- .../stimflow/_chunk/_stabilizer_code_test.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/glue/stimflow/src/stimflow/_chunk/_stabilizer_code_test.py b/glue/stimflow/src/stimflow/_chunk/_stabilizer_code_test.py index 6d9e01f89..9c4c3f524 100644 --- a/glue/stimflow/src/stimflow/_chunk/_stabilizer_code_test.py +++ b/glue/stimflow/src/stimflow/_chunk/_stabilizer_code_test.py @@ -346,3 +346,36 @@ def test_basis_subset(): assert z_subset.logicals == ( stimflow.PauliMap.from_zs([1]).with_obs_name("Z"), ) + +def test_flat_logicals(): + code = stimflow.StabilizerCode( + stabilizers=[ + stimflow.Tile(bases="XX", data_qubits=[0, 1]), + stimflow.Tile(bases="ZZ", data_qubits=[2, 3]), + ], + logicals=[ + ( + stimflow.PauliMap.from_xs([0, 1]).with_obs_name("LX1"), + stimflow.PauliMap.from_zs([2, 3]).with_obs_name("LZ1"), + ), + ( + stimflow.PauliMap.from_xs([4, 5]).with_obs_name("LX2"), + stimflow.PauliMap.from_zs([6, 7]).with_obs_name("LZ2"), + ), + ], + scattered_logicals=[ + stimflow.PauliMap.from_xs([2, 3]).with_obs_name("LX3"), + stimflow.PauliMap.from_zs([4, 5]).with_obs_name("LZ3"), + ], + ) + + flat_logicals = code.flat_logicals + + assert flat_logicals == ( + stimflow.PauliMap.from_xs([0, 1]).with_obs_name("LX1"), + stimflow.PauliMap.from_zs([2, 3]).with_obs_name("LZ1"), + stimflow.PauliMap.from_xs([4, 5]).with_obs_name("LX2"), + stimflow.PauliMap.from_zs([6, 7]).with_obs_name("LZ2"), + stimflow.PauliMap.from_xs([2, 3]).with_obs_name("LX3"), + stimflow.PauliMap.from_zs([4, 5]).with_obs_name("LZ3"), + )