def run_test_fitsexport(directory): """Run example analysis to test a fits data production hap-data-fits-export crab has to be run in order to produce the example data """ log.info('Running test analysis of fits data') from gammapy.data import DataStore from gammapy.datasets import gammapy_extra from gammapy.utils.scripts import read_yaml from gammapy.spectrum.spectrum_pipe import run_spectrum_analysis_using_config from gammapy.spectrum.results import SpectrumResult s = DataStore.from_dir(directory) print(s.info()) configfile = gammapy_extra.filename( 'test_datasets/spectrum/spectrum_analysis_example.yaml') config = read_yaml(configfile) config['extraction']['data']['datastore'] = directory config['extraction']['data']['runlist'] = [23523, 23526, 23559, 23592] fit, analysis = run_spectrum_analysis_using_config(config) res = SpectrumResult( fit=fit.result, stats=analysis.observations.total_spectrum.spectrum_stats) print(res.to_table())
def test_fill_cube(): filename = gammapy_extra.filename('test_datasets/background/bg_cube_model_test1.fits') array = Cube.read(filename, format='table', scheme='bg_cube') array.data = Quantity(np.zeros_like(array.data.value), 'u') print(type(array.data)) dir = str(gammapy_extra.dir) + '/datasets/hess-crab4-hd-hap-prod2' data_store = DataStore.from_dir(dir) ev_list = data_store.load_all('events') array.fill_events(ev_list) array.write('test_background.fits', format='image', clobber=True)
def test_fill_cube(): filename = gammapy_extra.filename( 'test_datasets/background/bg_cube_model_test1.fits') array = Cube.read(filename, format='table', scheme='bg_cube') array.data = Quantity(np.zeros_like(array.data.value), 'u') print(type(array.data)) dir = str(gammapy_extra.dir) + '/datasets/hess-crab4-hd-hap-prod2' data_store = DataStore.from_dir(dir) ev_list = data_store.load_all('events') array.fill_events(ev_list) array.write('test_background.fits', format='image', clobber=True)
def run_test_fitsexport(directory): """Run example analysis to test a fits data production hap-data-fits-export crab has to be run in order to produce the example data """ log.info('Running test analysis of fits data') from gammapy.data import DataStore from gammapy.datasets import gammapy_extra from gammapy.utils.scripts import read_yaml from gammapy.spectrum.spectrum_pipe import run_spectrum_analysis_using_config from gammapy.spectrum.results import SpectrumResult s = DataStore.from_dir(directory) print(s.info()) configfile = gammapy_extra.filename( 'test_datasets/spectrum/spectrum_analysis_example.yaml') config = read_yaml(configfile) config['extraction']['data']['datastore'] = directory config['extraction']['data']['runlist'] = [23523, 23526, 23559, 23592] fit, analysis = run_spectrum_analysis_using_config(config) res = SpectrumResult(fit=fit.result, stats=analysis.observations.total_spectrum.spectrum_stats) print(res.to_table())
"""Eventlist coordinate check. """ from gammapy.data import EventListDataset from gammapy.datasets import gammapy_extra filename = gammapy_extra.filename('test_datasets/unbundled/hess/run_0023037_hard_eventlist.fits.gz') event_list = EventListDataset.read(filename) print(event_list.info) event_list.check() """ TODO: figure out the origin of this offset: ALT / AZ not consistent with RA / DEC. Max separation: 726.6134257108188 arcsec """
""" from astropy.coordinates import SkyCoord, Angle from gammapy.datasets import gammapy_extra from gammapy.image import ExclusionMask from gammapy.data import DataStore from gammapy.region import SkyCircleRegion from gammapy.spectrum import SpectrumAnalysis from gammapy.utils.energy import EnergyBounds center = SkyCoord(83.63, 22.01, unit='deg', frame='icrs') radius = Angle('0.3 deg') on_region = SkyCircleRegion(pos=center, radius=radius) bkg_method = dict(type='reflected', n_min=3) exclusion_file = gammapy_extra.filename("datasets/exclusion_masks/" "tevcat_exclusion.fits") excl = ExclusionMask.from_fits(exclusion_file) bounds = EnergyBounds.equal_log_spacing(1, 10, 40, unit='TeV') store = gammapy_extra.filename("datasets/hess-crab4") ds = DataStore.from_dir(store) obs = [23523, 23559] ana = SpectrumAnalysis(datastore=ds, obs=obs, on_region=on_region, bkg_method=bkg_method, exclusion=excl, ebounds=bounds) ana.write_ogip_data(outdir='ogip_data')
import matplotlib.pyplot as plt from matplotlib.colors import LogNorm from astropy.units import Quantity from astropy.coordinates import Angle from gammapy.background import Cube from gammapy.datasets import gammapy_extra filename = gammapy_extra.filename('test_datasets/background/bg_cube_model_test1.fits') bg_cube_model = Cube.read(filename, format='table', scheme='bg_cube', hdu='BACKGROUND') fig, axes = plt.subplots(nrows=1, ncols=3) fig.set_size_inches(16, 5., forward=True) # plot images bg_cube_model.plot_image(energy=Quantity(0.5, 'TeV'), ax=axes[0], style_kwargs=dict(norm=LogNorm())) bg_cube_model.plot_image(energy=Quantity(50., 'TeV'), ax=axes[1], style_kwargs=dict(norm=LogNorm())) # plot spectra bg_cube_model.plot_spectrum(coord=Angle([0., 0.], 'degree'), ax=axes[2], style_kwargs=dict(label='(0, 0) deg')) bg_cube_model.plot_spectrum(coord=Angle([2., 2.], 'degree'), ax=axes[2], style_kwargs=dict(label='(2, 2) deg')) axes[2].set_title('') axes[2].legend() plt.tight_layout() plt.show()
def test_spectrum_pipe(tmpdir): configfile = gammapy_extra.filename('test_datasets/spectrum/spectrum_pipe_example.yaml') config = read_yaml(configfile) config['base_config']['general']['outdir'] = str(tmpdir) pipe = SpectrumPipe.from_config(config, auto_outdir=False) pipe.run()
from gammapy.spectrum.tests.test_extract import obs, target, bkg from gammapy.datasets import gammapy_extra from gammapy.spectrum import SpectrumExtraction import numpy as np import astropy.units as u outdir = gammapy_extra.filename("datasets/hess-crab4_pha") # Restrict energy range to what is covered by HAP exporters e_true = np.logspace(-1, 1.9, 70) * u.TeV extraction = SpectrumExtraction(obs=obs(), target=target(), background=bkg(), e_true=e_true, ) extraction.estimate_background(extraction.background) extraction.extract_spectrum() extraction.observations.write(outdir, use_sherpa=True)
from gammapy.spectrum.tests.test_extract import obs, target, bkg from gammapy.datasets import gammapy_extra from gammapy.spectrum import SpectrumExtraction import numpy as np import astropy.units as u outdir = gammapy_extra.filename("datasets/hess-crab4_pha") # Restrict energy range to what is covered by HAP exporters e_true = np.logspace(-1, 1.9, 70) * u.TeV extraction = SpectrumExtraction( obs=obs(), target=target(), background=bkg(), e_true=e_true, ) extraction.estimate_background(extraction.background) extraction.extract_spectrum() extraction.observations.write(outdir, use_sherpa=True)
""" This script illustrates how to use `~gammapy.spectrum.SpectralFit` in order to fit a model to set of OGIP data """ from gammapy.datasets import gammapy_extra from gammapy.spectrum.spectrum_analysis import SpectrumFit pha23592 = gammapy_extra.filename("datasets/hess-crab4_pha/pha_run23592.pha") pha23526 = gammapy_extra.filename("datasets/hess-crab4_pha/pha_run23526.pha") pha_list = [pha23592, pha23426] fit = SpectrumFit(pha_list) fit.model = 'PL' fit.energy_threshold_low = '100 GeV' fit.energy_threshold_high = '10 TeV' fit.run(method='sherpa')
from astropy.tests.helper import assert_quantity_allclose from gammapy.data import ObservationTable from gammapy.datasets import gammapy_extra from gammapy.spectrum import SpectrumFit, SpectrumGrouping, group_obs_table obs_table_file = gammapy_extra.filename( 'datasets/hess-crab4_pha/observation_table.fits') obs_table = ObservationTable.read(obs_table_file) fit = SpectrumFit.from_observation_table(obs_table) fit.model = 'PL' fit.energy_threshold_low = '1 TeV' fit.energy_threshold_high = '10 TeV' fit.run(method='sherpa') #Use each obs in one group obs_table1 = group_obs_table(obs_table, eff_range=[90, 95], n_eff_bin=5) obs_table1.write('grouped_table1_debug.fits', overwrite=True) grouping = SpectrumGrouping(obs_table1) grouping.run() fit_band2 = SpectrumFit.from_observation_table(grouping.stacked_obs_table) fit_band2.model = 'PL' fit_band2.energy_threshold_low = '1 TeV' fit_band2.energy_threshold_high = '10 TeV' fit_band2.run(method='sherpa') assert_quantity_allclose(fit.result.parameters["index"],
from astropy.io import fits from gammapy.datasets import gammapy_extra filename = gammapy_extra.filename('datasets/catalogs/fermi/gll_psch_v08.fit.gz') hdu = fits.open(filename)['Count Map']
"""Eventlist coordinate check. """ from gammapy.data import EventListDataset from gammapy.datasets import gammapy_extra filename = gammapy_extra.filename( 'test_datasets/unbundled/hess/run_0023037_hard_eventlist.fits.gz') event_list = EventListDataset.read(filename) print(event_list.info) event_list.check() """ TODO: figure out the origin of this offset: ALT / AZ not consistent with RA / DEC. Max separation: 726.6134257108188 arcsec """
from astropy.tests.helper import assert_quantity_allclose from gammapy.data import ObservationTable from gammapy.datasets import gammapy_extra from gammapy.spectrum import SpectrumFit, SpectrumObservationGrouping, group_obs_table obs_table_file = gammapy_extra.filename( 'datasets/hess-crab4_pha/observation_table.fits') obs_table = ObservationTable.read(obs_table_file) fit = SpectrumFit.from_observation_table(obs_table) fit.model = 'PL' fit.energy_threshold_low = '1 TeV' fit.energy_threshold_high = '10 TeV' fit.run(method='sherpa') #Use each obs in one group obs_table1 = group_obs_table(obs_table, eff_range=[90, 95], n_eff_bin=5) obs_table1.write('grouped_table1_debug.fits', overwrite=True) grouping = SpectrumObservationGrouping(obs_table1) grouping.run() fit_band2 = SpectrumFit.from_observation_table(grouping.stacked_obs_table) fit_band2.model = 'PL' fit_band2.energy_threshold_low = '1 TeV' fit_band2.energy_threshold_high = '10 TeV' fit_band2.run(method='sherpa') assert_quantity_allclose(fit.result.parameters["index"],
axes[1, 2].set_title(spec_title1) # plot normalized models on top plot_data_x, normed_pl = get_normed_pl(plot_data=axes[1, 2].get_lines()[0], E_0=E_REF, norm=NORM, index=INDEX) axes[1, 2].plot(plot_data_x, normed_pl, color='blue', linestyle='dotted', linewidth=2, label='model index = {}'.format(INDEX)) plot_data_x, normed_pl = get_normed_pl(plot_data=axes[1, 2].get_lines()[0], E_0=E_REF, norm=NORM, index=INDEX + 1) axes[1, 2].plot(plot_data_x, normed_pl, color='blue', linestyle='dashed', linewidth=2, label='model index = {}'.format(INDEX + 1)) axes[1, 2].legend() plt.show() if __name__ == '__main__': """Main function: define arguments and launch the whole analysis chain. """ input_file1 = gammapy_extra.filename('test_datasets/background/bg_cube_model_true.fits.gz') name1 = 'true' input_file2 = gammapy_extra.filename('test_datasets/background/bg_cube_model_reco.fits.gz') name2 = 'reco' plot_bg_cube_model_comparison(input_file1, name1, input_file2, name2)
from gammapy import irf from gammapy.utils.mpl_style import gammapy_mpl_style # TODO: Update once this issue is resolved: # https://github.com/astropy/astropy/issues/4140 # plt.style.use(gammapy_mpl_style) plt.rcParams.update(gammapy_mpl_style) fig, axes = plt.subplots(2, 4, figsize=(20, 8)) axes = axes.flat # TODO: event list summary plots not implemented yet: # https://github.com/gammapy/gammapy/issues/297 # hess_events_023523.fits.gz filename = gammapy_extra.filename('test_datasets/irf/hess/pa/hess_aeff_2d_023523.fits.gz') aeff2d = irf.EffectiveAreaTable2D.read(filename) aeff2d.plot_energy_dependence(ax=next(axes)) aeff2d.plot_offset_dependence(ax=next(axes)) aeff = aeff2d.to_effective_area_table(offset='1 deg') aeff.plot_area_vs_energy(ax=next(axes)) filename = gammapy_extra.filename('test_datasets/irf/hess/pa/hess_edisp_2d_023523.fits.gz') edisp2d = irf.EnergyDispersion2D.read(filename) edisp2d.plot_bias(ax=next(axes)) edisp2d.plot_migration(ax=next(axes)) edisp = edisp2d.to_energy_dispersion(offset='1 deg') edisp.plot(type='matrix', ax=next(axes))