in domainbed_measures/write_job_status_file.py [0:0]
def get_status_file(sweep_dir, output_txt):
out_lines = []
num_done = 0
total = 0
failed = 0
for jobname in tqdm(os.listdir(sweep_dir)):
if not os.path.isdir(os.path.join(sweep_dir, jobname)):
continue
out_txt = os.path.join(sweep_dir, jobname, 'out.txt')
if not os.path.exists(out_txt):
print(out_txt + "does not exist")
continue
with open(out_txt, 'r') as f:
at = f.readlines()
dataset = at[12].split(":")[-1].lstrip().rstrip()
if os.path.exists(os.path.join(sweep_dir, jobname, 'results.jsonl')):
total += 1
with jsonlines.open(
os.path.join(sweep_dir, jobname, "results.jsonl"),
'r') as reader:
for obj in reader:
algorithm = obj['args']['algorithm']
dataset = obj['args']['dataset']
break
if os.path.exists(os.path.join(sweep_dir, jobname, 'done')):
with open(os.path.join(sweep_dir, jobname, 'done'), 'r') as f:
done = f.readline()
num_done += int(done == 'done')
out_lines.append(
"%s %s %s %s\n" %
(os.path.join(sweep_dir, jobname), algorithm, dataset, done))
else:
failed += 1
print("{%d/%d} jobs are done, {%d} failed" % (num_done, total, failed))
with open(output_txt, 'w') as f:
f.writelines(out_lines)