def ModularForm_GSp4_Q_Sp4Z_j(): bread = [('Siegel modular forms', url_for('ModularForm_GSp4_Q_top_level')), ('$M_{k,j}(\mathrm{Sp}(4, \mathbb{Z}))$', '/ModularForm/GSp/Q/Sp4Z_j')] error = False jrange = xrange(0, 21) krange = xrange(10, 21) if request.args.get('j'): jr = parse_range(request.args.get('j')) if type(jr) is int: jrange = xrange(jr, jr+20+1); else: jrange = xrange(jr['$gte'], jr['$lte']) if request.args.get('k'): kr = parse_range(request.args.get('k')) if type(kr) is int: krange = xrange(kr, kr+10+1); else: krange = xrange(kr['$gte'], kr['$lte']) jrange = [x for x in jrange if x%2==0] try: dimtable = dimensions.dimension_table_Sp4Z_j(krange, jrange) except: error='Not all dimensions are implemented at the moment. Try again with a different range' dimtable=False return render_template('ModularForm_GSp4_Q_Sp4Zj.html', title='$M_{k,j}(\mathrm{Sp}(4, \mathbb{Z}))$', bread = bread, dimtable = dimtable, jrange=jrange, krange=krange, error=error)
def character_search(**args): info = to_dict(args) for field in ['modulus', 'conductor', 'order']: info[field] = info.get(field, '') query = {} if 'natural' in args: label = info.get('natural', '') try: modulus = int(str(label).partition('.')[0]) number = int(str(label).partition('.')[2]) except ValueError: return "<span style='color:red;'>ERROR: bad query</span>" return redirect(url_for('characters.render_Dirichletwebpage',modulus=modulus, number=number)) else: for field in ['modulus', 'conductor', 'order']: if info.get(field): query[field] = parse_range(info[field]) info['bread'] = [('Characters', url_for(".render_characterNavigation")), ('Dirichlet', url_for(".render_Dirichletwebpage")), ('search results', ' ') ] info['credit'] = 'Sage' if (len(query) != 0): from sage.modular.dirichlet import DirichletGroup info['contents'] = charactertable(query) info['title'] = 'Dirichlet Characters' return render_template("character_search.html", **info) else: return "<span style='color:red;'>ERROR: bad query</span>"
def character_search(**args): info = to_dict(args) for field in ["modulus", "conductor", "order"]: info[field] = info.get(field, "") query = {} if "natural" in args: label = info.get("natural", "") try: modulus = int(str(label).partition(".")[0]) number = int(str(label).partition(".")[2]) except ValueError: return "<span style='color:red;'>ERROR: bad query</span>" return redirect(url_character(type="Dirichlet", modulus=modulus, number=number)) else: for field in ["modulus", "conductor", "order"]: if info.get(field): query[field] = parse_range(info[field]) info["bread"] = [("Characters", "/Character"), ("search results", " ")] info["credit"] = "Sage" if len(query) != 0: from sage.modular.dirichlet import DirichletGroup info["contents"] = charactertable(query) info["title"] = "Dirichlet Characters" return render_template("character_search.html", **info) else: return "<span style='color:red;'>ERROR: bad query</span>"
def character_search(**args): info = to_dict(args) for field in ['modulus', 'conductor', 'order']: info[field] = info.get(field, '') query = {} if 'natural' in args: label = info.get('natural', '') try: modulus = int(str(label).partition('.')[0]) number = int(str(label).partition('.')[2]) except ValueError: return "<span style='color:red;'>ERROR: bad query</span>" return redirect( url_for('characters.render_Dirichletwebpage', modulus=modulus, number=number)) else: for field in ['modulus', 'conductor', 'order']: if info.get(field): query[field] = parse_range(info[field]) info['bread'] = [('Characters', '/Character'), ('search results', ' ')] info['credit'] = 'Sage' if (len(query) != 0): from sage.modular.dirichlet import DirichletGroup info['contents'] = charactertable(query) info['title'] = 'Dirichlet Characters' return render_template("character_search.html", **info) else: return "<span style='color:red;'>ERROR: bad query</span>"
def hilbert_modular_form_search(**args): C = getDBConnection() # C.hmfs.forms.ensure_index([('level_norm', pymongo.ASCENDING), ('label', pymongo.ASCENDING)]) info = to_dict(args) # what has been entered in the search boxes if 'label' in info: args = {'label': info['label']} return render_hmf_webpage(**args) query = {} for field in ['field_degree', 'field_disc', 'field_label', 'weight', 'level_norm', 'dimension']: if info.get(field): if field == 'weight': try: parallelweight = int(info[field]) query['parallel_weight'] = parallelweight except: query[field] = str(parse_list(info[field])) elif field == 'field_label': query[field] = parse_field_string(info[field]) elif field == 'field_degree': query['deg'] = parse_range(info[field]) elif field == 'field_disc': query['disc'] = parse_range(info[field]) elif field == 'label': query[field] = info[field] elif field == 'dimension': query[field] = parse_range(str(info[field])) elif field == 'level_norm': query[field] = parse_range(info[field]) else: query[field] = info[field] count_default = 100 if info.get('count'): try: count = int(info['count']) except: count = count_default else: info['count'] = count_default count = count_default start_default = 0 if info.get('start'): try: start = int(info['start']) if(start < 0): start += (1 - (start + 1) / count) * count except: start = start_default else: start = start_default info['query'] = dict(query) res = C.hmfs.forms.find( query).sort([('deg', pymongo.ASCENDING), ('disc', pymongo.ASCENDING), ('level_norm', pymongo.ASCENDING), ('level_label', pymongo.ASCENDING), ('label_nsuffix', pymongo.ASCENDING)]).skip(start).limit(count) nres = res.count() if(start >= nres): start -= (1 + (start - nres) / count) * count if(start < 0): start = 0 info['number'] = nres info['start'] = start info['more'] = int(start + count < nres) if nres == 1: info['report'] = 'unique match' else: if nres == 0: info['report'] = 'no matches' else: if nres > count or start != 0: info['report'] = 'displaying matches %s-%s of %s' % (start + 1, min(nres, start + count), nres) else: info['report'] = 'displaying all %s matches' % nres res_clean = [] for v in res: v_clean = {} v_clean['field_label'] = v['field_label'] v_clean['short_label'] = v['short_label'] v_clean['label'] = v['label'] v_clean['level_ideal'] = teXify_pol(v['level_ideal']) v_clean['dimension'] = v['dimension'] res_clean.append(v_clean) info['forms'] = res_clean t = 'Hilbert Modular Form search results' bread = [('Hilbert Modular Forms', url_for(".hilbert_modular_form_render_webpage")), ( 'Search results', ' ')] properties = [] return render_template("hilbert_modular_form_search.html", info=info, title=t, credit=hmf_credit, properties=properties, bread=bread)
def hilbert_modular_form_search(**args): C = getDBConnection() C.hmfs.forms.ensure_index([("level_norm", pymongo.ASCENDING), ("label", pymongo.ASCENDING)]) info = to_dict(args) # what has been entered in the search boxes if "label" in info: args = {"label": info["label"]} return render_hmf_webpage(**args) query = {} for field in ["field_label", "weight", "level_norm", "dimension"]: if info.get(field): if field == "weight": try: parallelweight = int(info[field]) query["parallel_weight"] = parallelweight except: query[field] = str(parse_list(info[field])) elif field == "field_label": query[field] = parse_field_string(info[field]) elif field == "label": query[field] = info[field] elif field == "dimension": query[field] = parse_range(str(info[field])) elif field == "level_norm": query[field] = parse_range(info[field]) else: query[field] = info[field] if info.get("count"): try: count = int(info["count"]) except: count = 100 else: info["count"] = 100 count = 100 info["query"] = dict(query) res = C.hmfs.forms.find(query).sort([("level_norm", pymongo.ASCENDING), ("label", pymongo.ASCENDING)]).limit(count) nres = res.count() if nres > 0: info["field_pretty_name"] = field_pretty(res[0]["field_label"]) else: info["field_pretty_name"] = "" info["number"] = nres if nres == 1: info["report"] = "unique match" else: if nres > count: info["report"] = "displaying first %s of %s matches" % (count, nres) else: info["report"] = "displaying all %s matches" % nres res_clean = [] for v in res: v_clean = {} v_clean["field_label"] = v["field_label"] v_clean["short_label"] = v["short_label"] v_clean["label"] = v["label"] v_clean["level_ideal"] = teXify_pol(v["level_ideal"]) v_clean["dimension"] = v["dimension"] res_clean.append(v_clean) info["forms"] = res_clean t = "Hilbert Modular Form search results" bread = [("Hilbert Modular Forms", url_for(".hilbert_modular_form_render_webpage")), ("Search results", " ")] properties = [] return render_template("hilbert_modular_form_search.html", info=info, title=t, properties=properties, bread=bread)
def hilbert_modular_form_search(**args): C = getDBConnection() C.hmfs.forms.ensure_index([('level_norm', pymongo.ASCENDING), ('label', pymongo.ASCENDING)]) info = to_dict(args) # what has been entered in the search boxes if 'label' in info: args = {'label': info['label']} return render_hmf_webpage(**args) query = {} for field in ['field_label', 'weight', 'level_norm', 'dimension']: if info.get(field): if field == 'weight': try: parallelweight = int(info[field]) query['parallel_weight'] = parallelweight except: query[field] = str(parse_list(info[field])) elif field == 'field_label': query[field] = parse_field_string(info[field]) elif field == 'label': query[field] = info[field] elif field == 'dimension': query[field] = parse_range(str(info[field])) elif field == 'level_norm': query[field] = parse_range(info[field]) else: query[field] = info[field] if info.get('count'): try: count = int(info['count']) except: count = 100 else: info['count'] = 100 count = 100 info['query'] = dict(query) res = C.hmfs.forms.find( query).sort([('level_norm', pymongo.ASCENDING), ('label', pymongo.ASCENDING)]).limit(count) nres = res.count() if nres > 0: info['field_pretty_name'] = field_pretty(res[0]['field_label']) else: info['field_pretty_name'] = '' info['number'] = nres if nres == 1: info['report'] = 'unique match' else: if nres > count: info['report'] = 'displaying first %s of %s matches' % (count, nres) else: info['report'] = 'displaying all %s matches' % nres res_clean = [] for v in res: v_clean = {} v_clean['field_label'] = v['field_label'] v_clean['short_label'] = v['short_label'] v_clean['label'] = v['label'] v_clean['level_ideal'] = teXify_pol(v['level_ideal']) v_clean['dimension'] = v['dimension'] res_clean.append(v_clean) info['forms'] = res_clean t = 'Hilbert Modular Form search results' bread = [('Hilbert Modular Forms', url_for(".hilbert_modular_form_render_webpage")), ( 'Search results', ' ')] properties = [] return render_template("hilbert_modular_form_search.html", info=info, title=t, properties=properties, bread=bread)
def database_query(db_name, coll_name): if not is_safe(db_name) or not is_safe(coll_name): return "Nope." C = base.getDBConnection() if db_name not in C.database_names(): return "No such database." db = getattr(C, db_name) if coll_name not in db.collection_names(): return "No such collection." args = to_dict(request.args) info = dict(args) collection = getattr(db, coll_name) collection.ensure_index("metadata", background=True) metadata = collection.find_one({"metadata": "metadata"}) if metadata: del metadata["_id"] info["metadata"] = json.dumps(metadata, sort_keys=True, indent=4) else: info["metadata"] = "No metadata." indices = set() for name, index in collection.index_information().items(): key = index["key"][0][0] if key == "_id": continue indices.add(key) try: indices.remove("metadata") except ValueError: pass if args.get("_fields"): info["default_fields"] = args["_fields"].split(",") else: # TODO: pull from metadata info["default_fields"] = list(indices) try: limit = int(args.pop("_limit")) except (TypeError, KeyError): info["_limit"] = limit = 100 if "_search" in args: query = {} for key, value in args.items(): if key[0] == "_": continue try: query[key] = parse_range(value, int) except (TypeError, ValueError): try: query[key] = parse_range(value, float) except (TypeError, ValueError): query[key] = parse_range(value, str) res = collection.find(query).limit(limit) else: res = None # TODO: is there a better way to do [this url] + "&format=..."? non_format_args = to_dict(request.args) if "_format" in non_format_args: del non_format_args["_format"] info["formats"] = [ (format, url_for("database_query", db_name=db_name, coll_name=coll_name, _format=format, **non_format_args)) for format in ("text", "csv", "json") ] format = args.get("_format", "html") if format in ("txt", "text"): info["sep"] = " " elif format == "csv": info["sep"] = "," elif format == "json": res = json_iter(res) info["default_fields"] = ["all"] info["sep"] = "" else: title = "%s.%s" % (db_name, coll_name) return render_template( "raw/query.html", db=db_name, coll=coll_name, info=info, indices=indices, res=res, title=title ) # not html response = make_response( render_template("raw/query_download.html", db=db_name, coll=coll_name, info=info, indices=indices, res=res) ) response.headers["Content-type"] = "text/plain" return response
def hilbert_modular_form_search(**args): C = getDBConnection() C.hmfs.forms.ensure_index([('level_norm', pymongo.ASCENDING), ('label', pymongo.ASCENDING)]) info = to_dict(args) # what has been entered in the search boxes if 'label' in info: args = {'label': info['label']} return render_hmf_webpage(**args) query = {} for field in ['field_label', 'weight', 'level_norm', 'dimension']: if info.get(field): if field == 'weight': try: parallelweight = int(info[field]) query['parallel_weight'] = parallelweight except: query[field] = str(parse_list(info[field])) elif field == 'field_label': query[field] = parse_field_string(info[field]) elif field == 'label': query[field] = info[field] elif field == 'dimension': query[field] = parse_range(str(info[field])) elif field == 'level_norm': query[field] = parse_range(info[field]) else: query[field] = info[field] if info.get('count'): try: count = int(info['count']) except: count = 100 else: info['count'] = 100 count = 100 info['query'] = dict(query) res = C.hmfs.forms.find(query).sort([('level_norm', pymongo.ASCENDING), ('label', pymongo.ASCENDING) ]).limit(count) nres = res.count() if nres > 0: info['field_pretty_name'] = field_pretty(res[0]['field_label']) else: info['field_pretty_name'] = '' info['number'] = nres if nres == 1: info['report'] = 'unique match' else: if nres > count: info['report'] = 'displaying first %s of %s matches' % (count, nres) else: info['report'] = 'displaying all %s matches' % nres res_clean = [] for v in res: v_clean = {} v_clean['field_label'] = v['field_label'] v_clean['short_label'] = v['short_label'] v_clean['label'] = v['label'] v_clean['level_ideal'] = teXify_pol(v['level_ideal']) v_clean['dimension'] = v['dimension'] res_clean.append(v_clean) info['forms'] = res_clean t = 'Hilbert Modular Form search results' bread = [('Hilbert Modular Forms', url_for(".hilbert_modular_form_render_webpage")), ('Search results', ' ')] properties = [] return render_template("hilbert_modular_form_search.html", info=info, title=t, properties=properties, bread=bread)
def database_query(db_name, coll_name): if not is_safe(db_name) or not is_safe(coll_name): return "Nope." C = base.getDBConnection() if db_name not in C.database_names(): return "No such database." db = getattr(C, db_name) if coll_name not in db.collection_names(): return "No such collection." args = to_dict(request.args) info = dict(args) collection = getattr(db, coll_name) collection.ensure_index('metadata', background=True) metadata = collection.find_one({'metadata': 'metadata'}) if metadata: del metadata['_id'] info['metadata'] = json.dumps(metadata, sort_keys=True, indent=4) else: info['metadata'] = "No metadata." indices = set() for name, index in collection.index_information().items(): key = index['key'][0][0] if key == '_id': continue indices.add(key) try: indices.remove('metadata') except ValueError: pass if args.get('_fields'): info['default_fields'] = args['_fields'].split(',') else: # TODO: pull from metadata info['default_fields'] = list(indices) try: limit = int(args.pop('_limit')) except (TypeError, KeyError): info['_limit'] = limit = 100 if '_search' in args: query = {} for key, value in args.items(): if key[0] == '_': continue try: query[key] = parse_range(value, int) except (TypeError, ValueError): try: query[key] = parse_range(value, float) except (TypeError, ValueError): query[key] = parse_range(value, str) res = collection.find(query).limit(limit) else: res = None # TODO: is there a better way to do [this url] + "&format=..."? non_format_args = to_dict(request.args) if '_format' in non_format_args: del non_format_args['_format'] info['formats'] = [(format, url_for('database_query', db_name=db_name, coll_name=coll_name, _format=format, **non_format_args)) for format in ('text', 'csv', 'json')] format = args.get('_format', 'html') if format in ('txt', 'text'): info['sep'] = ' ' elif format == 'csv': info['sep'] = ',' elif format == 'json': res = json_iter(res) info['default_fields'] = ['all'] info['sep'] = '' else: title = "%s.%s" % (db_name, coll_name) return render_template("raw/query.html", db=db_name, coll=coll_name, info=info, indices=indices, res=res, title=title) # not html response = make_response(render_template( "raw/query_download.html", db=db_name, coll=coll_name, info=info, indices=indices, res=res)) response.headers['Content-type'] = 'text/plain' return response
def hilbert_modular_form_search(**args): C = getDBConnection() # C.hmfs.forms.ensure_index([('level_norm', pymongo.ASCENDING), ('label', pymongo.ASCENDING)]) info = to_dict(args) # what has been entered in the search boxes if 'label' in info: args = {'label': info['label']} return render_hmf_webpage(**args) query = {} for field in [ 'field_degree', 'field_disc', 'field_label', 'weight', 'level_norm', 'dimension' ]: if info.get(field): if field == 'weight': try: parallelweight = int(info[field]) query['parallel_weight'] = parallelweight except: query[field] = str(parse_list(info[field])) elif field == 'field_label': query[field] = parse_field_string(info[field]) elif field == 'field_degree': query['deg'] = parse_range(info[field]) elif field == 'field_disc': query['disc'] = parse_range(info[field]) elif field == 'label': query[field] = info[field] elif field == 'dimension': query[field] = parse_range(str(info[field])) elif field == 'level_norm': query[field] = parse_range(info[field]) else: query[field] = info[field] count_default = 100 if info.get('count'): try: count = int(info['count']) except: count = count_default else: info['count'] = count_default count = count_default start_default = 0 if info.get('start'): try: start = int(info['start']) if (start < 0): start += (1 - (start + 1) / count) * count except: start = start_default else: start = start_default info['query'] = dict(query) res = C.hmfs.forms.find(query).sort([('deg', pymongo.ASCENDING), ('disc', pymongo.ASCENDING), ('level_norm', pymongo.ASCENDING), ('level_label', pymongo.ASCENDING), ('label_nsuffix', pymongo.ASCENDING) ]).skip(start).limit(count) nres = res.count() if (start >= nres): start -= (1 + (start - nres) / count) * count if (start < 0): start = 0 info['number'] = nres info['start'] = start info['more'] = int(start + count < nres) if nres == 1: info['report'] = 'unique match' else: if nres == 0: info['report'] = 'no matches' else: if nres > count or start != 0: info['report'] = 'displaying matches %s-%s of %s' % ( start + 1, min(nres, start + count), nres) else: info['report'] = 'displaying all %s matches' % nres res_clean = [] for v in res: v_clean = {} v_clean['field_label'] = v['field_label'] v_clean['short_label'] = v['short_label'] v_clean['label'] = v['label'] v_clean['level_ideal'] = teXify_pol(v['level_ideal']) v_clean['dimension'] = v['dimension'] res_clean.append(v_clean) info['forms'] = res_clean t = 'Hilbert Modular Form search results' bread = [('Hilbert Modular Forms', url_for(".hilbert_modular_form_render_webpage")), ('Search results', ' ')] properties = [] return render_template("hilbert_modular_form_search.html", info=info, title=t, credit=hmf_credit, properties=properties, bread=bread)