Commit 00a109e49192d0454097e14c615d9356e899bcd8

Authored by Jürgen Knödlseder
1 parent b39b19cb

Add pickling unit tests (#2421)

test/test_cslightcrv.py
... ... @@ -340,6 +340,9 @@ class Test(test):
340 340 obj.run()
341 341 obj.save()
342 342  
  343 + # Check light curve
  344 + self._check_light_curve('cslightcrv_py1_pickle.fits', 3)
  345 +
343 346 # Return
344 347 return
345 348  
... ...
test/test_csphagen.py
... ... @@ -68,6 +68,7 @@ class Test(test):
68 68 # Append tests
69 69 self.append(self._test_cmd, 'Test csphagen on command line')
70 70 self.append(self._test_python, 'Test csphagen from Python')
  71 + self.append(self._test_pickeling, 'Test csphagen pickeling')
71 72  
72 73 # Return
73 74 return
... ... @@ -329,6 +330,54 @@ class Test(test):
329 330 # Return
330 331 return
331 332  
  333 + # Test csphagen pickeling
  334 + def _test_pickeling(self):
  335 + """
  336 + Test csphagen pickeling
  337 + """
  338 + # Perform pickeling tests of empty class
  339 + self._pickeling(cscripts.csphagen())
  340 +
  341 + # Set-up csphagen
  342 + phagen = cscripts.csphagen()
  343 + phagen['inobs'] = self._myevents1
  344 + phagen['inmodel'] = 'NONE'
  345 + phagen['caldb'] = self._caldb
  346 + phagen['irf'] = self._irf
  347 + phagen['ebinalg'] = 'LOG'
  348 + phagen['emin'] = 0.1
  349 + phagen['emax'] = 100.0
  350 + phagen['enumbins'] = self._nbins
  351 + phagen['coordsys'] = 'CEL'
  352 + phagen['ra'] = 83.633
  353 + phagen['dec'] = 22.0145
  354 + phagen['rad'] = 0.2
  355 + phagen['stack'] = False
  356 + phagen['inexclusion'] = self._exclusion
  357 + phagen['bkgmethod'] = 'REFLECTED'
  358 + phagen['etruemin'] = 0.05
  359 + phagen['etruemax'] = 150.0
  360 + phagen['etruebins'] = 5
  361 + phagen['outobs'] = 'csphagen_py1_pickle.xml'
  362 + phagen['prefix'] = 'csphagen_py1_pickle'
  363 + phagen['logfile'] = 'csphagen_py1_pickle.log'
  364 + phagen['chatter'] = 1
  365 +
  366 + # Perform pickeling tests of filled class
  367 + obj = self._pickeling(phagen)
  368 +
  369 + # Run csspec script and save light curve
  370 + obj.logFileOpen() # Make sure we get a log file
  371 + obj.run()
  372 + obj.save()
  373 +
  374 + # Check result files
  375 + self._check_output('csphagen_py1_pickle', self._nbins, self._nreg_with_excl)
  376 + self._check_outobs('csphagen_py1_pickle', 1)
  377 +
  378 + # Return
  379 + return
  380 +
332 381 def _check_ebounds(self, table, bins):
333 382 """
334 383 Check EBOUNDS table
... ...
test/test_csphasecrv.py
... ... @@ -61,6 +61,7 @@ class Test(test):
61 61 # Append tests
62 62 self.append(self._test_cmd, 'Test csphasecrv on command line')
63 63 self.append(self._test_python, 'Test csphasecrv from Python')
  64 + self.append(self._test_pickeling, 'Test csphasecrv pickeling')
64 65  
65 66 # Return
66 67 return
... ... @@ -298,6 +299,46 @@ class Test(test):
298 299 # Return
299 300 return
300 301  
  302 + # Test csphasecrv pickeling
  303 + def _test_pickeling(self):
  304 + """
  305 + Test csphasecrv pickeling
  306 + """
  307 + # Perform pickeling tests of empty class
  308 + self._pickeling(cscripts.csphasecrv())
  309 +
  310 + # Set-up unbinned csphasecrv
  311 + pcrv = cscripts.csphasecrv()
  312 + pcrv['inobs'] = self._phased_events
  313 + pcrv['inmodel'] = self._model
  314 + pcrv['srcname'] = 'Crab'
  315 + pcrv['caldb'] = self._caldb
  316 + pcrv['irf'] = self._irf
  317 + pcrv['phbinalg'] = 'LIN'
  318 + pcrv['phbins'] = 5
  319 + pcrv['method'] = '3D'
  320 + pcrv['enumbins'] = 0
  321 + pcrv['emin'] = 0.1
  322 + pcrv['emax'] = 100.0
  323 + pcrv['outfile'] = 'csphasecrv_py1_pickle.fits'
  324 + pcrv['logfile'] = 'csphasecrv_py1_pickle.log'
  325 + pcrv['chatter'] = 2
  326 + pcrv['publish'] = True
  327 +
  328 + # Perform pickeling tests of filled class
  329 + obj = self._pickeling(pcrv)
  330 +
  331 + # Run csphasecrv script and save light curve
  332 + obj.logFileOpen() # Make sure we get a log file
  333 + obj.run()
  334 + obj.save()
  335 +
  336 + # Check phase curve
  337 + self._check_phase_curve('csphasecrv_py1_pickle.fits', 5)
  338 +
  339 + # Return
  340 + return
  341 +
301 342 # Check phase curve result file
302 343 def _check_phase_curve(self, filename, bins):
303 344 """
... ...
test/test_cspull.py
... ... @@ -62,6 +62,7 @@ class Test(test):
62 62 # Append tests
63 63 self.append(self._test_cmd, 'Test cspull on command line')
64 64 self.append(self._test_python, 'Test cspull from Python')
  65 + self.append(self._test_pickeling, 'Test cspull pickeling')
65 66  
66 67 # Return
67 68 return
... ... @@ -291,6 +292,48 @@ class Test(test):
291 292 # Return
292 293 return
293 294  
  295 + # Test cspull pickeling
  296 + def _test_pickeling(self):
  297 + """
  298 + Test cspull pickeling
  299 + """
  300 + # Perform pickeling tests of empty class
  301 + self._pickeling(cscripts.cspull())
  302 +
  303 + # Set-up unbinned cspull
  304 + pull = cscripts.cspull()
  305 + pull['inmodel'] = self._model
  306 + pull['onsrc'] = 'NONE'
  307 + pull['ntrials'] = 2
  308 + pull['caldb'] = self._caldb
  309 + pull['irf'] = self._irf
  310 + pull['ra'] = 83.6331
  311 + pull['dec'] = 22.0145
  312 + pull['emin'] = 0.1
  313 + pull['emax'] = 100.0
  314 + pull['enumbins'] = 0
  315 + pull['tmin'] = 0.0
  316 + pull['tmax'] = 100.0
  317 + pull['deadc'] = 0.98
  318 + pull['rad'] = 5.0
  319 + pull['logfile'] = 'cspull_py1_pickle.log'
  320 + pull['outfile'] = 'cspull_py1_pickle.dat'
  321 + pull['chatter'] = 2
  322 +
  323 + # Perform pickeling tests of filled class
  324 + obj = self._pickeling(pull)
  325 +
  326 + # Run csphasecrv script and save light curve
  327 + obj.logFileOpen() # Make sure we get a log file
  328 + obj.run()
  329 + #obj.save()
  330 +
  331 + # Check pull distribution file
  332 + self._check_pull_file('cspull_py1_pickle.dat')
  333 +
  334 + # Return
  335 + return
  336 +
294 337 # Check pull file
295 338 def _check_pull_file(self, filename, rows=3):
296 339 """
... ...
test/test_cssens.py
... ... @@ -59,6 +59,7 @@ class Test(test):
59 59 # Append tests
60 60 self.append(self._test_cmd, 'Test cssens on command line')
61 61 self.append(self._test_python, 'Test cssens from Python')
  62 + self.append(self._test_pickeling, 'Test cssens pickeling')
62 63  
63 64 # Return
64 65 return
... ... @@ -109,7 +110,8 @@ class Test(test):
109 110 """
110 111 Test cssens from Python
111 112 """
112   - # Set-up cssens for differential sensitivity computation with multiprocessing
  113 + # Set-up cssens for differential sensitivity computation with
  114 + # multiprocessing
113 115 sens = cscripts.cssens()
114 116 sens['inobs'] = 'NONE'
115 117 sens['inmodel'] = self._model
... ... @@ -133,7 +135,8 @@ class Test(test):
133 135 # Check pull distribution file
134 136 self._check_result_file('cssens_py1.dat',nrows=3)
135 137  
136   - # Set-up cssens for integral sensitivity computation without multiprocessing
  138 + # Set-up cssens for integral sensitivity computation without
  139 + # multiprocessing
137 140 sens = cscripts.cssens()
138 141 sens['inobs'] = 'NONE'
139 142 sens['inmodel'] = self._model
... ... @@ -160,6 +163,44 @@ class Test(test):
160 163 # Return
161 164 return
162 165  
  166 + # Test cssens pickeling
  167 + def _test_pickeling(self):
  168 + """
  169 + Test cssens pickeling
  170 + """
  171 + # Perform pickeling tests of empty class
  172 + self._pickeling(cscripts.cssens())
  173 +
  174 + # Set-up unbinned cssens
  175 + sens = cscripts.cssens()
  176 + sens['inobs'] = 'NONE'
  177 + sens['inmodel'] = self._model
  178 + sens['srcname'] = 'Crab'
  179 + sens['caldb'] = self._caldb
  180 + sens['irf'] = self._irf
  181 + sens['outfile'] = 'cssens_py1_pickle.dat'
  182 + sens['duration'] = 180.0
  183 + sens['rad'] = 3.0
  184 + sens['emin'] = 1.0
  185 + sens['emax'] = 10.0
  186 + sens['bins'] = 2
  187 + sens['logfile'] = 'cssens_py1_pickle.log'
  188 + sens['chatter'] = 4
  189 +
  190 + # Perform pickeling tests of filled class
  191 + obj = self._pickeling(sens)
  192 +
  193 + # Run csspec script and save light curve
  194 + obj.logFileOpen() # Make sure we get a log file
  195 + obj.run()
  196 + obj.save()
  197 +
  198 + # Check result file
  199 + self._check_result_file('cssens_py1_pickle.dat',nrows=3)
  200 +
  201 + # Return
  202 + return
  203 +
163 204 # Check result file
164 205 def _check_result_file(self, filename, nrows=2):
165 206 """
... ...
test/test_csspec.py
... ... @@ -66,6 +66,7 @@ class Test(test):
66 66 # Append tests
67 67 self.append(self._test_cmd, 'Test csspec on command line')
68 68 self.append(self._test_python, 'Test csspec from Python')
  69 + self.append(self._test_pickeling, 'Test csspec pickeling')
69 70  
70 71 # Return
71 72 return
... ... @@ -260,6 +261,45 @@ class Test(test):
260 261 # Return
261 262 return
262 263  
  264 + # Test csspec pickeling
  265 + def _test_pickeling(self):
  266 + """
  267 + Test csspec pickeling
  268 + """
  269 + # Perform pickeling tests of empty class
  270 + self._pickeling(cscripts.csspec())
  271 +
  272 + # Set-up unbinned csspec
  273 + spec = cscripts.csspec()
  274 + spec['inobs'] = self._events
  275 + spec['inmodel'] = self._model
  276 + spec['srcname'] = 'Crab'
  277 + spec['caldb'] = self._caldb
  278 + spec['irf'] = self._irf
  279 + spec['method'] = 'AUTO'
  280 + spec['ebinalg'] = 'LOG'
  281 + spec['enumbins'] = 5
  282 + spec['emin'] = 0.1
  283 + spec['emax'] = 100.0
  284 + spec['outfile'] = 'csspec_py1_pickle.fits'
  285 + spec['logfile'] = 'csspec_py1_pickle.log'
  286 + spec['chatter'] = 2
  287 + spec['publish'] = True
  288 +
  289 + # Perform pickeling tests of filled class
  290 + obj = self._pickeling(spec)
  291 +
  292 + # Run csspec script and save light curve
  293 + obj.logFileOpen() # Make sure we get a log file
  294 + obj.run()
  295 + obj.save()
  296 +
  297 + # Check result file
  298 + self._check_result_file('csspec_py1_pickle.fits', 5)
  299 +
  300 + # Return
  301 + return
  302 +
263 303 # Check result file
264 304 def _check_result_file(self, filename, bins):
265 305 """
... ...
test/test_cstsdist.py
... ... @@ -65,6 +65,7 @@ class Test(test):
65 65 'Test cstsdist from Python in binned mode')
66 66 self.append(self._test_python_stacked,
67 67 'Test cstsdist from Python in stacked mode')
  68 + self.append(self._test_pickeling, 'Test cstsdist pickeling')
68 69  
69 70 # Return
70 71 return
... ... @@ -132,7 +133,7 @@ class Test(test):
132 133 tsdist.run()
133 134 tsdist.save()
134 135  
135   - # Check pull distribution file
  136 + # Check TS distribution file
136 137 self._check_result_file('cstsdist_py1.dat')
137 138  
138 139 # Set-up cstsdist without multiprocessing
... ... @@ -153,7 +154,7 @@ class Test(test):
153 154 tsdist.run()
154 155 tsdist.save()
155 156  
156   - # Check pull distribution file
  157 + # Check TS distribution file
157 158 self._check_result_file('cstsdist_py2.dat')
158 159  
159 160 # Return
... ... @@ -182,7 +183,7 @@ class Test(test):
182 183 tsdist.logFileOpen() # Make sure we get a log file
183 184 tsdist.execute()
184 185  
185   - # Check pull distribution file
  186 + # Check TS distribution file
186 187 self._check_result_file('cstsdist_py2.dat')
187 188  
188 189 # Return
... ... @@ -206,12 +207,46 @@ class Test(test):
206 207 tsdist.logFileOpen() # Make sure we get a log file
207 208 tsdist.execute()
208 209  
209   - # Check pull distribution file
  210 + # Check TS distribution file
210 211 self._check_result_file('cstsdist_py3.dat')
211 212  
212 213 # Return
213 214 return
214 215  
  216 + # Test cstsdist pickeling
  217 + def _test_pickeling(self):
  218 + """
  219 + Test cstsdist pickeling
  220 + """
  221 + # Perform pickeling tests of empty class
  222 + self._pickeling(cscripts.cstsdist())
  223 +
  224 + # Set-up cstsdist for event list
  225 + tsdist = cscripts.cstsdist()
  226 + tsdist['inobs'] = self._events
  227 + tsdist['inmodel'] = self._model
  228 + tsdist['srcname'] = 'Crab'
  229 + tsdist['caldb'] = self._caldb
  230 + tsdist['irf'] = self._irf
  231 + tsdist['ntrials'] = 2
  232 + tsdist['outfile'] = 'cstsdist_py1_pickle.dat'
  233 + tsdist['logfile'] = 'cstsdist_py1_pickle.log'
  234 + tsdist['chatter'] = 3
  235 +
  236 + # Perform pickeling tests of filled class
  237 + obj = self._pickeling(tsdist)
  238 +
  239 + # Run csphasecrv script and save light curve
  240 + obj.logFileOpen() # Make sure we get a log file
  241 + obj.run()
  242 + obj.save()
  243 +
  244 + # Check TS distribution file
  245 + self._check_result_file('cstsdist_py1_pickle.dat')
  246 +
  247 + # Return
  248 + return
  249 +
215 250 # Check result file
216 251 def _check_result_file(self, filename, nrows=3, ncols=9):
217 252 """
... ...