in SketchExperiment.py [0:0]
def executeJob(job):
job.workload.prepare()
job.oracle.prepare()
print(f"Running {job.workload.getID()}, repetition {job.repetition}, on sketch {job.sketch_name} {str(job.sketch_kwargs)} ")
query_iter = job.workload.genQueries() # XXX just workload
q = next(query_iter)
sketch = job.sketch_fun(seed=job.repetition, **job.sketch_kwargs)
sketch.name = job.sketch_name
results = ResultAccumulator(save_answers=job.options.save_answers)
start_time = time.perf_counter()
for i, x in enumerate(job.workload.genData()):
sketch.add(x)
while q and i == q.data_idx:
answer = sketch.query(q.query, q.parameters)
error = job.oracle.eval_sketch_answer(q.qid, answer)
truth = job.oracle.getAnswer(q.qid)
results.addResult(
error=error,
answer=answer,
truth=truth,
query=q,
sketch=sketch,
workload=job.workload)
q = next(query_iter, None)
run_time = time.perf_counter() - start_time
results.addTiming(run_time=run_time, sketch=sketch, workload=job.workload)
return results