File size: 1,507 Bytes
23e73f9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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()