Lowering a Labelled Graph StateΒΆ

This example starts from a labelled graph state and an explicit feedforward map, then lowers them to an executable MBQC pattern.

import sys
from pathlib import Path

from graphqomb.pattern import print_pattern
from graphqomb.ptn_format import dump
from graphqomb.qompiler import qompile
from graphqomb.random_objects import generate_random_flow_graph

Generate a labelled graph state and its X-correction map.

graphstate, xflow = generate_random_flow_graph(width=3, depth=5)

print("graph nodes:", len(graphstate.physical_nodes))
print("graph edges:", len(graphstate.physical_edges))

# Lower the graph/feedforward IRs to an executable pattern.
pattern = qompile(graphstate, xflow)
print("pattern depth:", pattern.depth)
print("pattern max space:", pattern.max_space)
print_pattern(pattern)

# Dump the pattern in GraphQOMB's text format.
script_path = Path(globals().get("__file__", sys.argv[0])).resolve()
example_dir = script_path.parent
output_dir = example_dir / "generated"
output_dir.mkdir(exist_ok=True)
ptn_path = output_dir / "pattern_generation.ptn"
dump(pattern, ptn_path)
print("wrote pattern:", ptn_path)
graph nodes: 15
graph edges: 16
pattern depth: 5
pattern max space: 15
N: node=3
N: node=4
N: node=5
N: node=6
N: node=7
N: node=8
N: node=9
N: node=10
N: node=11
N: node=12
N: node=13
N: node=14
E: nodes=(10, 11)
E: nodes=(3, 4)
E: nodes=(5, 8)
E: nodes=(7, 10)
E: nodes=(0, 3)
E: nodes=(9, 12)
E: nodes=(1, 4)
E: nodes=(10, 13)
E: nodes=(6, 7)
E: nodes=(2, 5)
E: nodes=(7, 8)
E: nodes=(3, 6)
E: nodes=(11, 14)
E: nodes=(6, 9)
E: nodes=(4, 7)
E: nodes=(8, 11)
TICK
M: node=0, plane=Plane.XY, angle=0.0
M: node=1, plane=Plane.XY, angle=0.0
M: node=2, plane=Plane.XY, angle=0.0
TICK
M: node=3, plane=Plane.XY, angle=0.0
M: node=4, plane=Plane.XY, angle=0.0
M: node=5, plane=Plane.XY, angle=0.0
TICK
M: node=8, plane=Plane.XY, angle=0.0
M: node=6, plane=Plane.XY, angle=0.0
M: node=7, plane=Plane.XY, angle=0.0
11 more commands truncated. Change lim argument of print_pattern() to show more
wrote pattern: /home/docs/checkouts/readthedocs.org/user_builds/graphqomb/checkouts/stable/examples/generated/pattern_generation.ptn

Total running time of the script: (0 minutes 0.013 seconds)

Gallery generated by Sphinx-Gallery