-
huongdm1896 authoredhuongdm1896 authored
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.