# 1.2 (February 29th 2024)#

Released February 29, 2024

25 contributors

215 pull requests since v1.1 (not all listed below)

69 closed issues

## Summary#

## New features#

Metadata containers have been introduced following PIG 25. Preliminary versions have been designed for most data products from DL3 to DL5. They will progressively be accessible on their

`.meta`

attributes.Parameter prior support has been introduced following PIG 26. A few

`Prior`

classes can be defined on`Parameter.prior`

and the associated log-prior is added to the total statistics during fitting.Helper functions have been added to perform computation of lifetime and total observation time maps.

A preliminary support for asymmetric IRFs has been introduced. A tutorial shows how to implement new IRF classes to support non-axisymmetric IRFs.

Improved support for temporal analysis with the addition of helper functions to quantify lightcurve variability.

New helper classes have been added to perform event sampling for a single or a set of observations:

`gammapy.datasets.ObservationEventSampler`

and`gammapy.data.ObservationsEventSampler`

.A checksum option has been added on read and write methods in Gammapy. It follows the FITS standard and reuses the astropy methods and behaviour. A checksum for yaml file has been introduced as well.

Improved support for parallel processing

*gammapy.catalogs*

Update the 4FGL catalog to include DR4.

Added 1LHAASO catalog.

*gammapy.data*

A general scheme for metadata support has been introduced. The

`Metadata`

base class has been designed according to PIG 25.Added a function to remove a time interval from a

`GTI`

.Added function to export part of a

`DataStore`

to an IVOA compliant ObsCore table.

*gammapy.makers*

Prototype support for asymmetric IRF in Gammapy’s

`Maker`

classes. A tutorial exposing how to create such IRFs has been added.

*gammapy.maps*

Implement

`TimeMapAxis.pix_to_coord()`

Implement

`TimeMapAxis.to_gti()`

*gammapy.modeling*

Added a function to determine a pivot energy for all spectral models.

Added position as a parameter for the

`TemplateSpatialModel`

. CAVEAT: results are correct only when the fitted position is close to the map center.Added Spatial parameters in FoVBackgroundModels

SkyModel evaluation now supports a TimeMapAxis

Adapt FluxPointsDataset to directly fit lightcurves

*gammapy.estimators*

Add a

`slice_by_coord()`

function on`FluxMaps`

.Introduce timing utility functions: point to point flux variance, fractional excess variance, doubling/halving times for light curves

Add optional sensitivity estimation in

`ExcessMapEstimator`

.Added support for NormSpectralModels in FluxPointsDataset / FluxPoints computations

Fit status and degrees of freedom have been added to

`FluxMaps`

.Add a dedicated

`EnergyDependentMorphologyEstimator`

as well as a tutorial demonstrating its usage.Add functionality to rebin flux points using the likelihood profiles.

GTI tables are now serialised on FluxPoints objects.

*gammapy.visualization*

Add a plot function for the distribution of

`Map`

data.

## API changes#

Source parameters are now frozen on init in

`FluxEstimator`

classes.The

`norm`

parameter is now passed as an argument to the various flux estimators.`Parameter.is_norm`

is now deprecated.The default index of

`ExpCutoffPowerlawNormSpectralModel`

has been changed to 0 for consistency with the`PowerlawNormSpectralModel`

.

## Bug fixes and improvements#

Correct

`MapDataset.info_dict()`

to use background model rather than IRF background when giving excess counts and significance.Import ray only when needed.

Added information on number of degrees of freedom on

`FluxMaps`

and`FluxPoints`

objects.Reduced memory usage of

`MapEvaluator`

and`PSFMap.get_psf_kernel()`

.Added support for multiprocessing in

`FluxProfileEstimator`

.Added multiprocessing for

`WcsNDMap`

convolution.Add a context manager for multiprocessing.

Add a faster reprojection method :

`reproject_by_image`

.Use interpolation for dark matter mass. Add Zhao profile and

`DarkMatterDecaySpectralModel`

.The asymmetric errors and upper limit calculations in

`CashCountsStatistic`

have been replaced by an equivalent analytical expression.

## Documentation#

## Contributors#

Fabio Acero

Juan Bernete

Noah Biederbeck

Julia Djuvsland

Axel Donath

Kirsty Feijen

Stefan Fröse

Claudio Galelli

Bruno Khélifi

Jana Konrad

Paula Kornecki

Maximilian Linhoff

Kurt McKee

Simone Mender

Daniel Morcuende

Laura Olivera-Nieto

Fabio Pintore

Michael Punch

Maxime Regeard

Quentin Remy

Atreyee Sinha

Hanna Stapel

Katrin Streil

Régis Terrier

Tim Unbehaun

## Pull Requests#

This list is incomplete. Small improvements and bug fixes are not listed here.

[#5044] Add stat_null computation on ParameterEstimator (Atreyee Sinha)

[#5040] Add degrees of freedom on FluxMaps (Atreyee Sinha)

[#5015] Examples of radially asymmetric IRFs (Atreyee Sinha)

[#4994] Spatial parameters in FovBackgroundModel (Katrin Streil)

[#4992] Adding a function to guess the format of a FluxPoints object for serialization (Claudio Galelli)

[#4989] Reduce memory usage of MapEvaluator (Quentin Remy)

[#4978] Support negative offset for Background2d.to_3d (Atreyee Sinha)

[#4975] Reduce memory usage of get_psf_kernel (Quentin Remy)

[#4973] Add position as a parameter for TemplateSpatialModel (Atreyee Sinha)

[#4971] Use

`FixedPointingInfo`

in notebook (Atreyee Sinha)[#4970] Adapt FluxPointsDataset to fit light curves (Atreyee Sinha)

[#4942] Parallel support for FluxProfileEstimation (Quentin Remy)

[#4940] Fix MapEvaluator for the apply_edisp=False case (Quentin Remy)

[#4937] Fix import of angular_separation for astropy 6 (Maximilian Linhoff)

[#4936] PiecewiseNormSpectralModel serialising interp (Katrin Streil)

[#4917] Add new class to directly simulate observations (Maximilian Linhoff)

[#4904] Deprecate is_norm on parameter (Quentin Remy)

[#4902] Add norm attribute to estimators and deprecate previous norm related attributes (Quentin Remy)

[#4886] Introduce hierarchical metadata structures (Régis Terrier)

[#4879] Fix energy dependent temporal model simulation (Quentin Remy)

[#4854] Notebook to sphinx-gallery script (REGEARD Maxime)

[#4851] Parallel support for WcsNDMap map convolution (Quentin Remy)

[#4850] Add utility function to split dataset into multiple datasets (Quentin Remy)

[#4849] Add TimeMapAxis.to_gti() (Atreyee Sinha)

[#4847] Variability tutorial (Claudio Galelli)

[#4845] Add context manager for multiprocessing configuration (Quentin Remy)

[#4837] Add checksum argument to gammapy products write functions (Régis Terrier)

[#4835] Management of metadata for

`Models`

(Bruno Khélifi)[#4834] Adding prior stat sum to datasets (Katrin Streil)

[#4829] Caching gti and radmax (REGEARD Maxime)

[#4828] Adapt SkyModel to evaluate on TimeMapAxis (Atreyee Sinha)

[#4822] Add a function to delete a time interval from GTI (Claudio Galelli)

[#4817] Computation of total observation time map (Atreyee Sinha)

[#4814] Introduce a function to compute the doubling/halving time for a lightcurve (Claudio Galelli)

[#4810] Adding a tutorial for observational clustering (Astro-Kirsty)

[#4808] adding

`Observations`

in memory generator (REGEARD Maxime)[#4805] Description of the arguments of the class

`Observation`

(Bruno Khélifi)[#4802] Adapt detect tutorial to include flux parameters in find peaks (Astro-Kirsty)

[#4785] Use interpolation for dark matter mass (Stefan Fröse)

[#4783] Add EnergyDependentMorphologyEstimator (Astro-Kirsty)

[#4770] Raise error if the predicted event number is too large in event sampling (Fabio PINTORE)

[#4759] Display the default model parameters in docstrings (Astro-Kirsty)

[#4753] Removes size 1 array to scalar conversion deprecation warnings from numpy (Régis Terrier)

[#4750] Support pydantic v2.0 (Axel Donath)

[#4741] Add Zhao profile (Stefan Fröse)

[#4740] Add DarkMatterDecaySpectralModel (Stefan Fröse)

[#4738] Introduce Observation metadata container (Régis Terrier)

[#4729] Change default index for NormSpectralModel (Quentin Remy)

[#4726] Introduce a function to compute the point-to-point fractional variance (Claudio Galelli)

[#4714] Replace CashCountsStatistic error calculation by analytical expression (Régis Terrier)

[#4703] Update 4FGL catalog default to DR4 (Quentin Remy)

[#4697] Deduce pointing mode from arguments in FixedPointingInfo (Maximilian Linhoff)

[#4677] Fix wcs.array_shape definition in WcsGeom.create (Quentin Remy)

[#4671] Introduce metadata base class (Régis Terrier)

[#4669] Add the progress bar for the DataStore (Bruno Khélifi)

[#4668] Multidimensional geom support in SkyModel.integrate_geom and evaluate_geom (Régis Terrier)

[#4664] Add a faster reprojection method : reproject_by_image (Quentin Remy)

[#4660] Add function to convert hermes maps to gammapy compatible format (Quentin Remy)

[#4657] Fix the FluxProfileEstimator to take into account models (Quentin Remy)

[#4638] Add a

`from_stack`

method on`Observations`

(REGEARD Maxime)[#4635] Add function to determine pivot energy for any spectral model (Astro-Kirsty)

[#4628] Match energy binning per decade to pyirf’s (JBernete)

[#4620] Adding prior class (Katrin Streil)

[#4615] Improve sensitivity example (Maximilian Linhoff)

[#4608] Add a slice_by_coord function for FluxMaps (Claudio Galelli)

[#4599] Add a SafeMaskMaker at DL3 level (Atreyee Sinha)

[#4595] Add 1LHAASO to gammapy.catalog (Quentin Remy)

[#4584] Add optional sensitivity computation in ExcessMapEstimator (Quentin Remy)

[#4574] Fixing if statements in OGIPDatasetWriter (REGEARD Maxime)

[#4567] Freeze source parameters in FluxEstimator (Régis Terrier)

[#4561] Export Datastore to Obscore table (PaulaKx)

[#4546] Remove is_ul column in FluxPointsEstimator if no upper limit is defined (Astro-Kirsty)

[#4540] Add function to extract values from FluxMaps (Astro-Kirsty)

[#4501] Exposing computation of the fractional excess variance (Claudio Galelli)

[#4491] PIG 27 - Metadata structure (Régis Terrier)

[#4485] Implement TimeMapAxis.pix_to_coord (Atreyee Sinha)

[#4432] Serialise gti table to flux points object (Atreyee Sinha)

[#4408] Add plot function for 1D distribution of map data (REGEARD Maxime)

[#4381] PIG 16 - Model Priors API (Noah Biederbeck)

[#4217] FluxPointsDataset support model with spatial template and NormSpectralModel (Quentin Remy)