Commit b1bd4caab035b78b04fe896478e2cb59aec82c42
1 parent
1110a353
Add csphasecrv unit test, use global ctools version and update parameter files
Showing
64 changed files
with
644 additions
and
889 deletions
cscripts/Makefile.am
| @@ -32,6 +32,7 @@ pythonscripts = $(top_builddir)/cscripts/__init__.py \ | @@ -32,6 +32,7 @@ pythonscripts = $(top_builddir)/cscripts/__init__.py \ | ||
| 32 | $(srcdir)/csobsdef.py \ | 32 | $(srcdir)/csobsdef.py \ |
| 33 | $(srcdir)/csobsinfo.py \ | 33 | $(srcdir)/csobsinfo.py \ |
| 34 | $(srcdir)/csobsselect.py \ | 34 | $(srcdir)/csobsselect.py \ |
| 35 | + $(srcdir)/csphasecrv.py \ | ||
| 35 | $(srcdir)/cspull.py \ | 36 | $(srcdir)/cspull.py \ |
| 36 | $(srcdir)/csresmap.py \ | 37 | $(srcdir)/csresmap.py \ |
| 37 | $(srcdir)/csroot2caldb.py \ | 38 | $(srcdir)/csroot2caldb.py \ |
| @@ -63,6 +64,7 @@ parfiles = $(srcdir)/cscaldb.par \ | @@ -63,6 +64,7 @@ parfiles = $(srcdir)/cscaldb.par \ | ||
| 63 | $(srcdir)/csobsdef.par \ | 64 | $(srcdir)/csobsdef.par \ |
| 64 | $(srcdir)/csobsinfo.par \ | 65 | $(srcdir)/csobsinfo.par \ |
| 65 | $(srcdir)/csobsselect.par \ | 66 | $(srcdir)/csobsselect.par \ |
| 67 | + $(srcdir)/csphasecrv.par \ | ||
| 66 | $(srcdir)/cspull.par \ | 68 | $(srcdir)/cspull.par \ |
| 67 | $(srcdir)/csresmap.par \ | 69 | $(srcdir)/csresmap.par \ |
| 68 | $(srcdir)/csroot2caldb.par \ | 70 | $(srcdir)/csroot2caldb.par \ |
| @@ -91,6 +93,7 @@ linkscripts = cscaldb \ | @@ -91,6 +93,7 @@ linkscripts = cscaldb \ | ||
| 91 | csobsdef \ | 93 | csobsdef \ |
| 92 | csobsinfo \ | 94 | csobsinfo \ |
| 93 | csobsselect \ | 95 | csobsselect \ |
| 96 | + csphasecrv \ | ||
| 94 | cspull \ | 97 | cspull \ |
| 95 | csresmap \ | 98 | csresmap \ |
| 96 | csroot2caldb \ | 99 | csroot2caldb \ |
| @@ -183,7 +186,8 @@ testdata = $(top_srcdir)/test/data/crab.xml \ | @@ -183,7 +186,8 @@ testdata = $(top_srcdir)/test/data/crab.xml \ | ||
| 183 | $(top_srcdir)/test/data/iact_runlist_1.dat \ | 186 | $(top_srcdir)/test/data/iact_runlist_1.dat \ |
| 184 | $(top_srcdir)/test/data/iact_runlist_2.dat \ | 187 | $(top_srcdir)/test/data/iact_runlist_2.dat \ |
| 185 | $(top_srcdir)/test/data/model_temporal_phasecurve.xml \ | 188 | $(top_srcdir)/test/data/model_temporal_phasecurve.xml \ |
| 186 | - $(top_srcdir)/test/data/model_temporal_phasecurve.fits | 189 | + $(top_srcdir)/test/data/model_temporal_phasecurve.fits \ |
| 190 | + $(top_srcdir)/test/data/phased_events.fits.gz | ||
| 187 | 191 | ||
| 188 | # Test data to be distributed in $(pyexecdir)/cscripts/tests/data/iactdata | 192 | # Test data to be distributed in $(pyexecdir)/cscripts/tests/data/iactdata |
| 189 | testiactdata = $(top_srcdir)/test/data/iactdata/hdu-index.fits.gz \ | 193 | testiactdata = $(top_srcdir)/test/data/iactdata/hdu-index.fits.gz \ |
cscripts/__init__.py.in
| @@ -35,6 +35,7 @@ __all__ = [ | @@ -35,6 +35,7 @@ __all__ = [ | ||
| 35 | "csobsdef", | 35 | "csobsdef", |
| 36 | "csobsinfo", | 36 | "csobsinfo", |
| 37 | "csobsselect", | 37 | "csobsselect", |
| 38 | + "csphasecrv", | ||
| 38 | "cspull", | 39 | "cspull", |
| 39 | "csresmap", | 40 | "csresmap", |
| 40 | "csroot2caldb", | 41 | "csroot2caldb", |
| @@ -69,6 +70,7 @@ from cscripts.csobs2caldb import csobs2caldb | @@ -69,6 +70,7 @@ from cscripts.csobs2caldb import csobs2caldb | ||
| 69 | from cscripts.csobsdef import csobsdef | 70 | from cscripts.csobsdef import csobsdef |
| 70 | from cscripts.csobsinfo import csobsinfo | 71 | from cscripts.csobsinfo import csobsinfo |
| 71 | from cscripts.csobsselect import csobsselect | 72 | from cscripts.csobsselect import csobsselect |
| 73 | +from cscripts.csphasecrv import csphasecrv | ||
| 72 | from cscripts.cspull import cspull | 74 | from cscripts.cspull import cspull |
| 73 | from cscripts.csresmap import csresmap | 75 | from cscripts.csresmap import csresmap |
| 74 | from cscripts.csroot2caldb import csroot2caldb | 76 | from cscripts.csroot2caldb import csroot2caldb |
cscripts/cscaldb.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Show the content of the ctools calibration database | 3 | # Show the content of the ctools calibration database |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2014-2016 Juergen Knoedlseder | 5 | +# Copyright (C) 2014-2017 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,7 +55,7 @@ class cscaldb(ctools.cscript): | @@ -55,7 +55,7 @@ class cscaldb(ctools.cscript): | ||
| 55 | """ | 55 | """ |
| 56 | # Set name | 56 | # Set name |
| 57 | self._name = 'cscaldb' | 57 | self._name = 'cscaldb' |
| 58 | - self._version = '1.1.0' | 58 | + self._version = ctools.__version__ |
| 59 | 59 | ||
| 60 | # Initialise application by calling the appropriate class | 60 | # Initialise application by calling the appropriate class |
| 61 | # constructor. | 61 | # constructor. |
cscripts/csebins.py
| @@ -40,7 +40,7 @@ class csebins(ctools.cscript): | @@ -40,7 +40,7 @@ class csebins(ctools.cscript): | ||
| 40 | """ | 40 | """ |
| 41 | # Set name and version | 41 | # Set name and version |
| 42 | self._name = 'csebins' | 42 | self._name = 'csebins' |
| 43 | - self._version = '1.0.0' | 43 | + self._version = ctools.__version__ |
| 44 | 44 | ||
| 45 | # Set members | 45 | # Set members |
| 46 | self._ebounds = gammalib.GEbounds() | 46 | self._ebounds = gammalib.GEbounds() |
cscripts/csfindobs.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Find observations from an IACT data store | 3 | # Find observations from an IACT data store |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2016 Michael Mayer | 5 | +# Copyright (C) 2016-2017 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 |
| @@ -40,7 +40,7 @@ class csfindobs(ctools.cscript): | @@ -40,7 +40,7 @@ class csfindobs(ctools.cscript): | ||
| 40 | """ | 40 | """ |
| 41 | # Set name | 41 | # Set name |
| 42 | self._name = 'csfindobs' | 42 | self._name = 'csfindobs' |
| 43 | - self._version = '1.2.0' | 43 | + self._version = ctools.__version__ |
| 44 | self._datapath = os.getenv('VHEFITS','') | 44 | self._datapath = os.getenv('VHEFITS','') |
| 45 | self._prodname = '' | 45 | self._prodname = '' |
| 46 | self._select_radec = True | 46 | self._select_radec = True |
cscripts/csiactcopy.py
| @@ -44,7 +44,7 @@ class csiactcopy(ctools.cscript): | @@ -44,7 +44,7 @@ class csiactcopy(ctools.cscript): | ||
| 44 | """ | 44 | """ |
| 45 | # Set name | 45 | # Set name |
| 46 | self._name = 'csiactcopy' | 46 | self._name = 'csiactcopy' |
| 47 | - self._version = '1.2.0' | 47 | + self._version = ctools.__version__ |
| 48 | self._datapath = os.getenv('VHEFITS','') | 48 | self._datapath = os.getenv('VHEFITS','') |
| 49 | self._remote_master = gammalib.GFilename() | 49 | self._remote_master = gammalib.GFilename() |
| 50 | self._remote_base = '' | 50 | self._remote_base = '' |
cscripts/csiactdata.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Inspect an IACT data storage | 3 | # Inspect an IACT data storage |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2015-2016 Michael Mayer | 5 | +# Copyright (C) 2015-2017 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 |
| @@ -45,7 +45,7 @@ class csiactdata(ctools.cscript): | @@ -45,7 +45,7 @@ class csiactdata(ctools.cscript): | ||
| 45 | """ | 45 | """ |
| 46 | # Set name | 46 | # Set name |
| 47 | self._name = 'csiactdata' | 47 | self._name = 'csiactdata' |
| 48 | - self._version = '1.1.0' | 48 | + self._version = ctools.__version__ |
| 49 | self._datapath = os.getenv('VHEFITS','') | 49 | self._datapath = os.getenv('VHEFITS','') |
| 50 | self._prodnames = [] | 50 | self._prodnames = [] |
| 51 | self._master_indx = '' | 51 | self._master_indx = '' |
cscripts/csiactobs.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Generates an IACT observation definition XML file. | 3 | # Generates an IACT observation definition XML file. |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2015-2016 Michael Mayer | 5 | +# Copyright (C) 2015-2017 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 |
| @@ -47,7 +47,7 @@ class csiactobs(ctools.cscript): | @@ -47,7 +47,7 @@ class csiactobs(ctools.cscript): | ||
| 47 | """ | 47 | """ |
| 48 | # Set name and version | 48 | # Set name and version |
| 49 | self._name = 'csiactobs' | 49 | self._name = 'csiactobs' |
| 50 | - self._version = '1.2.0' | 50 | + self._version = ctools.__version__ |
| 51 | 51 | ||
| 52 | # Initialise some members | 52 | # Initialise some members |
| 53 | self._obs = gammalib.GObservations() | 53 | self._obs = gammalib.GObservations() |
cscripts/cslightcrv.par
| @@ -36,7 +36,7 @@ emin, r, a, 0.1,,, "Lower energy limit of events (TeV)" | @@ -36,7 +36,7 @@ emin, r, a, 0.1,,, "Lower energy limit of events (TeV)" | ||
| 36 | emax, r, a, 100.0,,, "Upper energy limit of events (TeV)" | 36 | emax, r, a, 100.0,,, "Upper energy limit of events (TeV)" |
| 37 | enumbins, i, a, 0,0,100, "Number of energy bins for binned (0=unbinned)" | 37 | enumbins, i, a, 0,0,100, "Number of energy bins for binned (0=unbinned)" |
| 38 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate System" | 38 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate System" |
| 39 | -proj, s, a, CAR,AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | 39 | +proj, s, a, CAR,AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" |
| 40 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 40 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 41 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 41 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 42 | nxpix, i, a, 200,,, "Size of the X axis in pixels" | 42 | nxpix, i, a, 200,,, "Size of the X axis in pixels" |
cscripts/cslightcrv.py
| @@ -69,7 +69,7 @@ class cslightcrv(ctools.cscript): | @@ -69,7 +69,7 @@ class cslightcrv(ctools.cscript): | ||
| 69 | """ | 69 | """ |
| 70 | # Set name | 70 | # Set name |
| 71 | self._name = 'cslightcrv' | 71 | self._name = 'cslightcrv' |
| 72 | - self._version = '1.3.0' | 72 | + self._version = ctools.__version__ |
| 73 | 73 | ||
| 74 | # Initialise some members | 74 | # Initialise some members |
| 75 | self._srcname = '' | 75 | self._srcname = '' |
| @@ -509,11 +509,7 @@ class cslightcrv(ctools.cscript): | @@ -509,11 +509,7 @@ class cslightcrv(ctools.cscript): | ||
| 509 | self._get_parameters() | 509 | self._get_parameters() |
| 510 | 510 | ||
| 511 | # Write observation into logger | 511 | # Write observation into logger |
| 512 | - if self._logTerse(): | ||
| 513 | - self._log('\n') | ||
| 514 | - self._log.header1(gammalib.number('Input observation',len(self._obs))) | ||
| 515 | - self._log(str(self._obs)) | ||
| 516 | - self._log('\n') | 512 | + self._log_observations(gammalib.NORMAL, self._obs, 'Observation') |
| 517 | 513 | ||
| 518 | # Get time boundaries | 514 | # Get time boundaries |
| 519 | tmin = self._tbins.tstart(0) | 515 | tmin = self._tbins.tstart(0) |
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-2016 Michael Mayer | 5 | +# Copyright (C) 2015-2017 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 |
| @@ -44,7 +44,7 @@ class csmodelinfo(ctools.cscript): | @@ -44,7 +44,7 @@ class csmodelinfo(ctools.cscript): | ||
| 44 | """ | 44 | """ |
| 45 | # Set name | 45 | # Set name |
| 46 | self._name = 'csmodelinfo' | 46 | self._name = 'csmodelinfo' |
| 47 | - self._version = '1.2.0' | 47 | + self._version = ctools.__version__ |
| 48 | 48 | ||
| 49 | # Initialise class members | 49 | # Initialise class members |
| 50 | self._models = gammalib.GModels() | 50 | self._models = gammalib.GModels() |
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-2016 Michael Mayer | 5 | +# Copyright (C) 2015-2017 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 |
| @@ -43,7 +43,7 @@ class csmodelmerge(ctools.cscript): | @@ -43,7 +43,7 @@ class csmodelmerge(ctools.cscript): | ||
| 43 | """ | 43 | """ |
| 44 | # Set name | 44 | # Set name |
| 45 | self._name = 'csmodelmerge' | 45 | self._name = 'csmodelmerge' |
| 46 | - self._version = '1.2.0' | 46 | + self._version = ctools.__version__ |
| 47 | 47 | ||
| 48 | # Initialise class members | 48 | # Initialise class members |
| 49 | self._files = None | 49 | self._files = None |
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 Juergen Knoedlseder | 5 | +# Copyright (C) 2016-2017 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 |
| @@ -38,7 +38,7 @@ class csmodelselect(ctools.cscript): | @@ -38,7 +38,7 @@ class csmodelselect(ctools.cscript): | ||
| 38 | """ | 38 | """ |
| 39 | # Set name | 39 | # Set name |
| 40 | self._name = 'csmodelselect' | 40 | self._name = 'csmodelselect' |
| 41 | - self._version = '1.2.0' | 41 | + self._version = ctools.__version__ |
| 42 | 42 | ||
| 43 | # Initialise observation container from constructor arguments | 43 | # Initialise observation container from constructor arguments |
| 44 | self._obs, argv = self._set_input_obs(argv) | 44 | self._obs, argv = self._set_input_obs(argv) |
cscripts/csobs2caldb.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Creates a calibration database entry for an IACT observation. | 3 | # Creates a calibration database entry for an IACT observation. |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2015-2016 Michael Mayer | 5 | +# Copyright (C) 2015-2017 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 |
| @@ -48,7 +48,7 @@ class csobs2caldb(ctools.cscript): | @@ -48,7 +48,7 @@ class csobs2caldb(ctools.cscript): | ||
| 48 | """ | 48 | """ |
| 49 | # Set name and version | 49 | # Set name and version |
| 50 | self._name = 'csobs2caldb' | 50 | self._name = 'csobs2caldb' |
| 51 | - self._version = '1.2.0' | 51 | + self._version = ctools.__version__ |
| 52 | 52 | ||
| 53 | # Initialise members | 53 | # Initialise members |
| 54 | self._observation = gammalib.GCTAObservation() | 54 | self._observation = gammalib.GCTAObservation() |
cscripts/csobsdef.py
| @@ -86,7 +86,7 @@ class csobsdef(ctools.cscript): | @@ -86,7 +86,7 @@ class csobsdef(ctools.cscript): | ||
| 86 | """ | 86 | """ |
| 87 | # Set name and version | 87 | # Set name and version |
| 88 | self._name = 'csobsdef' | 88 | self._name = 'csobsdef' |
| 89 | - self._version = '1.3.0' | 89 | + self._version = ctools.__version__ |
| 90 | 90 | ||
| 91 | # Initialise class members | 91 | # Initialise class members |
| 92 | self._obs = gammalib.GObservations() | 92 | self._obs = gammalib.GObservations() |
cscripts/csobsinfo.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Dump information about observation into log file | 3 | # Dump information about observation into log file |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2015-2016 Michael Mayer | 5 | +# Copyright (C) 2015-2017 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 |
| @@ -38,7 +38,7 @@ class csobsinfo(ctools.cscript): | @@ -38,7 +38,7 @@ class csobsinfo(ctools.cscript): | ||
| 38 | """ | 38 | """ |
| 39 | # Set name | 39 | # Set name |
| 40 | self._name = 'csobsinfo' | 40 | self._name = 'csobsinfo' |
| 41 | - self._version = '1.2.0' | 41 | + self._version = ctools.__version__ |
| 42 | 42 | ||
| 43 | # Initialise class members | 43 | # Initialise class members |
| 44 | self._obj_dir = None | 44 | self._obj_dir = None |
cscripts/csobsselect.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Selects observations from an observation definition XML file | 3 | # Selects observations from an observation definition XML file |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2016 Juergen Knoedlseder | 5 | +# Copyright (C) 2016-2017 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 |
| @@ -38,7 +38,7 @@ class csobsselect(ctools.cscript): | @@ -38,7 +38,7 @@ class csobsselect(ctools.cscript): | ||
| 38 | """ | 38 | """ |
| 39 | # Set name | 39 | # Set name |
| 40 | self._name = 'csobsselect' | 40 | self._name = 'csobsselect' |
| 41 | - self._version = '1.2.0' | 41 | + self._version = ctools.__version__ |
| 42 | 42 | ||
| 43 | # Initialise observation container from constructor arguments | 43 | # Initialise observation container from constructor arguments |
| 44 | self._obs, argv = self._set_input_obs(argv) | 44 | self._obs, argv = self._set_input_obs(argv) |
cscripts/csphasecrv.par
| @@ -27,14 +27,14 @@ outfile, f, a, phasecrv.fits,,, "Output fits file name." | @@ -27,14 +27,14 @@ outfile, f, a, phasecrv.fits,,, "Output fits file name." | ||
| 27 | # | 27 | # |
| 28 | # Script parameters | 28 | # Script parameters |
| 29 | #================== | 29 | #================== |
| 30 | -tbinalg, s, a, LIN,LIN|FILE,, "Algorithm for defining time bins" | 30 | +phbinalg, s, a, LIN,LIN|FILE,, "Algorithm for defining phase bins" |
| 31 | phbins, i, a, 5,1,10000, "Number of phase bins" | 31 | phbins, i, a, 5,1,10000, "Number of phase bins" |
| 32 | phbinfile, f, a, NONE,,, "File defining the phase binning" | 32 | phbinfile, f, a, NONE,,, "File defining the phase binning" |
| 33 | emin, r, a, 0.1,,, "Lower energy limit of events (TeV)" | 33 | emin, r, a, 0.1,,, "Lower energy limit of events (TeV)" |
| 34 | emax, r, a, 100.0,,, "Upper energy limit of events (TeV)" | 34 | emax, r, a, 100.0,,, "Upper energy limit of events (TeV)" |
| 35 | enumbins, i, a, 0,0,100, "Number of energy bins for binned (0=unbinned)" | 35 | enumbins, i, a, 0,0,100, "Number of energy bins for binned (0=unbinned)" |
| 36 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate System" | 36 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate System" |
| 37 | -proj, s, a, CAR,AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | 37 | +proj, s, a, CAR,AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" |
| 38 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 38 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 39 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 39 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 40 | nxpix, i, a, 200,,, "Size of the X axis in pixels" | 40 | nxpix, i, a, 200,,, "Size of the X axis in pixels" |
| @@ -44,6 +44,7 @@ binsz, r, a, 0.02,,, "Pixel size (deg/pixel)" | @@ -44,6 +44,7 @@ binsz, r, a, 0.02,,, "Pixel size (deg/pixel)" | ||
| 44 | # | 44 | # |
| 45 | # Standard parameters | 45 | # Standard parameters |
| 46 | #==================== | 46 | #==================== |
| 47 | +publish, b, h, no,,, "Publish phase curve on VO Hub?" | ||
| 47 | chatter, i, h, 2,0,4, "Chattiness of output" | 48 | chatter, i, h, 2,0,4, "Chattiness of output" |
| 48 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" | 49 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" |
| 49 | debug, b, h, no,,, "Debugging mode activated" | 50 | debug, b, h, no,,, "Debugging mode activated" |
cscripts/csphasecrv.py
| 1 | #! /usr/bin/env python | 1 | #! /usr/bin/env python |
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | -# Generates pulsar spectra as a function of phase | 3 | +# Generates spectra as a function of phase |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2014-2017 Rolf Buehler | 5 | +# Copyright (C) 2017 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 |
| @@ -29,22 +29,22 @@ from cscripts import obsutils | @@ -29,22 +29,22 @@ from cscripts import obsutils | ||
| 29 | # ================ # | 29 | # ================ # |
| 30 | class csphasecrv(ctools.cscript): | 30 | class csphasecrv(ctools.cscript): |
| 31 | """ | 31 | """ |
| 32 | - Generates a spectra in phase bins | 32 | + Generates spectra in phase bins |
| 33 | 33 | ||
| 34 | This script computes spectra by performing a maximum likelihood fit | 34 | This script computes spectra by performing a maximum likelihood fit |
| 35 | - using :doc:`ctlike` in a series of phase bins for pulsars. | ||
| 36 | - The phase bins can be either specified in an ASCII file, as an interval | ||
| 37 | - divided into equally sized phase bins. | 35 | + using :doc:`ctlike` in a series of phase bins for pulsars. The phase bins |
| 36 | + can be either specified in an ASCII file or as an interval divided into | ||
| 37 | + equally sized phase bins. | ||
| 38 | 38 | ||
| 39 | Examples: | 39 | Examples: |
| 40 | - >>> phrv = csphasecrv() | ||
| 41 | - >>> phrv.run() | 40 | + >>> phcrv = csphasecrv() |
| 41 | + >>> phcrv.run() | ||
| 42 | >>> ... (querying for parameters) ... | 42 | >>> ... (querying for parameters) ... |
| 43 | - >>> phrv = phrv.phasecrv() | 43 | + >>> phcrv = phrv.phasecrv() |
| 44 | Generates phase fits and retrieves dictionary with best fit models. | 44 | Generates phase fits and retrieves dictionary with best fit models. |
| 45 | 45 | ||
| 46 | - >>> lcrv = csphasecrv(obs) | ||
| 47 | - >>> lcrv.execute() | 46 | + >>> phcrv = csphasecrv(obs) |
| 47 | + >>> phcrv.execute() | ||
| 48 | >>> ... (querying for parameters) ... | 48 | >>> ... (querying for parameters) ... |
| 49 | Generates phase fits from the observations | 49 | Generates phase fits from the observations |
| 50 | and saves results in XML files. | 50 | and saves results in XML files. |
| @@ -57,13 +57,14 @@ class csphasecrv(ctools.cscript): | @@ -57,13 +57,14 @@ class csphasecrv(ctools.cscript): | ||
| 57 | """ | 57 | """ |
| 58 | # Set name | 58 | # Set name |
| 59 | self._name = 'csphasecrv' | 59 | self._name = 'csphasecrv' |
| 60 | - self._version = '1.0.0' | 60 | + self._version = ctools.__version__ |
| 61 | 61 | ||
| 62 | - # Initialise some members | 62 | + # Initialise some members. Phases are stored in a nested list |
| 63 | + # [[ph1min,ph1max], [ph2min,ph2max],..] | ||
| 63 | self._srcname = '' | 64 | self._srcname = '' |
| 64 | - # Phases are stored in a nested list [[ph1min,ph1max], [ph2min,ph2max],..] | ||
| 65 | - self._phbins = [[0.0,1.0]] | 65 | + self._phbins = [[0.0,1.0]] |
| 66 | self._stacked = False | 66 | self._stacked = False |
| 67 | + self._fits = gammalib.GFits() | ||
| 67 | 68 | ||
| 68 | # Initialise observation container from constructor arguments. | 69 | # Initialise observation container from constructor arguments. |
| 69 | self._obs, argv = self._set_input_obs(argv) | 70 | self._obs, argv = self._set_input_obs(argv) |
| @@ -144,7 +145,7 @@ class csphasecrv(ctools.cscript): | @@ -144,7 +145,7 @@ class csphasecrv(ctools.cscript): | ||
| 144 | # Get algorithm to use for defining the time intervals. Possible | 145 | # Get algorithm to use for defining the time intervals. Possible |
| 145 | # values are "FILE" or "LIN". This is enforced at | 146 | # values are "FILE" or "LIN". This is enforced at |
| 146 | # parameter file level, hence no checking is needed. | 147 | # parameter file level, hence no checking is needed. |
| 147 | - algorithm = self['tbinalg'].string() | 148 | + algorithm = self['phbinalg'].string() |
| 148 | 149 | ||
| 149 | # If the algorithm is "FILE" then handle a FITS or an ASCII file for | 150 | # If the algorithm is "FILE" then handle a FITS or an ASCII file for |
| 150 | # the time bin definition | 151 | # the time bin definition |
| @@ -173,8 +174,8 @@ class csphasecrv(ctools.cscript): | @@ -173,8 +174,8 @@ class csphasecrv(ctools.cscript): | ||
| 173 | # Compute time step and setup the GTIs | 174 | # Compute time step and setup the GTIs |
| 174 | ph_step = 1.0 / float(nbins) | 175 | ph_step = 1.0 / float(nbins) |
| 175 | for i in range(nbins): | 176 | for i in range(nbins): |
| 176 | - phmin = i *ph_step | ||
| 177 | - phmax = (i+1)*ph_step | 177 | + phmin = i * ph_step |
| 178 | + phmax = (i+1) * ph_step | ||
| 178 | phbins.append([phmin,phmax]) | 179 | phbins.append([phmin,phmax]) |
| 179 | 180 | ||
| 180 | # Return Good Time Intervals | 181 | # Return Good Time Intervals |
| @@ -252,6 +253,168 @@ class csphasecrv(ctools.cscript): | @@ -252,6 +253,168 @@ class csphasecrv(ctools.cscript): | ||
| 252 | # Return new oberservation container | 253 | # Return new oberservation container |
| 253 | return new_obs | 254 | return new_obs |
| 254 | 255 | ||
| 256 | + def _get_free_par_names(self): | ||
| 257 | + """ | ||
| 258 | + Return list of free parameter names | ||
| 259 | + | ||
| 260 | + Returns | ||
| 261 | + ------- | ||
| 262 | + names : list of str | ||
| 263 | + List of free parameter names. | ||
| 264 | + """ | ||
| 265 | + # Initialise empty list of free parameter names | ||
| 266 | + names = [] | ||
| 267 | + | ||
| 268 | + # Collect list of free parameter names | ||
| 269 | + for par in self._obs.models()[self._srcname]: | ||
| 270 | + if par.is_free(): | ||
| 271 | + names.append(par.name()) | ||
| 272 | + | ||
| 273 | + # Return names | ||
| 274 | + return names | ||
| 275 | + | ||
| 276 | + def _create_fits_table(self, results): | ||
| 277 | + """ | ||
| 278 | + Creates FITS binary table containing light curve results | ||
| 279 | + | ||
| 280 | + Parameters | ||
| 281 | + ---------- | ||
| 282 | + results : list of dict | ||
| 283 | + List of result dictionaries | ||
| 284 | + | ||
| 285 | + Returns | ||
| 286 | + ------- | ||
| 287 | + table : `~gammalib.GFitsBinTable` | ||
| 288 | + FITS binary table containing light curve | ||
| 289 | + """ | ||
| 290 | + # Determine number of rows in FITS table | ||
| 291 | + nrows = len(results) | ||
| 292 | + | ||
| 293 | + # Create FITS Table with extension "PHASECURVE" | ||
| 294 | + table = gammalib.GFitsBinTable(nrows) | ||
| 295 | + table.extname('PHASECURVE') | ||
| 296 | + | ||
| 297 | + # Append phase columns "PHASE_MIN" and "PHASE_MAX" | ||
| 298 | + phmin = gammalib.GFitsTableDoubleCol('PHASE_MIN', nrows) | ||
| 299 | + phmax = gammalib.GFitsTableDoubleCol('PHASE_MAX', nrows) | ||
| 300 | + for i, result in enumerate(results): | ||
| 301 | + phmin[i] = result['phmin'] | ||
| 302 | + phmax[i] = result['phmax'] | ||
| 303 | + table.append(phmin) | ||
| 304 | + table.append(phmax) | ||
| 305 | + | ||
| 306 | + # Create parameter columns | ||
| 307 | + for par in self._obs.models()[self._srcname]: | ||
| 308 | + if par.is_free(): | ||
| 309 | + name = par.name() | ||
| 310 | + e_name = 'e_'+par.name() | ||
| 311 | + col = gammalib.GFitsTableDoubleCol(name, nrows) | ||
| 312 | + e_col = gammalib.GFitsTableDoubleCol(e_name, nrows) | ||
| 313 | + col.unit(par.unit()) | ||
| 314 | + e_col.unit(par.unit()) | ||
| 315 | + for i, result in enumerate(results): | ||
| 316 | + col[i] = result['values'][name] | ||
| 317 | + e_col[i] = result['values'][e_name] | ||
| 318 | + table.append(col) | ||
| 319 | + table.append(e_col) | ||
| 320 | + | ||
| 321 | + # Return table | ||
| 322 | + return table | ||
| 323 | + | ||
| 324 | + def _create_fits(self): | ||
| 325 | + """ | ||
| 326 | + Create FITS file object from fit results | ||
| 327 | + """ | ||
| 328 | + # Initialise list of result dictionaries | ||
| 329 | + results = [] | ||
| 330 | + | ||
| 331 | + # Get source parameters | ||
| 332 | + pars = self._get_free_par_names() | ||
| 333 | + | ||
| 334 | + # Loop over time bins | ||
| 335 | + for i in range(len(self._phbins)): | ||
| 336 | + | ||
| 337 | + # Get time boundaries | ||
| 338 | + phmin = self._phbins[i][0] | ||
| 339 | + phmax = self._phbins[i][1] | ||
| 340 | + | ||
| 341 | + # Initialise result dictionary | ||
| 342 | + result = {'phmin': phmin, | ||
| 343 | + 'phmax': phmax, | ||
| 344 | + 'pars': pars, | ||
| 345 | + 'values': {}} | ||
| 346 | + | ||
| 347 | + # Store fit results | ||
| 348 | + phname = str(phmin)+'-'+str(phmax) | ||
| 349 | + source = self._fitmodels[phname][self._srcname] | ||
| 350 | + for par in pars: | ||
| 351 | + result['values'][par] = source[par].value() | ||
| 352 | + result['values']['e_'+par] = source[par].error() | ||
| 353 | + | ||
| 354 | + # Append result to list of dictionaries | ||
| 355 | + results.append(result) | ||
| 356 | + | ||
| 357 | + # Create FITS table from results | ||
| 358 | + table = self._create_fits_table(results) | ||
| 359 | + | ||
| 360 | + # Create FITS file and append FITS table to FITS file | ||
| 361 | + self._fits = gammalib.GFits() | ||
| 362 | + self._fits.append(table) | ||
| 363 | + | ||
| 364 | + # Return | ||
| 365 | + return | ||
| 366 | + | ||
| 367 | + def _save_fits(self): | ||
| 368 | + """ | ||
| 369 | + Saved phase fit results into a fits file | ||
| 370 | + """ | ||
| 371 | + # Write header | ||
| 372 | + self._log_header1(gammalib.TERSE, 'Save phase FITS file') | ||
| 373 | + | ||
| 374 | + # Create FITS file | ||
| 375 | + self._create_fits() | ||
| 376 | + | ||
| 377 | + # Get file name | ||
| 378 | + outfile = self['outfile'].filename() | ||
| 379 | + | ||
| 380 | + # Log file name | ||
| 381 | + self._log_value(gammalib.NORMAL, 'Phase curve file', outfile.url()) | ||
| 382 | + | ||
| 383 | + # Save to fits | ||
| 384 | + self._fits.saveto(outfile, self._clobber()) | ||
| 385 | + | ||
| 386 | + # Return | ||
| 387 | + return | ||
| 388 | + | ||
| 389 | + def _save_xml(self): | ||
| 390 | + """ | ||
| 391 | + Save phase fit results into one XML model each bin | ||
| 392 | + """ | ||
| 393 | + # Write header | ||
| 394 | + self._log_header1(gammalib.TERSE, 'Save phase XML files') | ||
| 395 | + | ||
| 396 | + # Get file name | ||
| 397 | + outname = self['outfile'].filename() | ||
| 398 | + | ||
| 399 | + # Loop over all phase bins | ||
| 400 | + for phbin in self._phbins: | ||
| 401 | + | ||
| 402 | + # Set file name for phase bin | ||
| 403 | + phname = str(phbin[0])+'-'+str(phbin[1]) | ||
| 404 | + replace_name = '_phase_'+phname+'.xml' | ||
| 405 | + outname_phase = (outname.file()).replace('.fits', replace_name) | ||
| 406 | + outfile = outname.path() + outname_phase | ||
| 407 | + | ||
| 408 | + # Save XML file | ||
| 409 | + self._fitmodels[phname].save(outfile) | ||
| 410 | + | ||
| 411 | + # Log file name | ||
| 412 | + name = 'Phase [%s] file' % phname | ||
| 413 | + self._log_value(gammalib.NORMAL, name, outfile) | ||
| 414 | + | ||
| 415 | + # Return | ||
| 416 | + return | ||
| 417 | + | ||
| 255 | 418 | ||
| 256 | # Public methods | 419 | # Public methods |
| 257 | def run(self): | 420 | def run(self): |
| @@ -264,24 +427,26 @@ class csphasecrv(ctools.cscript): | @@ -264,24 +427,26 @@ class csphasecrv(ctools.cscript): | ||
| 264 | 427 | ||
| 265 | # Get parameters | 428 | # Get parameters |
| 266 | self._get_parameters() | 429 | self._get_parameters() |
| 267 | - | 430 | + |
| 268 | # Write observation into logger | 431 | # Write observation into logger |
| 269 | - if self._logTerse(): | ||
| 270 | - self._log('\n') | ||
| 271 | - self._log.header1(gammalib.number('Input observation',len(self._obs))) | ||
| 272 | - self._log(str(self._obs)) | ||
| 273 | - self._log('\n') | ||
| 274 | - | ||
| 275 | - #Store and clear observations to split them in phase | 432 | + self._log_observations(gammalib.NORMAL, self._obs, 'Observation') |
| 433 | + | ||
| 434 | + # Store and clear observations to split them into phase bins | ||
| 276 | orig_obs = self._obs.copy() | 435 | orig_obs = self._obs.copy() |
| 277 | - #self._obs.clear() | ||
| 278 | 436 | ||
| 279 | - #Dictionary to save phase fitted models | 437 | + # Dictionary to save phase fitted models |
| 280 | self._fitmodels = {} | 438 | self._fitmodels = {} |
| 281 | - | ||
| 282 | - #Loop over all phases | 439 | + |
| 440 | + # Write header | ||
| 441 | + self._log_header1(gammalib.TERSE, 'Generate phase curve') | ||
| 442 | + | ||
| 443 | + # Loop over all phases | ||
| 283 | for phbin in self._phbins: | 444 | for phbin in self._phbins: |
| 284 | - | 445 | + |
| 446 | + # Write time bin into header | ||
| 447 | + if self._logTerse(): | ||
| 448 | + self._log.header2('PHASE '+str(phbin[0])+'-'+str(phbin[1])) | ||
| 449 | + | ||
| 285 | # Select events | 450 | # Select events |
| 286 | select = ctools.ctselect(orig_obs) | 451 | select = ctools.ctselect(orig_obs) |
| 287 | select['emin'] = self['emin'].real() | 452 | select['emin'] = self['emin'].real() |
| @@ -291,13 +456,13 @@ class csphasecrv(ctools.cscript): | @@ -291,13 +456,13 @@ class csphasecrv(ctools.cscript): | ||
| 291 | select['rad'] = 'UNDEFINED' | 456 | select['rad'] = 'UNDEFINED' |
| 292 | select['ra'] = 'UNDEFINED' | 457 | select['ra'] = 'UNDEFINED' |
| 293 | select['dec'] = 'UNDEFINED' | 458 | select['dec'] = 'UNDEFINED' |
| 294 | - select['expr'] = "PHASE>"+str(phbin[0])+" && PHASE<"+str(phbin[1]) | 459 | + select['expr'] = 'PHASE>'+str(phbin[0])+' && PHASE<'+str(phbin[1]) |
| 295 | select.run() | 460 | select.run() |
| 296 | 461 | ||
| 297 | - #Add phase to observation id | 462 | + # Add phase to observation id |
| 298 | for i in range(0,select.obs().size()): | 463 | for i in range(0,select.obs().size()): |
| 299 | oldid = select.obs()[i].id() | 464 | oldid = select.obs()[i].id() |
| 300 | - select.obs()[i].id(oldid+"_"+str(phbin[0])+"-"+str(phbin[1])) | 465 | + select.obs()[i].id(oldid+'_'+str(phbin[0])+'-'+str(phbin[1])) |
| 301 | obs = select.obs() | 466 | obs = select.obs() |
| 302 | 467 | ||
| 303 | # If a stacked analysis is requested then bin the events | 468 | # If a stacked analysis is requested then bin the events |
| @@ -318,15 +483,18 @@ class csphasecrv(ctools.cscript): | @@ -318,15 +483,18 @@ class csphasecrv(ctools.cscript): | ||
| 318 | # Renormalize models to phase selection | 483 | # Renormalize models to phase selection |
| 319 | # TODO move the scaling from the temporal to the spectral component | 484 | # TODO move the scaling from the temporal to the spectral component |
| 320 | for model in like.obs().models(): | 485 | for model in like.obs().models(): |
| 321 | - scaled_norm = model["Normalization"].value()/(phbin[1] - phbin[0]) | ||
| 322 | - model["Normalization"].value(scaled_norm) | 486 | + scaled_norm = model['Normalization'].value()/(phbin[1] - phbin[0]) |
| 487 | + model['Normalization'].value(scaled_norm) | ||
| 323 | 488 | ||
| 324 | - #Store fit model | ||
| 325 | - self._fitmodels[str(phbin[0])+"-"+str(phbin[1])] = like.obs().models().copy() | 489 | + # Store fit model |
| 490 | + self._fitmodels[str(phbin[0])+'-'+str(phbin[1])] = like.obs().models().copy() | ||
| 491 | + | ||
| 492 | + # Create FITS file | ||
| 493 | + self._create_fits() | ||
| 326 | 494 | ||
| 327 | - ## Store observations | ||
| 328 | - #for ob in select.obs(): | ||
| 329 | - #self._obs.append(ob.copy()) | 495 | + # Optionally publish light curve |
| 496 | + if self['publish'].boolean(): | ||
| 497 | + self.publish() | ||
| 330 | 498 | ||
| 331 | # Return | 499 | # Return |
| 332 | return | 500 | return |
| @@ -350,171 +518,57 @@ class csphasecrv(ctools.cscript): | @@ -350,171 +518,57 @@ class csphasecrv(ctools.cscript): | ||
| 350 | # Return | 518 | # Return |
| 351 | return | 519 | return |
| 352 | 520 | ||
| 353 | - def saveXML(self): | ||
| 354 | - """ | ||
| 355 | - Save phase fits into one XML model each | ||
| 356 | - """ | ||
| 357 | - # Write header | ||
| 358 | - self._log_header1(gammalib.TERSE, 'Save phase XML') | ||
| 359 | - | ||
| 360 | - # Get out filename | ||
| 361 | - outfile = str() | ||
| 362 | - | ||
| 363 | - # Save XMLs | ||
| 364 | - for phbin in self._phbins: | ||
| 365 | - phname = str(phbin[0])+"-"+str(phbin[1]) | ||
| 366 | - outname = self['outfile'].filename() | ||
| 367 | - outname_ph = (outname.file()).replace(".fits","_ph_"+phname+".xml") | ||
| 368 | - outfile = outname.path()+outname_ph | ||
| 369 | - print outfile | ||
| 370 | - self._fitmodels[phname].save(outfile) | ||
| 371 | - | ||
| 372 | - # Return | ||
| 373 | - return | ||
| 374 | - | ||
| 375 | def save(self): | 521 | def save(self): |
| 376 | """ | 522 | """ |
| 377 | Saves results to fits and XML | 523 | Saves results to fits and XML |
| 378 | """ | 524 | """ |
| 379 | - print "SAVING" | ||
| 380 | - self.savefits() | ||
| 381 | - self.saveXML() | 525 | + # Save results to FITS |
| 526 | + self._save_fits() | ||
| 527 | + | ||
| 528 | + # Save results to XML files (one per phase bin) | ||
| 529 | + self._save_xml() | ||
| 382 | 530 | ||
| 383 | # Return | 531 | # Return |
| 384 | return | 532 | return |
| 385 | 533 | ||
| 386 | - def phaserv(self): | ||
| 387 | - """ | ||
| 388 | - Return dictionary with best fit models | ||
| 389 | - """ | ||
| 390 | - # Return | ||
| 391 | - return self._fitmodels | ||
| 392 | - | ||
| 393 | - def _get_free_par_names(self): | 534 | + def publish(self, name=''): |
| 394 | """ | 535 | """ |
| 395 | - Return list of free parameter names | 536 | + Publish phase curve |
| 396 | 537 | ||
| 397 | - Returns | ||
| 398 | - ------- | ||
| 399 | - names : list of str | ||
| 400 | - List of free parameter names. | ||
| 401 | - """ | ||
| 402 | - # Initialise empty list of free parameter names | ||
| 403 | - names = [] | ||
| 404 | - | ||
| 405 | - # Collect list of free parameter names | ||
| 406 | - for par in self._obs.models()[self._srcname]: | ||
| 407 | - if par.is_free(): | ||
| 408 | - names.append(par.name()) | ||
| 409 | - | ||
| 410 | - # Return names | ||
| 411 | - return names | ||
| 412 | - | ||
| 413 | - def savefits(self): | ||
| 414 | - """ | ||
| 415 | - Saved phase fit results to a fits file | 538 | + Parameters |
| 539 | + ---------- | ||
| 540 | + name : str, optional | ||
| 541 | + Name of phase curve | ||
| 416 | """ | 542 | """ |
| 417 | - # Initialise list of result dictionaries | ||
| 418 | - results = [] | ||
| 419 | - | ||
| 420 | - # Get source parameters | ||
| 421 | - pars = self._get_free_par_names() | ||
| 422 | - | ||
| 423 | - # Loop over time bins | ||
| 424 | - for i in range(len(self._phbins)): | 543 | + # Write header |
| 544 | + self._log_header1(gammalib.TERSE, 'Publish phase curve') | ||
| 425 | 545 | ||
| 426 | - # Get time boundaries | ||
| 427 | - phmin = self._phbins[i][0] | ||
| 428 | - phmax = self._phbins[i][1] | 546 | + # Continue only if light curve is valid |
| 547 | + if self._fits.contains('PHASECURVE'): | ||
| 429 | 548 | ||
| 430 | - # Write time bin into header | ||
| 431 | - if self._logTerse(): | ||
| 432 | - self._log.header2('PHASE '+str(phmin)+'-'+str(phmax)) | 549 | + # Set default name is user name is empty |
| 550 | + if not name: | ||
| 551 | + user_name = self._name | ||
| 552 | + else: | ||
| 553 | + user_name = name | ||
| 433 | 554 | ||
| 434 | - # Initialise result dictionary | ||
| 435 | - result = {'phmin': phmin, | ||
| 436 | - 'phmax': phmax, | ||
| 437 | - 'pars': pars, | ||
| 438 | - 'values': {}} | ||
| 439 | - # Extract parameter values | ||
| 440 | - | ||
| 441 | - #Store fit results | ||
| 442 | - phname = str(phmin)+"-"+str(phmax) | ||
| 443 | - source = self._fitmodels[phname][self._srcname] | ||
| 444 | - for par in pars: | ||
| 445 | - result['values'][par] = source[par].value() | ||
| 446 | - result['values']['e_'+par] = source[par].error() | ||
| 447 | - | ||
| 448 | - # Append result to list of dictionaries | ||
| 449 | - results.append(result) | ||
| 450 | - | ||
| 451 | - # Create FITS table from results | ||
| 452 | - table = self._create_fits_table(results) | 555 | + # Log file name |
| 556 | + self._log_value(gammalib.NORMAL, 'Phase curve name', user_name) | ||
| 453 | 557 | ||
| 454 | - # Create FITS file and append FITS table to FITS file | ||
| 455 | - self._fits = gammalib.GFits() | ||
| 456 | - self._fits.append(table) | 558 | + # Publish phase curve |
| 559 | + self._fits.publish('PHASECURVE', user_name) | ||
| 457 | 560 | ||
| 458 | - # Save to fits | ||
| 459 | - outfile = self['outfile'].filename() | ||
| 460 | - print outfile | ||
| 461 | - self._fits.saveto(outfile, self._clobber()) | ||
| 462 | - | ||
| 463 | - #Return | 561 | + # Return |
| 464 | return | 562 | return |
| 465 | 563 | ||
| 466 | - def _create_fits_table(self, results): | 564 | + def phasecurve(self): |
| 467 | """ | 565 | """ |
| 468 | - Creates FITS binary table containing light curve results | ||
| 469 | - | ||
| 470 | - Parameters | ||
| 471 | - ---------- | ||
| 472 | - results : list of dict | ||
| 473 | - List of result dictionaries | ||
| 474 | - | ||
| 475 | - Returns | ||
| 476 | - ------- | ||
| 477 | - table : `~gammalib.GFitsBinTable` | ||
| 478 | - FITS binary table containing light curve | 566 | + Return dictionary with best fit models |
| 479 | """ | 567 | """ |
| 480 | - # Determine number of rows in FITS table | ||
| 481 | - nrows = len(results) | ||
| 482 | - | ||
| 483 | - # Create FITS Table with extension "LIGHTCURVE" | ||
| 484 | - table = gammalib.GFitsBinTable(nrows) | ||
| 485 | - table.extname('PHASESPEC') | ||
| 486 | - | ||
| 487 | - # Append time columns "MJD" and "e_MJD" | ||
| 488 | - phmin = gammalib.GFitsTableDoubleCol('PHMIN', nrows) | ||
| 489 | - phmax = gammalib.GFitsTableDoubleCol('PHMAX', nrows) | ||
| 490 | - #mjd.unit('days') | ||
| 491 | - #e_mjd.unit('days') | ||
| 492 | - for i, result in enumerate(results): | ||
| 493 | - phmin[i] = result['phmin'] | ||
| 494 | - phmax[i] = result['phmax'] | ||
| 495 | - table.append(phmin) | ||
| 496 | - table.append(phmax) | ||
| 497 | - | ||
| 498 | - # Create parameter columns | ||
| 499 | - for par in self._obs.models()[self._srcname]: | ||
| 500 | - if par.is_free(): | ||
| 501 | - name = par.name() | ||
| 502 | - e_name = 'e_'+par.name() | ||
| 503 | - col = gammalib.GFitsTableDoubleCol(name, nrows) | ||
| 504 | - e_col = gammalib.GFitsTableDoubleCol(e_name, nrows) | ||
| 505 | - col.unit(par.unit()) | ||
| 506 | - e_col.unit(par.unit()) | ||
| 507 | - for i, result in enumerate(results): | ||
| 508 | - col[i] = result['values'][name] | ||
| 509 | - e_col[i] = result['values'][e_name] | ||
| 510 | - table.append(col) | ||
| 511 | - table.append(e_col) | ||
| 512 | - | ||
| 513 | - # Return table | ||
| 514 | - return table | 568 | + # Return |
| 569 | + return self._fitmodels | ||
| 515 | 570 | ||
| 516 | 571 | ||
| 517 | - | ||
| 518 | # ======================== # | 572 | # ======================== # |
| 519 | # Main routine entry point # | 573 | # Main routine entry point # |
| 520 | # ======================== # | 574 | # ======================== # |
cscripts/cspull.par
| @@ -31,7 +31,7 @@ ntrials, i, a, 10,,, "Number of trials" | @@ -31,7 +31,7 @@ ntrials, i, a, 10,,, "Number of trials" | ||
| 31 | ra, r, a, 83.6331,0,360, "RA of pointing (deg)" | 31 | ra, r, a, 83.6331,0,360, "RA of pointing (deg)" |
| 32 | dec, r, a, 22.0145,-90,90, "Dec of pointing (deg)" | 32 | dec, r, a, 22.0145,-90,90, "Dec of pointing (deg)" |
| 33 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate system (CEL - celestial, GAL - galactic)" | 33 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate system (CEL - celestial, GAL - galactic)" |
| 34 | -proj, s, a, TAN,AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | 34 | +proj, s, a, TAN,AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" |
| 35 | emin, r, a, 0.1,,, "Lower energy limit (TeV)" | 35 | emin, r, a, 0.1,,, "Lower energy limit (TeV)" |
| 36 | emax, r, a, 100.0,,, "Upper energy limit (TeV)" | 36 | emax, r, a, 100.0,,, "Upper energy limit (TeV)" |
| 37 | enumbins, i, a, 0,,, "Number of energy bins (0=unbinned)" | 37 | enumbins, i, a, 0,,, "Number of energy bins (0=unbinned)" |
cscripts/cspull.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # This script generates the pull distribution for all model parameters. | 3 | # This script generates the pull distribution for all model parameters. |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2011-2016 Juergen Knoedlseder | 5 | +# Copyright (C) 2011-2017 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 |
| @@ -40,7 +40,7 @@ class cspull(ctools.cscript): | @@ -40,7 +40,7 @@ class cspull(ctools.cscript): | ||
| 40 | """ | 40 | """ |
| 41 | # Set name | 41 | # Set name |
| 42 | self._name = 'cspull' | 42 | self._name = 'cspull' |
| 43 | - self._version = '1.2.0' | 43 | + self._version = ctools.__version__ |
| 44 | 44 | ||
| 45 | # Initialise some members | 45 | # Initialise some members |
| 46 | self._edisp = False | 46 | self._edisp = False |
cscripts/csresmap.par
| @@ -37,7 +37,7 @@ emax, r, a, 100.0,,, "Upper energy limit (TeV)" | @@ -37,7 +37,7 @@ emax, r, a, 100.0,,, "Upper energy limit (TeV)" | ||
| 37 | enumbins, i, h, 20,,, "Number of model cube energy bins" | 37 | enumbins, i, h, 20,,, "Number of model cube energy bins" |
| 38 | ebinfile, f, a, NONE,,, "Name of the file containing the energy bin definition" | 38 | ebinfile, f, a, NONE,,, "Name of the file containing the energy bin definition" |
| 39 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate System" | 39 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate System" |
| 40 | -proj, s, a, CAR,AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | 40 | +proj, s, a, CAR,AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" |
| 41 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 41 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 42 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 42 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 43 | nxpix, i, a, 200,,, "Size of the X axis in pixels" | 43 | nxpix, i, a, 200,,, "Size of the X axis in pixels" |
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-2016 Michael Mayer | 5 | +# Copyright (C) 2014-2017 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 |
| @@ -38,7 +38,7 @@ class csresmap(ctools.cscript): | @@ -38,7 +38,7 @@ class csresmap(ctools.cscript): | ||
| 38 | """ | 38 | """ |
| 39 | # Set name | 39 | # Set name |
| 40 | self._name = 'csresmap' | 40 | self._name = 'csresmap' |
| 41 | - self._version = '1.2.0' | 41 | + self._version = ctools.__version__ |
| 42 | 42 | ||
| 43 | # Initialise class members | 43 | # Initialise class members |
| 44 | self._resmap = None | 44 | self._resmap = None |
cscripts/csroot2caldb.py
| @@ -50,7 +50,7 @@ class csroot2caldb(ctools.cscript): | @@ -50,7 +50,7 @@ class csroot2caldb(ctools.cscript): | ||
| 50 | """ | 50 | """ |
| 51 | # Set name | 51 | # Set name |
| 52 | self._name = 'csroot2caldb' | 52 | self._name = 'csroot2caldb' |
| 53 | - self._version = '1.3.0' | 53 | + self._version = ctools.__version__ |
| 54 | 54 | ||
| 55 | # Initialise application by calling the appropriate class constructor | 55 | # Initialise application by calling the appropriate class constructor |
| 56 | self._init_cscript(argv) | 56 | self._init_cscript(argv) |
cscripts/cssens.py
| @@ -50,7 +50,7 @@ class cssens(ctools.cscript): | @@ -50,7 +50,7 @@ class cssens(ctools.cscript): | ||
| 50 | """ | 50 | """ |
| 51 | # Set name | 51 | # Set name |
| 52 | self._name = 'cssens' | 52 | self._name = 'cssens' |
| 53 | - self._version = '1.3.0' | 53 | + self._version = ctools.__version__ |
| 54 | 54 | ||
| 55 | # Initialise class members | 55 | # Initialise class members |
| 56 | self._ebounds = gammalib.GEbounds() | 56 | self._ebounds = gammalib.GEbounds() |
cscripts/csspec.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Generates a spectrum. | 3 | # Generates a spectrum. |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2014-2016 Michael Mayer | 5 | +# Copyright (C) 2014-2017 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 |
| @@ -43,7 +43,7 @@ class csspec(ctools.cscript): | @@ -43,7 +43,7 @@ class csspec(ctools.cscript): | ||
| 43 | """ | 43 | """ |
| 44 | # Set name | 44 | # Set name |
| 45 | self._name = 'csspec' | 45 | self._name = 'csspec' |
| 46 | - self._version = '1.1.0' | 46 | + self._version = ctools.__version__ |
| 47 | 47 | ||
| 48 | # Initialise some members | 48 | # Initialise some members |
| 49 | self._ebounds = gammalib.GEbounds() | 49 | self._ebounds = gammalib.GEbounds() |
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 Juergen Knoedlseder | 5 | +# Copyright (C) 2016-2017 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 |
| @@ -40,7 +40,7 @@ class cssrcdetect(ctools.cscript): | @@ -40,7 +40,7 @@ class cssrcdetect(ctools.cscript): | ||
| 40 | """ | 40 | """ |
| 41 | # Set name | 41 | # Set name |
| 42 | self._name = 'cssrcdetect' | 42 | self._name = 'cssrcdetect' |
| 43 | - self._version = '1.2.0' | 43 | + self._version = ctools.__version__ |
| 44 | 44 | ||
| 45 | # Set protected members | 45 | # Set protected members |
| 46 | self._models = gammalib.GModels() | 46 | self._models = gammalib.GModels() |
cscripts/cstsdist.par
| @@ -36,7 +36,7 @@ ntrials, i, a, 10,,, "Number of trials" | @@ -36,7 +36,7 @@ ntrials, i, a, 10,,, "Number of trials" | ||
| 36 | ra, r, a, 83.63,0,360, "RA of pointing (deg)" | 36 | ra, r, a, 83.63,0,360, "RA of pointing (deg)" |
| 37 | dec, r, a, 22.01,-90,90, "Dec of pointing (deg)" | 37 | dec, r, a, 22.01,-90,90, "Dec of pointing (deg)" |
| 38 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate system (CEL - celestial, GAL - galactic)" | 38 | coordsys, s, a, CEL,CEL|GAL,, "Coordinate system (CEL - celestial, GAL - galactic)" |
| 39 | -proj, s, a, TAN,AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | 39 | +proj, s, a, TAN,AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" |
| 40 | emin, r, a, 0.1,,, "Lower energy limit (TeV)" | 40 | emin, r, a, 0.1,,, "Lower energy limit (TeV)" |
| 41 | emax, r, a, 100.0,,, "Upper energy limit (TeV)" | 41 | emax, r, a, 100.0,,, "Upper energy limit (TeV)" |
| 42 | enumbins, i, a, 0,,, "Number of energy bins (0=unbinned)" | 42 | enumbins, i, a, 0,,, "Number of energy bins (0=unbinned)" |
cscripts/cstsdist.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Generates the TS distribution for a particular model | 3 | # Generates the TS distribution for a particular model |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2011-2016 Juergen Knoedlseder | 5 | +# Copyright (C) 2011-2017 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 |
| @@ -41,7 +41,7 @@ class cstsdist(ctools.cscript): | @@ -41,7 +41,7 @@ class cstsdist(ctools.cscript): | ||
| 41 | """ | 41 | """ |
| 42 | # Set name | 42 | # Set name |
| 43 | self._name = 'cstsdist' | 43 | self._name = 'cstsdist' |
| 44 | - self._version = '1.2.0' | 44 | + self._version = ctools.__version__ |
| 45 | 45 | ||
| 46 | # Initialise some members | 46 | # Initialise some members |
| 47 | self._srcname = '' | 47 | self._srcname = '' |
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-2016 Michael Mayer | 5 | +# Copyright (C) 2015-2017 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 |
| @@ -40,7 +40,7 @@ class cstsmapmerge(ctools.cscript): | @@ -40,7 +40,7 @@ class cstsmapmerge(ctools.cscript): | ||
| 40 | """ | 40 | """ |
| 41 | # Set name | 41 | # Set name |
| 42 | self._name = 'cstsmapmerge' | 42 | self._name = 'cstsmapmerge' |
| 43 | - self._version = '1.1.0' | 43 | + self._version = ctools.__version__ |
| 44 | 44 | ||
| 45 | # Initialise class members | 45 | # Initialise class members |
| 46 | self._files = None | 46 | self._files = None |
cscripts/cstsmapsplit.par
| @@ -41,9 +41,9 @@ nxpix, i, a, 200,,, "Size of the X axis in pixels" | @@ -41,9 +41,9 @@ nxpix, i, a, 200,,, "Size of the X axis in pixels" | ||
| 41 | nypix, i, a, 200,,, "Size of the Y axis in pixels" | 41 | nypix, i, a, 200,,, "Size of the Y axis in pixels" |
| 42 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" | 42 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" |
| 43 | coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 43 | coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 44 | +proj, s, a, CAR, AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" | ||
| 44 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 45 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 45 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 46 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 46 | -proj, s, a, CAR, AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 47 | 47 | ||
| 48 | # | 48 | # |
| 49 | # Standard parameters | 49 | # Standard parameters |
cscripts/cstsmapsplit.py
| @@ -47,7 +47,7 @@ class cstsmapsplit(ctools.cscript): | @@ -47,7 +47,7 @@ class cstsmapsplit(ctools.cscript): | ||
| 47 | 47 | ||
| 48 | # Set name and version | 48 | # Set name and version |
| 49 | self._name = 'cstsmapsplit' | 49 | self._name = 'cstsmapsplit' |
| 50 | - self._version = '1.2.0' | 50 | + self._version = ctools.__version__ |
| 51 | 51 | ||
| 52 | # Set data members | 52 | # Set data members |
| 53 | self._outmap = gammalib.GFilename() | 53 | self._outmap = gammalib.GFilename() |
cscripts/csviscube.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Compute a visibility cube | 3 | # Compute a visibility cube |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2016 Juergen Knoedlseder | 5 | +# Copyright (C) 2016-2017 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 |
| @@ -50,7 +50,7 @@ class csviscube(ctools.cscript): | @@ -50,7 +50,7 @@ class csviscube(ctools.cscript): | ||
| 50 | """ | 50 | """ |
| 51 | # Set name | 51 | # Set name |
| 52 | self._name = 'csviscube' | 52 | self._name = 'csviscube' |
| 53 | - self._version = '1.0.0' | 53 | + self._version = ctools.__version__ |
| 54 | 54 | ||
| 55 | # Initialise members | 55 | # Initialise members |
| 56 | self._cube = gammalib.GSkyMap() | 56 | self._cube = gammalib.GSkyMap() |
cscripts/csworkflow.py
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | # ========================================================================== | 2 | # ========================================================================== |
| 3 | # Executes analysis workflow | 3 | # Executes analysis workflow |
| 4 | # | 4 | # |
| 5 | -# Copyright (C) 2016 Juergen Knoedlseder | 5 | +# Copyright (C) 2016-2017 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 |
| @@ -53,7 +53,7 @@ class csworkflow(ctools.cscript): | @@ -53,7 +53,7 @@ class csworkflow(ctools.cscript): | ||
| 53 | """ | 53 | """ |
| 54 | # Set name and version | 54 | # Set name and version |
| 55 | self._name = 'csworkflow' | 55 | self._name = 'csworkflow' |
| 56 | - self._version = '1.2.0' | 56 | + self._version = ctools.__version__ |
| 57 | 57 | ||
| 58 | # Set members | 58 | # Set members |
| 59 | self._workflow = gammalib.GXml() | 59 | self._workflow = gammalib.GXml() |
doc/source/users/reference_manual/cslightcrv.rst
| @@ -75,7 +75,7 @@ General parameters | @@ -75,7 +75,7 @@ General parameters | ||
| 75 | ``coordsys <CEL|GAL> [string]`` | 75 | ``coordsys <CEL|GAL> [string]`` |
| 76 | Coordinate system (CEL - celestial, GAL - galactic). | 76 | Coordinate system (CEL - celestial, GAL - galactic). |
| 77 | 77 | ||
| 78 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | 78 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` |
| 79 | Projection method. | 79 | Projection method. |
| 80 | 80 | ||
| 81 | ``xref [real]`` | 81 | ``xref [real]`` |
doc/source/users/reference_manual/csphasecrv.rst
| @@ -9,13 +9,16 @@ Computes phase dependent spectra for a given source. | @@ -9,13 +9,16 @@ Computes phase dependent spectra for a given source. | ||
| 9 | Synopsis | 9 | Synopsis |
| 10 | -------- | 10 | -------- |
| 11 | 11 | ||
| 12 | -This script computes spectra by performing a maximum likelihood fit | ||
| 13 | -using :doc:`ctlike` in a series of phase bins for pulsars. | ||
| 14 | -The phase bins can be either specified in an ASCII file, as an interval | ||
| 15 | -divided into equally sized time bins. | ||
| 16 | -The format of the ASCII file is one row per time bin, each specifying the | ||
| 17 | -start of stop value of the phase bin, separated by a whitespace. The phase | ||
| 18 | -goes from 0.0 to 1.0 . | 12 | +This script computes spectra by performing a maximum likelihood fit using |
| 13 | +:doc:`ctlike` in a series of phase bins for pulsars. The phase bins can be | ||
| 14 | +either specified in an ASCII file or as an interval divided into equally sized | ||
| 15 | +phase bins. The format of the ASCII file is one row per phase bin, each | ||
| 16 | +specifying the start of stop value of the phase bin, separated by a whitespace. | ||
| 17 | +The phase goes from 0.0 to 1.0. | ||
| 18 | + | ||
| 19 | +On output the script writes the fitting results into a FITS file. The script | ||
| 20 | +also produces one XML file per phase bin that contains the fitting results for | ||
| 21 | +that bin. | ||
| 19 | 22 | ||
| 20 | 23 | ||
| 21 | General parameters | 24 | General parameters |
| @@ -25,10 +28,10 @@ General parameters | @@ -25,10 +28,10 @@ General parameters | ||
| 25 | Input event list or observation definition XML file. | 28 | Input event list or observation definition XML file. |
| 26 | 29 | ||
| 27 | ``inmodel [file]`` | 30 | ``inmodel [file]`` |
| 28 | - Input model XML file. | 31 | + Input model definition XML file. |
| 29 | 32 | ||
| 30 | ``srcname [string]`` | 33 | ``srcname [string]`` |
| 31 | - Name of the periodic source in the source model XML file | 34 | + Name of the periodic source in the source model XML file. |
| 32 | 35 | ||
| 33 | ``caldb [string]`` | 36 | ``caldb [string]`` |
| 34 | Calibration database. | 37 | Calibration database. |
| @@ -40,10 +43,11 @@ General parameters | @@ -40,10 +43,11 @@ General parameters | ||
| 40 | Applies energy dispersion to response computation. | 43 | Applies energy dispersion to response computation. |
| 41 | 44 | ||
| 42 | ``outfile [file]`` | 45 | ``outfile [file]`` |
| 43 | - Name of the XML output file. The phase intervall will be automatically appended to the name. | 46 | + Name of the XML output file. The phase interval will be automatically |
| 47 | + appended to the name. | ||
| 44 | 48 | ||
| 45 | -``(tbinalg = LIN) <FILE|LIN> [string]`` | ||
| 46 | - Algorithm for defining time bins. | 49 | +``phbinalg <FILE|LIN> [string]`` |
| 50 | + Algorithm for defining phase bins. | ||
| 47 | 51 | ||
| 48 | ``phbins [integer]`` | 52 | ``phbins [integer]`` |
| 49 | Number of phase bins. | 53 | Number of phase bins. |
| @@ -63,7 +67,7 @@ General parameters | @@ -63,7 +67,7 @@ General parameters | ||
| 63 | ``coordsys <CEL|GAL> [string]`` | 67 | ``coordsys <CEL|GAL> [string]`` |
| 64 | Coordinate system (CEL - celestial, GAL - galactic). | 68 | Coordinate system (CEL - celestial, GAL - galactic). |
| 65 | 69 | ||
| 66 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | 70 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` |
| 67 | Projection method. | 71 | Projection method. |
| 68 | 72 | ||
| 69 | ``xref [real]`` | 73 | ``xref [real]`` |
| @@ -81,9 +85,13 @@ General parameters | @@ -81,9 +85,13 @@ General parameters | ||
| 81 | ``binsz [real]`` | 85 | ``binsz [real]`` |
| 82 | Pixel size (in degrees/pixel). | 86 | Pixel size (in degrees/pixel). |
| 83 | 87 | ||
| 88 | + | ||
| 84 | Standard parameters | 89 | Standard parameters |
| 85 | ------------------- | 90 | ------------------- |
| 86 | 91 | ||
| 92 | +``(publish = no) [boolean]`` | ||
| 93 | + Specifies whether the phase curve should be published on VO Hub. | ||
| 94 | + | ||
| 87 | ``(chatter = 2) [integer]`` | 95 | ``(chatter = 2) [integer]`` |
| 88 | Verbosity of the executable: | 96 | Verbosity of the executable: |
| 89 | chatter = 0: no information will be logged | 97 | chatter = 0: no information will be logged |
doc/source/users/reference_manual/cspull.rst
| @@ -71,7 +71,7 @@ General parameters | @@ -71,7 +71,7 @@ General parameters | ||
| 71 | ``coordsys <CEL|GAL> [string]`` | 71 | ``coordsys <CEL|GAL> [string]`` |
| 72 | Coordinate system (CEL - celestial, GAL - galactic). | 72 | Coordinate system (CEL - celestial, GAL - galactic). |
| 73 | 73 | ||
| 74 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | 74 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` |
| 75 | Projection method. | 75 | Projection method. |
| 76 | 76 | ||
| 77 | ``emin [real]`` | 77 | ``emin [real]`` |
doc/source/users/reference_manual/csresmap.rst
| @@ -76,7 +76,7 @@ General parameters | @@ -76,7 +76,7 @@ General parameters | ||
| 76 | ``coordsys <CEL|GAL> [string]`` | 76 | ``coordsys <CEL|GAL> [string]`` |
| 77 | Coordinate system (CEL - celestial, GAL - galactic). | 77 | Coordinate system (CEL - celestial, GAL - galactic). |
| 78 | 78 | ||
| 79 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | 79 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` |
| 80 | Projection method. | 80 | Projection method. |
| 81 | 81 | ||
| 82 | ``xref [real]`` | 82 | ``xref [real]`` |
doc/source/users/reference_manual/cstsdist.rst
| @@ -78,7 +78,7 @@ General parameters | @@ -78,7 +78,7 @@ General parameters | ||
| 78 | ``coordsys <CEL|GAL> [string]`` | 78 | ``coordsys <CEL|GAL> [string]`` |
| 79 | Coordinate system (CEL - celestial, GAL - galactic). | 79 | Coordinate system (CEL - celestial, GAL - galactic). |
| 80 | 80 | ||
| 81 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | 81 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` |
| 82 | Projection method. | 82 | Projection method. |
| 83 | 83 | ||
| 84 | ``emin [real]`` | 84 | ``emin [real]`` |
doc/source/users/reference_manual/cstsmapsplit.rst
| @@ -80,16 +80,15 @@ General parameters | @@ -80,16 +80,15 @@ General parameters | ||
| 80 | ``coordsys <CEL|GAL> [string]`` | 80 | ``coordsys <CEL|GAL> [string]`` |
| 81 | Coordinate system (CEL - celestial, GAL - galactic). | 81 | Coordinate system (CEL - celestial, GAL - galactic). |
| 82 | 82 | ||
| 83 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` | ||
| 84 | + Projection method. | ||
| 85 | + | ||
| 83 | ``xref [real]`` | 86 | ``xref [real]`` |
| 84 | Right Ascension / Galactic longitude of map centre (J2000, in degrees). | 87 | Right Ascension / Galactic longitude of map centre (J2000, in degrees). |
| 85 | 88 | ||
| 86 | ``yref [real]`` | 89 | ``yref [real]`` |
| 87 | Declination / Galactic latitude of map centre (J2000, in degrees). | 90 | Declination / Galactic latitude of map centre (J2000, in degrees). |
| 88 | 91 | ||
| 89 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | ||
| 90 | - Projection method. | ||
| 91 | - | ||
| 92 | - | ||
| 93 | 92 | ||
| 94 | Standard parameters | 93 | Standard parameters |
| 95 | ------------------- | 94 | ------------------- |
doc/source/users/reference_manual/ctbin.rst
| @@ -65,15 +65,15 @@ General parameters | @@ -65,15 +65,15 @@ General parameters | ||
| 65 | ``coordsys <CEL|GAL> [string]`` | 65 | ``coordsys <CEL|GAL> [string]`` |
| 66 | Coordinate system (CEL - celestial, GAL - galactic). | 66 | Coordinate system (CEL - celestial, GAL - galactic). |
| 67 | 67 | ||
| 68 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` | ||
| 69 | + Projection method. | ||
| 70 | + | ||
| 68 | ``xref [real]`` | 71 | ``xref [real]`` |
| 69 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). | 72 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). |
| 70 | 73 | ||
| 71 | ``yref [real]`` | 74 | ``yref [real]`` |
| 72 | Declination / Galactic latitude of cube centre (J2000, in degrees). | 75 | Declination / Galactic latitude of cube centre (J2000, in degrees). |
| 73 | 76 | ||
| 74 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | ||
| 75 | - Projection method. | ||
| 76 | - | ||
| 77 | 77 | ||
| 78 | Standard parameters | 78 | Standard parameters |
| 79 | ------------------- | 79 | ------------------- |
doc/source/users/reference_manual/ctbkgcube.rst
| @@ -105,15 +105,15 @@ General parameters | @@ -105,15 +105,15 @@ General parameters | ||
| 105 | ``coordsysL <CEL|GAL> [string]`` | 105 | ``coordsysL <CEL|GAL> [string]`` |
| 106 | Coordinate system (CEL - celestial, GAL - galactic). | 106 | Coordinate system (CEL - celestial, GAL - galactic). |
| 107 | 107 | ||
| 108 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` | ||
| 109 | + Projection method. | ||
| 110 | + | ||
| 108 | ``xref [real]`` | 111 | ``xref [real]`` |
| 109 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). | 112 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). |
| 110 | 113 | ||
| 111 | ``yref [real]`` | 114 | ``yref [real]`` |
| 112 | Declination / Galactic latitude of cube centre (J2000, in degrees). | 115 | Declination / Galactic latitude of cube centre (J2000, in degrees). |
| 113 | 116 | ||
| 114 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | ||
| 115 | - Projection method. | ||
| 116 | - | ||
| 117 | 117 | ||
| 118 | Standard parameters | 118 | Standard parameters |
| 119 | ------------------- | 119 | ------------------- |
doc/source/users/reference_manual/ctedispcube.rst
| @@ -88,15 +88,15 @@ General parameters | @@ -88,15 +88,15 @@ General parameters | ||
| 88 | ``coordsys <CEL|GAL> [string]`` | 88 | ``coordsys <CEL|GAL> [string]`` |
| 89 | Coordinate system (CEL - celestial, GAL - galactic). | 89 | Coordinate system (CEL - celestial, GAL - galactic). |
| 90 | 90 | ||
| 91 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` | ||
| 92 | + Projection method. | ||
| 93 | + | ||
| 91 | ``xref [real]`` | 94 | ``xref [real]`` |
| 92 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). | 95 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). |
| 93 | 96 | ||
| 94 | ``yref [real]`` | 97 | ``yref [real]`` |
| 95 | Declination / Galactic latitude of cube centre (J2000, in degrees). | 98 | Declination / Galactic latitude of cube centre (J2000, in degrees). |
| 96 | 99 | ||
| 97 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | ||
| 98 | - Projection method. | ||
| 99 | - | ||
| 100 | ``(migramax = 2.0) [real]`` | 100 | ``(migramax = 2.0) [real]`` |
| 101 | Upper bound of ratio between reconstructed and true photon energy. | 101 | Upper bound of ratio between reconstructed and true photon energy. |
| 102 | 102 |
doc/source/users/reference_manual/ctexpcube.rst
| @@ -95,15 +95,15 @@ General parameters | @@ -95,15 +95,15 @@ General parameters | ||
| 95 | ``coordsys <CEL|GAL> [string]`` | 95 | ``coordsys <CEL|GAL> [string]`` |
| 96 | Coordinate system (CEL - celestial, GAL - galactic). | 96 | Coordinate system (CEL - celestial, GAL - galactic). |
| 97 | 97 | ||
| 98 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` | ||
| 99 | + Projection method. | ||
| 100 | + | ||
| 98 | ``xref [real]`` | 101 | ``xref [real]`` |
| 99 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). | 102 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). |
| 100 | 103 | ||
| 101 | ``yref [real]`` | 104 | ``yref [real]`` |
| 102 | - Declination / Galactic latitude of cube centre (J2000, in degrees). | ||
| 103 | - | ||
| 104 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | ||
| 105 | - Projection method. | ||
| 106 | - | 105 | + Declination / Galactic latitude of cube centre (J2000, in degrees). |
| 106 | + | ||
| 107 | 107 | ||
| 108 | Standard parameters | 108 | Standard parameters |
| 109 | ------------------- | 109 | ------------------- |
doc/source/users/reference_manual/ctmapcube.rst
| @@ -61,15 +61,15 @@ General parameters | @@ -61,15 +61,15 @@ General parameters | ||
| 61 | ``coordsys <CEL|GAL> [string]`` | 61 | ``coordsys <CEL|GAL> [string]`` |
| 62 | Coordinate system (CEL - celestial, GAL - galactic). | 62 | Coordinate system (CEL - celestial, GAL - galactic). |
| 63 | 63 | ||
| 64 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` | ||
| 65 | + Projection method. | ||
| 66 | + | ||
| 64 | ``xref [real]`` | 67 | ``xref [real]`` |
| 65 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). | 68 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). |
| 66 | 69 | ||
| 67 | ``yref [real]`` | 70 | ``yref [real]`` |
| 68 | Declination / Galactic latitude of cube centre (J2000, in degrees). | 71 | Declination / Galactic latitude of cube centre (J2000, in degrees). |
| 69 | 72 | ||
| 70 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | ||
| 71 | - Projection method. | ||
| 72 | - | ||
| 73 | 73 | ||
| 74 | Standard parameters | 74 | Standard parameters |
| 75 | ------------------- | 75 | ------------------- |
doc/source/users/reference_manual/ctmodel.rst
| @@ -125,15 +125,15 @@ General parameters | @@ -125,15 +125,15 @@ General parameters | ||
| 125 | ``coordsys <CEL|GAL> [string]`` | 125 | ``coordsys <CEL|GAL> [string]`` |
| 126 | Coordinate system (CEL - celestial, GAL - galactic). | 126 | Coordinate system (CEL - celestial, GAL - galactic). |
| 127 | 127 | ||
| 128 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` | ||
| 129 | + Projection method. | ||
| 130 | + | ||
| 128 | ``xref [real]`` | 131 | ``xref [real]`` |
| 129 | Right Ascension / Galactic longitude of image centre (J2000, in degrees). | 132 | Right Ascension / Galactic longitude of image centre (J2000, in degrees). |
| 130 | 133 | ||
| 131 | ``yref [real]`` | 134 | ``yref [real]`` |
| 132 | Declination / Galactic latitude of image centre (J2000, in degrees). | 135 | Declination / Galactic latitude of image centre (J2000, in degrees). |
| 133 | 136 | ||
| 134 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | ||
| 135 | - Projection method. | ||
| 136 | - | ||
| 137 | 137 | ||
| 138 | Standard parameters | 138 | Standard parameters |
| 139 | ------------------- | 139 | ------------------- |
doc/source/users/reference_manual/ctpsfcube.rst
| @@ -87,15 +87,15 @@ General parameters | @@ -87,15 +87,15 @@ General parameters | ||
| 87 | ``coordsys <CEL|GAL> [string]`` | 87 | ``coordsys <CEL|GAL> [string]`` |
| 88 | Coordinate system (CEL - celestial, GAL - galactic). | 88 | Coordinate system (CEL - celestial, GAL - galactic). |
| 89 | 89 | ||
| 90 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` | ||
| 91 | + Projection method. | ||
| 92 | + | ||
| 90 | ``xref [real]`` | 93 | ``xref [real]`` |
| 91 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). | 94 | Right Ascension / Galactic longitude of cube centre (J2000, in degrees). |
| 92 | 95 | ||
| 93 | ``yref [real]`` | 96 | ``yref [real]`` |
| 94 | Declination / Galactic latitude of cube centre (J2000, in degrees). | 97 | Declination / Galactic latitude of cube centre (J2000, in degrees). |
| 95 | 98 | ||
| 96 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | ||
| 97 | - Projection method. | ||
| 98 | - | ||
| 99 | ``(amax = 0.3) [real]`` | 99 | ``(amax = 0.3) [real]`` |
| 100 | Upper bound of angular separation between true and measued photon | 100 | Upper bound of angular separation between true and measued photon |
| 101 | direction (in degrees). | 101 | direction (in degrees). |
doc/source/users/reference_manual/ctskymap.rst
| @@ -65,7 +65,7 @@ General parameters | @@ -65,7 +65,7 @@ General parameters | ||
| 65 | ``coordsys <CEL|GAL> [string]`` | 65 | ``coordsys <CEL|GAL> [string]`` |
| 66 | Coordinate system (CEL - celestial, GAL - galactic). | 66 | Coordinate system (CEL - celestial, GAL - galactic). |
| 67 | 67 | ||
| 68 | -``proj <AIT|AZP|CAR|MER|STG|TAN> [string]`` | 68 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` |
| 69 | Projection method. | 69 | Projection method. |
| 70 | 70 | ||
| 71 | ``xref [real]`` | 71 | ``xref [real]`` |
doc/source/users/reference_manual/cttsmap.rst
| @@ -78,15 +78,15 @@ General parameters | @@ -78,15 +78,15 @@ General parameters | ||
| 78 | ``coordsys <CEL|GAL> [string]`` | 78 | ``coordsys <CEL|GAL> [string]`` |
| 79 | Coordinate system (CEL - celestial, GAL - galactic). | 79 | Coordinate system (CEL - celestial, GAL - galactic). |
| 80 | 80 | ||
| 81 | +``proj <AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN> [string]`` | ||
| 82 | + Projection method. | ||
| 83 | + | ||
| 81 | ``xref [real]`` | 84 | ``xref [real]`` |
| 82 | Right Ascension / Galactic longitude of map centre (J2000, in degrees). | 85 | Right Ascension / Galactic longitude of map centre (J2000, in degrees). |
| 83 | 86 | ||
| 84 | ``yref [real]`` | 87 | ``yref [real]`` |
| 85 | Declination / Galactic latitude of map centre (J2000, in degrees). | 88 | Declination / Galactic latitude of map centre (J2000, in degrees). |
| 86 | 89 | ||
| 87 | -``proj <AIT|AZP|CAR|MER|MOL|STG|TAN> [string]`` | ||
| 88 | - Projection method. | ||
| 89 | - | ||
| 90 | ``(binmin = -1) [integer]`` | 90 | ``(binmin = -1) [integer]`` |
| 91 | First bin to compute. | 91 | First bin to compute. |
| 92 | 92 |
doc/source/users/reference_manual/index.rst
| @@ -43,13 +43,14 @@ cscripts | @@ -43,13 +43,14 @@ cscripts | ||
| 43 | 43 | ||
| 44 | cscaldb --- Lists available instrument response functions <cscaldb> | 44 | cscaldb --- Lists available instrument response functions <cscaldb> |
| 45 | csebins --- Generates energy boundaries for stacked analysis <csebins> | 45 | csebins --- Generates energy boundaries for stacked analysis <csebins> |
| 46 | - cslightcrv --- Computes lightcurve <cslightcrv> | 46 | + cslightcrv --- Computes light curve <cslightcrv> |
| 47 | csmodelinfo --- Shows model container content <csmodelinfo> | 47 | csmodelinfo --- Shows model container content <csmodelinfo> |
| 48 | csmodelmerge --- Merges several model containers into one file <csmodelmerge> | 48 | csmodelmerge --- Merges several model containers into one file <csmodelmerge> |
| 49 | csmodelselect --- Select models from model definition file <csmodelselect> | 49 | csmodelselect --- Select models from model definition file <csmodelselect> |
| 50 | csobsdef --- Generates observation definition file <csobsdef> | 50 | csobsdef --- Generates observation definition file <csobsdef> |
| 51 | csobsinfo --- Shows observation container content <csobsinfo> | 51 | csobsinfo --- Shows observation container content <csobsinfo> |
| 52 | csobsselect --- Select observations from observation definition file <csobsselect> | 52 | csobsselect --- Select observations from observation definition file <csobsselect> |
| 53 | + csphasecrv --- Computes phase curve <csphasecrv> | ||
| 53 | cspull --- Generates pull distribution <cspull> | 54 | cspull --- Generates pull distribution <cspull> |
| 54 | csresmap --- Generates residual map <csresmap> | 55 | csresmap --- Generates residual map <csresmap> |
| 55 | cssens --- Computes CTA sensitivity <cssens> | 56 | cssens --- Computes CTA sensitivity <cssens> |
src/ctbin/ctbin.par
| @@ -5,7 +5,6 @@ | @@ -5,7 +5,6 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctbin.par # | 7 | # File: ctbin.par # |
| 8 | -# Version: 1.1.0 # | ||
| 9 | # # | 8 | # # |
| 10 | # Author: Juergen Knoedlseder # | 9 | # Author: Juergen Knoedlseder # |
| 11 | # Jurgen.Knodlseder@irap.omp.eu # | 10 | # Jurgen.Knodlseder@irap.omp.eu # |
| @@ -37,9 +36,9 @@ nxpix, i, a, 200,,, "Size of the X axis in pixels" | @@ -37,9 +36,9 @@ nxpix, i, a, 200,,, "Size of the X axis in pixels" | ||
| 37 | nypix, i, a, 200,,, "Size of the Y axis in pixels" | 36 | nypix, i, a, 200,,, "Size of the Y axis in pixels" |
| 38 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" | 37 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" |
| 39 | coordsys, s, a, CEL,CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 38 | coordsys, s, a, CEL,CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 39 | +proj, s, a, CAR,AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" | ||
| 40 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 40 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 41 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 41 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 42 | -proj, s, a, CAR,AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 43 | 42 | ||
| 44 | # | 43 | # |
| 45 | # Standard parameters | 44 | # Standard parameters |
src/ctbkgcube/ctbkgcube.par
| @@ -41,10 +41,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | @@ -41,10 +41,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | ||
| 41 | nxpix, i, a, 200,,, "Size of the X axis in pixels" | 41 | nxpix, i, a, 200,,, "Size of the X axis in pixels" |
| 42 | nypix, i, a, 200,,, "Size of the Y axis in pixels" | 42 | nypix, i, a, 200,,, "Size of the Y axis in pixels" |
| 43 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" | 43 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" |
| 44 | -coordsys, s, a, "CEL", CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 44 | +coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 45 | +proj, s, a, CAR, AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" | ||
| 45 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 46 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 46 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 47 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 47 | -proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 48 | 48 | ||
| 49 | # | 49 | # |
| 50 | # Standard parameters | 50 | # Standard parameters |
src/ctedispcube/ctedispcube.par
| @@ -5,7 +5,6 @@ | @@ -5,7 +5,6 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctedispcube.par # | 7 | # File: ctedispcube.par # |
| 8 | -# Version: 1.2.0 # | ||
| 9 | # # | 8 | # # |
| 10 | # Author: Maria Haupt # | 9 | # Author: Maria Haupt # |
| 11 | # maria.haupt@desy.de # | 10 | # maria.haupt@desy.de # |
| @@ -40,10 +39,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | @@ -40,10 +39,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | ||
| 40 | nxpix, i, a, 10,,, "Size of the X axis in pixels" | 39 | nxpix, i, a, 10,,, "Size of the X axis in pixels" |
| 41 | nypix, i, a, 10,,, "Size of the Y axis in pixels" | 40 | nypix, i, a, 10,,, "Size of the Y axis in pixels" |
| 42 | binsz, r, a, 1.0,,, "Image scale (in degrees/pixel)" | 41 | binsz, r, a, 1.0,,, "Image scale (in degrees/pixel)" |
| 43 | -coordsys, s, a, "CEL", CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 42 | +coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 43 | +proj, s, a, CAR, AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" | ||
| 44 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 44 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 45 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 45 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 46 | -proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 47 | 46 | ||
| 48 | # | 47 | # |
| 49 | # Angular separation binning parameters | 48 | # Angular separation binning parameters |
src/ctexpcube/ctexpcube.par
| @@ -5,7 +5,6 @@ | @@ -5,7 +5,6 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctexpcube.par # | 7 | # File: ctexpcube.par # |
| 8 | -# Version: 1.2.0 # | ||
| 9 | # # | 8 | # # |
| 10 | # Author: Juergen Knoedlseder # | 9 | # Author: Juergen Knoedlseder # |
| 11 | # Jurgen.Knodlseder@irap.omp.eu # | 10 | # Jurgen.Knodlseder@irap.omp.eu # |
| @@ -40,10 +39,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | @@ -40,10 +39,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | ||
| 40 | nxpix, i, a, 200,,, "Size of the X axis in pixels" | 39 | nxpix, i, a, 200,,, "Size of the X axis in pixels" |
| 41 | nypix, i, a, 200,,, "Size of the Y axis in pixels" | 40 | nypix, i, a, 200,,, "Size of the Y axis in pixels" |
| 42 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" | 41 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" |
| 43 | -coordsys, s, a, "CEL", CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 42 | +coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 43 | +proj, s, a, CAR, AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" | ||
| 44 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 44 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 45 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 45 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 46 | -proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 47 | 46 | ||
| 48 | # | 47 | # |
| 49 | # Standard parameters | 48 | # Standard parameters |
src/ctmapcube/ctmapcube.par
| @@ -5,7 +5,6 @@ | @@ -5,7 +5,6 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctmapcube.par # | 7 | # File: ctmapcube.par # |
| 8 | -# Version: 1.0.0 # | ||
| 9 | # # | 8 | # # |
| 10 | # Author: Juergen Knoedlseder # | 9 | # Author: Juergen Knoedlseder # |
| 11 | # Jurgen.Knodlseder@irap.omp.eu # | 10 | # Jurgen.Knodlseder@irap.omp.eu # |
| @@ -37,9 +36,9 @@ nxpix, i, a, 200,,, "Size of the X axis in pixels" | @@ -37,9 +36,9 @@ nxpix, i, a, 200,,, "Size of the X axis in pixels" | ||
| 37 | nypix, i, a, 200,,, "Size of the Y axis in pixels" | 36 | nypix, i, a, 200,,, "Size of the Y axis in pixels" |
| 38 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" | 37 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" |
| 39 | coordsys, s, a, CEL,CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 38 | coordsys, s, a, CEL,CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 39 | +proj, s, a, CAR,AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" | ||
| 40 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 40 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 41 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 41 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 42 | -proj, s, a, CAR,AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 43 | 42 | ||
| 44 | # | 43 | # |
| 45 | # Standard parameters | 44 | # Standard parameters |
src/ctmodel/ctmodel.par
| @@ -54,10 +54,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | @@ -54,10 +54,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | ||
| 54 | nxpix, i, a, 200,,, "Size of the X axis in pixels" | 54 | nxpix, i, a, 200,,, "Size of the X axis in pixels" |
| 55 | nypix, i, a, 200,,, "Size of the Y axis in pixels" | 55 | nypix, i, a, 200,,, "Size of the Y axis in pixels" |
| 56 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" | 56 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" |
| 57 | -coordsys, s, a, "CEL", CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 57 | +coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 58 | +proj, s, a, CAR, AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" | ||
| 58 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 59 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 59 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 60 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 60 | -proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 61 | 61 | ||
| 62 | # | 62 | # |
| 63 | # Standard parameters | 63 | # Standard parameters |
src/ctpsfcube/ctpsfcube.par
| @@ -5,7 +5,6 @@ | @@ -5,7 +5,6 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctpsfcube.par # | 7 | # File: ctpsfcube.par # |
| 8 | -# Version: 1.2.0 # | ||
| 9 | # # | 8 | # # |
| 10 | # Author: Chia-Chun Lu # | 9 | # Author: Chia-Chun Lu # |
| 11 | # c.lu@mpi-hd.mpg.de # | 10 | # c.lu@mpi-hd.mpg.de # |
| @@ -40,10 +39,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | @@ -40,10 +39,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | ||
| 40 | nxpix, i, a, 10,,, "Size of the X axis in pixels" | 39 | nxpix, i, a, 10,,, "Size of the X axis in pixels" |
| 41 | nypix, i, a, 10,,, "Size of the Y axis in pixels" | 40 | nypix, i, a, 10,,, "Size of the Y axis in pixels" |
| 42 | binsz, r, a, 1.0,,, "Image scale (in degrees/pixel)" | 41 | binsz, r, a, 1.0,,, "Image scale (in degrees/pixel)" |
| 43 | -coordsys, s, a, "CEL", CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 42 | +coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 43 | +proj, s, a, CAR, AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" | ||
| 44 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 44 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 45 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 45 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 46 | -proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 47 | 46 | ||
| 48 | # | 47 | # |
| 49 | # Angular separation binning parameters | 48 | # Angular separation binning parameters |
src/ctselect/ctselect.par
| @@ -5,7 +5,6 @@ | @@ -5,7 +5,6 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctselect.par # | 7 | # File: ctselect.par # |
| 8 | -# Version: 1.2.0 # | ||
| 9 | # # | 8 | # # |
| 10 | # Author: Jurgen Knodlseder # | 9 | # Author: Jurgen Knodlseder # |
| 11 | # Jurgen.Knodlseder@irap.omp.eu # | 10 | # Jurgen.Knodlseder@irap.omp.eu # |
| @@ -32,8 +31,8 @@ tmin, r, a, 0.0,,, "Start time (CTA MET in seconds)" | @@ -32,8 +31,8 @@ tmin, r, a, 0.0,,, "Start time (CTA MET in seconds)" | ||
| 32 | tmax, r, a, 0.0,,, "End time (CTA MET in seconds)" | 31 | tmax, r, a, 0.0,,, "End time (CTA MET in seconds)" |
| 33 | emin, r, a, 0.1,,, "Lower energy limit (TeV)" | 32 | emin, r, a, 0.1,,, "Lower energy limit (TeV)" |
| 34 | emax, r, a, 100.0,,, "Upper energy limit (TeV)" | 33 | emax, r, a, 100.0,,, "Upper energy limit (TeV)" |
| 35 | -expr, s, h, "",,, "Additional selection expression" | ||
| 36 | -usethres,s, h, "NONE",NONE|DEFAULT|USER,, "Energy threshold type" | 34 | +expr, s, h, ,,, "Additional selection expression" |
| 35 | +usethres,s, h, NONE,NONE|DEFAULT|USER,, "Energy threshold type" | ||
| 37 | 36 | ||
| 38 | # | 37 | # |
| 39 | # Standard parameters | 38 | # Standard parameters |
src/ctskymap/ctskymap.par
| @@ -35,7 +35,7 @@ nxpix, i, a, 200,,, "Size of the X axis in pixels" | @@ -35,7 +35,7 @@ nxpix, i, a, 200,,, "Size of the X axis in pixels" | ||
| 35 | nypix, i, a, 200,,, "Size of the Y axis in pixels" | 35 | nypix, i, a, 200,,, "Size of the Y axis in pixels" |
| 36 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" | 36 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" |
| 37 | coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 37 | coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 38 | -proj, s, a, CAR, AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | 38 | +proj, s, a, CAR, AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" |
| 39 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 39 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 40 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 40 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 41 | 41 |
src/cttsmap/cttsmap.par
| @@ -40,10 +40,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | @@ -40,10 +40,10 @@ usepnt, b, h, no,,, "Use pointing instead of xref/yref parameters?" | ||
| 40 | nxpix, i, a, 200,,, "Size of the X axis in pixels" | 40 | nxpix, i, a, 200,,, "Size of the X axis in pixels" |
| 41 | nypix, i, a, 200,,, "Size of the Y axis in pixels" | 41 | nypix, i, a, 200,,, "Size of the Y axis in pixels" |
| 42 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" | 42 | binsz, r, a, 0.02,,, "Image scale (in degrees/pixel)" |
| 43 | -coordsys, s, a, "CEL", CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" | 43 | +coordsys, s, a, CEL, CEL|GAL,,"Coordinate system (CEL - celestial, GAL - galactic)" |
| 44 | +proj, s, a, CAR, AIT|AZP|CAR|GLS|MER|MOL|SFL|SIN|STG|TAN,, "Projection method" | ||
| 44 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" | 45 | xref, r, a, 83.63,0,360, "First coordinate of image center in degrees (RA or galactic l)" |
| 45 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" | 46 | yref, r, a, 22.01,-90,90, "Second coordinate of image center in degrees (DEC or galactic b)" |
| 46 | -proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 47 | 47 | ||
| 48 | # | 48 | # |
| 49 | # Parameters for splitting and speed purpose | 49 | # Parameters for splitting and speed purpose |
test/data/phased_events.fits deleted
No preview for this file type
test/data/phased_events.fits.gz
0 → 100644
No preview for this file type
test/test_csphasecrv.py
0 → 100755
| 1 | +#! /usr/bin/env python | ||
| 2 | +# ========================================================================== | ||
| 3 | +# This scripts performs unit tests for the csphasecrv script. | ||
| 4 | +# | ||
| 5 | +# Copyright (C) 2017 Juergen Knoedlseder | ||
| 6 | +# | ||
| 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 | ||
| 9 | +# the Free Software Foundation, either version 3 of the License, or | ||
| 10 | +# (at your option) any later version. | ||
| 11 | +# | ||
| 12 | +# This program is distributed in the hope that it will be useful, | ||
| 13 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | +# GNU General Public License for more details. | ||
| 16 | +# | ||
| 17 | +# You should have received a copy of the GNU General Public License | ||
| 18 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | +# | ||
| 20 | +# ========================================================================== | ||
| 21 | +import gammalib | ||
| 22 | +import cscripts | ||
| 23 | +from testing import test | ||
| 24 | + | ||
| 25 | + | ||
| 26 | +# ================================ # | ||
| 27 | +# Test class for csphasecrv script # | ||
| 28 | +# ================================ # | ||
| 29 | +class Test(test): | ||
| 30 | + """ | ||
| 31 | + Test class for csphasecrv script | ||
| 32 | + | ||
| 33 | + This test class makes unit tests for the csphasecrv script by using it | ||
| 34 | + from the command line and from Python. | ||
| 35 | + """ | ||
| 36 | + | ||
| 37 | + # Constructor | ||
| 38 | + def __init__(self): | ||
| 39 | + """ | ||
| 40 | + Constructor | ||
| 41 | + """ | ||
| 42 | + # Call base class constructor | ||
| 43 | + test.__init__(self) | ||
| 44 | + | ||
| 45 | + # Set test data | ||
| 46 | + self._phased_events = self._datadir + '/phased_events.fits' | ||
| 47 | + | ||
| 48 | + # Return | ||
| 49 | + return | ||
| 50 | + | ||
| 51 | + # Set test functions | ||
| 52 | + def set(self): | ||
| 53 | + """ | ||
| 54 | + Set all test functions. | ||
| 55 | + """ | ||
| 56 | + # Set test name | ||
| 57 | + self.name('csphasecrv') | ||
| 58 | + | ||
| 59 | + # Append tests | ||
| 60 | + self.append(self._test_cmd, 'Test csphasecrv on command line') | ||
| 61 | + self.append(self._test_python, 'Test csphasecrv from Python') | ||
| 62 | + | ||
| 63 | + # Return | ||
| 64 | + return | ||
| 65 | + | ||
| 66 | + # Test csphasecrv on command line | ||
| 67 | + def _test_cmd(self): | ||
| 68 | + """ | ||
| 69 | + Test csphasecrv on the command line. | ||
| 70 | + """ | ||
| 71 | + # Set script name | ||
| 72 | + csphasecrv = self._script('csphasecrv') | ||
| 73 | + | ||
| 74 | + # Setup csphasecrv command | ||
| 75 | + cmd = csphasecrv+' inobs="'+self._phased_events+'"'+ \ | ||
| 76 | + ' inmodel="'+self._model+'" srcname="Crab"'+ \ | ||
| 77 | + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \ | ||
| 78 | + ' phbinalg="LIN" phbins=5'+ \ | ||
| 79 | + ' enumbins=0 emin=0.1 emax=100.0'+ \ | ||
| 80 | + ' outfile="csphasecrv_cmd1.fits"'+ \ | ||
| 81 | + ' logfile="csphasecrv_cmd1.log" chatter=1' | ||
| 82 | + | ||
| 83 | + # Check if execution of wrong command fails | ||
| 84 | + self.test_assert(self._execute('command_that_does_not_exist') != 0, | ||
| 85 | + 'Self test of test script') | ||
| 86 | + | ||
| 87 | + # Check if execution was successful | ||
| 88 | + self.test_assert(self._execute(cmd) == 0, | ||
| 89 | + 'Check successful execution from command line') | ||
| 90 | + | ||
| 91 | + # Check phase curve | ||
| 92 | + self._check_phase_curve('csphasecrv_cmd1.fits', 5) | ||
| 93 | + | ||
| 94 | + # Setup csphasecrv command | ||
| 95 | + cmd = csphasecrv+' inobs="events_that_do_not_exist.fits"'+ \ | ||
| 96 | + ' inmodel="'+self._model+'" srcname="Crab"'+ \ | ||
| 97 | + ' caldb="'+self._caldb+'" irf="'+self._irf+'"'+ \ | ||
| 98 | + ' phbinalg="LIN" phbins=5'+ \ | ||
| 99 | + ' enumbins=0 emin=0.1 emax=100.0'+ \ | ||
| 100 | + ' outfile="csphasecrv_cmd2.fits"'+ \ | ||
| 101 | + ' logfile="csphasecrv_cmd2.log" chatter=1' | ||
| 102 | + | ||
| 103 | + # Check if execution failed | ||
| 104 | + self.test_assert(self._execute(cmd) != 0, | ||
| 105 | + 'Check invalid input file when executed from command line') | ||
| 106 | + | ||
| 107 | + # Return | ||
| 108 | + return | ||
| 109 | + | ||
| 110 | + # Test csphasecrv from Python | ||
| 111 | + def _test_python(self): | ||
| 112 | + """ | ||
| 113 | + Test csphasecrv from Python | ||
| 114 | + """ | ||
| 115 | + # Set-up unbinned csphasecrv | ||
| 116 | + pcrv = cscripts.csphasecrv() | ||
| 117 | + pcrv['inobs'] = self._phased_events | ||
| 118 | + pcrv['inmodel'] = self._model | ||
| 119 | + pcrv['srcname'] = 'Crab' | ||
| 120 | + pcrv['caldb'] = self._caldb | ||
| 121 | + pcrv['irf'] = self._irf | ||
| 122 | + pcrv['phbinalg'] = 'LIN' | ||
| 123 | + pcrv['phbins'] = 5 | ||
| 124 | + pcrv['enumbins'] = 0 | ||
| 125 | + pcrv['emin'] = 0.1 | ||
| 126 | + pcrv['emax'] = 100.0 | ||
| 127 | + pcrv['outfile'] = 'csphasecrv_py1.fits' | ||
| 128 | + pcrv['logfile'] = 'csphasecrv_py1.log' | ||
| 129 | + pcrv['chatter'] = 2 | ||
| 130 | + pcrv['publish'] = True | ||
| 131 | + | ||
| 132 | + # Run csphasecrv script and save phase curve | ||
| 133 | + pcrv.logFileOpen() # Make sure we get a log file | ||
| 134 | + pcrv.run() | ||
| 135 | + pcrv.save() | ||
| 136 | + | ||
| 137 | + # Check phase curve | ||
| 138 | + self._check_phase_curve('csphasecrv_py1.fits', 5) | ||
| 139 | + | ||
| 140 | + # Now use FILE as time bin algorithm. For this we need first to | ||
| 141 | + # create an ASCII file. We use now 2 phase bins. The ASCII file | ||
| 142 | + # is saved into the file "csphasecrv_py2.dat". | ||
| 143 | + csv = gammalib.GCsv(2,2) | ||
| 144 | + phmin = 0.0 | ||
| 145 | + phdelta = 1.0 / float(csv.nrows()) | ||
| 146 | + for i in range(csv.nrows()): | ||
| 147 | + csv[i,0] = '%.5f' % (phmin + i * phdelta) | ||
| 148 | + csv[i,1] = '%.5f' % (phmin + (i+1) * phdelta) | ||
| 149 | + csv.save('csphasecrv_py2.dat', ' ', True) | ||
| 150 | + | ||
| 151 | + # Set-up unbinned csphasecrv | ||
| 152 | + pcrv = cscripts.csphasecrv() | ||
| 153 | + pcrv['inobs'] = self._phased_events | ||
| 154 | + pcrv['inmodel'] = self._model | ||
| 155 | + pcrv['srcname'] = 'Crab' | ||
| 156 | + pcrv['caldb'] = self._caldb | ||
| 157 | + pcrv['irf'] = self._irf | ||
| 158 | + pcrv['phbinalg'] = 'FILE' | ||
| 159 | + pcrv['phbinfile'] = 'csphasecrv_py2.dat' | ||
| 160 | + pcrv['enumbins'] = 0 | ||
| 161 | + pcrv['emin'] = 0.1 | ||
| 162 | + pcrv['emax'] = 100.0 | ||
| 163 | + pcrv['outfile'] = 'csphasecrv_py2.fits' | ||
| 164 | + pcrv['logfile'] = 'csphasecrv_py2.log' | ||
| 165 | + pcrv['chatter'] = 3 | ||
| 166 | + | ||
| 167 | + # Execute csphasecrv script | ||
| 168 | + pcrv.logFileOpen() # Make sure we get a log file | ||
| 169 | + pcrv.execute() | ||
| 170 | + | ||
| 171 | + # Check phase curve | ||
| 172 | + self._check_phase_curve('csphasecrv_py2.fits', csv.nrows()) | ||
| 173 | + | ||
| 174 | + # Now we setup an observation container on input. We attached the | ||
| 175 | + # model to the observation container so that csphasecrv should | ||
| 176 | + # no longer query for the parameter. | ||
| 177 | + cta = gammalib.GCTAObservation(self._phased_events) | ||
| 178 | + obs = gammalib.GObservations() | ||
| 179 | + obs.append(cta) | ||
| 180 | + obs.models(self._model) | ||
| 181 | + | ||
| 182 | + # Set-up unbinned csphasecrv from observation container. Now use | ||
| 183 | + # the GTI algorithm so that we test all timing algorithms. | ||
| 184 | + pcrv = cscripts.csphasecrv(obs) | ||
| 185 | + pcrv['srcname'] = 'Crab' | ||
| 186 | + pcrv['caldb'] = self._caldb | ||
| 187 | + pcrv['irf'] = self._irf | ||
| 188 | + pcrv['phbinalg'] = 'LIN' | ||
| 189 | + pcrv['phbins'] = 5 | ||
| 190 | + pcrv['enumbins'] = 0 | ||
| 191 | + pcrv['emin'] = 0.1 | ||
| 192 | + pcrv['emax'] = 100.0 | ||
| 193 | + pcrv['outfile'] = 'csphasecrv_py3.fits' | ||
| 194 | + pcrv['logfile'] = 'csphasecrv_py3.log' | ||
| 195 | + pcrv['chatter'] = 4 | ||
| 196 | + | ||
| 197 | + # Execute csphasecrv script | ||
| 198 | + pcrv.logFileOpen() # Make sure we get a log file | ||
| 199 | + pcrv.execute() | ||
| 200 | + | ||
| 201 | + # Check phase curve | ||
| 202 | + self._check_phase_curve('csphasecrv_py3.fits', 5) | ||
| 203 | + | ||
| 204 | + # Finally we set-up a binned csphasecrv | ||
| 205 | + pcrv = cscripts.csphasecrv() | ||
| 206 | + pcrv['inobs'] = self._phased_events | ||
| 207 | + pcrv['inmodel'] = self._model | ||
| 208 | + pcrv['srcname'] = 'Crab' | ||
| 209 | + pcrv['caldb'] = self._caldb | ||
| 210 | + pcrv['irf'] = self._irf | ||
| 211 | + pcrv['phbinalg'] = 'LIN' | ||
| 212 | + pcrv['phbins'] = 2 | ||
| 213 | + pcrv['emin'] = 0.1 | ||
| 214 | + pcrv['emax'] = 100.0 | ||
| 215 | + pcrv['enumbins'] = 10 | ||
| 216 | + pcrv['coordsys'] = 'CEL' | ||
| 217 | + pcrv['proj'] = 'TAN' | ||
| 218 | + pcrv['xref'] = 83.63 | ||
| 219 | + pcrv['yref'] = 22.01 | ||
| 220 | + pcrv['nxpix'] = 20 | ||
| 221 | + pcrv['nypix'] = 20 | ||
| 222 | + pcrv['binsz'] = 0.02 | ||
| 223 | + pcrv['outfile'] = 'csphasecrv_py4.fits' | ||
| 224 | + pcrv['logfile'] = 'csphasecrv_py4.log' | ||
| 225 | + pcrv['chatter'] = 4 | ||
| 226 | + | ||
| 227 | + # Execute csphasecrv script | ||
| 228 | + pcrv.logFileOpen() # Make sure we get a log file | ||
| 229 | + pcrv.execute() | ||
| 230 | + | ||
| 231 | + # Check phase curve | ||
| 232 | + self._check_phase_curve('csphasecrv_py4.fits', 2) | ||
| 233 | + | ||
| 234 | + # Return | ||
| 235 | + return | ||
| 236 | + | ||
| 237 | + # Check phase curve result file | ||
| 238 | + def _check_phase_curve(self, filename, bins): | ||
| 239 | + """ | ||
| 240 | + Check phase curve file | ||
| 241 | + """ | ||
| 242 | + # Expected column names | ||
| 243 | + cols = ['PHASE_MIN', 'PHASE_MAX', 'Prefactor', 'e_Prefactor', | ||
| 244 | + 'Index', 'e_Index'] | ||
| 245 | + | ||
| 246 | + # Open FITS file | ||
| 247 | + fits = gammalib.GFits(filename) | ||
| 248 | + | ||
| 249 | + # Check FITS file structure | ||
| 250 | + self.test_value(fits.size(), 2, | ||
| 251 | + 'Check for 2 extensions in phase curve FITS file') | ||
| 252 | + self.test_assert(fits.contains('PHASECURVE'), | ||
| 253 | + 'FITS file contains "PHASECURVE" extension') | ||
| 254 | + | ||
| 255 | + # Get PHASECURVE table | ||
| 256 | + table = fits['PHASECURVE'] | ||
| 257 | + | ||
| 258 | + # Check FITS table structure | ||
| 259 | + self.test_value(table.ncols(), len(cols), | ||
| 260 | + 'Check for %d columns in phase curve FITS table' % len(cols)) | ||
| 261 | + self.test_value(table.nrows(), bins, | ||
| 262 | + 'Check for %d rows in phase curve FITS table' % bins) | ||
| 263 | + for col in cols: | ||
| 264 | + self.test_assert(table.contains(col), | ||
| 265 | + 'FITS file contains "'+col+'" column') | ||
| 266 | + | ||
| 267 | + # Close FITS file | ||
| 268 | + fits.close() | ||
| 269 | + | ||
| 270 | + # Return | ||
| 271 | + return |
test/test_python_cscripts.py
| @@ -36,6 +36,7 @@ import test_csobs2caldb | @@ -36,6 +36,7 @@ import test_csobs2caldb | ||
| 36 | import test_csobsdef | 36 | import test_csobsdef |
| 37 | import test_csobsinfo | 37 | import test_csobsinfo |
| 38 | import test_csobsselect | 38 | import test_csobsselect |
| 39 | +import test_csphasecrv | ||
| 39 | import test_cspull | 40 | import test_cspull |
| 40 | import test_csresmap | 41 | import test_csresmap |
| 41 | import test_csroot2caldb | 42 | import test_csroot2caldb |
| @@ -124,6 +125,7 @@ def test(installed=False, debug=False): | @@ -124,6 +125,7 @@ def test(installed=False, debug=False): | ||
| 124 | test_csobsdef.Test(), | 125 | test_csobsdef.Test(), |
| 125 | test_csobsinfo.Test(), | 126 | test_csobsinfo.Test(), |
| 126 | test_csobsselect.Test(), | 127 | test_csobsselect.Test(), |
| 128 | + test_csphasecrv.Test(), | ||
| 127 | test_cspull.Test(), | 129 | test_cspull.Test(), |
| 128 | test_csresmap.Test(), | 130 | test_csresmap.Test(), |
| 129 | test_csroot2caldb.Test(), | 131 | test_csroot2caldb.Test(), |