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