Commit bdcd55cce0d77483e56329b88dd206f22ef1464e
1 parent
15aa103b
Unify interface of example scripts (#1828)
All example scripts now use the cscripts.ioutils.get_args_options() function to get arguments and options.
Showing
13 changed files
with
400 additions
and
292 deletions
cscripts/ioutils.py
| @@ -90,7 +90,7 @@ def get_args_options(options, usage): | @@ -90,7 +90,7 @@ def get_args_options(options, usage): | ||
| 90 | # If there are no command line arguments then show usage string and | 90 | # If there are no command line arguments then show usage string and |
| 91 | # exit | 91 | # exit |
| 92 | if len(sys.argv) < 1: | 92 | if len(sys.argv) < 1: |
| 93 | - print(usage) | 93 | + print('Usage: %s' % usage) |
| 94 | sys.exit() | 94 | sys.exit() |
| 95 | 95 | ||
| 96 | # First possible option is element 1 | 96 | # First possible option is element 1 |
| @@ -116,13 +116,13 @@ def get_args_options(options, usage): | @@ -116,13 +116,13 @@ def get_args_options(options, usage): | ||
| 116 | try: | 116 | try: |
| 117 | option['value'] = str(sys.argv[i]) | 117 | option['value'] = str(sys.argv[i]) |
| 118 | except: | 118 | except: |
| 119 | - print(usage) | 119 | + print('Usage: %s' % usage) |
| 120 | sys.exit() | 120 | sys.exit() |
| 121 | 121 | ||
| 122 | # ... there is no following parameter, hence write out usage | 122 | # ... there is no following parameter, hence write out usage |
| 123 | # and quite | 123 | # and quite |
| 124 | else: | 124 | else: |
| 125 | - print(usage) | 125 | + print('Usage: %s' % usage) |
| 126 | sys.exit() | 126 | sys.exit() |
| 127 | 127 | ||
| 128 | # We can break now as every option should only occur once | 128 | # We can break now as every option should only occur once |
examples/make_spectrum.py
| @@ -25,9 +25,9 @@ try: | @@ -25,9 +25,9 @@ try: | ||
| 25 | import matplotlib.pyplot as plt | 25 | import matplotlib.pyplot as plt |
| 26 | plt.figure() | 26 | plt.figure() |
| 27 | plt.close() | 27 | plt.close() |
| 28 | - has_matplotlib = True | ||
| 29 | except: | 28 | except: |
| 30 | - has_matplotlib = False | 29 | + print('This script needs the "matplotlib" module') |
| 30 | + sys.exit() | ||
| 31 | 31 | ||
| 32 | 32 | ||
| 33 | # =============== # | 33 | # =============== # |
| @@ -94,7 +94,7 @@ def make_spectrum(datadir): | @@ -94,7 +94,7 @@ def make_spectrum(datadir): | ||
| 94 | # ============= # | 94 | # ============= # |
| 95 | # Plot spectrum # | 95 | # Plot spectrum # |
| 96 | # ============= # | 96 | # ============= # |
| 97 | -def plot_spectrum(spectrum, file=False): | 97 | +def plot_spectrum(spectrum, plotfile): |
| 98 | """ | 98 | """ |
| 99 | Plot spectrum | 99 | Plot spectrum |
| 100 | 100 | ||
| @@ -102,8 +102,8 @@ def plot_spectrum(spectrum, file=False): | @@ -102,8 +102,8 @@ def plot_spectrum(spectrum, file=False): | ||
| 102 | ---------- | 102 | ---------- |
| 103 | spectrum : `~gammalib.GFits` | 103 | spectrum : `~gammalib.GFits` |
| 104 | Spectrum FITS file | 104 | Spectrum FITS file |
| 105 | - file : bool, optional | ||
| 106 | - Plot into a file | 105 | + plotfile : str |
| 106 | + Plot filename | ||
| 107 | """ | 107 | """ |
| 108 | # Extract columns from spectrum file | 108 | # Extract columns from spectrum file |
| 109 | table = spectrum.table(1) | 109 | table = spectrum.table(1) |
| @@ -169,8 +169,8 @@ def plot_spectrum(spectrum, file=False): | @@ -169,8 +169,8 @@ def plot_spectrum(spectrum, file=False): | ||
| 169 | plt.ylabel(r'E$^{2}$dN/dE (erg cm$^{-2}$ s$^{-1}$)') | 169 | plt.ylabel(r'E$^{2}$dN/dE (erg cm$^{-2}$ s$^{-1}$)') |
| 170 | 170 | ||
| 171 | # Show spectrum or save it into file | 171 | # Show spectrum or save it into file |
| 172 | - if file: | ||
| 173 | - plt.savefig('example_spectrum.eps') | 172 | + if len(plotfile) > 0: |
| 173 | + plt.savefig(plotfile) | ||
| 174 | else: | 174 | else: |
| 175 | plt.show() | 175 | plt.show() |
| 176 | 176 | ||
| @@ -183,19 +183,22 @@ def plot_spectrum(spectrum, file=False): | @@ -183,19 +183,22 @@ def plot_spectrum(spectrum, file=False): | ||
| 183 | # ======================== # | 183 | # ======================== # |
| 184 | if __name__ == '__main__': | 184 | if __name__ == '__main__': |
| 185 | 185 | ||
| 186 | - # Get optional arguments | ||
| 187 | - if len(sys.argv) >= 2: | ||
| 188 | - datadir = sys.argv[1] | ||
| 189 | - else: | ||
| 190 | - datadir = 'data' | ||
| 191 | - if len(sys.argv) >= 3: | ||
| 192 | - file = True | ||
| 193 | - else: | ||
| 194 | - file = False | 186 | + # Set usage string |
| 187 | + usage = 'make_spectrum.py [-d datadir] [-p plotfile]' | ||
| 188 | + | ||
| 189 | + # Set default options | ||
| 190 | + options = [{'option': '-d', 'value': 'data'}, | ||
| 191 | + {'option': '-p', 'value': ''}] | ||
| 192 | + | ||
| 193 | + # Get arguments and options from command line arguments | ||
| 194 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 195 | + | ||
| 196 | + # Extract script parameters from options | ||
| 197 | + datadir = options[0]['value'] | ||
| 198 | + plotfile = options[1]['value'] | ||
| 195 | 199 | ||
| 196 | # Generate spectrum | 200 | # Generate spectrum |
| 197 | spectrum = make_spectrum(datadir) | 201 | spectrum = make_spectrum(datadir) |
| 198 | 202 | ||
| 199 | - # If matplotlib is installed then plot spectrum | ||
| 200 | - if has_matplotlib: | ||
| 201 | - plot_spectrum(spectrum, file=file) | 203 | + # Plot spectrum |
| 204 | + plot_spectrum(spectrum, plotfile) |
examples/show_butterfly.py
| @@ -20,6 +20,7 @@ | @@ -20,6 +20,7 @@ | ||
| 20 | # ========================================================================== | 20 | # ========================================================================== |
| 21 | import sys | 21 | import sys |
| 22 | import gammalib | 22 | import gammalib |
| 23 | +import cscripts | ||
| 23 | try: | 24 | try: |
| 24 | import matplotlib.pyplot as plt | 25 | import matplotlib.pyplot as plt |
| 25 | plt.figure() | 26 | plt.figure() |
| @@ -29,23 +30,22 @@ except: | @@ -29,23 +30,22 @@ except: | ||
| 29 | sys.exit() | 30 | sys.exit() |
| 30 | 31 | ||
| 31 | 32 | ||
| 32 | -# ============ # | ||
| 33 | -# Script entry # | ||
| 34 | -# ============ # | ||
| 35 | -if __name__ == '__main__': | ||
| 36 | - | ||
| 37 | - # Check for given butterfly file | ||
| 38 | - if len(sys.argv) < 2: | ||
| 39 | - sys.exit('Usage: show_butterfly.py butterfly.txt [file]') | ||
| 40 | - | ||
| 41 | - # Check if plotting in file is requested | ||
| 42 | - plotfile = '' | ||
| 43 | - if len(sys.argv) == 3: | ||
| 44 | - plotfile = sys.argv[2] | 33 | +# ============== # |
| 34 | +# Plot butterfly # | ||
| 35 | +# ============== # | ||
| 36 | +def plot_butterfly(filename, plotfile): | ||
| 37 | + """ | ||
| 38 | + Plot butterfly diagram | ||
| 45 | 39 | ||
| 46 | - # Read given butterfly file | ||
| 47 | - filename = sys.argv[1] | ||
| 48 | - csv = gammalib.GCsv(filename) | 40 | + Parameters |
| 41 | + ---------- | ||
| 42 | + filename : str | ||
| 43 | + Butterfly CSV file | ||
| 44 | + plotfile : str | ||
| 45 | + Plot filename | ||
| 46 | + """ | ||
| 47 | + # Read butterfly file | ||
| 48 | + csv = gammalib.GCsv(filename) | ||
| 49 | 49 | ||
| 50 | # Initialise arrays to be filled | 50 | # Initialise arrays to be filled |
| 51 | butterfly_x = [] | 51 | butterfly_x = [] |
| @@ -65,15 +65,13 @@ if __name__ == '__main__': | @@ -65,15 +65,13 @@ if __name__ == '__main__': | ||
| 65 | line_x.append(csv.real(row,0)) | 65 | line_x.append(csv.real(row,0)) |
| 66 | line_y.append(csv.real(row,1)) | 66 | line_y.append(csv.real(row,1)) |
| 67 | 67 | ||
| 68 | - # Loop over the rows backwards to compute the lower edge | ||
| 69 | - # of the confidence band | 68 | + # Loop over the rows backwards to compute the lower edge of the |
| 69 | + # confidence band | ||
| 70 | for row in range(nrows): | 70 | for row in range(nrows): |
| 71 | index = nrows - 1 - row | 71 | index = nrows - 1 - row |
| 72 | butterfly_x.append(csv.real(index,0)) | 72 | butterfly_x.append(csv.real(index,0)) |
| 73 | - low_error = csv.real(index,3) | ||
| 74 | - if low_error < 1e-26: | ||
| 75 | - low_error = 1e-26 | ||
| 76 | - butterfly_y.append(low_error) | 73 | + low_error = max(csv.real(index,3), 1e-26) |
| 74 | + butterfly_y.append(low_error) | ||
| 77 | 75 | ||
| 78 | # Plot the butterfly and spectral line | 76 | # Plot the butterfly and spectral line |
| 79 | plt.figure() | 77 | plt.figure() |
| @@ -90,3 +88,27 @@ if __name__ == '__main__': | @@ -90,3 +88,27 @@ if __name__ == '__main__': | ||
| 90 | plt.savefig(plotfile) | 88 | plt.savefig(plotfile) |
| 91 | else: | 89 | else: |
| 92 | plt.show() | 90 | plt.show() |
| 91 | + | ||
| 92 | + # Return | ||
| 93 | + return | ||
| 94 | + | ||
| 95 | + | ||
| 96 | +# ======================== # | ||
| 97 | +# Main routine entry point # | ||
| 98 | +# ======================== # | ||
| 99 | +if __name__ == '__main__': | ||
| 100 | + | ||
| 101 | + # Set usage string | ||
| 102 | + usage = 'show_butterfly.py [-p plotfile] file' | ||
| 103 | + | ||
| 104 | + # Set default options | ||
| 105 | + options = [{'option': '-p', 'value': ''}] | ||
| 106 | + | ||
| 107 | + # Get arguments and options from command line arguments | ||
| 108 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 109 | + | ||
| 110 | + # Extract script parameters from options | ||
| 111 | + plotfile = options[0]['value'] | ||
| 112 | + | ||
| 113 | + # Plot butterfly diagram | ||
| 114 | + plot_butterfly(args[0], plotfile) |
examples/show_model.py
| @@ -20,6 +20,7 @@ | @@ -20,6 +20,7 @@ | ||
| 20 | # ========================================================================== | 20 | # ========================================================================== |
| 21 | import sys | 21 | import sys |
| 22 | import gammalib | 22 | import gammalib |
| 23 | +import cscripts | ||
| 23 | try: | 24 | try: |
| 24 | import matplotlib.pyplot as plt | 25 | import matplotlib.pyplot as plt |
| 25 | plt.figure() | 26 | plt.figure() |
| @@ -32,7 +33,7 @@ except: | @@ -32,7 +33,7 @@ except: | ||
| 32 | # ======================= # | 33 | # ======================= # |
| 33 | # Plot spectral component # | 34 | # Plot spectral component # |
| 34 | # ======================= # | 35 | # ======================= # |
| 35 | -def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100, plotfile=''): | 36 | +def plot_spectrum(model, plotfile, emin=0.01, emax=100.0, enumbins=100): |
| 36 | """ | 37 | """ |
| 37 | Plot spectral model component | 38 | Plot spectral model component |
| 38 | 39 | ||
| @@ -40,14 +41,14 @@ def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100, plotfile=''): | @@ -40,14 +41,14 @@ def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100, plotfile=''): | ||
| 40 | ---------- | 41 | ---------- |
| 41 | model : `~gammalib.GModel` | 42 | model : `~gammalib.GModel` |
| 42 | Model | 43 | Model |
| 44 | + plotfile : str | ||
| 45 | + Name of plot file | ||
| 43 | emin : float, optional | 46 | emin : float, optional |
| 44 | Minimum energy (TeV) | 47 | Minimum energy (TeV) |
| 45 | emax : float, optional | 48 | emax : float, optional |
| 46 | Maximum energy (TeV) | 49 | Maximum energy (TeV) |
| 47 | enumbins : integer, optional | 50 | enumbins : integer, optional |
| 48 | Number of energy bins | 51 | Number of energy bins |
| 49 | - plotfile : str, optional | ||
| 50 | - Name of plot file | ||
| 51 | """ | 52 | """ |
| 52 | # Get spectral component | 53 | # Get spectral component |
| 53 | spectrum = model.spectral() | 54 | spectrum = model.spectral() |
| @@ -57,18 +58,12 @@ def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100, plotfile=''): | @@ -57,18 +58,12 @@ def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100, plotfile=''): | ||
| 57 | e_max = gammalib.GEnergy(emax, 'TeV') | 58 | e_max = gammalib.GEnergy(emax, 'TeV') |
| 58 | ebounds = gammalib.GEbounds(enumbins, e_min, e_max) | 59 | ebounds = gammalib.GEbounds(enumbins, e_min, e_max) |
| 59 | 60 | ||
| 60 | - # Setup model plot | 61 | + # Setup lists of x and y values |
| 61 | x = [] | 62 | x = [] |
| 62 | y = [] | 63 | y = [] |
| 63 | - min = 1.0e30 | ||
| 64 | - max = 0.0 | ||
| 65 | for i in range(enumbins): | 64 | for i in range(enumbins): |
| 66 | energy = ebounds.elogmean(i) | 65 | energy = ebounds.elogmean(i) |
| 67 | value = spectrum.eval(energy) | 66 | value = spectrum.eval(energy) |
| 68 | - if value > max: | ||
| 69 | - max = value | ||
| 70 | - if value < min: | ||
| 71 | - min = value | ||
| 72 | x.append(energy.TeV()) | 67 | x.append(energy.TeV()) |
| 73 | y.append(value) | 68 | y.append(value) |
| 74 | 69 | ||
| @@ -80,7 +75,6 @@ def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100, plotfile=''): | @@ -80,7 +75,6 @@ def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100, plotfile=''): | ||
| 80 | plt.loglog(x, y, color='red') | 75 | plt.loglog(x, y, color='red') |
| 81 | plt.xlabel('Energy (TeV)') | 76 | plt.xlabel('Energy (TeV)') |
| 82 | plt.ylabel(r'dN/dE (ph s$^{-1}$ cm$^{-2}$ MeV$^{-1}$)') | 77 | plt.ylabel(r'dN/dE (ph s$^{-1}$ cm$^{-2}$ MeV$^{-1}$)') |
| 83 | - #plt.ylim([min,max]) | ||
| 84 | 78 | ||
| 85 | # Show spectrum or save it into file | 79 | # Show spectrum or save it into file |
| 86 | if len(plotfile) > 0: | 80 | if len(plotfile) > 0: |
| @@ -92,31 +86,32 @@ def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100, plotfile=''): | @@ -92,31 +86,32 @@ def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100, plotfile=''): | ||
| 92 | return | 86 | return |
| 93 | 87 | ||
| 94 | 88 | ||
| 95 | -# ============= # | ||
| 96 | -# Script entry # | ||
| 97 | -# ============= # | 89 | +# ======================== # |
| 90 | +# Main routine entry point # | ||
| 91 | +# ======================== # | ||
| 98 | if __name__ == '__main__': | 92 | if __name__ == '__main__': |
| 99 | 93 | ||
| 100 | - # Check for model filename | ||
| 101 | - if len(sys.argv) < 2: | ||
| 102 | - sys.exit('Usage: show_model.py model.xml [name] [file]') | 94 | + # Set usage string |
| 95 | + usage = 'show_model.py [-n name] [-p plotfile] file' | ||
| 103 | 96 | ||
| 104 | - # Get optional model index | ||
| 105 | - if len(sys.argv) >= 3: | ||
| 106 | - name = sys.argv[2] | ||
| 107 | - else: | 97 | + # Set default options |
| 98 | + options = [{'option': '-n', 'value': ''}, | ||
| 99 | + {'option': '-p', 'value': ''}] | ||
| 100 | + | ||
| 101 | + # Get arguments and options from command line arguments | ||
| 102 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 103 | + | ||
| 104 | + # Extract script parameters from options | ||
| 105 | + name = options[0]['value'] | ||
| 106 | + plotfile = options[1]['value'] | ||
| 107 | + if len(name) == 0: | ||
| 108 | name = 0 | 108 | name = 0 |
| 109 | - if len(sys.argv) == 4: | ||
| 110 | - plotfile = sys.argv[3] | ||
| 111 | - else: | ||
| 112 | - plotfile = '' | ||
| 113 | 109 | ||
| 114 | # Read models XML file | 110 | # Read models XML file |
| 115 | - filename = sys.argv[1] | ||
| 116 | - models = gammalib.GModels(filename) | 111 | + models = gammalib.GModels(args[0]) |
| 117 | 112 | ||
| 118 | # Extract relevant model | 113 | # Extract relevant model |
| 119 | model = models[name] | 114 | model = models[name] |
| 120 | 115 | ||
| 121 | # Plot spectrum | 116 | # Plot spectrum |
| 122 | - plot_spectrum(model, plotfile=plotfile) | 117 | + plot_spectrum(model, plotfile) |
examples/show_obs.py
| @@ -33,7 +33,7 @@ except: | @@ -33,7 +33,7 @@ except: | ||
| 33 | # ==================== # | 33 | # ==================== # |
| 34 | # Run csobsinfo script # | 34 | # Run csobsinfo script # |
| 35 | # ==================== # | 35 | # ==================== # |
| 36 | -def run_csobsinfo(filename, ra=None, dec=None, debug=True): | 36 | +def run_csobsinfo(filename, ra, dec, debug=True): |
| 37 | """ | 37 | """ |
| 38 | Run csobsinfo script | 38 | Run csobsinfo script |
| 39 | 39 | ||
| @@ -41,9 +41,9 @@ def run_csobsinfo(filename, ra=None, dec=None, debug=True): | @@ -41,9 +41,9 @@ def run_csobsinfo(filename, ra=None, dec=None, debug=True): | ||
| 41 | ---------- | 41 | ---------- |
| 42 | filename : str | 42 | filename : str |
| 43 | File name of observation definition XML file | 43 | File name of observation definition XML file |
| 44 | - ra : float, optional | 44 | + ra : str |
| 45 | Target Right Ascension (deg) | 45 | Target Right Ascension (deg) |
| 46 | - dec : float, optional | 46 | + dec : str |
| 47 | Target declination of pointing (deg) | 47 | Target declination of pointing (deg) |
| 48 | debug : bool, optional | 48 | debug : bool, optional |
| 49 | Switch on debugging in csobsinfo run | 49 | Switch on debugging in csobsinfo run |
| @@ -62,9 +62,9 @@ def run_csobsinfo(filename, ra=None, dec=None, debug=True): | @@ -62,9 +62,9 @@ def run_csobsinfo(filename, ra=None, dec=None, debug=True): | ||
| 62 | info['debug'] = debug | 62 | info['debug'] = debug |
| 63 | 63 | ||
| 64 | # Set offset | 64 | # Set offset |
| 65 | - if ra != None and dec != None: | ||
| 66 | - info['ra'] = ra | ||
| 67 | - info['dec'] = dec | 65 | + if ra != '' and dec != '': |
| 66 | + info['ra'] = float(ra) | ||
| 67 | + info['dec'] = float(dec) | ||
| 68 | info['offset'] = True | 68 | info['offset'] = True |
| 69 | else: | 69 | else: |
| 70 | info['offset'] = False | 70 | info['offset'] = False |
| @@ -79,7 +79,7 @@ def run_csobsinfo(filename, ra=None, dec=None, debug=True): | @@ -79,7 +79,7 @@ def run_csobsinfo(filename, ra=None, dec=None, debug=True): | ||
| 79 | # ================ # | 79 | # ================ # |
| 80 | # Plot information # | 80 | # Plot information # |
| 81 | # ================ # | 81 | # ================ # |
| 82 | -def plot_information(info, plotfile=''): | 82 | +def plot_information(info, plotfile): |
| 83 | """ | 83 | """ |
| 84 | Plot information | 84 | Plot information |
| 85 | 85 | ||
| @@ -87,7 +87,7 @@ def plot_information(info, plotfile=''): | @@ -87,7 +87,7 @@ def plot_information(info, plotfile=''): | ||
| 87 | ---------- | 87 | ---------- |
| 88 | info : `~cscripts.csobsinfo` | 88 | info : `~cscripts.csobsinfo` |
| 89 | csobsinfo instance | 89 | csobsinfo instance |
| 90 | - plotfile : str, optional | 90 | + plotfile : str |
| 91 | Plot filename | 91 | Plot filename |
| 92 | """ | 92 | """ |
| 93 | # Retrieve observation info | 93 | # Retrieve observation info |
| @@ -178,22 +178,24 @@ def plot_information(info, plotfile=''): | @@ -178,22 +178,24 @@ def plot_information(info, plotfile=''): | ||
| 178 | # ======================== # | 178 | # ======================== # |
| 179 | if __name__ == '__main__': | 179 | if __name__ == '__main__': |
| 180 | 180 | ||
| 181 | - # Print usage message if wrong number of arguments is provided | ||
| 182 | - if len(sys.argv) < 2: | ||
| 183 | - sys.exit('Usage: inspect_obs.py inobs.xml [ra] [dec] [file]') | 181 | + # Set usage string |
| 182 | + usage = 'show_model.py [-ra ra] [-dec dec] [-p plotfile] file' | ||
| 184 | 183 | ||
| 185 | - # Extract optional parameters | ||
| 186 | - plotfile = '' | ||
| 187 | - ra = None | ||
| 188 | - dec = None | ||
| 189 | - if len(sys.argv) == 3: | ||
| 190 | - plotfile = sys.argv[2] | ||
| 191 | - elif len(sys.argv) == 4: | ||
| 192 | - ra = float(sys.argv[2]) | ||
| 193 | - dec = float(sys.argv[3]) | 184 | + # Set default options |
| 185 | + options = [{'option': '-ra', 'value': ''}, | ||
| 186 | + {'option': '-dec', 'value': ''}, | ||
| 187 | + {'option': '-p', 'value': ''}] | ||
| 188 | + | ||
| 189 | + # Get arguments and options from command line arguments | ||
| 190 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 191 | + | ||
| 192 | + # Extract script parameters from options | ||
| 193 | + ra = options[0]['value'] | ||
| 194 | + dec = options[1]['value'] | ||
| 195 | + plotfile = options[2]['value'] | ||
| 194 | 196 | ||
| 195 | # Run csobsinfo | 197 | # Run csobsinfo |
| 196 | - info = run_csobsinfo(sys.argv[1], ra=ra, dec=dec) | 198 | + info = run_csobsinfo(args[0], ra, dec) |
| 197 | 199 | ||
| 198 | # Plot information | 200 | # Plot information |
| 199 | - plot_information(info, plotfile=plotfile) | 201 | + plot_information(info, plotfile) |
examples/show_pha.py
| 1 | #! /usr/bin/env python | 1 | #! /usr/bin/env python |
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | -# Show a spectrum in PHA format. | 3 | +# Show a spectrum in PHA format |
| 4 | # | 4 | # |
| 5 | # Copyright (C) 2013-2016 Juergen Knoedlseder | 5 | # Copyright (C) 2013-2016 Juergen Knoedlseder |
| 6 | # | 6 | # |
| @@ -21,6 +21,7 @@ | @@ -21,6 +21,7 @@ | ||
| 21 | import sys | 21 | import sys |
| 22 | import math | 22 | import math |
| 23 | import gammalib | 23 | import gammalib |
| 24 | +import cscripts | ||
| 24 | try: | 25 | try: |
| 25 | import matplotlib.pyplot as plt | 26 | import matplotlib.pyplot as plt |
| 26 | plt.figure() | 27 | plt.figure() |
| @@ -33,7 +34,7 @@ except: | @@ -33,7 +34,7 @@ except: | ||
| 33 | # ================= # | 34 | # ================= # |
| 34 | # Show PHA spectrum # | 35 | # Show PHA spectrum # |
| 35 | # ================= # | 36 | # ================= # |
| 36 | -def show_pha(pha, plotfile=''): | 37 | +def show_pha(pha, plotfile): |
| 37 | """ | 38 | """ |
| 38 | Show PHA spectrum | 39 | Show PHA spectrum |
| 39 | 40 | ||
| @@ -41,7 +42,7 @@ def show_pha(pha, plotfile=''): | @@ -41,7 +42,7 @@ def show_pha(pha, plotfile=''): | ||
| 41 | ---------- | 42 | ---------- |
| 42 | spectrum : `~gammalib.GPha` | 43 | spectrum : `~gammalib.GPha` |
| 43 | PHA file | 44 | PHA file |
| 44 | - plotfile : str, optional | 45 | + plotfile : str |
| 45 | Plot file name | 46 | Plot file name |
| 46 | """ | 47 | """ |
| 47 | # Create figure | 48 | # Create figure |
| @@ -94,22 +95,20 @@ def show_pha(pha, plotfile=''): | @@ -94,22 +95,20 @@ def show_pha(pha, plotfile=''): | ||
| 94 | # ======================== # | 95 | # ======================== # |
| 95 | if __name__ == '__main__': | 96 | if __name__ == '__main__': |
| 96 | 97 | ||
| 97 | - # Print usage information | ||
| 98 | - usage = 'Usage: show_pha.py filename [file]' | ||
| 99 | - if len(sys.argv) < 2: | ||
| 100 | - print(usage) | ||
| 101 | - sys.exit() | 98 | + # Set usage string |
| 99 | + usage = 'show_pha.py [-p plotfile] file' | ||
| 102 | 100 | ||
| 103 | - # Check if plotting in file is requested | ||
| 104 | - plotfile = '' | ||
| 105 | - if len(sys.argv) == 3: | ||
| 106 | - plotfile = sys.argv[2] | 101 | + # Set default options |
| 102 | + options = [{'option': '-p', 'value': ''}] | ||
| 107 | 103 | ||
| 108 | - # Extract parameters | ||
| 109 | - filename = sys.argv[1] | 104 | + # Get arguments and options from command line arguments |
| 105 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 106 | + | ||
| 107 | + # Extract script parameters from options | ||
| 108 | + plotfile = options[0]['value'] | ||
| 110 | 109 | ||
| 111 | # Load PHA spectrum | 110 | # Load PHA spectrum |
| 112 | - pha = gammalib.GPha(filename) | 111 | + pha = gammalib.GPha(args[0]) |
| 113 | 112 | ||
| 114 | # Show PHA spectrum | 113 | # Show PHA spectrum |
| 115 | - show_pha(pha, plotfile=plotfile) | 114 | + show_pha(pha, plotfile) |
examples/show_pull_evolution.py
| @@ -20,6 +20,7 @@ | @@ -20,6 +20,7 @@ | ||
| 20 | # ========================================================================== | 20 | # ========================================================================== |
| 21 | import sys | 21 | import sys |
| 22 | import csv | 22 | import csv |
| 23 | +import cscripts | ||
| 23 | try: | 24 | try: |
| 24 | import matplotlib.pyplot as plt | 25 | import matplotlib.pyplot as plt |
| 25 | plt.figure() | 26 | plt.figure() |
| @@ -83,26 +84,22 @@ def read_pull(filename, parname): | @@ -83,26 +84,22 @@ def read_pull(filename, parname): | ||
| 83 | return a | 84 | return a |
| 84 | 85 | ||
| 85 | 86 | ||
| 86 | -# ======================== # | ||
| 87 | -# Main routine entry point # | ||
| 88 | -# ======================== # | ||
| 89 | -if __name__ == '__main__': | ||
| 90 | - | ||
| 91 | - # Print usage information | ||
| 92 | - usage = 'Usage: show_pull_evolution.py filename parname [file]' | ||
| 93 | - if len(sys.argv) < 3: | ||
| 94 | - print(usage) | ||
| 95 | - sys.exit() | ||
| 96 | - | ||
| 97 | - # Check if plotting in file is requested | ||
| 98 | - plotfile = '' | ||
| 99 | - if len(sys.argv) == 4: | ||
| 100 | - plotfile = sys.argv[3] | ||
| 101 | - | ||
| 102 | - # Extract parameters | ||
| 103 | - filename = sys.argv[1] | ||
| 104 | - parname = sys.argv[2] | 87 | +# =================== # |
| 88 | +# Plot pull evolution # | ||
| 89 | +# =================== # | ||
| 90 | +def plot_pull_evolution(filename, parname, plotfile): | ||
| 91 | + """ | ||
| 92 | + Plot pull evolution | ||
| 105 | 93 | ||
| 94 | + Parameters | ||
| 95 | + ---------- | ||
| 96 | + filename : str | ||
| 97 | + Pull filename | ||
| 98 | + parname : str | ||
| 99 | + Parameter name | ||
| 100 | + plotfile : str | ||
| 101 | + Plot filename | ||
| 102 | + """ | ||
| 106 | # Read values from CSV file | 103 | # Read values from CSV file |
| 107 | values = read_pull(filename, parname) | 104 | values = read_pull(filename, parname) |
| 108 | 105 | ||
| @@ -134,3 +131,27 @@ if __name__ == '__main__': | @@ -134,3 +131,27 @@ if __name__ == '__main__': | ||
| 134 | plt.savefig(plotfile) | 131 | plt.savefig(plotfile) |
| 135 | else: | 132 | else: |
| 136 | plt.show() | 133 | plt.show() |
| 134 | + | ||
| 135 | + # Return | ||
| 136 | + return | ||
| 137 | + | ||
| 138 | + | ||
| 139 | +# ======================== # | ||
| 140 | +# Main routine entry point # | ||
| 141 | +# ======================== # | ||
| 142 | +if __name__ == '__main__': | ||
| 143 | + | ||
| 144 | + # Set usage string | ||
| 145 | + usage = 'show_pull_evolution.py [-p plotfile] file parameter' | ||
| 146 | + | ||
| 147 | + # Set default options | ||
| 148 | + options = [{'option': '-p', 'value': ''}] | ||
| 149 | + | ||
| 150 | + # Get arguments and options from command line arguments | ||
| 151 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 152 | + | ||
| 153 | + # Extract script parameters from options | ||
| 154 | + plotfile = options[0]['value'] | ||
| 155 | + | ||
| 156 | + # Plot pull evolution | ||
| 157 | + plot_pull_evolution(args[0], args[1], plotfile) |
examples/show_pull_histogram.py
| @@ -20,6 +20,7 @@ | @@ -20,6 +20,7 @@ | ||
| 20 | # ========================================================================== | 20 | # ========================================================================== |
| 21 | import sys | 21 | import sys |
| 22 | import csv | 22 | import csv |
| 23 | +import cscripts | ||
| 23 | try: | 24 | try: |
| 24 | import matplotlib.pyplot as plt | 25 | import matplotlib.pyplot as plt |
| 25 | import matplotlib.mlab as mlab | 26 | import matplotlib.mlab as mlab |
| @@ -84,29 +85,24 @@ def read_pull(filename, parname): | @@ -84,29 +85,24 @@ def read_pull(filename, parname): | ||
| 84 | return a | 85 | return a |
| 85 | 86 | ||
| 86 | 87 | ||
| 87 | -# ======================== # | ||
| 88 | -# Main routine entry point # | ||
| 89 | -# ======================== # | ||
| 90 | -if __name__ == '__main__': | ||
| 91 | - | ||
| 92 | - # Print usage information | ||
| 93 | - usage = 'Usage: show_pull_histogram.py filename parname [bins] [file]' | ||
| 94 | - if len(sys.argv) < 3: | ||
| 95 | - print(usage) | ||
| 96 | - sys.exit() | ||
| 97 | - | ||
| 98 | - # Extract parameters | ||
| 99 | - filename = sys.argv[1] | ||
| 100 | - parname = sys.argv[2] | ||
| 101 | - if len(sys.argv) > 3: | ||
| 102 | - nbins = int(sys.argv[3]) | ||
| 103 | - else: | ||
| 104 | - nbins = 50 | ||
| 105 | - if len(sys.argv) == 5: | ||
| 106 | - plotfile = sys.argv[4] | ||
| 107 | - else: | ||
| 108 | - plotfile = '' | 88 | +# =================== # |
| 89 | +# Plot pull histogram # | ||
| 90 | +# =================== # | ||
| 91 | +def plot_pull_histogram(filename, parname, nbins, plotfile): | ||
| 92 | + """ | ||
| 93 | + Plot pull histogram | ||
| 109 | 94 | ||
| 95 | + Parameters | ||
| 96 | + ---------- | ||
| 97 | + filename : str | ||
| 98 | + Pull filename | ||
| 99 | + parname : str | ||
| 100 | + Parameter name | ||
| 101 | + nbins : int | ||
| 102 | + Number of hisogram bins | ||
| 103 | + plotfile : str | ||
| 104 | + Plot filename | ||
| 105 | + """ | ||
| 110 | # Read values from CSV file | 106 | # Read values from CSV file |
| 111 | values = read_pull(filename, parname) | 107 | values = read_pull(filename, parname) |
| 112 | 108 | ||
| @@ -132,3 +128,29 @@ if __name__ == '__main__': | @@ -132,3 +128,29 @@ if __name__ == '__main__': | ||
| 132 | plt.savefig(plotfile) | 128 | plt.savefig(plotfile) |
| 133 | else: | 129 | else: |
| 134 | plt.show() | 130 | plt.show() |
| 131 | + | ||
| 132 | + # Return | ||
| 133 | + return | ||
| 134 | + | ||
| 135 | + | ||
| 136 | +# ======================== # | ||
| 137 | +# Main routine entry point # | ||
| 138 | +# ======================== # | ||
| 139 | +if __name__ == '__main__': | ||
| 140 | + | ||
| 141 | + # Set usage string | ||
| 142 | + usage = 'show_pull_histogram.py [-n bins] [-p plotfile] file parameter' | ||
| 143 | + | ||
| 144 | + # Set default options | ||
| 145 | + options = [{'option': '-n', 'value': '50'}, | ||
| 146 | + {'option': '-p', 'value': ''}] | ||
| 147 | + | ||
| 148 | + # Get arguments and options from command line arguments | ||
| 149 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 150 | + | ||
| 151 | + # Extract script parameters from options | ||
| 152 | + nbins = int(options[0]['value']) | ||
| 153 | + plotfile = options[1]['value'] | ||
| 154 | + | ||
| 155 | + # Plot pull histogram | ||
| 156 | + plot_pull_histogram(args[0], args[1], nbins, plotfile) |
examples/show_response.py
| @@ -21,6 +21,7 @@ | @@ -21,6 +21,7 @@ | ||
| 21 | import sys | 21 | import sys |
| 22 | import math | 22 | import math |
| 23 | import gammalib | 23 | import gammalib |
| 24 | +import cscripts | ||
| 24 | try: | 25 | try: |
| 25 | import matplotlib.pyplot as plt | 26 | import matplotlib.pyplot as plt |
| 26 | plt.figure() | 27 | plt.figure() |
| @@ -313,22 +314,18 @@ def show_one_response(rspname, dbname, name, rootdir=None, color='r'): | @@ -313,22 +314,18 @@ def show_one_response(rspname, dbname, name, rootdir=None, color='r'): | ||
| 313 | return | 314 | return |
| 314 | 315 | ||
| 315 | 316 | ||
| 316 | -# ======================== # | ||
| 317 | -# Main routine entry point # | ||
| 318 | -# ======================== # | ||
| 319 | -if __name__ == '__main__': | ||
| 320 | - | ||
| 321 | - # Print usage information | ||
| 322 | - usage = 'Usage: show_response.py [file]' | ||
| 323 | - if len(sys.argv) < 1: | ||
| 324 | - print(usage) | ||
| 325 | - sys.exit() | ||
| 326 | - | ||
| 327 | - # Check if plotting in file is requested | ||
| 328 | - plotfile = '' | ||
| 329 | - if len(sys.argv) == 2: | ||
| 330 | - plotfile = sys.argv[1] | 317 | +# ==================== # |
| 318 | +# Show one sensitivity # | ||
| 319 | +# ==================== # | ||
| 320 | +def show_response(plotfile): | ||
| 321 | + """ | ||
| 322 | + Show response | ||
| 331 | 323 | ||
| 324 | + Parameters | ||
| 325 | + ---------- | ||
| 326 | + plotfile : str | ||
| 327 | + Plot filename | ||
| 328 | + """ | ||
| 332 | # Create figures | 329 | # Create figures |
| 333 | plt.figure(1) | 330 | plt.figure(1) |
| 334 | plt.title('Effective area') | 331 | plt.title('Effective area') |
| @@ -338,16 +335,14 @@ if __name__ == '__main__': | @@ -338,16 +335,14 @@ if __name__ == '__main__': | ||
| 338 | plt.title('Sensitivity') | 335 | plt.title('Sensitivity') |
| 339 | 336 | ||
| 340 | # Set response dictionary | 337 | # Set response dictionary |
| 341 | - rsps = [ | ||
| 342 | - {'dbname': 'prod2', | 338 | + rsps = [{'dbname': 'prod2', |
| 343 | 'rspname': 'South_0.5h', | 339 | 'rspname': 'South_0.5h', |
| 344 | 'name': 'Prod2 (30 min)', | 340 | 'name': 'Prod2 (30 min)', |
| 345 | 'color': 'b'}, | 341 | 'color': 'b'}, |
| 346 | {'dbname': 'prod2', | 342 | {'dbname': 'prod2', |
| 347 | 'rspname': 'South_50h', | 343 | 'rspname': 'South_50h', |
| 348 | 'name': 'Prod2 (50 h)', | 344 | 'name': 'Prod2 (50 h)', |
| 349 | - 'color': 'r'} | ||
| 350 | - ] | 345 | + 'color': 'r'}] |
| 351 | 346 | ||
| 352 | # Loop over all responses | 347 | # Loop over all responses |
| 353 | for rsp in rsps: | 348 | for rsp in rsps: |
| @@ -357,10 +352,7 @@ if __name__ == '__main__': | @@ -357,10 +352,7 @@ if __name__ == '__main__': | ||
| 357 | rspname = rsp['rspname'] | 352 | rspname = rsp['rspname'] |
| 358 | color = rsp['color'] | 353 | color = rsp['color'] |
| 359 | name = rsp['name'] | 354 | name = rsp['name'] |
| 360 | - if rsp.has_key('rootdir'): | ||
| 361 | - rootdir = rsp['rootdir'] | ||
| 362 | - else: | ||
| 363 | - rootdir = None | 355 | + rootdir = rsp.setdefault('rootdir', None) |
| 364 | 356 | ||
| 365 | # Show response | 357 | # Show response |
| 366 | show_one_response(rspname, dbname, name, rootdir=rootdir, color=color) | 358 | show_one_response(rspname, dbname, name, rootdir=rootdir, color=color) |
| @@ -370,3 +362,27 @@ if __name__ == '__main__': | @@ -370,3 +362,27 @@ if __name__ == '__main__': | ||
| 370 | plt.savefig(plotfile) | 362 | plt.savefig(plotfile) |
| 371 | else: | 363 | else: |
| 372 | plt.show() | 364 | plt.show() |
| 365 | + | ||
| 366 | + # Return | ||
| 367 | + return | ||
| 368 | + | ||
| 369 | + | ||
| 370 | +# ======================== # | ||
| 371 | +# Main routine entry point # | ||
| 372 | +# ======================== # | ||
| 373 | +if __name__ == '__main__': | ||
| 374 | + | ||
| 375 | + # Set usage string | ||
| 376 | + usage = 'show_response.py [-p plotfile]' | ||
| 377 | + | ||
| 378 | + # Set default options | ||
| 379 | + options = [{'option': '-p', 'value': ''}] | ||
| 380 | + | ||
| 381 | + # Get arguments and options from command line arguments | ||
| 382 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 383 | + | ||
| 384 | + # Extract script parameters from options | ||
| 385 | + plotfile = options[0]['value'] | ||
| 386 | + | ||
| 387 | + # Show response | ||
| 388 | + show_response(plotfile) |
examples/show_sensitivity.py
| @@ -21,6 +21,7 @@ | @@ -21,6 +21,7 @@ | ||
| 21 | import sys | 21 | import sys |
| 22 | import math | 22 | import math |
| 23 | import gammalib | 23 | import gammalib |
| 24 | +import cscripts | ||
| 24 | try: | 25 | try: |
| 25 | import matplotlib.pyplot as plt | 26 | import matplotlib.pyplot as plt |
| 26 | plt.figure() | 27 | plt.figure() |
| @@ -96,7 +97,7 @@ def read_sensitivity(filename): | @@ -96,7 +97,7 @@ def read_sensitivity(filename): | ||
| 96 | # ===================== # | 97 | # ===================== # |
| 97 | # Show sensitivity data # | 98 | # Show sensitivity data # |
| 98 | # ===================== # | 99 | # ===================== # |
| 99 | -def show_sensitivity(sensitivity, filename, plotfile=''): | 100 | +def show_sensitivity(sensitivity, filename, plotfile): |
| 100 | """ | 101 | """ |
| 101 | Plot sensitivity data | 102 | Plot sensitivity data |
| 102 | 103 | ||
| @@ -106,7 +107,7 @@ def show_sensitivity(sensitivity, filename, plotfile=''): | @@ -106,7 +107,7 @@ def show_sensitivity(sensitivity, filename, plotfile=''): | ||
| 106 | Dictionary with sensitivity information | 107 | Dictionary with sensitivity information |
| 107 | filename : str | 108 | filename : str |
| 108 | Name of CSV file | 109 | Name of CSV file |
| 109 | - plotfile : str, optional | 110 | + plotfile : str |
| 110 | Plot file name | 111 | Plot file name |
| 111 | """ | 112 | """ |
| 112 | # Build title | 113 | # Build title |
| @@ -145,23 +146,24 @@ def show_sensitivity(sensitivity, filename, plotfile=''): | @@ -145,23 +146,24 @@ def show_sensitivity(sensitivity, filename, plotfile=''): | ||
| 145 | # ======================== # | 146 | # ======================== # |
| 146 | if __name__ == '__main__': | 147 | if __name__ == '__main__': |
| 147 | 148 | ||
| 148 | - # Print usage information | ||
| 149 | - usage = 'Usage: show_sensitivity.py [filename] [file]' | ||
| 150 | - if len(sys.argv) < 1: | ||
| 151 | - print(usage) | ||
| 152 | - sys.exit() | 149 | + # Set usage string |
| 150 | + usage = 'show_sensitivity.py [-p plotfile] [file]' | ||
| 153 | 151 | ||
| 154 | - # Extract parameters | ||
| 155 | - if len(sys.argv) == 1: | ||
| 156 | - filename = 'sensitivity.dat' | 152 | + # Set default options |
| 153 | + options = [{'option': '-p', 'value': ''}] | ||
| 154 | + | ||
| 155 | + # Get arguments and options from command line arguments | ||
| 156 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 157 | + | ||
| 158 | + # Extract script parameters from options | ||
| 159 | + plotfile = options[0]['value'] | ||
| 160 | + if len(args) > 0: | ||
| 161 | + filename = args[0] | ||
| 157 | else: | 162 | else: |
| 158 | - filename = sys.argv[1] | ||
| 159 | - plotfile = '' | ||
| 160 | - if len(sys.argv) == 3: | ||
| 161 | - plotfile = sys.argv[2] | 163 | + filename = 'sensitivity.dat' |
| 162 | 164 | ||
| 163 | # Read sensitivity data | 165 | # Read sensitivity data |
| 164 | sensitivity = read_sensitivity(filename) | 166 | sensitivity = read_sensitivity(filename) |
| 165 | 167 | ||
| 166 | # Show sensitivity data | 168 | # Show sensitivity data |
| 167 | - show_sensitivity(sensitivity, filename, plotfile=plotfile) | 169 | + show_sensitivity(sensitivity, filename, plotfile) |
examples/show_spectrum.py
| @@ -20,6 +20,7 @@ | @@ -20,6 +20,7 @@ | ||
| 20 | # ========================================================================== | 20 | # ========================================================================== |
| 21 | import sys | 21 | import sys |
| 22 | import gammalib | 22 | import gammalib |
| 23 | +import cscripts | ||
| 23 | try: | 24 | try: |
| 24 | import matplotlib.pyplot as plt | 25 | import matplotlib.pyplot as plt |
| 25 | plt.figure() | 26 | plt.figure() |
| @@ -32,7 +33,7 @@ except: | @@ -32,7 +33,7 @@ except: | ||
| 32 | # ============= # | 33 | # ============= # |
| 33 | # Show spectrum # | 34 | # Show spectrum # |
| 34 | # ============= # | 35 | # ============= # |
| 35 | -def show_spectrum(filename, plotfile=''): | 36 | +def show_spectrum(filename, plotfile): |
| 36 | """ | 37 | """ |
| 37 | Plot sensitivity data | 38 | Plot sensitivity data |
| 38 | 39 | ||
| @@ -40,7 +41,7 @@ def show_spectrum(filename, plotfile=''): | @@ -40,7 +41,7 @@ def show_spectrum(filename, plotfile=''): | ||
| 40 | ---------- | 41 | ---------- |
| 41 | filename : str | 42 | filename : str |
| 42 | Name of spectrum FITS file | 43 | Name of spectrum FITS file |
| 43 | - plotfile : str, optional | 44 | + plotfile : str |
| 44 | Plot file name | 45 | Plot file name |
| 45 | """ | 46 | """ |
| 46 | # Read spectrum file | 47 | # Read spectrum file |
| @@ -116,17 +117,17 @@ def show_spectrum(filename, plotfile=''): | @@ -116,17 +117,17 @@ def show_spectrum(filename, plotfile=''): | ||
| 116 | # ======================== # | 117 | # ======================== # |
| 117 | if __name__ == '__main__': | 118 | if __name__ == '__main__': |
| 118 | 119 | ||
| 119 | - # Print usage information | ||
| 120 | - usage = 'Usage: show_spectrum.py filename [file]' | ||
| 121 | - if len(sys.argv) < 2: | ||
| 122 | - print(usage) | ||
| 123 | - sys.exit() | 120 | + # Set usage string |
| 121 | + usage = 'show_spectrum.py [-p plotfile] [file]' | ||
| 124 | 122 | ||
| 125 | - # Extract parameters | ||
| 126 | - filename = sys.argv[1] | ||
| 127 | - plotfile = '' | ||
| 128 | - if len(sys.argv) == 3: | ||
| 129 | - plotfile = sys.argv[2] | 123 | + # Set default options |
| 124 | + options = [{'option': '-p', 'value': ''}] | ||
| 125 | + | ||
| 126 | + # Get arguments and options from command line arguments | ||
| 127 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 128 | + | ||
| 129 | + # Extract script parameters from options | ||
| 130 | + plotfile = options[0]['value'] | ||
| 130 | 131 | ||
| 131 | # Show spectrum | 132 | # Show spectrum |
| 132 | - show_spectrum(filename, plotfile=plotfile) | 133 | + show_spectrum(args[0], plotfile) |
examples/show_ts_distribution.py
| @@ -21,6 +21,7 @@ | @@ -21,6 +21,7 @@ | ||
| 21 | import sys | 21 | import sys |
| 22 | import csv | 22 | import csv |
| 23 | import math | 23 | import math |
| 24 | +import cscripts | ||
| 24 | try: | 25 | try: |
| 25 | import matplotlib.pyplot as plt | 26 | import matplotlib.pyplot as plt |
| 26 | plt.figure() | 27 | plt.figure() |
| @@ -130,7 +131,7 @@ def erf(x): | @@ -130,7 +131,7 @@ def erf(x): | ||
| 130 | # =============================== # | 131 | # =============================== # |
| 131 | # Display cumulative distribution # | 132 | # Display cumulative distribution # |
| 132 | # =============================== # | 133 | # =============================== # |
| 133 | -def dist_cdf(values, nbins, title, expect='', plotfile=''): | 134 | +def dist_cdf(values, nbins, title, plotfile, expect=''): |
| 134 | """ | 135 | """ |
| 135 | Display cumulative TS distribution and overplots expectation | 136 | Display cumulative TS distribution and overplots expectation |
| 136 | 137 | ||
| @@ -142,8 +143,10 @@ def dist_cdf(values, nbins, title, expect='', plotfile=''): | @@ -142,8 +143,10 @@ def dist_cdf(values, nbins, title, expect='', plotfile=''): | ||
| 142 | Number of bins | 143 | Number of bins |
| 143 | title : str | 144 | title : str |
| 144 | Plot title | 145 | Plot title |
| 145 | - plotfile : str, optional | 146 | + plotfile : str |
| 146 | Plot file name | 147 | Plot file name |
| 148 | + expect : str, optional | ||
| 149 | + If 'show', show expectation | ||
| 147 | """ | 150 | """ |
| 148 | # Set range and adapt number of bins. We make sure that we have a | 151 | # Set range and adapt number of bins. We make sure that we have a |
| 149 | # histogram bin centred on 0 that will capture the TS=0 part. | 152 | # histogram bin centred on 0 that will capture the TS=0 part. |
| @@ -205,7 +208,7 @@ def dist_cdf(values, nbins, title, expect='', plotfile=''): | @@ -205,7 +208,7 @@ def dist_cdf(values, nbins, title, expect='', plotfile=''): | ||
| 205 | # ======================================== # | 208 | # ======================================== # |
| 206 | # Display probability density distribution # | 209 | # Display probability density distribution # |
| 207 | # ======================================== # | 210 | # ======================================== # |
| 208 | -def dist_pdf(values, nbins, title, expect='', plotfile=''): | 211 | +def dist_pdf(values, nbins, title, plotfile, expect=''): |
| 209 | """ | 212 | """ |
| 210 | Display probability density TS distribution and overplots expectation | 213 | Display probability density TS distribution and overplots expectation |
| 211 | 214 | ||
| @@ -217,8 +220,10 @@ def dist_pdf(values, nbins, title, expect='', plotfile=''): | @@ -217,8 +220,10 @@ def dist_pdf(values, nbins, title, expect='', plotfile=''): | ||
| 217 | Number of bins | 220 | Number of bins |
| 218 | title : str | 221 | title : str |
| 219 | Plot title | 222 | Plot title |
| 220 | - plotfile : str, optional | 223 | + plotfile : str |
| 221 | Plot file name | 224 | Plot file name |
| 225 | + expect : str, optional | ||
| 226 | + If 'show', show expectation | ||
| 222 | """ | 227 | """ |
| 223 | # Set range and adapt number of bins. We make sure that we have a | 228 | # Set range and adapt number of bins. We make sure that we have a |
| 224 | # histogram bin centred on 0 that will capture the TS=0 part. | 229 | # histogram bin centred on 0 that will capture the TS=0 part. |
| @@ -279,59 +284,35 @@ def dist_pdf(values, nbins, title, expect='', plotfile=''): | @@ -279,59 +284,35 @@ def dist_pdf(values, nbins, title, expect='', plotfile=''): | ||
| 279 | # ======================== # | 284 | # ======================== # |
| 280 | if __name__ == '__main__': | 285 | if __name__ == '__main__': |
| 281 | 286 | ||
| 282 | - # Print usage information | ||
| 283 | - usage = 'Usage: show_ts_distribution.py filename' \ | ||
| 284 | - ' [-n bins] [-c column] [-t title] [-p plot] [-f file]' | ||
| 285 | - if len(sys.argv) < 2: | ||
| 286 | - print(usage) | ||
| 287 | - sys.exit() | ||
| 288 | - | ||
| 289 | - # Extract parameters | ||
| 290 | - filename = sys.argv[1] | ||
| 291 | - | ||
| 292 | - # Parameter dictionnary | ||
| 293 | - pars = [{'option': '-n', 'value': 30}, | ||
| 294 | - {'option': '-c', 'value': 'TS'}, | ||
| 295 | - {'option': '-t', 'value': 'TS distribution'}, | ||
| 296 | - {'option': '-p', 'value': 'pdf'}, | ||
| 297 | - {'option': '-e', 'value': ''}, | ||
| 298 | - {'option': '-f', 'value': ''}] | ||
| 299 | - | ||
| 300 | - # Gather parameters from command line | ||
| 301 | - i = 2 | ||
| 302 | - while i < len(sys.argv): | ||
| 303 | - | ||
| 304 | - # Search for options | ||
| 305 | - for par in pars: | ||
| 306 | - if sys.argv[i] == par['option']: | ||
| 307 | - if len(sys.argv) > i+1: | ||
| 308 | - i += 1 | ||
| 309 | - try: | ||
| 310 | - par['value'] = sys.argv[i] | ||
| 311 | - except: | ||
| 312 | - print(usage) | ||
| 313 | - sys.exit() | ||
| 314 | - else: | ||
| 315 | - print(usage) | ||
| 316 | - sys.exit() | ||
| 317 | - | ||
| 318 | - # Next item | ||
| 319 | - i += 1 | ||
| 320 | - | ||
| 321 | - # Recover parameters | ||
| 322 | - nbins = int(pars[0]['value']) | ||
| 323 | - tsname = pars[1]['value'] | ||
| 324 | - title = pars[2]['value'] | ||
| 325 | - plot = pars[3]['value'] | ||
| 326 | - expect = pars[4]['value'] | ||
| 327 | - plotfile = pars[5]['value'] | 287 | + # Set usage string |
| 288 | + usage = ('show_ts_distribution.py [-n bins] [-c column] [-title title] ' | ||
| 289 | + '[-e expect] [-t type] [-p plotfile] file') | ||
| 290 | + | ||
| 291 | + # Set default options | ||
| 292 | + options = [{'option': '-n', 'value': 30}, | ||
| 293 | + {'option': '-c', 'value': 'TS'}, | ||
| 294 | + {'option': '-title', 'value': 'TS distribution'}, | ||
| 295 | + {'option': '-e', 'value': ''}, | ||
| 296 | + {'option': '-t', 'value': 'pdf'}, | ||
| 297 | + {'option': '-p', 'value': ''}] | ||
| 298 | + | ||
| 299 | + # Get arguments and options from command line arguments | ||
| 300 | + args, options = cscripts.ioutils.get_args_options(options, usage) | ||
| 301 | + | ||
| 302 | + # Extract script parameters from options | ||
| 303 | + nbins = int(options[0]['value']) | ||
| 304 | + tsname = options[1]['value'] | ||
| 305 | + title = options[2]['value'] | ||
| 306 | + expect = options[3]['value'] | ||
| 307 | + disttype = options[4]['value'] | ||
| 308 | + plotfile = options[5]['value'] | ||
| 328 | 309 | ||
| 329 | # Read values from CSV file | 310 | # Read values from CSV file |
| 330 | - values = read_ts(filename, tsname=tsname) | 311 | + values = read_ts(args[0], tsname=tsname) |
| 331 | print('%d values read.' % len(values)) | 312 | print('%d values read.' % len(values)) |
| 332 | 313 | ||
| 333 | # Show histogram | 314 | # Show histogram |
| 334 | - if plot == 'pdf': | ||
| 335 | - dist_pdf(values, nbins, title, expect=expect, plotfile=plotfile) | 315 | + if disttype == 'pdf': |
| 316 | + dist_pdf(values, nbins, title, plotfile, expect=expect) | ||
| 336 | else: | 317 | else: |
| 337 | - dist_cdf(values, nbins, title, expect=expect, plotfile=plotfile) | 318 | + dist_cdf(values, nbins, title, plotfile, expect=expect) |
test/test_examples.py.in
| @@ -161,8 +161,7 @@ class Test(gammalib.GPythonTestSuite): | @@ -161,8 +161,7 @@ class Test(gammalib.GPythonTestSuite): | ||
| 161 | Test generate_prod3_irfs | 161 | Test generate_prod3_irfs |
| 162 | """ | 162 | """ |
| 163 | # Execute script | 163 | # Execute script |
| 164 | - self._execute_python('generate_prod3_irfs', | ||
| 165 | - args=self._datadir) | 164 | + self._execute_python('generate_prod3_irfs', args=self._datadir) |
| 166 | 165 | ||
| 167 | # Return | 166 | # Return |
| 168 | return | 167 | return |
| @@ -172,9 +171,11 @@ class Test(gammalib.GPythonTestSuite): | @@ -172,9 +171,11 @@ class Test(gammalib.GPythonTestSuite): | ||
| 172 | """ | 171 | """ |
| 173 | Test make_spectrum | 172 | Test make_spectrum |
| 174 | """ | 173 | """ |
| 174 | + # Set arguments | ||
| 175 | + args = '-d %s -p example_spectrum.eps' % self._datadir | ||
| 176 | + | ||
| 175 | # Execute script | 177 | # Execute script |
| 176 | - self._execute_python('make_spectrum', | ||
| 177 | - args=self._datadir+' eps') | 178 | + self._execute_python('make_spectrum', args=args) |
| 178 | 179 | ||
| 179 | # Return | 180 | # Return |
| 180 | return | 181 | return |
| @@ -184,9 +185,11 @@ class Test(gammalib.GPythonTestSuite): | @@ -184,9 +185,11 @@ class Test(gammalib.GPythonTestSuite): | ||
| 184 | """ | 185 | """ |
| 185 | Test make_ts_distributions | 186 | Test make_ts_distributions |
| 186 | """ | 187 | """ |
| 188 | + # Set arguments | ||
| 189 | + args = '-n 2 -e 0 -t 1800 -d %s' % self._datadir | ||
| 190 | + | ||
| 187 | # Execute script | 191 | # Execute script |
| 188 | - self._execute_python('make_ts_distributions', | ||
| 189 | - args='-n 2 -e 0 -t 1800 -d '+self._datadir) | 192 | + self._execute_python('make_ts_distributions', args=args) |
| 190 | 193 | ||
| 191 | # Return | 194 | # Return |
| 192 | return | 195 | return |
| @@ -262,10 +265,11 @@ class Test(gammalib.GPythonTestSuite): | @@ -262,10 +265,11 @@ class Test(gammalib.GPythonTestSuite): | ||
| 262 | """ | 265 | """ |
| 263 | Test show_butterfly | 266 | Test show_butterfly |
| 264 | """ | 267 | """ |
| 268 | + # Set arguments | ||
| 269 | + args = '-p example_show_butterfly.eps %s/butterfly.txt' % self._datadir | ||
| 270 | + | ||
| 265 | # Execute script | 271 | # Execute script |
| 266 | - self._execute_python('show_butterfly', | ||
| 267 | - args=self._datadir+'/butterfly.txt ' | ||
| 268 | - 'example_show_butterfly.eps') | 272 | + self._execute_python('show_butterfly', args=args) |
| 269 | 273 | ||
| 270 | # Return | 274 | # Return |
| 271 | return | 275 | return |
| @@ -275,10 +279,17 @@ class Test(gammalib.GPythonTestSuite): | @@ -275,10 +279,17 @@ class Test(gammalib.GPythonTestSuite): | ||
| 275 | """ | 279 | """ |
| 276 | Test show_model | 280 | Test show_model |
| 277 | """ | 281 | """ |
| 282 | + # Set arguments | ||
| 283 | + args = '-n Crab -p example_show_model1.eps %s/crab.xml' % self._datadir | ||
| 284 | + | ||
| 285 | + # Execute script | ||
| 286 | + self._execute_python('show_model', args=args) | ||
| 287 | + | ||
| 288 | + # Set new arguments | ||
| 289 | + args = '-p example_show_model2.eps %s/crab.xml' % self._datadir | ||
| 290 | + | ||
| 278 | # Execute script | 291 | # Execute script |
| 279 | - self._execute_python('show_model', | ||
| 280 | - args=self._datadir+'/crab.xml ' | ||
| 281 | - 'Crab example_show_model.eps') | 292 | + self._execute_python('show_model', args=args) |
| 282 | 293 | ||
| 283 | # Return | 294 | # Return |
| 284 | return | 295 | return |
| @@ -288,10 +299,11 @@ class Test(gammalib.GPythonTestSuite): | @@ -288,10 +299,11 @@ class Test(gammalib.GPythonTestSuite): | ||
| 288 | """ | 299 | """ |
| 289 | Test show_pha | 300 | Test show_pha |
| 290 | """ | 301 | """ |
| 302 | + # Set arguments | ||
| 303 | + args = '-p example_show_pha.eps %s/pha.fits' % self._datadir | ||
| 304 | + | ||
| 291 | # Execute script | 305 | # Execute script |
| 292 | - self._execute_python('show_pha', | ||
| 293 | - args=self._datadir+'/pha.fits ' | ||
| 294 | - 'example_show_pha.eps') | 306 | + self._execute_python('show_pha', args=args) |
| 295 | 307 | ||
| 296 | # Return | 308 | # Return |
| 297 | return | 309 | return |
| @@ -301,11 +313,12 @@ class Test(gammalib.GPythonTestSuite): | @@ -301,11 +313,12 @@ class Test(gammalib.GPythonTestSuite): | ||
| 301 | """ | 313 | """ |
| 302 | Test show_pull_evolution | 314 | Test show_pull_evolution |
| 303 | """ | 315 | """ |
| 316 | + # Set arguments | ||
| 317 | + args = ('-p example_show_pull_evolution.eps %s/pull.dat ' | ||
| 318 | + 'Pull_Crab_Prefactor' % self._datadir) | ||
| 319 | + | ||
| 304 | # Execute script | 320 | # Execute script |
| 305 | - self._execute_python('show_pull_evolution', | ||
| 306 | - args=self._datadir+'/pull.dat ' | ||
| 307 | - 'Pull_Crab_Prefactor ' | ||
| 308 | - 'example_show_pull_evolution.eps') | 321 | + self._execute_python('show_pull_evolution', args=args) |
| 309 | 322 | ||
| 310 | # Return | 323 | # Return |
| 311 | return | 324 | return |
| @@ -315,11 +328,19 @@ class Test(gammalib.GPythonTestSuite): | @@ -315,11 +328,19 @@ class Test(gammalib.GPythonTestSuite): | ||
| 315 | """ | 328 | """ |
| 316 | Test show_pull_histogram | 329 | Test show_pull_histogram |
| 317 | """ | 330 | """ |
| 331 | + # Set arguments | ||
| 332 | + args = ('-p example_show_pull_histogram1.eps %s/pull.dat ' | ||
| 333 | + 'Pull_Crab_Prefactor' % self._datadir) | ||
| 334 | + | ||
| 335 | + # Execute script | ||
| 336 | + self._execute_python('show_pull_histogram', args=args) | ||
| 337 | + | ||
| 338 | + # Set arguments | ||
| 339 | + args = ('-n 20 -p example_show_pull_histogram2.eps %s/pull.dat ' | ||
| 340 | + 'Pull_Crab_Prefactor' % self._datadir) | ||
| 341 | + | ||
| 318 | # Execute script | 342 | # Execute script |
| 319 | - self._execute_python('show_pull_histogram', | ||
| 320 | - args=self._datadir+'/pull.dat ' | ||
| 321 | - 'Pull_Crab_Prefactor 50 ' | ||
| 322 | - 'example_show_pull_histogram.eps') | 343 | + self._execute_python('show_pull_histogram', args=args) |
| 323 | 344 | ||
| 324 | # Return | 345 | # Return |
| 325 | return | 346 | return |
| @@ -329,8 +350,11 @@ class Test(gammalib.GPythonTestSuite): | @@ -329,8 +350,11 @@ class Test(gammalib.GPythonTestSuite): | ||
| 329 | """ | 350 | """ |
| 330 | Test show_response | 351 | Test show_response |
| 331 | """ | 352 | """ |
| 353 | + # Set arguments | ||
| 354 | + args = '-p example_show_response.eps' | ||
| 355 | + | ||
| 332 | # Execute script | 356 | # Execute script |
| 333 | - self._execute_python('show_response', args='example_show_response.eps') | 357 | + self._execute_python('show_response', args=args) |
| 334 | 358 | ||
| 335 | # Return | 359 | # Return |
| 336 | return | 360 | return |
| @@ -340,10 +364,12 @@ class Test(gammalib.GPythonTestSuite): | @@ -340,10 +364,12 @@ class Test(gammalib.GPythonTestSuite): | ||
| 340 | """ | 364 | """ |
| 341 | Test show_sensitivity | 365 | Test show_sensitivity |
| 342 | """ | 366 | """ |
| 367 | + # Set arguments | ||
| 368 | + args = ('-p example_show_sensitivity.eps %s/sensitivity.dat' % | ||
| 369 | + self._datadir) | ||
| 370 | + | ||
| 343 | # Execute script | 371 | # Execute script |
| 344 | - self._execute_python('show_sensitivity', | ||
| 345 | - args=self._datadir+'/sensitivity.dat ' | ||
| 346 | - 'example_show_sensitivity.eps') | 372 | + self._execute_python('show_sensitivity', args=args) |
| 347 | 373 | ||
| 348 | # Return | 374 | # Return |
| 349 | return | 375 | return |
| @@ -353,10 +379,11 @@ class Test(gammalib.GPythonTestSuite): | @@ -353,10 +379,11 @@ class Test(gammalib.GPythonTestSuite): | ||
| 353 | """ | 379 | """ |
| 354 | Test show_spectrum | 380 | Test show_spectrum |
| 355 | """ | 381 | """ |
| 382 | + # Set arguments | ||
| 383 | + args = '-p example_show_spectrum.eps %s/spectrum.fits' % self._datadir | ||
| 384 | + | ||
| 356 | # Execute script | 385 | # Execute script |
| 357 | - self._execute_python('show_spectrum', | ||
| 358 | - args=self._datadir+'/spectrum.fits ' | ||
| 359 | - 'example_show_spectrum.eps') | 386 | + self._execute_python('show_spectrum', args=args) |
| 360 | 387 | ||
| 361 | # Return | 388 | # Return |
| 362 | return | 389 | return |
| @@ -366,10 +393,19 @@ class Test(gammalib.GPythonTestSuite): | @@ -366,10 +393,19 @@ class Test(gammalib.GPythonTestSuite): | ||
| 366 | """ | 393 | """ |
| 367 | Test show_ts_distribution | 394 | Test show_ts_distribution |
| 368 | """ | 395 | """ |
| 396 | + # Set arguments | ||
| 397 | + args = ('-n 100 -p example_show_ts_distribution1.eps %s/ts.dat' % | ||
| 398 | + self._datadir) | ||
| 399 | + | ||
| 400 | + # Execute script | ||
| 401 | + self._execute_python('show_ts_distribution', args=args) | ||
| 402 | + | ||
| 403 | + # Set arguments | ||
| 404 | + args = ('-n 100 -t cdf -p example_show_ts_distribution2.eps %s/ts.dat' % | ||
| 405 | + self._datadir) | ||
| 406 | + | ||
| 369 | # Execute script | 407 | # Execute script |
| 370 | - self._execute_python('show_ts_distribution', | ||
| 371 | - args=self._datadir+'/ts.dat -n 100 ' | ||
| 372 | - '-f example_show_ts_distribution.eps') | 408 | + self._execute_python('show_ts_distribution', args=args) |
| 373 | 409 | ||
| 374 | # Return | 410 | # Return |
| 375 | return | 411 | return |
| @@ -379,10 +415,18 @@ class Test(gammalib.GPythonTestSuite): | @@ -379,10 +415,18 @@ class Test(gammalib.GPythonTestSuite): | ||
| 379 | """ | 415 | """ |
| 380 | Test show_obs | 416 | Test show_obs |
| 381 | """ | 417 | """ |
| 418 | + # Set arguments | ||
| 419 | + args = '-p example_show_obs1.eps %s/obs_unbinned.xml' % self._datadir | ||
| 420 | + | ||
| 421 | + # Execute script | ||
| 422 | + self._execute_python('show_obs', args=args) | ||
| 423 | + | ||
| 424 | + # Set arguments | ||
| 425 | + args = ('-ra 83.63 -dec 22.01 -p example_show_obs2.eps ' | ||
| 426 | + '%s/obs_unbinned.xml' % self._datadir) | ||
| 427 | + | ||
| 382 | # Execute script | 428 | # Execute script |
| 383 | - self._execute_python('show_obs', | ||
| 384 | - args=self._datadir+'/obs_unbinned.xml ' | ||
| 385 | - 'example_show_obs.eps') | 429 | + self._execute_python('show_obs', args=args) |
| 386 | 430 | ||
| 387 | # Return | 431 | # Return |
| 388 | return | 432 | return |