"""
Run Facemap SVD decoding for one VBN session.

The Facemap ``*_proc.hdf5`` files and validated video/timestamp path table are
external inputs to this step. This script only reproduces the decoding output
consumed by Figure 3.
"""

import argparse
from pathlib import Path

import _bootstrap  # noqa: F401
import decoding_utils as du


def build_parser() -> argparse.ArgumentParser:
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("--session-id", type=int, required=True)
    parser.add_argument("--stim-table-file", type=Path, required=True)
    parser.add_argument("--video-table-file", type=Path, required=True)
    parser.add_argument("--facemap-data-dir", type=Path, required=True)
    parser.add_argument("--output-dir", type=Path, required=True)
    parser.add_argument(
        "--no-baseline-subtract",
        action="store_true",
        help="Disable the original 100 ms pre-flash baseline subtraction.",
    )
    return parser


def main() -> None:
    args = build_parser().parse_args()
    du.decodeFromFacemap(
        args.session_id,
        basesub=not args.no_baseline_subtract,
        stim_table_file=args.stim_table_file,
        video_table_file=args.video_table_file,
        facemap_data_dir=args.facemap_data_dir,
        output_dir=args.output_dir,
    )


if __name__ == "__main__":
    main()
