def correlate_fermi_psf(image, max_offset, resolution=0.1, energy = 'None', energy_band=[10, 500]): from astropy.coordinates import Angle from astropy.units import Quantity from gammapy.datasets import FermiGalacticCenter from gammapy.irf import EnergyDependentTablePSF # Parameters filename = FermiGalacticCenter.filenames()['psf'] pixel_size = Angle(resolution, 'deg') offset_max = Angle(max_offset, 'deg') if energy == 'None': energy_band = Quantity(energy_band, 'GeV') fermi_psf = EnergyDependentTablePSF.read(filename) psf = fermi_psf.table_psf_in_energy_band(energy_band=energy_band, spectral_index=2.5) else: energy = Quantity(energy, 'GeV') fermi_psf = EnergyDependentTablePSF.read(filename) psf = fermi_psf.table_psf_at_energy(energy=energy) psf.normalize() kernel = psf.kernel(pixel_size=pixel_size, offset_max=offset_max) kernel_image = kernel.value/kernel.value.sum() # TODO: Write unit test (this will be useful): #kernel_image_integral = kernel_image.sum() * pixel_size.to('radian').value ** 2 #print('Kernel image integral: {0}'.format(kernel_image_integral)) #print('shape: {0}'.format(kernel_image.shape)) return convolve(image, kernel_image, mode='constant')
def correlate_fermi_psf(image, max_offset, resolution=0.1, energy='None', energy_band=[10, 500]): from astropy.coordinates import Angle from astropy.units import Quantity from gammapy.datasets import FermiGalacticCenter from gammapy.irf import EnergyDependentTablePSF # Parameters filename = FermiGalacticCenter.filenames()['psf'] pixel_size = Angle(resolution, 'deg') offset_max = Angle(max_offset, 'deg') if energy == 'None': energy_band = Quantity(energy_band, 'GeV') fermi_psf = EnergyDependentTablePSF.read(filename) psf = fermi_psf.table_psf_in_energy_band(energy_band=energy_band, spectral_index=2.5) else: energy = Quantity(energy, 'GeV') fermi_psf = EnergyDependentTablePSF.read(filename) psf = fermi_psf.table_psf_at_energy(energy=energy) psf.normalize() kernel = psf.kernel(pixel_size=pixel_size, offset_max=offset_max) kernel_image = kernel.value / kernel.value.sum() # TODO: Write unit test (this will be useful): #kernel_image_integral = kernel_image.sum() * pixel_size.to('radian').value ** 2 #print('Kernel image integral: {0}'.format(kernel_image_integral)) #print('shape: {0}'.format(kernel_image.shape)) return convolve(image, kernel_image, mode='constant')
def main(self, figure, subplot): filename = FermiGalacticCenter.filenames()['counts'] self.fits_figure = FITSFigure(filename, hdu=1, figure=figure, subplot=subplot) self.fits_figure.show_colorscale(vmin=1, vmax=10, cmap='afmhot') self.fits_figure.ticks.set_xspacing(2)
from gammapy.irf import EnergyDependentTablePSF from gammapy.image import make_empty_image, catalog_image, binary_disk from gammapy.image.utils import cube_to_image, solid_angle from gammapy.data import SpectralCube from gammapy.image.utils import WCS from gammapy.spectrum.flux_point import _energy_lafferty_power_law # *** PREPARATION *** # Parameters CORRELATION_RADIUS = 3 # pix SIGNIFICANCE_THRESHOLD = 5 MASK_DILATION_RADIUS = 0.3 psf_file = FermiGalacticCenter.filenames()['psf'] psf = EnergyDependentTablePSF.read(psf_file) # *** LOADING INPUT *** # Counts must be provided as a counts ImageHDU flux_file = raw_input('Flux Map: ') exposure_file = raw_input('Exposure Map: ') spec_ind = input('Spectral Index (for reprojection): ') flux_hdu = fits.open(flux_file)[1] flux_wcs = WCS(flux_hdu.header) energy_flux = Quantity([_energy_lafferty_power_law(10000, 500000, spec_ind)], 'MeV') flux_data = np.zeros((1, 1800, 3600)) flux_data[0] = Quantity(flux_hdu.data, '') flux_spec_cube = SpectralCube(data=flux_data, wcs=flux_wcs, energy=energy_flux)
from gammapy.irf import EnergyDependentTablePSF from gammapy.image import make_empty_image, catalog_image, binary_disk from gammapy.image.utils import cube_to_image, solid_angle from gammapy.data import SpectralCube from gammapy.image.utils import WCS from gammapy.spectrum.flux_point import _energy_lafferty_power_law # *** PREPARATION *** # Parameters CORRELATION_RADIUS = 3 # pix SIGNIFICANCE_THRESHOLD = 5 MASK_DILATION_RADIUS = 0.3 psf_file = FermiGalacticCenter.filenames()["psf"] psf = EnergyDependentTablePSF.read(psf_file) # *** LOADING INPUT *** # Counts must be provided as a counts ImageHDU flux_file = raw_input("Flux Map: ") exposure_file = raw_input("Exposure Map: ") spec_ind = input("Spectral Index (for reprojection): ") flux_hdu = fits.open(flux_file)[1] flux_wcs = WCS(flux_hdu.header) energy_flux = Quantity([_energy_lafferty_power_law(10000, 500000, spec_ind)], "MeV") flux_data = np.zeros((1, 1800, 3600)) flux_data[0] = Quantity(flux_hdu.data, "") flux_spec_cube = SpectralCube(data=flux_data, wcs=flux_wcs, energy=energy_flux)
from gammapy.irf import EnergyDependentTablePSF from gammapy.image import make_empty_image, catalog_image, binary_disk from gammapy.image.utils import cube_to_image, solid_angle from gammapy.data import SpectralCube from gammapy.image.utils import WCS from gammapy.spectrum.flux_point import _energy_lafferty_power_law # *** PREPARATION *** # Parameters CORRELATION_RADIUS = 3 # pix SIGNIFICANCE_THRESHOLD = 5 MASK_DILATION_RADIUS = 0.3 psf_file = FermiGalacticCenter.filenames()['psf'] psf = EnergyDependentTablePSF.read(psf_file) # *** LOADING INPUT *** # Counts must be provided as a counts ImageHDU flux_file = raw_input('Flux Map: ') exposure_file = raw_input('Exposure Map: ') spec_ind = input('Spectral Index (for reprojection): ') flux_hdu = fits.open(flux_file)[1] flux_wcs = WCS(flux_hdu.header) energy_flux = Quantity([_energy_lafferty_power_law(10000, 500000, spec_ind)], 'MeV') flux_data = np.zeros((1, 101, 2001)) flux_data[0] = Quantity(flux_hdu.data, '') flux_spec_cube = SpectralCube(data=flux_data, wcs=flux_wcs, energy=energy_flux)
"""Test npred model image computation. """ from astropy.coordinates import Angle from gammapy.datasets import FermiGalacticCenter from gammapy.utils.energy import EnergyBounds from gammapy.irf import EnergyDependentTablePSF from gammapy.cube import SkyCube, compute_npred_cube, convolve_cube filenames = FermiGalacticCenter.filenames() flux_cube = SkyCube.read(filenames['diffuse_model']) exposure_cube = SkyCube.read(filenames['exposure_cube']) psf = EnergyDependentTablePSF.read(filenames['psf']) flux_cube = flux_cube.reproject_to(exposure_cube) energy_bounds = EnergyBounds([10, 30, 100, 500], 'GeV') npred_cube = compute_npred_cube(flux_cube, exposure_cube, energy_bounds) offset_max = Angle(1, 'deg') npred_cube_convolved = convolve_cube(npred_cube, psf, offset_max)
def main(self, figure, subplot): filename = FermiGalacticCenter.filenames()['counts'] self.fits_figure = FITSFigure(filename, hdu=1, figure=figure, subplot=subplot) self.fits_figure.show_colorscale(vmin=1, vmax=10, cmap='afmhot') self.fits_figure.ticks.set_xspacing(2)
def main(self, figure, box): filename = FermiGalacticCenter.filenames()['counts'] self.fits_figure = FITSFigure(filename, figure=figure, subplot=box) self.fits_figure.show_colorscale(vmin=1, vmax=10)