{ "cells": [ { "cell_type": "markdown", "id": "8cb3f07c", "metadata": { "tags": [] }, "source": [ "# Spectral fitting example (GRB)" ] }, { "cell_type": "markdown", "id": "8f37244c", "metadata": {}, "source": [ "**To run this, you need the following files, which can be downloaded using the first few cells of this notebook:**\n", "- orientation file (20280301_3_month_with_orbital_info.fits) \n", "- binned data (grb_binned_data.hdf5 & bkg_binned_data_1s_local.hdf5) \n", "- detector response (SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.h5) \n", "\n", "**The binned data are simulations of GRB090206620 and albedo photon background produced using the COSI SMEX mass model.**" ] }, { "cell_type": "markdown", "id": "b39db505", "metadata": {}, "source": [ "This notebook fits the spectrum of a GRB simulated using MEGAlib and combined with background. The data are binned in inertial coordinates, which only works for short-duration transients such as GRBs. See the Crab spectral fitting tutorial for a more comprehensive description of the spectral analysis method." ] }, { "cell_type": "code", "execution_count": 1, "id": "90ad8f0e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
16:12:11 WARNING   The naima package is not available. Models that depend on it will not be         functions.py:43\n",
       "                  available                                                                                        \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m16:12:11\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m The naima package is not available. Models that depend on it will not be \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305810;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/astromodels/functions/functions_1D/functions.py\u001b\\\u001b[2mfunctions.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305811;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/astromodels/functions/functions_1D/functions.py#43\u001b\\\u001b[2m43\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[38;5;46m \u001b[0m \u001b[1;38;5;251mavailable \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   The GSL library or the pygsl wrapper cannot be loaded. Models that depend on it  functions.py:65\n",
       "                  will not be available.                                                                           \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m The GSL library or the pygsl wrapper cannot be loaded. Models that depend on it \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305817;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/astromodels/functions/functions_1D/functions.py\u001b\\\u001b[2mfunctions.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305818;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/astromodels/functions/functions_1D/functions.py#65\u001b\\\u001b[2m65\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[38;5;46m \u001b[0m \u001b[1;38;5;251mwill not be available. \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   The ebltable package is not available. Models that depend on it will not be     absorption.py:33\n",
       "                  available                                                                                        \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m The ebltable package is not available. Models that depend on it will not be \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305825;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/astromodels/functions/functions_1D/absorption.py\u001b\\\u001b[2mabsorption.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305826;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/astromodels/functions/functions_1D/absorption.py#33\u001b\\\u001b[2m33\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[38;5;46m \u001b[0m \u001b[1;38;5;251mavailable \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
16:12:12 INFO      Starting 3ML!                                                                     __init__.py:44\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m16:12:12\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;49mINFO \u001b[0m \u001b[1;38;5;251m Starting 3ML! \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305833;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305834;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py#44\u001b\\\u001b[2m44\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   WARNINGs here are NOT errors                                                      __init__.py:45\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m WARNINGs here are \u001b[0m\u001b[1;31mNOT\u001b[0m\u001b[1;38;5;251m errors \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305840;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305841;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py#45\u001b\\\u001b[2m45\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   but are inform you about optional packages that can be installed                  __init__.py:46\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m but are inform you about optional packages that can be installed \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305847;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305848;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py#46\u001b\\\u001b[2m46\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING    to disable these messages, turn off start_warning in your config file            __init__.py:47\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m \u001b[0m\u001b[1;31m to disable these messages, turn off start_warning in your config file\u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305854;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305855;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py#47\u001b\\\u001b[2m47\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   ROOT minimizer not available                                                minimization.py:1208\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m ROOT minimizer not available \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305862;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/minimizer/minimization.py\u001b\\\u001b[2mminimization.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305863;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/minimizer/minimization.py#1208\u001b\\\u001b[2m1208\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   Multinest minimizer not available                                           minimization.py:1218\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m Multinest minimizer not available \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305869;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/minimizer/minimization.py\u001b\\\u001b[2mminimization.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305870;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/minimizer/minimization.py#1218\u001b\\\u001b[2m1218\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   PyGMO is not available                                                      minimization.py:1228\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m PyGMO is not available \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305876;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/minimizer/minimization.py\u001b\\\u001b[2mminimization.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305877;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/minimizer/minimization.py#1228\u001b\\\u001b[2m1228\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   Could not import plugin FermiLATLike.py. Do you have the relative instrument     __init__.py:126\n",
       "                  software installed and configured?                                                               \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m Could not import plugin FermiLATLike.py. Do you have the relative instrument \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305883;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305884;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py#126\u001b\\\u001b[2m126\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[38;5;46m \u001b[0m \u001b[1;38;5;251msoftware installed and configured? \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   No fermitools installed                                              lat_transient_builder.py:44\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m No fermitools installed \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305891;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/utils/data_builders/fermi/lat_transient_builder.py\u001b\\\u001b[2mlat_transient_builder.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305892;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/utils/data_builders/fermi/lat_transient_builder.py#44\u001b\\\u001b[2m44\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   Env. variable OMP_NUM_THREADS is not set. Please set it to 1 for optimal         __init__.py:335\n",
       "                  performances in 3ML                                                                              \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m Env. variable OMP_NUM_THREADS is not set. Please set it to \u001b[0m\u001b[1;37m1\u001b[0m\u001b[1;38;5;251m for optimal \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305898;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305899;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py#335\u001b\\\u001b[2m335\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[38;5;46m \u001b[0m \u001b[1;38;5;251mperformances in 3ML \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   Env. variable MKL_NUM_THREADS is not set. Please set it to 1 for optimal         __init__.py:335\n",
       "                  performances in 3ML                                                                              \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m Env. variable MKL_NUM_THREADS is not set. Please set it to \u001b[0m\u001b[1;37m1\u001b[0m\u001b[1;38;5;251m for optimal \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305904;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305905;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py#335\u001b\\\u001b[2m335\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[38;5;46m \u001b[0m \u001b[1;38;5;251mperformances in 3ML \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   Env. variable NUMEXPR_NUM_THREADS is not set. Please set it to 1 for optimal     __init__.py:335\n",
       "                  performances in 3ML                                                                              \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m \u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m Env. variable NUMEXPR_NUM_THREADS is not set. Please set it to \u001b[0m\u001b[1;37m1\u001b[0m\u001b[1;38;5;251m for optimal \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305910;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305911;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/__init__.py#335\u001b\\\u001b[2m335\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[38;5;46m \u001b[0m \u001b[1;38;5;251mperformances in 3ML \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from cosipy import BinnedData\n", "from cosipy.spacecraftfile import SpacecraftHistory\n", "from cosipy.response.FullDetectorResponse import FullDetectorResponse\n", "from cosipy.util import fetch_wasabi_file\n", "\n", "from cosipy.statistics import PoissonLikelihood\n", "from cosipy.background_estimation import FreeNormBinnedBackground\n", "from cosipy.interfaces import ThreeMLPluginInterface\n", "from cosipy.response import BinnedThreeMLModelFolding, BinnedInstrumentResponse, BinnedThreeMLPointSourceResponse\n", "from cosipy.data_io import EmCDSBinnedData\n", "\n", "import sys\n", "\n", "import astropy.units as u\n", "from astropy.time import Time\n", "from astropy.stats import poisson_conf_interval\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from threeML import Band, PointSource, Model, JointLikelihood, DataList\n", "from astromodels import Parameter, Powerlaw\n", "\n", "from pathlib import Path\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "f19d1cd6", "metadata": {}, "source": [ "## Download and read in binned data" ] }, { "cell_type": "markdown", "id": "13c7a807", "metadata": {}, "source": [ "Define the path to the directory containing the data, detector response, orientation file, and yaml files if they have already been downloaded, or the directory to download the files into" ] }, { "cell_type": "code", "execution_count": 2, "id": "a5064ee2", "metadata": {}, "outputs": [], "source": [ "data_path = Path(\"\") # /path/to/files. Current dir by default" ] }, { "cell_type": "markdown", "id": "efda3f7e", "metadata": {}, "source": [ "Download the orientation file (684.38 MB)" ] }, { "cell_type": "code", "execution_count": 3, "id": "56c5d6e6", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "A file named 20280301_3_month_with_orbital_info.fits already exists with the specified checksum (5e69bc1d55fab9390f90635690f62896). Skipping.\n" ] } ], "source": [ "fetch_wasabi_file('COSI-SMEX/DC3/Data/Orientation/20280301_3_month_with_orbital_info.fits', output=str(data_path / '20280301_3_month_with_orbital_info.fits'), checksum = '5e69bc1d55fab9390f90635690f62896')" ] }, { "cell_type": "markdown", "id": "7aa9d355", "metadata": {}, "source": [ "Download the binned GRB data (76.90 KB)" ] }, { "cell_type": "code", "execution_count": 4, "id": "e1e6b68d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "A file named grb_binned_data.hdf5 already exists with the specified checksum (fcf7022369b6fb378d67b780fc4b5db8). Skipping.\n" ] } ], "source": [ "fetch_wasabi_file('COSI-SMEX/cosipy_tutorials/grb_spectral_fit_local_frame/grb_binned_data.hdf5', output=str(data_path / 'grb_binned_data.hdf5'), checksum = 'fcf7022369b6fb378d67b780fc4b5db8')\n" ] }, { "cell_type": "markdown", "id": "d658d5ad", "metadata": {}, "source": [ "Download the binned background data (255.97 MB)" ] }, { "cell_type": "code", "execution_count": 5, "id": "7645cccb", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "A file named bkg_binned_data_1s_local.hdf5 already exists with the specified checksum (b842a7444e6fc1a5dd567b395c36ae7f). Skipping.\n" ] } ], "source": [ "fetch_wasabi_file('COSI-SMEX/cosipy_tutorials/grb_spectral_fit_local_frame/bkg_binned_data_1s_local.hdf5', output=str(data_path / 'bkg_binned_data_1s_local.hdf5'), checksum = 'b842a7444e6fc1a5dd567b395c36ae7f')" ] }, { "cell_type": "markdown", "id": "04fe3d75", "metadata": {}, "source": [ "Download the response file (596.06 MB)" ] }, { "cell_type": "code", "execution_count": 6, "id": "0807d49a", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "A file named SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.h5 already exists with the specified checksum (eb72400a1279325e9404110f909c7785). Skipping.\n" ] } ], "source": [ "fetch_wasabi_file('COSI-SMEX/cosipy_tutorials/Data/Responses/SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.h5', output=str(data_path / 'SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.h5'), checksum = 'eb72400a1279325e9404110f909c7785')" ] }, { "cell_type": "markdown", "id": "3bf22e57", "metadata": {}, "source": [ "Read in the spacecraft orientation file & select the beginning and end times of the GRB" ] }, { "cell_type": "code", "execution_count": 7, "id": "8fe2c80b", "metadata": {}, "outputs": [], "source": [ "tmin = Time(1842597410.0, format='unix')\n", "tmax = Time(1842597450.0, format='unix')\n", "sc_orientation = SpacecraftHistory.open(data_path / \"20280301_3_month_with_orbital_info.fits\", tmin, tmax)\n", "sc_orientation = sc_orientation.select_interval(tmin, tmax) # Function changed name during refactoring" ] }, { "cell_type": "markdown", "id": "9a7fbcc9", "metadata": {}, "source": [ "Create BinnedData objects for the GRB only and background only. The GRB only simulation is not used for the spectral fit, but can be used to compare the fitted spectrum to the source simulation" ] }, { "cell_type": "code", "execution_count": 8, "id": "e70fb69f", "metadata": {}, "outputs": [], "source": [ "grb = BinnedData(data_path / \"grb.yaml\")\n", "bkg = BinnedData(data_path / \"background.yaml\")" ] }, { "cell_type": "markdown", "id": "44bc64e6", "metadata": {}, "source": [ "Load binned .hdf5 files" ] }, { "cell_type": "code", "execution_count": 9, "id": "87c1cee5", "metadata": {}, "outputs": [], "source": [ "grb.load_binned_data_from_hdf5(binned_data=data_path / \"grb_binned_data.hdf5\")\n", "bkg.load_binned_data_from_hdf5(binned_data=data_path / \"bkg_binned_data_1s_local.hdf5\")" ] }, { "cell_type": "markdown", "id": "7155d7c0", "metadata": {}, "source": [ "Define the path to the detector response" ] }, { "cell_type": "code", "execution_count": 10, "id": "ea2c7a7e", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "A file named SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.h5 already exists with the specified checksum (eb72400a1279325e9404110f909c7785). Skipping.\n" ] } ], "source": [ "dr_path = data_path / \"SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.h5\" # path to detector response\n", "fetch_wasabi_file(\n", " 'COSI-SMEX/cosipy_tutorials/Data/Responses/SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.h5',\n", " output=str(dr_path),\n", " checksum='eb72400a1279325e9404110f909c7785')\n", "\n", "dr = FullDetectorResponse.open(dr_path)" ] }, { "cell_type": "markdown", "id": "224bb49c", "metadata": { "tags": [] }, "source": [ "## Perform spectral fit" ] }, { "cell_type": "markdown", "id": "e7f94a21", "metadata": {}, "source": [ "Define time window of binned background simulation to use for background model" ] }, { "cell_type": "code", "execution_count": 11, "id": "438c5473", "metadata": {}, "outputs": [], "source": [ "bkg_tmin = 1842597310.0\n", "bkg_tmax = 1842597550.0\n", "bkg_min = np.where(bkg.binned_data.axes['Time'].edges.value == bkg_tmin)[0][0]\n", "bkg_max = np.where(bkg.binned_data.axes['Time'].edges.value == bkg_tmax)[0][0]\n", "bkg_dist = bkg.binned_data.slice[{'Time': slice(bkg_min, bkg_max)}].project('Em', 'Phi', 'PsiChi')\n", "\n", "# Workaround to avoid inf values. Out bkg should be smooth, but currently it's not.\n", "# Reproduces results before refactoring. It's not _exactly_ the same, since this fudge value was 1e-12, and\n", "# it was added to the expectation, not the normalized bkg\n", "bkg_dist += sys.float_info.min" ] }, { "cell_type": "markdown", "id": "863bf057", "metadata": {}, "source": [ "Find the overlap between binned background simulation and the grb signal" ] }, { "cell_type": "code", "execution_count": 12, "id": "ac162ea8", "metadata": {}, "outputs": [], "source": [ "bkg_overlap_tmin = 1842597410.0\n", "bkg_overlap_tmax = 1842597450.0\n", "\n", "bkg_overlap_min, bkg_overlap_max = np.searchsorted(bkg.binned_data.axes['Time'].edges.value,\n", " (bkg_overlap_tmin, bkg_overlap_tmax), side='left')\n", "\n", "bkg_overlap = bkg.binned_data.slice[{'Time': slice(bkg_overlap_min, bkg_overlap_max)}]" ] }, { "cell_type": "markdown", "id": "c70c507b", "metadata": {}, "source": [ "Set background parameter, which is used to fit the amplitude of the background, and instantiate the COSI 3ML plugin" ] }, { "cell_type": "code", "execution_count": 13, "id": "bb640c5d", "metadata": {}, "outputs": [], "source": [ "# Wrap the raw BinnedData objects into the appropiate data interface.\n", "data = EmCDSBinnedData(grb.binned_data.project('Em', 'Phi', 'PsiChi') + bkg_overlap.project('Em', 'Phi', 'PsiChi'))\n", "\n", "# Use the background model to initialize a background expectation interface.\n", "# For this particular background interface implementation, only the normalization values are free.\n", "bkg_model = FreeNormBinnedBackground(bkg_dist,\n", " sc_history=sc_orientation,\n", " copy = False)\n", "\n", "instrument_response = BinnedInstrumentResponse(dr, data)\n", "\n", "# Currently using the same NnuLambda, Ei and Pol axes as the underlying FullDetectorResponse,\n", "# matching the behavior of v0.3. This is all the current BinnedInstrumentResponse can do.\n", "# In principle, this can be decoupled, and a BinnedInstrumentResponseInterface implementation\n", "# can provide the response for an arbitrary directions, Ei and Pol values.\n", "# NOTE: this is currently only implemented for data in local coords\n", "psr = BinnedThreeMLPointSourceResponse(data = data,\n", " instrument_response = instrument_response,\n", " sc_history=sc_orientation,\n", " energy_axis = dr.axes['Ei'],\n", " polarization_axis = dr.axes['Pol'] if 'Pol' in dr.axes.labels else None,\n", " nside = 2*data.axes['PsiChi'].nside)\n", "\n", "response = BinnedThreeMLModelFolding(data = data, point_source_response = psr)\n", "\n", "like_fun = PoissonLikelihood(data, response, bkg_model)\n", "\n", "cosi = ThreeMLPluginInterface('cosi',\n", " like_fun,\n", " response,\n", " bkg_model)\n", "\n", "# Nuisance parameter guess, bounds, etc.\n", "cosi.bkg_parameter['bkg_norm'] = Parameter(\"bkg_norm\", # background parameter\n", " 1,\n", " unit = u.Hz,# initial value of parameter\n", " min_value=0, # minimum value of parameter\n", " max_value=50, # maximum value of parameter\n", " delta=1e-3, # initial step used by fitting engine\n", " )" ] }, { "cell_type": "markdown", "id": "ccef9f70", "metadata": {}, "source": [ "Define a point source at the known location with a Band function spectrum and add it to the model" ] }, { "cell_type": "code", "execution_count": 14, "id": "78339955", "metadata": {}, "outputs": [], "source": [ "# Set model to fit\n", "l = 93.\n", "b = -53.\n", "\n", "alpha = -1\n", "beta = -3\n", "xp = 450. * u.keV\n", "piv = 500. * u.keV\n", "K = 1 / u.cm / u.cm / u.s / u.keV\n", "\n", "spectrum = Band()\n", "\n", "spectrum.alpha.value = alpha\n", "\n", "spectrum.beta.value = beta\n", "spectrum.beta.min_value = -20.0\n", "spectrum.beta._value = 0\n", "\n", "spectrum.xp.value = xp.value\n", "spectrum.xp.min_value = 1e1\n", "spectrum.xp._value = 1e4\n", "\n", "spectrum.K.value = K.value\n", "spectrum.K.min_value = 1e-4\n", "spectrum.K._value = 1\n", "\n", "spectrum.piv.value = piv.value\n", "spectrum.xp.unit = xp.unit\n", "spectrum.K.unit = K.unit\n", "spectrum.piv.unit = piv.unit\n", "\n", "source = PointSource(\"source\", # Name of source (arbitrary, but needs to be unique)\n", " l=l, # Longitude (deg)\n", " b=b, # Latitude (deg)\n", " spectral_shape=spectrum) # Spectral model\n", "\n", "model = Model(source) # Model with single source. If we had multiple sources, we would do Model(source1, source2, ...)" ] }, { "cell_type": "markdown", "id": "335b57bf", "metadata": {}, "source": [ "Gather all plugins and combine with the model in a JointLikelihood object, then perform maximum likelihood fit" ] }, { "cell_type": "code", "execution_count": 15, "id": "f67d1c61", "metadata": { "scrolled": true, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
16:12:19 INFO      set the minimizer to minuit                                             joint_likelihood.py:1017\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m16:12:19\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;49mINFO \u001b[0m \u001b[1;38;5;251m set the minimizer to minuit \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=10305918;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/classicMLE/joint_likelihood.py\u001b\\\u001b[2mjoint_likelihood.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=10305919;file:///Users/imartin5/software/miniforge3/envs/cosipy_test/lib/python3.12/site-packages/threeML/classicMLE/joint_likelihood.py#1017\u001b\\\u001b[2m1017\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Best fit values:\n",
       "\n",
       "
\n" ], "text/plain": [ "\u001b[1;4;38;5;49mBest fit values:\u001b[0m\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
resultunit
parameter
source.spectrum.main.Band.K(3.08 -0.20 +0.21) x 10^-21 / (keV s cm2)
source.spectrum.main.Band.alpha(-2.8 +/- 0.5) x 10^-1
source.spectrum.main.Band.xp(4.75 +/- 0.05) x 10^2keV
source.spectrum.main.Band.beta-6.8 +/- 1.2
bkg_norm5.7 +/- 0.4Hz
\n", "
" ], "text/plain": [ " result unit\n", "parameter \n", "source.spectrum.main.Band.K (3.08 -0.20 +0.21) x 10^-2 1 / (keV s cm2)\n", "source.spectrum.main.Band.alpha (-2.8 +/- 0.5) x 10^-1 \n", "source.spectrum.main.Band.xp (4.75 +/- 0.05) x 10^2 keV\n", "source.spectrum.main.Band.beta -6.8 +/- 1.2 \n", "bkg_norm 5.7 +/- 0.4 Hz" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
       "Correlation matrix:\n",
       "\n",
       "
\n" ], "text/plain": [ "\n", "\u001b[1;4;38;5;49mCorrelation matrix:\u001b[0m\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
1.000.97-0.370.19-0.00
0.971.00-0.160.17-0.00
-0.37-0.161.00-0.17-0.02
0.190.17-0.171.000.00
-0.00-0.00-0.020.001.00
" ], "text/plain": [ " 1.00 0.97 -0.37 0.19 -0.00\n", " 0.97 1.00 -0.16 0.17 -0.00\n", "-0.37 -0.16 1.00 -0.17 -0.02\n", " 0.19 0.17 -0.17 1.00 0.00\n", "-0.00 -0.00 -0.02 0.00 1.00" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
       "Values of -log(likelihood) at the minimum:\n",
       "\n",
       "
\n" ], "text/plain": [ "\n", "\u001b[1;4;38;5;49mValues of -\u001b[0m\u001b[1;4;38;5;49mlog\u001b[0m\u001b[1;4;38;5;49m(\u001b[0m\u001b[1;4;38;5;49mlikelihood\u001b[0m\u001b[1;4;38;5;49m)\u001b[0m\u001b[1;4;38;5;49m at the minimum:\u001b[0m\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
-log(likelihood)
cosi42872.42721812606
total42872.42721812606
\n", "
" ], "text/plain": [ " -log(likelihood)\n", "cosi 42872.42721812606\n", "total 42872.42721812606" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
       "Values of statistical measures:\n",
       "\n",
       "
\n" ], "text/plain": [ "\n", "\u001b[1;4;38;5;49mValues of statistical measures:\u001b[0m\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
statistical measures
AIC85754.85465327073
BIC85807.50390507511
\n", "
" ], "text/plain": [ " statistical measures\n", "AIC 85754.85465327073\n", "BIC 85807.50390507511" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 3.59 s, sys: 614 ms, total: 4.21 s\n", "Wall time: 4.17 s\n" ] } ], "source": [ "%%time\n", "\n", "plugins = DataList(cosi) # If we had multiple instruments, we would do e.g. DataList(cosi, lat, hawc, ...)\n", "\n", "like = JointLikelihood(model, plugins, verbose = False)\n", "\n", "_ = like.fit()" ] }, { "cell_type": "markdown", "id": "bcdff7dc", "metadata": {}, "source": [ "## Error propagation and plotting" ] }, { "cell_type": "markdown", "id": "b52939bb", "metadata": {}, "source": [ "Define Band function spectrum injected into MEGAlib" ] }, { "cell_type": "code", "execution_count": 16, "id": "bcabdfd4", "metadata": {}, "outputs": [], "source": [ "alpha_inj = -0.360\n", "beta_inj = -11.921\n", "E0_inj = 288.016 * u.keV\n", "xp_inj = E0_inj * (alpha_inj + 2)\n", "piv_inj = 1. * u.keV\n", "K_inj = 0.283 / u.cm / u.cm / u.s / u.keV\n", "\n", "spectrum_inj = Band()\n", "\n", "spectrum_inj.beta.min_value = -15.0\n", "\n", "spectrum_inj.alpha.value = alpha_inj\n", "spectrum_inj.beta.value = beta_inj\n", "spectrum_inj.xp.value = xp_inj.value\n", "spectrum_inj.K.value = K_inj.value\n", "spectrum_inj.piv.value = piv_inj.value\n", "\n", "spectrum_inj.xp.unit = xp_inj.unit\n", "spectrum_inj.K.unit = K_inj.unit\n", "spectrum_inj.piv.unit = piv_inj.unit" ] }, { "cell_type": "markdown", "id": "4bf3adae", "metadata": {}, "source": [ "The summary of the results above tell you the optimal values of the parameters, as well as the errors. Propogate the errors to the \"evaluate_at\" method of the spectrum" ] }, { "cell_type": "code", "execution_count": 17, "id": "de3ccfc2", "metadata": { "scrolled": true, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
Best fit values:\n",
       "\n",
       "
\n" ], "text/plain": [ "\u001b[1;4;38;5;49mBest fit values:\u001b[0m\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
resultunit
parameter
source.spectrum.main.Band.K(3.08 -0.20 +0.21) x 10^-21 / (keV s cm2)
source.spectrum.main.Band.alpha(-2.8 +/- 0.5) x 10^-1
source.spectrum.main.Band.xp(4.75 +/- 0.05) x 10^2keV
source.spectrum.main.Band.beta-6.8 +/- 1.2
bkg_norm5.7 +/- 0.4Hz
\n", "
" ], "text/plain": [ " result unit\n", "parameter \n", "source.spectrum.main.Band.K (3.08 -0.20 +0.21) x 10^-2 1 / (keV s cm2)\n", "source.spectrum.main.Band.alpha (-2.8 +/- 0.5) x 10^-1 \n", "source.spectrum.main.Band.xp (4.75 +/- 0.05) x 10^2 keV\n", "source.spectrum.main.Band.beta -6.8 +/- 1.2 \n", "bkg_norm 5.7 +/- 0.4 Hz" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
       "Correlation matrix:\n",
       "\n",
       "
\n" ], "text/plain": [ "\n", "\u001b[1;4;38;5;49mCorrelation matrix:\u001b[0m\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
1.000.97-0.370.19-0.00
0.971.00-0.160.17-0.00
-0.37-0.161.00-0.17-0.02
0.190.17-0.171.000.00
-0.00-0.00-0.020.001.00
" ], "text/plain": [ " 1.00 0.97 -0.37 0.19 -0.00\n", " 0.97 1.00 -0.16 0.17 -0.00\n", "-0.37 -0.16 1.00 -0.17 -0.02\n", " 0.19 0.17 -0.17 1.00 0.00\n", "-0.00 -0.00 -0.02 0.00 1.00" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
       "Values of -log(likelihood) at the minimum:\n",
       "\n",
       "
\n" ], "text/plain": [ "\n", "\u001b[1;4;38;5;49mValues of -\u001b[0m\u001b[1;4;38;5;49mlog\u001b[0m\u001b[1;4;38;5;49m(\u001b[0m\u001b[1;4;38;5;49mlikelihood\u001b[0m\u001b[1;4;38;5;49m)\u001b[0m\u001b[1;4;38;5;49m at the minimum:\u001b[0m\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
-log(likelihood)
cosi42872.42721812606
total42872.42721812606
\n", "
" ], "text/plain": [ " -log(likelihood)\n", "cosi 42872.42721812606\n", "total 42872.42721812606" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
       "Values of statistical measures:\n",
       "\n",
       "
\n" ], "text/plain": [ "\n", "\u001b[1;4;38;5;49mValues of statistical measures:\u001b[0m\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
statistical measures
AIC85754.85465327073
BIC85807.50390507511
\n", "
" ], "text/plain": [ " statistical measures\n", "AIC 85754.85465327073\n", "BIC 85807.50390507511" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n", " * source (point source):\n", " * position:\n", " * l:\n", " * value: 93.0\n", " * desc: Galactic longitude\n", " * min_value: 0.0\n", " * max_value: 360.0\n", " * unit: deg\n", " * is_normalization: false\n", " * b:\n", " * value: -53.0\n", " * desc: Galactic latitude\n", " * min_value: -90.0\n", " * max_value: 90.0\n", " * unit: deg\n", " * is_normalization: false\n", " * equinox: J2000\n", " * spectrum:\n", " * main:\n", " * Band:\n", " * K:\n", " * value: 0.030757567915552834\n", " * desc: Differential flux at the pivot energy\n", " * min_value: 0.0001\n", " * max_value: null\n", " * unit: keV-1 s-1 cm-2\n", " * is_normalization: true\n", " * alpha:\n", " * value: -0.27735646992706436\n", " * desc: low-energy photon index\n", " * min_value: -1.5\n", " * max_value: 3.0\n", " * unit: ''\n", " * is_normalization: false\n", " * xp:\n", " * value: 475.40777156110084\n", " * desc: peak in the x * x * N (nuFnu if x is a energy)\n", " * min_value: 10.0\n", " * max_value: null\n", " * unit: keV\n", " * is_normalization: false\n", " * beta:\n", " * value: -6.787957718487137\n", " * desc: high-energy photon index\n", " * min_value: -20.0\n", " * max_value: -1.6\n", " * unit: ''\n", " * is_normalization: false\n", " * piv:\n", " * value: 500.0\n", " * desc: pivot energy\n", " * min_value: null\n", " * max_value: null\n", " * unit: keV\n", " * is_normalization: false\n", " * polarization: {}\n", "\n" ] } ], "source": [ "results = like.results\n", "\n", "print(results.display())\n", "\n", "parameters = {par.name:results.get_variates(par.path)\n", " for par in results.optimized_model[\"source\"].parameters.values()\n", " if par.free}\n", "\n", "results_err = results.propagate(results.optimized_model[\"source\"].spectrum.main.shape.evaluate_at, **parameters)\n", "\n", "print(results.optimized_model[\"source\"])" ] }, { "cell_type": "markdown", "id": "a1355b6e", "metadata": {}, "source": [ "Evaluate the flux and errors at a range of energies for the fitted and injected spectra, and the simulated source flux" ] }, { "cell_type": "code", "execution_count": 18, "id": "9cbe7c20", "metadata": {}, "outputs": [], "source": [ "energy = np.geomspace(100*u.keV,10*u.MeV).to_value(u.keV)\n", "\n", "flux_lo = np.zeros_like(energy)\n", "flux_median = np.zeros_like(energy)\n", "flux_hi = np.zeros_like(energy)\n", "flux_inj = np.zeros_like(energy)\n", "\n", "for i, e in enumerate(energy):\n", " flux = results_err(e)\n", " flux_median[i] = flux.median\n", " flux_lo[i], flux_hi[i] = flux.equal_tail_interval(cl=0.68)\n", " flux_inj[i] = spectrum_inj.evaluate_at(e)\n", " \n", "binned_energy_edges = grb.binned_data.axes['Em'].edges.value\n", "binned_energy = np.array([])\n", "bin_sizes = np.array([])\n", "\n", "for i in range(len(binned_energy_edges)-1):\n", " binned_energy = np.append(binned_energy, (binned_energy_edges[i+1] + binned_energy_edges[i]) / 2)\n", " bin_sizes = np.append(bin_sizes, binned_energy_edges[i+1] - binned_energy_edges[i])\n", "\n", "expectation = response.expectation()" ] }, { "cell_type": "markdown", "id": "184bcd78", "metadata": {}, "source": [ "Plot the fitted and injected spectra" ] }, { "cell_type": "code", "execution_count": 19, "id": "bc6b8ced", "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,ax = plt.subplots()\n", "\n", "ax.plot(energy, energy*energy*flux_median, label = \"Best fit\")\n", "ax.fill_between(energy, energy*energy*flux_lo, energy*energy*flux_hi, alpha = .5, label = \"Best fit (errors)\")\n", "ax.plot(energy, energy*energy*flux_inj, color = 'black', ls = \":\", label = \"Injected\")\n", "\n", "ax.set_xscale(\"log\")\n", "ax.set_yscale(\"log\")\n", "\n", "ax.set_xlabel(\"Energy (keV)\")\n", "ax.set_ylabel(r\"$E^2 \\frac{dN}{dE}$ (keV cm$^{-2}$ s$^{-1}$)\")\n", "\n", "_ = ax.legend()" ] }, { "cell_type": "code", "execution_count": 20, "id": "e748b53b", "metadata": {}, "outputs": [], "source": [ "def compute_errors(counts):\n", " gaussian_error = np.zeros(len(counts))\n", " poisson_error = np.zeros((2, len(counts)))\n", "\n", " hi_mask = (counts > 5)\n", " gaussian_error[hi_mask] = np.sqrt(counts[hi_mask])\n", " poisson_error[:,~hi_mask] = poisson_conf_interval(counts[~hi_mask], interval=\"frequentist-confidence\", sigma=1)\n", "\n", " return gaussian_error, poisson_error" ] }, { "cell_type": "markdown", "id": "8984de35", "metadata": {}, "source": [ "Plot the fitted spectrum convolved with the response, as well as the simulated source counts" ] }, { "cell_type": "code", "execution_count": 21, "id": "fea4749b", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "em_inj = grb.binned_data.project('Em').to_dense(copy=False).contents\n", "em_fit = expectation.project('Em').to_dense(copy=False).contents\n", "\n", "fit_gaussian_error, fit_poisson_error = compute_errors(em_fit)\n", "inj_gaussian_error, inj_poisson_error = compute_errors(em_inj)\n", "\n", "fig,ax = plt.subplots()\n", "\n", "ax.stairs(expectation.project('Em').to_dense(copy=False).contents, binned_energy_edges, color='purple', label = \"Best fit convolved with response\")\n", "ax.errorbar(binned_energy, expectation.project('Em').to_dense(copy=False).contents, yerr=fit_poisson_error, color='purple', linewidth=0, elinewidth=1)\n", "ax.errorbar(binned_energy, expectation.project('Em').to_dense(copy=False).contents, yerr=fit_gaussian_error, color='purple', linewidth=0, elinewidth=1)\n", "ax.stairs(grb.binned_data.project('Em').to_dense(copy=False).contents, binned_energy_edges, color = 'black', ls = \":\", label = \"Source counts\")\n", "ax.errorbar(binned_energy, grb.binned_data.project('Em').to_dense(copy=False).contents, yerr=fit_poisson_error, color='black', linewidth=0, elinewidth=1)\n", "ax.errorbar(binned_energy, grb.binned_data.project('Em').to_dense(copy=False).contents, yerr=fit_gaussian_error, color='black', linewidth=0, elinewidth=1)\n", "\n", "ax.set_xscale(\"log\")\n", "ax.set_yscale(\"log\")\n", "\n", "ax.set_xlabel(\"Energy (keV)\")\n", "ax.set_ylabel(\"Counts\")\n", "\n", "_ = ax.legend()" ] }, { "cell_type": "markdown", "id": "eaa331ed", "metadata": {}, "source": [ "Plot the fitted spectrum convolved with the response plus the fitted background, as well as the simulated source+background counts" ] }, { "cell_type": "code", "execution_count": 22, "id": "bace668f", "metadata": {}, "outputs": [ { "data": { "image/png": "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IiJyekyIiIiIyOkxISIiIiKnx4SIiIiInB4TIiIiInJ6TIiIiIjI6TEhIiIiIqfHhIiIiIicHhMiIiIicnpMiIiIrsHq1avRq1cvpKSkWG775ptvcPPNN2u0B1999ZWuKp6QkGD0oRDZLSZERGQhX+ryRV7WRRZspItOnz6N9957DwMHDrQsVGkrv/zyi57/Rx999Ipl//3vf2vZb7/9Vrf79+8Pf39/vPnmm3zriEpRo7Q7iMh5NWrUCLfcckuJ93l6elb68dhz7dCpU6dw11132fy5rr/+ek1qdu7cibS0NL1eElktfNu2bfo+SVIkatSooYnsokWL8Oeff+K6666z+fESORomRERUYkJ033338cyU4fz589oUJcmFnC9bq169OgYMGIAVK1Zg/fr1GD16dInlNm3ahIKCAq21qlWrluX23r1747XXXsPnn3/OhIioBGwyI6JrIrUQDz74II4fP45nn30WgwcPRp8+fTBx4kTs3r27xMfk5eXhnXfewd///nctK1/e0hS0Z8+ey8rKvuU55Ev+rbfewsiRI9GzZ099vNnWrVsxfvx43dfQoUPxwgsvaHOW1IoUbeJ7+umndV/R0dElHteyZcv0fkkqrGnCysrK0r451kpPT9dERo7z+++/t9x+4sQJLF68WGuaJHGRc/jkk0/i4MGDxR4v56latWraN8lkMpX4HOvWrdM4aNCgYrd7e3ujXbt2+rxy/omoOCZERHTNpJlmypQpOHToEPr27atJRWxsLB577LHLvtSliWnSpEla0+Hl5aUJjJQ/cOAApk+frs09JZk9e7bWjMiX+h133GHps/P111/rfUePHkW/fv20v8y+ffvwyCOPaC1OUUOGDLE85lKFhYWaTNStW9fS1FQWaboSLVu2tOocybmZPHmyJkUvvviiJZFKTk7GuHHj8Mknn6Bhw4a4/fbb0alTJ0245DwVTd4CAgLQoUMHHDt2rMRkU871/v37ERERgWbNml12vxzr2bNnsXfvXquOmciZsMmMiC4jX9JFa2Au/VK98cYbi90WHx+P2267DQ899JA27Yj27dtrTc2nn36qiZHZK6+8gsTERMyYMQO33nprsVoSqeWRZOGGG24o1twjpDZm+fLlqFOnjuU2qQV69dVXUbt2bSxduhSNGzfW22U/8pySlEkSYdamTRs0bdoUmzdvxtSpU/Vx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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "expectation_bkg = bkg_model.expectation(copy = True)\n", "\n", "fit_bkg_gaussian_error, fit_bkg_poisson_error = compute_errors(expectation.project('Em').to_dense(copy=False).contents + expectation_bkg.project('Em').to_dense(copy=False).contents)\n", "inj_bkg_gaussian_error, inj_bkg_poisson_error = compute_errors(data.data.project('Em').to_dense(copy=False).contents)\n", "\n", "fig,ax = plt.subplots()\n", "ax.stairs(expectation.project('Em').to_dense(copy=False).contents + expectation_bkg.project('Em').to_dense(copy=False).contents, binned_energy_edges, color='purple', label = \"Best fit convolved with response plus background\")\n", "ax.errorbar(binned_energy, expectation.project('Em').to_dense(copy=False).contents+expectation_bkg.project('Em').to_dense(copy=False).contents, yerr=fit_bkg_poisson_error, color='purple', linewidth=0, elinewidth=1)\n", "ax.errorbar(binned_energy, expectation.project('Em').to_dense(copy=False).contents+expectation_bkg.project('Em').to_dense(copy=False).contents, yerr=fit_bkg_gaussian_error, color='purple', linewidth=0, elinewidth=1)\n", "ax.stairs(data.data.project('Em').to_dense(copy=False).contents, binned_energy_edges, color = 'black', ls = \":\", label = \"Total counts\")\n", "ax.errorbar(binned_energy, data.data.project('Em').to_dense(copy=False).contents, yerr=inj_bkg_poisson_error, color='black', linewidth=0, elinewidth=1)\n", "ax.errorbar(binned_energy, data.data.project('Em').to_dense(copy=False).contents, yerr=inj_bkg_gaussian_error, color='black', linewidth=0, elinewidth=1)\n", "\n", "\n", "ax.set_xscale(\"log\")\n", "ax.set_yscale(\"log\")\n", "\n", "ax.set_xlabel(\"Energy (keV)\")\n", "ax.set_ylabel(\"Counts\")\n", "\n", "ax.legend()\n", "\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:cosipy_test]", "language": "python", "name": "conda-env-cosipy_test-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.13" } }, "nbformat": 4, "nbformat_minor": 5 }