Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import argparse | |
| import subprocess | |
| import sys | |
| from pathlib import Path | |
| from typing import List | |
| REPO_ROOT = Path(__file__).resolve().parents[2] | |
| def parse_args() -> argparse.Namespace: | |
| parser = argparse.ArgumentParser(description="Run chair-only Visual Genome data pipeline.") | |
| parser.add_argument( | |
| "--config", | |
| type=Path, | |
| default=REPO_ROOT / "configs" / "dataset.yaml", | |
| help="Path to dataset config yaml.", | |
| ) | |
| parser.add_argument( | |
| "--dataset-name", | |
| type=str, | |
| default="visual_genome", | |
| help="Dataset selector. Only visual_genome is supported in this version.", | |
| ) | |
| parser.add_argument("--download-only", action="store_true") | |
| parser.add_argument("--extract-only", action="store_true") | |
| parser.add_argument("--process-only", action="store_true") | |
| parser.add_argument("--split-only", action="store_true") | |
| parser.add_argument("--all", action="store_true", help="Run full pipeline (default behavior).") | |
| return parser.parse_args() | |
| def run_step(script_path: Path, config_path: Path) -> None: | |
| cmd: List[str] = [sys.executable, str(script_path), "--config", str(config_path)] | |
| print(f"[run] {' '.join(cmd)}") | |
| subprocess.run(cmd, check=True, cwd=REPO_ROOT) | |
| def main() -> None: | |
| args = parse_args() | |
| if args.dataset_name != "visual_genome": | |
| raise RuntimeError("Only --dataset-name visual_genome is supported currently.") | |
| selected_flags = [ | |
| args.download_only, | |
| args.extract_only, | |
| args.process_only, | |
| args.split_only, | |
| args.all, | |
| ] | |
| if sum(1 for flag in selected_flags if flag) > 1: | |
| raise RuntimeError("Use only one stage selector at a time.") | |
| scripts_dir = REPO_ROOT / "scripts" / "data" | |
| steps = { | |
| "download": scripts_dir / "download_visual_genome.py", | |
| "extract": scripts_dir / "extract_visual_genome.py", | |
| "process": scripts_dir / "process_visual_genome.py", | |
| "split": scripts_dir / "build_splits.py", | |
| } | |
| if args.download_only: | |
| pipeline = ["download"] | |
| elif args.extract_only: | |
| pipeline = ["extract"] | |
| elif args.process_only: | |
| pipeline = ["process"] | |
| elif args.split_only: | |
| pipeline = ["split"] | |
| else: | |
| pipeline = ["download", "extract", "process", "split"] | |
| for step in pipeline: | |
| run_step(script_path=steps[step], config_path=args.config) | |
| print("[ok] Data pipeline completed.") | |
| if __name__ == "__main__": | |
| main() | |