Path: blob/main/scripts/higher_genus_w_automorphisms/hgcwa_complete_table.py
1128 views
from lmfdb import db1import math23def create_file():4f = open('scripts/higher_genus_w_automorphisms/hgcwa_complete.txt', 'x')5col_names = 'genus|g0_gt0_compute|top_braid_compute|top_braid_g0_gt0|num_families|num_refined_pp|num_gen_vectors|num_unique_groups\n'6col_types = 'smallint|boolean|boolean|boolean|integer[]|integer[]|integer[]|integer\n'7f.write(col_names)8f.write(col_types)9f.write('\n')10data = compute_values()11for datum in data:12line = '|'.join([wrangle(val) for val in datum])13f.write(line + '\n')14f.close()1516def wrangle(val):17if isinstance(val, list):18return '{' + ', '.join([str(x) for x in val]) + '}'19return str(val)2021def compute_values():2223data = []24hgcwa = db.hgcwa_passports2526for genus in range(2, hgcwa.max('genus')+1):2728# hgcwa_complete has exactly one row for each genus29table_entry = db.hgcwa_complete.lookup(genus)3031row = [genus]3233if table_entry is not None:34# retrieve some of the previous values35row.extend([table_entry['g0_gt0_compute'], table_entry['top_braid_compute'], table_entry['top_braid_g0_gt0']])36else: # a new genus is being added37# can be manually updated38row.extend([False, False, False])3940# Compute data for the columns num_families, num_refined_pp, num_gen_vectors, num_unique_groups41# first entry is total number of distinct families, passports, or gen_vectors for genus42num_families = [len(hgcwa.distinct('label', {'genus':genus}))]43num_refined_pp = [len(hgcwa.distinct('passport_label', {'genus':genus}))]44num_gen_vectors = [hgcwa.count({'genus':genus})]4546num_unique_groups = len(hgcwa.distinct('group', {'genus':genus}))4748# second entry is number of distinct families, passports, or gen_vectors for quotient genus 049num_families.append(len(hgcwa.distinct('label', {'genus': genus, 'g0': 0})))50num_refined_pp.append(len(hgcwa.distinct('passport_label', {'genus': genus, 'g0': 0})))51num_gen_vectors.append(hgcwa.count({'genus': genus, 'g0': 0}))5253if table_entry is not None and table_entry['g0_gt0_compute']:54for g0 in range(1, hgcwa.max('g0')+1):55if g0 <= int(math.ceil(genus / 2)):56# append counts for increasing quotient genus57num_families.append(len(hgcwa.distinct('label', {'genus': genus, 'g0': g0})))58num_refined_pp.append(len(hgcwa.distinct('passport_label', {'genus': genus, 'g0': g0})))59num_gen_vectors.append(hgcwa.count({'genus': genus, 'g0': g0}))6061row.extend([num_families, num_refined_pp, num_gen_vectors, num_unique_groups])62data.append(row)6364return data656667