| import os | |
| import argparse | |
| from pathlib import Path | |
| from shutil import copyfile, copytree | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--pr") | |
| parser.add_argument("--sid") | |
| parser.add_argument("--ks") | |
| parser.add_argument("--ic") | |
| parser.add_argument("--er_fold1") | |
| parser.add_argument("--er_fold2") | |
| parser.add_argument("--er_fold3") | |
| parser.add_argument("--er_fold4") | |
| parser.add_argument("--er_fold5") | |
| parser.add_argument("--asr_no_lm") | |
| parser.add_argument("--asr_with_lm") | |
| parser.add_argument("--qbe") | |
| parser.add_argument("--sf") | |
| parser.add_argument("--sv") | |
| parser.add_argument("--sd") | |
| parser.add_argument("--se") | |
| parser.add_argument("--st") | |
| parser.add_argument("--ss") | |
| parser.add_argument("--output_dir", required=True) | |
| args = parser.parse_args() | |
| output_dir = Path(args.output_dir) | |
| predict_dir = output_dir / "predict" | |
| output_dir.mkdir(exist_ok=True) | |
| predict_dir.mkdir(exist_ok=True) | |
| processed_tasks = [] | |
| if args.pr is not None: | |
| task_name = "pr_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.pr) | |
| src = expdir / "test-hyp.ark" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.ark" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.sid is not None: | |
| task_name = "sid_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.sid) | |
| src = expdir / "test_predict.txt" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.txt" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.ks is not None: | |
| task_name = "ks_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.ks) | |
| src = expdir / "test_predict.txt" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.txt" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.ic is not None: | |
| task_name = "ic_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.ic) | |
| src = expdir / "test_predict.csv" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.csv" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| er_processed = [] | |
| for foldid in range(1, 6): | |
| expdir = getattr(args, f"er_fold{foldid}") | |
| if expdir is not None: | |
| task_name = f"er_fold{foldid}_public" | |
| processed_tasks.append(task_name) | |
| er_processed.append(task_name) | |
| expdir = Path(expdir) | |
| src = expdir / f"test_fold{foldid}_predict.txt" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.txt" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if len(er_processed) > 0 and len(er_processed) < 5: | |
| print(f"[Warning] - {er_processed} are included but only in {len(er_processed)} folds. er_public will NOT be scored. er_public will be scored only when all the 5 folds are submitted.") | |
| if args.asr_no_lm is not None: | |
| task_name = "asr_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.asr_no_lm) | |
| src = expdir / f"test-clean-noLM-hyp.ark" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.ark" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.asr_with_lm is not None: | |
| task_name = "asr_lm_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.asr_with_lm) | |
| src = expdir / f"test-clean-LM-hyp.ark" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.ark" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.qbe is not None: | |
| task_name = "qbe_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.qbe) | |
| src = expdir / f"benchmark.stdlist.xml" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "benchmark.stdlist.xml" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.sf is not None: | |
| task_name = "sf_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.sf) | |
| src = expdir / "test-hyp.ark" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.ark" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.sv is not None: | |
| task_name = "sv_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.sv) | |
| src = (expdir / "test_predict.txt").resolve() | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.txt" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.sd is not None: | |
| task_name = "sd_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.sd) | |
| src_dir = expdir / "scoring" / "predictions" | |
| assert src_dir.is_dir(), f"{src_dir} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_predict_dir = tgt_dir / "scoring" / "predictions" | |
| copytree(src_dir, tgt_predict_dir, dirs_exist_ok=True) | |
| upstream_rate = expdir / "frame_shift" | |
| if upstream_rate.is_file(): | |
| copyfile(upstream_rate, tgt_dir / "frame_shift") | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.se is not None: | |
| task_name = "se_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.se) | |
| src = (expdir / "test_metrics.txt").resolve() | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "metrics.txt" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.ss is not None: | |
| task_name = "ss_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.ss) | |
| src = (expdir / "test_metrics.txt").resolve() | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "metrics.txt" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| if args.st is not None: | |
| task_name = "st_public" | |
| processed_tasks.append(task_name) | |
| expdir = Path(args.st) | |
| src = expdir / "output-st-test.tsv" | |
| assert src.is_file(), f"{src} not found" | |
| tgt_dir = predict_dir / task_name | |
| tgt_dir.mkdir(exist_ok=True) | |
| tgt = tgt_dir / "predict.tsv" | |
| copyfile(src, tgt) | |
| print(f"{task_name} is included in the submission and will be scored after submitted.") | |
| print("Zipping predictions for submission...") | |
| os.chdir(output_dir) | |
| os.system(f"zip -q -r predict.zip predict/") | |
| print(f"Process {len(processed_tasks)} tasks: {' '.join(processed_tasks)}") |