Belle II Software  release-06-01-15
submitJobs.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 # This script submit jobs getting the jobs details (runNo, expNo etc)
13 # from a look-up table which should already exist
14 
15 import os
16 import sys
17 import csv
18 
19 
20 def submit_job(listArgs, logDir, myCmd):
21  print(listArgs)
22  # end of file name for log files
23  filenameEnd = '_'.join(listArgs)
24 
25  # job submission with arguments
26  os.system('bsub ' +
27  ' -q l' +
28  ' -oo ' + logDir + '/' + 'out_' + filenameEnd +
29  ' -eo ' + logDir + '/' + 'err_' + filenameEnd +
30  ' -N' +
31  ' \" ' + myCmd +
32  ' ' + sys.argv[2].lower() + ' ' +
33  ' '.join(listArgs) +
34  '\"')
35 
36  # summary
37  print('Submitted job for: ' + ' '.join(listArgs))
38 
39 
40 if len(sys.argv) != 3:
41  sys.exit('Need two arguments: 1) path of look up table, 2) mc or data')
42 
43 # yourWorkingDirectoryPath = '.'
44 # logDir = yourWorkingDirectoryPath + '/analysisLog/'
45 
46 lookUpTablePath = sys.argv[1]
47 
48 mc_or_data = sys.argv[2].lower()
49 isMC = {"mc": True, "data": False}.get(mc_or_data, None)
50 if isMC is None:
51  sys.exit(
52  'Second parameter must be "mc" or "data" to indicate whether we run on MC or real data')
53 
54 # the job we are submitting
55 # myCmd = yourWorkingDirectoryPath + '/analysisJob.sh'
56 myCmd = './analysisJob.sh'
57 logDir = './analysisLog'
58 
59 # ================================= Submit jobs ! ========================
60 print('Jobs submission ..')
61 
62 # open look up table
63 with open(lookUpTablePath) as f:
64 
65  reader = csv.reader(f, delimiter='\t')
66 
67  # submit one job for each line , for each streamNo
68  for row in reader:
69  if isMC:
70  print(row)
71  expNo = int(row[0])
72 
73  if expNo in range(7, 28):
74  streamNoList = range(10, 20)
75  elif expNo in range(31, 66):
76  streamNoList = range(0, 10)
77 
78  for streamNo in streamNoList:
79  # removing empty element at end of line
80  row = row[:-1]
81  # adding streamNo
82  row.append(str(streamNo))
83  submit_job(row, logDir, myCmd)
84  else:
85  # removing empty element at end of line
86  submit_job(row[:-1], logDir, myCmd)