def setup(self): path = "$GAMMAPY_DATA/joint-crab/spectra/hess/" self.datasets = Datasets( [ SpectrumDatasetOnOff.from_ogip_files(path + "pha_obs23523.fits"), SpectrumDatasetOnOff.from_ogip_files(path + "pha_obs23592.fits"), ] ) self.pwl = SkyModel( spectral_model=PowerLawSpectralModel( index=2, amplitude=1e-12 * u.Unit("cm-2 s-1 TeV-1"), reference=1 * u.TeV ) ) self.ecpl = SkyModel( spectral_model=ExpCutoffPowerLawSpectralModel( index=2, amplitude=1e-12 * u.Unit("cm-2 s-1 TeV-1"), reference=1 * u.TeV, lambda_=0.1 / u.TeV, ) ) # Example fit for one observation self.datasets[0].models = self.pwl self.fit = Fit([self.datasets[0]])
def hess_datasets(): datasets = Datasets([]) for obsid in [23523, 23526]: datasets.append( SpectrumDatasetOnOff.from_ogip_files( f"$GAMMAPY_DATA/joint-crab/spectra/hess/pha_obs{obsid}.fits")) PLmodel = PowerLawSpectralModel(amplitude="3.5e-11 cm-2s-1TeV-1", index=2.7) for dataset in datasets: dataset.models = SkyModel(spectral_model=PLmodel, name="Crab") return datasets
def test_stack_livetime(): dataset_ref = SpectrumDatasetOnOff.from_ogip_files( "$GAMMAPY_DATA/joint-crab/spectra/hess/pha_obs23523.fits" ) energy_axis = dataset_ref.counts.geom.axes["energy"] energy_axis_true = dataset_ref.exposure.geom.axes["energy_true"] dataset = SpectrumDatasetOnOff.create(e_reco=energy_axis, e_true=energy_axis_true) dataset.stack(dataset_ref) assert_allclose(dataset.exposure.meta["livetime"], 1581.736758 * u.s) dataset.stack(dataset_ref) assert_allclose(dataset.exposure.meta["livetime"], 2 * 1581.736758 * u.s)
def test_to_from_ogip_files(self, tmp_path): dataset = self.dataset.copy(name="test") dataset.to_ogip_files(outdir=tmp_path) newdataset = SpectrumDatasetOnOff.from_ogip_files(tmp_path / "pha_obstest.fits") expected_regions = compound_region_to_list(self.off_counts.geom.region) regions = compound_region_to_list(newdataset.counts_off.geom.region) assert_allclose(self.on_counts.data, newdataset.counts.data) assert_allclose(self.off_counts.data, newdataset.counts_off.data) assert_allclose(self.edisp.pdf_matrix, newdataset.edisp.pdf_matrix) assert_time_allclose(newdataset.gti.time_start, dataset.gti.time_start) assert len(regions) == len(expected_regions) assert regions[0].center.is_equivalent_frame(expected_regions[0].center) assert_allclose(regions[1].angle, expected_regions[1].angle)
def test_datasets_stack_reduce(): obs_ids = [23523, 23526, 23559, 23592] dataset_list = [] for obs in obs_ids: filename = "$GAMMAPY_DATA/joint-crab/spectra/hess/pha_obs{}.fits" ds = SpectrumDatasetOnOff.from_ogip_files(filename.format(obs)) dataset_list.append(ds) datasets = Datasets(dataset_list) stacked = datasets.stack_reduce(name="stacked") assert_allclose(stacked.livetime.to_value("s"), 6313.8116406202325) info_table = datasets.info_table() assert_allclose(info_table["n_on"], [124, 126, 119, 90]) info_table_cum = datasets.info_table(cumulative=True) assert_allclose(info_table_cum["n_on"], [124, 250, 369, 459]) assert stacked.name == "stacked"
def test_datasets_stack_reduce(): datasets = Datasets() obs_ids = [23523, 23526, 23559, 23592] for obs_id in obs_ids: filename = f"$GAMMAPY_DATA/joint-crab/spectra/hess/pha_obs{obs_id}.fits" ds = SpectrumDatasetOnOff.from_ogip_files(filename) datasets.append(ds) stacked = datasets.stack_reduce(name="stacked") assert_allclose(stacked.exposure.meta["livetime"].to_value("s"), 6313.8116406202325) info_table = datasets.info_table() assert_allclose(info_table["counts"], [124, 126, 119, 90]) info_table_cum = datasets.info_table(cumulative=True) assert_allclose(info_table_cum["counts"], [124, 250, 369, 459]) assert stacked.name == "stacked"
def test_to_from_ogip_files_no_edisp(self, tmp_path): mask_safe = RegionNDMap.from_geom(self.on_counts.geom, dtype=bool) mask_safe.data += True dataset = SpectrumDatasetOnOff( counts=self.on_counts, aeff=self.aeff, livetime=self.livetime, mask_safe=mask_safe, acceptance=1, name="test", ) dataset.to_ogip_files(outdir=tmp_path) newdataset = SpectrumDatasetOnOff.from_ogip_files(tmp_path / "pha_obstest.fits") assert_allclose(self.on_counts.data, newdataset.counts.data) assert newdataset.counts_off is None assert newdataset.edisp is None assert newdataset.gti is None
def _read_hess_obs(): path = "$GAMMAPY_DATA/joint-crab/spectra/hess/" obs1 = SpectrumDatasetOnOff.from_ogip_files(path + "pha_obs23523.fits") obs2 = SpectrumDatasetOnOff.from_ogip_files(path + "pha_obs23592.fits") return [obs1, obs2]
def crab_datasets_1d(): filename = "$GAMMAPY_DATA/joint-crab/spectra/hess/pha_obs23523.fits" dataset = SpectrumDatasetOnOff.from_ogip_files(filename) datasets = Datasets([dataset]) return datasets