0.17 (Apr 1, 2020)#


  • Released April 1, 2020

  • 8 contributors

  • 81 pull requests (not all listed below)

What’s new?#

Gammapy v0.17 comes with new important features, an improved sub-package structure and a more uniform API. Again this release contains several API breaking changes and removal of non-essential parts of Gammapy. These changes are required to finally arrive at a more consistent and stable API for Gammapy v1.0.

The main feature introduces in Gammapy v0.17 is event sampling. Based on the newly introduced MapDatasetEventSampler class, event lists can be sampled from a MapDataset object. The use of this class is shown in a dedicated event sampling tutorial. Gammapy v0.17 now supports simulation and fitting of temporal models. Both are demonstrated in the lightcurve simulation tutorial. A more general introduction to modeling and fitting in Gammapy is now available as a modeling and fitting tutorial.

Following the proposal in PIG 19 the sub-package structure of Gammapy was unified. Instead of grouping the main functionality by use-case it is now grouped by abstractions and data levels. For this all Dataset classes were moved to the newly introduced gammapy.datasets. All Maker classes for data reduction from the DL3 to the DL4 data level were moved to the new gammapy.makers sub-package and all high level Estimator classes were moved to the new gammapy.estimators. In addition a gammapy.visualization module was introduced to group plotting related functionality into a single namespace. The gammapy.cube, gammapy.spectrum and gammapy.detect modules were removed.

With the introduction of the gammapy.estimators sub-package the API of all Estimator classes was unified. The Dataset objects are now always passed to the .run() methods. A new ExcessMapEstimator was introduced, which replaces the former compute_lima_map functions and also computes maps of upper limits as well as asymmetric flux errors. The TSMapEstimator now takes into account PSF information automatically and uses SkyModel as kernel configuration.

For Gammapy v0.17 the model handling was further improved and unified. The separate background_model argument was removed from the MapDataset. Background models can now be specified as part of the general model definition. For this a BackgroundModel.datasets_names attribute was introduced which allows to declare to which dataset the model belongs. The application of PSF and energy dispersion can now be configured per model component using the newly introduced SkyModel.apply_irf and SkyDiffuseCube.apply_irf keywords. A new GaussianTemporalModel and ExpDecayTemporalModel were introduced.

A new Covariance class was introduced and the covariance information was moved from the Parameters object to a .covariance attribute on all Model and Models objects. The covariance and is now automatically set after Fit.covariance() was called.

To unify and clean up statistical calculations CountsStatistics classes we introduced in gammapy.stats which allow calculation of excess, background, significance, errors, asymmetric errors and upper limits. The gammapy.stats.poisson module has been removed as well as the significance_lima methods.

To further unify the data structures for 1D and 3D analyses a RegionGeom and RegionNDMap were introduced in gammapy.maps. These region based map classes are now used for the SpectrumDataset and SpectrumDatasetOnOff. The previously used CountsSpectrum class was removed.


In alphabetical order by first name:

  • Atreyee Sinha

  • Axel Donath

  • Brigitta Sipocz

  • Fabio Pintore

  • José Enrique Ruiz

  • Luca Giunti

  • 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.17 merged pull requests list on GitHub.

  • [#2846] Add more meta data keywords for sampled event lists (Fabio Pintore)

  • [#2841] Clean up model parameter handling (Axel Donath)

  • [#2845] Add Background3D plotting methods (Atreyee Sinha)

  • [#2842] Clean up gammapy.stats (Régis Terrier)

  • [#2839] Improve stats documentation (Régis Terrier)

  • [#2837] Improve Background2D visualisation (Atreyee Sinha)

  • [#2832] Implement EDispKernelMap (Axel Donath)

  • [#2829] Add event sampling tutorial (Fabio Pintore)

  • [#2828] Add notebook for light curve simulation (Atreyee Sinha)

  • [#2827] Improve covariance handling / implement Covariance class (Axel Donath)

  • [#2823] Add temporal evaluation for spectral datasets (Atreyee Sinha)

  • [#2822] Refactor model serialisation code (Quentin Remy)

  • [#2820] Rename LiMaMapEstimator to ExcessMapEstimator (Régis Terrier)

  • [#2818] Fix background serialization (Quentin Remy)

  • [#2817] Remove SpectrumEvaluator class (Axel Donath)

  • [#2816] Remove RegionGeom.energy_mask() (Axel Donath)

  • [#2815] Remove CountsSpectrum class (Axel Donath)

  • [#2812] Add ring background estimation in high level interface (José Enrique Ruiz)

  • [#2811] Fix confidence interval range in CountsStatistic class (Régis Terrier)

  • [#2810] Implement FluxEstimator (Régis Terrier)

  • [#2809] Add sampling of temporal models to event sampler (Fabio Pintore)

  • [#2808] Add temporal model evaluation (Atreyee Sinha)

  • [#2805] Move LightcurveEstimator to gammapy.estimators (Axel Donath)

  • [#2804] Remove gammapy.cube sub package (Axel Donath)

  • [#2803] Remove gammapy.spectrum sub package (Axel Donath)

  • [#2802] Remove gammapy.detect sub package (Axel Donath)

  • [#2801] Support SpectrumDataset in FluxPointsEstimator (Régis Terrier)

  • [#2799] Implement option to sample background only (Fabio Pintore)

  • [#2798] Support aeff-max safe energy threshold for MapDataset (Luca Giunti)

  • [#2797] Remove KernelBackgroundEstimator class (Axel Donath)

  • [#2796] Change beta sign in SmoothBrokenPowerLawSpectralModel (Quentin Remy)

  • [#2794] Refactor catalog registry (Axel Donath)

  • [#2793] Add notebooks test to azure pipelines (Axel Donath)

  • [#2792] Introduce gammapy.visualization sub-package (Axel Donath)

  • [#2791] Introduce gammapy.estimators and ParameterEstimator class (Axel Donath)

  • [#2790] Introduce gammapy.makers sub package (Axel Donath)

  • [#2789] Move irf maps to gammapy/irf (Axel Donath)

  • [#2788] Introduce gammapy.datasets submodule (Axel Donath)

  • [#2787] Add TemporalModel integral method (Atreyee Sinha)

  • [#2785] Datasets names follow up (Axel Donath)

  • [#2784] Implement naming convention for true energy axis (Axel Donath)

  • [#2783] Add __call__ method to TemporalModel (Atreyee Sinha)

  • [#2782] Add datasets_names attribute to cube models (Quentin Remy)

  • [#2781] Fix Jacobian factor in PSFMap.sample_coord() (Fabio Pintore)

  • [#2779] Add exclusion mask tutorial (Régis Terrier)

  • [#2778] Implement RegionGeom and RegionNDMap (Axel Donath)

  • [#2777] Add SkyModel.apply_irf and SkyDiffuseCube.apply_irf (Quentin Remy)

  • [#2776] Add support for FoVBackground on the HLI (Régis Terrier)

  • [#2775] Implement CountsStatistics classes (Régis Terrier)

  • [#2772] Add region serialization on CountsSpectrum (Régis Terrier)

  • [#2771] Set DM primary flux to zero beyond particle mass energy (José Enrique Ruiz)

  • [#2768] Refactor map dataset background model (Axel Donath)

  • [#2767] Implement self synchrotron compton for NaimaModel (Quentin Remy)

  • [#2765] Clean up container classes (Axel Donath)

  • [#2764] Add modeling and fitting tutorial notebook (Quentin Remy)

  • [#2762] Implement SignificanceMapEstimator (Régis Terrier)

  • [#2761] Implement LazyFitsData descriptor (Axel Donath)

  • [#2759] Fix osx travis build (Brigitta Sipocz)

  • [#2720] PIG 19 - Package structure follow up (Axel Donath)