Commit 31a1247f0013bd2a7fafcf4cd6a8e82aa4200a77
1 parent
bbe311d4
Update example scripts
Showing
17 changed files
with
126 additions
and
123 deletions
examples/benchmark_cta_analysis.py
| ... | ... | @@ -299,8 +299,7 @@ def stacked_pipeline(model_name, duration): |
| 299 | 299 | # Main routine entry point # |
| 300 | 300 | #==========================# |
| 301 | 301 | if __name__ == '__main__': |
| 302 | - """ | |
| 303 | - """ | |
| 302 | + | |
| 304 | 303 | # Initialise parameters |
| 305 | 304 | title = "CTA analysis benchmark" |
| 306 | 305 | model_name = "${CTOOLS}/share/models/crab.xml" | ... | ... |
examples/make_pointings.py
| ... | ... | @@ -336,9 +336,7 @@ def write_obsdef(filename, obsdef): |
| 336 | 336 | # Main routine entry point # |
| 337 | 337 | # ======================== # |
| 338 | 338 | if __name__ == '__main__': |
| 339 | - """ | |
| 340 | - CTA pointing pattern generation. | |
| 341 | - """ | |
| 339 | + | |
| 342 | 340 | # Initialise flags |
| 343 | 341 | need_help = False |
| 344 | 342 | ... | ... |
examples/make_pull_at_sensitivity_limit.py
| ... | ... | @@ -135,11 +135,7 @@ def create_model(flux, index=-2.48, fitidx=False): |
| 135 | 135 | # Main routine entry point # |
| 136 | 136 | # ======================== # |
| 137 | 137 | if __name__ == '__main__': |
| 138 | - """ | |
| 139 | - Create pull distributions for the energy bands and fluxes given in the | |
| 140 | - file specified in the argument. The file needs to be created using the | |
| 141 | - cssens script. | |
| 142 | - """ | |
| 138 | + | |
| 143 | 139 | # Get input arguments |
| 144 | 140 | usage = """ |
| 145 | 141 | make_pull_at_sensitivity_limit filename [max_threads] | ... | ... |
examples/make_spectrum.py
| ... | ... | @@ -167,9 +167,7 @@ def plot_spectrum(spectrum): |
| 167 | 167 | # Main routine entry point # |
| 168 | 168 | #==========================# |
| 169 | 169 | if __name__ == '__main__': |
| 170 | - """ | |
| 171 | - Generate a Crab spectrum. | |
| 172 | - """ | |
| 170 | + | |
| 173 | 171 | # Generate spectrum |
| 174 | 172 | spectrum = make_spectrum() |
| 175 | 173 | ... | ... |
examples/make_survey.py
| ... | ... | @@ -303,9 +303,7 @@ def survey_gplane(lrange=10, lstep=2): |
| 303 | 303 | # Main routine entry point # |
| 304 | 304 | #==========================# |
| 305 | 305 | if __name__ == '__main__': |
| 306 | - """ | |
| 307 | - CTA survey simulation and analysis script. | |
| 308 | - """ | |
| 306 | + | |
| 309 | 307 | # Initialise flags |
| 310 | 308 | need_help = False |
| 311 | 309 | ... | ... |
examples/make_ts_distributions.py
| ... | ... | @@ -94,9 +94,7 @@ def create_ts(loge, emin, emax, ntrials=100, duration=180000.0, |
| 94 | 94 | # Main routine entry point # |
| 95 | 95 | # ======================== # |
| 96 | 96 | if __name__ == '__main__': |
| 97 | - """ | |
| 98 | - Create TS distribution in a number of energy bands. | |
| 99 | - """ | |
| 97 | + | |
| 100 | 98 | # Get input arguments |
| 101 | 99 | usage = "make_ts_distributions [-n ntrials] [-e enumbins] [-m max_threads]" |
| 102 | 100 | if len(sys.argv) < 1: | ... | ... |
examples/pipeline_binned_disk.py
| 1 | 1 | #! /usr/bin/env python |
| 2 | 2 | # ========================================================================== |
| 3 | -# This script illustrates how to perform a binned CTA analysis based on | |
| 4 | -# simulated CTA data. You may use and adapt this script to implement your | |
| 5 | -# own pipeline. | |
| 3 | +# Perform binned CTA analysis based of simulated CTA data. | |
| 6 | 4 | # |
| 7 | -# Usage: | |
| 8 | -# ./pipeline_binned_disk.py | |
| 9 | -# | |
| 10 | -# ========================================================================== | |
| 11 | -# | |
| 12 | -# Copyright (C) 2015 Juergen Knoedlseder | |
| 5 | +# Copyright (C) 2015-2016 Juergen Knoedlseder | |
| 13 | 6 | # |
| 14 | 7 | # This program is free software: you can redistribute it and/or modify |
| 15 | 8 | # it under the terms of the GNU General Public License as published by |
| ... | ... | @@ -33,25 +26,41 @@ from cscripts import obsutils |
| 33 | 26 | # ================== # |
| 34 | 27 | # Setup observations # |
| 35 | 28 | # ================== # |
| 36 | -def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5, | |
| 29 | +def setup_observations(pattern='four', ra=83.63, dec=22.01, offset=1.5, | |
| 37 | 30 | emin=0.1, emax=100.0, rad=5.0, duration=1800.0, |
| 38 | - deadc=0.95, | |
| 39 | - caldb="prod2", irf="South_50h"): | |
| 31 | + deadc=0.95, caldb='prod2', irf='South_0.5h'): | |
| 40 | 32 | """ |
| 41 | 33 | Returns an observation container. |
| 42 | 34 | |
| 43 | - Keywords: | |
| 44 | - pattern - Pointing pattern, either "single" or "four" | |
| 45 | - ra - RA of pattern centre [deg] (default: 83.6331) | |
| 46 | - dec - DEC of pattern centre [deg] (default: 22.0145) | |
| 47 | - offset - Offset between observations of pattern [deg] (default: 1.5) | |
| 48 | - emin - Minimum energy [TeV] (default: 0.1) | |
| 49 | - emax - Maximum energy [TeV] (default: 100.0) | |
| 50 | - rad - ROI radius used for analysis [deg] (default: 5.0) | |
| 51 | - duration - Duration of one CTA observation [seconds] (default: 1800.0) | |
| 52 | - deadc - Deadtime correction factor (default: 0.95) | |
| 53 | - caldb - Calibration database path (default: "dummy") | |
| 54 | - irf - Instrument response function (default: cta_dummy_irf) | |
| 35 | + Parameters | |
| 36 | + ---------- | |
| 37 | + pattern : str, optional | |
| 38 | + Pointing pattern, either 'single' or 'four' | |
| 39 | + ra : float, optional | |
| 40 | + Right Ascension of pattern centre [deg] | |
| 41 | + dec : float, optional | |
| 42 | + Delication of pattern centre [deg] | |
| 43 | + offset : float, optional | |
| 44 | + Offset between observations of pattern [deg] | |
| 45 | + emin : float, optional | |
| 46 | + Minimum energy [TeV] | |
| 47 | + emax : float, optional | |
| 48 | + Maximum energy [TeV] | |
| 49 | + rad : float, optional | |
| 50 | + ROI radius used for analysis [deg] | |
| 51 | + duration : float, optional | |
| 52 | + Duration of one CTA observation [seconds] | |
| 53 | + deadc : float, optional | |
| 54 | + Deadtime correction factor | |
| 55 | + caldb : str, optional | |
| 56 | + Calibration database path | |
| 57 | + irf : str, optional | |
| 58 | + Instrument response function | |
| 59 | + | |
| 60 | + Returns | |
| 61 | + ------- | |
| 62 | + obs : `~gammalib.GObservations` | |
| 63 | + Observation container | |
| 55 | 64 | """ |
| 56 | 65 | # Set list of observations |
| 57 | 66 | obs_def_list = obsutils.set_obs_patterns(pattern, |
| ... | ... | @@ -75,12 +84,21 @@ def setup_observations(pattern="four", ra=83.63, dec=22.01, offset=1.5, |
| 75 | 84 | # =========== # |
| 76 | 85 | # Setup model # |
| 77 | 86 | # =========== # |
| 78 | -def setup_model(obs, model="${CTOOLS}/share/models/crab.xml"): | |
| 87 | +def setup_model(obs, model='${CTOOLS}/share/models/crab.xml'): | |
| 79 | 88 | """ |
| 80 | 89 | Setup model for analysis. |
| 81 | 90 | |
| 82 | - Keywords: | |
| 83 | - model - Model Xml file | |
| 91 | + Parameters | |
| 92 | + ---------- | |
| 93 | + obs : `~gammalib.GObservations` | |
| 94 | + Observation container | |
| 95 | + model : str, optional | |
| 96 | + Model definition XML file | |
| 97 | + | |
| 98 | + Returns | |
| 99 | + ------- | |
| 100 | + obs : `~gammalib.GObservations` | |
| 101 | + Observation container | |
| 84 | 102 | """ |
| 85 | 103 | # Append model from file to observation container |
| 86 | 104 | obs.models(gammalib.GModels(model)) |
| ... | ... | @@ -94,56 +112,71 @@ def setup_model(obs, model="${CTOOLS}/share/models/crab.xml"): |
| 94 | 112 | # ================================ # |
| 95 | 113 | def run_pipeline(obs, emin=0.1, emax=100.0, |
| 96 | 114 | enumbins=20, nxpix=200, nypix=200, binsz=0.02, |
| 97 | - coordsys="CEL", proj="CAR", | |
| 98 | - model="${CTOOLS}/share/models/crab.xml", | |
| 99 | - caldb="prod2", irf="South_50h", | |
| 115 | + coordsys='CEL', proj='CAR', | |
| 116 | + model='${CTOOLS}/share/models/crab.xml', | |
| 117 | + caldb='prod2', irf='South_0.5h', | |
| 100 | 118 | debug=False): |
| 101 | 119 | """ |
| 102 | 120 | Simulation and binned analysis pipeline. |
| 103 | 121 | |
| 104 | - Keywords: | |
| 105 | - emin - Minimum energy of cube [TeV] (default: 0.1) | |
| 106 | - emax - Maximum energy of cube [TeV] (default: 100.0) | |
| 107 | - enumbins - Number of energy bins in cube (default: 20) | |
| 108 | - nxpix - Number of RA pixels in cube (default: 200) | |
| 109 | - nypix - Number of DEC pixels in cube (default: 200) | |
| 110 | - binsz - Spatial cube bin size [deg] (default: 0.02) | |
| 111 | - coordsys - Cube coordinate system (CEL or GAL) | |
| 112 | - proj - Cube World Coordinate System (WCS) projection | |
| 113 | - model - Model Xml file | |
| 114 | - caldb - Calibration database path (default: "dummy") | |
| 115 | - irf - Instrument response function (default: cta_dummy_irf) | |
| 116 | - debug - Enable debugging (default: False) | |
| 122 | + Parameters | |
| 123 | + ---------- | |
| 124 | + obs : `~gammalib.GObservations` | |
| 125 | + Observation container | |
| 126 | + emin : float, optional | |
| 127 | + Minimum energy [TeV] | |
| 128 | + emax : float, optional | |
| 129 | + Maximum energy [TeV] | |
| 130 | + enumbins : int, optional | |
| 131 | + Number of energy bins | |
| 132 | + nxpix : int, optional | |
| 133 | + Number of pixels in X axis | |
| 134 | + nypix : int, optional | |
| 135 | + Number of pixels in Y axis | |
| 136 | + binsz : float, optional | |
| 137 | + Pixel size [deg/pixel] | |
| 138 | + coordsys : str, optional | |
| 139 | + Coordinate system | |
| 140 | + proj : str, optional | |
| 141 | + Coordinate projection | |
| 142 | + model : str, optional | |
| 143 | + Model definition XML file | |
| 144 | + caldb : str, optional | |
| 145 | + Calibration database path | |
| 146 | + irf : str, optional | |
| 147 | + Instrument response function | |
| 148 | + debug : bool, optional | |
| 149 | + Debug function | |
| 117 | 150 | """ |
| 118 | 151 | # Simulate events |
| 119 | 152 | sim = ctools.ctobssim(obs) |
| 120 | - sim["debug"] = debug | |
| 121 | - sim["outevents"] = "obs.xml" | |
| 153 | + sim['debug'] = debug | |
| 154 | + sim['outevents'] = 'obs.xml' | |
| 122 | 155 | sim.execute() |
| 123 | 156 | |
| 124 | 157 | # Bin events by looping over all observations in the container |
| 125 | - sim_obs = gammalib.GObservations("obs.xml") | |
| 158 | + sim_obs = gammalib.GObservations('obs.xml') | |
| 126 | 159 | obs = gammalib.GObservations() |
| 127 | 160 | for run in sim_obs: |
| 128 | 161 | |
| 129 | 162 | # Get event filename and set counts cube filename |
| 130 | - eventfile = run.eventfile() | |
| 131 | - cubefile = "cube_"+eventfile | |
| 163 | + eventfile = run.eventfile().url() | |
| 164 | + cubefile = 'cube_'+eventfile | |
| 132 | 165 | |
| 133 | 166 | # Bin events for that observation |
| 134 | 167 | bin = ctools.ctbin() |
| 135 | - bin["inobs"] = eventfile | |
| 136 | - bin["outcube"] = cubefile | |
| 137 | - bin["ebinalg"] = "LOG" | |
| 138 | - bin["emin"] = emin | |
| 139 | - bin["emax"] = emax | |
| 140 | - bin["enumbins"] = enumbins | |
| 141 | - bin["nxpix"] = nxpix | |
| 142 | - bin["nypix"] = nypix | |
| 143 | - bin["binsz"] = binsz | |
| 144 | - bin["coordsys"] = coordsys | |
| 145 | - bin["usepnt"] = True | |
| 146 | - bin["proj"] = proj | |
| 168 | + bin['inobs'] = eventfile | |
| 169 | + bin['outcube'] = cubefile | |
| 170 | + bin['ebinalg'] = 'LOG' | |
| 171 | + bin['emin'] = emin | |
| 172 | + bin['emax'] = emax | |
| 173 | + bin['enumbins'] = enumbins | |
| 174 | + bin['nxpix'] = nxpix | |
| 175 | + bin['nypix'] = nypix | |
| 176 | + bin['binsz'] = binsz | |
| 177 | + bin['coordsys'] = coordsys | |
| 178 | + bin['usepnt'] = True | |
| 179 | + bin['proj'] = proj | |
| 147 | 180 | bin.execute() |
| 148 | 181 | |
| 149 | 182 | # Set observation ID |
| ... | ... | @@ -156,19 +189,19 @@ def run_pipeline(obs, emin=0.1, emax=100.0, |
| 156 | 189 | # Save XML file |
| 157 | 190 | xml = gammalib.GXml() |
| 158 | 191 | obs.write(xml) |
| 159 | - xml.save("obs_cube.xml") | |
| 192 | + xml.save('obs_cube.xml') | |
| 160 | 193 | |
| 161 | 194 | # Perform maximum likelihood fitting |
| 162 | 195 | like = ctools.ctlike() |
| 163 | - like["inobs"] = "obs_cube.xml" | |
| 164 | - like["inmodel"] = model | |
| 165 | - like["outmodel"] = "fit_results.xml" | |
| 166 | - like["expcube"] = "NONE" | |
| 167 | - like["psfcube"] = "NONE" | |
| 168 | - like["bkgcube"] = "NONE" | |
| 169 | - like["caldb"] = caldb | |
| 170 | - like["irf"] = irf | |
| 171 | - like["debug"] = True # Switch this always on for results in console | |
| 196 | + like['inobs'] = 'obs_cube.xml' | |
| 197 | + like['inmodel'] = model | |
| 198 | + like['outmodel'] = 'fit_results.xml' | |
| 199 | + like['expcube'] = 'NONE' | |
| 200 | + like['psfcube'] = 'NONE' | |
| 201 | + like['bkgcube'] = 'NONE' | |
| 202 | + like['caldb'] = caldb | |
| 203 | + like['irf'] = irf | |
| 204 | + like['debug'] = True # Switch this always on for results in console | |
| 172 | 205 | like.execute() |
| 173 | 206 | |
| 174 | 207 | # Return |
| ... | ... | @@ -181,9 +214,9 @@ def run_pipeline(obs, emin=0.1, emax=100.0, |
| 181 | 214 | if __name__ == '__main__': |
| 182 | 215 | |
| 183 | 216 | # Dump header |
| 184 | - print("********************************************") | |
| 185 | - print("* CTA binned analysis pipeline *") | |
| 186 | - print("********************************************") | |
| 217 | + print('********************************************') | |
| 218 | + print('* CTA binned analysis pipeline *') | |
| 219 | + print('********************************************') | |
| 187 | 220 | |
| 188 | 221 | # Setup observations |
| 189 | 222 | obs = setup_observations() | ... | ... |
examples/show_butterfly.py
examples/show_model.py
| ... | ... | @@ -82,8 +82,7 @@ def plot_spectrum(model, emin=0.01, emax=100.0, enumbins=100): |
| 82 | 82 | # Script entry # |
| 83 | 83 | # ============= # |
| 84 | 84 | if __name__ == "__main__": |
| 85 | - """ | |
| 86 | - """ | |
| 85 | + | |
| 87 | 86 | # Check for model filename |
| 88 | 87 | if len(sys.argv) < 2: |
| 89 | 88 | sys.exit("Usage: show_model.py model.xml [index]") | ... | ... |
examples/show_pha.py
| ... | ... | @@ -79,9 +79,7 @@ def show_pha(pha): |
| 79 | 79 | # Main routine entry point # |
| 80 | 80 | # ======================== # |
| 81 | 81 | if __name__ == '__main__': |
| 82 | - """ | |
| 83 | - Display spectrum in PHA format. | |
| 84 | - """ | |
| 82 | + | |
| 85 | 83 | # Print usage information |
| 86 | 84 | usage = "Usage: show_pha filename" \ |
| 87 | 85 | " [-n bins] [-c column] [-t title] [-p plot]" | ... | ... |
examples/show_pull_evolution.py
| ... | ... | @@ -81,9 +81,7 @@ def read_pull(filename, parname): |
| 81 | 81 | # Main routine entry point # |
| 82 | 82 | # ======================== # |
| 83 | 83 | if __name__ == '__main__': |
| 84 | - """ | |
| 85 | - Display pull evolution generated by cspull using matplotlib. | |
| 86 | - """ | |
| 84 | + | |
| 87 | 85 | # Print usage information |
| 88 | 86 | usage = "Usage: show_pull_evolution filename parname" |
| 89 | 87 | if len(sys.argv) < 3: | ... | ... |
examples/show_pull_histogram.py
| ... | ... | @@ -81,9 +81,7 @@ def read_pull(filename, parname): |
| 81 | 81 | # Main routine entry point # |
| 82 | 82 | # ======================== # |
| 83 | 83 | if __name__ == '__main__': |
| 84 | - """ | |
| 85 | - Display pull histogram generated by cspull using matplotlib. | |
| 86 | - """ | |
| 84 | + | |
| 87 | 85 | # Print usage information |
| 88 | 86 | usage = "Usage: show_pull_histogram filename parname [bins]" |
| 89 | 87 | if len(sys.argv) < 3: | ... | ... |
examples/show_response.py
| ... | ... | @@ -252,9 +252,7 @@ def show_one_response(rspname, dbname, name, rootdir=None, color="r"): |
| 252 | 252 | # Main routine entry point # |
| 253 | 253 | # ======================== # |
| 254 | 254 | if __name__ == '__main__': |
| 255 | - """ | |
| 256 | - Display response information. | |
| 257 | - """ | |
| 255 | + | |
| 258 | 256 | # Create figures |
| 259 | 257 | plt.figure(1) |
| 260 | 258 | plt.title("Effective area") | ... | ... |
examples/show_sensitivity.py
| ... | ... | @@ -119,8 +119,7 @@ def show_sensitivity(sensitivity, filename): |
| 119 | 119 | # Main routine entry point # |
| 120 | 120 | # ======================== # |
| 121 | 121 | if __name__ == '__main__': |
| 122 | - """ | |
| 123 | - """ | |
| 122 | + | |
| 124 | 123 | # Print usage information |
| 125 | 124 | usage = "Usage: show_sensitivity [filename]" |
| 126 | 125 | if len(sys.argv) < 1: | ... | ... |
examples/show_spectrum.py
examples/show_ts_distribution.py
| ... | ... | @@ -219,9 +219,7 @@ def dist_pdf(values, nbins, title): |
| 219 | 219 | # Main routine entry point # |
| 220 | 220 | # ======================== # |
| 221 | 221 | if __name__ == '__main__': |
| 222 | - """ | |
| 223 | - Display TS distribution generated using cstsdist using matplotlib. | |
| 224 | - """ | |
| 222 | + | |
| 225 | 223 | # Print usage information |
| 226 | 224 | usage = "Usage: show_ts_distribution filename" \ |
| 227 | 225 | " [-n bins] [-c column] [-t title] [-p plot]" | ... | ... |
examples/simulate_events.py
| ... | ... | @@ -239,17 +239,15 @@ def show_events(events, xmlname, duration, emin, emax, ebins=30): |
| 239 | 239 | # Main routine entry point # |
| 240 | 240 | #==========================# |
| 241 | 241 | if __name__ == '__main__': |
| 242 | - """ | |
| 243 | - Simulate events. | |
| 244 | - """ | |
| 242 | + | |
| 245 | 243 | # Dump header |
| 246 | - print("") | |
| 247 | - print("*******************") | |
| 248 | - print("* Simulate events *") | |
| 249 | - print("*******************") | |
| 244 | + print('') | |
| 245 | + print('*******************') | |
| 246 | + print('* Simulate events *') | |
| 247 | + print('*******************') | |
| 250 | 248 | |
| 251 | 249 | # Set XML names |
| 252 | - xmlname = "model_bgd.xml" | |
| 250 | + xmlname = 'model_bgd.xml' | |
| 253 | 251 | |
| 254 | 252 | # Set simulation parameters |
| 255 | 253 | duration = 360000.0 # Observation duration (s) | ... | ... |