Path: blob/main/scripts/hmf/hmf-extra-data-dump.sage
1448 views
1'''2script written just for use at June 2017 LMFDB workshop at Warwick. Output is text files including:3label, AL eigenvalues, AL fixed, base change, CM4added in extra bits (a_pp for bad primes)5'''6from pymongo.mongo_client import MongoClient7import pymongo8C = MongoClient(port=int(37010))9C['admin'].authenticate('lmfdb','lmfdb') # for read access.10hmfs = C.hmfs11forms = hmfs.forms12fields = C.numberfields.fields13hmffields = hmfs.fields14fieldlabels = hmffields.distinct('label')1516def clean(A):17st = str(A)18return st.replace(' ','').replace('u\'','').replace('\'','')1920for Flabel in fieldlabels:21# sample Flabel 4.4.16448.222wanted_keys = ['label', 'level_ideal','is_CM','is_base_change','AL_eigenvalues','AL_eigenvalues_fixed']23degree = Flabel.split('.')[0]24print('Working on {} forms.'.format(Flabel))25with open('/Users/d_yasaki/Desktop/data/'+Flabel+'-extra-plus.txt','w') as outfile:26query = {'field_label':Flabel}27Fquery = {'label':Flabel}28coeffs = '['+fields.find_one(Fquery)['coeffs']+']'29K = NumberField(PolynomialRing(QQ,'x')(sage_eval(coeffs)),'w')30vars = {'w':K.0}31degree = Flabel.split('.')[0]32assert degree == str(K.degree())33res = forms.find(query).sort([('level_norm', pymongo.ASCENDING), ('level_label', pymongo.ASCENDING), ('label_nsuffix', pymongo.ASCENDING)])34res_labels = [f['label'] for f in res]35assert len(res_labels) > 036for flabel in res_labels:37f = forms.find_one({'label':flabel})38for a in wanted_keys:39if not a in f.keys():40f[a] = 'MISSING'41Ndata = sage_eval(f['level_ideal'].replace('^','**'), locals = vars)42N = K.ideal(Ndata)43if len(f['AL_eigenvalues']) > 0 and not f['AL_eigenvalues'] == 'MISSING':44ALdata_list = [[sage_eval(b.replace('^','**'), locals = vars) for b in a] for a in f['AL_eigenvalues']]45else:46ALdata_list = []47change_ap = []48for ALdata in ALdata_list:49pp = K.ideal(ALdata[0])50if N.valuation(pp) == 1:51# Need to change a_pp !!!52# should be (-1)*AL_eval53change_ap.append([ALdata[0],-ALdata[1]])54alldata = [clean(f[a]) for a in wanted_keys] + [clean(a) for a in change_ap]55newdata = ':'.join(alldata)56print(flabel)57outfile.write(newdata + '\n')585960