@@ -70,12 +70,13 @@ def __read_context_metadata(logging, input_dir, data_file):
70
70
bknd = context ["Backend" ]
71
71
bknd_name = __compactify_bknd_name (context ["Backend Name" ])
72
72
algebra = context ["Algebra-plugin" ]
73
+ setup = context ["Detector Setup" ]
73
74
74
- return bknd , bknd_name , algebra
75
+ return bknd , bknd_name , algebra , setup
75
76
76
77
77
78
# Parse and check the user provided input data files
78
- def __parse_input_data_files (args ):
79
+ def __parse_input_data_files (args , logging ):
79
80
input_data_files = []
80
81
for file in args .data_files :
81
82
if not os .path .isfile (file ):
@@ -107,8 +108,8 @@ def __generate_benchmark_dict(
107
108
# Bundle benchmark metadata
108
109
benchmark_metadata = namedtuple (
109
110
"benchmark_metadata" ,
110
- "name algebra bin file" ,
111
- defaults = ["Unknown" , "Unknown Algebra" , None , None ],
111
+ "name algebra setup bin file" ,
112
+ defaults = ["Unknown" , "Unknown Algebra" , "" , None , None ],
112
113
)
113
114
114
115
# Resulting dictionary
@@ -128,7 +129,7 @@ def __generate_benchmark_dict(
128
129
# Add file to benchmark dict
129
130
input_dir = os .path .dirname (f )
130
131
file_name = os .path .basename (f )
131
- bknd , bknd_name , algebra = __read_context_metadata (
132
+ bknd , bknd_name , algebra , setup = __read_context_metadata (
132
133
logging , input_dir , file_name
133
134
)
134
135
@@ -141,7 +142,7 @@ def __generate_benchmark_dict(
141
142
context , _ = read_benchmark_data (logging , input_dir , file_name )
142
143
if bench_type in context ["executable" ]:
143
144
benchmarks [bknd ][bknd_name ].append (
144
- benchmark_metadata (name = bknd_name , algebra = algebra , file = f )
145
+ benchmark_metadata (name = bknd_name , algebra = algebra , setup = setup , file = f )
145
146
)
146
147
147
148
# Register benchmarks to be run
@@ -189,14 +190,31 @@ def __generate_benchmark_dict(
189
190
if algebra in registered_algebra :
190
191
continue
191
192
193
+ # Parse the detector setup
194
+ setup = ""
195
+ add_delim = lambda s : s + ", "
196
+ if not args .grid_file :
197
+ setup = setup + "no grids"
198
+ if not args .material_file :
199
+ if len (setup ) != 0 :
200
+ setup = add_delim (setup )
201
+ setup = setup + "no mat."
202
+ if not args .covariance_transport :
203
+ if len (setup ) != 0 :
204
+ setup = add_delim (setup )
205
+ setup = setup + "no cov."
206
+
192
207
binary = (
193
208
f"{ bindir } /detray_propagation_{ bench_type } _{ bknd .lower ()} _{ algebra } "
194
209
)
195
210
file_bknd_name = bknd_name .replace (" " , "_" )
196
- data_file = f"{ det_name } _{ bench_type } _{ bknd .lower ()} _{ file_bknd_name } _{ algebra } .json"
211
+ file_setup = setup .replace (" " , "_" )
212
+ file_setup = file_setup .replace ("," , "" )
213
+ file_setup = file_setup .replace ("." , "" )
214
+ data_file = f"{ det_name } _{ bench_type } _{ bknd .lower ()} _{ file_bknd_name } _{ algebra } _{ file_setup } .json"
197
215
198
216
metadata = benchmark_metadata (
199
- name = bknd_name , algebra = algebra , file = data_file
217
+ name = bknd_name , algebra = algebra , setup = setup , file = data_file
200
218
)
201
219
202
220
# If the results should not be read from file, run the benchmark
@@ -314,7 +332,7 @@ def __main__():
314
332
logging .debug ("Detector: " + det_name )
315
333
316
334
# Check user provided benchmark result files
317
- input_data_files = __parse_input_data_files (args )
335
+ input_data_files = __parse_input_data_files (args , logging )
318
336
319
337
# Unique set of algebra plugins to be included in the plots
320
338
algebra_plugins = set (args .algebra_plugins )
@@ -368,14 +386,23 @@ def __main__():
368
386
369
387
plot_factory = plt_factory (out_dir , logging )
370
388
389
+ def make_label (algebra , setup ):
390
+ label = f"{ algebra } "
391
+ if len (setup ) != 0 :
392
+ label = label + f" ({ setup } )"
393
+ return label
394
+
371
395
# Plot all data files per hardware backend
372
396
# (comparison of different algebra-plugins)
373
397
for bknd , metadata_dict in benchmarks .items ():
374
398
for bknd_name , metadata_list in metadata_dict .items ():
375
399
for metadata in metadata_list :
376
400
# Get file list and plot labels
377
401
files = [metadata .file for metadata in metadata_list ]
378
- plot_labels = [metadata .algebra for metadata in metadata_list ]
402
+ plot_labels = [
403
+ make_label (metadata .algebra , metadata .setup )
404
+ for metadata in metadata_list
405
+ ]
379
406
380
407
file_bknd_name = bknd_name .replace (" " , "_" )
381
408
plot_benchmark_data (
@@ -412,7 +439,8 @@ def __main__():
412
439
for metadata in metadata_list :
413
440
if algebra == metadata .algebra :
414
441
data_files_per_plugin .append (metadata .file )
415
- plot_labels .append (f"{ bknd } : { bknd_name } " )
442
+ label = make_label (f"{ bknd } : { bknd_name } " , metadata .setup )
443
+ plot_labels .append (label )
416
444
417
445
plot_benchmark_data (
418
446
logging ,
@@ -432,7 +460,10 @@ def __main__():
432
460
for metadata in metadata_list :
433
461
# Get file list and plot labels
434
462
files = [metadata .file for metadata in metadata_list ]
435
- plot_labels = [metadata .algebra for metadata in metadata_list ]
463
+ plot_labels = [
464
+ make_label (metadata .algebra , metadata .setup )
465
+ for metadata in metadata_list
466
+ ]
436
467
437
468
plot_scaling_data (
438
469
logging ,
0 commit comments