From f59a57c97e1dae8e9f491b73cf211aa06929e5fe Mon Sep 17 00:00:00 2001
From: Yngve Levinsen <yngve.levinsen@ess.eu>
Date: Wed, 4 Mar 2020 14:12:20 +0100
Subject: [PATCH] made scripts executable to allow pre-commit to detect updated
 tracewin_errorstudy to python3 corrected errors from black/flake8

---
 scripts/tracewin            |   0
 scripts/tracewin_errorstudy | 238 ++++++++++++++++++++----------------
 2 files changed, 135 insertions(+), 103 deletions(-)
 mode change 100644 => 100755 scripts/tracewin
 mode change 100644 => 100755 scripts/tracewin_errorstudy

diff --git a/scripts/tracewin b/scripts/tracewin
old mode 100644
new mode 100755
diff --git a/scripts/tracewin_errorstudy b/scripts/tracewin_errorstudy
old mode 100644
new mode 100755
index b950aa8..6d4a42d
--- a/scripts/tracewin_errorstudy
+++ b/scripts/tracewin_errorstudy
@@ -2,106 +2,128 @@
 from __future__ import print_function
 from ess import __queue_templates__
 
+
 def define_and_handle_args():
     import argparse
 
     parser = argparse.ArgumentParser(description="Simple setup script to run TraceWin on HT Condor.. Default values in square brackets")
     parser.add_argument("-s", dest="seed", default=None, type=int, help="Define seed [None]")
-    parser.add_argument("-c", dest="calc_dir", default='temp', type=str, help="Path to calculation folder [temp/]")
+    parser.add_argument("-c", dest="calc_dir", default="temp", type=str, help="Path to calculation folder [temp/]")
     parser.add_argument("-n", dest="num_jobs", default=0, type=int, help="Number of jobs [Count number of copied runs in TW]")
     parser.add_argument("-t", dest="study", default=1, type=int, help="Statistical study number [1]")
     parser.add_argument("-m", dest="multi", default=1, type=int, help="Multi-dynamic study [1]")
-    parser.add_argument("-l", dest="lattice", default='lattice.dat', type=str, help="The lattice file for the project [lattice.dat]")
-    parser.add_argument("-q", dest="settings", default='settings.yml', type=str, help="The settings for the project template (yaml) [settings.yml]")
+    parser.add_argument("-l", dest="lattice", default="lattice.dat", type=str, help="The lattice file for the project [lattice.dat]")
+    parser.add_argument(
+        "-q", dest="settings", default="settings.yml", type=str, help="The settings for the project template (yaml) [settings.yml]"
+    )
     parser.add_argument("-p", dest="priority", default=0, type=int, help="Job priority")
 
     return parser.parse_args()
 
+
 def setup_exec_folder():
-    import os,shutil
+    import os
+    import shutil
 
-    orig_path=os.path.join(os.environ.get("HOME"),"TraceWin/exe")
+    orig_path = os.path.join(os.environ.get("HOME"), "TraceWin/exe")
     if not os.path.isdir(orig_path):
-        raise ValueError("Cannot find tracewin executables in "+orig_path+" yet")
+        raise ValueError("Cannot find tracewin executables in " + orig_path + " yet")
     os.makedirs("TraceWin/exe")
 
-    o=dict(LINUX="lx",OSX="mac")
-    a=dict(INTEL="",X86_64="64")
+    o = dict(LINUX="lx", OSX="mac")
+    a = dict(INTEL="", X86_64="64")
 
     for OpSys in ["LINUX", "OSX"]:
         for Arch in ["INTEL", "X86_64"]:
-            shutil.copy(os.path.join(orig_path,"trace"+o[OpSys]+a[Arch]),
-                        os.path.join("TraceWin/exe","tracewin.%s.%s" % (OpSys,Arch)))
+            shutil.copy(
+                os.path.join(orig_path, "trace" + o[OpSys] + a[Arch]), os.path.join("TraceWin/exe", "tracewin.%s.%s" % (OpSys, Arch))
+            )
 
-def create_and_copy_lattice(args, calc_dir, commented=[], extra_line=''):
-    '''
+
+def create_and_copy_lattice(args, calc_dir, commented=[], extra_line=""):
+    """
     Creates the lattice file from tmp
     comments out any commands listed in commented
-    
+
     For multi-study set the extra_line
     (note that a yaml template is required)
-    '''
-    import yaml,shutil,os
+    """
+    import yaml
+    import shutil
+    import os
 
     if os.path.exists(args.settings):
         # Create the lattice file from template:
-        lattice_settings=yaml.load(open(args.settings,'r').read())
-        lattice_settings['extra_line']=extra_line
+        lattice_settings = yaml.load(open(args.settings, "r").read())
+        lattice_settings["extra_line"] = extra_line
 
-        lattice_template=open(args.lattice+'.tmp','r').read()
+        lattice_template = open(args.lattice + ".tmp", "r").read()
         for cmd in commented:
-            lattice_template=lattice_template.replace(cmd.lower(),';'+cmd)
-            lattice_template=lattice_template.replace(cmd.upper(),';'+cmd)
+            lattice_template = lattice_template.replace(cmd.lower(), ";" + cmd)
+            lattice_template = lattice_template.replace(cmd.upper(), ";" + cmd)
 
-        open(os.path.join(calc_dir,args.lattice),'w').write(lattice_template.format(**lattice_settings))
+        open(os.path.join(calc_dir, args.lattice), "w").write(lattice_template.format(**lattice_settings))
 
         shutil.copy(args.settings, calc_dir)
 
     else:
-        if calc_dir != '.':
+        if calc_dir != ".":
             shutil.copy(args.lattice, os.path.join(calc_dir, args.lattice))
 
     for folder in os.listdir(calc_dir):
-        if folder[0:15]=="Local_TraceWin_":
-            path=os.path.join(calc_dir,folder,args.lattice)
+        if folder[0:15] == "Local_TraceWin_":
+            path = os.path.join(calc_dir, folder, args.lattice)
             if os.path.exists(path):
                 os.remove(path)
-            os.link(calc_dir+'/'+args.lattice,path)
+            os.link(calc_dir + "/" + args.lattice, path)
+
 
 def create_extra_folder(calc_dir, f0, f1):
     import os
 
-    path0=os.path.join(calc_dir,f0)
-    path1=os.path.join(calc_dir,f1)
+    path0 = os.path.join(calc_dir, f0)
+    path1 = os.path.join(calc_dir, f1)
 
     if not os.path.isdir(path1):
         os.makedirs(path1)
 
     for f in os.listdir(path0):
-        p0=os.path.join(path0,f)
-        if f[-2:]=='_0':
-            p1=os.path.join(path1,f[:-1])+path1.split('_')[-1]
+        p0 = os.path.join(path0, f)
+        if f[-2:] == "_0":
+            p1 = os.path.join(path1, f[:-1]) + path1.split("_")[-1]
         else:
-            p1=os.path.join(path1,f)
+            p1 = os.path.join(path1, f)
         if not os.path.exists(p1):
             # hard link
-            os.link(p0,p1)
+            os.link(p0, p1)
+
 
-def delete_output_files(args,folder):
-    '''
-    Remove all output files in a folder 
+def delete_output_files(args, folder):
+    """
+    Remove all output files in a folder
     (clean it for a re-run)
 
-    '''
+    """
     import os
 
-    output_files=['ENV_diag1.dat', 'part_dtl1.dst', 'part_rfq.dst', 'Remote_DATA.dat', 'condor.log', 'dtl1.plt', 'PAR_diag1.dat', 'Density_PAR.dat_9', 'lattice.par']
-
-    full_path=os.path.join(args.calc_dir,folder)
+    output_files = [
+        "ENV_diag1.dat",
+        "part_dtl1.dst",
+        "part_rfq.dst",
+        "Remote_DATA.dat",
+        "condor.log",
+        "dtl1.plt",
+        "PAR_diag1.dat",
+        "Density_PAR.dat_9",
+        "lattice.par",
+    ]
+
+    full_path = os.path.join(args.calc_dir, folder)
     for f in os.listdir(full_path):
         for of in output_files:
             if of in f:
-                os.remove(os.path.join(full_path,f))
+                os.remove(os.path.join(full_path, f))
+
 
 def setup_multi(args):
     import os
@@ -109,131 +131,141 @@ def setup_multi(args):
     print("multi study..")
 
     # the statistical study in TW to do, normally 14
-    stat_study=args.study+13
+    stat_study = args.study + 13
     # for multi study we need an extra line to set dynamic errors:
 
-    num_jobs=0
-    new_folders=[]
+    num_jobs = 0
+    new_folders = []
     for njob in range(args.num_jobs):
-        folder='Local_TraceWin_{}'.format(njob)
-        if os.path.isfile( os.path.join(args.calc_dir, folder, 'Error_Datas.txt')):
+        folder = "Local_TraceWin_{}".format(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]):
+                num_jobs += 1
+                if mjob == int(folder.split("_")[-1]):
                     continue
-                newfolder='{}_{}'.format(folder,mjob)
+                newfolder = "{}_{}".format(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), commented=['ERROR_CAV_CPL_DYN', 'ERROR_CAV_NCPL_DYN'], extra_line='ERROR_DYN_FILE Error_Datas.txt')
+                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),
+                    commented=["ERROR_CAV_CPL_DYN", "ERROR_CAV_NCPL_DYN"],
+                    extra_line="ERROR_DYN_FILE Error_Datas.txt",
+                )
 
     if not os.path.isdir("TraceWin/exe"):
         setup_exec_folder()
 
     # Get random seeds from previously run jobs:
-    seeds=[]
-    for l in open(os.path.join(args.calc_dir,'submit.job'), 'r'):
-        if len(l.strip()) and l.split()[0]=='arguments':
+    seeds = []
+    for l in open(os.path.join(args.calc_dir, "submit.job"), "r"):
+        if len(l.strip()) and l.split()[0] == "arguments":
             seeds.append(l.split()[-1])
 
-
-    head_template=__queue_templates__.get_head_multi_template()
-    queue_template=__queue_templates__.get_queue_multi_template()
-    with open(args.calc_dir+"/multi.job","w") as out:
+    head_template = __queue_templates__.get_head_multi_template()
+    queue_template = __queue_templates__.get_queue_multi_template()
+    with open(args.calc_dir + "/multi.job", "w") as out:
         out.write(head_template.format(**locals()))
 
         for job_folder in new_folders:
-            i=int(job_folder.split('_')[-2])
-            j=int(job_folder.split('_')[-1])
+            i = int(job_folder.split("_")[-2])
+            j = int(job_folder.split("_")[-1])
 
             # Get file list:
-            input_files=os.listdir(os.path.join(args.calc_dir,job_folder))
-            input_files=', '.join(input_files)
+            input_files = os.listdir(os.path.join(args.calc_dir, job_folder))
+            input_files = ", ".join(input_files)
 
-            q_priority=args.priority
-            rand=seeds[j]
+            q_priority = args.priority
+            rand = seeds[j]
             out.write(queue_template.format(**locals()))
 
-    if num_jobs==0:
-        raise ValueError("Could not find any simulation folders in "+args.calc_dir)
+    if num_jobs == 0:
+        raise ValueError("Could not find any simulation folders in " + args.calc_dir)
 
     print("Total number of new jobs", num_jobs)
-    args.num_jobs=num_jobs
+    args.num_jobs = num_jobs
+
 
 def setup(args):
-    import os,random
+    import os
+    import random
 
-    if args.multi>1:
+    if args.multi > 1:
         setup_multi(args)
         return 0
 
-    num_jobs=0
+    num_jobs = 0
     for folder in os.listdir(args.calc_dir):
-        if folder[0:15]=="Local_TraceWin_":
-            num_jobs+=1
+        if folder[0:15] == "Local_TraceWin_":
+            num_jobs += 1
 
-    if num_jobs==0:
-        raise ValueError("Could not find any simulation folders in "+args.calc_dir)
+    if num_jobs == 0:
+        raise ValueError("Could not find any simulation folders in " + args.calc_dir)
 
     # 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())
-            create_extra_folder(args.calc_dir,'Local_TraceWin_0',folder_name)
-        num_jobs=args.num_jobs
+    if args.num_jobs > num_jobs:
+        for n in range(num_jobs, args.num_jobs):
+            folder_name = "Local_TraceWin_{n}".format(**locals())
+            create_extra_folder(args.calc_dir, "Local_TraceWin_0", folder_name)
+        num_jobs = args.num_jobs
 
     # the statistical study in TW to do, normally 14
-    stat_study=args.study+13
+    stat_study = args.study + 13
 
     create_and_copy_lattice(args, args.calc_dir)
 
     if not os.path.isdir("TraceWin/exe"):
         setup_exec_folder()
 
-    if args.seed!=None:
+    if args.seed is not None:
         random.seed(args.seed)
-    rand_lst=[random.randint(1e5,1e9) for i in range(num_jobs)]
-    #rand_lst=file('rand.dat','r').read().split()
+    rand_lst = [random.randint(1e5, 1e9) for i in range(num_jobs)]
+    # 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 = os.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)'
-    input_files=', '.join(input_files)
+        if input_files[i][-2:] == "_0":
+            input_files[i] = input_files[i][:-2] + "_$(Process)"
+    input_files = ", ".join(input_files)
 
-    head_template=__queue_templates__.get_head_template()
-    queue_template=__queue_templates__.get_queue_template()
+    head_template = __queue_templates__.get_head_template()
+    queue_template = __queue_templates__.get_queue_template()
     with open(args.calc_dir + "/submit.job", "w") as out:
         out.write(head_template.format(**locals()))
 
         for i in range(num_jobs):
-            q_priority=max(-5,args.priority-i/100)
-            rand=rand_lst[i]
+            q_priority = max(-5, args.priority - i / 100)
+            rand = rand_lst[i]
             out.write(queue_template.format(**locals()))
 
+
 def ask(args):
-    print("You have now set up an error study running {} jobs in folder {}".format(args.num_jobs,args.calc_dir))
-    if args.multi>1:
+    print("You have now set up an error study running {} jobs in folder {}".format(args.num_jobs, 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':
+    answer = input("Do you want to submit the jobs immediately? (yes/no) ")
+    if answer == "yes":
         return 0
 
     import sys
+
     sys.exit(0)
-    
-def execute(calc_dir,multi):
+
+
+def execute(calc_dir, multi):
     import subprocess
+
     if multi:
-        cmd=["condor_submit",calc_dir+"/multi.job"]
+        cmd = ["condor_submit", calc_dir + "/multi.job"]
     else:
-        cmd=["condor_submit",calc_dir+"/submit.job"]
+        cmd = ["condor_submit", calc_dir + "/submit.job"]
     subprocess.call(cmd)
 
-if __name__=="__main__":
-    args=define_and_handle_args()
+
+if __name__ == "__main__":
+    args = define_and_handle_args()
     setup(args)
     ask(args)
-    execute(args.calc_dir,args.multi>1)
-
+    execute(args.calc_dir, args.multi > 1)
-- 
GitLab