graphix icon indicating copy to clipboard operation
graphix copied to clipboard

Improve testing of Open graph to pattern conversions

Open wlcsm opened this issue 1 year ago • 2 comments

Currently we only test converting Open graphs to (OpenGraph.to_pattern()) and from (OpenGraph.from_pattern()) patterns with a couple of handcrafted examples in tests/test_opengraph.py.

It would instead be more robust to test these methods on many randomly generated graphs and patterns (by modifying random_objects.py with random open graph generation), and check the results against a simulator.

wlcsm avatar Aug 05 '24 16:08 wlcsm

How are you planning to generate the open-graphs ?

pafloxy avatar Aug 05 '24 18:08 pafloxy

Great question. I do not know. Open graphs need four items, a graph, measurements for non-output nodes, inputs and outputs. All of these could be randomised however it is very likely the resulting open graph would not have flow.

We could simply repeat the procedure enough times, checking each time whether the open graph has flow and then stop when we find one. It is not very efficient but it is simple.

Another way would be to randomly generate circuits in PyZX, then convert those to a graph using PyZX's in-built to_graph method and then convert these to open graphs via the OpenGraph.from_pyzx_graph method. This has the advantage of always generating an OpenGraph with flow, but the problem is that we create a reliance on the PyZX module which is supposed to be optional

wlcsm avatar Aug 06 '24 16:08 wlcsm