Commit df63061716852876316c375abf71fd4c727b07f2
1 parent
74c93801
Remove need for 'math' module in show_spectrum.py (#2938)
Showing
2 changed files
with
56 additions
and
6 deletions
examples/show_spectrum.py
| @@ -19,7 +19,6 @@ | @@ -19,7 +19,6 @@ | ||
| 19 | # | 19 | # |
| 20 | # ========================================================================== | 20 | # ========================================================================== |
| 21 | import sys | 21 | import sys |
| 22 | -import math | ||
| 23 | try: | 22 | try: |
| 24 | import matplotlib.pyplot as plt | 23 | import matplotlib.pyplot as plt |
| 25 | plt.figure() | 24 | plt.figure() |
| @@ -177,8 +176,8 @@ def plot_dloglike(spec): | @@ -177,8 +176,8 @@ def plot_dloglike(spec): | ||
| 177 | """ | 176 | """ |
| 178 | # Establish the bounds on the x,y plot | 177 | # Establish the bounds on the x,y plot |
| 179 | ymin,ymax = plt.gca().get_ylim() | 178 | ymin,ymax = plt.gca().get_ylim() |
| 180 | - ymin = math.log10(ymin) | ||
| 181 | - ymax = math.log10(ymax) | 179 | + ymin = np.log10(ymin) |
| 180 | + ymax = np.log10(ymax) | ||
| 182 | steps = 1000 | 181 | steps = 1000 |
| 183 | y_bounds = np.linspace(ymin, ymax, steps+1) | 182 | y_bounds = np.linspace(ymin, ymax, steps+1) |
| 184 | fluxpnts = [] | 183 | fluxpnts = [] |
test/test_csspec.py
| @@ -234,6 +234,32 @@ class Test(test): | @@ -234,6 +234,32 @@ class Test(test): | ||
| 234 | # Check result file | 234 | # Check result file |
| 235 | self._check_result_file('csspec_py5.fits', 2) | 235 | self._check_result_file('csspec_py5.fits', 2) |
| 236 | 236 | ||
| 237 | + # Set-up unbinned csspec with likelihood profile (no multi-processing) | ||
| 238 | + spec = cscripts.csspec() | ||
| 239 | + spec['inobs'] = self._events | ||
| 240 | + spec['inmodel'] = self._model | ||
| 241 | + spec['srcname'] = 'Crab' | ||
| 242 | + spec['caldb'] = self._caldb | ||
| 243 | + spec['irf'] = self._irf | ||
| 244 | + spec['method'] = 'AUTO' | ||
| 245 | + spec['ebinalg'] = 'LOG' | ||
| 246 | + spec['enumbins'] = 2 | ||
| 247 | + spec['emin'] = 1.0 | ||
| 248 | + spec['emax'] = 100.0 | ||
| 249 | + spec['nthreads'] = 1 | ||
| 250 | + spec['dll_sigstep'] = 2.5 | ||
| 251 | + spec['dll_sigmax'] = 5 | ||
| 252 | + spec['outfile'] = 'csspec_py6.fits' | ||
| 253 | + spec['logfile'] = 'csspec_py6.log' | ||
| 254 | + spec['chatter'] = 2 | ||
| 255 | + spec['publish'] = True | ||
| 256 | + | ||
| 257 | + # Run csspec script | ||
| 258 | + spec.execute() | ||
| 259 | + | ||
| 260 | + # Check result file | ||
| 261 | + self._check_result_file('csspec_py6.fits', 2, 5) | ||
| 262 | + | ||
| 237 | # Return | 263 | # Return |
| 238 | return | 264 | return |
| 239 | 265 | ||
| @@ -277,7 +303,7 @@ class Test(test): | @@ -277,7 +303,7 @@ class Test(test): | ||
| 277 | return | 303 | return |
| 278 | 304 | ||
| 279 | # Check result file | 305 | # Check result file |
| 280 | - def _check_result_file(self, filename, bins): | 306 | + def _check_result_file(self, filename, bins, lbins=0): |
| 281 | """ | 307 | """ |
| 282 | Check result file | 308 | Check result file |
| 283 | """ | 309 | """ |
| @@ -290,8 +316,33 @@ class Test(test): | @@ -290,8 +316,33 @@ class Test(test): | ||
| 290 | # Check dimensions | 316 | # Check dimensions |
| 291 | self.test_value(spectrum.nrows(), bins, | 317 | self.test_value(spectrum.nrows(), bins, |
| 292 | 'Check for %d rows in spectrum' % bins) | 318 | 'Check for %d rows in spectrum' % bins) |
| 293 | - self.test_value(spectrum.ncols(), 8, | ||
| 294 | - 'Check for 8 columns in spectrum') | ||
| 295 | 319 | ||
| 320 | + # Make sure that the header keywords are present | ||
| 321 | + req_keywords = ['SED_TYPE', 'UL_CONF'] | ||
| 322 | + for keyword in req_keywords: | ||
| 323 | + self.test_assert(spectrum.has_card(keyword), | ||
| 324 | + 'Check that SED has \'%s\' keyword' % keyword) | ||
| 325 | + | ||
| 326 | + # Do checks specific to likelihood profile table | ||
| 327 | + flux_keys = spectrum.card('SED_TYPE').string() | ||
| 328 | + flux_keys = flux_keys.split(',') | ||
| 329 | + if lbins > 0: | ||
| 330 | + # Should be 13 columns | ||
| 331 | + self.test_value(spectrum.ncols(), 13, | ||
| 332 | + 'Check for 8 columns in spectrum') | ||
| 333 | + self.test_value(flux_keys[0], 'likelihood', | ||
| 334 | + 'Check that \'SED_TYPE\' card is \'likelihood\'') | ||
| 335 | + # Make sure the profile has the appropriate entries | ||
| 336 | + self.test_value(spectrum['norm_scan'].elements(0), lbins, | ||
| 337 | + 'Check for %d rows in flux scan profile' % lbins) | ||
| 338 | + self.test_value(spectrum['dloglike_scan'].elements(0), lbins, | ||
| 339 | + 'Check for %d rows in likelihood profile' % lbins) | ||
| 340 | + else: | ||
| 341 | + # Should be 10 columns | ||
| 342 | + self.test_value(spectrum.ncols(), 10, | ||
| 343 | + 'Check for 8 columns in spectrum') | ||
| 344 | + self.test_value(flux_keys[0], 'norm', | ||
| 345 | + 'Check that \'SED_TYPE\' card is \'norm\'') | ||
| 346 | + | ||
| 296 | # Return | 347 | # Return |
| 297 | return | 348 | return |