# sorts jobs to process recent submissions and non-batch jobs first def priority(j): # return 1 * j.id from random import random f = 1 if random() > 0.5 else -1 if j.key == "7956546276189290": return -100000 if j.batch is not None: return 100000000 else: return f * j.id top_job = sorted(selected_hit_jobs, key=priority)[0] if not top_job in Session: top_job = Session.merge(j) # spacers may be deleted from the session in the interior of this loop for i, s in enumerate([s for s in top_job.spacers if s.score is None][:2]): if not s in Session: s = Session.merge(s) with transaction.manager: try: print "Computing hits for spacer: {0} (Job {1})".format(s.id, j.id) genome_db.compute_hits_for_spacer(s.id) except JobERR, e: print "excepted a job/spacer error on COMPUTE for job {0}".format(s.job.id, top_job) except SpacerERR, e: print "excepted a spacer error for spacer id {0}".format(s.id) def main():
proc.daemon=True proc.start() procs.append(proc) if len(selected_hit_jobs) > 0: with transaction.manager: def priority(j): from random import random f = 1 if random() > .5 else -1 if j.batch is not None: return 100000000 else: return f* j.id for i,j in enumerate(selected_hit_jobs): if not j in Session: selected_hit_jobs[i] = Session.merge(j) batched_jobs = [j for j in selected_hit_jobs if j.batch is not None] #sorts jobs to process recent submissions and non-batch jobs first top_jobs = sorted(selected_hit_jobs, key = priority)[:12] for top_job in top_jobs: if not top_job in Session: top_job = Session.merge(top_job) #spacers may be deleted from the session in the interior of this loop print "GENOME NAME: {0}".format(top_job.genome_name) print "SAVING ID INTO QUEUE", top_job.spacers[0] for i,s in enumerate([s for s in top_job.spacers if s.score is None][:2]): jobs_q.put({"genome_name":s.job.genome_name, "guide":s.guide,
) proc.daemon=True proc.start() procs.append(proc) top_job_id = [] if len(selected_hit_jobs) > 0: with transaction.manager: def priority(j): from random import random f = 1 if random() > .5 else -1 return f* j.id for i,j in enumerate(selected_hit_jobs): if not j in Session: selected_hit_jobs[i] = Session.merge(j) single_jobs = [j for j in selected_hit_jobs if j.batch is None] batched_jobs = [j for j in selected_hit_jobs if j.batch is not None] #sorts jobs to process recent submissions and non-batch jobs first single_jobs = sorted(single_jobs, key = priority) top_jobs = (single_jobs + batched_jobs)[:12] for top_job in top_jobs: if not top_job in Session: top_job = Session.merge(top_job) top_job_id.append(top_job.id) #spacers may be deleted from the session in the interior of this loop print "GENOME NAME: {0}".format(top_job.genome_name) print "SAVING ID INTO QUEUE", top_job.spacers[0] for i,s in enumerate([s for s in top_job.spacers if s.score is None][:2]):
] if len(selected_hit_jobs) > 0: batched_jobs = [j for j in selected_hit_jobs if j.batch is not None] #sorts jobs to process recent submissions and non-batch jobs first def priority(j): #return 1 * j.id from random import random f = 1 if random() > .5 else -1 if j.key == "7956546276189290": return -100000 if j.batch is not None: return 100000000 else: return f * j.id top_job = sorted(selected_hit_jobs, key=priority)[0] if not top_job in Session: top_job = Session.merge(j) #spacers may be deleted from the session in the interior of this loop for i, s in enumerate([s for s in top_job.spacers if s.score is None][:2]): if not s in Session: s = Session.merge(s) with transaction.manager: try: print "Computing hits for spacer: {0} (Job {1})".format( s.id, j.id) genome_db.compute_hits_for_spacer(s.id) except JobERR, e: print "excepted a job/spacer error on COMPUTE for job {0}".format( s.job.id, top_job) except SpacerERR, e: print "excepted a spacer error for spacer id {0}".format( s.id)
if len(selected_hit_jobs) > 0: batched_jobs = [j for j in selected_hit_jobs if j.batch is not None] #sorts jobs to process recent submissions and non-batch jobs first def priority(j): #return 1 * j.id from random import random f = 1 if random() > .5 else -1 if j.key == "7956546276189290" : return -100000 if j.batch is not None: return 100000000 else: return f* j.id top_job = sorted(selected_hit_jobs, key = priority)[0] if not top_job in Session: top_job = Session.merge(j) #spacers may be deleted from the session in the interior of this loop for i,s in enumerate([s for s in top_job.spacers if s.score is None][:2]): if not s in Session: s = Session.merge(s) with transaction.manager: try: print "Computing hits for spacer: {0} (Job {1})".format(s.id, j.id) genome_db.compute_hits_for_spacer(s.id) except JobERR, e: print "excepted a job/spacer error on COMPUTE for job {0}".format(s.job.id, top_job) except SpacerERR, e: print "excepted a spacer error for spacer id {0}".format(s.id) def main(): parser = argparse.ArgumentParser() parser.add_argument('--reset','-r',dest="reset",