PIG 5 - Gammapy 1.0 roadmap#

  • Author: Axel Donath, Régis Terrier & Christoph Deil

  • Created: Sep 28, 2018

  • Accepted: Jan 31, 2019

  • Status: accepted

  • Discussion: GH 1841

Abstract#

This PIG describes the required short- and medium-term development work up to the Gammapy 1.0 release. The anticipated time scale for this development effort is 9 - 12 months and will be concluded by the Gammapy 1.0 release in fall 2019. The question of API design and sub-module structure for Gammapy 1.0 will be addressed in separate PIGs.

The content of this document was decided based upon user feedback from the first CTA data challenge (DC1), experience from analysing existing datasets as well as definition of use cases (see below). The content will be updated in the coming month and be adjusted to upcoming requirements defined by CTA. Current requirements defined by CTA are described observer access use cases (private link to slides) and in the document written summarizing the SUSS workshop Dec. 2018 (private link to indico).

Releases#

Starting in fall 2018, we will create stable releases every 2 months.

We plan to release Gammapy 1.0 in November 2019, and to add a Gammapy 0.15 release in October 2019, to support increased user testing and feedback before releasing 1.0.

Our definition of Gammapy 1.0 is that Gammapy supports the major IACT analysis use cases (spectra, maps, lightcurves) and the work outlined below has been mostly achieved.

A roadmap and release plan post Gammapy v1.0 will be discussed and written in fall 2019. One option we could envision is to continue to develop Gammapy at a rapid pace and frequent releases throughout 2020 in the v1.x series, and to create bugfix releases for v1.0 in a v1.0.x series.

  • Gammapy 0.9 in November 2018

  • Gammapy 0.10 in January 2019

  • Gammapy 0.11 in March 2019

  • Gammapy 0.12 in Mai 2019

  • Gammapy 0.13 in Juli 2019

  • Gammapy 0.14 in September 2019

  • Gammapy 0.15 in October 2019

  • Gammapy 1.0 in November 2019

There is some flexibility in the schedule within each given month. With this process we aim to enhance user feedback as well as set intermediate milestones for the development progress.

Meetings#

We plan to hold three coding sprints up to the Gammapy 1.0 release.

We plan to continue the weekly developers calls every Friday 10 am.

In addition we could start monthly Gammapy user calls, for regular user support and feedback (to be discussed). We plan to hold Gammapy workshops and tutorials at upcoming science and collaboration meetings (to be disccused).

Projects#

The actual development work will be structured in projects. Each project is tackled by a team of (at least) two developers. They take over responsibility for writing a PIG document for the project as well as take care of its actual implementation. The PIG will be written in close collaboration with the lead development team. For the implementation we recommend a workflow where typically one person works on the implementation while the other is available for discussion and code review. We have defined the following projects:

Maintenance and Code Quality#

Continue the clean up process of Gammapy. Improve code, test coverage and test quality in general. Change to a more uniform code style for tests. Reduce runtime of tests. Implement required bugfixes. Maintenance is as important as adding new features, but will be mostly taken over by experienced developers.

Improve the Gammapy development workflow. Improve developer documentation. Define GitHub labels, projects and milestones to reflect the content of the roadmap.

Documentation#

Improve documentation structure and content. Improve install instructions. Improve existing tutorial notebooks and add missing topics.

Data and Observation handling#

Implement support for good time intervals (GTIs). Simplify DL3 data access and simpify creation of custom index files. Implement support for event types.

IRFs#

Clean up and partly redesign the gammapy.irf sub-package. Implement IRF coordinate handling, unify axis handling with gammapy.maps. Evaluate the use of maps to store IRFs. Work on the IRF interface and data formats in close collaboration with ctapipe. Implement support for event types.

Maps#

Unify coordinate and unit handling in gammapy.maps. Migrate the healpix code from healpy to astropy_healpix. Finish implementation of multi-resolution maps (low priority).

Map Analysis / Data Reduction#

Unify and improve integration of background and exposure maps along the energy axes. Improve performance of the model evaluation by using bounding boxes and caching (low priority). Add support for healpix maps (low priority). Implement 3D background model creation. Better expose classical image based background methods such as ring- and adaptive ring-backround. Implement spectral points estimation with 3D analysis.

Datasets#

Implement a Dataset or Observation container class, that bundles data and reduced IRFs and is used to evaluate the likelihood. Enable joint fit across multiple datasets. Enable joint Fermi-LAT / IACT analyses.

Modeling#

Unify quantity support for model evaluation. Implement coordinate frame handling for spatial models. Implement full support of the XML I/O as well as improve the existing YAML IO. Add missing models. Implement (hierarchical) model parameter name handling and improve parameter user interface. Add support for baysian priors on model parameters. Add support for handling tied parameters.

Fitting#

Design and implement configuration and result handling. Finish implementation of the unified fitting front end in gammapy.utils.fitting. Fully support of the sherpa fitting backend. Add further fitting backends, such as scipy.optimize or emcee. Implement fitting helper and diagnosis methods to compute likelihood contours. Improve interactive handling of the fitting front end.

Event Simulation#

Implement event sampler, required for Gammapy to participate and simulate part of CTA DC2 data.

Timing Analysis#

Rewrite the current lightcurve estimation . Improve the existing Lightcurve class. Implement 3D analysis based lightcurve estimation.

High level interface#

Implement a config-file based high level analysis interface (e.g. as used in fermipy) and command line tool. It gives access to limited, pre-scripted standard analysis workflows. Alternatively the high level analysis interface could generate pre-filled Python scripts or notebooks, that can be edited and executed by users.

Papers#

We plan to write a paper on Gammapy in fall 2019, describing Gammapy v1.0.

There will be a HESS validation paper. We will support the paper with implementing required bugfixes and features on short time scales.

Authors of other papers please also get in contact with the Gammapy team and let us know about required developments.

Project Management#

This roadmap document will result in a series of subsequent PIGs, which are written and implemented by lead or contributing developers, that take responsibility for one or multiple of the projects described above. Each of those project PIGs should define a list of proposed pull requests, with preliminary milestones (version number as listed above) assigned. For each development project we will create a GitHub project and list the proposed pull requests as issues under the project. Responsibilities, updated milestones and discussion on implementation details are discussed in those issues. The general progress of the development work can be tracked using the GitHub project board.

Decision#

The PIG was discussed extensively in GH 1841, resulting in many improvements and changes. The Gammapy roadmap was accepted by the CC, after the deadline for comments elapsed January 31.