import os import zipfile import argparse import json def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("--method", type=str, required=True) parser.add_argument("--output_dir", type=str, default="outputs") parser.add_argument("--zip_name", type=str, default=None) return parser.parse_args() def main(): args = parse_args() zip_name = args.zip_name if args.zip_name else f"submission_{args.method}.zip" target_dirs = [d for d in os.listdir(args.output_dir) if d.startswith(f"{args.method}_")] if not target_dirs: print(f"Error: No outputs found for method {args.method}") return with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as zipf: for d in target_dirs: base_path = os.path.join(args.output_dir, d) metrics_path = os.path.join(base_path, "metrics.json") if os.path.exists(metrics_path): zipf.write(metrics_path, arcname=os.path.join(d, "metrics.json")) renders_path = os.path.join(base_path, "renders") if os.path.exists(renders_path): for img in os.listdir(renders_path): if img.endswith(".png"): img_path = os.path.join(renders_path, img) zipf.write(img_path, arcname=os.path.join(d, "renders", img)) print(f"Submission package generated: {zip_name}") if __name__ == "__main__": main()