Refactor of flow tools - OpenGraph.compose#375
Merged
matulni merged 14 commits intoTeamGraphix:masterfrom Dec 2, 2025
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #375 +/- ##
==========================================
+ Coverage 86.30% 86.31% +0.01%
==========================================
Files 44 44
Lines 6162 6162
==========================================
+ Hits 5318 5319 +1
+ Misses 844 843 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Add measurement comparison
thierry-martinez
approved these changes
Nov 29, 2025
emlynsg
reviewed
Dec 2, 2025
| | | | ||
| [7] -- 4 -- (2) | ||
|
|
||
| Mapping: 6 -> 23, 7 -> 13, 1 -> 100, 2 -> 200, 17 -> 90 |
Contributor
There was a problem hiding this comment.
Do you want 4 -> 201 in the description?
Contributor
Author
There was a problem hiding this comment.
No, because 4 -> 201 is not specified in the input mapping to OpenGraph.compose, but done automatically under the hood. See L634
emlynsg
approved these changes
Dec 2, 2025
emlynsg
pushed a commit
that referenced
this pull request
Dec 5, 2025
This commit adapts the existing method `:func: OpenGraph.compose` to the new API introduced in #358.
emlynsg
pushed a commit
that referenced
this pull request
Dec 10, 2025
This commit adapts the existing method `:func: OpenGraph.compose` to the new API introduced in #358.
emlynsg
pushed a commit
that referenced
this pull request
Dec 10, 2025
This commit adapts the existing method `:func: OpenGraph.compose` to the new API introduced in #358.
emlynsg
added a commit
that referenced
this pull request
Jan 15, 2026
* trying to remove BackendState still causing problems * trying to remove BackendState bad fixed version * Fixing typing. * Fixed typing after removing backend state. * Introduce `BaseN` and `PrepareMethod` (#383) This commit introduces the classes `BaseN` and `PrepareMethod`, which allow the user to customize how `N` commands are handled. For instance, in the VBQC context of Veriphix, `N` commands do not necessarily prepare the node in the |+> state: for each prepared qubit, the preparation should be performed by the client, so that the server does not even see the state. * trying to remove BackendState still causing problems * Refactor of flow tools - `OpenGraph.isclose` (#374) This commit adapts the existing method `graphix.opengraph.OpenGraph.isclose` to the new API introduced in #358. Additionally, it introduces the new methods `graphix.opengraph.OpenGraph.is_equal_structurally` which compares the underlying structure of two open graphs, and `graphix.fundamentals.AbstractMeasurement.isclose` which defaults to `==` comparison. * Refactor of flow tools - `OpenGraph.compose` (#375) This commit adapts the existing method `:func: OpenGraph.compose` to the new API introduced in #358. * Fix #349: ensure flow for patterns transpiled from circuit (#362) This commit fixes domains in the transpiler so that every pattern transpiled from a circuit has a flow. Previously, some domains were incompatible with any flow, despite the patterns being deterministic, because some measurement angles were zero, causing the measurements to ignore certain signals. This commit also adds `optimization.remove_useless_domains` to remove the domains ignored by measurements with angle zero, to recover the same "optimized" patterns as before when needed. This commit also adds `rand_state_vector` to draw a random state vector. * Fixing typing. * Refactor of flow tools - Verification of flow objects (#378) This PR introduces the methods `:func: PauliFlow.check_well_formed`, `:func: GFlow.check_well_formed` and `:func: CausalFlow.check_well_formed` which verify the correctness of flow objects and raise exceptions when the flow is incorrect. Exception classes are grouped in the new module `graphix.flow.exceptions`. The error messages explain which proposition in the flow is violated. Flow-finding algorithms always (in principle) output well-formed flows, but it is possible to instantiate flow objects by passing arbitrary parameters to the constructors. In such cases, there is not any guarantee that the flow objects are well formed. The methods introduced here can be useful for debugging or researching. The exception handling adapts the pattern introduced in #364. The new methods subsume `:func: gflow.verify_flow`, `:func: gflow.verify_gflow`, `:func: gflow.verify_pauli_flow`. Additionally, this PR introduces the methods `:func: PauliFlow.get_measurement_label`, `:func: GFlow.get_measurement_label` which return the measurement label of a given node. They follow same criteria employed in the flow-finding algorithms, that is, querying this method on a node with a measurement `Measurement(0, Plane.XY)` will return `Plane.XY` in a `GFlow` or `CausalFlow` and `Axis.X` in a `PauliFlow`. **Additional information on the exception management** ```mermaid --- config: layout: elk elk: mergeEdges: false nodePlacementStrategy: LINEAR_SEGMENTS --- flowchart TD a0(**Exception**) n0(**FlowError**) n1(FlowGenericError) n2(FlowPropositionError) n3(FlowPropositionOrderError) n4(PartialOrderError) n5(PartialOrderLayerError) a0 --> n0 n0 --FGEReason--> n1 n0 --FPEReason--> n2 n0 --FPOEReason--> n3 n0 --POEReason--> n4 n0 --POLEReason--> n5 ``` - Arrows indicate inheritance (from parent to child). - "Reasons" (`FlowPropositionErrorReason`, `PartialOrderLayerErrorReason`, etc.) are `Enum` classes. - Error subclasses: - `FlowPropositionError` - Violations of the flow-definition propositions which concern the correction function only (C0, C1, G1, G3, G4, G5, P4, P5, P6, P7, P8, P9). - Additional parameters: - `node` - `correction_set` - `FlowPropositionOrderError` - Violations of the flow-definition propositions which concern the correction function and the partial order (C2, C3, G1, G2, P1, P2, P3). - Additional parameters: - `node` - `correction_set` - `past_and_present_nodes` - `FlowGenericError` - General errors in the flow correction function, XY planes in causal flow. - Does not require additional parameters. - `PartialOrderError` - General flow and XZ-corrections errors in the partial order. - Does not require additional parameters. - `PartialOrderLayerError` - Flow and XZ-corrections errors concerning a specific layer of the partial order. - Additional parameters: - `layer_index` - `layer` * Fixed typing after removing backend state. * trying to rebase * fixed rebasing and conflicts * fixed changelog and vscode * final fix of changelog * aligning changelog * Ruff fixes * added change to CHANGELOG * Fixed typing of str and Backend functions in and * Final typing fix * Remove Any import. * Pushing again to check CI. * Disabled qasm parser CI tests causing Graphix CI to fail. * Added qasm test back in. * Fixed merge from master. * Fixed merge from master. * fixing added code * fixing CI * fixing imports * fixing typing in tests * fixing typing in tests * fixed test typing * fixed test typing * fixed test typing * fixed test typing * fixing merge problems * fixing import issue --------- Co-authored-by: Emlyn Graham <egraham@PTB-02009984.paris.inria.fr> Co-authored-by: thierry-martinez <thierry.martinez@inria.fr> Co-authored-by: matulni <m.uldemolins@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This commit adapts the existing method
:func: OpenGraph.composeto the new API introduced in #358.Note that tests use the comparison utilities introduced in #374. To ease the review, this is a pull request on the TeamGraphix:rf_og_compare branch.