Commit 11a55f81 authored by Jan Kiene's avatar Jan Kiene
Browse files

add collection script for BS1534 tests

parent 29caa04c
Loading
Loading
Loading
Loading
Loading
+70 −0
Original line number Diff line number Diff line
import argparse
import glob
import shutil
import re
from pathlib import Path


PRELIMINARY_SUBSTRINGS = ["s13", "s14", "s15", "s16"]
PRELIMINARY_PATTERN = re.compile(r"dm[0-9]*a[1-9](s[0-9]*)\.c[0-1][0-9]\.wav")


def repo_root_dir() -> Path:
    this_dir = Path(__file__).parent
    return this_dir.parent.parent


def copy_final_items(verbose: bool = False):
    files_copied = 0

    for exp_dir in map(
        Path, glob.glob(str(repo_root_dir() / "experiments/characterization/BS1534-*/"))
    ):
        exp_dir = Path(exp_dir)

        final_dir = exp_dir / "proc_final"
        prelim_dir = final_dir / "preliminary"
        prelim_dir.mkdir(parents=True, exist_ok=True)

        files_copied = 0

        for proc_output in exp_dir.glob("proc_output*"):
            condition_dirs = proc_output.glob("c0?")
            for condition_dir in condition_dirs:
                target_dir = final_dir / condition_dir.name
                target_dir.mkdir(parents=True, exist_ok=True)

                for item in condition_dir.glob("*.wav"):
                    item_target = target_dir / item.name

                    m = re.search(PRELIMINARY_PATTERN, item.name)
                    assert m is not None

                    item_number_substr = m.groups()[0]
                    if item_number_substr in PRELIMINARY_SUBSTRINGS:
                        item_target = prelim_dir / item.name

                    print(
                        f"Copying {item.relative_to(Path.cwd())} to {item_target.relative_to(Path.cwd())}"
                    )

                    if item_target.is_file():
                        print(
                            f"WARNING: item {item_target.name} already exists in target dir, overwriting"
                        )

                    shutil.copy(item, item_target)
                    files_copied += 1

    print(f"Done. {files_copied} files copied.")


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Copy samples into proc_final/cXX directories for BS1534 experiments."
    )
    parser.add_argument("-v", "--verbose", action="store_true")

    parsed = parser.parse_args()

    copy_final_items(verbose=parsed.verbose)