#!/usr/bin/env python3 """Convert a source dataset into the unified clip format (mapgs.data.unified). # synthetic (runnable anywhere; verifies the pipeline) python scripts/convert.py --source synthetic --out data/unified/synth --split train --n 64 # real data (needs the devkits + data) python scripts/convert.py --source waymo --data /data/waymo_v2 --out data/unified/waymo --split train python scripts/convert.py --source av2 --data /data/av2_sensor --out data/unified/av2 --split train Then train jointly on the mix: python scripts/train.py --config configs/base.yaml \\ --override data.name=unified data.root=data/unified/waymo,data/unified/av2 """ import argparse from mapgs.config import load_config from mapgs.data.convert import convert_synthetic, convert_waymo, convert_argoverse2 def main(): ap = argparse.ArgumentParser() ap.add_argument("--source", required=True, choices=["synthetic", "waymo", "av2", "argoverse2"]) ap.add_argument("--config", default="configs/base.yaml") ap.add_argument("--override", nargs="*", default=[]) ap.add_argument("--data", default=None, help="source data dir (real datasets)") ap.add_argument("--out", required=True, help="unified output root") ap.add_argument("--split", default="train") ap.add_argument("--n", type=int, default=64, help="synthetic: number of clips") ap.add_argument("--max", type=int, default=None, help="real: max segments/logs") args = ap.parse_args() cfg = load_config(args.config, args.override) if args.source == "synthetic": out = convert_synthetic(cfg, args.out, args.split, n_clips=args.n, device=cfg.device) elif args.source == "waymo": out = convert_waymo(args.data, args.out, cfg, args.split, max_segments=args.max) else: out = convert_argoverse2(args.data, args.out, cfg, args.split, max_logs=args.max) print(f"wrote unified clips to {out}") if __name__ == "__main__": main()