diff --git a/scripts/tracewin_errorstudy b/scripts/tracewin_errorstudy index 6d4a42d1d24e4e7d6b111f0420734001bf1e07b9..ac6dddb027ae646d2aa341be941e2e6f05d8c923 100755 --- a/scripts/tracewin_errorstudy +++ b/scripts/tracewin_errorstudy @@ -96,16 +96,10 @@ def create_extra_folder(calc_dir, f0, f1): if not os.path.exists(p1): # hard link os.link(p0, p1) + delete_output_files(calc_dir, f1) -def delete_output_files(args, folder): - """ - Remove all output files in a folder - (clean it for a re-run) - - """ - import os - +def get_output_files_list(): output_files = [ "ENV_diag1.dat", "part_dtl1.dst", @@ -116,9 +110,23 @@ def delete_output_files(args, folder): "PAR_diag1.dat", "Density_PAR.dat_9", "lattice.par", + "tracelx64", + "tracemac64", ] + return output_files + + +def delete_output_files(calc_dir, folder): + """ + Remove all output files in a folder + (clean it for a re-run) - full_path = os.path.join(args.calc_dir, folder) + """ + import os + + output_files = get_output_files_list() + + full_path = os.path.join(calc_dir, folder) for f in os.listdir(full_path): for of in output_files: if of in f: @@ -137,16 +145,15 @@ def setup_multi(args): num_jobs = 0 new_folders = [] for njob in range(args.num_jobs): - folder = "Local_TraceWin_{}".format(njob) + folder = f"Local_TraceWin_{njob}" if os.path.isfile(os.path.join(args.calc_dir, folder, "Error_Datas.txt")): for mjob in range(args.multi): num_jobs += 1 if mjob == int(folder.split("_")[-1]): continue - newfolder = "{}_{}".format(folder, mjob) + newfolder = f"{folder}_{mjob}" new_folders.append(newfolder) create_extra_folder(args.calc_dir, folder, newfolder) - delete_output_files(args, newfolder) create_and_copy_lattice( args, os.path.join(args.calc_dir, newfolder), @@ -173,7 +180,7 @@ def setup_multi(args): j = int(job_folder.split("_")[-1]) # Get file list: - input_files = os.listdir(os.path.join(args.calc_dir, job_folder)) + input_files = listdir(os.path.join(args.calc_dir, job_folder)) input_files = ", ".join(input_files) q_priority = args.priority @@ -187,6 +194,21 @@ def setup_multi(args): args.num_jobs = num_jobs +def listdir(path): + """ + List all input files in path + (ie all files not defined as output files or executables) + """ + import os + + input_files = [] + output_files = get_output_files_list() + for f in os.listdir(path): + if f not in output_files: + input_files.append(f) + return input_files + + def setup(args): import os import random @@ -206,7 +228,7 @@ def setup(args): # Create extra folders if needed.. if args.num_jobs > num_jobs: for n in range(num_jobs, args.num_jobs): - folder_name = "Local_TraceWin_{n}".format(**locals()) + folder_name = f"Local_TraceWin_{n}" create_extra_folder(args.calc_dir, "Local_TraceWin_0", folder_name) num_jobs = args.num_jobs @@ -224,7 +246,7 @@ def setup(args): # rand_lst=file('rand.dat','r').read().split() # Get file list: - input_files = os.listdir(os.path.join(args.calc_dir, "Local_TraceWin_0")) + input_files = listdir(os.path.join(args.calc_dir, "Local_TraceWin_0")) for i in range(len(input_files)): if input_files[i][-2:] == "_0": input_files[i] = input_files[i][:-2] + "_$(Process)" @@ -242,12 +264,14 @@ def setup(args): def ask(args): - print("You have now set up an error study running {} jobs in folder {}".format(args.num_jobs, args.calc_dir)) + print(f"You have now set up an error study running {args.num_jobs} jobs in folder {args.calc_dir}") if args.multi > 1: print("This is a multi-error study") answer = input("Do you want to submit the jobs immediately? (yes/no) ") if answer == "yes": return 0 + else: + print(f"To run, execute command 'condor_submit {args.calc_dir}/submit.job'") import sys