10from configparser
import ConfigParser
14 prefix=os.environ[
'LALINFERENCE_DATADIR']
18parser = argparse.ArgumentParser(description=
"Runs review tests of lalinference using lalinference_pipe_example.ini.")
20parser.add_argument(
'-i',
'--ini_file', type=str, nargs=
'?',
21 default=os.path.join(prefix,
'lalinference_pipe_example.ini'),
22 help=
'lalinference_pipe ini file to process.')
24parser.add_argument(
'--bns-injection', type=str, nargs=
'?',
26 const=os.path.join(prefix,
'fiducialBNS.xml'),
27 help=
'injection file for fiducial BNS analysis.')
29parser.add_argument(
'--gracedb', action=
'store_true',
31 help=
'Runs the analysis for the GraceDB test event T169545.')
33parser.add_argument(
'--analytic-tests', action=
'store_true',
35 help=
'Run on the unmodal and bimodial Gaussian and Rosenbrock test functions.')
37parser.add_argument(
'--analytic-csv-dir', type=str,
39 help=
'Directory containing the CSVs describing the analytic tests.')
41parser.add_argument(
'--pptest', action=
'store_true',
43 help=
'Runs a P-P analysis. Must specify a single engine.')
45parser.add_argument(
'--pp-approximant', action=
'store', type=str,
46 default=
'IMRPhenomPv2pseudoFourPN,SEOBNRv4_ROMpseudoFourPN',
47 help=
'Approximant(s) used for the P-P analysis.')
49parser.add_argument(
'--bbh-injection', type=str, nargs=
'?',
51 const=os.path.join(prefix,
'fiducialBBH.xml'),
52 help=
'injection file for fiducial BBH analysis.')
54parser.add_argument(
'-e',
'--engine', type=str, nargs=
'?',
55 default=
'lalinferencemcmc,lalinferencenest',
56 help=
'lalinference engine to run with.')
58parser.add_argument(
'-o',
'--output', type=str, nargs=
'?',
60 help=
'output directory.')
62parser.add_argument(
'--condor-submit', action=
'store_true',
64 help=
'submits the test suite.')
66args = parser.parse_args()
68args.ini_file = os.path.abspath(args.ini_file)
70if 'UNCLEAN' in lalinference.InferenceVCSInfo.vcsId:
71 default_outputdir=os.getenv(
'HOME')+
'/lalinference_testrun/'+lalinference.InferenceVCSInfo.vcsId+
'_UNCLEAN/'+args.engine+
'/'
73 default_outputdir=os.getenv(
'HOME')+
'/lalinference_testrun/'+lalinference.InferenceVCSInfo.vcsId+
'/'+args.engine.replace(
',',
'_')+
'/'
75if args.output ==
None:
76 web_outputdir=default_outputdir
77 args.output=os.path.abspath(default_outputdir)
79 web_outputdir=os.path.abspath(args.output)
80 args.output=os.path.abspath(args.output)
82os.makedirs(args.output)
85 args.bns_injection=os.path.abspath(args.bns_injection)
87 args.bbh_injection=os.path.abspath(args.bbh_injection)
89analytic_csv_dir = os.path.abspath(args.analytic_csv_dir)
90if args.analytic_tests:
91 csvs = glob.glob(analytic_csv_dir+
"/*csv")
93 shutil.copy(csv,args.output+
'/'+os.path.basename(csv))
99 lalinf_prefix=os.environ[
'LALINFERENCE_PREFIX']
101 print(
'LALINFERENCE_PREFIX variable not defined, could not find LALInference installation.')
110 except AttributeError:
114 cp.set(
'condor',
'lalsuite-install',lalinf_prefix)
115 cp.set(
'analysis',
'engine',args.engine)
116 cp.remove_option(
'analysis',
'nparallel')
124 cp.set(
'lalinference',
'fake-cache',
"{'H1':'LALSimAdLIGO','L1':'LALSimAdLIGO','V1':'LALSimAdVirgo'}")
125 cp.set(
'analysis',
'dataseed',
'1234')
126 cp.set(
'engine',
'0noise',
'')
128 cp.set(
'paths',
'webdir',web_outputdir+
'/fiducialBNS/webdir/')
129 cp.set(
'lalinference',
'flow',
"{'H1':40,'L1':40,'V1':40}")
130 cp.set(
'engine',
'approx',
'SEOBNRv4_ROMpseudoFourPN')
131 cp.set(
'resultspage',
'deltaLogP',
'5')
132 cp.set(
'engine',
'comp-max',
'3.5')
133 cp.set(
'engine',
'comp-min',
'0.5')
134 cp.remove_option(
'engine',
'disable-spin')
135 cp.set(
'engine',
'a_spin1-max',
'0.1')
136 cp.set(
'engine',
'a_spin1-min',
'-0.1')
137 cp.set(
'engine',
'a_spin2-max',
'0.1')
138 cp.set(
'engine',
'a_spin2-min',
'-0.1')
139 cp.set(
'engine',
'alignedspin-zprior',
'')
140 cp.set(
'engine',
'distance-max',
'500')
141 cp.set(
'engine',
'neff',
'500')
142 cp.set(
'engine',
'nlive',
'512')
146if args.bns_injection:
148 os.makedirs(args.output+
'/fiducialBNS/')
149 os.chdir(args.output+
'/fiducialBNS/')
151 shutil.copy(args.bns_injection,args.output+
'/fiducialBNS/')
152 BNS_ini_file=os.path.join(args.output,
'fiducialBNS',
'BNS.ini')
155 with open(BNS_ini_file,
'w')
as cpfile:
158 lalinferenceargs = [
'lalinference_pipe'
167 if args.condor_submit:
168 lalinferenceargs.append(
'--condor-submit')
170 subprocess.call(lalinferenceargs)
176 cp.set(
'analysis',
'upload-to-gracedb',
'True')
177 cp.set(
'paths',
'webdir',web_outputdir+
'/GraceDB/webdir/')
179 cp.set(
'datafind',
'types',
"{'H1':'H1_HOFT_C00','L1':'L1_HOFT_C00','V1':'V1Online'}")
180 cp.set(
'data',
'channels',
"{'H1':'H1:GDS-CALIB_STRAIN','L1':'L1:GDS-CALIB_STRAIN','V1':'V1:FAKE_h_16384Hz_4R'}")
182 cp.set(
'engine',
'distance-max',
'300')
188 os.makedirs(args.output+
'/GraceDB/')
189 os.chdir(args.output+
'/GraceDB/')
191 GDB_ini_file=os.path.join(args.output,
'GraceDB',
'GDB.ini')
194 with open(GDB_ini_file,
'w')
as cpfile:
197 lalinferenceargs = [
'lalinference_pipe'
206 if args.condor_submit:
207 lalinferenceargs.append(
'--condor-submit')
209 subprocess.call(lalinferenceargs)
215 cp.set(
'lalinference',
'fake-cache',
"{'H1':'LALSimAdLIGO','L1':'LALSimAdLIGO','V1':'LALSimAdVirgo'}")
216 cp.set(
'analysis',
'dataseed',
'1234')
217 cp.set(
'engine',
'0noise',
'')
218 cp.remove_option(
'engine',
'margphi')
220 cp.set(
'paths',
'webdir',web_outputdir+
'/fiducialBBH/webdir/')
222 cp.set(
'engine',
'approx',
'IMRPhenomPv2pseudoFourPN')
223 cp.set(
'analysis',
'roq',
'True')
224 cp.remove_option(
'engine',
'disable-spin')
225 cp.set(
'resultspage',
'deltaLogP',
'6')
226 cp.set(
'engine',
'distance-max',
'1000')
227 cp.set(
'engine',
'inj-fref',
'100')
229 cp.set(
'engine',
'neff',
'500')
230 cp.set(
'engine',
'nlive',
'512')
234if args.bbh_injection:
236 os.makedirs(args.output+
'/fiducialBBH/')
237 os.chdir(args.output+
'/fiducialBBH/')
239 shutil.copy(args.bbh_injection,args.output+
'/fiducialBBH/')
240 BBH_ini_file=os.path.join(args.output,
'fiducialBBH',
'BBH.ini')
243 with open(BBH_ini_file,
'w')
as cpfile:
246 lalinferenceargs = [
'lalinference_pipe'
255 if args.condor_submit:
256 lalinferenceargs.append(
'--condor-submit')
258 subprocess.call(lalinferenceargs)
263 cp.set(
'paths',
'webdir',web_outputdir+
'/'+test_func+
'/webdir/')
264 cp.set(
'lalinference',
'fake-cache',
"{'H1':'LALSimAdLIGO','L1':'LALSimAdLIGO','V1':'LALSimAdVirgo'}")
265 cp.set(
'analysis',
'dataseed',
'1234')
267 cp.set(
'input',
'analyse-all-time',
'True')
268 cp.set(
'input',
'gps-start-time',
'0')
269 cp.set(
'input',
'gps-end-time',
'2')
270 cp.set(
'input',
'segment-overlap',
'0')
271 cp.set(
'input',
'psd-length',
'1')
273 cp.set(
'engine',
'seglen',
'1')
274 cp.set(
'engine',
'approx',
'SpinTaylorT4')
275 cp.set(
'engine',test_func,
'')
276 cp.set(
'engine',
'neff',
'10000')
277 cp.set(
'engine',
'nlive',
'2048')
279 cp.set(
'resultspage',
'deltaLogP',
'7')
280 if test_func !=
"rosenbrockLikelihood":
281 csv = args.output+
'/'+test_func+
'_means.csv'
282 if os.path.isfile(csv):
283 cp.set(
'resultspage',
'meanVectors',csv)
284 csv = args.output+
'/'+
'test_correlation_matrix.csv'
285 if os.path.isfile(csv):
286 cp.set(
'resultspage',
'covarianceMatrix',csv)
290if args.analytic_tests:
291 test_funcs = [
'correlatedGaussianLikelihood',
'bimodalGaussianLikelihood',
'rosenbrockLikelihood']
292 for test_func
in test_funcs:
293 os.makedirs(args.output+
'/' + test_func +
'/')
294 os.chdir(args.output+
'/' + test_func +
'/')
297 analytic_ini_file=os.path.join(args.output,test_func,
'analytic.ini')
300 with open(analytic_ini_file,
'w')
as cpfile:
301 cpanalytic.write(cpfile)
303 lalinferenceargs = [
'lalinference_pipe'
308 , analytic_ini_file ]
310 if args.condor_submit:
311 lalinferenceargs.append(
'--condor-submit')
313 subprocess.call(lalinferenceargs)
319 cp.set(
'paths',
'webdir', os.path.join(web_outputdir,
'pptest', engine, approximant,
'webdir/'))
320 cp.set(
'ppanalysis',
'webdir', os.path.join(web_outputdir,
'PPcheck', engine, approximant +
'/'))
321 cp.set(
'lalinference',
'fake-cache',
"{'H1':'LALSimAdLIGO','L1':'LALSimAdLIGO','V1':'LALSimAdVirgo'}")
322 cp.set(
'analysis',
'dataseed',
'1234')
323 cp.set(
'analysis',
'engine', engine)
325 cp.remove_option(
'engine',
'margphi')
326 cp.set(
'engine',
'margtime',
'')
327 cp.set(
'engine',
'amporder',
'-1')
328 cp.set(
'engine',
'fref',
'0')
329 cp.set(
'engine',
'distance-max',
'2000')
330 cp.set(
'engine',
'approx', approximant)
332 cp.set(
'resultspage',
'deltaLogP',
'7')
339 for engine
in args.engine.split(
','):
340 for approximant
in args.pp_approximant.split(
','):
341 os.makedirs(os.path.join(args.output,
'pptest', engine, approximant +
'/'))
342 os.chdir(os.path.join(args.output,
'pptest', engine, approximant +
'/'))
344 pptest_ini_file=os.path.join(args.output,
'pptest', engine, approximant,
'pptest.ini')
347 approximant=approximant)
348 with open(pptest_ini_file,
'w')
as cpfile:
349 cppptest.write(cpfile)
351 lalinferenceargs = [
'lalinference_pp_pipe'
358 subprocess.call(lalinferenceargs)
360 if args.condor_submit:
361 condor_submit_dag = [
'condor_submit_dag', os.path.join(args.output,
'pptest', engine, approximant,
'run/priortest.dag')]
362 subprocess.call(condor_submit_dag)
def set_pptest(cp, engine, approximant)
def init_ini_file(file=args.ini_file)
def set_analytic_test(cp, test_func)