def dirchar_data(label): if label.count(".") == 2: modulus, orbit_label, number = label.split(".") title = f"Dirichlet character data - {modulus}.{number}" tail = [(f"{modulus}.{number}", url_for(".render_Dirichletwebpage", modulus=modulus, number=number)), ("Data", " ")] return datapage([f"{modulus}.{orbit_label}", f"{modulus}.{number}"], ["char_dir_orbits", "char_dir_values"], title=title, bread=bread(tail), label_cols=["label", "label"]) elif label.count(".") == 1: modulus, orbit_label = label.split(".") title = f"Dirichlet character data - {modulus}.{orbit_label}" tail = [(label, url_for(".render_Dirichletwebpage", modulus=modulus, orbit_label=orbit_label)), ("Data", " ")] return datapage(label, "char_dir_orbits", title=title, bread=bread(tail)) else: return abort(404, f"Invalid label {label}")
def hgm_data(label): bread = get_bread([(label, url_for_label(label)), ("Data", " ")]) if HGM_LABEL_RE.match(label): title = f"Hypergeometric motive data - {label}" fam_label = label.split("_t")[0] return datapage([label, fam_label], ["hgm_motives", "hgm_families"], bread=bread, title=title) elif HGM_FAMILY_LABEL_RE.match(label): title = f"Hypergeometric motive family data - {label}" return datapage(label, "hgm_families", bread=bread, title=title) else: return abort(404, f"Invalid label {label}")
def EC_data(label): bread = get_bread([(label, url_for_label(label)), ("Data", " ")]) if match_lmfdb_label(label): conductor, iso_class, number = split_lmfdb_label(label) if not number: # isogeny class return datapage(label, ["ec_classdata", "ec_padic"], bread=bread, label_col="lmfdb_iso", sorts=[[], ["p"]]) iso_label = class_lmfdb_label(conductor, iso_class) labels = [label] * 8 label_cols = ["lmfdb_label"] * 8 labels[1] = labels[7] = iso_label label_cols[1] = label_cols[7] = "lmfdb_iso" sorts = [[], [], [], [], ["degree", "field"], ["prime"], ["prime"], ["p"]] return datapage(labels, ["ec_curvedata", "ec_classdata", "ec_mwbsd", "ec_iwasawa", "ec_torsion_growth", "ec_localdata", "ec_galrep", "ec_padic"], title=f"Elliptic curve data - {label}", bread=bread, label_cols=label_cols, sorts=sorts) return abort(404, f"Invalid label {label}")
def G2C_data(label): if not LABEL_RE.fullmatch(label): return abort(404, f"Invalid label {label}") bread = get_bread([(label, url_for_curve_label(label)), ("Data", " ")]) sorts = [[], [], [], ["prime"], ["p"], []] label_cols = ["label", "label", "label", "lmfdb_label", "label", "label"] return datapage(label, ["g2c_curves", "g2c_endomorphisms", "g2c_ratpts", "g2c_galrep", "g2c_tamagawa", "g2c_plots"], title=f"Genus 2 curve data - {label}", bread=bread, sorts=sorts, label_cols=label_cols)
def artin_data(label): poly = db.artin_reps.lookup(label, "NFGal") if poly is None: return abort(404, f"Invalid label {label}") bread = get_bread([(label, url_for_label(label)), ("Data", " ")]) return datapage([label, poly], ["artin_reps", "artin_field_data"], bread=bread, title=f"Artin representation data - {label}", label_cols=["Baselabel", "Polynomial"])
def AV_data(label): if not lmfdb_label_regex.fullmatch(label): return abort(404, f"Invalid label {label}") bread = get_bread((label, url_for_label(label)), ("Data", " ")) extension_labels = list(db.av_fq_endalg_factors.search({"base_label": label}, "extension_label", sort=["extension_degree"])) tables = ["av_fq_isog", "av_fq_endalg_factors"] + ["av_fq_endalg_data"] * len(extension_labels) labels = [label, label] + extension_labels label_cols = ["label", "base_label"] + ["extension_label"] * len(extension_labels) sorts = [[], ["extension_degree"]] + [[]] * len(extension_labels) return datapage(labels, tables, title=f"Abelian variety isogeny class data - {label}", bread=bread, label_cols=label_cols, sorts=sorts)
def hgcwa_data(label): if label_is_one_family(label): label_col = "label" title = f"Higher genus family - {label}" elif label_is_one_passport(label): label_col = "passport_label" title = f"Higher genus passport - {label}" else: return abort(404, f"Invalid label {label}") bread = get_bread([(label, url_for_label(label)), ("Data", " ")]) return datapage(label, "hgcwa_passports", title=title, bread=bread, label_cols=[label_col])
def belyi_data(label): bread = get_bread([(label, url_for_label(label)), ("Data", " ")]) if label.count("-") == 1: # passport label length labels = [label, label] label_cols = ["plabel", "plabel"] tables = ["belyi_passports_fixed", "belyi_galmaps_fixed"] elif label.count("-") == 2: # galmap label length labels = [label, "-".join(label.split("-")[:-1]), label] label_cols = ["label", "plabel", "label"] tables = ["belyi_galmaps_fixed", "belyi_passports_fixed", "belyi_galmap_portraits"] else: return abort(404, f"Invalid label {label}") return datapage(labels, tables, title=f"Belyi map data - {label}", bread=bread, label_cols=label_cols)
def maass_data(label): if not MAASS_ID_RE.fullmatch(label): return abort(404, f"Invalid id {label}") title = f"Maass form data - {label}" bread = [("Modular forms", url_for("modular_forms")), ("Maass", url_for(".index")), (label, url_for(".by_label", label=label)), ("Data", " ")] tables = ["maass_newforms", "maass_portraits"] label_cols = ["maass_id", "maass_id"] return datapage(label, tables, bread=bread, title=title, label_cols=label_cols)
def bmf_data(label): pieces = label.split("-") if len(pieces) == 2: url = url_for(".render_bmf_space_webpage", field_label=pieces[0], level_label=pieces[1]) title = f"Bianchi modular space data - {label}" table = "bmf_dims" elif len(pieces) == 3: url = url_for_label(label) title = f"Bianchi modular form data - {label}" table = "bmf_forms" else: return abort(404, f"Invalid label {label}") bread = get_bread([(label, url), ("Data", " ")]) return datapage(label, table, title=title, bread=bread)
def gg_data(label): if not re.fullmatch(r'\d+T\d+', label): return abort(404, f"Invalid label {label}") bread = get_bread([(label, url_for_label(label)), ("Data", " ")]) title = f"Transitive group data - {label}" return datapage(label, "gps_transitive", title=title, bread=bread)
def lattice_data(label): if not lattice_label_regex.fullmatch(label): return abort(404, f"Invalid label {label}") bread = get_bread([(label, url_for_label(label)), ("Data", " ")]) title = f"Lattice data - {label}" return datapage(label, "lat_lattices", title=title, bread=bread)