def get_status_file()

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)