From fc9338df3ff09c986122bfaa5334addb93adfc46 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Thu, 13 Apr 2023 06:01:04 +0200 Subject: [PATCH] save config and code state for reproducibility Signed-off-by: Csaba Kiraly --- study.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/study.py b/study.py index aa27a5f..1d24f35 100644 --- a/study.py +++ b/study.py @@ -2,6 +2,7 @@ import time, sys, random, copy import importlib +import subprocess from joblib import Parallel, delayed from DAS import * @@ -63,6 +64,17 @@ def study(): now = datetime.now() execID = now.strftime("%Y-%m-%d_%H-%M-%S_")+str(random.randint(100,999)) + # save config and code state for reproducibility + if not os.path.exists("results"): + os.makedirs("results") + if not os.path.exists("results/"+execID): + os.makedirs("results/"+execID) + with open("results/"+execID+"/git.diff", 'w') as f: + subprocess.run(["git", "diff"], stdout=f) + with open("results/"+execID+"/git.describe", 'w') as f: + subprocess.run(["git", "describe", "--always"], stdout=f) + subprocess.run(["cp", sys.argv[1], "results/"+execID+"/"]) + logger.info("Starting simulations:", extra=format) start = time.time() results = Parallel(config.numJobs)(delayed(runOnce)(config, shape ,execID) for shape in config.nextShape())