Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mainly updating groups #5552

Merged
merged 32 commits into from
Jul 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
2683006
Fix fullpage diagrams, make number of outer automorphisms not shown b…
roed314 Jul 10, 2023
16a24cf
print statements
jwj61 Jul 10, 2023
53d22f3
Fixing non-split product knowls
jwj61 Jul 10, 2023
5a521a5
Merge pull request #5538 from roed314/group_fullpage_diagrams
jwj61 Jul 10, 2023
124a6d4
get rid of deprecation warnings
edgarcosta Jul 11, 2023
ef45be7
import
edgarcosta Jul 11, 2023
2fd8c95
enabling loglevel option
edgarcosta Jul 11, 2023
e69eefd
fixed a font issue with when perm or trans degrees were not computed
Jul 11, 2023
03d5caf
More subgroup knowls
jwj61 Jul 11, 2023
4fa1650
Merge pull request #5539 from jwj61/groupfixes
AndrewVSutherland Jul 11, 2023
ab6b9b0
autopep8 action fixes
AndrewVSutherland Jul 11, 2023
7ba5c90
gets rid of None in normal subgroup profile
Jul 11, 2023
913923a
fix POmega
Jul 11, 2023
f9b7a54
Merge branch 'master' of github.com:LMFDB/lmfdb into gps_fixes
Jul 11, 2023
fab7f0f
Merge pull request #5543 from LMFDB/autopep8-patches
AndrewVSutherland Jul 11, 2023
a83824d
forgot to run tests locally
Jul 11, 2023
0d9eaed
Merge pull request #5542 from jwj61/special_sub_knowls
jwj61 Jul 11, 2023
4ca2388
Merge pull request #5544 from jenpaulhus/gps_fixes
jwj61 Jul 11, 2023
22579f3
autopep8 action fixes
jwj61 Jul 11, 2023
6b86b40
Merge pull request #5545 from LMFDB/autopep8-patches
jenpaulhus Jul 11, 2023
7c08828
Merge pull request #5541 from edgarcosta/loglevel
AndrewVSutherland Jul 11, 2023
e1ef5e5
Merge pull request #5540 from edgarcosta/flask_login
AndrewVSutherland Jul 11, 2023
63eaeaf
autopep8 action fixes
AndrewVSutherland Jul 11, 2023
d2aa0e1
Adding color statement
jwj61 Jul 11, 2023
328b6d2
Say things are not identified
jwj61 Jul 11, 2023
ee08540
Removing text in math mode
jwj61 Jul 11, 2023
f001ca0
Merge pull request #5548 from LMFDB/autopep8-patches
edgarcosta Jul 11, 2023
c560421
Merge pull request #5547 from jwj61/special_sub_knowls
jenpaulhus Jul 11, 2023
7824ef7
Change "group None"
jwj61 Jul 11, 2023
7a758de
autopep8 action fixes
jenpaulhus Jul 11, 2023
b5e6902
Merge pull request #5550 from LMFDB/autopep8-patches
AndrewVSutherland Jul 11, 2023
3223e19
Merge pull request #5549 from jwj61/newNonefix
jenpaulhus Jul 11, 2023
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
2 changes: 1 addition & 1 deletion lmfdb/backend/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ def __init__(self, loggername, db):
self.slow_cutoff = logging_options["slowcutoff"]
self.logger = l = logging.getLogger(loggername)
l.propagate = False
l.setLevel(logging.INFO)
l.setLevel(logging_options.get('loglevel', logging.INFO))
fhandler = logging.FileHandler(logging_options["slowlogfile"])
formatter = logging.Formatter("%(asctime)s - %(message)s")
filt = QueryLogFilter()
Expand Down
48 changes: 27 additions & 21 deletions lmfdb/groups/abstract/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -781,14 +781,14 @@ def Qchar_table(label):
learnmore=learnmore_list(),
)

def _subgroup_diagram(label, typ, title, only):
def _subgroup_diagram(label, title, only, style):
label = clean_input(label)
gp = WebAbstractGroup(label)
if gp.is_null():
flash_error("No group with label %s was found in the database.", label)
return redirect(url_for(".index"))
dojs, display_opts = diagram_js_string(gp, only=only)
info = {"dojs": dojs, "type": typ}
info = {"dojs": dojs, "style":style}
info.update(display_opts)
return render_template(
"diagram_page.html",
Expand All @@ -801,22 +801,22 @@ def _subgroup_diagram(label, typ, title, only):
@abstract_page.route("/diagram/<label>")
def subgroup_diagram(label):
title = f"Diagram of subgroups up to conjugation for group {label}"
return _subgroup_diagram(label, "conj", title, only=("subgroup", ""))
return _subgroup_diagram(label, title, only=("subgroup", ""), style="diagram")

@abstract_page.route("/autdiagram/<label>")
def subgroup_autdiagram(label):
title = f"Diagram of subgroups up to automorphism for group {label}"
return _subgroup_diagram(label, "aut", title, only=("subgroup", "aut"))
return _subgroup_diagram(label, title, only=("subgroup", "aut"), style="autdiagram")

@abstract_page.route("/normal_diagram/<label>")
def normal_diagram(label):
title = f"Diagram of normal subgroups up to conjugation for group {label}"
return _subgroup_diagram(label, "conj", title, only=("normal", ""))
return _subgroup_diagram(label, title, only=("normal", ""), style="normal_diagram")

@abstract_page.route("/normal_autdiagram/<label>")
def normal_autdiagram(label):
title = f"Diagram of normal subgroups up to automorphism for group {label}"
return _subgroup_diagram(label, "aut", title, only=("normal", "aut"))
return _subgroup_diagram(label, title, only=("normal", "aut"), style="normal_autdiagram")

def show_type(ab, nil, solv, smith, nilcls, dlen, clen):
# arguments - ["abelian", "nilpotent", "solvable", "smith_abelian_invariants", "nilpotency_class", "derived_length", "composition_length"]
Expand Down Expand Up @@ -961,7 +961,7 @@ def group_postprocess(res, info, query):
# ["center_label", "smith_abelian_invariants"],
# display_url_invs),
ProcessedCol("aut_order", "group.automorphism", r"$\card{\mathrm{Aut}(G)}$", show_factor, align="center", short_title="automorphisms"),
ProcessedCol("outer_order", "group.outer_aut", r"$\card{\mathrm{Out}(G)}$", show_factor, default=True, align="center", short_title="outer automorphisms"),
ProcessedCol("outer_order", "group.outer_aut", r"$\card{\mathrm{Out}(G)}$", show_factor, align="center", short_title="outer automorphisms"),
MathCol("transitive_degree", "group.transitive_degree", "Tr. deg", short_title="transitive degree"),
MathCol("permutation_degree", "group.permutation_degree", "Perm. deg", short_title="permutation degree"),
MathCol("irrC_degree", "group.min_complex_irrep_deg", r"$\C$-irrep deg", short_title=r"$\C$-irrep degree"),
Expand Down Expand Up @@ -1367,13 +1367,16 @@ def shortsubinfo(ambient, short_label):

def subinfo_getsub(title, knowlid, lab):
full_lab = "%s.%s" % (ambient, lab)
h = WebAbstractSubgroup(full_lab)
h = WebAbstractSubgroup(full_lab) if lab else None
prop = display_knowl(knowlid, title)
return f"<tr><td>{prop}</td><td>{h.make_span()}</td></tr>\n"
if lab:
return f"<tr><td>{prop}</td><td>{h.make_span()}</td></tr>\n"
else:
return f"<tr><td>{prop}</td><td>not computed</td></tr>\n"

ans = (
'Information on the subgroup <span class="%s" data-sgid="%s">$%s$</span><br>\n'
% (wsg.spanclass(), wsg.label, wsg.subgroup_tex)
% (wsg.spanclass(), wsg.label, wsg.subgroup_tex if '?' not in wsg.subgroup_tex else '')
)
ans += f"<p>{create_boolean_subgroup_string(wsg, type='knowl')}</p>"
ans += "<table>"
Expand All @@ -1398,16 +1401,19 @@ def subinfo_getsub(title, knowlid, lab):
# ans += f"<tr><td>{display_knowl('group.generators', 'Generators')}</td><td>${gp.show_subgroup_generators(wsg)}$</td></tr>"
# if not wsg.characteristic:
# ans += f"<tr><td>Number of autjugates</td><td>{wsg.conjugacy_class_count}</td></tr>"
alt_tex = wsg.label if '?' in wsg.subgroup_tex else rf'${wsg.subgroup_tex}$'
ans += (
'<tr><td></td><td style="text-align: right"><a href="%s">$%s$ subgroup homepage</a></td>'
% (url_for_subgroup_label(wsg.label), wsg.subgroup_tex)
)
ans += (
'<tr><td></td><td style="text-align: right"><a href="%s">$%s$ abstract group homepage</a></td></tr>'
% (url_for_label(wsg.subgroup), wsg.subgroup_tex)
'<tr><td></td><td style="text-align: right"><a href="%s">%s subgroup homepage</a></td>'
% (url_for_subgroup_label(wsg.label), alt_tex)
)
if wsg.subgroup:
ans += (
'<tr><td></td><td style="text-align: right"><a href="%s">$%s$ abstract group homepage</a></td></tr>'
% (url_for_label(wsg.subgroup), wsg.subgroup_tex)
)

# print ""
# print ans
# print (ans)
ans += "</table>"
return ans

Expand Down Expand Up @@ -2377,12 +2383,12 @@ def group_data(label, ambient=None, aut=False, profiledata=None):
profiledata[0] = None
tex_name = profiledata[2]
if tex_name is None:
ans = "Unknown group<br />"
ans = "Unidentified group<br />"
else:
ans = f"Group ${tex_name}$<br />"
ans += f"Order: {order}<br />"
if profiledata[1] is None:
ans += "Isomorphism class unknown<br />"
ans += "Isomorphism class has not been identified<br />"
else:
# TODO: add hash knowl and search link to groups with this order and hash
ans += f"Hash: {profiledata[1]}<br />"
Expand Down Expand Up @@ -2424,13 +2430,13 @@ def group_data(label, ambient=None, aut=False, profiledata=None):
if quotient_tex in [None, "?"]:
quotient_tex = profiledata[5]
if quotient_tex in [None, "?"]:
ans += "Unknown quotient<br />"
ans += "identified quotient<br />"
else:
ans += f"Quotient ${quotient_tex}$<br />"
ambient_order = int(ambient.split(".")[0])
ans += f"Quotient order: {ambient_order // order}<br />"
if profiledata[4] is None:
ans += "Quotient isomorphism class unknown<br />"
ans += "Quotient isomorphism class has not been identified<br />"
else:
# TODO: add hash knowl and search link to groups with this order and hash
ans += f"Quotient hash: {profiledata[4]}<br />"
Expand Down
100 changes: 8 additions & 92 deletions lmfdb/groups/abstract/templates/abstract-show-group.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,89 +14,6 @@

<script type="text/javascript" src="{{ url_for('static', filename='graphs/graph.js') }}"></script>

<script>
var styles=['subgroup_diagram', 'subgroup_profile', 'subgroup_autdiagram', 'subgroup_autprofile', 'normal_diagram', 'normal_profile', 'normal_autdiagram', 'normal_autprofile'];
function button_on(who) {
$('button.'+who).css('background', '{{color.lf_an_button_bkg}}');
$('button.'+who).css('border', '2px solid {{color.lf_an_button_brd}}');
}
function other_buttons_off(keep) {
for (var i = 0; i < styles.length; i++) {
if(styles[i] != keep) {
$('button.'+styles[i]).css('background', '{{color.lf_ar_button_bkg}}');
$('button.'+styles[i]).css('border', '1px solid {{color.lf_ar_button_brd}}');
}
}
}
var mode_pairs = [['subgroup', 'normal'], ['', 'aut'], ['diagram', 'profile']];
function select_subgroup_mode(mode) {
var cls, thismode, opposite_mode, piece;
cls = "";
for (var i = 0; i < mode_pairs.length; i++) {
for (var j = 0; j < 2; j++) {
thismode = mode_pairs[i][j];
if (thismode == mode) {
opposite_mode = mode_pairs[i][1-j];
if ($("button.sub_" + mode).hasClass("sub_active")) {
return; // already active
}
piece = mode;
break;
}
if ($("button.sub_" + thismode).hasClass("sub_active")){
piece = thismode;
}
}
cls += piece;
if (i == 0) {
cls += "_";
}
}
$("button.sub_" + mode).removeClass("sub_inactive");
$("button.sub_" + mode).addClass("sub_active");
$("button.sub_" + opposite_mode).removeClass("sub_active");
$("button.sub_" + opposite_mode).addClass("sub_inactive");
show_info(cls);
}

var heightstyle='div'; // alternative is 'order'
function show_info(style) {
for (var i = 0; i < styles.length; i++) {
$('div.' + styles[i]).hide();
}
$('div.'+style).show();
if (style.endsWith("diagram")) {
whoisshowing = 0;
if (style.endsWith("autdiagram")) {
whoisshowing += 1;
}
if (heightstyle=='order') {
whoisshowing += 4;
}
if (style.startsWith("normal")) {
whoisshowing += 2;
}
sdiagram.newgraph(glist[whoisshowing]);
sdiagram.setSize();
sdiagram.draw();
}
for (var i = 0; i < styles.length; i++) {
$('button.' + styles[i]).show();
}
}
function toggleheight()
{
if (heightstyle=='div') {
heightstyle = 'order';
} else {
heightstyle = 'div';
}
mytoggleheights($("#orderForHeight").prop('checked'));
}

</script>



<h2> Group information</h2>
<p>
Expand Down Expand Up @@ -393,6 +310,7 @@ <h2> Homology </h2>
<td>{{KNOWL('group.commutator_length', 'Commutator length')}}:</td>
{% if gp.commutator_count %}
<td>${{gp.commutator_count}}$</td>
{% elif gp.abelian %} <td>$0$</td>
{% else %} <td>not computed</td> {% endif %}
</tr>
{% endif %}
Expand Down Expand Up @@ -426,7 +344,7 @@ <h2> Subgroups </h2>
<tr>
<td>{{KNOWL('group.center',title='Center')}}:</td>
{% if gp.cent() %}
<td><span class="subgp chargp" data-sgid="{{gp.cent()}}">$Z \simeq {{gp.cent_label()}}$</span></td>
<td><span class="subgp chargp" data-sgid="{{gp.cent()}}">$Z \simeq$ {{gp.cent_label()|safe}}</span></td>
<td>{{gp.subgroups[gp.cent()].display_quotient("Z")|safe}}</td>
{% elif gp.center_label %}
<td>a subgroup isomorphic to <a href="{{url_for('.by_label', label=gp.center_label)}}">${{gp.special_subs_label(gp.center_label)}}$</td>
Expand All @@ -437,7 +355,7 @@ <h2> Subgroups </h2>
<tr>
<td>{{KNOWL('group.commutator_subgroup',title='Commutator')}}:</td>
{% if gp.comm() %}
<td><span class="subgp chargp" data-sgid="{{gp.comm()}}">$G' \simeq {{gp.comm_label()}}$</span></td> {# match single quote for code highlighting purposes: ' #}
<td><span class="subgp chargp" data-sgid="{{gp.comm()}}">$G' \simeq$ {{gp.subgroups[gp.comm()].knowl()|safe}}</span></td> {# match single quote for code highlighting purposes: ' #}
<td>{{gp.subgroups[gp.comm()].display_quotient("G'", ab_invs=gp.smith_abelian_invariants)|safe}}</td>
{% elif gp.commutator_label %}
<td>a subgroup isomorphic to <a href="{{url_for('.by_label', label=gp.comutator_label)}}">${{gp.special_subs_label(gp.commutator_label)}}$</td>
Expand All @@ -448,7 +366,7 @@ <h2> Subgroups </h2>
<tr>
<td>{{KNOWL('group.frattini_subgroup',title='Frattini')}}:</td>
{% if gp.fratt() %}
<td><span class="subgp chargp" data-sgid="{{gp.fratt()}}">$\Phi \simeq {{gp.fratt_label()}}$</span></td>
<td><span class="subgp chargp" data-sgid="{{gp.fratt()}}">$\Phi \simeq$ {{gp.subgroups[gp.fratt()].knowl()|safe}}</span></td>
<td>{{gp.subgroups[gp.fratt()].display_quotient("\\Phi")|safe}} </td>
{% elif gp.frattini_label %}
<td>a subgroup isomorphic to <a href="{{url_for('.by_label', label=gp.frattini_label)}}">${{gp.special_subs_label(gp.frattini_label)}}$</td>
Expand All @@ -459,7 +377,7 @@ <h2> Subgroups </h2>
<tr>
<td>{{KNOWL('group.fitting_subgroup',title='Fitting')}}:</td>
{% if gp.fitting %}
<td><span class="subgp chargp" data-sgid="{{gp.fitting}}">$\operatorname{Fit} \simeq {{gp.subgroups[gp.fitting].subgroup_tex}}$</td>
<td><span class="subgp chargp" data-sgid="{{gp.fitting}}">$\operatorname{Fit} \simeq$ {{gp.subgroups[gp.fitting].knowl()|safe}}</td>
<td>{{gp.subgroups[gp.fitting].display_quotient("\\operatorname{Fit}")|safe}}</td>
{% else %}
<td> not computed</td>
Expand All @@ -468,7 +386,7 @@ <h2> Subgroups </h2>
<tr>
<td>{{KNOWL('group.radical',title='Radical')}}:</td>
{% if gp.radical %}
<td><span class="subgp chargp" data-sgid="{{gp.radical}}">$R \simeq {{gp.subgroups[gp.radical].subgroup_tex}}$</td>
<td><span class="subgp chargp" data-sgid="{{gp.radical}}">$R \simeq$ {{gp.subgroups[gp.radical].knowl()|safe}}</td>
<td>{{gp.subgroups[gp.radical].display_quotient("R")|safe}}</td>
{% else %}
<td>not computed</td>
Expand All @@ -477,20 +395,18 @@ <h2> Subgroups </h2>
<tr>
<td>{{KNOWL('group.socle',title='Socle')}}:</td>
{% if gp.socle %}
<td><span class="subgp chargp" data-sgid="{{gp.socle}}">$\operatorname{soc} \simeq {{gp.subgroups[gp.socle].subgroup_tex}}$</td>
<td><span class="subgp chargp" data-sgid="{{gp.socle}}">$\operatorname{soc} \simeq$ {{gp.subgroups[gp.socle].knowl()|safe}}</td>
<td>{{gp.subgroups[gp.socle].display_quotient("\\operatorname{soc}")|safe}}</td>
{% else %}
<td> not computed</td>
{% endif %}
</tr>
{% if gp.pgroup == 0 %}
{% for p, subgp in gp.sylow_subgroups() %}
<tr>
<td>{{p}}-{{KNOWL('group.sylow_subgroup', 'Sylow subgroup')}}:</td>
<td><span class="{{subgp.spanclass()}}" data-sgid="{{subgp.label}}">$P_{ {{p}} } \simeq {{subgp.subgroup_tex}}$</span></td>
<td><span class="{{subgp.spanclass()}}" data-sgid="{{subgp.short_label}}">$P_{ {{p}} } \simeq$ {{subgp.knowl()|safe}}</span></td>
</tr>
{% endfor %}
{% endif %}
</table>


Expand Down
14 changes: 2 additions & 12 deletions lmfdb/groups/abstract/templates/diagram_page.html
Original file line number Diff line number Diff line change
Expand Up @@ -64,18 +64,8 @@ <h3>{{title|safe}}<h3>
</canvas>

<script type="text/javascript">
{{ info.dojs|safe }}

{% if info.type == "aut" %}
whoisshowing=1;
type="A";
{% else %}
whoisshowing=0;
type="C";
{% endif %}
sdiagram.newgraph(glist[whoisshowing]);
sdiagram.setSize();
sdiagram.draw();
{{ info.dojs|safe }}
show_info("{{ info.style }}");
</script>

<div>
Expand Down
Loading
Loading