============================
New Features
------------
- Start adding requirements and dependencies and use a minimum python version
of 3.8 instead of 3.7.
[`6 <https://github.com/chaimain/asgardpy/pull/6>`_]
- Start with some I/O classes and functions for DL3 and DL4 files in a ``io``
module. [`7 <https://github.com/chaimain/asgardpy/pull/7>`_]
- Start entering Fit and plot functions in ``analysis`` module.
[`11 <https://github.com/chaimain/asgardpy/pull/11>`_]
- Proposal for the initial template for the pipeline to perform the following
steps,
1. Read the various instrument DL3 files
2. Perform any and all data reductions
3. Generate Datasets for each instrument
4. Pass the list of all such Datasets to the Gammapy Fit function to get the
best-fit model
The other functionalities can be left to the user to perform without using
asgardpy. [`15 <https://github.com/chaimain/asgardpy/pull/15>`_]
- Build further the pipeline structure, by generalizing the dataset production
as 1D or 3D, let the ``DL3Files`` class be the base class for all DL3 Files
input.
Also include a release drafter template in .github folder.
[`16 <https://github.com/chaimain/asgardpy/pull/16>`_]
- Include the release-drafter in github CI workflow.
[`18 <https://github.com/chaimain/asgardpy/pull/18>`_]
- Begin preparations for adding workable scripts.
Restructure classes of Analysis Steps for creating 1/3 D datasets to only
have a single Analysis Step to be run for for each type of dataset and to
have the various components for data selection, reduction and creation of the
DL4 dataset, as a separate class which will be called when running the
particular ``AnalysisStep``.
Rename the module responsible for the ``AnalysisSteps`` of working with the
DL4 datasets, to Fit Models, Flux Points and Light Curve Estimation, to
``asgardpy.data.dl4``.
Add more configuration options for defining Background Reduction Makers, using
currently only "reflected" and "wobble" ``RegionsFinder`` methods.
Move the functions for Models assignment into ``asgardpy.data.target`` module.
Improve the method of DL3 files config input in the ``asgardpy.io`` module.
Add ``AsgardpyAnalysis`` class that handles running of all Analysis Steps,
based on the Gammapy HLI ``Analysis`` class.
[`19 <https://github.com/chaimain/asgardpy/pull/19>`_]
- Improve reading Models and assigning them to DL4 datasets, to be closer to the
functionality of Gammapy. Move all such functions to the ``target`` module.
See Issue [`29 <https://github.com/chaimain/asgardpy/issues/29>`_] for more
details.
Introduce a separate function to read Gammapy models from the ``AsgardpyConfig``
information and also to convert the Models information from XML model of
FermiTools to Gammapy standard.
Have a new object of ``AsgardpyAnalysis`` as ``final_model`` to make it
easier to read list of models before and after assignment to DL4 datasets.
[`31 <https://github.com/chaimain/asgardpy/pull/31>`_]
- Adding plotting functions into a separate module ``asgardpy.utils`` and
update the AnalaysisStep ``flux-points`` by using constant number of energy
bins per decade for each dataset, but keeping the range within each dataset's
energy axes. [`32 <https://github.com/chaimain/asgardpy/pull/32>`_]
- Start using GTI time intervals for creating DL4 datasets and ``light-curve``
analysis step. See Issue [`30 <https://github.com/chaimain/asgardpy/issues/30>`_]
for more details. [`35 <https://github.com/chaimain/asgardpy/pull/35>`_]
- Start adding example notebooks and starting with a single notebook for the
full analysis. [`37 <https://github.com/chaimain/asgardpy/pull/37>`_]
- Addition of instrument-specific spectral parameters like
``spectral_energy_range`` which can take custom energy edges as well.
[`41 <https://github.com/chaimain/asgardpy/pull/41>`_]
- Add notebooks showing each analysis step separately.
[`43 <https://github.com/chaimain/asgardpy/pull/43>`_]
API Changes
-----------
- Restructure pipeline to make it user-friendly and to follow the initiative in
the Gammapy PR [`3852 <https://github.com/gammapy/gammapy/pull/3852>`_].
See Issue [`24 <https://github.com/chaimain/asgardpy/issues/24>`_] for more
details.
Have Asgardpy follow the workflow of the HLI in Gammapy more closely, by
having a ``Config`` class and an ``Analysis`` class, named as ``AsgardpyConfig``
and ``AsgardpyAnalysis`` respectively, using ``pydantic``.
Create a Gammapy ``Registry`` for all the ``AnalysisSteps``.
Define Base classes for all Config classes and Analysis Steps, and separate
modules for defining base geometries for DL4 datasets and various dataset
reduction makers, as ``geom`` and ``reduction`` respectively.
Rename the Config ``Target_model`` to ``target`` which will contain the target
source information, required for the high-level analysis.
Extend support for various I/O options in the ``io`` module
Distinguish the 1/3 Dataset Config information with the associated Dataset
type as used in Gammapy. [`26 <https://github.com/chaimain/asgardpy/pull/26>`_]
- Start compressing the code in various processes to reduce total analysis time.
[`36 <https://github.com/chaimain/asgardpy/pull/36>`_]
- Improve the scope to add multiple exclusion regions as a list of
``RegionsConfig``, thus removing some hard-coded features.
[`45 <https://github.com/chaimain/asgardpy/pull/45>`_]
- Optimize Models assignment with additional inputs of list of dataset names and
the name of the target source, to read from either the config or the XML file.
Add a separate notebook, showing the asgardpy processes related with Models.
[`46 <https://github.com/chaimain/asgardpy/pull/46>`_]
- Update reading of Model parameters from XML file, by including the
``spectrum_type`` information as defined in the original format. This helps
for Spectral Models like Exponential Cutoff Power Law, Broken Power Law and
Super-Exponential Cutoff Power Law as used in the 4FGL catalog, where Gammapy
uses different formulae and parameter names. Resolves a part of the Issue
[`52 <https://github.com/chaimain/asgardpy/issues/52>`_].
[`53 <https://github.com/chaimain/asgardpy/pull/53>`_]
Bug Fixes
---------
- Fixes ``python_requires`` version in setup.py.
[`8 <https://github.com/chaimain/asgardpy/pull/8>`_]
- Try to fix some coding styles to avoid test errors by using isort and
suggestions from pylint. [`10 <https://github.com/chaimain/asgardpy/pull/10>`_]
- Update Changelog and fix an earlier commit change.
[`17 <https://github.com/chaimain/asgardpy/pull/17>`_]
- Fix adding exclusion regions in 3D dataset and assuming a
``CircleAnnulusSkyRegion`` to be the first exclusion region type.
[`40 <https://github.com/chaimain/asgardpy/pull/40>`_]
- Fixing assignment of Dataset models to be done in the ``analysis`` module and
not in each DL4 dataset creation module.
Check for diffuse background models before enlisting them, and perform any
additional tasks as required.
Have the model information of the target source, read from XML file, be the
first entry in the list of Models.
Correct the parameter values as defined in Fermi-XML models, by updating the
units, scaling factors, range of values, and generating a list of Gammapy
``Parameter`` objects, to then generate the respective Models object.
Add links to the Fermi-XML definitions for reference in docstrings.
Fix the condition on when to use the model information for the target source,
given in the ``AsgardpyConfig`` file or continue with the information in the
XML file. [`42 <https://github.com/chaimain/asgardpy/pull/42>`_]
- Fixing Flux Points Analysis step, to get instrument-specific flux points by
using ``instrument_spectral_info`` dict object, containing the relevant
instrument-specific information.
This information is used to sort the datasets provided for the ``flux-points``
step, with the respective energy binning and dataset names.
[`44 <https://github.com/chaimain/asgardpy/pull/44>`_]
- Cleaning of logging information and updating doc-strings.
[`47 <https://github.com/chaimain/asgardpy/pull/47>`_]
- Fix mypy check errors in default values of different variables.
[`48 <https://github.com/chaimain/asgardpy/pull/48>`_]
- Fix variable assignment issue from previous PR by using a new Config variable
``PathType`` which uses strings of paths and reads them as ``pathlib.Path``
objects. [`50 <https://github.com/chaimain/asgardpy/pull/50>`_]
- Clean the pipeline from all outputs, irrelevant comments and reference to any
private data in config files or notebooks.
[`51 <https://github.com/chaimain/asgardpy/pull/51>`_]