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