示例#1
0
def saveResults(jobID, cell, pos, magmom, e0, b, bFit, xc, t, nIter):
    result = BulkResult(
        jobID, cell, pos, magmom, e0, b, bFit, xc, t, nIter
    )  #lattice constants determined downstream, depending on structure'
    if rank() == 0:
        insertObject(result)
        with open("result.json", "w") as f:
            print >> f, result.toJSON()
        updateStatus(jobID, 'running', 'completed')
示例#2
0
def archiveFizzled():
    updateFizzled()
    fizzled = [lpadIDjob(x) for x in getStatus("FIZZLED")]
    for f in fizzled:
        err = f.err()
        if err is None:
            updateDB('error', 'jobid', f.jobid, 'TIMEOUT', None, 'job')
            updateStatus(f.jobid, 'fizzled', 'archived')
            lpad.archive_wf(f.id)

        elif any([x in err for x in archiveErrors]):
            updateDB('error', 'jobid', f.jobid, err, None, 'job')
            updateStatus(f.jobid, 'fizzled', 'archived')
            lpad.archive_wf(f.id)
示例#3
0
def auth(sid, data):
    # decrypting data
    keys = db.getKeys()
    data['status'] = func.decrypt(keys['privKey'], unhexlify(data['status']))
    data['time'] = func.decrypt(keys['privKey'], unhexlify(data['time']))

    # update status
    db.updateStatus(data['devId'], data['status'])

    # encrypting data
    deviceInfo = db.getDeviceInfo(str(data['devId']))
    data['status'] = hexlify(
        func.encrypt(str(deviceInfo['pubKey']), data['status']))
    data['time'] = hexlify(
        func.encrypt(str(deviceInfo['pubKey']), data['time']))

    sio.emit(str(data['devId']), data)
示例#4
0
    def submit(self):
        from fireworks import LaunchPad, Firework, Workflow
        from standardScripts import RelaxSurface, GetSurfaceXCcontribs, SaveSurfResults

        launchpad = LaunchPad(host='suncatls2.slac.stanford.edu',
                              name='krisbrown',
                              username='******',
                              password='******')

        names = [
            x + '_%d' % self.ID for x in
            ['RelaxSurface', 'GetSurfaceXCcontribs', 'SaveSurfaceResults']
        ]

        clusters = self.allocate()
        timestamp = '_' + datetime.now().strftime('%Y_%m_%d_%H_%M')

        fw1 = Firework(
            [RelaxSurface()],
            name=names[0],
            spec={
                "jobID": self.ID,
                '_fworker': clusters[0].fworker,
                "_pass_job_info": True,
                "_files_out": {
                    "fw1": "inp.gpw"
                },
                "_queueadapter":
                clusters[0].qfunc(self.guessTime('relaxsurface')),
                "_launch_dir": clusters[0].launchdir + names[0] + timestamp
            })

        fw2 = Firework(
            [GetSurfaceXCcontribs()],
            name=names[1],
            parents=[fw1],
            spec={
                "jobID":
                self.ID,
                '_fworker':
                clusters[1].fworker,
                "_pass_job_info":
                True,
                "_files_in": {
                    "fw1": "inp.gpw"
                },
                "_queueadapter":
                clusters[1].qfunc(self.guessTime('getsurfacexccontribs')),
                "_launch_dir":
                clusters[1].launchdir + names[1] + timestamp
            })

        fw3 = Firework(
            [SaveSurfResults()],
            name=names[2],
            parents=[fw1, fw2],
            spec={
                "jobID":
                self.ID,
                '_fworker':
                clusters[2].fworker  #MUST be sherlock
                ,
                "_queueadapter":
                clusters[2].qfunc(self.guessTime('savesurfaceresults')),
                "_launch_dir":
                clusters[2].launchdir + names[2] + timestamp
            })

        wflow = Workflow([fw1, fw2, fw3],
                         name='SurfaceRelaxation_%d' % self.ID)

        print "Submitting job with ID = %d" % self.ID

        updateStatus('surfacejob', self.ID, 'initialized', 'queued')

        launchpad.add_wf(wflow)
示例#5
0
import os
from db import updateStatus, query1, updateDB

root = '/scratch/users/ksb/db/jobs'

for d in os.listdir(root):
    try:
        print 'trying ', d
        with open('/scratch/users/ksb/db/jobs/' + d + '/myjob.err', 'r') as f:
            err = f.read()
            if 'TIME LIMIT' in err:
                if query1('bulkjob', 'status', 'id', d) is not 'failed':
                    updateStatus(int(d), 'running', 'timeout')
            elif 'CANCELLED AT' in err:
                updateDB('bulkjob', 'status', 'id', int(d), 'cancelled')

    except IOError:
        pass
示例#6
0
def updateFizzled():
    for fw in [lpadIDjob(x) for x in getStatus('FIZZLED')]:
        if query1('status', 'jobid', fw.jobid, 'job') != 'fizzled':
            updateStatus(fw.jobid, 'queued', 'fizzled')