import json import os from pathlib import Path import argparse def process_submissions(input_file, output_dir='submissions'): """ Process a JSON file containing multiple model submissions and split it into individual JSON files in the submissions directory. Args: input_file (str): Path to the input JSON file output_dir (str): Directory where individual submission files will be stored """ # Create submissions directory if it doesn't exist Path(output_dir).mkdir(exist_ok=True) # Read the input file try: with open(input_file, 'r') as f: submissions = json.load(f) if not isinstance(submissions, list): print(f"Error: Input file {input_file} must contain a JSON array of submissions") return # Process each submission for submission in submissions: if 'model_name' not in submission: print(f"Warning: Skipping submission without model_name field") continue model_name = submission['model_name'] # Create a safe filename from the model name safe_filename = f"{model_name.replace('/', '_')}.json" output_path = os.path.join(output_dir, safe_filename) # Write individual submission file with open(output_path, 'w') as f: json.dump(submission, f, indent=4) print(f"Created submission file: {output_path}") print(f"\nProcessed {len(submissions)} submissions successfully!") except FileNotFoundError: print(f"Error: Input file '{input_file}' not found") except json.JSONDecodeError: print(f"Error: Input file '{input_file}' is not valid JSON") except Exception as e: print(f"Error processing submissions: {str(e)}") def main(): # Set up argument parser parser = argparse.ArgumentParser( description='Process a JSON file containing model submissions and split into individual files.' ) parser.add_argument( 'input_file', help='Path to the input JSON file containing model submissions' ) parser.add_argument( '--output-dir', '-o', default='submissions', help='Directory where individual submission files will be stored (default: submissions)' ) # Parse arguments args = parser.parse_args() # Process submissions process_submissions(args.input_file, args.output_dir) if __name__ == "__main__": main()