Path: blob/main/scripts/artin_representations/old-import_art_nf.py
1128 views
#!/usr/local/bin/sage -python12import sys, os3import re4import json5from sage.all import ZZ67# find lmfdb and the top of the tree8mypath = os.path.realpath(__file__)9while os.path.basename(mypath) != 'lmfdb':10mypath = os.path.dirname(mypath)11# now move up one more time...12sys.path.append(mypath)1314from lmfdb import db1516rep=db.artin_reps17nfgal=db.artin_field_data1819count = 020old = 02122#utilities2324# turn poly coefs into a string25def makels(li):26li2 = [str(x) for x in li]27return ','.join(li2)2829# turn a conductor into a sortable string30# this uses length 4 prefix31def make_cond_key(D):32D1 = int(D.log(10))33return '%04d%s'%(D1,str(D))3435maxint = (2**63)-13637def int_or_string(a):38if abs(a)< maxint:39return a40return str(a)4142def fix_local_factors(gconj):43gconj['LocalFactors'] = [ [ [int_or_string(a) for a in b ] for b in c] for c in gconj['LocalFactors']]44return gconj4546# Main programs4748outrecs = []4950def artrepload(l):51global count52global old53global outrecs54ar1 = rep.lucky({'Baselabel': l['Baselabel']})55if ar1 is not None:56old += 157if (count+old) % 100==0:58print("%s new, %s old" %(str(count),str(old)))59return60l['Conductor'] = ZZ(l['Conductor'])61l['GaloisConjugates'] = [fix_local_factors(z) for z in l['GaloisConjugates']]62# Extract containing representation from the label63cont = l['Baselabel'].split('.')[2]64l['Container'] = cont65for s in ['BadPrimes', 'HardPrimes']:66l[s] = [int(z) for z in l[s]]67l['Galn'] = l['Galois_nt'][0]68l['Galt'] = l['Galois_nt'][1]69del l['Galois_nt']70l['GalConjSigns'] = [z['Sign'] for z in l['GaloisConjugates']]71#print str(l)72count +=173outrecs.append(l)74if (count+old) % 100==0:75print("%s new, %s old" %(str(count),str(old)))76return7778def nfgalload(l):79global count80global old81global outrecs82ff = nfgal.lucky({'Polynomial': l['Polynomial']})83if ff is not None:84old += 185if (count+old) % 100==0:86print("%s new, %s old" %(str(count),str(old)))87return8889artreps=l['ArtinReps']90artreps=[{'Baselabel': z[0][0], 'GalConj': z[0][1], 'CharacterField': z[1],91'Character': z[2]} for z in artreps]92l['ArtinReps']=artreps93l['Size'] = int(l['Size'])94outrecs.append(l)95count +=196if (count+old) % 100==0:97print("%s new, %s old" %(str(count),str(old)))98return99100101# processing file names102for path in sys.argv[1:]:103print(path)104count = 0105old = 0106filename = os.path.basename(path)107fn = open(path)108if re.match(r'^nfgal', filename):109case = 'nfgal'110if re.match(r'^art', filename):111case = 'art rep'112for line in fn.readlines():113line = line.strip()114if re.match(r'\S',line):115l = json.loads(line)116if case == 'nfgal':117nfgalload(l)118if case == 'art rep':119artrepload(l)120if outrecs:121if case == 'nfgal':122nfgal.insert_many(outrecs)123if case == 'art rep':124rep.insert_many(outrecs)125print("%s new, %s old" %(str(count),str(old)))126fn.close()127128129130