Commit 4ec635a29e4627bfecd66691706067cc40693038
1 parent
b621fc01
added convenience methods for Python
Showing
2 changed files
with
132 additions
and
11 deletions
cscripts/csscs.par
| ... | ... | @@ -64,7 +64,6 @@ fix_bkg, b, h, no,,, "Fix background normalisation" |
| 64 | 64 | # Standard parameters |
| 65 | 65 | #==================== |
| 66 | 66 | nthreads, i, h, 0,0,1000, "Number of parallel processes (0=use all available CPUs)" |
| 67 | -publish, b, h, no,,, "Publish output map on VO Hub?" | |
| 68 | 67 | chatter, i, h, 2,0,4, "Chattiness of output" |
| 69 | 68 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" |
| 70 | 69 | debug, b, h, no,,, "Activate debugging mode?" | ... | ... |
cscripts/csscs.py
| ... | ... | @@ -227,11 +227,8 @@ class csscs(ctools.csobservation): |
| 227 | 227 | nsources = 0 |
| 228 | 228 | # Verify if model is of type GModelSky |
| 229 | 229 | for model in self.obs().models(): |
| 230 | - try: | |
| 231 | - gammalib.GModelSky(model) | |
| 230 | + if model.classname() == 'GModelSky': | |
| 232 | 231 | nsources +=1 |
| 233 | - except: | |
| 234 | - pass | |
| 235 | 232 | # If there are background gamma-ray sources in the model |
| 236 | 233 | # throw runtime error |
| 237 | 234 | if nsources > len(self._srcnames): |
| ... | ... | @@ -286,7 +283,7 @@ class csscs(ctools.csobservation): |
| 286 | 283 | # Write header |
| 287 | 284 | self._log_header1(gammalib.TERSE, 'Adjust model parameters') |
| 288 | 285 | |
| 289 | - # Adjust model parameters dependent on input user parameters | |
| 286 | + # Adjust model parameters based on input user parameters | |
| 290 | 287 | for model in self.obs().models(): |
| 291 | 288 | |
| 292 | 289 | # Initialise TS flag for all models to false |
| ... | ... | @@ -619,10 +616,8 @@ class csscs(ctools.csobservation): |
| 619 | 616 | # Create new Fits object |
| 620 | 617 | fits = gammalib.GFits() |
| 621 | 618 | |
| 622 | - # If more than one source of interest | |
| 623 | - # append empty primary HDU | |
| 624 | - if len(self._srcnames) > 1: | |
| 625 | - fits.append(gammalib.GFitsImageDouble()) | |
| 619 | + # Append empty primary HDU | |
| 620 | + fits.append(gammalib.GFitsImageDouble()) | |
| 626 | 621 | |
| 627 | 622 | # Prepare some header cards |
| 628 | 623 | # Flux units |
| ... | ... | @@ -674,6 +669,45 @@ class csscs(ctools.csobservation): |
| 674 | 669 | # Return |
| 675 | 670 | return fits |
| 676 | 671 | |
| 672 | + def _get_skymap(self, name, quantity): | |
| 673 | + """ | |
| 674 | + Fetches skymap from FITS container | |
| 675 | + | |
| 676 | + Parameters | |
| 677 | + ---------- | |
| 678 | + name : str | |
| 679 | + Source name | |
| 680 | + quantity : str | |
| 681 | + Quantity | |
| 682 | + | |
| 683 | + Returns | |
| 684 | + ------- | |
| 685 | + skymap : `~gammalib.GSkyMap` | |
| 686 | + Skymap | |
| 687 | + | |
| 688 | + Raises | |
| 689 | + ------ | |
| 690 | + NameError | |
| 691 | + """ | |
| 692 | + | |
| 693 | + # Initialise skymap object | |
| 694 | + skymap = None | |
| 695 | + | |
| 696 | + if self._fits != None: | |
| 697 | + hduname = name + ' ' + quantity | |
| 698 | + try: | |
| 699 | + if name in self._srcnames: | |
| 700 | + hdu = self._fits[hduname] | |
| 701 | + skymap = gammalib.GSkyMap(hdu) | |
| 702 | + else: | |
| 703 | + print('ERROR: Source "' + name + '" not found in list of target sources.') | |
| 704 | + raise NameError(name) | |
| 705 | + except: | |
| 706 | + print('ERROR: HDU "' + hduname + '" not found in FITS container.') | |
| 707 | + raise NameError(hduname) | |
| 708 | + | |
| 709 | + return skymap | |
| 710 | + | |
| 677 | 711 | |
| 678 | 712 | # Public methods |
| 679 | 713 | def run(self): |
| ... | ... | @@ -690,7 +724,7 @@ class csscs(ctools.csobservation): |
| 690 | 724 | # Write input observation container into logger |
| 691 | 725 | self._log_observations(gammalib.NORMAL, self.obs(), 'Input observation') |
| 692 | 726 | |
| 693 | - # Adjust model parameters dependent on input user parameters | |
| 727 | + # Adjust model parameters based on input user parameters | |
| 694 | 728 | self._adjust_model_pars() |
| 695 | 729 | |
| 696 | 730 | # Compute number of pixels of output map |
| ... | ... | @@ -765,6 +799,94 @@ class csscs(ctools.csobservation): |
| 765 | 799 | # Return |
| 766 | 800 | return self._excl_reg_map |
| 767 | 801 | |
| 802 | + def fits(self): | |
| 803 | + """ | |
| 804 | + Return fits container | |
| 805 | + | |
| 806 | + Returns | |
| 807 | + ------- | |
| 808 | + fits : `~gammalib.GFits()` | |
| 809 | + FITS file containing the maps | |
| 810 | + """ | |
| 811 | + # Return | |
| 812 | + return self._fits | |
| 813 | + | |
| 814 | + def flux(self,name): | |
| 815 | + """ | |
| 816 | + Return flux skymap | |
| 817 | + | |
| 818 | + Parameters | |
| 819 | + ---------- | |
| 820 | + name : str | |
| 821 | + Source name | |
| 822 | + | |
| 823 | + Returns | |
| 824 | + ------- | |
| 825 | + skymap : `~gammalib.GSkyMap` | |
| 826 | + Flux skymap | |
| 827 | + """ | |
| 828 | + | |
| 829 | + skymap = self._get_skymap(name,'FLUX') | |
| 830 | + | |
| 831 | + return skymap | |
| 832 | + | |
| 833 | + def flux_error(self,name): | |
| 834 | + """ | |
| 835 | + Return flux error skymap | |
| 836 | + | |
| 837 | + Parameters | |
| 838 | + ---------- | |
| 839 | + name : str | |
| 840 | + Source name | |
| 841 | + | |
| 842 | + Returns | |
| 843 | + ------- | |
| 844 | + skymap : `~gammalib.GSkyMap` | |
| 845 | + Flux error skymap | |
| 846 | + """ | |
| 847 | + | |
| 848 | + skymap = self._get_skymap(name,'FLUX ERROR') | |
| 849 | + | |
| 850 | + return skymap | |
| 851 | + | |
| 852 | + def ts(self,name): | |
| 853 | + """ | |
| 854 | + Return TS skymap | |
| 855 | + | |
| 856 | + Parameters | |
| 857 | + ---------- | |
| 858 | + name : str | |
| 859 | + Source name | |
| 860 | + | |
| 861 | + Returns | |
| 862 | + ------- | |
| 863 | + skymap : `~gammalib.GSkyMap` | |
| 864 | + TS skymap | |
| 865 | + """ | |
| 866 | + | |
| 867 | + skymap = self._get_skymap(name,'TS') | |
| 868 | + | |
| 869 | + return skymap | |
| 870 | + | |
| 871 | + def ulimit(self,name): | |
| 872 | + """ | |
| 873 | + Return flux upper limit skymap | |
| 874 | + | |
| 875 | + Parameters | |
| 876 | + ---------- | |
| 877 | + name : str | |
| 878 | + Source name | |
| 879 | + | |
| 880 | + Returns | |
| 881 | + ------- | |
| 882 | + skymap : `~gammalib.GSkyMap` | |
| 883 | + Flux upper limit skymap | |
| 884 | + """ | |
| 885 | + | |
| 886 | + skymap = self._get_skymap(name,'FLUX UPPER LIMIT') | |
| 887 | + | |
| 888 | + return skymap | |
| 889 | + | |
| 768 | 890 | |
| 769 | 891 | # ======================== # |
| 770 | 892 | # Main routine entry point # | ... | ... |