Skip to content
Snippets Groups Projects
Commit f9d909e9 authored by Radek Hušek's avatar Radek Hušek
Browse files

voltage_test_snarks.py

parent 8ea3a872
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/python
import os, sys
import json
import re
from parmap import parmap
def lists_to_tuples(x):
if isinstance(x, (list, tuple)):
return tuple( lists_to_tuples(e) for e in x )
if isinstance(x, dict):
return { k: lists_to_tuples(v) for k, v in x.items() }
return x
L = set()
for line in sys.stdin:
L.add(lists_to_tuples(eval(line))); continue
j = json.loads(line.rstrip())
n = int(re.match("Z_([0-9]+)", j["template_group"])[1])
a = j["assignment"]
for i in range(len(a)):
if a[i] >= n//2: a[i] -= n
s = sum(abs(x) for x in a)
L.add(lists_to_tuples((2*s, j["template_graph"], a)))
L = list(enumerate(sorted(L)))
nproc = int(os.getenv("P", "0"))
def worker(T):
# return json.dumps(T)
from graph_tools.all import EdgeColoring, voltage_graph_zn_to_sequence
from graph_tools.utils import stabilize_period
i, (s, t, a) = T
gs = voltage_graph_zn_to_sequence(t, a)
v = gs.graph(s).eval(EdgeColoring(3))
yield "%i G> %i %i" % (i, s, v)
X = gs.stabilize(EdgeColoring(3))
yield "%i S>" % (i,)
p, l = stabilize_period(X, shift=1)
yield json.dumps({
"id": i,
"template": t,
"assignment": a,
"repeats_from": p,
"has_three_coloring": l
})
for x in parmap(worker, L, nproc or None, multimap=True, in_order=False, out_chunksize=1):
print(x)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment