"""Shared helpers: every output records game, parameters, rounds, seed and date.""" import csv, json, datetime, os ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SIMS = os.path.join(ROOT, "out", "sims") CSVS = os.path.join(ROOT, "out", "csv") RUN_DATE = datetime.date.today().isoformat() def save(name, meta, data, csv_rows=None, csv_header=None): os.makedirs(SIMS, exist_ok=True) os.makedirs(CSVS, exist_ok=True) meta = {**meta, "date": RUN_DATE, "script": f"data-scripts/{meta.get('script', name + '.py')}"} with open(os.path.join(SIMS, f"{name}.json"), "w") as f: json.dump({"meta": meta, "data": data}, f, indent=1) if csv_rows is not None: with open(os.path.join(CSVS, f"{name}.csv"), "w", newline="") as f: w = csv.writer(f) w.writerow([f"# {k}: {v}" for k, v in meta.items()]) w.writerow(csv_header) w.writerows(csv_rows) print("saved", name)