Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AndrewVSutherland
GitHub Repository: AndrewVSutherland/lmfdb
Path: blob/main/scripts/higher_genus_w_automorphisms/hgcwa_complete_table.py
1128 views
1
from lmfdb import db
2
import math
3
4
def create_file():
5
f = open('scripts/higher_genus_w_automorphisms/hgcwa_complete.txt', 'x')
6
col_names = 'genus|g0_gt0_compute|top_braid_compute|top_braid_g0_gt0|num_families|num_refined_pp|num_gen_vectors|num_unique_groups\n'
7
col_types = 'smallint|boolean|boolean|boolean|integer[]|integer[]|integer[]|integer\n'
8
f.write(col_names)
9
f.write(col_types)
10
f.write('\n')
11
data = compute_values()
12
for datum in data:
13
line = '|'.join([wrangle(val) for val in datum])
14
f.write(line + '\n')
15
f.close()
16
17
def wrangle(val):
18
if isinstance(val, list):
19
return '{' + ', '.join([str(x) for x in val]) + '}'
20
return str(val)
21
22
def compute_values():
23
24
data = []
25
hgcwa = db.hgcwa_passports
26
27
for genus in range(2, hgcwa.max('genus')+1):
28
29
# hgcwa_complete has exactly one row for each genus
30
table_entry = db.hgcwa_complete.lookup(genus)
31
32
row = [genus]
33
34
if table_entry is not None:
35
# retrieve some of the previous values
36
row.extend([table_entry['g0_gt0_compute'], table_entry['top_braid_compute'], table_entry['top_braid_g0_gt0']])
37
else: # a new genus is being added
38
# can be manually updated
39
row.extend([False, False, False])
40
41
# Compute data for the columns num_families, num_refined_pp, num_gen_vectors, num_unique_groups
42
# first entry is total number of distinct families, passports, or gen_vectors for genus
43
num_families = [len(hgcwa.distinct('label', {'genus':genus}))]
44
num_refined_pp = [len(hgcwa.distinct('passport_label', {'genus':genus}))]
45
num_gen_vectors = [hgcwa.count({'genus':genus})]
46
47
num_unique_groups = len(hgcwa.distinct('group', {'genus':genus}))
48
49
# second entry is number of distinct families, passports, or gen_vectors for quotient genus 0
50
num_families.append(len(hgcwa.distinct('label', {'genus': genus, 'g0': 0})))
51
num_refined_pp.append(len(hgcwa.distinct('passport_label', {'genus': genus, 'g0': 0})))
52
num_gen_vectors.append(hgcwa.count({'genus': genus, 'g0': 0}))
53
54
if table_entry is not None and table_entry['g0_gt0_compute']:
55
for g0 in range(1, hgcwa.max('g0')+1):
56
if g0 <= int(math.ceil(genus / 2)):
57
# append counts for increasing quotient genus
58
num_families.append(len(hgcwa.distinct('label', {'genus': genus, 'g0': g0})))
59
num_refined_pp.append(len(hgcwa.distinct('passport_label', {'genus': genus, 'g0': g0})))
60
num_gen_vectors.append(hgcwa.count({'genus': genus, 'g0': g0}))
61
62
row.extend([num_families, num_refined_pp, num_gen_vectors, num_unique_groups])
63
data.append(row)
64
65
return data
66
67