Path: blob/main/scripts/higher_genus_w_automorphisms/unique_groups_table.py
1128 views
from lmfdb import db1import re23hgcwa_group = re.compile(r'\[(\d+),(\d+)\]')456def print_list(L):7strg = '{'8for l in range(1,len(L)):9strg = strg + str(L[l-1]) + ','10strg = strg + str(L[len(L)-1])11strg = strg + '}'12return strg131415def create_ug_file():16f = open('scripts/higher_genus_w_automorphisms/unique-groups.txt', 'x')17col_names = 'group|genus|g0_is_gt0|g0_gt0_list|gen_vectors|topological|braid\n'18col_types = 'integer[]|smallint|boolean|integer[]|integer|integer|integer\n'19f.write(col_names)20f.write(col_types)21f.write('\n')22data = compute_ug_data()23for datum in data:24line = '|'.join([str(val) for val in datum])25f.write(line + '\n')26f.close()2728def compute_ug_data():29data = []30hgcwa = db.hgcwa_passports31compdb = db.hgcwa_complete32genus_list = hgcwa.distinct('genus')33for genus in genus_list:34# currently does not compute correct topological, braid numbers for g0 > 0 or genus > 735# rows for g0 = 0 table on unique groups page36comp_info = compdb.lucky({'genus': genus},sort=[])37group_stats_0 = hgcwa.count({'genus':genus, 'g0': 0}, ['group'])38for group, gen_vectors in group_stats_0.items():39grp = group[0]40grp_print = grp.replace('[','{').replace(']','}')41labels = hgcwa.distinct('label', {'genus':genus, 'g0': 0, 'group': grp})42if comp_info['top_braid_compute']:43topological = braid = 044for label in labels:45topological += len(hgcwa.distinct('topological', {'label': label}))46braid += len(hgcwa.distinct('braid', {'label': label}))47data.append([grp_print, genus, "f", "\\N", gen_vectors, topological, braid])48else:49data.append([grp_print, genus, "f", "\\N", gen_vectors, "\\N", "\\N"])5051# rows for g0 > 0 table on unique groups page52if comp_info['g0_gt0_compute']:53group_stats_gt0 = hgcwa.count({'genus':genus, 'g0':{'$gt':0}}, ['group'])54for group, gen_vectors in group_stats_gt0.items():55grp = group[0]56grp_print = grp.replace('[','{').replace(']','}')57labels = hgcwa.distinct('label', {'genus':genus, 'g0':{'$gt':0}, 'group': grp})58g0_list = print_list(hgcwa.distinct('g0', {'genus':genus, 'g0':{'$gt':0}, 'group': grp}))59if comp_info['top_braid_g0_gt0']:60topological = braid = 061for label in labels:62topological += len(hgcwa.distinct('topological', {'label': label}))63braid += len(hgcwa.distinct('braid', {'label': label}))64data.append([grp_print, genus, "t", g0_list , gen_vectors, topological, braid])65else:66data.append([grp_print, genus, "t", g0_list , gen_vectors,"\\N","\\N"])67return data68697071