Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
09ffdd6
Initial blank version of family pages
roed314 Mar 14, 2024
d009e54
Added X1N template page
Mar 14, 2024
b068b1a
minor changes
junbolau Mar 14, 2024
03ff56f
minor changes
junbolau Mar 14, 2024
1cc73ea
Added moduli description
Mar 14, 2024
e17b3fd
added genus formula
junbolau Mar 14, 2024
6f694b3
Added moduli description at the top
Mar 14, 2024
f272bb1
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
Mar 14, 2024
47e80b2
adding genus formula
Mar 14, 2024
e69519b
minor
junbolau Mar 14, 2024
7f8af9b
edited x1n
Mar 14, 2024
bbc1996
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
junbolau Mar 14, 2024
e9da789
Added XN page
Mar 14, 2024
8de9f7c
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
Mar 14, 2024
8a81a49
Fixed duplicate defn
Mar 14, 2024
96e6ad0
added genus formula for XN
junbolau Mar 14, 2024
807c5a8
added genus formula for X1N
junbolau Mar 14, 2024
bffa8b6
added genus formula for X1
junbolau Mar 14, 2024
a8b9def
minor genus edit
Mar 14, 2024
65fc04c
minor genus edit
Mar 14, 2024
bac0dc4
more formulas
junbolau Mar 14, 2024
8f23697
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
junbolau Mar 14, 2024
10cb984
editing genus formula
Mar 15, 2024
2c0a655
formatting changes
Mar 15, 2024
98c6a81
fix minor typo
junbolau Mar 15, 2024
1bc6008
style edits
Mar 15, 2024
3d1f2b4
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
Mar 15, 2024
babe469
added hyperelliptic link test
junbolau Mar 15, 2024
1a08e9d
Added family pages
Mar 15, 2024
6353d47
added bielliptic table
junbolau Mar 15, 2024
433286d
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
junbolau Mar 15, 2024
c561e0f
Changed some typos
Mar 15, 2024
a81f294
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
Mar 15, 2024
a17dcaa
added description + tables for hyperelliptic/bielliptic
junbolau Mar 15, 2024
0279b78
genus formulas for X0,X1,X
junbolau Mar 15, 2024
9f43c1b
Trying to add tables
Mar 15, 2024
92cfb19
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
Mar 15, 2024
a715564
removed junk
Mar 15, 2024
cc5a976
fixed elliptic point knowl
junbolau Mar 15, 2024
fcfca86
removed parenthesis inside genus formula
junbolau Mar 15, 2024
f8c68be
Edited invariants
Mar 15, 2024
951a5d0
minor typo
junbolau Mar 15, 2024
3a69098
Fixed a few genus formulas and formatting
Mar 16, 2024
e43a4cb
Fixed the table so the appropriate curves appear for each family
Mar 17, 2024
237da0d
Support for embedding search results in another page
roed314 Mar 18, 2024
0e4003c
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
roed314 Mar 18, 2024
b7d1844
Tried to add knowls
Mar 18, 2024
be3a86d
Added hyperelliptic and bielliptic information for X1N
Mar 23, 2024
f7bf12b
Added information for XN
Mar 23, 2024
9850f70
Changed Xsym to Xarith
Mar 23, 2024
b254119
added hyperellipitc, bielliptic links for X1, Xarith
junbolau Mar 25, 2024
a64bfab
Fixed a typo
Mar 25, 2024
ade138f
Finally fixed the knowls
Mar 25, 2024
3c7f74f
Edited genus formulas
Mar 28, 2024
b1a064c
Added genus formulas for Xns and Xnsplus
Mar 28, 2024
a336f7e
Added a hyperelliptic curve for Xsp
Mar 28, 2024
d728507
Added the hyperelliptic curve knowl
Mar 28, 2024
06b2786
added Xnsplus genus formula
junbolau Apr 3, 2024
6d640e4
Updated the Xsp page with genus formula
Jun 19, 2024
98ca7ee
Edited biell info for Xsp
Jun 19, 2024
3af28a3
Added Xarith genus formula
Jul 3, 2024
c169fc6
Edited the genus formulas
Jul 12, 2024
53fd18a
Small edit to Xns+
Jul 12, 2024
6b0ae1f
Added genus formula for X_S4
Jul 16, 2024
3d5a7ba
Fixed a formatting issue
Jul 16, 2024
6b23989
Added formulas
Oct 1, 2024
b46775f
Add line break in nu2
roed314 Oct 2, 2024
8629889
Added new line
Oct 2, 2024
73f77d4
updated hyp bi ell
Oct 24, 2024
5671aae
Merge branch 'family_pages' of github.com:junbolau/lmfdb into family_…
roed314 Oct 24, 2024
6402b7a
Moved invariants around, added notation, and started references section
Oct 26, 2024
3a24c71
Edited the modular curves pages to link each family to the appropriat…
Oct 26, 2024
7852b8e
Removed references section
Oct 26, 2024
51c390b
Fixed omega(N) defn
Nov 7, 2024
ea0e710
Added all the families to the browse page
Nov 7, 2024
c333516
Merge branch 'family_pages' into family_pages
junbolau Nov 10, 2024
4de0dbc
Merge pull request #1 from roed314/family_pages
junbolau Nov 10, 2024
59adbd4
Merge branch 'main' of github.com:LMFDB/lmfdb into family_pages
Nov 10, 2024
2bf5d69
Changed Xsym to Xarith in moduili description
Nov 12, 2024
243a8ca
Edited X1(N) formula
Nov 20, 2024
0423f7b
Merge branch 'LMFDB:main' into family_pages
junbolau Nov 20, 2024
d61bd78
Merge branch 'LMFDB:main' into family_pages
junbolau Dec 9, 2024
a094d81
Merge remote-tracking branch 'jun/family_pages' into family_pages
roed314 Dec 9, 2024
dccde8f
Switch to Xarith1
roed314 Dec 9, 2024
e5b5a96
Merge pull request #2 from roed314/family_pages
asiminah Dec 9, 2024
ec1396a
Added family pages for Xpm1, Xarith1, Xarithpm1
Dec 9, 2024
e128f14
Edited Xpm1
Dec 10, 2024
c3d4fa8
Edited moduli description for Xpm1
Dec 10, 2024
0cd30c2
edited Xpm1
Dec 10, 2024
3b8728c
Edited Xpm1 description
Dec 10, 2024
238dd48
Edited again
Dec 10, 2024
cf2b211
Fixed typeset
Dec 10, 2024
512b1ac
Edited knowls for Xpm1
Dec 10, 2024
ae79192
Tried to make new line
Dec 10, 2024
8039056
Edited line
Dec 10, 2024
0395c5b
Added genus formula line
Dec 10, 2024
558284d
Added moduli description for Xarith1
Dec 10, 2024
3006d3f
Fixed an error
Dec 10, 2024
cb18b29
Added moduli description for Xarithpm1
Dec 10, 2024
766c585
Fixed an error
Dec 10, 2024
bd2308f
Testing1
Dec 10, 2024
b846f80
Testing2
Dec 10, 2024
0c52607
Edit to Testing2
Dec 10, 2024
351005e
Testing3
Dec 10, 2024
6ed446e
Testing4
Dec 10, 2024
db8a846
Edited \
Dec 10, 2024
49c9c1b
Testing5
Dec 10, 2024
9a02686
Testing6
Dec 10, 2024
bee20ce
Minor edit
Dec 10, 2024
dafcfaa
Edited moduli description for Xarithpm1
Dec 10, 2024
85aa00f
Added parts of genus formula for Xsp+
Dec 17, 2024
83c2164
Added Xsp+ genus formula
Dec 18, 2024
f16f157
Edited Xarith1 matrix
Dec 20, 2024
f8011f2
Edited Xarithpm1 matrix
Dec 20, 2024
9d78ba3
Edited biell and hyperell for Xarith1's
Dec 29, 2024
263182c
Edited link for Xsp hyperell source
Dec 29, 2024
0a55e38
Fixed typo
Dec 29, 2024
1cf4065
Fixed formatting issues
Dec 29, 2024
ba7b33c
Added Xarith1 and Xarithpm1 formulas
Jan 14, 2025
d9ceffe
Finished editing formulas
Jan 14, 2025
a02968d
Fixed formatting issue
Jan 14, 2025
1f30fea
Edited formulas and formatting
Jan 18, 2025
aa73b4b
Fixed lint issue
Jan 18, 2025
6000561
Addressed small comments from Drew
Feb 23, 2025
bcd7f9f
Merge branch 'LMFDB:main' into family_pages
junbolau Feb 24, 2025
1d36a7f
Added biell knowl
Feb 24, 2025
7c31a5b
Fixed biell knowl
Feb 24, 2025
861449c
Edited Xarith1 moduli description
Feb 24, 2025
e928389
Update main.py
AndrewVSutherland Feb 28, 2025
8d61e1a
Update web_curve.py
AndrewVSutherland Mar 1, 2025
57d861e
Fixed the two small issues.
Mar 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
506 changes: 506 additions & 0 deletions lmfdb/modular_curves/family.py

Large diffs are not rendered by default.

70 changes: 54 additions & 16 deletions lmfdb/modular_curves/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

from lmfdb.utils import (
SearchArray,
EmbeddedSearchArray,
TextBox,
TextBoxWithSelect,
SelectBox,
Expand All @@ -20,6 +21,7 @@
display_knowl,
flash_error,
search_wrap,
embed_wrap,
to_dict,
parse_ints,
parse_noop,
Expand Down Expand Up @@ -54,6 +56,7 @@
formatted_dims, url_for_EC_label, url_for_ECNF_label, showj_nf, combined_data,
learnmore_list, LABEL_RE, ISO_CLASS_RE
)
from lmfdb.modular_curves.family import ModCurveFamily
from lmfdb.modular_curves.upload import ModularCurveUploader
from lmfdb.modular_curves.isog_class import ModCurveIsog_class

Expand Down Expand Up @@ -350,7 +353,7 @@ def blankzeros(n):

@search_parser
def parse_family(inp, query, qfield):
if inp not in ["X0", "X1", "Xpm1", "X", "Xsp", "Xspplus", "Xns", "Xnsplus", "XS4", "X2", "Xpm2", "Xarith", "any"]:
if inp not in ["X0", "X1", "Xpm1", "X", "Xsp", "Xspplus", "Xns", "Xnsplus", "XS4", "Xarith1", "Xarithpm1", "Xsym", "Xarith", "any"]:
raise ValueError
inp = inp.replace("plus", "+")
if inp == "any":
Expand All @@ -361,16 +364,18 @@ def parse_family(inp, query, qfield):
query[qfield] = {"$or":[{"$like": inp + "(%"}, {"$in":["X(1)"]}]}
elif inp == "Xsp": #add X(1),X(2)
query[qfield] = {"$or":[{"$like": inp + "(%"}, {"$in":["X(1)","X(2)"]}]}
elif inp == "X2": # X_1(2,2n); add X(2)
query[qfield] = {"$or":[{"$like": "X1(2,%"}, {"$in":["X(2)"]}]}
elif inp == "Xpm2": # X_{\pm1}(2,2n); add X(2)
query[qfield] = {"$or":[{"$like": "Xpm1(2,%"}, {"$in":["X(2)"]}]}
elif inp == "Xarith1": # X_{arith,1}(m,mn); add X(2)
query[qfield] = {"$or":[{"$like": inp + "(%,%"}, {"$like": "X1(2,%"}, {"$in":["X(2)"]}]}
elif inp == "Xarithpm1": # X_{\pm1}(2,2n); add X(2)
query[qfield] = {"$or":[{"$like": inp + "(%,%"}, {"$like": "Xpm1(2,%"}, {"$in":["X(2)"]}]}
elif inp == "Xpm1": # Add X(1) and X0(N) for N=2,3,4,6
query[qfield] = {"$or":[{"$like": "Xpm1(%", "$not": {"$like": "%,%"}}, {"$in": ["X(1)", "X0(2)", "X0(3)", "X0(4)", "X0(6)"]}]}
elif inp == "X1":
query[qfield] = {"$or":[{"$like": "X1(%", "$not": {"$like": "%,%"}}, {"$in":["X(1)", "X0(2)"]}]}
elif inp == "Xarith": # add X(1), X(2)
query[qfield] = {"$or":[{"$like": inp + "(%"}, {"$in":["X(1)","X(2)"]}]}
elif inp == "Xarith":
query[qfield] = {"$or":[{"$like": inp + "(%"}, {"$in":["X(1)","X(2)"]}]}
else: #add X(1),X0(2)
query[qfield] = {"$or":[{"$like": inp + "(%"}, {"$in":["X(1)","X0(2)"]}]}

Expand Down Expand Up @@ -743,7 +748,13 @@ def modcurve_search(info, query):
raise ValueError(msg % info["covered_by"])
query["label"] = {"$in": parents}

modcurve_sorts = [
("", "level", ["level", "index", "genus", "label"]),
("index", "index", ["index", "level", "genus", "label"]),
("genus", "genus", ["genus", "level", "index", "label"]),
("rank", "rank", ["rank", "genus", "level", "index", "label"]),

]
class ModCurveSearchArray(SearchArray):
noun = "curve"
jump_example = "13.78.3.a.1"
Expand Down Expand Up @@ -922,8 +933,8 @@ def __init__(self):
("X1", "X1(N)"),
("Xpm1", "X±1(N)"),
("X", "X(N)"),
("X2", "X1(2,2N)"),
("Xpm2", "X±1(2,2N)"),
("Xarith1", "Xarith1(M,MN)"),
("Xarithpm1", "Xarith±1(M,MN)"),
("Xsp", "Xsp(N)"),
("Xns", "Xns(N)"),
("Xspplus", "Xsp+(N)"),
Expand Down Expand Up @@ -964,13 +975,9 @@ def __init__(self):
[CPlabel],
]

_default = ["level", "index", "genus", "coarse_class_num", "coarse_level", "coarse_num", "fine_num"]
sorts = [
("", "level", _default),
("index", "index", ["index", "level"] + _default[2:]),
("genus", "genus", ["genus"] + _default[:2] + _default[3:]),
("rank", "rank", ["rank", "genus"] + _default[:2] + _default[3:]),
]

sorts = modcurve_sorts

null_column_explanations = {
'simple': False,
'squarefree': False,
Expand All @@ -979,6 +986,37 @@ def __init__(self):
'name': False,
}

class FamilySearchArray(EmbeddedSearchArray):
sorts = modcurve_sorts

@modcurve_page.route("/Q/family/<name>")
def family_page(name):
info = to_dict(request.args, search_array=FamilySearchArray(), name=name)
try:
info["family"] = family = ModCurveFamily(name)
except ValueError:
flash_error(f"There is no family with name {name}")
return redirect(url_for(".index_Q"))
info["title"] = family.title
info["bread"] = family.bread
# info["properties"] = family.properties
return render_family(info)

@embed_wrap(
table=db.gps_gl2zhat_fine,
template="modcurve_family.html",
err_title="Modular curve family error",
columns=modcurve_columns,
learnmore=learnmore_list,
# Each of the following arguments is set here so that it overridden when constructing template_kwds,
# which prioritizes values found in info (which are set in family_page() before calling render_family)
bread=lambda:None,
properties=lambda:None,
family=lambda:None,
)
def render_family(info, query):
parse_family(info, query, 'name')

@modcurve_page.route("/Q/low_degree_points")
def low_degree_points():
info = to_dict(request.args, search_array=RatPointSearchArray())
Expand Down Expand Up @@ -1130,8 +1168,8 @@ def __init__(self):
("X1", "X1(N)"),
("Xpm1", "Xpm1(N)"),
("X", "X(N)"),
("X2", "X1(2,2N)"),
("Xpm2", "Xpm1(2,2N)"),
("Xarith1", "Xarith1(M,MN)"),
("Xarithpm1", "Xarith±1(M,MN)"),
("Xsp", "Xsp(N)"),
("Xns", "Xns(N)"),
("Xspplus", "Xsp+(N)"),
Expand Down
70 changes: 70 additions & 0 deletions lmfdb/modular_curves/templates/family.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
{% extends 'homepage.html' %}
{% block content %}

<h1> Description </h1>
<p> {{ family.moduli_description }} </p>

<h2> {{ KNOWL("modcurve.invariants", "Invariants") }} </h2>
<table>
<tr>
<td>{{ KNOWL("modcurve.level", "Level") }}:</td>
<td> $N$ </td><td style="width:20px;"></td>
<td>{{ KNOWL("modcurve.sl2level", "$\SL_2$-level") }}:</td>
<td>${{ family.sl2level }}$</td><td style="width:60px;"></td>
{# Unclear what should happen here.
{% if family.genus > 0 %}
<td>{{ KNOWL("modcurve.newform_level", "Newform level:") }}</td>
<td>${{ family.newform_level }}$</td>
{% endif %}</tr>
#}
<tr>
<td>{{ KNOWL("modcurve.index", "Index") }}:</td><td> ${{ family.index }}$ </td><td style="width:20px;"></td>
<td>{{ KNOWL("modcurve.psl2index", "$\PSL_2$-index") }}:<td>${{ family.psl2index }}$</td></tr>
<tr>
<td>{{ KNOWL("modcurve.genus", "Genus") }}:</td>
{# TODO : Figure out how to modify this #}
<td> ${{ family.genus }} = 1 + \frac{ {{ family.psl2index }} }{12} - \frac{ {{ family.nu2 }} }{4} - \frac{ {{ family.nu3 }} }{3} - \frac{ {{ family.cusps }} }{2}$</td>
</tr>
<tr>
<td>{{ KNOWL("modcurve.cusps", "Cusps") }}:</td>
<td> {{ family.cusps_display }}</td><td style="width:20px;"></td>
<td>{{ KNOWL("modcurve.cusp_widths", "Cusp widths") }}</td>
<td>{{ family.cusp_widths_display }}</td><td style="width:60px;"></td>
<td>{{ KNOWL("modcurve.cusp_orbits", "Cusp orbits") }}</td>
<td>{{ family.cusp_orbits_display }}</td>
</tr>
<tr>
<td>{{ KNOWL("modcurve.elliptic_points", "Elliptic points") }}:</td>
<td> {{ family.elliptic_points }} </td>
</tr>
{# What should go here?
{% if family.genus > 0 %}
<tr>
<td>{{ KNOWL('modcurve.rank', 'Analytic rank') }}:</td>
<td> {% if family.rank is not none %} ${{ family.rank }}$ {% else %} not computed {% endif %} </td>
</tr>
{% endif %}
#}
{# Need to think about what should go here. List of references?
<tr>
<td>{{ KNOWL("modcurve.gonality", "$\Q$-gonality")}}:</td>
<td> ${{ family.q_gonality if family.q_gonality else "%s \\le \\gamma \\le %s"%(curve.q_gonality_bounds[0],curve.q_gonality_bounds[1]) }}$ </td>
</tr>
<tr>
<td>{{ KNOWL("modcurve.gonality", "$\overline{\Q}$-gonality")}}:</td>
<td> ${{ family.qbar_gonality if family.qbar_gonality else "%s \\le \\gamma \\le %s"%(curve.qbar_gonality_bounds[0],curve.qbar_gonality_bounds[1]) }}$ </td>
</tr>
#}
<tr>
<td>{{ KNOWL("modcurve.cusps", "Rational cusps") }}:</td>
<td> ${{ family.rational_cusps }}$ </td>
</tr>
{# This might be possible, but let's comment it out for now.
<tr>
<td>{{ KNOWL("modcurve.cm_discriminants", "Rational CM points") }}:</td>
<td> {{ "yes $\quad(D =$ $%s$)"%(curve.cm_discriminant_list) if family.cm_discriminants else "none" }} </td>
</tr>
#}
</table>

{% endblock %}
4 changes: 2 additions & 2 deletions lmfdb/modular_curves/templates/modcurve_browse.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ <h2> Browse </h2>

<p>
By {{KNOWL('modcurve.standard', 'family')}}:
{% for (fam, famname) in [("X0", "X_0(N)"), ("X1", "X_1(N)"), ("X", "X(N)"), ("Xsp", "X_{\\mathrm{sp}}(N)"), ("Xspplus", "X_{\\mathrm{sp}}^+(N)"), ("Xns", "X_{\\mathrm{ns}}(N)"), ("Xnsplus", "X_{\\mathrm{ns}}^+(N)"), ("XS4", "X_{S_4}(p)"), ("Xarith", "X_{\\mathrm{arith}}(N)")] %}
<a href="?family={{fam}}">${{famname}}$</a>&nbsp;
{% for (fam, famname) in [("X0", "X_0(N)"), ("X1", "X_1(N)"), ("Xpm1", "X_{\pm 1}(N)"), ("Xarith1", "X_{\\mathrm{arith},1}(M,MN)"), ("Xarithpm1", "X_{\\mathrm{arith},\pm 1}(M,MN)"), ("X", "X(N)"), ("Xsp", "X_{\\mathrm{sp}}(N)"), ("Xspplus", "X_{\\mathrm{sp}}^+(N)"), ("Xns", "X_{\\mathrm{ns}}(N)"), ("Xnsplus", "X_{\\mathrm{ns}}^+(N)"), ("XS4", "X_{S_4}(p)"), ("Xarith", "X_{\\mathrm{arith}}(N)")] %}
<a href="family/{{fam}}">${{famname}}$</a>&nbsp;
{% endfor %}
</p>

Expand Down
52 changes: 52 additions & 0 deletions lmfdb/modular_curves/templates/modcurve_family.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{% extends 'embedded_results.html' %}
{% block embedding_content %}

<p>{{ family.moduli_description | safe }}</p>

<h2> {{ KNOWL('modcurve.invariants', 'Invariants') }} </h2>
<table>
<tr>
{% if family.notation %}
<p>Some of the invariants below will use the following notation:
<br>{{ family.notation|safe }}</br></p>
{% endif %}
</tr>
<tr>
<td>{{ KNOWL("modcurve.psl2index", "$\PSL_2$-index") }}:</td>
<td>${{ family.psl2index }}$</td>
</tr>
<tr>
<td>{{ KNOWL("modcurve.elliptic_points", "Elliptic points") }} of order 2:</td>
<td>{{ family.nu2 | safe }}</td>
</tr>
<tr>
<td>{{ KNOWL("modcurve.elliptic_points", "Elliptic points") }} of order 3:</td>
<td>{{ family.nu3 | safe }}</td>
</tr>
<tr>
<td>{{ KNOWL("modcurve.cusps", "Cusps") }}:</td>
<td> {{ family.cusps_display }}</td><td style="width:20px;"></td>
</tr>
<tr>
<td>{{ KNOWL("modcurve.genus", "Genus") }}:</td><td>{{ family.genus_formula }}</td>
</tr>
{# Need to think about what should go here. List of references?
<tr>
<td>{{ KNOWL("modcurve.gonality", "$\Q$-gonality")}}:</td>
<td> ${{ family.q_gonality if family.q_gonality else "%s \\le \\gamma \\le %s"%(curve.q_gonality_bounds[0],curve.q_gonality_bounds[1]) }}$ </td>
</tr>
<tr>
<td>{{ KNOWL("modcurve.gonality", "$\overline{\Q}$-gonality")}}:</td>
<td> ${{ family.qbar_gonality if family.qbar_gonality else "%s \\le \\gamma \\le %s"%(curve.qbar_gonality_bounds[0],curve.qbar_gonality_bounds[1]) }}$ </td>
</tr>
#}
</table>


{% if family.hypell_description or family.biell_description %}
<h2> Remarks </h2>
<p>{{KNOWL('ag.hyperelliptic_curve', 'Hyperelliptic curves')}}: {{ family.hypell_description|safe }}</p>
<p>{{KNOWL('ag.bielliptic_curve', 'Bielliptic curves')}}: {{ family.biell_description|safe }}</p>
{% endif %}

{% endblock %}
4 changes: 2 additions & 2 deletions lmfdb/modular_curves/test_modular_curves.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,8 +300,8 @@ def test_family_search(self):
('X1','4.12.0-4.c.1.1'),
('Xpm1','5.12.0.a.1'),
('X','2.6.0.a.1'),
('X2','4.24.0-4.b.1.3'),
('Xpm2','6.24.0.a.1'),
('Xarith1','4.24.0-4.b.1.3'),
('Xarithpm1','6.24.0.a.1'),
('Xsp','3.12.0.a.1'),
('Xns','3.6.0.a.1'),
('Xspplus','3.6.0.b.1'),
Expand Down
5 changes: 5 additions & 0 deletions lmfdb/modular_curves/web_curve.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ def name_to_latex(name):
if not name:
return ""
name = canonicalize_name(name)
# Temporary measure until we update data with Xarith1 and Xarithpm1 families
if "+" in name:
name = name.replace("+", "^+")
if "ns" in name:
Expand All @@ -135,6 +136,10 @@ def name_to_latex(name):
name = name.replace("sp", r"{\mathrm{sp}}")
elif "S4" in name:
name = name.replace("S4", "{S_4}")
elif name.startswith("Xarith1"):
name = r"X{\mathrm{arith},1}" + name[7:]
elif name.startswith("Xarithpm1"):
name = r"X{\mathrm{arith},\pm 1}" + name[9:]
elif "pm1" in name:
name = name.replace("pm1", r"{\pm1}")
elif "arith" in name:
Expand Down
2 changes: 1 addition & 1 deletion lmfdb/static/lmfdb.js
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ $(function() {

function update_start_by_count_and_submit_form(sign) {
var startelem = $('form.re-search input[name=start]');
var count = parseInt($('form.re-search input[name=count]').val());
var count = parseInt($('form.re-search input[name=count]').val());;
var newstart = parseInt(startelem.val())+sign*count;
if(newstart<0)
newstart = 0;
Expand Down
51 changes: 51 additions & 0 deletions lmfdb/templates/embedded_results.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{% extends 'homepage.html' %}
{% block content %}

{% block embedding_content %}

{% endblock %}

{{ info.columns.above_results | safe }}
{% if info.columns.languages %}
{% set languages = info.columns.languages %}
{% endif %}

<form class='re-search'>
{{ info.search_array.html(info) | safe }}
<input type="hidden" name="showcol" value="{{info.showcol}}" />
<input type="hidden" name="hidecol" value="{{info.hidecol}}" />
<input type="hidden" name="sort_order" value="{{info.sort_order}}" />
<input type="hidden" name="sort_dir" value="{{info.sort_dir}}" />
</form>

{# requires info to contain number (number of results), count (max number of results possible), start (where to start in the list of results) and exact_count (boolean, indicating whether the count is exact) #}

{% if info.number == 'infinity' or info.number >= info.start + info.count %}
{% set upper_count = info.start + info.count %}
{% else %}
{% set upper_count = info.number %}
{% endif %}
<br>
<div>
{% if info.number > info.count or info.start != 0 -%}
<h2 style="display: inline; color: #1565C0; font-weight: bold; font-family: sans-serif; text-decoration: none; font-size: 120%; text-align: left;">
Showing {{ info.start + 1 }}-{{ upper_count }} of {{ info.number }}
</h2>
{% endif %}
{% include 'forward_back.html' %}
{% include 'download_search_results.html' %}
</div>

{% include 'search_results_table.html' %}

{% include 'forward_back.html' %}
{% if info.columns.dummy_download %}
{% include 'dummy_download_search_results.html' %}
{% else %}
{% include 'download_search_results.html' %}
{% endif %}
{{ info.columns.below_download | safe }}
{% include 'debug_info.html' %}


{% endblock %}
8 changes: 4 additions & 4 deletions lmfdb/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
'parse_container', 'parse_hmf_weight', 'parse_count', 'parse_newton_polygon',
'parse_start', 'parse_ints_to_list_flash', 'integer_options',
'nf_string_to_label', 'clean_input', 'prep_ranges',
'search_wrap', 'count_wrap',
'SearchArray', 'TextBox', 'TextBoxNoEg', 'TextBoxWithSelect', 'BasicSpacer',
'search_wrap', 'count_wrap', 'embed_wrap',
'SearchArray', 'EmbeddedSearchArray', 'TextBox', 'TextBoxNoEg', 'TextBoxWithSelect', 'BasicSpacer',
'SkipBox', 'CheckBox', 'CheckboxSpacer', 'DoubleSelectBox', 'HiddenBox',
'SearchButton', 'SearchButtonWithSelect', 'RowSpacer',
'SelectBox', 'YesNoBox', 'YesNoMaybeBox', 'ExcludeOnlyBox',
Expand Down Expand Up @@ -149,9 +149,9 @@
parse_subfield, parse_interval,
clean_input, prep_ranges, input_string_to_poly)

from .search_wrapper import search_wrap, count_wrap
from .search_wrapper import search_wrap, count_wrap, embed_wrap
from .search_boxes import (
SearchArray, TextBox, TextBoxNoEg, TextBoxWithSelect, BasicSpacer,
SearchArray, EmbeddedSearchArray, TextBox, TextBoxNoEg, TextBoxWithSelect, BasicSpacer,
SkipBox, CheckBox, CheckboxSpacer, DoubleSelectBox, HiddenBox,
SelectBox, YesNoBox, YesNoMaybeBox, ExcludeOnlyBox,
ParityBox, ParityMod, SubsetBox, SubsetNoExcludeBox, SelectBoxNoEg, CountBox,
Expand Down
Loading