Skip to content

Commit

Permalink
add a few more cmf search options
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewVSutherland committed May 18, 2024
1 parent 7722d48 commit a7c10a2
Showing 1 changed file with 32 additions and 18 deletions.
50 changes: 32 additions & 18 deletions lmfdb/classical_modular_forms/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -852,6 +852,8 @@ def _AL_col(i, p):
short_title="RM",
download_col="rm_discs"),
CheckCol("is_self_dual", "cmf.selfdual", "Self-dual", default=False),
CheckCol("is_twist_minimal", "cmf.twist_minimal", "Twist minimal", default=False),
LinkCol("minimal_twist", "cmf.minimal_twist", "Minimal twist", url_for_label, default=False),
MathCol("inner_twist_count", "cmf.inner_twist_count", "Inner twists", default=False),
MathCol("analytic_rank", "cmf.analytic_rank", "Rank*", default=False),
ColGroup("traces", "cmf.trace_form", "Traces",
Expand All @@ -870,7 +872,7 @@ def _AL_col(i, p):
MultiProcessedCol("qexp", "cmf.q-expansion", "$q$-expansion", ["label", "qexp_display"],
lambda label, disp: fr'<a href="{url_for_label(label)}">\({disp}\)</a>' if disp else "",
download_col="qexp_display")],
['analytic_conductor', 'analytic_rank', 'atkin_lehner_eigenvals', 'char_conductor', 'char_orbit_label', 'char_order', 'cm_discs', 'dim', 'relative_dim', 'field_disc_factorization', 'field_poly', 'field_poly_is_real_cyclotomic', 'field_poly_root_of_unity', 'fricke_eigenval', 'hecke_ring_index_factorization', 'inner_twist_count', 'is_cm', 'is_rm', 'is_self_dual', 'label', 'level', 'nf_label', 'prim_orbit_index', 'projective_image', 'qexp_display', 'rm_discs', 'sato_tate_group', 'trace_display', 'weight'],
['analytic_conductor', 'analytic_rank', 'atkin_lehner_eigenvals', 'char_conductor', 'char_orbit_label', 'char_order', 'cm_discs', 'dim', 'relative_dim', 'field_disc_factorization', 'field_poly', 'field_poly_is_real_cyclotomic', 'field_poly_root_of_unity', 'fricke_eigenval', 'hecke_ring_index_factorization', 'inner_twist_count', 'is_cm', 'is_rm', 'is_self_dual', 'is_twist_minimal', 'label', 'level', 'minimal_twist', 'nf_label', 'prim_orbit_index', 'projective_image', 'qexp_display', 'rm_discs', 'sato_tate_group', 'trace_display', 'weight'],
tr_class=["middle bottomlined", ""])

@search_wrap(table=db.mf_newforms,
Expand Down Expand Up @@ -1303,6 +1305,7 @@ class CMF_stats(StatsDisplay):
"""
def __init__(self):
self.newform_knowl = display_knowl('cmf.newform', title='newforms')
self.galois_orbit_knowl = display_knowl('cmf.galois_orbit', title='Galois orbits')
self.newspace_knowl = display_knowl('cmf.newspace', title='newspaces')
#stats_url = url_for(".statistics")

Expand All @@ -1320,11 +1323,11 @@ def ndim(self):

@lazy_attribute
def short_summary(self):
return r'The database currently contains %s (Galois orbits of) %s, corresponding to %s modular forms over the complex numbers. You can <a href="%s">browse further statistics</a> or <a href="%s">create your own</a>.' % (self.nforms, self.newform_knowl, self.ndim, url_for(".statistics"), url_for(".dynamic_statistics"))
return r'The database currently contains %s (%s of) %s, corresponding to %s modular forms over the complex numbers. You can <a href="%s">browse further statistics</a> or <a href="%s">create your own</a>.' % (self.nforms, self.galois_orbit_knowl, self.newform_knowl, self.ndim, url_for(".statistics"), url_for(".dynamic_statistics"))

@lazy_attribute
def summary(self):
return r"The database currently contains %s (Galois orbits of) %s and %s nonzero %s, corresponding to %s modular forms over the complex numbers. In addition to the statistics below, you can also <a href='%s'>create your own</a>." % (self.nforms, self.newform_knowl, self.nspaces, self.newspace_knowl, self.ndim, url_for(".dynamic_statistics"))
return r"The database currently contains %s (%s of) %s and %s nonzero %s, corresponding to %s modular forms over the complex numbers. In addition to the statistics below, you can also <a href='%s'>create your own</a>." % (self.nforms, self.galois_orbit_knowl, self.newform_knowl, self.nspaces, self.newspace_knowl, self.ndim, url_for(".dynamic_statistics"))

@lazy_attribute
def buckets(self):
Expand Down Expand Up @@ -1475,9 +1478,11 @@ def __init__(self):
name='level_type',
options=[('', ''),
('prime', 'prime'),
('prime_square', 'prime squared'),
('prime_power', 'prime power'),
('square', 'square'),
('squarefree', 'squarefree'),
('powerful', 'powerful'),
('divides','divides'),
],
min_width=110)
Expand Down Expand Up @@ -1517,6 +1522,7 @@ def __init__(self):
prime_quantifier = SubsetBox(
name="prime_quantifier",
min_width=110)

level_primes = TextBoxWithSelect(
name='level_primes',
knowl='cmf.bad_prime',
Expand Down Expand Up @@ -1545,7 +1551,8 @@ def __init__(self):

dim = TextBoxWithSelect(
name='dim',
label='Dim.',
label='Dimension',
short_label="Dim.",
knowl='cmf.dimension',
example='1',
example_span='2, 1-6',
Expand All @@ -1559,7 +1566,7 @@ def __init__(self):
knowl='cmf.coefficient_field',
label='Coefficient field',
example='1.1.1.1',
example_span='4.0.144.1, Qsqrt5')
example_span='2.0.5.1, Qsqrt5')

analytic_conductor = TextBox(
name='analytic_conductor',
Expand Down Expand Up @@ -1604,6 +1611,11 @@ def __init__(self):
example='1-',
example_span='0, 1-, 2-3')

is_twist_minimal = YesNoBox(
name='is_twist_minimal',
knowl='cmf.twist_minimal',
label='Is twist minimal')

is_self_dual = YesNoBox(
name='is_self_dual',
knowl='cmf.selfdual',
Expand Down Expand Up @@ -1635,7 +1647,7 @@ def __init__(self):
label='Projective image',
knowl='cmf.projective_image',
example='D15',
example_span='wt. 1 only')
example_span='weight 1 only')

projective_image_type = SelectBoxNoEg(
name='projective_image_type',
Expand All @@ -1646,11 +1658,12 @@ def __init__(self):
('A4', 'A4'),
('S4', 'S4'),
('A5','A5')],
example_span='wt. 1 only')
example_span='weight 1 only')

num_newforms = TextBox(
name='num_forms',
label='Num. ' + display_knowl("cmf.newform", "newforms"),
label='Newform orbits',
knowl='cmf.galois_orbit',
width=160,
example='3')
hnum_newforms = HiddenBox(
Expand All @@ -1659,7 +1672,7 @@ def __init__(self):

results = CountBox()

wt1only = BasicSpacer("Only for weight 1:")
wt1only = BasicSpacer("(only for weight 1)")

trace_coldisplay = TextBox(
name='n',
Expand Down Expand Up @@ -1695,19 +1708,20 @@ def __init__(self):
[level, weight],
[level_primes, character],
[char_order, char_primitive],
[dim, coefficient_field],
[dim, analytic_rank],
[analytic_conductor, Nk2],
[self_twist, self_twist_discs],
[inner_twist_count, is_self_dual],
[coefficient_field, is_self_dual],
[inner_twist_count, is_twist_minimal],
[self_twist_discs, self_twist],
[coefficient_ring_index, hecke_ring_generator_nbound],
[analytic_rank, projective_image],
[results, projective_image_type]]
[projective_image, projective_image_type],
[results]]

self.refine_array = [
[level, weight, analytic_conductor, Nk2, dim],
[level, weight, analytic_conductor, analytic_rank, dim],
[level_primes, character, char_primitive, char_order, coefficient_field],
[self_twist, self_twist_discs, inner_twist_count, is_self_dual, analytic_rank],
[coefficient_ring_index, hecke_ring_generator_nbound, wt1only, projective_image, projective_image_type]]
[self_twist, self_twist_discs, inner_twist_count, is_twist_minimal, is_self_dual],
[Nk2, coefficient_ring_index, hecke_ring_generator_nbound, projective_image, projective_image_type]]

self.space_array = [
[level, weight, analytic_conductor, Nk2, dim],
Expand Down Expand Up @@ -1763,7 +1777,7 @@ def search_types(self, info):
name="all_spaces",
options=[("", "split spaces"),
("yes", "all spaces")],
width=None)
width=110)
search_again = SearchButtonWithSelect(
value=st,
description="Search again",
Expand Down

0 comments on commit a7c10a2

Please sign in to comment.