Commit 00a109e49192d0454097e14c615d9356e899bcd8
1 parent
b39b19cb
Add pickling unit tests (#2421)
Showing
7 changed files
with
258 additions
and
6 deletions
test/test_cslightcrv.py
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 | """ | ... | ... |