def fix(): # initialize databases module_dir = os.path.dirname(os.path.abspath(__file__)) snl_f = os.path.join(module_dir, 'snl.yaml') snldb = SNLMongoAdapter.from_file(snl_f) snl = snldb.snl snlgroups = snldb.snlgroups tasks_f = os.path.join(module_dir, 'tasks.yaml') with open(tasks_f) as f2: task_creds = yaml.load(f2) mc = MongoClient(task_creds['host'], task_creds['port']) db = mc[task_creds['database']] db.authenticate(task_creds['admin_user'], task_creds['admin_password']) tasks = db['tasks'] tasks_f = os.path.join(module_dir, 'tasks.yaml') with open(tasks_f) as f2: task_creds = yaml.load(f2) mc = MongoClient(task_creds['host'], task_creds['port']) db = mc[task_creds['database']] db.authenticate(task_creds['admin_user'], task_creds['admin_password']) tasks = db['tasks'] lp_f = os.path.join(module_dir, 'my_launchpad.yaml') lpdb = LaunchPad.from_file(lp_f) fws = lpdb.fireworks launches = lpdb.launches sb_f = os.path.join(module_dir, 'submission.yaml') sbdb = SubmissionMongoAdapter.from_file(sb_f) submissions = sbdb.jobs bad_crystal_ids = [] crystals_file = os.path.join(module_dir, 'bad_crystals.txt') with open(crystals_file) as f: for line in f: bad_crystal_ids.append(int(line.strip())) for c_id in bad_crystal_ids: if c_id == 100892 or c_id == 100202: print 'SKIP' else: # FIX SNL for s in snl.find({'about._materialsproject.deprecated.crystal_id_deprecated': c_id}, {'snl_id': 1}): snl.update({'snl_id': s['snl_id']}, {'$pushAll': {"about.remarks": ['DEPRECATED', 'SEVERE BUG IN ICSD CONVERSION']}}) # FIX SNLGROUPS for s in snlgroups.find({'canonical_snl.about._materialsproject.deprecated.crystal_id_deprecated': c_id}, {'snlgroup_id': 1}): snlgroups.update({'snlgroup_id': s['snlgroup_id']}, {'$pushAll': {"canonical_snl.about.remarks": ['DEPRECATED', 'SEVERE BUG IN ICSD CONVERSION']}}) # FIX FWs pt 1 for s in fws.find({'spec.mpsnl.about._materialsproject.deprecated.crystal_id_deprecated': c_id}, {'fw_id': 1}): fws.update({'fw_id': s['fw_id']}, {'$pushAll': {"spec.mpsnl.about.remarks": ['DEPRECATED', 'SEVERE BUG IN ICSD CONVERSION']}}) # FIX FWs pt 2 for s in fws.find({'spec.force_mpsnl.about._materialsproject.deprecated.crystal_id_deprecated': c_id}, {'fw_id': 1}): fws.update({'fw_id': s['fw_id']}, {'$pushAll': {"spec.force_mpsnl.about.remarks": ['DEPRECATED', 'SEVERE BUG IN ICSD CONVERSION']}}) # FIX Launches for s in launches.find({'action.update_spec.mpsnl.about._materialsproject.deprecated.crystal_id_deprecated': c_id}, {'launch_id': 1}): launches.update({'launch_id': s['launch_id']}, {'$pushAll': {"action.update_spec.mpsnl.about.remarks": ['DEPRECATED', 'SEVERE BUG IN ICSD CONVERSION']}}) # FIX TASKS for s in tasks.find({'snl.about._materialsproject.deprecated.crystal_id_deprecated': c_id}, {'task_id': 1}): tasks.update({'task_id': s['task_id']}, {'$pushAll': {"snl.about.remarks": ['DEPRECATED', 'SEVERE BUG IN ICSD CONVERSION']}}) tasks.update({'task_id': s['task_id']}, {'$pushAll': {"snl_final.about.remarks": ['DEPRECATED', 'SEVERE BUG IN ICSD CONVERSION']}}) # FIX SUBMISSIONS for s in submissions.find({'about._materialsproject.deprecated.crystal_id_deprecated': c_id}, {'submission_id': 1}): submissions.update({'submission_id': s['submission_id']}, {'$pushAll': {"about.remarks": ['DEPRECATED', 'SEVERE BUG IN ICSD CONVERSION']}}) print 'FIXED', c_id
import json import os from fireworks.core.launchpad import LaunchPad from mpworks.submission.submission_mongo import SubmissionMongoAdapter from pymatgen.matproj.snl import StructureNL __author__ = 'Anubhav Jain' __copyright__ = 'Copyright 2014, The Materials Project' __version__ = '0.1' __maintainer__ = 'Anubhav Jain' __email__ = '*****@*****.**' __date__ = 'Jan 24, 2014' if __name__ == "__main__": sma = SubmissionMongoAdapter.from_file('submission.yaml') module_dir = os.path.dirname(os.path.abspath(__file__)) lp_f = os.path.join(module_dir, 'my_launchpad.yaml') lpdb = LaunchPad.from_file(lp_f) for s in os.listdir(os.path.join(module_dir, "snls")): if '.json' in s: print 'submitting', s with open(os.path.join(module_dir, "snls",s)) as f: snl = StructureNL.from_dict(json.load(f)) sma.submit_snl(snl, '*****@*****.**', {"priority": 10}) print 'DONE submitting', s print 'DONE!'