20 from __future__
import division
21 from argparse
import ArgumentParser
22 from subprocess
import check_call
23 from configparser
import SafeConfigParser
24 from time
import sleep
31 help=
"Configuration file containing arguments",
38 help=
"Number of jobs into which run is split",
41 "--jobNum", action=
"store", type=int, required=
True, help=
"Number of this job"
44 args = ap.parse_args()
46 cp = SafeConfigParser()
48 cp.read(args.configFile)
50 fMin = cp.getfloat(
"param-space",
"f_min")
51 fMax = cp.getfloat(
"param-space",
"f_max")
52 fFullBand = fMax - fMin
53 fBand = fFullBand / args.numJobs
54 fStart = fMin + args.jobNum * fBand
56 toplistPattern = cp.get(
"filename-patterns",
"toplist_name")
57 toplistName = toplistPattern % (args.jobNum, args.numJobs)
59 logfilePattern = cp.get(
"filename-patterns",
"logfile_name")
60 logfileName = logfilePattern % (args.jobNum, args.numJobs)
64 program_args = [
"--%s=%s" % a
for a
in cp.items(
"raw-program-arguments")]
67 program_args += [
"--fStart=%.11f" % fStart]
68 program_args += [
"--fBand=%.11f" % fBand]
69 program_args += [
"--toplistFilename=%s" % toplistName]
70 program_args += [
"--logFilename=%s" % logfileName]
73 if cp.has_section(
"program")
and cp.has_option(
"filename-patterns",
"latticefile_name"):
75 latticefilePattern = cp.get(
"filename-patterns",
"latticefile_name")
76 latticefileName = latticefilePattern % (args.jobNum, args.numJobs)
77 program_args += [
"--LatticeOutputFilename=%s" % latticefileName]
79 if cp.has_section(
"raw-program-arguments")
and cp.has_option(
80 "raw-program-arguments",
"latticeType"
83 cp.get(
"raw-program-arguments",
"latticeType") ==
"byHand"
84 or cp.get(
"raw-program-arguments",
"latticeType") ==
"byhand"
85 or cp.get(
"raw-program-arguments",
"latticeType") ==
"byhand"
89 print(
"has lattice--uselattice")
90 program_args += [
"--useLattice"]
95 if cp.has_section(
"raw-program-arguments")
and cp.has_option(
96 "raw-program-arguments",
"useShearedPeriod"
98 print(
"has --useShearedPeriod")
99 program_args += [
"--useShearedPeriod"]
102 if cp.has_section(
"program")
and cp.has_option(
"program",
"delay_secs"):
103 sleep(args.jobNum * cp.getfloat(
"program",
"delay_secs"))
106 if cp.has_section(
"program")
and cp.has_option(
"program",
"executable"):
107 program = cp.get(
"program",
"executable")
109 program =
"lalpulsar_crosscorr_v2"
111 print(program, program_args)
112 check_call(([program] + program_args))