From 61af90133bc91b11da438dd4852f7b7d9a89593c Mon Sep 17 00:00:00 2001 From: Terrier Date: Fri, 6 Sep 2019 17:31:18 +0200 Subject: [PATCH 1/5] Add SpectrumDatasetOnOff.create() --- gammapy/spectrum/dataset.py | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/gammapy/spectrum/dataset.py b/gammapy/spectrum/dataset.py index a010ac1673..ff5b2a4b52 100644 --- a/gammapy/spectrum/dataset.py +++ b/gammapy/spectrum/dataset.py @@ -365,6 +365,8 @@ def create(cls, e_reco, e_true=None, reference_time="2000-01-01"): Empty containers are created with the correct geometry. counts, background and aeff are zero and edisp is diagonal. + The safe_mask is set to False in every bin. + Parameters ---------- e_reco : `~astropy.units.Quantity` @@ -552,6 +554,48 @@ def fake(self, background_model, random_state="random-seed"): npred_off.data = random_state.poisson(npred_off.data) self.counts_off = npred_off + @classmethod + def create(cls, e_reco, e_true=None, reference_time="2000-01-01"): + """Creates empty SpectrumDatasetOnOff + + Empty containers are created with the correct geometry. + counts, counts_off and aeff are zero and edisp is diagonal. + + The safe_mask is set to False in every bin. + + Parameters + ---------- + e_reco : `~astropy.units.Quantity` + edges of counts vector + e_true : `~astropy.units.Quantity` + edges of effective area table. If not set use reco energy values. Default : None + reference_time : `~astropy.time.Time` + reference time of the dataset, Default is "2000-01-01" + """ + if e_true is None: + e_true = e_reco + counts = CountsSpectrum(e_reco[:-1], e_reco[1:]) + counts_off = CountsSpectrum(e_reco[:-1], e_reco[1:]) + aeff = EffectiveAreaTable(e_true[:-1],e_true[1:], np.zeros(e_true[:-1].shape)*u.m**2) + edisp = EnergyDispersion.from_diagonal_response(e_true, e_reco) + mask_safe = np.zeros_like(counts.data, 'bool') + gti = GTI.create(u.Quantity([],'s'), u.Quantity([],'s'), reference_time) + livetime = gti.time_sum + acceptance = np.ones_like(counts.data, int) + acceptance_off = np.ones_like(counts.data, int) + + return SpectrumDatasetOnOff(counts=counts, + counts_off=counts_off, + aeff=aeff, + edisp=edisp, + mask_safe=mask_safe, + acceptance=acceptance, + acceptance_off=acceptance_off, + livetime=livetime, + gti=gti, + ) + + @classmethod def read(cls, filename): """Read from file From a55ac255902bfe438eca08a906e3d9ba52607228 Mon Sep 17 00:00:00 2001 From: Terrier Date: Fri, 6 Sep 2019 17:35:05 +0200 Subject: [PATCH 2/5] Move spectrumdataset_create at the right place --- gammapy/spectrum/tests/test_dataset.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gammapy/spectrum/tests/test_dataset.py b/gammapy/spectrum/tests/test_dataset.py index 3217b146b1..250e283cdb 100644 --- a/gammapy/spectrum/tests/test_dataset.py +++ b/gammapy/spectrum/tests/test_dataset.py @@ -122,6 +122,20 @@ def test_set_model(self): def test_str(self): assert "SpectrumDataset" in str(self.dataset) + def test_spectrumdataset_create2(self): + e_reco = u.Quantity([0.1,1,10.], 'TeV') + e_true = u.Quantity([0.05, 0.5, 5, 20.], 'TeV') + empty_dataset = SpectrumDataset.create(e_reco, e_true) + + assert empty_dataset.counts.total_counts == 0 + assert empty_dataset.data_shape[0] == 2 + assert empty_dataset.background.total_counts == 0 + assert empty_dataset.background.energy.nbin == 2 + assert empty_dataset.aeff.data.axis("energy").nbin == 3 + assert empty_dataset.edisp.data.axis("e_reco").nbin == 2 + assert empty_dataset.livetime.value == 0 + assert len(empty_dataset.gti.table) == 0 + class TestSpectrumOnOff: """ Test ON OFF SpectrumDataset""" From 44b1cfe6fbad1ea88465853b72660801bc8441e4 Mon Sep 17 00:00:00 2001 From: Terrier Date: Fri, 6 Sep 2019 17:38:34 +0200 Subject: [PATCH 3/5] Add test from SpectrumDatasetOnOff.create() --- gammapy/spectrum/tests/test_dataset.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gammapy/spectrum/tests/test_dataset.py b/gammapy/spectrum/tests/test_dataset.py index 250e283cdb..7dd270f2bd 100644 --- a/gammapy/spectrum/tests/test_dataset.py +++ b/gammapy/spectrum/tests/test_dataset.py @@ -179,6 +179,20 @@ def test_spectrumdataset_create(self): assert empty_dataset.background.energy.nbin == 2 assert empty_dataset.aeff.data.axis("energy").nbin == 3 assert empty_dataset.edisp.data.axis("e_reco").nbin == 2 + + def test_spectrumdatasetonoff_create(self): + e_reco = u.Quantity([0.1,1,10.], 'TeV') + e_true = u.Quantity([0.05, 0.5, 5, 20.], 'TeV') + empty_dataset = SpectrumDatasetOnOff.create(e_reco, e_true) + + assert empty_dataset.counts.total_counts == 0 + assert empty_dataset.data_shape[0] == 2 + assert empty_dataset.counts_off.total_counts == 0 + assert empty_dataset.counts_off.energy.nbin == 2 + assert_allclose(empty_dataset.acceptance_off,1) + assert_allclose(empty_dataset.acceptance,1) + assert empty_dataset.acceptance.shape[0] == 2 + assert empty_dataset.acceptance_off.shape[0] == 2 assert empty_dataset.livetime.value == 0 assert len(empty_dataset.gti.table) == 0 From 4ad4485f2828db9011753c1336749dd035608bbe Mon Sep 17 00:00:00 2001 From: Terrier Date: Mon, 9 Sep 2019 11:28:50 +0200 Subject: [PATCH 4/5] Further correction --- gammapy/spectrum/tests/test_dataset.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/gammapy/spectrum/tests/test_dataset.py b/gammapy/spectrum/tests/test_dataset.py index 7dd270f2bd..f2d8cd208e 100644 --- a/gammapy/spectrum/tests/test_dataset.py +++ b/gammapy/spectrum/tests/test_dataset.py @@ -168,17 +168,6 @@ def setup(self): obs_id="test", ) - def test_spectrumdataset_create(self): - e_reco = u.Quantity([0.1, 1, 10.0], "TeV") - e_true = u.Quantity([0.05, 0.5, 5, 20.0], "TeV") - empty_dataset = SpectrumDataset.create(e_reco, e_true) - - assert empty_dataset.counts.total_counts == 0 - assert empty_dataset.data_shape[0] == 2 - assert empty_dataset.background.total_counts == 0 - assert empty_dataset.background.energy.nbin == 2 - assert empty_dataset.aeff.data.axis("energy").nbin == 3 - assert empty_dataset.edisp.data.axis("e_reco").nbin == 2 def test_spectrumdatasetonoff_create(self): e_reco = u.Quantity([0.1,1,10.], 'TeV') From b7fd9633558f4583b91a14fe5a0c7d4bc7dd5cd6 Mon Sep 17 00:00:00 2001 From: Terrier Date: Mon, 9 Sep 2019 11:29:57 +0200 Subject: [PATCH 5/5] Further correction --- gammapy/spectrum/tests/test_dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gammapy/spectrum/tests/test_dataset.py b/gammapy/spectrum/tests/test_dataset.py index f2d8cd208e..b5bdbdbed8 100644 --- a/gammapy/spectrum/tests/test_dataset.py +++ b/gammapy/spectrum/tests/test_dataset.py @@ -122,7 +122,7 @@ def test_set_model(self): def test_str(self): assert "SpectrumDataset" in str(self.dataset) - def test_spectrumdataset_create2(self): + def test_spectrumdataset_create(self): e_reco = u.Quantity([0.1,1,10.], 'TeV') e_true = u.Quantity([0.05, 0.5, 5, 20.], 'TeV') empty_dataset = SpectrumDataset.create(e_reco, e_true)