コード例 #1
0
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)
コード例 #2
0
ファイル: main.py プロジェクト: am-github/lmfdb
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>"
コード例 #3
0
ファイル: main.py プロジェクト: mrubinst/lmfdb
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>"
コード例 #4
0
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>"
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
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)
コード例 #8
0
ファイル: raw.py プロジェクト: WarrenMoore/lmfdb
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
コード例 #9
0
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)
コード例 #10
0
ファイル: raw.py プロジェクト: sibilant/lmfdb
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
コード例 #11
0
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)