Пример #1
0
def abelian_varieties_by_gqi(g, q, iso):
    label = abvar_label(g, q, iso)
    try:
        validate_label(label)
    except ValueError as err:
        flash(
            Markup(
                "Error: <span style='color:black'>%s</span> is not a valid label: %s."
                % (label, str(err))), "error")
        return search_input_error()
    try:
        cl = AbvarFq_isoclass.by_label(label)
    except ValueError:
        flash(
            Markup(
                "Error: <span style='color:black'>%s</span> is not in the database."
                % (label)), "error")
        return search_input_error()
    bread = get_bread(
        (str(g), url_for(".abelian_varieties_by_g", g=g)),
        (str(q), url_for(".abelian_varieties_by_gq", g=g, q=q)),
        (iso, url_for(".abelian_varieties_by_gqi", g=g, q=q, iso=iso)))
    return render_template("show-abvarfq.html",
                           credit=abvarfq_credit,
                           title='Abelian Variety isogeny class %s over $%s$' %
                           (label, cl.field()),
                           bread=bread,
                           cl=cl,
                           learnmore=learnmore_list())
Пример #2
0
def abelian_varieties_by_gqi(g, q, iso):
    label = abvar_label(g,q,iso)
    try:
        validate_label(label)
    except ValueError as err:
        flash(Markup("Error: <span style='color:black'>%s</span> is not a valid label: %s." % (label, str(err))), "error")
        return search_input_error()
    try:
        cl = AbvarFq_isoclass.by_label(label)
    except ValueError:
        flash(Markup("Error: <span style='color:black'>%s</span> is not in the database." % (label)), "error")
        return search_input_error()
    bread = get_bread((str(g), url_for(".abelian_varieties_by_g", g=g)),
                      (str(q), url_for(".abelian_varieties_by_gq", g=g, q=q)),
                      (iso, url_for(".abelian_varieties_by_gqi", g=g, q=q, iso=iso)))
    return render_template("show-abvarfq.html",
                           credit=abvarfq_credit,
                           title='Abelian Variety isogeny class %s over $%s$'%(label, cl.field()),
                           bread=bread,
                           cl=cl,
                           learnmore=learnmore_list())
Пример #3
0
def abelian_variety_search(**args):
    info = to_dict(args)

    if 'download' in info and info['download'] != 0:
        return download_search(info)

    bread = args.get('bread', get_bread(('Search Results', ' ')))
    if 'jump' in info:
        return by_label(info.get('label', ''))
    query = {}

    try:
        parse_ints(info, query, 'q')
        parse_ints(info, query, 'g')
        if 'simple' in info:
            if info['simple'] == 'yes':
                query['decomposition'] = {'$size': 1}
                query['decomposition.0.1'] = 1
            elif info['simple'] == 'no':
                query['$or'] = [{
                    'decomposition': {
                        '$not': {
                            '$size': 1
                        }
                    }
                }, {
                    'decomposition.0.1': {
                        '$gt': 1
                    }
                }]
        if 'primitive' in info:
            if info['primitive'] == 'yes':
                query['primitive_models'] = {'$size': 0}
            elif info['primitive'] == 'no':
                query['primitive_models'] = {'$not': {'$size': 0}}
        if 'jacobian' in info:
            if info['jacobian'] == 'yes':
                query['known_jacobian'] = 1
            elif info['jacobian'] == 'no':
                query['known_jacobian'] = -1
        else:
            info['jacobian'] = "any"
        if 'polarizable' in info:
            if info['polarizable'] == 'yes':
                query['principally_polarizable'] = 1
            elif info['polarizable'] == 'no':
                query['principally_polarizable'] = -1
        else:
            info['polarizable'] = "any"
        parse_ints(info, query, 'p_rank')
        parse_ints(info, query, 'angle_ranks')
        parse_newton_polygon(info, query, 'newton_polygon', qfield='slopes')
        parse_list_start(info,
                         query,
                         'initial_coefficients',
                         qfield='polynomial',
                         index_shift=1)
        parse_list_start(info,
                         query,
                         'abvar_point_count',
                         qfield='A_counts',
                         parse_singleton=str)
        parse_list_start(info,
                         query,
                         'curve_point_count',
                         qfield='C_counts',
                         parse_singleton=str)
        parse_abvar_decomp(info,
                           query,
                           'decomposition',
                           av_stats=AbvarFqStats())
        parse_nf_string(info, query, 'number_field')
    except ValueError:
        return search_input_error(info, bread)

    info['query'] = query
    count = parse_count(info, 50)
    start = parse_start(info)

    cursor = db().find(query)
    nres = cursor.count()
    if start >= nres:
        start -= (1 + (start - nres) / count) * count
    if start < 0:
        start = 0

    #res = cursor.sort([]).skip(start).limit(count)
    res = cursor.skip(start).limit(count)
    res = list(res)
    info['abvars'] = [AbvarFq_isoclass(x) for x in res]
    info['number'] = nres
    info['start'] = start
    info['count'] = count
    info['more'] = int(start + count < nres)
    if nres == 1:
        info['report'] = 'unique match'
    elif nres == 0:
        info['report'] = 'no matches'
    elif 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
    t = 'Abelian Variety search results'
    return render_template("abvarfq-search-results.html",
                           info=info,
                           credit=abvarfq_credit,
                           bread=bread,
                           title=t)
Пример #4
0
def abelian_variety_search(**args):
    info = to_dict(args)

    if 'download' in info and info['download'] != 0:
        return download_search(info)

    bread = args.get('bread', get_bread(('Search Results', ' ')))
    if 'jump' in info:
        return by_label(info.get('label',''))
    query = {}

    try:
        parse_ints(info,query,'q',name='base field')
        parse_ints(info,query,'g',name='dimension')
        if 'simple' in info:
            if info['simple'] == 'yes':
                query['is_simp'] = True
            elif info['simple'] == 'no':
                query['is_simp'] = False
        if 'primitive' in info:
            if info['primitive'] == 'yes':
                query['is_prim'] = True
            elif info['primitive'] == 'no':
                query['is_prim'] = False
        if 'jacobian' in info:
            jac = info['jacobian']
            if jac == 'yes':
                query['is_jac'] = 1
            elif jac == 'not_no':
                query['is_jac'] = {'$gt' : -1}
            elif jac == 'not_yes':
                query['is_jac'] = {'$lt' : 1}
            elif jac == 'no':
                query['is_jac'] = -1
        if 'polarizable' in info:
            pol = info['polarizable']
            if pol == 'yes':
                query['is_pp'] = 1
            elif pol == 'not_no':
                query['is_pp'] = {'$gt' : -1}
            elif pol == 'not_yes':
                query['is_pp'] = {'$lt' : 1}
            elif pol == 'no':
                query['is_pp'] = -1
        parse_ints(info,query,'p_rank')
        parse_ints(info,query,'ang_rank')
        parse_newton_polygon(info,query,'newton_polygon',qfield='slps') # TODO
        parse_string_start(info,query,'initial_coefficients',qfield='poly',initial_segment=["1"])
        parse_string_start(info,query,'abvar_point_count',qfield='A_cnts')
        parse_string_start(info,query,'curve_point_count',qfield='C_cnts',first_field='pt_cnt')
        parse_abvar_decomp(info,query,'decomposition',qfield='decomp',av_stats=AbvarFqStats())
        parse_nf_string(info,query,'number_field',qfield='nf')
        parse_galgrp(info,query,qfield='gal')
    except ValueError:
        return search_input_error(info, bread)

    info['query'] = query
    count = parse_count(info, 50)
    start = parse_start(info)

    cursor = db().find(query)
    nres = cursor.count()
    if start >= nres:
        start -= (1 + (start - nres) / count) * count
    if start < 0:
        start = 0


    res = cursor.sort([('sort', ASCENDING)]).skip(start).limit(count)
    res = list(res)
    info['abvars'] = [AbvarFq_isoclass(x) for x in res]
    info['number'] = nres
    info['start'] = start
    info['count'] = count
    info['more'] = int(start + count < nres)
    if nres == 1:
        info['report'] = 'unique match'
    elif nres == 0:
        info['report'] = 'no matches'
    elif 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
    t = 'Abelian Variety search results'
    return render_template("abvarfq-search-results.html", info=info, credit=abvarfq_credit, bread=bread, title=t)
Пример #5
0
    return send_file(strIO,
                     attachment_filename=filename,
                     as_attachment=True,
                     add_etags=False)


@search_wrap(
    template="abvarfq-search-results.html",
    table=db.av_fqisog,
    title='Abelian Variety Search Results',
    err_title='Abelian Variety Search Input Error',
    shortcuts={
        'jump': lambda info: by_label(info.get('label', '')),
        'download': download_search
    },
    postprocess=lambda res, info, query: [AbvarFq_isoclass(x) for x in res],
    bread=lambda: get_bread(('Search Results', ' ')),
    credit=lambda: abvarfq_credit)
def abelian_variety_search(info, query):
    parse_ints(info, query, 'q', name='base field')
    parse_ints(info, query, 'g', name='dimension')
    if 'simple' in info:
        if info['simple'] == 'yes':
            query['is_simp'] = True
        elif info['simple'] == 'no':
            query['is_simp'] = False
    if 'primitive' in info:
        if info['primitive'] == 'yes':
            query['is_prim'] = True
        elif info['primitive'] == 'no':
            query['is_prim'] = False