Commit fb95b2f25c1f0c84f23ead6759a66ac4fd5bc903
1 parent
4380d4e2
Correct start time in CTA analysis benchmark.
The start time tstart was reused for the computation of the start time of the function execution, leading to invalid time intervals in the ctobssim step.
Showing
1 changed file
with
34 additions
and
33 deletions
examples/benchmark_cta_analysis.py
| @@ -32,12 +32,11 @@ except: | @@ -32,12 +32,11 @@ except: | ||
| 32 | # ========================== # | 32 | # ========================== # |
| 33 | # Unbinned analysis pipeline # | 33 | # Unbinned analysis pipeline # |
| 34 | # ========================== # | 34 | # ========================== # |
| 35 | -def unbinned_pipeline(duration): | 35 | +def unbinned_pipeline(model_name, duration): |
| 36 | """ | 36 | """ |
| 37 | Unbinned analysis pipeline. | 37 | Unbinned analysis pipeline. |
| 38 | """ | 38 | """ |
| 39 | # Set script parameters | 39 | # Set script parameters |
| 40 | - model_name = "${CTOOLS}/share/models/crab.xml" | ||
| 41 | caldb = "prod2" | 40 | caldb = "prod2" |
| 42 | irf = "South_50h" | 41 | irf = "South_50h" |
| 43 | ra = 83.63 | 42 | ra = 83.63 |
| @@ -50,7 +49,7 @@ def unbinned_pipeline(duration): | @@ -50,7 +49,7 @@ def unbinned_pipeline(duration): | ||
| 50 | rad_select = 3.0 | 49 | rad_select = 3.0 |
| 51 | 50 | ||
| 52 | # Get start CPU time | 51 | # Get start CPU time |
| 53 | - tstart = time.clock() | 52 | + cpu_start = time.clock() |
| 54 | 53 | ||
| 55 | # Simulate events | 54 | # Simulate events |
| 56 | sim = ctools.ctobssim() | 55 | sim = ctools.ctobssim() |
| @@ -78,30 +77,29 @@ def unbinned_pipeline(duration): | @@ -78,30 +77,29 @@ def unbinned_pipeline(duration): | ||
| 78 | select.run() | 77 | select.run() |
| 79 | 78 | ||
| 80 | # Get ctlike start CPU time | 79 | # Get ctlike start CPU time |
| 81 | - tctlike = time.clock() | 80 | + cpu_ctlike = time.clock() |
| 82 | 81 | ||
| 83 | # Perform maximum likelihood fitting | 82 | # Perform maximum likelihood fitting |
| 84 | like = ctools.ctlike(select.obs()) | 83 | like = ctools.ctlike(select.obs()) |
| 85 | like.run() | 84 | like.run() |
| 86 | 85 | ||
| 87 | - # Get stop CPU time | ||
| 88 | - tstop = time.clock() | ||
| 89 | - telapsed = tstop - tstart | ||
| 90 | - tctlike = tstop - tctlike | 86 | + # Get stop CPU time and compute elapsed times |
| 87 | + cpu_stop = time.clock() | ||
| 88 | + cpu_elapsed = cpu_stop - cpu_start | ||
| 89 | + cpu_ctlike = cpu_stop - cpu_ctlike | ||
| 91 | 90 | ||
| 92 | # Return | 91 | # Return |
| 93 | - return telapsed, tctlike | 92 | + return cpu_elapsed, cpu_ctlike |
| 94 | 93 | ||
| 95 | 94 | ||
| 96 | # ======================== # | 95 | # ======================== # |
| 97 | # Binned analysis pipeline # | 96 | # Binned analysis pipeline # |
| 98 | # ======================== # | 97 | # ======================== # |
| 99 | -def binned_pipeline(duration): | 98 | +def binned_pipeline(model_name, duration): |
| 100 | """ | 99 | """ |
| 101 | Binned analysis pipeline. | 100 | Binned analysis pipeline. |
| 102 | """ | 101 | """ |
| 103 | # Set script parameters | 102 | # Set script parameters |
| 104 | - model_name = "${CTOOLS}/share/models/crab.xml" | ||
| 105 | caldb = "prod2" | 103 | caldb = "prod2" |
| 106 | irf = "South_50h" | 104 | irf = "South_50h" |
| 107 | ra = 83.63 | 105 | ra = 83.63 |
| @@ -119,7 +117,7 @@ def binned_pipeline(duration): | @@ -119,7 +117,7 @@ def binned_pipeline(duration): | ||
| 119 | proj = "CAR" | 117 | proj = "CAR" |
| 120 | 118 | ||
| 121 | # Get start CPU time | 119 | # Get start CPU time |
| 122 | - tstart = time.clock() | 120 | + cpu_start = time.clock() |
| 123 | 121 | ||
| 124 | # Simulate events | 122 | # Simulate events |
| 125 | sim = ctools.ctobssim() | 123 | sim = ctools.ctobssim() |
| @@ -151,30 +149,29 @@ def binned_pipeline(duration): | @@ -151,30 +149,29 @@ def binned_pipeline(duration): | ||
| 151 | bin.run() | 149 | bin.run() |
| 152 | 150 | ||
| 153 | # Get ctlike start CPU time | 151 | # Get ctlike start CPU time |
| 154 | - tctlike = time.clock() | 152 | + cpu_ctlike = time.clock() |
| 155 | 153 | ||
| 156 | # Perform maximum likelihood fitting | 154 | # Perform maximum likelihood fitting |
| 157 | like = ctools.ctlike(bin.obs()) | 155 | like = ctools.ctlike(bin.obs()) |
| 158 | like.run() | 156 | like.run() |
| 159 | 157 | ||
| 160 | - # Get stop CPU time | ||
| 161 | - tstop = time.clock() | ||
| 162 | - telapsed = tstop - tstart | ||
| 163 | - tctlike = tstop - tctlike | 158 | + # Get stop CPU time and compute elapsed times |
| 159 | + cpu_stop = time.clock() | ||
| 160 | + cpu_elapsed = cpu_stop - cpu_start | ||
| 161 | + cpu_ctlike = cpu_stop - cpu_ctlike | ||
| 164 | 162 | ||
| 165 | # Return | 163 | # Return |
| 166 | - return telapsed, tctlike | 164 | + return cpu_elapsed, cpu_ctlike |
| 167 | 165 | ||
| 168 | 166 | ||
| 169 | # ========================= # | 167 | # ========================= # |
| 170 | # Stacked analysis pipeline # | 168 | # Stacked analysis pipeline # |
| 171 | # ========================= # | 169 | # ========================= # |
| 172 | -def stacked_pipeline(duration): | 170 | +def stacked_pipeline(model_name, duration): |
| 173 | """ | 171 | """ |
| 174 | Stacked analysis pipeline. | 172 | Stacked analysis pipeline. |
| 175 | """ | 173 | """ |
| 176 | # Set script parameters | 174 | # Set script parameters |
| 177 | - model_name = "${CTOOLS}/share/models/crab.xml" | ||
| 178 | caldb = "prod2" | 175 | caldb = "prod2" |
| 179 | irf = "South_50h" | 176 | irf = "South_50h" |
| 180 | ra = 83.63 | 177 | ra = 83.63 |
| @@ -192,7 +189,7 @@ def stacked_pipeline(duration): | @@ -192,7 +189,7 @@ def stacked_pipeline(duration): | ||
| 192 | proj = "CAR" | 189 | proj = "CAR" |
| 193 | 190 | ||
| 194 | # Get start CPU time | 191 | # Get start CPU time |
| 195 | - tstart = time.clock() | 192 | + cpu_start = time.clock() |
| 196 | 193 | ||
| 197 | # Simulate events | 194 | # Simulate events |
| 198 | sim = ctools.ctobssim() | 195 | sim = ctools.ctobssim() |
| @@ -283,19 +280,19 @@ def stacked_pipeline(duration): | @@ -283,19 +280,19 @@ def stacked_pipeline(duration): | ||
| 283 | bin.obs()[0].response(expcube.expcube(), psfcube.psfcube(), bkgcube.bkgcube()) | 280 | bin.obs()[0].response(expcube.expcube(), psfcube.psfcube(), bkgcube.bkgcube()) |
| 284 | 281 | ||
| 285 | # Get ctlike start CPU time | 282 | # Get ctlike start CPU time |
| 286 | - tctlike = time.clock() | 283 | + cpu_ctlike = time.clock() |
| 287 | 284 | ||
| 288 | # Perform maximum likelihood fitting | 285 | # Perform maximum likelihood fitting |
| 289 | like = ctools.ctlike(bin.obs()) | 286 | like = ctools.ctlike(bin.obs()) |
| 290 | like.run() | 287 | like.run() |
| 291 | 288 | ||
| 292 | - # Get stop CPU time | ||
| 293 | - tstop = time.clock() | ||
| 294 | - telapsed = tstop - tstart | ||
| 295 | - tctlike = tstop - tctlike | 289 | + # Get stop CPU time and compute elapsed times |
| 290 | + cpu_stop = time.clock() | ||
| 291 | + cpu_elapsed = cpu_stop - cpu_start | ||
| 292 | + cpu_ctlike = cpu_stop - cpu_ctlike | ||
| 296 | 293 | ||
| 297 | # Return | 294 | # Return |
| 298 | - return telapsed, tctlike | 295 | + return cpu_elapsed, cpu_ctlike |
| 299 | 296 | ||
| 300 | 297 | ||
| 301 | #==========================# | 298 | #==========================# |
| @@ -304,7 +301,11 @@ def stacked_pipeline(duration): | @@ -304,7 +301,11 @@ def stacked_pipeline(duration): | ||
| 304 | if __name__ == '__main__': | 301 | if __name__ == '__main__': |
| 305 | """ | 302 | """ |
| 306 | """ | 303 | """ |
| 307 | - # Dump header | 304 | + # Initialise parameters |
| 305 | + title = "CTA analysis benchmark" | ||
| 306 | + model_name = "${CTOOLS}/share/models/crab.xml" | ||
| 307 | + | ||
| 308 | + # Log header | ||
| 308 | print("*************************************") | 309 | print("*************************************") |
| 309 | print("* CTA analysis benchmark *") | 310 | print("* CTA analysis benchmark *") |
| 310 | print("*************************************") | 311 | print("*************************************") |
| @@ -324,9 +325,9 @@ if __name__ == '__main__': | @@ -324,9 +325,9 @@ if __name__ == '__main__': | ||
| 324 | for i in range(10): | 325 | for i in range(10): |
| 325 | 326 | ||
| 326 | # Perform analyses | 327 | # Perform analyses |
| 327 | - t_unbinned, ct_unbinned = unbinned_pipeline(duration) | ||
| 328 | - t_binned, ct_binned = binned_pipeline(duration) | ||
| 329 | - t_stacked, ct_stacked = stacked_pipeline(duration) | 328 | + t_unbinned, ct_unbinned = unbinned_pipeline(model_name, duration) |
| 329 | + t_binned, ct_binned = binned_pipeline(model_name, duration) | ||
| 330 | + t_stacked, ct_stacked = stacked_pipeline(model_name, duration) | ||
| 330 | 331 | ||
| 331 | # Collect results | 332 | # Collect results |
| 332 | a_duration.append(duration/3600.0) | 333 | a_duration.append(duration/3600.0) |
| @@ -348,14 +349,14 @@ if __name__ == '__main__': | @@ -348,14 +349,14 @@ if __name__ == '__main__': | ||
| 348 | # Optionally plot results | 349 | # Optionally plot results |
| 349 | if has_matplotlib: | 350 | if has_matplotlib: |
| 350 | plt.figure(1) | 351 | plt.figure(1) |
| 351 | - plt.title("CTA analysis benchmark") | 352 | + plt.title(title) |
| 352 | plt.loglog(a_duration, a_unbinned, 'ro-', label='unbinned') | 353 | plt.loglog(a_duration, a_unbinned, 'ro-', label='unbinned') |
| 353 | plt.loglog(a_duration, a_binned, 'bo-', label='binned') | 354 | plt.loglog(a_duration, a_binned, 'bo-', label='binned') |
| 354 | plt.loglog(a_duration, a_stacked, 'go-', label='stacked') | 355 | plt.loglog(a_duration, a_stacked, 'go-', label='stacked') |
| 355 | plt.loglog(a_duration, c_unbinned, 'ro--') | 356 | plt.loglog(a_duration, c_unbinned, 'ro--') |
| 356 | plt.loglog(a_duration, c_binned, 'bo--') | 357 | plt.loglog(a_duration, c_binned, 'bo--') |
| 357 | plt.loglog(a_duration, c_stacked, 'go--') | 358 | plt.loglog(a_duration, c_stacked, 'go--') |
| 358 | - plt.xlabel("Duration (hours)") | 359 | + plt.xlabel("Observation duration (hours)") |
| 359 | plt.ylabel("CPU time (seconds)") | 360 | plt.ylabel("CPU time (seconds)") |
| 360 | plt.legend(loc="lower right") | 361 | plt.legend(loc="lower right") |
| 361 | plt.show() | 362 | plt.show() |