Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AndrewVSutherland
GitHub Repository: AndrewVSutherland/lmfdb
Path: blob/main/scripts/higher_genus_w_automorphisms/unique_groups_table.py
1128 views
1
from lmfdb import db
2
import re
3
4
hgcwa_group = re.compile(r'\[(\d+),(\d+)\]')
5
6
7
def print_list(L):
8
strg = '{'
9
for l in range(1,len(L)):
10
strg = strg + str(L[l-1]) + ','
11
strg = strg + str(L[len(L)-1])
12
strg = strg + '}'
13
return strg
14
15
16
def create_ug_file():
17
f = open('scripts/higher_genus_w_automorphisms/unique-groups.txt', 'x')
18
col_names = 'group|genus|g0_is_gt0|g0_gt0_list|gen_vectors|topological|braid\n'
19
col_types = 'integer[]|smallint|boolean|integer[]|integer|integer|integer\n'
20
f.write(col_names)
21
f.write(col_types)
22
f.write('\n')
23
data = compute_ug_data()
24
for datum in data:
25
line = '|'.join([str(val) for val in datum])
26
f.write(line + '\n')
27
f.close()
28
29
def compute_ug_data():
30
data = []
31
hgcwa = db.hgcwa_passports
32
compdb = db.hgcwa_complete
33
genus_list = hgcwa.distinct('genus')
34
for genus in genus_list:
35
# currently does not compute correct topological, braid numbers for g0 > 0 or genus > 7
36
# rows for g0 = 0 table on unique groups page
37
comp_info = compdb.lucky({'genus': genus},sort=[])
38
group_stats_0 = hgcwa.count({'genus':genus, 'g0': 0}, ['group'])
39
for group, gen_vectors in group_stats_0.items():
40
grp = group[0]
41
grp_print = grp.replace('[','{').replace(']','}')
42
labels = hgcwa.distinct('label', {'genus':genus, 'g0': 0, 'group': grp})
43
if comp_info['top_braid_compute']:
44
topological = braid = 0
45
for label in labels:
46
topological += len(hgcwa.distinct('topological', {'label': label}))
47
braid += len(hgcwa.distinct('braid', {'label': label}))
48
data.append([grp_print, genus, "f", "\\N", gen_vectors, topological, braid])
49
else:
50
data.append([grp_print, genus, "f", "\\N", gen_vectors, "\\N", "\\N"])
51
52
# rows for g0 > 0 table on unique groups page
53
if comp_info['g0_gt0_compute']:
54
group_stats_gt0 = hgcwa.count({'genus':genus, 'g0':{'$gt':0}}, ['group'])
55
for group, gen_vectors in group_stats_gt0.items():
56
grp = group[0]
57
grp_print = grp.replace('[','{').replace(']','}')
58
labels = hgcwa.distinct('label', {'genus':genus, 'g0':{'$gt':0}, 'group': grp})
59
g0_list = print_list(hgcwa.distinct('g0', {'genus':genus, 'g0':{'$gt':0}, 'group': grp}))
60
if comp_info['top_braid_g0_gt0']:
61
topological = braid = 0
62
for label in labels:
63
topological += len(hgcwa.distinct('topological', {'label': label}))
64
braid += len(hgcwa.distinct('braid', {'label': label}))
65
data.append([grp_print, genus, "t", g0_list , gen_vectors, topological, braid])
66
else:
67
data.append([grp_print, genus, "t", g0_list , gen_vectors,"\\N","\\N"])
68
return data
69
70
71