0.18 (Nov 4th, 2020)#
Summary#
Released November 4, 2020
15 contributors
160 pull requests (not all listed below)
What’s new?#
Gammapy v0.18 comes with many new features, further unified API, bug fixes and improved performance.
For Gammapy v0.18 the handling of the instrumental background was refactored
by introducing a FoVBackgroundModel
which is specific to each MapDataset
.
Instead of relying on the previous BackgroundModel
, which coupled
the map template and spectral parameters, the information is now split such that
MapDataset.background
contains the map template and the FoVBackgroundModel
the corresponding parameters, respectively. The model corrected background can now be
accessed via MapDataset.npred_background()
. By default the un-corrected
background map is now added to the predicted counts. The consistent behaviour
has been implemented on the MapDatasetOnOff
.
The FoVBackgroundModel
has support for a spectral_model
argument, which
allows different background corrections using different “norm” spectral models
(see below).
The definition of the quantities defined on MapDataset
and MapDatasetOnOff
as well as the corresponding attributes on the CountsStatistics
has been
improved in the stats definition table Notations.
Many additional methods to modify the data have been added to the MapDataset
and SpectrumDataset
. This includes .downsample()
, .pad()
,
.resample_energy_axis()
, .slice_by_energy()
.slice_by_idx()
.
The models definition in the dataset is now reset consistently in all of the
listed methods. The information returned by .info_dict()
has been
unified. The information contained in .meta_table
is now handled correctly
during stacking of datasets.
Following the proposal in PIG 21 Gammapy v0.18 comes with many improvements
to the gammapy.modeling.models
sub-package. This includes the introduction
of “norm” spectral models, which are multiplicative models to used with spatial
and spectral template or parametric models. Among those are a
PowerLawNormSpectralModel
, LogParabolaNormSpectralModel
and
PiecewiseNormSectralModel
. The EBL absorption was refactored
accordingly to an EBLAbsorptionNormSpectralModel
. A new
GeneralizedGaussianSpatialModel
and BrokenPowerlawSpectralModel
have been introduced.
Gammapy v0.18 comes now with support for custom energy dependent spatial models.
An example for this can be found in the models tutorial.
The SkyDiffuseCube
has been removed, the same functionality can now be
achieved with the TemplateSpatialModel
. Following the proposal in
PIG 21, short YAML tags were introduced for all models. An overview of the
tags can be found in a table in the linked PIG document.
For Gammapy v0.18 the stacking behaviour of the EDispKernelMap
was fixed.
it now handles safe energy threshold for stacked analyses correctly.
The MapDataset.edisp
attribute has been changed to this class by default.
The IRFStacker
class has been removed.
The Estimator`
API has been homogenized, in particular, they now support
the definition of energy edges on init. This means light-curves, excess maps,
excess profiles and ts maps can be computed in energy bins with the same API.
The LightCurveEstimator
was refactored to rely on the same algorithm
as the FluxPointsEstimator
. It now also fits the data in the provided
energy range.
The Map
class now supports boolean and comparator operations, such as
>,<,&,|
etc. . A convenience Map.interp_to_geom()
has been added.
A Fit.stat_surface()
method was introduced which allows to compute a
fit statistic surface. In addition an option to store the trace of the fit was
added. Both are demonstrated in dedicated sections in the
modeling and fitting tutorial.
Following the proposal in PIG 19, the gammapy.time
sub-package was removed.
All functionality related to light curves can be found in gammapy.estimators
.
The Feldman-Cousins method has been removed from the gammapy.stats
.
Gammapy v0.18 comes with an improved performance related to caching the computation of predicted counts and caching of psf convolution. In Gammapy v0.18 the support for Numpy<1.17 had been dropped.
Contributors#
In alphabetical order by first name:
Alexis de Almeida Coutinho
Atreyee Sinha
Axel Donath
Bruno Khelifi
Cosimo Nigro
Fabio Acero
Fabio Pintore
Jalel Hajlaoui
José Enrique Ruiz
Laura Olivera Nieto
Lea Jouvin
Luca Giunti
Max Noethe
Quentin Remy
Régis Terrier
Pull requests#
This list is incomplete. Small improvements and bug fixes are not listed here.
See the complete Gammapy v0.18 merged pull requests list on GitHub.
[#3106] Remove default FoVBackgroundModel (Axel Donath)
[#3100] Simplify EBL absorption spectral model (Quentin Remy)
[#3092] Update energy naming convention (Fabio Pintore)
[#3091] Implement Dataset.slice_by_energy (Axel Donath)
[#3089] Introduce DatasetModels class and global model (Axel Donath)
[#3088] Allowing Estimators norm parameter to be negative (Régis Terrier)
[#3086] Stats background convention (Axel Donath)
[#3085] Remove feldman cousins method (Axel Donath)
[#3083] Example of energy dependent spatial model (Atreyee Sinha)
[#3081] Unify axis ordering in gammapy.irf (Atreyee Sinha)
[#3080] Remove significance and replace with sqrt_ts (Régis Terrier)
[#3076] Introduce MapDataset.geoms property (Axel Donath)
[#3074] Implement option to store fit trace to Fit (Axel Donath)
[#3072] Allow to apply PSF in reconstructed energy (Axel Donath)
[#3070] Remove intervals option from integrate_spectrum() (Axel Donath)
[#3069] Remove pre-processing from Fermi tutorial (Axel Donath)
[#3063] Add PiecewiseNormSpectralModel (Quentin Remy)
[#3060] Remove code duplication between MapDataset and SpectrumDataset (Axel Donath)
[#3058] Clean up MapDataset mask handling (Axel Donath)
[#3054] Unify dataset info dicts (Axel Donath)
[#3053] Add bkg systematics condition for the sensitivity computation (Bruno Khelifi)
[#3052] Adapt LightCurveEstimator to take energy edges (Régis Terrier)
[#3051] Introduce dataset specific FoVBackgroundModel (Axel Donath)
[#3045] Add temporal models to model gallery (Jalel Hajlaoui)
[#3042] Refactor SpectrumDataset to use exposure (Axel Donath)
[#3041] Add SpectralModel.integral_error (Fabio Pintore)
[#3039] Use MapAxis in gammapy.irf consistently (Axel Donath)
[#3038] Implement Fit.stat_surface() method (Luca Giunti)
[#3037] Add generalized gaussian model (Quentin Remy)
[#3035] Update Numpy to 1.17 (Axel Donath)
[#3032] Introduce MapAxes object (Axel Donath)
[#3030] Fix inconsistency between EventList.stack() and GTI.stack() (Laura Olivera Nieto)
[#3012] Replace SkyDiffuseCube by TemplateSpatialModel (Quentin Remy)
[#3007] Support Map based IRFs in MapDatasetMaker (Laura Olivera Nieto)
[#3005] Allow custom spectral models corrections for BackgroundModel (Quentin Remy)
[#3002] Implement PSFMap.from_gaussian (Laura Olivera Nieto)
[#3001] Improve the datasets plot/peek interface (Alexis de Almeida Coutinho)
[#2999] Add e_edges to AsmoothMapEstimator (Axel Donath)
[#2998] Add e_edges to ExcessMapEstimator (Régis Terrier)
[#2993] Reuse FluxPointsEstimator in LightCurveEstimator (Axel Donath)
[#2992] Implement WcsNDMap.to_region_nd_map() (Axel Donath)
[#2991] Implement energy slicing for FluxPointsEstimator (Axel Donath)
[#2990] Optional exposure map for the EdispMap and PSF in the MapDataset (Laura Olivera Nieto)
[#2984] Change SpectrumDataset.aeff to RegionNDMap (Axel Donath)
[#2981] Add basic NormSpectralModels (Quentin Remy)
[#2976] Fix filename handling in read/write methods (Alexis de Almeida Coutinho)
[#2974] Implement meta table stacking (Axel Donath)
[#2967] Allow for varying energy range between datasets in FluxPointEstimator (Axel Donath)
[#2966] Implement MapDataset.slice_by_idx (Axel Donath)
[#2965] Add Map.to_cube() (Atreyee Sinha)
[#2956] Implement MapDataset.downsample() and MapDataset.pad() (Axel Donath)
[#2951] Implement Map.resample_axis() method (Axel Donath)
[#2950] Remove IRFStacker class (Axel Donath)
[#2948] Add ExcessProfileEstimator class (Bruno Khelifi)
[#2947] Improve spectral residuals plot (Luca Giunti)
[#2945] PSF-convolved spatial model caching in MapEvaluator (Quentin Remy)
[#2944] PIG 21 - Model framework improvements (Axel Donath)
[#2943] Add BrokenPowerLawSpectralModel (Quentin Remy)
[#2939] Add theta squared plot example (Léa Jouvin)
[#2938] Add shorter tags for models (Quentin Remy)
[#2932] Fix plot_spectrum_datasets_off_regions and add more options (Alexis de Almeida Coutinho)
[#2931] Remove gammapy.time sub-package (Axel Donath)
[#2929] Add meta_table to SpectrumDataset (Fabio Pintore)
[#2927] Introduce Maker and Estimator base classes and registries (Axel Donath)
[#2924] Add meta_table to MapDataset (Fabio Pintore)
[#2912] Cache npred in MapEvaluator (Quentin Remy)
[#2907] Add info_dict to MapDataset (Atreyee Sinha)
[#2903] Add multi-dimension support for RegionGeom (Régis Terrier)
[#2897] Change to EDispKernelMap in MapDataset (Régis Terrier)
[#2896] Add pyproject.toml (Max Noethe)
[#2891] Modify SpectrumDataset.create() to take MapAxis arguments (Régis Terrier)
[#2885] Add comparators on Map (Régis Terrier)
[#2874] Fix IRFMap stacking (Régis Terrier)
[#2872] Fix MCMC position spread (Fabio Acero)