Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AndrewVSutherland
GitHub Repository: AndrewVSutherland/lmfdb
Path: blob/main/scripts/galois_groups/import_gg_data.py
1127 views
1
#!/usr/local/bin/sage -python
2
# -*- coding: utf-8 -*-
3
import sys
4
#import os
5
import json
6
7
sys.path.append("../..")
8
from lmfdb import db
9
10
gr = db.gps_transitive
11
12
# moddecompuniq and pretty are added later if known
13
14
mykeys = ['ab', 'arith_equiv', 'auts', 'cyc', 'gapid', 'n', 'order', 'parity', 'prim', 'siblings', 'quotients', 'solv', 'subfields', 't', 'name', 'bound_siblings', 'bound_quotients', 'num_conj_classes', 'gens']
15
16
myfile = open(sys.argv[1])
17
18
outrecs=[]
19
20
def dosubs(ent):
21
lis = ent['subfields']
22
lis2 = [(j[0], j[1]) for j in lis]
23
diflis = list(set(lis2))
24
diflis.sort()
25
ans = [[[j[0], j[1]], lis2.count(j)] for j in diflis]
26
ent['subfields'] = ans
27
28
lis = ent['siblings']
29
lis2 = [(j[0], j[1]) for j in lis]
30
diflis = list(set(lis2))
31
diflis.sort()
32
ans = [[[j[0], j[1]], lis2.count(j)] for j in diflis]
33
ent['siblings'] = ans
34
35
lis = ent['quotients']
36
lis2 = [(j[0], j[1][0], j[1][1]) for j in lis]
37
diflis = list(set(lis2))
38
diflis.sort()
39
ans = [[j[0], [j[1], j[2]], lis2.count(j)] for j in diflis]
40
ent['quotients'] = ans
41
42
return(ent)
43
44
for l in myfile:
45
v= json.loads(l)
46
for dd in v:
47
for vals in dd:
48
data=dict(zip(mykeys, vals))
49
# need to fix parity
50
if data['parity'] == 0:
51
data['parity'] = -1
52
data['label'] = "%dT%d"%(data['n'], data['t'])
53
data['gapidfull'] = ""
54
if data['gapid']>0:
55
data['gapidfull'] = "[%d,%d]"%(data['order'],data['gapid'])
56
# no longer needed
57
# data = dosubs(data)
58
data['siblings'] = [[z[0],z[1][0]] for z in data['siblings']]
59
outrecs.append(data)
60
61
if len(outrecs)>0:
62
gr.insert_many(outrecs)
63
64
#for fld in ['ab', 'arith_equiv', 'auts', 'cyc', 'gapid', 'n', 'order', 'parity', 'prim', 'repns', 'resolve', 'solv', 'subs', 't']:
65
# if data[fld] != old[fld]:
66
# print "Mismatch (%d,%d) on %s: %s --- %s"%(data['n'],data['t'],fld, str(data[fld]), str(old[fld]))
67
68
69
70