diff --git a/loadExperiment.py b/loadExperiment.py index e8bb82ea2393ddf27a64862784e16ca4a5504f9f..d84854c340ab5f7879ec45d73e3e4844d7e93153 100644 --- a/loadExperiment.py +++ b/loadExperiment.py @@ -12,8 +12,10 @@ repo = None folder = None commandsFile = None +instructionFile = None inputFiles = [] +outputFiles = [] beforeHash = None @@ -37,7 +39,7 @@ def init(repository,branch) -> None : os.chdir(folder) def getParameters() -> None : - global commandsFile, inputFiles, outputFiles, beforeHash + global commandsFile, inputFiles, outputFiles, beforeHash, instructionFile if not (os.path.exists('experimentResume.yaml')): raise Exception("No exeperimentResume.yaml file found, the branch is not an exeperiment") with open('experimentResume.yaml', 'r') as stream: @@ -46,6 +48,7 @@ def getParameters() -> None : outputFiles = parameters.get('outputs') inputFiles = parameters.get('inputs') beforeHash = parameters.get('checksums') + instructionFile = parameters.get('instructions') def runExperiment() -> None : @@ -56,6 +59,15 @@ def runExperiment() -> None : process.check_returncode() print("done") +def checkForInstructions() -> None : + if (instructionFile != None) : + print("You can check the instructions for the experiment in the file : " + instructionFile) + else : + warnings.warn("No instructions for the experiment found in the repository") + print("Run the exepriment and then press enter when it's done") + done = "nope" + while (done != "") : + done = input() def genChecksum(file) -> str : hash_md5 = hashlib.md5() @@ -68,7 +80,7 @@ def genChecksums() -> list[dict]: checksums = [] for file in os.listdir(OUTPUT_FOLDER) : if not file.endswith(".gitkeep"): - checksums.append({file : genChecksum(f'outputs/{file}')}) + checksums.append({f"{OUTPUT_FOLDER}/{file}" : genChecksum(f'{OUTPUT_FOLDER}/{file}')}) return checksums @@ -77,7 +89,7 @@ def compareChecksums() -> bool: for (dict1, dict2) in zip(beforeHash, genChecksums()): for (key, value) in dict1.items(): if dict2.get(key) != value : - warnings.warn(f"{OUTPUT_FOLDER}/{key} has changed") + warnings.warn(f"{key} has changed") changes = True return changes @@ -88,9 +100,14 @@ def run(repository, branch) -> None : print("Getting the experiment parameters ...") getParameters() print("Running the experiment ...") - runExperiment() + if (commandsFile != None) : + runExperiment() + else : + checkForInstructions() print("Comparing checksums of the outputs ...") if (compareChecksums()) : print("The exepriment was reproduced with succes but some output files are differents.") else : - print("The exepriment was reproduced with succes !") \ No newline at end of file + print("The exepriment was reproduced with succes !") + +#TODO : sur la mainExperiment15, on a du changement quand on reproduit l'expérience ... \ No newline at end of file diff --git a/registerExperiment.py b/registerExperiment.py index ce5ff8bf5565ef3035c8eb16350afbc25ad7b782..b9daa5d4e3d05a97444cb29dbd7a039daee523d1 100644 --- a/registerExperiment.py +++ b/registerExperiment.py @@ -188,19 +188,15 @@ def writeInYaml() -> None: with open('experimentResume.yaml', 'w') as yamlFile: yaml.safe_dump(cur_yaml, yamlFile) -def successfullyCreatedNewBranch(name) -> bool : - try: - repository.git.checkout('-b',name) - return True - except Exception as e: - return False def pushBranch(version=1) -> None: print("Pushing branch...") - while not(successfullyCreatedNewBranch(f"{experimentName}Experiment{version}")): + while f"{experimentName}Experiment{version}" in repository.remote().refs: + print(f"{experimentName}Experiment{version} already exists") version += 1 newTag = f"{currentTag}-e{version}" print(f"creating {experimentName}Experiment{version} branch and pushing changes to it ...") + repository.git.checkout(b=f"{experimentName}Experiment{version}") repository.git.add(all=True) repository.git.commit(m=f"{experimentName}Experiment{version}") repository.git.push('--set-upstream',repository.remote().name,f"{experimentName}Experiment{version}")