Commit 5d64b0db41b98f76058c8a2972a8eab0cfbd3ad0
1 parent
37c64e1e
Adapt to removal of ctools::is_valid_filename() method
Showing
20 changed files
with
163 additions
and
133 deletions
cscripts/csebins.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Generates energy boundaries for stacked analysis | 3 | # Generates energy boundaries for stacked analysis |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2017 Juergen Knoedlseder | 5 | +# Copyright (C) 2017-2018 Juergen Knoedlseder |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
| @@ -55,13 +55,10 @@ class csebins(ctools.csobservation): | @@ -55,13 +55,10 @@ class csebins(ctools.csobservation): | ||
| 55 | # Initialise observation container if it is currently empty | 55 | # Initialise observation container if it is currently empty |
| 56 | if self.obs().size() == 0: | 56 | if self.obs().size() == 0: |
| 57 | 57 | ||
| 58 | - # Query "inobs" parameter | ||
| 59 | - filename = self['inobs'].filename() | ||
| 60 | - | ||
| 61 | # If an observation definition file was provided then load it, | 58 | # If an observation definition file was provided then load it, |
| 62 | # otherwise build a single observation with response information | 59 | # otherwise build a single observation with response information |
| 63 | - if self._is_valid_filename(filename): | ||
| 64 | - self.obs(gammalib.GObservations(filename)) | 60 | + if self['inobs'].is_valid(): |
| 61 | + self.obs(gammalib.GObservations(self['inobs'].filename())) | ||
| 65 | else: | 62 | else: |
| 66 | cta = gammalib.GCTAObservation() | 63 | cta = gammalib.GCTAObservation() |
| 67 | caldb = gammalib.GCaldb('cta', self['caldb'].string()) | 64 | caldb = gammalib.GCaldb('cta', self['caldb'].string()) |
cscripts/csiactcopy.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Copies IACT data from remote machine | 3 | # Copies IACT data from remote machine |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2016-2017 Michael Mayer | 5 | +# Copyright (C) 2016-2018 Michael Mayer |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
| @@ -74,7 +74,8 @@ class csiactcopy(ctools.cscript): | @@ -74,7 +74,8 @@ class csiactcopy(ctools.cscript): | ||
| 74 | # Get parameters | 74 | # Get parameters |
| 75 | self._prodname = self['prodname'].string() | 75 | self._prodname = self['prodname'].string() |
| 76 | self._outpath = gammalib.expand_env(self['outpath'].string()) | 76 | self._outpath = gammalib.expand_env(self['outpath'].string()) |
| 77 | - self._runlist = self['runlist'].filename() | 77 | + if self['runlist'].is_valid(): |
| 78 | + self._runlist = self['runlist'].filename() | ||
| 78 | 79 | ||
| 79 | # Write input parameters into logger | 80 | # Write input parameters into logger |
| 80 | self._log_parameters(gammalib.TERSE) | 81 | self._log_parameters(gammalib.TERSE) |
| @@ -322,7 +323,7 @@ class csiactcopy(ctools.cscript): | @@ -322,7 +323,7 @@ class csiactcopy(ctools.cscript): | ||
| 322 | for i in range(local_hdu.ncols()): | 323 | for i in range(local_hdu.ncols()): |
| 323 | 324 | ||
| 324 | # Get local and remote columns | 325 | # Get local and remote columns |
| 325 | - local_col = local_hdu[i] | 326 | + local_col = local_hdu[i] |
| 326 | remote_col = remote_hdu[i] | 327 | remote_col = remote_hdu[i] |
| 327 | 328 | ||
| 328 | # Loop over entries and merge | 329 | # Loop over entries and merge |
| @@ -381,14 +382,14 @@ class csiactcopy(ctools.cscript): | @@ -381,14 +382,14 @@ class csiactcopy(ctools.cscript): | ||
| 381 | self._log_value(gammalib.NORMAL, 'Number of observations', | 382 | self._log_value(gammalib.NORMAL, 'Number of observations', |
| 382 | len(runs)) | 383 | len(runs)) |
| 383 | 384 | ||
| 384 | - # ... otherwise, if the runlist file is 'NONE' then leave the | 385 | + # ... otherwise, if the runlist filename is empty then leave the |
| 385 | # run list empty. This implies copying all available data. | 386 | # run list empty. This implies copying all available data. |
| 386 | - elif filename == 'NONE': | 387 | + elif filename.is_empty(): |
| 387 | self._log_string(gammalib.NORMAL, 'Copy all available data') | 388 | self._log_string(gammalib.NORMAL, 'Copy all available data') |
| 388 | 389 | ||
| 389 | # ... otherwise raise an exception | 390 | # ... otherwise raise an exception |
| 390 | else: | 391 | else: |
| 391 | - msg = '*** ERROR: Runlist file "%s" not available' % filename | 392 | + msg = '*** ERROR: Runlist file "%s" not available' % filename.url() |
| 392 | raise RuntimeError(msg) | 393 | raise RuntimeError(msg) |
| 393 | 394 | ||
| 394 | # Return run list | 395 | # Return run list |
cscripts/csiactobs.py
| @@ -106,7 +106,7 @@ class csiactobs(ctools.cscript): | @@ -106,7 +106,7 @@ class csiactobs(ctools.cscript): | ||
| 106 | self._datapath = gammalib.expand_env(self._datapath) | 106 | self._datapath = gammalib.expand_env(self._datapath) |
| 107 | 107 | ||
| 108 | # Query input parameters | 108 | # Query input parameters |
| 109 | - self['inmodel'].filename() | 109 | + self['inmodel'].query() |
| 110 | 110 | ||
| 111 | # Read FITS production | 111 | # Read FITS production |
| 112 | self._prodname = self['prodname'].string() | 112 | self._prodname = self['prodname'].string() |
| @@ -161,13 +161,17 @@ class csiactobs(ctools.cscript): | @@ -161,13 +161,17 @@ class csiactobs(ctools.cscript): | ||
| 161 | # Open master index file and look for prodname | 161 | # Open master index file and look for prodname |
| 162 | master_file = os.path.join(self._datapath, self._master_indx) | 162 | master_file = os.path.join(self._datapath, self._master_indx) |
| 163 | if not os.path.isfile(master_file): | 163 | if not os.path.isfile(master_file): |
| 164 | - raise RuntimeError('FITS data store not available. No master index file found. Make sure the file is copied from the server and your datapath is set correctly.') | 164 | + raise RuntimeError('FITS data store not available. No master ' |
| 165 | + 'index file found. Make sure the file is ' | ||
| 166 | + 'copied from the server and your datapath ' | ||
| 167 | + 'is set correctly.') | ||
| 165 | 168 | ||
| 166 | # Open and load JSON file | 169 | # Open and load JSON file |
| 167 | json_data = open(master_file).read() | 170 | json_data = open(master_file).read() |
| 168 | data = json.loads(json_data) | 171 | data = json.loads(json_data) |
| 169 | if not 'datasets' in data: | 172 | if not 'datasets' in data: |
| 170 | - raise RuntimeError('Key "datasets" not available in master index file.') | 173 | + raise RuntimeError('Key "datasets" not available in master ' |
| 174 | + 'index file.') | ||
| 171 | 175 | ||
| 172 | # Get configurations | 176 | # Get configurations |
| 173 | configs = data['datasets'] | 177 | configs = data['datasets'] |
| @@ -190,14 +194,21 @@ class csiactobs(ctools.cscript): | @@ -190,14 +194,21 @@ class csiactobs(ctools.cscript): | ||
| 190 | 194 | ||
| 191 | # Check index files | 195 | # Check index files |
| 192 | if self._hdu_index == '' or self._obs_index == '': | 196 | if self._hdu_index == '' or self._obs_index == '': |
| 193 | - raise RuntimeError('*** ERROR: FITS data store "'+self._prodname+'" not available. Run csiactdata to get a list of available storage names') | 197 | + raise RuntimeError('*** ERROR: FITS data store "'+self._prodname+ |
| 198 | + '" not available. Run csiactdata to get a list ' | ||
| 199 | + 'of available storage names') | ||
| 194 | 200 | ||
| 195 | # Check HDU names | 201 | # Check HDU names |
| 196 | filename = gammalib.GFilename(self._hdu_index+'[HDU_INDEX]') | 202 | filename = gammalib.GFilename(self._hdu_index+'[HDU_INDEX]') |
| 197 | if not filename.is_fits(): | 203 | if not filename.is_fits(): |
| 198 | - raise RuntimeError('*** ERROR: HDU index file "'+self._hdu_index+'[HDU_INDEX]" for FITS data store "'+self._prodname+'" not available. Check your master index file or run csiactdata to get a list of available storage names.') | ||
| 199 | - | ||
| 200 | - # Check for existence of 'BKG_SCALE' in the observation index file if required | 204 | + raise RuntimeError('*** ERROR: HDU index file "'+self._hdu_index+ |
| 205 | + '[HDU_INDEX]" for FITS data store "'+ | ||
| 206 | + self._prodname+'" not available. Check your ' | ||
| 207 | + 'master index file or run csiactdata to get ' | ||
| 208 | + 'a list of available storage names.') | ||
| 209 | + | ||
| 210 | + # Check for existence of 'BKG_SCALE' in the observation index file if | ||
| 211 | + # required | ||
| 201 | if self._use_bkg_scale: | 212 | if self._use_bkg_scale: |
| 202 | 213 | ||
| 203 | # Create filename | 214 | # Create filename |
| @@ -209,7 +220,8 @@ class csiactobs(ctools.cscript): | @@ -209,7 +220,8 @@ class csiactobs(ctools.cscript): | ||
| 209 | # Open FITS file | 220 | # Open FITS file |
| 210 | fits = gammalib.GFits(self._obs_index) | 221 | fits = gammalib.GFits(self._obs_index) |
| 211 | 222 | ||
| 212 | - # Check if column "BKG_SCALE" is found and signal its possible usage | 223 | + # Check if column "BKG_SCALE" is found and signal its possible |
| 224 | + # usage | ||
| 213 | if not fits['OBS_INDEX'].contains('BKG_SCALE'): | 225 | if not fits['OBS_INDEX'].contains('BKG_SCALE'): |
| 214 | self._use_bkg_scale = False | 226 | self._use_bkg_scale = False |
| 215 | 227 | ||
| @@ -221,8 +233,8 @@ class csiactobs(ctools.cscript): | @@ -221,8 +233,8 @@ class csiactobs(ctools.cscript): | ||
| 221 | self._use_bkg_scale = False | 233 | self._use_bkg_scale = False |
| 222 | 234 | ||
| 223 | # Create base data directory from hdu index file location | 235 | # Create base data directory from hdu index file location |
| 224 | - self._subdir = os.path.dirname(self._hdu_index) | ||
| 225 | - self._debug = False # Debugging in client tools | 236 | + self._subdir = os.path.dirname(self._hdu_index) |
| 237 | + self._debug = False # Debugging in client tools | ||
| 226 | 238 | ||
| 227 | # Write input parameters into logger | 239 | # Write input parameters into logger |
| 228 | self._log_parameters(gammalib.TERSE) | 240 | self._log_parameters(gammalib.TERSE) |
| @@ -230,7 +242,7 @@ class csiactobs(ctools.cscript): | @@ -230,7 +242,7 @@ class csiactobs(ctools.cscript): | ||
| 230 | # Return | 242 | # Return |
| 231 | return | 243 | return |
| 232 | 244 | ||
| 233 | - def _background_spectrum(self, prefactor, index, emin = 0.01, emax = 100.0): | 245 | + def _background_spectrum(self, prefactor, index, emin=0.01, emax=100.0): |
| 234 | """ | 246 | """ |
| 235 | Create a background spectrum model dependent on user parameters | 247 | Create a background spectrum model dependent on user parameters |
| 236 | 248 | ||
| @@ -419,8 +431,10 @@ class csiactobs(ctools.cscript): | @@ -419,8 +431,10 @@ class csiactobs(ctools.cscript): | ||
| 419 | """ | 431 | """ |
| 420 | # If there are models provided by "inmodels" then append them now to | 432 | # If there are models provided by "inmodels" then append them now to |
| 421 | # the model container | 433 | # the model container |
| 422 | - filename = self['inmodel'].filename().url() | ||
| 423 | - if filename != '' and filename != 'NONE': | 434 | + if self['inmodel'].is_valid(): |
| 435 | + | ||
| 436 | + # Get filename | ||
| 437 | + filename = self['inmodel'].filename().url() | ||
| 424 | 438 | ||
| 425 | # Log header and input model file | 439 | # Log header and input model file |
| 426 | self._log_header1(gammalib.TERSE, 'Append input models') | 440 | self._log_header1(gammalib.TERSE, 'Append input models') |
| @@ -505,8 +519,7 @@ class csiactobs(ctools.cscript): | @@ -505,8 +519,7 @@ class csiactobs(ctools.cscript): | ||
| 505 | 519 | ||
| 506 | # Return filename | 520 | # Return filename |
| 507 | return filename | 521 | return filename |
| 508 | - | ||
| 509 | - | 522 | + |
| 510 | def _is_present(self, filename, obs_id, filetype): | 523 | def _is_present(self, filename, obs_id, filetype): |
| 511 | """ | 524 | """ |
| 512 | Checks if a filename is present | 525 | Checks if a filename is present |
cscripts/cslightcrv.py
| @@ -120,7 +120,7 @@ class cslightcrv(ctools.csobservation): | @@ -120,7 +120,7 @@ class cslightcrv(ctools.csobservation): | ||
| 120 | 120 | ||
| 121 | # Read ahead output parameters | 121 | # Read ahead output parameters |
| 122 | if self._read_ahead(): | 122 | if self._read_ahead(): |
| 123 | - self['outfile'].filename() | 123 | + self['outfile'].query() |
| 124 | 124 | ||
| 125 | # Write input parameters into logger | 125 | # Write input parameters into logger |
| 126 | self._log_parameters(gammalib.TERSE) | 126 | self._log_parameters(gammalib.TERSE) |
| @@ -592,11 +592,11 @@ class cslightcrv(ctools.csobservation): | @@ -592,11 +592,11 @@ class cslightcrv(ctools.csobservation): | ||
| 592 | # Write header | 592 | # Write header |
| 593 | self._log_header1(gammalib.TERSE, 'Save light curve') | 593 | self._log_header1(gammalib.TERSE, 'Save light curve') |
| 594 | 594 | ||
| 595 | - # Get light curve filename | ||
| 596 | - outfile = self['outfile'].filename() | 595 | + # Continue only if filename is valid |
| 596 | + if self['outfile'].is_valid(): | ||
| 597 | 597 | ||
| 598 | - # Continue only filename and residual map are valid | ||
| 599 | - if self._fits != None: | 598 | + # Get light curve filename |
| 599 | + outfile = self['outfile'].filename() | ||
| 600 | 600 | ||
| 601 | # Log file name | 601 | # Log file name |
| 602 | self._log_value(gammalib.NORMAL, 'Light curve file', outfile.url()) | 602 | self._log_value(gammalib.NORMAL, 'Light curve file', outfile.url()) |
cscripts/csmodelinfo.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Shows the content of a model container | 3 | # Shows the content of a model container |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2015-2017 Michael Mayer | 5 | +# Copyright (C) 2015-2018 Michael Mayer |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
| @@ -75,7 +75,7 @@ class csmodelinfo(ctools.cscript): | @@ -75,7 +75,7 @@ class csmodelinfo(ctools.cscript): | ||
| 75 | 75 | ||
| 76 | # Query ahead DS9 filename | 76 | # Query ahead DS9 filename |
| 77 | if self._read_ahead(): | 77 | if self._read_ahead(): |
| 78 | - self['outds9file'].filename() | 78 | + self['outds9file'].query() |
| 79 | 79 | ||
| 80 | # Write input parameters into logger | 80 | # Write input parameters into logger |
| 81 | self._log_parameters(gammalib.TERSE) | 81 | self._log_parameters(gammalib.TERSE) |
| @@ -122,9 +122,9 @@ class csmodelinfo(ctools.cscript): | @@ -122,9 +122,9 @@ class csmodelinfo(ctools.cscript): | ||
| 122 | 122 | ||
| 123 | # Loop over models and initialise dictionaries with model names | 123 | # Loop over models and initialise dictionaries with model names |
| 124 | for model in self._models: | 124 | for model in self._models: |
| 125 | - types[model.type()] = 0 | 125 | + types[model.type()] = 0 |
| 126 | instruments[model.instruments()] = 0 | 126 | instruments[model.instruments()] = 0 |
| 127 | - pars_at_limit[model.name()] = [] | 127 | + pars_at_limit[model.name()] = [] |
| 128 | 128 | ||
| 129 | # Loop over models again and fill values to be dumped | 129 | # Loop over models again and fill values to be dumped |
| 130 | for model in self._models: | 130 | for model in self._models: |
| @@ -244,12 +244,12 @@ class csmodelinfo(ctools.cscript): | @@ -244,12 +244,12 @@ class csmodelinfo(ctools.cscript): | ||
| 244 | """ | 244 | """ |
| 245 | Save models to ds9 region file | 245 | Save models to ds9 region file |
| 246 | """ | 246 | """ |
| 247 | - # Get output filename | ||
| 248 | - ds9file = self['outds9file'].filename() | ||
| 249 | - | ||
| 250 | # Check if DS9 file is valid | 247 | # Check if DS9 file is valid |
| 251 | - if ds9file != '' and ds9file != 'NONE': | ||
| 252 | - | 248 | + if self['outds9file'].is_valid(): |
| 249 | + | ||
| 250 | + # Get output filename | ||
| 251 | + ds9file = self['outds9file'].filename() | ||
| 252 | + | ||
| 253 | # Write header | 253 | # Write header |
| 254 | self._log_header1(gammalib.TERSE, 'Save models in DS9 file') | 254 | self._log_header1(gammalib.TERSE, 'Save models in DS9 file') |
| 255 | 255 |
cscripts/csmodelmerge.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Merge model definition XML files | 3 | # Merge model definition XML files |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2015-2017 Michael Mayer | 5 | +# Copyright (C) 2015-2018 Michael Mayer |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
cscripts/csmodelselect.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Selects model from a model definition XML file | 3 | # Selects model from a model definition XML file |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2016-2017 Juergen Knoedlseder | 5 | +# Copyright (C) 2016-2018 Juergen Knoedlseder |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
cscripts/csmodelsois.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Puts subset of sources in diffuse model cube | 3 | # Puts subset of sources in diffuse model cube |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2017 Josh Cardenzana | 5 | +# Copyright (C) 2017-2018 Josh Cardenzana |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
| @@ -73,7 +73,7 @@ class csmodelsois(ctools.cscript): | @@ -73,7 +73,7 @@ class csmodelsois(ctools.cscript): | ||
| 73 | 73 | ||
| 74 | # Read input parameters | 74 | # Read input parameters |
| 75 | ptsrcsig = self['ptsrcsig'].real() | 75 | ptsrcsig = self['ptsrcsig'].real() |
| 76 | - | 76 | + |
| 77 | # Get the cube centre coordinates | 77 | # Get the cube centre coordinates |
| 78 | self._cubegen['coordsys'].string(self['coordsys'].string()) | 78 | self._cubegen['coordsys'].string(self['coordsys'].string()) |
| 79 | if self['coordsys'].string() == 'CEL': | 79 | if self['coordsys'].string() == 'CEL': |
| @@ -88,7 +88,7 @@ class csmodelsois(ctools.cscript): | @@ -88,7 +88,7 @@ class csmodelsois(ctools.cscript): | ||
| 88 | self._cubegen['nxpix'].integer(self['nxpix'].integer()) | 88 | self._cubegen['nxpix'].integer(self['nxpix'].integer()) |
| 89 | self._cubegen['nypix'].integer(self['nypix'].integer()) | 89 | self._cubegen['nypix'].integer(self['nypix'].integer()) |
| 90 | self._cubegen['proj'].string(self['proj'].string()) | 90 | self._cubegen['proj'].string(self['proj'].string()) |
| 91 | - | 91 | + |
| 92 | # Get the energy binning parameters | 92 | # Get the energy binning parameters |
| 93 | self._cubegen['ebinalg'].string(self['ebinalg'].string()) | 93 | self._cubegen['ebinalg'].string(self['ebinalg'].string()) |
| 94 | if self['ebinalg'].string() == 'FILE': | 94 | if self['ebinalg'].string() == 'FILE': |
| @@ -98,13 +98,13 @@ class csmodelsois(ctools.cscript): | @@ -98,13 +98,13 @@ class csmodelsois(ctools.cscript): | ||
| 98 | self._cubegen['emax'].real(self['emax'].real()) | 98 | self._cubegen['emax'].real(self['emax'].real()) |
| 99 | self._cubegen['enumbins'].integer(self['enumbins'].integer()) | 99 | self._cubegen['enumbins'].integer(self['enumbins'].integer()) |
| 100 | 100 | ||
| 101 | - # Get remaining hidden parameters | 101 | + # Set point source significance |
| 102 | self._cubegen['ptsrcsig'].real(ptsrcsig) | 102 | self._cubegen['ptsrcsig'].real(ptsrcsig) |
| 103 | - | 103 | + |
| 104 | # Read optionally output cube filenames | 104 | # Read optionally output cube filenames |
| 105 | if self._read_ahead(): | 105 | if self._read_ahead(): |
| 106 | self._cubegen['outcube'].filename(self['outcube'].filename()) | 106 | self._cubegen['outcube'].filename(self['outcube'].filename()) |
| 107 | - self['outmodel'].filename() | 107 | + self['outmodel'].query() |
| 108 | 108 | ||
| 109 | # Write parameters into logger | 109 | # Write parameters into logger |
| 110 | self._log_parameters(gammalib.TERSE) | 110 | self._log_parameters(gammalib.TERSE) |
| @@ -185,12 +185,12 @@ class csmodelsois(ctools.cscript): | @@ -185,12 +185,12 @@ class csmodelsois(ctools.cscript): | ||
| 185 | """ | 185 | """ |
| 186 | # Save the generated cube if the cube and filename are not empty | 186 | # Save the generated cube if the cube and filename are not empty |
| 187 | if ((not self._cubegen.mapcube().cube().is_empty()) and | 187 | if ((not self._cubegen.mapcube().cube().is_empty()) and |
| 188 | - self._is_valid_filename(self['outcube'].filename())): | 188 | + self['outcube'].is_valid()): |
| 189 | self._cubegen.mapcube().save(self['outcube'].filename(), | 189 | self._cubegen.mapcube().save(self['outcube'].filename(), |
| 190 | - self['clobber'].boolean()) | 190 | + self['clobber'].boolean()) |
| 191 | 191 | ||
| 192 | # If requested, save the updated list of models | 192 | # If requested, save the updated list of models |
| 193 | - if self._is_valid_filename(self['outmodel'].filename()): | 193 | + if self['outmodel'].is_valid(): |
| 194 | 194 | ||
| 195 | # Generate a list of models that will be output to file | 195 | # Generate a list of models that will be output to file |
| 196 | outmodels = gammalib.GModels(self._models) | 196 | outmodels = gammalib.GModels(self._models) |
cscripts/csobsdef.py
| @@ -107,7 +107,7 @@ class csobsdef(ctools.cscript): | @@ -107,7 +107,7 @@ class csobsdef(ctools.cscript): | ||
| 107 | 107 | ||
| 108 | # Read ahead parameters | 108 | # Read ahead parameters |
| 109 | if self._read_ahead(): | 109 | if self._read_ahead(): |
| 110 | - self['outobs'].filename() | 110 | + self['outobs'].query() |
| 111 | 111 | ||
| 112 | # Write input parameters into logger | 112 | # Write input parameters into logger |
| 113 | self._log_parameters(gammalib.TERSE) | 113 | self._log_parameters(gammalib.TERSE) |
| @@ -351,11 +351,11 @@ class csobsdef(ctools.cscript): | @@ -351,11 +351,11 @@ class csobsdef(ctools.cscript): | ||
| 351 | # Write header and filename into logger | 351 | # Write header and filename into logger |
| 352 | self._log_header1(gammalib.TERSE, 'Save observation definition XML file') | 352 | self._log_header1(gammalib.TERSE, 'Save observation definition XML file') |
| 353 | 353 | ||
| 354 | - # Get output filename in case it was not read ahead | ||
| 355 | - outobs = self['outobs'].filename() | ||
| 356 | - | ||
| 357 | # Check if observation definition XML file is valid | 354 | # Check if observation definition XML file is valid |
| 358 | - if outobs.url() != 'NONE': | 355 | + if self['outobs'].is_valid(): |
| 356 | + | ||
| 357 | + # Get output filename in case it was not read ahead | ||
| 358 | + outobs = self['outobs'].filename() | ||
| 359 | 359 | ||
| 360 | # Log filename | 360 | # Log filename |
| 361 | self._log_value(gammalib.NORMAL, 'Observation XML file', outobs.url()) | 361 | self._log_value(gammalib.NORMAL, 'Observation XML file', outobs.url()) |
cscripts/csobsinfo.py
| @@ -76,7 +76,7 @@ class csobsinfo(ctools.csobservation): | @@ -76,7 +76,7 @@ class csobsinfo(ctools.csobservation): | ||
| 76 | 76 | ||
| 77 | # Read ahead DS9 filename | 77 | # Read ahead DS9 filename |
| 78 | if self._read_ahead(): | 78 | if self._read_ahead(): |
| 79 | - self['outds9file'].filename() | 79 | + self['outds9file'].query() |
| 80 | 80 | ||
| 81 | # Write input parameters into logger | 81 | # Write input parameters into logger |
| 82 | self._log_parameters(gammalib.TERSE) | 82 | self._log_parameters(gammalib.TERSE) |
| @@ -317,12 +317,11 @@ class csobsinfo(ctools.csobservation): | @@ -317,12 +317,11 @@ class csobsinfo(ctools.csobservation): | ||
| 317 | observation container into a DS9 region file. If "NONE" is | 317 | observation container into a DS9 region file. If "NONE" is |
| 318 | specified for the "outds9file" parameter the method does nothing. | 318 | specified for the "outds9file" parameter the method does nothing. |
| 319 | """ | 319 | """ |
| 320 | - | ||
| 321 | - # Get output filename in case it was not read ahead | ||
| 322 | - ds9file = self['outds9file'].filename() | ||
| 323 | - | ||
| 324 | # Check if DS9 file is valid | 320 | # Check if DS9 file is valid |
| 325 | - if ds9file.url() != 'NONE': | 321 | + if self['outds9file'].is_valid(): |
| 322 | + | ||
| 323 | + # Get output filename in case it was not read ahead | ||
| 324 | + ds9file = self['outds9file'].filename() | ||
| 326 | 325 | ||
| 327 | # Write header | 326 | # Write header |
| 328 | self._log_header1(gammalib.TERSE, 'Save pointings in DS9 file') | 327 | self._log_header1(gammalib.TERSE, 'Save pointings in DS9 file') |
cscripts/csphagen.py
| @@ -161,11 +161,15 @@ class csphagen(ctools.csobservation): | @@ -161,11 +161,15 @@ class csphagen(ctools.csobservation): | ||
| 161 | self._setup_observations(self.obs(), True, True, False) | 161 | self._setup_observations(self.obs(), True, True, False) |
| 162 | 162 | ||
| 163 | # Get spatial component of source model if an input model is defined | 163 | # Get spatial component of source model if an input model is defined |
| 164 | - inmodel = self['inmodel'].filename() | ||
| 165 | - if not self['inmodel'].is_undefined(): | 164 | + if self['inmodel'].is_valid(): |
| 165 | + inmodel = self['inmodel'].filename() | ||
| 166 | models = gammalib.GModels(inmodel) | 166 | models = gammalib.GModels(inmodel) |
| 167 | name = self['srcname'].string() | 167 | name = self['srcname'].string() |
| 168 | self._src_model = models[name].spatial().clone() | 168 | self._src_model = models[name].spatial().clone() |
| 169 | + elif self.obs().models().size() > 0: | ||
| 170 | + name = self['srcname'].string() | ||
| 171 | + if self.obs().models().contains(name): | ||
| 172 | + self._src_model = self.obs().models()[name].spatial() | ||
| 169 | 173 | ||
| 170 | # Set energy bounds | 174 | # Set energy bounds |
| 171 | self._ebounds = self._create_ebounds() | 175 | self._ebounds = self._create_ebounds() |
| @@ -174,7 +178,7 @@ class csphagen(ctools.csobservation): | @@ -174,7 +178,7 @@ class csphagen(ctools.csobservation): | ||
| 174 | self._src_reg = gammalib.GSkyRegions() | 178 | self._src_reg = gammalib.GSkyRegions() |
| 175 | 179 | ||
| 176 | # Exclusion map | 180 | # Exclusion map |
| 177 | - if not self['inexclusion'].is_undefined(): | 181 | + if self['inexclusion'].is_valid(): |
| 178 | inexclusion = self['inexclusion'].filename() | 182 | inexclusion = self['inexclusion'].filename() |
| 179 | self._excl_reg = gammalib.GSkyRegionMap(inexclusion) | 183 | self._excl_reg = gammalib.GSkyRegionMap(inexclusion) |
| 180 | self._has_exclusion = True | 184 | self._has_exclusion = True |
| @@ -416,7 +420,6 @@ class csphagen(ctools.csobservation): | @@ -416,7 +420,6 @@ class csphagen(ctools.csobservation): | ||
| 416 | for obs in self.obs(): | 420 | for obs in self.obs(): |
| 417 | 421 | ||
| 418 | # Skip non CTA observations | 422 | # Skip non CTA observations |
| 419 | - #if obs.instrument() != 'CTA': | ||
| 420 | if obs.classname() != 'GCTAObservation': | 423 | if obs.classname() != 'GCTAObservation': |
| 421 | self._log_string(gammalib.NORMAL, 'Skip %s observation "%s"' % \ | 424 | self._log_string(gammalib.NORMAL, 'Skip %s observation "%s"' % \ |
| 422 | (obs.instrument(), obs.id())) | 425 | (obs.instrument(), obs.id())) |
cscripts/csphasecrv.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Generates spectra as a function of phase | 3 | # Generates spectra as a function of phase |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2017 Rolf Buehler | 5 | +# Copyright (C) 2017-2018 Rolf Buehler |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
cscripts/csresmap.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Generates a residual map. | 3 | # Generates a residual map. |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2014-2017 Michael Mayer | 5 | +# Copyright (C) 2014-2018 Michael Mayer |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
| @@ -73,9 +73,7 @@ class csresmap(ctools.csobservation): | @@ -73,9 +73,7 @@ class csresmap(ctools.csobservation): | ||
| 73 | # If we have a counts cube, then ask whether we also have a model cube. | 73 | # If we have a counts cube, then ask whether we also have a model cube. |
| 74 | # If a model cube name is given then set self._use_maps=True | 74 | # If a model cube name is given then set self._use_maps=True |
| 75 | if self._skip_binning: | 75 | if self._skip_binning: |
| 76 | - modcube = self['modcube'].filename() | ||
| 77 | - if modcube != 'NONE': | ||
| 78 | - self._use_maps = True | 76 | + self._use_maps = self['modcube'].is_valid() |
| 79 | 77 | ||
| 80 | # If not two maps are given, proceed to set up observation | 78 | # If not two maps are given, proceed to set up observation |
| 81 | if not self._use_maps: | 79 | if not self._use_maps: |
cscripts/csresspec.py
| @@ -85,9 +85,7 @@ class csresspec(ctools.csobservation): | @@ -85,9 +85,7 @@ class csresspec(ctools.csobservation): | ||
| 85 | # components is required, query for precomputed model file and set | 85 | # components is required, query for precomputed model file and set |
| 86 | # use_maps to True | 86 | # use_maps to True |
| 87 | if self.obs().size() == 1 and n_binned == 1 and not components: | 87 | if self.obs().size() == 1 and n_binned == 1 and not components: |
| 88 | - modcube = self['modcube'].filename() | ||
| 89 | - if modcube != 'NONE': | ||
| 90 | - self._use_maps = True | 88 | + self._use_maps = self['modcube'].is_valid() |
| 91 | 89 | ||
| 92 | # If there are unbinned observations query the energy binning parameters | 90 | # If there are unbinned observations query the energy binning parameters |
| 93 | if n_unbinned != 0: | 91 | if n_unbinned != 0: |
| @@ -130,7 +128,7 @@ class csresspec(ctools.csobservation): | @@ -130,7 +128,7 @@ class csresspec(ctools.csobservation): | ||
| 130 | self['ra'].real() | 128 | self['ra'].real() |
| 131 | self['dec'].real() | 129 | self['dec'].real() |
| 132 | self['rad'].real() | 130 | self['rad'].real() |
| 133 | - self['regfile'].filename() | 131 | + self['regfile'].query() |
| 134 | 132 | ||
| 135 | # Unless all observations are On/Off, or we are using precomputed model | 133 | # Unless all observations are On/Off, or we are using precomputed model |
| 136 | # maps query whether to use energy dispersion | 134 | # maps query whether to use energy dispersion |
| @@ -358,11 +356,15 @@ class csresspec(ctools.csobservation): | @@ -358,11 +356,15 @@ class csresspec(ctools.csobservation): | ||
| 358 | 356 | ||
| 359 | # Apply user mask | 357 | # Apply user mask |
| 360 | if self._mask: | 358 | if self._mask: |
| 359 | + if self['regfile'].is_valid(): | ||
| 360 | + regfile = self['regfile'] | ||
| 361 | + else: | ||
| 362 | + regfile = 'NONE' | ||
| 361 | msg = 'Masking ROI requested by user' | 363 | msg = 'Masking ROI requested by user' |
| 362 | self._log_string(gammalib.EXPLICIT, msg) | 364 | self._log_string(gammalib.EXPLICIT, msg) |
| 363 | cube = self._masked_cube(cube, self['ra'], self['dec'], | 365 | cube = self._masked_cube(cube, self['ra'], self['dec'], |
| 364 | self['rad'], | 366 | self['rad'], |
| 365 | - regfile=self['regfile']) | 367 | + regfile=regfile) |
| 366 | 368 | ||
| 367 | # Extract skymap and clip at 0 to null masked areas | 369 | # Extract skymap and clip at 0 to null masked areas |
| 368 | counts = cube.counts().copy() | 370 | counts = cube.counts().copy() |
| @@ -688,17 +690,14 @@ class csresspec(ctools.csobservation): | @@ -688,17 +690,14 @@ class csresspec(ctools.csobservation): | ||
| 688 | # Write header | 690 | # Write header |
| 689 | self._log_header1(gammalib.TERSE, 'Save residuals') | 691 | self._log_header1(gammalib.TERSE, 'Save residuals') |
| 690 | 692 | ||
| 691 | - # Continue only if FITS file is valid | ||
| 692 | - if self._fits != None: | ||
| 693 | - | ||
| 694 | - # Get outfile parameter | ||
| 695 | - outfile = self['outfile'].filename() | 693 | + # Get outfile parameter |
| 694 | + outfile = self['outfile'].filename() | ||
| 696 | 695 | ||
| 697 | - # Log file name | ||
| 698 | - self._log_value(gammalib.NORMAL, 'Residuals file', outfile.url()) | 696 | + # Log file name |
| 697 | + self._log_value(gammalib.NORMAL, 'Residuals file', outfile.url()) | ||
| 699 | 698 | ||
| 700 | - # Save residuals | ||
| 701 | - self._fits.saveto(outfile, self['clobber'].boolean()) | 699 | + # Save residuals |
| 700 | + self._fits.saveto(outfile, self['clobber'].boolean()) | ||
| 702 | 701 | ||
| 703 | # Return | 702 | # Return |
| 704 | return | 703 | return |
cscripts/cssens.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Computes the array sensitivity using the Test Statistic for a test source | 3 | # Computes the array sensitivity using the Test Statistic for a test source |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2011-2017 Juergen Knoedlseder | 5 | +# Copyright (C) 2011-2018 Juergen Knoedlseder |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
| @@ -132,8 +132,7 @@ class cssens(ctools.csobservation): | @@ -132,8 +132,7 @@ class cssens(ctools.csobservation): | ||
| 132 | Observation container | 132 | Observation container |
| 133 | """ | 133 | """ |
| 134 | # If an observation was provided on input then load it from XML file | 134 | # If an observation was provided on input then load it from XML file |
| 135 | - filename = self['inobs'].filename() | ||
| 136 | - if filename != 'NONE' and filename != '': | 135 | + if self['inobs'].is_valid(): |
| 137 | obs = self._get_observations() | 136 | obs = self._get_observations() |
| 138 | 137 | ||
| 139 | # ... otherwise allocate a single observation | 138 | # ... otherwise allocate a single observation |
cscripts/cssrcdetect.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Detects sources in a sky map | 3 | # Detects sources in a sky map |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2016-2017 Juergen Knoedlseder | 5 | +# Copyright (C) 2016-2018 Juergen Knoedlseder |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
| @@ -72,7 +72,7 @@ class cssrcdetect(ctools.cscript): | @@ -72,7 +72,7 @@ class cssrcdetect(ctools.cscript): | ||
| 72 | self['exclrad'].real() | 72 | self['exclrad'].real() |
| 73 | self['fit_pos'].boolean() | 73 | self['fit_pos'].boolean() |
| 74 | self['fit_shape'].boolean() | 74 | self['fit_shape'].boolean() |
| 75 | - | 75 | + |
| 76 | # Query ahead output model filename | 76 | # Query ahead output model filename |
| 77 | if self._read_ahead(): | 77 | if self._read_ahead(): |
| 78 | self['outmodel'].filename() | 78 | self['outmodel'].filename() |
cscripts/cstsdist.py
| @@ -73,12 +73,7 @@ class cstsdist(ctools.csobservation): | @@ -73,12 +73,7 @@ class cstsdist(ctools.csobservation): | ||
| 73 | # Query parameters | 73 | # Query parameters |
| 74 | self['edisp'].boolean() | 74 | self['edisp'].boolean() |
| 75 | self['ntrials'].integer() | 75 | self['ntrials'].integer() |
| 76 | - | ||
| 77 | self['debug'].boolean() | 76 | self['debug'].boolean() |
| 78 | - | ||
| 79 | - # Read ahead output parameters | ||
| 80 | - #if self._read_ahead(): | ||
| 81 | - # self['outfile'].filename() | ||
| 82 | self['outfile'].filename() | 77 | self['outfile'].filename() |
| 83 | 78 | ||
| 84 | # Write input parameters into logger | 79 | # Write input parameters into logger |
cscripts/cstsmapmerge.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Merge Test Statistic maps | 3 | # Merge Test Statistic maps |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2015-2017 Michael Mayer | 5 | +# Copyright (C) 2015-2018 Michael Mayer |
| 6 | # | 6 | # |
| 7 | # This program is free software: you can redistribute it and/or modify | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU General Public License as published by | 8 | # it under the terms of the GNU General Public License as published by |
| @@ -274,7 +274,8 @@ class cstsmapmerge(ctools.cscript): | @@ -274,7 +274,8 @@ class cstsmapmerge(ctools.cscript): | ||
| 274 | if not gammalib.GFilename(fitsfile).is_fits(): | 274 | if not gammalib.GFilename(fitsfile).is_fits(): |
| 275 | 275 | ||
| 276 | # Log message | 276 | # Log message |
| 277 | - self._log_value(gammalib.EXPLICIT, 'Skip file', fitsfile +' (not a FITS file)') | 277 | + self._log_value(gammalib.EXPLICIT, 'Skip file', fitsfile + |
| 278 | + ' (not a FITS file)') | ||
| 278 | 279 | ||
| 279 | # Continue | 280 | # Continue |
| 280 | continue | 281 | continue |
| @@ -292,8 +293,10 @@ class cstsmapmerge(ctools.cscript): | @@ -292,8 +293,10 @@ class cstsmapmerge(ctools.cscript): | ||
| 292 | file0 = fitsfile | 293 | file0 = fitsfile |
| 293 | 294 | ||
| 294 | # Log message | 295 | # Log message |
| 295 | - pix_info = ' (%d TS pixels computed)' % self._get_number_of_ts_pixels(fitsfile) | ||
| 296 | - self._log_value(gammalib.TERSE, 'Initial TS map file', fitsfile + pix_info) | 296 | + pix_info = ' (%d TS pixels computed)' % \ |
| 297 | + self._get_number_of_ts_pixels(fitsfile) | ||
| 298 | + self._log_value(gammalib.TERSE, 'Initial TS map file', | ||
| 299 | + fitsfile + pix_info) | ||
| 297 | 300 | ||
| 298 | # Leave loop | 301 | # Leave loop |
| 299 | break | 302 | break |
| @@ -305,7 +308,8 @@ class cstsmapmerge(ctools.cscript): | @@ -305,7 +308,8 @@ class cstsmapmerge(ctools.cscript): | ||
| 305 | fits.close() | 308 | fits.close() |
| 306 | 309 | ||
| 307 | # Info message | 310 | # Info message |
| 308 | - self._log_value(gammalib.EXPLICIT, 'Skip file', fitsfile +' (no "STATUS MAP" extension)') | 311 | + self._log_value(gammalib.EXPLICIT, 'Skip file', fitsfile + |
| 312 | + ' (no "STATUS MAP" extension)') | ||
| 309 | 313 | ||
| 310 | # Continue | 314 | # Continue |
| 311 | continue | 315 | continue |
| @@ -313,10 +317,9 @@ class cstsmapmerge(ctools.cscript): | @@ -313,10 +317,9 @@ class cstsmapmerge(ctools.cscript): | ||
| 313 | # Signal if no suitable file was found | 317 | # Signal if no suitable file was found |
| 314 | if file0 == '': | 318 | if file0 == '': |
| 315 | msg = 'None of the provided files seems to be a sliced ' + \ | 319 | msg = 'None of the provided files seems to be a sliced ' + \ |
| 316 | - 'TS map file (none has a "STATUS MAP" ' + \ | ||
| 317 | - 'extension)' | 320 | + 'TS map file (none has a "STATUS MAP" ' + \ |
| 321 | + 'extension)' | ||
| 318 | raise RuntimeError(msg) | 322 | raise RuntimeError(msg) |
| 319 | - | ||
| 320 | 323 | ||
| 321 | # ... otherwise merge files | 324 | # ... otherwise merge files |
| 322 | else: | 325 | else: |
| @@ -338,7 +341,8 @@ class cstsmapmerge(ctools.cscript): | @@ -338,7 +341,8 @@ class cstsmapmerge(ctools.cscript): | ||
| 338 | 341 | ||
| 339 | # Skip if file is not FITS | 342 | # Skip if file is not FITS |
| 340 | if not gammalib.GFilename(fitsfile).is_fits(): | 343 | if not gammalib.GFilename(fitsfile).is_fits(): |
| 341 | - self._log_value(gammalib.EXPLICIT, 'Skip file', fitsfile +' (not a FITS file)') | 344 | + self._log_value(gammalib.EXPLICIT, 'Skip file', fitsfile + |
| 345 | + ' (not a FITS file)') | ||
| 342 | continue | 346 | continue |
| 343 | 347 | ||
| 344 | # Open FITS file | 348 | # Open FITS file |
| @@ -347,15 +351,18 @@ class cstsmapmerge(ctools.cscript): | @@ -347,15 +351,18 @@ class cstsmapmerge(ctools.cscript): | ||
| 347 | # Skip if file does not contain status map | 351 | # Skip if file does not contain status map |
| 348 | if not fits.contains('STATUS MAP'): | 352 | if not fits.contains('STATUS MAP'): |
| 349 | fits.close() | 353 | fits.close() |
| 350 | - self._log_value(gammalib.EXPLICIT, 'Skip file', fitsfile +' (no "STATUS MAP" extension)') | 354 | + self._log_value(gammalib.EXPLICIT, 'Skip file', fitsfile + |
| 355 | + ' (no "STATUS MAP" extension)') | ||
| 351 | continue | 356 | continue |
| 352 | 357 | ||
| 353 | # Close FITS file | 358 | # Close FITS file |
| 354 | fits.close() | 359 | fits.close() |
| 355 | 360 | ||
| 356 | # Logging | 361 | # Logging |
| 357 | - pix_info = ' (%d TS pixels computed)' % self._get_number_of_ts_pixels(fitsfile) | ||
| 358 | - self._log_value(gammalib.TERSE, 'Merge TS map file', fitsfile + pix_info) | 362 | + pix_info = ' (%d TS pixels computed)' % \ |
| 363 | + self._get_number_of_ts_pixels(fitsfile) | ||
| 364 | + self._log_value(gammalib.TERSE, 'Merge TS map file', | ||
| 365 | + fitsfile + pix_info) | ||
| 359 | 366 | ||
| 360 | # Merge TS map | 367 | # Merge TS map |
| 361 | self._merge_ts_map(fitsfile) | 368 | self._merge_ts_map(fitsfile) |
cscripts/obsutils.py
| @@ -120,6 +120,8 @@ def sim(obs, log=False, debug=False, chatter=2, edisp=False, seed=0, | @@ -120,6 +120,8 @@ def sim(obs, log=False, debug=False, chatter=2, edisp=False, seed=0, | ||
| 120 | 120 | ||
| 121 | # Allocate csphagen application and set parameters | 121 | # Allocate csphagen application and set parameters |
| 122 | phagen = cscripts.csphagen(obssim.obs()) | 122 | phagen = cscripts.csphagen(obssim.obs()) |
| 123 | + phagen['inmodel'] = 'NONE' | ||
| 124 | + phagen['srcname'] = onsrc | ||
| 123 | phagen['ebinalg'] = 'LOG' | 125 | phagen['ebinalg'] = 'LOG' |
| 124 | phagen['emin'] = emin | 126 | phagen['emin'] = emin |
| 125 | phagen['emax'] = emax | 127 | phagen['emax'] = emax |
| @@ -187,9 +189,9 @@ def sim(obs, log=False, debug=False, chatter=2, edisp=False, seed=0, | @@ -187,9 +189,9 @@ def sim(obs, log=False, debug=False, chatter=2, edisp=False, seed=0, | ||
| 187 | # Set stacked response | 189 | # Set stacked response |
| 188 | if edisp: | 190 | if edisp: |
| 189 | binning.obs()[0].response(response['expcube'], | 191 | binning.obs()[0].response(response['expcube'], |
| 190 | - response['psfcube'], | ||
| 191 | - response['edispcube'], | ||
| 192 | - response['bkgcube']) | 192 | + response['psfcube'], |
| 193 | + response['edispcube'], | ||
| 194 | + response['bkgcube']) | ||
| 193 | else: | 195 | else: |
| 194 | binning.obs()[0].response(response['expcube'], | 196 | binning.obs()[0].response(response['expcube'], |
| 195 | response['psfcube'], | 197 | response['psfcube'], |
| @@ -787,9 +789,26 @@ def get_onoff_obs(cls, obs): | @@ -787,9 +789,26 @@ def get_onoff_obs(cls, obs): | ||
| 787 | if cls._logExplicit(): | 789 | if cls._logExplicit(): |
| 788 | cls._log.header3('Creating On/Off observations') | 790 | cls._log.header3('Creating On/Off observations') |
| 789 | 791 | ||
| 792 | + # Initialise inmodel, srcname and inexclusion | ||
| 793 | + inmodel = 'NONE' | ||
| 794 | + srcname = '' | ||
| 795 | + inexclusion = 'NONE' | ||
| 796 | + | ||
| 797 | + # Set inmodel, srcname and inexclusion if possible | ||
| 798 | + if 'inmodel' in cls: | ||
| 799 | + if cls['inmodel'].is_valid(): | ||
| 800 | + inmodel = cls['inmodel'].value() | ||
| 801 | + if 'srcname' in cls: | ||
| 802 | + srcname = cls['srcname'].value() | ||
| 803 | + if 'inexclusion' in cls: | ||
| 804 | + if cls['inexclusion'].is_valid(): | ||
| 805 | + inexclusion = cls['inexclusion'].value() | ||
| 806 | + | ||
| 790 | # Create On/Off observations | 807 | # Create On/Off observations |
| 791 | phagen = cscripts.csphagen(obs) | 808 | phagen = cscripts.csphagen(obs) |
| 792 | - phagen['inexclusion'] = cls['inexclusion'].value() | 809 | + phagen['inmodel'] = inmodel |
| 810 | + phagen['srcname'] = srcname | ||
| 811 | + phagen['inexclusion'] = inexclusion | ||
| 793 | phagen['emin'] = cls['emin'].real() | 812 | phagen['emin'] = cls['emin'].real() |
| 794 | phagen['emax'] = cls['emax'].real() | 813 | phagen['emax'] = cls['emax'].real() |
| 795 | phagen['enumbins'] = cls['enumbins'].integer() | 814 | phagen['enumbins'] = cls['enumbins'].integer() |
src/support/ctool.cpp
| @@ -1182,8 +1182,8 @@ std::string ctool::set_outfile_name(const std::string& filename) | @@ -1182,8 +1182,8 @@ std::string ctool::set_outfile_name(const std::string& filename) | ||
| 1182 | bool ctool::is_stacked(void) | 1182 | bool ctool::is_stacked(void) |
| 1183 | { | 1183 | { |
| 1184 | // First query the minimum and maximum energies | 1184 | // First query the minimum and maximum energies |
| 1185 | - (*this)["emin"].query(); | ||
| 1186 | - (*this)["emax"].query(); | 1185 | + (*this)["emin"].real(); |
| 1186 | + (*this)["emax"].real(); | ||
| 1187 | 1187 | ||
| 1188 | // Now query the number of energy bins and set the stacked flag | 1188 | // Now query the number of energy bins and set the stacked flag |
| 1189 | bool stacked = ((*this)["enumbins"].integer() > 0) ? true : false; | 1189 | bool stacked = ((*this)["enumbins"].integer() > 0) ? true : false; |
| @@ -1191,13 +1191,13 @@ bool ctool::is_stacked(void) | @@ -1191,13 +1191,13 @@ bool ctool::is_stacked(void) | ||
| 1191 | // If a stacked analysis is requested then query the spatial definition | 1191 | // If a stacked analysis is requested then query the spatial definition |
| 1192 | // of the cube | 1192 | // of the cube |
| 1193 | if (stacked) { | 1193 | if (stacked) { |
| 1194 | - (*this)["coordsys"].query(); | ||
| 1195 | - (*this)["proj"].query(); | ||
| 1196 | - (*this)["xref"].query(); | ||
| 1197 | - (*this)["yref"].query(); | ||
| 1198 | - (*this)["nxpix"].query(); | ||
| 1199 | - (*this)["nypix"].query(); | ||
| 1200 | - (*this)["binsz"].query(); | 1194 | + (*this)["coordsys"].string(); |
| 1195 | + (*this)["proj"].string(); | ||
| 1196 | + (*this)["xref"].real(); | ||
| 1197 | + (*this)["yref"].real(); | ||
| 1198 | + (*this)["nxpix"].integer(); | ||
| 1199 | + (*this)["nypix"].integer(); | ||
| 1200 | + (*this)["binsz"].real(); | ||
| 1201 | } | 1201 | } |
| 1202 | 1202 | ||
| 1203 | // Return stacked flag | 1203 | // Return stacked flag |
| @@ -1229,22 +1229,22 @@ bool ctool::is_onoff(void) | @@ -1229,22 +1229,22 @@ bool ctool::is_onoff(void) | ||
| 1229 | 1229 | ||
| 1230 | // Query csphagen parameters | 1230 | // Query csphagen parameters |
| 1231 | (*this)["inexclusion"].query(); | 1231 | (*this)["inexclusion"].query(); |
| 1232 | - (*this)["emin"].query(); | ||
| 1233 | - (*this)["emax"].query(); | ||
| 1234 | - (*this)["enumbins"].query(); | ||
| 1235 | - (*this)["coordsys"].query(); | ||
| 1236 | - (*this)["xref"].query(); | ||
| 1237 | - (*this)["yref"].query(); | 1232 | + (*this)["emin"].real(); |
| 1233 | + (*this)["emax"].real(); | ||
| 1234 | + (*this)["enumbins"].integer(); | ||
| 1235 | + (*this)["coordsys"].string(); | ||
| 1236 | + (*this)["xref"].real(); | ||
| 1237 | + (*this)["yref"].real(); | ||
| 1238 | if ((*this)["srcshape"].string() == "CIRCLE"){ | 1238 | if ((*this)["srcshape"].string() == "CIRCLE"){ |
| 1239 | - (*this)["rad"].query(); | 1239 | + (*this)["rad"].real(); |
| 1240 | } | 1240 | } |
| 1241 | if ((*this)["bkgmethod"].string() == "REFLECTED"){ | 1241 | if ((*this)["bkgmethod"].string() == "REFLECTED"){ |
| 1242 | - (*this)["bkgregmin"].query(); | 1242 | + (*this)["bkgregmin"].integer(); |
| 1243 | } | 1243 | } |
| 1244 | - (*this)["maxoffset"].query(); | ||
| 1245 | - (*this)["etruemin"].query(); | ||
| 1246 | - (*this)["etruemax"].query(); | ||
| 1247 | - (*this)["etruebins"].query(); | 1244 | + (*this)["maxoffset"].real(); |
| 1245 | + (*this)["etruemin"].real(); | ||
| 1246 | + (*this)["etruemax"].real(); | ||
| 1247 | + (*this)["etruebins"].integer(); | ||
| 1248 | 1248 | ||
| 1249 | } // endif: method was ONOFF | 1249 | } // endif: method was ONOFF |
| 1250 | 1250 |