Commit 9d485f9c573661f485ef04f72cda14414b91a7e5
1 parent
9117c45c
Integrate code
Showing
9 changed files
with
62 additions
and
19 deletions
ChangeLog
NEWS
| 1 | 1 | New Features and Important Changes in ctools 1.7.0 |
| 2 | 2 | |
| 3 | -5 June 2019 | |
| 3 | +10 July 2019 | |
| 4 | 4 | |
| 5 | 5 | |
| 6 | 6 | Introduction |
| ... | ... | @@ -116,7 +116,9 @@ None |
| 116 | 116 | |
| 117 | 117 | ctskymap - CTA sky mapping |
| 118 | 118 | -------------------------- |
| 119 | -None | |
| 119 | +Added ctskymap::fits() method to allow access of FITS file object before | |
| 120 | +saving the object to disk. This allows manipulation of ctskymap results without | |
| 121 | +writing a FITS file (#2925). | |
| 120 | 122 | |
| 121 | 123 | |
| 122 | 124 | cttsmap - Generation of Test Statistic map |
| ... | ... | @@ -216,7 +218,13 @@ None |
| 216 | 218 | |
| 217 | 219 | csphagen - Generate On/Off observations |
| 218 | 220 | --------------------------------------- |
| 219 | -None | |
| 221 | +Setting the exclusion map via csphagen.exclusion_map(object=<map>) will now | |
| 222 | +actually use the exclusion map even if the "inexclusion" parameter is not set. | |
| 223 | +Before, the only exclusion that would be used was the exclusion passed via the | |
| 224 | +"inexclusion" "parameter. If re-running csphagen using the "inexclusion" | |
| 225 | +parameter after setting the map with csphagen.exclusion_map() you should first | |
| 226 | +call csphagen.exclusion_map(object=gammalib.GSkyRegionMap()). This makes the | |
| 227 | +map empty and csphagen then checks the "inexclusion" "parameter (#2925). | |
| 220 | 228 | |
| 221 | 229 | |
| 222 | 230 | csphasecrv - Generate phase curve |
| ... | ... | @@ -311,7 +319,9 @@ None |
| 311 | 319 | |
| 312 | 320 | Examples |
| 313 | 321 | -------- |
| 314 | -None | |
| 322 | +The example scripts show_butterfly.py, show_spectrum.py, show_residuals.py | |
| 323 | +and show_significance_distribution.py can now be run using objects that only | |
| 324 | +exist in memory (#2925). | |
| 315 | 325 | |
| 316 | 326 | |
| 317 | 327 | caldb | ... | ... |
doc/source/admin/release_history/1.7.rst
examples/show_butterfly.py
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | # ========================================================================== |
| 3 | 3 | # Shows butterfly diagram created with ctbutterfly |
| 4 | 4 | # |
| 5 | -# Copyright (C) 2014-2017 Michael Mayer | |
| 5 | +# Copyright (C) 2014-2019 Michael Mayer | |
| 6 | 6 | # |
| 7 | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | 8 | # it under the terms of the GNU General Public License as published by |
| ... | ... | @@ -30,6 +30,9 @@ except (ImportError, RuntimeError): |
| 30 | 30 | sys.exit() |
| 31 | 31 | |
| 32 | 32 | |
| 33 | +# ======================================== # | |
| 34 | +# Get butterfly diagram values from a file # | |
| 35 | +# ======================================== # | |
| 33 | 36 | def get_butterfly_file(filename): |
| 34 | 37 | """ |
| 35 | 38 | Get butterfly diagram values |
| ... | ... | @@ -41,14 +44,19 @@ def get_butterfly_file(filename): |
| 41 | 44 | |
| 42 | 45 | Returns |
| 43 | 46 | ------- |
| 44 | - See `get_butterfly_csv` | |
| 47 | + btrfly : dict | |
| 48 | + Python dictionary defining butterfly plot and best fit spectrum | |
| 45 | 49 | """ |
| 46 | 50 | # Read butterfly file |
| 47 | 51 | csv = gammalib.GCsv(filename) |
| 48 | 52 | |
| 53 | + # Return dictionary | |
| 49 | 54 | return get_butterfly_csv(csv) |
| 50 | 55 | |
| 51 | 56 | |
| 57 | +# =============================================== # | |
| 58 | +# Get butterfly diagram values from a GCsv object # | |
| 59 | +# =============================================== # | |
| 52 | 60 | def get_butterfly_csv(csv): |
| 53 | 61 | """ |
| 54 | 62 | Get butterfly diagram values from GCsv object |
| ... | ... | @@ -60,7 +68,8 @@ def get_butterfly_csv(csv): |
| 60 | 68 | |
| 61 | 69 | Returns |
| 62 | 70 | ------- |
| 63 | - 'dict' defining butterfly plot and best fit spectrum | |
| 71 | + btrfly : dict | |
| 72 | + Python dictionary defining butterfly plot and best fit spectrum | |
| 64 | 73 | """ |
| 65 | 74 | # Initialise arrays to be filled |
| 66 | 75 | btrfly = { |
| ... | ... | @@ -94,6 +103,7 @@ def get_butterfly_csv(csv): |
| 94 | 103 | low_error = max(csv.real(index,3)*conv, 1e-26) |
| 95 | 104 | btrfly['butterfly_y'].append(low_error) |
| 96 | 105 | |
| 106 | + # Return dictionary | |
| 97 | 107 | return btrfly |
| 98 | 108 | |
| 99 | 109 | |
| ... | ... | @@ -113,14 +123,14 @@ def plot_butterfly(filename, plotfile): |
| 113 | 123 | """ |
| 114 | 124 | # Read butterfly file |
| 115 | 125 | btrfly = get_butterfly_file(filename) |
| 116 | - | |
| 126 | + | |
| 117 | 127 | # Plot the butterfly and spectral line |
| 118 | 128 | plt.figure() |
| 119 | 129 | plt.loglog() |
| 120 | 130 | plt.grid() |
| 121 | 131 | plt.xlabel('Energy (TeV)') |
| 122 | 132 | plt.ylabel(r'E$^2$ $\times$ dN/dE (erg cm$^{-2}$ s$^{-1}$)') |
| 123 | - | |
| 133 | + | |
| 124 | 134 | # Plot the butterfly and spectral line |
| 125 | 135 | plt.plot(btrfly['line_x'],btrfly['line_y'],color='black',ls='-') |
| 126 | 136 | plt.fill(btrfly['butterfly_x'],btrfly['butterfly_y'],color='green',alpha=0.5) | ... | ... |
examples/show_residuals.py
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | # ========================================================================== |
| 3 | 3 | # Display residuals generated by csresspec |
| 4 | 4 | # |
| 5 | -# Copyright (C) 2017-2018 Luigi Tibaldo | |
| 5 | +# Copyright (C) 2017-2019 Luigi Tibaldo | |
| 6 | 6 | # |
| 7 | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | 8 | # it under the terms of the GNU General Public License as published by |
| ... | ... | @@ -147,7 +147,7 @@ def plot_residuals(filename, plotfile, hdu, fits=None): |
| 147 | 147 | Plot file name |
| 148 | 148 | hdu : int |
| 149 | 149 | Number of observation to plot |
| 150 | - fits : `~gammalib.GFits` | |
| 150 | + fits : `~gammalib.GFits`, optional | |
| 151 | 151 | GFits object containing csresspec results |
| 152 | 152 | """ |
| 153 | 153 | # Read spectrum file | ... | ... |
examples/show_significance_distribution.py
| ... | ... | @@ -171,7 +171,7 @@ def skymap_to_numpy_ndarray(skymap): |
| 171 | 171 | for ipix in range(npix): |
| 172 | 172 | array[ipix] = skymap[ipix] |
| 173 | 173 | |
| 174 | - # Return | |
| 174 | + # Return array | |
| 175 | 175 | return array |
| 176 | 176 | |
| 177 | 177 | |
| ... | ... | @@ -205,6 +205,7 @@ def regions_to_map(regions, init_map): |
| 205 | 205 | # Add ds9 region map to global map |
| 206 | 206 | regions_map += ds9_map.map() |
| 207 | 207 | |
| 208 | + # Return regions map | |
| 208 | 209 | return regions_map |
| 209 | 210 | |
| 210 | 211 | |
| ... | ... | @@ -243,7 +244,7 @@ def read_regions(fpath): |
| 243 | 244 | raise RuntimeError('Invalid regions file detected. Please provide ' + |
| 244 | 245 | 'a valid ds9 or FITS WCS regions file.') |
| 245 | 246 | |
| 246 | - # Return | |
| 247 | + # Return regions | |
| 247 | 248 | return regions |
| 248 | 249 | |
| 249 | 250 | |
| ... | ... | @@ -323,15 +324,18 @@ def plot_significance_distribution(mappath, nbins, sigma_min, sigma_max, |
| 323 | 324 | includedregs=include_regs, excludedregs=exclude_regs, |
| 324 | 325 | title=title, plotfile=plotfile) |
| 325 | 326 | |
| 327 | + # Return | |
| 326 | 328 | return |
| 327 | 329 | |
| 328 | 330 | |
| 331 | +# ========================== # | |
| 332 | +# Generate significance plot # | |
| 333 | +# ========================== # | |
| 329 | 334 | def plot_significance(sigmap, nbins, sigma_min, sigma_max, |
| 330 | 335 | includedregs=None, excludedregs=None, |
| 331 | 336 | title='', plotfile=''): |
| 332 | 337 | """ |
| 333 | - Plot the significance distribution and return instance of pyplot | |
| 334 | - figure and axis. | |
| 338 | + Generate significance plot | |
| 335 | 339 | |
| 336 | 340 | Parameters |
| 337 | 341 | ---------- | ... | ... |
examples/show_spectrum.py
| ... | ... | @@ -30,6 +30,9 @@ import gammalib |
| 30 | 30 | import cscripts |
| 31 | 31 | |
| 32 | 32 | |
| 33 | +# ===================================== # | |
| 34 | +# Extract the spectrum info from a file # | |
| 35 | +# ===================================== # | |
| 33 | 36 | def get_spectrum_file(filename): |
| 34 | 37 | """ |
| 35 | 38 | Extract the spectrum info from a file for plotting |
| ... | ... | @@ -41,13 +44,19 @@ def get_spectrum_file(filename): |
| 41 | 44 | |
| 42 | 45 | Returns |
| 43 | 46 | ------- |
| 44 | - Python dictionary defining spectral plot parameters | |
| 47 | + spec : dict | |
| 48 | + Python dictionary defining spectral plot parameters | |
| 45 | 49 | """ |
| 46 | 50 | # Read spectrum file |
| 47 | 51 | fits = gammalib.GFits(filename) |
| 52 | + | |
| 53 | + # Return dictionary | |
| 48 | 54 | return get_spectrum_fits(fits) |
| 49 | 55 | |
| 50 | 56 | |
| 57 | +# ============================================= # | |
| 58 | +# Extract the spectrum info from a GFits object # | |
| 59 | +# ============================================= # | |
| 51 | 60 | def get_spectrum_fits(fits): |
| 52 | 61 | """ |
| 53 | 62 | Extract the spectrum info from a GFits object |
| ... | ... | @@ -59,7 +68,8 @@ def get_spectrum_fits(fits): |
| 59 | 68 | |
| 60 | 69 | Returns |
| 61 | 70 | ------- |
| 62 | - Python dictionary defining spectral plot parameters | |
| 71 | + spec : dict | |
| 72 | + Python dictionary defining spectral plot parameters | |
| 63 | 73 | """ |
| 64 | 74 | # Read spectrum objects |
| 65 | 75 | table = fits.table(1) |
| ... | ... | @@ -113,6 +123,7 @@ def get_spectrum_fits(fits): |
| 113 | 123 | # Set upper limit errors |
| 114 | 124 | spec['yerr'] = [0.6 * x for x in spec['ul_flux']] |
| 115 | 125 | |
| 126 | + # Return dictionary | |
| 116 | 127 | return spec |
| 117 | 128 | |
| 118 | 129 | |
| ... | ... | @@ -130,6 +141,7 @@ def plot_spectrum(filename, plotfile): |
| 130 | 141 | plotfile : str |
| 131 | 142 | Plot file name |
| 132 | 143 | """ |
| 144 | + # Get spectrum parameters | |
| 133 | 145 | spec = get_spectrum_file(filename) |
| 134 | 146 | |
| 135 | 147 | # Create the plot | ... | ... |
src/ctskymap/ctskymap.cpp
| ... | ... | @@ -291,6 +291,9 @@ void ctskymap::save(void) |
| 291 | 291 | ***************************************************************************/ |
| 292 | 292 | void ctskymap::construct_fits(void) |
| 293 | 293 | { |
| 294 | + // Clear FITS object | |
| 295 | + m_fits.clear(); | |
| 296 | + | |
| 294 | 297 | // Write sky map into FITS object |
| 295 | 298 | write_map(m_fits, m_skymap, "SKYMAP"); |
| 296 | 299 | ... | ... |
src/ctskymap/ctskymap.hpp
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | * ctskymap - Sky mapping tool * |
| 3 | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2010-2018 by Juergen Knoedlseder * | |
| 4 | + * copyright (C) 2010-2019 by Juergen Knoedlseder * | |
| 5 | 5 | * ----------------------------------------------------------------------- * |
| 6 | 6 | * * |
| 7 | 7 | * This program is free software: you can redistribute it and/or modify * | ... | ... |