Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AndrewVSutherland
GitHub Repository: AndrewVSutherland/lmfdb
Path: blob/main/scripts/hecke_algebras/hecke_algebras_single_orbit_data.py
1128 views
1
# -*- coding: utf-8 -*-
2
""" Complete the entries for orbits of a given Hecke algebra.
3
4
Author: Samuele Anni
5
"""
6
7
import os
8
9
from pymongo.mongo_client import MongoClient
10
C= MongoClient(port=37010)
11
import yaml
12
pw_dict = yaml.load(open(os.path.join(os.getcwd(), "passwords.yaml")))
13
username = pw_dict['data']['username']
14
password = pw_dict['data']['password']
15
C['hecke_algebras'].authenticate('editor', password)
16
hecke_orb = C['hecke_algebras'].hecke_algebras_orbits
17
18
19
def do_import(ll):
20
Zbasis,discriminant,disc_fac,Qbasis,Qalg_gen=ll
21
mykeys = ['Zbasis','discriminant','disc_fac','Qbasis','Qalg_gen']
22
data = {}
23
for j in range(len(mykeys)):
24
data[mykeys[j]] = ll[j]
25
data['Zbasis']=[[str(i) for i in j] for j in data['Zbasis']]
26
data['discriminant']=str(data['discriminant'])
27
data['disc_fac']=[[str(i) for i in j] for j in data['disc_fac']]
28
data['Qbasis']=[int(i) for i in data['Qbasis']]
29
data['Qalg_gen']=[int(i) for i in data['Qalg_gen']]
30
return data
31
32
33
def check_orbit_data(orbit_label, ll, fix=False):
34
query = {}
35
query['orbit_label'] = str(orbit_label)
36
37
if hecke_orb.find(query).count()>1:
38
print("Check the orbit %s: multiple label assigned" %orbit_label)
39
else:
40
orb = hecke_orb.find_one(query)
41
print("Hecke orbit with label %s" % (orbit_label))
42
if orb is None:
43
print("No orbit")
44
return None
45
print("Checking whether the data is stored..." )
46
if 'Zbasis' not in orb.keys():
47
print("NOT stored")
48
if fix:
49
d = do_import(ll)
50
hecke_orb.update({"_id": orb["_id"]}, {"$set":{'Zbasis':d['Zbasis'],'discriminant':d['discriminant'],'disc_fac':d['disc_fac'],'Qbasis':d['Qbasis'],'Qalg_gen':d['Qalg_gen']}}, upsert=True)
51
print("Fixed orbit label %s" % (orbit_label))
52
else:
53
print("Already stored")
54
55