Skip to content
Snippets Groups Projects
measure_campaign.py 2.17 KiB
# python3 run_measure_1.py -x experiment1 -c config_instances.json -r 2

import json
import subprocess
import argparse

def main():
    # Set up argument parser
    parser = argparse.ArgumentParser(description="Run measure_instance.py for all instances in config.json.")
    parser.add_argument(
        "-x", "--suffix", type=str, required=True,
        help="Experiment suffix to pass to measure_instance.py (e.g., experiment1)"
    )
    parser.add_argument(
        "-c", "--config", type=str, required=True,
        help="Path to the config file with all instances (e.g., config_instances.json)"
    )
    parser.add_argument(
        "-r", "--repeat", type=int, default=1, required=True,
        help="Number of repetitions (e.g., 2, the experiment will run twice)"
    )
    args = parser.parse_args()

    # Path to the combined config.json file
    config_path = args.config

    # Read the config.json file
    try:
        with open(config_path, "r") as file:
            config_data = json.load(file)
    except FileNotFoundError:
        print(f"Error: Config file {config_path} not found!")
        return
    except json.JSONDecodeError:
        print(f"Error: Config file {config_path} contains invalid JSON!")
        return

    # Get all instance numbers from config.json
    instances = config_data.get("instances", {})

    if not instances:
        print("No instances found in config.json.")
        return

    # Iterate over each instance and run measure_instance.py
    for instance_number in instances.keys():
        print(f"Running measure_instance.py with instance: {instance_number}")
        try:
            subprocess.run(
                ["python3", "measure_instance.py", "-x", args.suffix, "-c", config_path, "-i", str(instance_number), "-r", str(args.repeat)],
                check=True
            )
        except subprocess.CalledProcessError as e:
            print(f"Error: measure_instance.py failed for instance {instance_number}.")
            print(f"Details: {e}")
        except Exception as e:
            print(f"Unexpected error occurred: {e}")

if __name__ == "__main__":
    main()
# The script takes the experiment suffix and number of repetitions as arguments.