def process_graph_types(kgt): sp = kgt[0][0][0][0] n = len(sp[0][0].union(sp[0][1])) k = len(sp) print n,k gt = graph_types(n,k) gss = map(graph_to_ss, gt) m1 = dict(zip(gss, gt)) m2 = {} for _,g in kgt: ss = graph_to_ss(g) m2[ss] = m2.get(ss,0) + 1 return [(m1[ss], m2.get(ss,0)) for ss in gss]
def match_split_system(ss): from graph_types import graph_types, permute_ss, \ split_edges, edge_to_split, split_len, graph_to_ss n = sum(map(len, ss[0])) k = len(ss) gt = graph_types(n,k) perms = SymmetricGroup(n) ss_sig = sorted(map(split_len, ss)) for g in gt: gss = graph_to_ss(g) gss_sig = sorted(map(split_len, gss)) if gss_sig != ss_sig: continue elif any([permute_ss(p, ss) == gss for p in perms]): return g