Path: blob/main/scripts/hecke_algebras/hecke_algebras_mod_l_data.py
1128 views
# -*- coding: utf-8 -*-1""" Complete the entries for l adic orbits of Hecke algebra adding structure data if needed.23Author: Samuele Anni4"""56import os78from pymongo.mongo_client import MongoClient9C= MongoClient(port=37010)10import yaml11pw_dict = yaml.load(open(os.path.join(os.getcwd(), "passwords.yaml")))12username = pw_dict['data']['username']13password = pw_dict['data']['password']14C['hecke_algebras'].authenticate('editor', password)15hecke_orb_l = C['hecke_algebras'].hecke_algebras_l_adic16171819def do_import(ll):20field,structure,properties,operators= ll21mykeys = ['field','structure','properties','operators']22data = {}23for j in range(len(mykeys)):24data[mykeys[j]] = ll[j]25for i in [0,1,3]:26data['field'][i]=int(data['field'][i])27data['field'][2]=str(data['field'][2])28for i in [0,1]:29data['structure'][i]=int(data['structure'][i])30for i in [2,3]:31data['structure'][i]=str(data['structure'][i])32data['properties'][0]=[int(i) for i in data['properties'][0]]33data['properties'][1]=int(data['properties'][1])34data['operators']=[[int(i) for i in j] for j in data['operators']]35return data363738def check_mod_l_data(orbit_label, index, ell, ll, fix=False):39query = {}40query['orbit_label'] = str(orbit_label)41query['ell'] = int(ell)42query['index'] = int(index)4344orb_set = hecke_orb_l.find(query)45print("%s Hecke orbits to examine with orbit label %s for ell = %s" % (orb_set.count(), orbit_label, ell))46if orb_set.count() == 0:47return None48print("Checking whether the mod %s data is stored..." %ell)49for o in orb_set:50print("Testing orbit index %s" % o['index'])51if 'structure' not in o.keys():52print("NOT stored")53if fix:54d=do_import(ll)55print(d)56hecke_orb_l.update({"_id": o["_id"]}, {"$set":{'field': d['field'], 'structure': d['structure'],'properties': d['properties'], 'operators': d['operators']}}, upsert=True)57print("Fixed orbit label %s index %s" % (orbit_label, o['index']))58else:59print("Already stored")606162