Path: blob/main/scripts/hecke_algebras/hecke_algebras_l_adic.py
1128 views
# -*- coding: utf-8 -*-1r""" Import Hecke algebras.23Note: This code can be run on all files in any order. Even if you4rerun this code on previously entered files, it should have no affect.5This code checks if the entry exists, if so returns that and updates6with new information. If the entry does not exist then it creates it7and returns that.89"""1011import sys12import re13import json14import os15import gzip1617from lmfdb.base import getDBConnection1819C= getDBConnection()20import yaml21pw_dict = yaml.load(open(os.path.join(os.getcwd(), "passwords.yaml")))22username = pw_dict['data']['username']23password = pw_dict['data']['password']24C['hecke_algebras'].authenticate('editor', password)25hecke_orb_l = C['hecke_algebras'].hecke_algebras_l_adic2627saving = True2829def sd(f):30for k in f.keys():31print('%s ---> %s'%(k, f[k]))3233def makels(li):34li2 = [str(x) for x in li]35return ','.join(li2)3637def string2list(s):38s = str(s)39if s=='': return []40return [int(a) for a in s.split(',')]41424344# The following create_index command checks if there is an index on45# label, dimension, determinant and level.4647hecke_orb_l.create_index('level')48hecke_orb_l.create_index('weight')49hecke_orb_l.create_index('ell')5051print("finished indices")525354## Main importing function5556def do_import(ll):57level,weight,orbit_label,ell,index,idempotent,gen_l,num_gen_l,rel_l,num_charpoly,charpoly_ql= ll58mykeys = ['level','weight','orbit_label','ell','index','idempotent','gen_l','num_gen_l','rel_l','num_charpoly_ql','charpoly_ql']59data = {}60for j in range(len(mykeys)):61data[mykeys[j]] = ll[j]6263label=".".join([str(data['orbit_label']),str(data['ell']), str(data['index'])])64data['label_l'] = label6566alg_orb_l = hecke_orb_l.find_one({'label_l': label})6768if alg_orb_l is None:69print("new l adic information")70alg_orb_l = data71else:72print("algebra in the database")73alg_orb_l.update(data)74if saving:75hecke_orb_l.update({'label_l': label} , {"$set": alg_orb_l}, upsert=True)76777879# Loop over files8081for path in sys.argv[1:]:82print(path)83filename = os.path.basename(path)84fn = gzip.open(path) if filename[-3:] == '.gz' else open(path)85for line in fn.readlines():86line.strip()87if re.match(r'\S',line):88l = json.loads(line)89do_import(l)909192