Пример #1
0
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())
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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())
Пример #5
0
"""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
"""
Пример #6
0
"""

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')
Пример #7
0
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()
Пример #8
0
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()
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
"""
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')
Пример #12
0
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"],
Пример #13
0
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']
Пример #14
0
"""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
"""
Пример #15
0
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"],
Пример #16
0
        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)
Пример #17
0
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))