| 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() |
|
|