|
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)}") |