{ "cells": [ { "cell_type": "markdown", "id": "74a86fb5-4e54-4e3f-b349-3e60fbdd0279", "metadata": { "tags": [] }, "source": [ "# Spectral fitting example (Crab)" ] }, { "cell_type": "markdown", "id": "e7df3443-3ce1-43f3-90b5-1bceb7bc9af0", "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.ori) \n", "- binned data (crab_bkg_binned_data.hdf5, crab_binned_data.hdf5, & bkg_binned_data.hdf5) \n", "- detector response (SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.nonsparse_nside8.area.good_chunks_unzip.h5.zip) \n", "\n", "**The binned data are simulations of the Crab Nebula and albedo photon background produced using the COSI SMEX mass model. The detector response needs to be unzipped before running the notebook.**" ] }, { "cell_type": "markdown", "id": "ba543558-7de9-494c-8b72-8cdd368676e9", "metadata": {}, "source": [ "This notebook fits the spectrum of a Crab simulated using MEGAlib and combined with background.\n", "\n", "[3ML](https://threeml.readthedocs.io/) is a high-level interface that allows multiple datasets from different instruments to be used coherently to fit the parameters of source model. A source model typically consists of a list of sources with parametrized spectral shapes, sky locations and, for extended sources, shape. Polarization is also possible. A \"coherent\" analysis, in this context, means that the source model parameters are fitted using all available datasets simultanously, rather than performing individual fits and finding a well-suited common model a posteriori. \n", "\n", "In order for a dataset to be included in 3ML, each instrument needs to provide a \"plugin\". Each plugin is responsible for reading the data, convolving the source model (provided by 3ML) with the instrument response, and returning a likelihood. In our case, we'll compute a binned Poisson likelihood:\n", "\n", "$$\n", "\\log \\mathcal{L}(\\mathbf{x}) = \\sum_i \\log \\frac{\\lambda_i(\\mathbf{x})^{d_i} \\exp (-\\lambda_i)}{d_i!}\n", "$$\n", "\n", "where $d_i$ are the counts on each bin and $\\lambda_i$ are the expected counts given a source model with parameters $\\mathbf{x}$. \n", "\n", "In this example, we will fit a single point source with a known location. We'll assume the background is known and fixed up to a scaling factor. Finally, we will fit a Band function:\n", "\n", "$$\n", "f(x) = K \\begin{cases} \\left(\\frac{x}{E_{piv}}\\right)^{\\alpha} \\exp \\left(-\\frac{(2+\\alpha)\n", " * x}{x_{p}}\\right) & x \\leq (\\alpha-\\beta) \\frac{x_{p}}{(\\alpha+2)} \\\\ \\left(\\frac{x}{E_{piv}}\\right)^{\\beta}\n", " * \\exp (\\beta-\\alpha)\\left[\\frac{(\\alpha-\\beta) x_{p}}{E_{piv}(2+\\alpha)}\\right]^{\\alpha-\\beta}\n", " * &x>(\\alpha-\\beta) \\frac{x_{p}}{(\\alpha+2)} \\end{cases}\n", "$$\n", "\n", "where $K$ (normalization), $\\alpha$ & $\\beta$ (spectral indeces), and $x_p$ (peak energy) are the free parameters, while $E_{piv}$ is the pivot energy which is fixed (and arbitrary).\n", "\n", "Considering these assumptions:\n", "\n", "$$\n", "\\lambda_i(\\mathbf{x}) = B*b_i + s_i(\\mathbf{x})\n", "$$\n", "\n", "where $B*b_i$ are the estimated counts due to background in each bin with $B$ the amplitude and $b_i$ the shape of the background, and $s_i$ are the corresponding expected counts from the source, the goal is then to find the values of $\\mathbf{x} = [K, \\alpha, \\beta, x_p]$ and $B$ that maximize $\\mathcal{L}$. These are the best estimations of the parameters.\n", "\n", "The final module needs to also fit the time-dependent background, handle multiple point-like and extended sources, as well as all the spectral models supported by 3ML. Eventually, it will also fit the polarization angle. However, this simple example already contains all the necessary pieces to do a fit." ] }, { "cell_type": "code", "execution_count": 1, "id": "ce42ab82-3bbd-4729-8f84-a4e32eb3bb24", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
11:14:38 WARNING   The naima package is not available. Models that depend on it will not be         functions.py:48\n",
       "                  available                                                                                        \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:14:38\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=535691;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/functions/functions_1D/functions.py\u001b\\\u001b[2mfunctions.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=713279;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/functions/functions_1D/functions.py#48\u001b\\\u001b[2m48\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:69\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=513794;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/functions/functions_1D/functions.py\u001b\\\u001b[2mfunctions.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=648032;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/functions/functions_1D/functions.py#69\u001b\\\u001b[2m69\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": [ "
11:14:40 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;46m11:14:40\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=20217;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/functions/functions_1D/absorption.py\u001b\\\u001b[2mabsorption.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=757941;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/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": [ "
11:14:41 INFO      Starting 3ML!                                                                     __init__.py:39\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:14:41\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=846373;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=911724;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#39\u001b\\\u001b[2m39\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   WARNINGs here are NOT errors                                                      __init__.py:40\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=117600;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=609949;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#40\u001b\\\u001b[2m40\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:41\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=456421;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=958166;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#41\u001b\\\u001b[2m41\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: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 \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=815368;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=967683;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#44\u001b\\\u001b[2m44\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   no display variable set. using backend for graphics without display (agg)         __init__.py:50\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 display variable set. using backend for graphics without display \u001b[0m\u001b[1;38;5;251m(\u001b[0m\u001b[1;38;5;251magg\u001b[0m\u001b[1;38;5;251m)\u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=995613;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=994824;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#50\u001b\\\u001b[2m50\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
11:14:43 WARNING   ROOT minimizer not available                                                minimization.py:1345\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:14:43\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=749135;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/minimizer/minimization.py\u001b\\\u001b[2mminimization.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=283627;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/minimizer/minimization.py#1345\u001b\\\u001b[2m1345\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   Multinest minimizer not available                                           minimization.py:1357\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=778000;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/minimizer/minimization.py\u001b\\\u001b[2mminimization.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=138523;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/minimizer/minimization.py#1357\u001b\\\u001b[2m1357\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   PyGMO is not available                                                      minimization.py:1369\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=294734;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/minimizer/minimization.py\u001b\\\u001b[2mminimization.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=330423;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/minimizer/minimization.py#1369\u001b\\\u001b[2m1369\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
11:14:43 WARNING   The cthreeML package is not installed. You will not be able to use plugins which  __init__.py:94\n",
       "                  require the C/C++ interface (currently HAWC)                                                     \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:14:43\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m The cthreeML package is not installed. You will not be able to use plugins which \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=950945;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=159794;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#94\u001b\\\u001b[2m94\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[38;5;46m \u001b[0m \u001b[1;38;5;251mrequire the C/C++ interface \u001b[0m\u001b[1;38;5;251m(\u001b[0m\u001b[1;38;5;251mcurrently HAWC\u001b[0m\u001b[1;38;5;251m)\u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   Could not import plugin FermiLATLike.py. Do you have the relative instrument     __init__.py:144\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=248293;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=949413;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#144\u001b\\\u001b[2m144\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": [ "
11:14:44 WARNING   Could not import plugin HAWCLike.py. Do you have the relative instrument         __init__.py:144\n",
       "                  software installed and configured?                                                               \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:14:44\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m Could not import plugin HAWCLike.py. Do you have the relative instrument \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=975954;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=695721;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#144\u001b\\\u001b[2m144\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": [ "
11:14:46 WARNING   No fermitools installed                                              lat_transient_builder.py:44\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:14:46\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=257162;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/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=721248;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/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": [ "
11:14:46 WARNING   Env. variable OMP_NUM_THREADS is not set. Please set it to 1 for optimal         __init__.py:387\n",
       "                  performances in 3ML                                                                              \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:14:46\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=712228;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=491076;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#387\u001b\\\u001b[2m387\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:387\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=575441;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=258749;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#387\u001b\\\u001b[2m387\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:387\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=898179;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=76702;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/__init__.py#387\u001b\\\u001b[2m387\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 COSILike, test_data, BinnedData\n", "from cosipy.spacecraftfile import SpacecraftFile\n", "from cosipy.response.FullDetectorResponse import FullDetectorResponse\n", "from cosipy.util import fetch_wasabi_file\n", "\n", "from scoords import SpacecraftFrame\n", "\n", "from astropy.time import Time\n", "import astropy.units as u\n", "from astropy.coordinates import SkyCoord, Galactic\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\n", "\n", "from pathlib import Path\n", "\n", "import os\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "8d1c0168-9823-4eb7-930e-5dc61d6448ca", "metadata": {}, "source": [ "## Download and read in binned data" ] }, { "cell_type": "markdown", "id": "a57e30ec-9301-441c-a627-6ad0355aca22", "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": "5c765257-5a23-41bd-af67-4e461e3e6e4e", "metadata": {}, "outputs": [], "source": [ "data_path = Path(\"/path/to/files\")" ] }, { "cell_type": "markdown", "id": "99500a01-882d-4053-a595-374202b87298", "metadata": {}, "source": [ "Download the orientation file (684.38 MB)" ] }, { "cell_type": "code", "execution_count": null, "id": "36f96db4-640d-4233-8b18-a81bafcfd009", "metadata": {}, "outputs": [], "source": [ "fetch_wasabi_file('COSI-SMEX/DC2/Data/Orientation/20280301_3_month_with_orbital_info.ori', output=str(data_path / '20280301_3_month_with_orbital_info.ori'))" ] }, { "cell_type": "markdown", "id": "e1bee10b-4de7-417e-88a4-24f350789937", "metadata": {}, "source": [ "Download the binned Crab+background data (99.16 MB)" ] }, { "cell_type": "code", "execution_count": 5, "id": "51628f7e-cbab-4755-8cad-bf9af9a2a5f9", "metadata": {}, "outputs": [], "source": [ "fetch_wasabi_file('COSI-SMEX/cosipy_tutorials/crab_spectral_fit_galactic_frame/crab_bkg_binned_data.hdf5', output=str(data_path / 'crab_bkg_binned_data.hdf5'))" ] }, { "cell_type": "markdown", "id": "f1264463-2db3-4da8-a5d5-743607e7b2eb", "metadata": {}, "source": [ "Download the binned Crab data (13.16 MB)" ] }, { "cell_type": "code", "execution_count": 7, "id": "2f6ecc28-d928-4dc2-ad36-504e41175574", "metadata": {}, "outputs": [], "source": [ "fetch_wasabi_file('COSI-SMEX/cosipy_tutorials/crab_spectral_fit_galactic_frame/crab_binned_data.hdf5', output=str(data_path / 'crab_binned_data.hdf5'))" ] }, { "cell_type": "markdown", "id": "095adbe9-d0d0-4794-8912-3b3f7390d7b4", "metadata": {}, "source": [ "Download the binned background data (89.10 MB)" ] }, { "cell_type": "code", "execution_count": 9, "id": "3d13cc84-2027-408f-8c7a-f2b4d654e7fd", "metadata": {}, "outputs": [], "source": [ "fetch_wasabi_file('COSI-SMEX/cosipy_tutorials/crab_spectral_fit_galactic_frame/bkg_binned_data.hdf5', output=str(data_path / 'bkg_binned_data.hdf5'))" ] }, { "cell_type": "markdown", "id": "22cf85cc-6e8f-4db8-92a4-c8779e2fbe58", "metadata": {}, "source": [ "Download the response file (839.62 MB). This needs to be unzipped before running the rest of the notebook" ] }, { "cell_type": "code", "execution_count": 10, "id": "5f3df678-009a-4b4c-96bb-01c3107a3805", "metadata": {}, "outputs": [], "source": [ "fetch_wasabi_file('COSI-SMEX/DC2/Responses/SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.nonsparse_nside8.area.good_chunks_unzip.h5.zip', output=str(data_path / 'SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.nonsparse_nside8.area.good_chunks_unzip.h5.zip'))" ] }, { "cell_type": "markdown", "id": "d898bbd7-9ed0-4a27-bd5a-67414178733d", "metadata": {}, "source": [ "Read in the spacecraft orientation file" ] }, { "cell_type": "code", "execution_count": 4, "id": "ed2c03a0-63e3-4044-9e16-50f0f17996af", "metadata": {}, "outputs": [], "source": [ "sc_orientation = SpacecraftFile.parse_from_file(data_path / \"20280301_3_month_with_orbital_info.ori\")" ] }, { "cell_type": "markdown", "id": "f579870f-c854-450d-84e8-f1d5ef0753d1", "metadata": {}, "source": [ "Create BinnedData objects for the Crab only, Crab+background, and background only. The Crab 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": 5, "id": "3b5faaa1-1874-4d43-a6ae-7e1b0aaabb26", "metadata": {}, "outputs": [], "source": [ "crab = BinnedData(data_path / \"crab.yaml\")\n", "crab_bkg = BinnedData(data_path / \"crab.yaml\")\n", "bkg = BinnedData(data_path / \"background.yaml\")" ] }, { "cell_type": "markdown", "id": "cf8b5ab1-7452-493e-b516-73fa72e455e5", "metadata": {}, "source": [ "Load binned .hdf5 files" ] }, { "cell_type": "code", "execution_count": 6, "id": "620159d2-f01a-453e-9e4c-075c99740086", "metadata": {}, "outputs": [], "source": [ "crab.load_binned_data_from_hdf5(binned_data=data_path / \"crab_binned_data.hdf5\")\n", "crab_bkg.load_binned_data_from_hdf5(binned_data=data_path / \"crab_bkg_binned_data.hdf5\")\n", "bkg.load_binned_data_from_hdf5(binned_data=data_path / \"bkg_binned_data.hdf5\")" ] }, { "cell_type": "markdown", "id": "a6bdaee8-45d7-41df-9835-413c1e397c12", "metadata": {}, "source": [ "Define the path to the detector response" ] }, { "cell_type": "code", "execution_count": 7, "id": "acccab93-7f9c-4167-a8f9-eedcf74b8a05", "metadata": {}, "outputs": [], "source": [ "dr = str(data_path / \"SMEXv12.Continuum.HEALPixO3_10bins_log_flat.binnedimaging.imagingresponse.nonsparse_nside8.area.good_chunks_unzip.h5\") # path to detector response" ] }, { "cell_type": "markdown", "id": "c4d25ed1-7139-4e1d-91ab-889bd2c01300", "metadata": { "tags": [] }, "source": [ "## Perform spectral fit" ] }, { "cell_type": "markdown", "id": "3d27b1c3-3e9f-4ca7-9a4f-1176a03d10df", "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": 8, "id": "8784a70b-c322-4e0b-a08e-c6f36bac024b", "metadata": {}, "outputs": [], "source": [ "bkg_par = Parameter(\"background_cosi\", # background parameter\n", " 1, # initial value of parameter\n", " min_value=0, # minimum value of parameter\n", " max_value=5, # maximum value of parameter\n", " delta=0.05, # initial step used by fitting engine\n", " desc=\"Background parameter for cosi\")\n", "\n", "cosi = COSILike(\"cosi\", # COSI 3ML plugin\n", " dr = dr, # detector response\n", " data = crab_bkg.binned_data.project('Em', 'Phi', 'PsiChi'), # data (source+background)\n", " bkg = bkg.binned_data.project('Em', 'Phi', 'PsiChi'), # background model \n", " sc_orientation = sc_orientation, # spacecraft orientation\n", " nuisance_param = bkg_par, # background parameter\n", " earth_occ = True) # Option to account for Earth occultation" ] }, { "cell_type": "markdown", "id": "a58bb558-e03d-4a07-b433-312302f622a7", "metadata": {}, "source": [ "Define a point source at the known location with a Band function spectrum and add it to the model. The initial values of the Band function parameters are set to the true values used to simulate the source" ] }, { "cell_type": "code", "execution_count": 9, "id": "e836fc74-15d8-4680-a947-2495670d7a25", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
11:20:31 WARNING   The current value of the parameter beta (-2.0) was above the new maximum -2.15. parameter.py:794\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:20:31\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m The current value of the parameter beta \u001b[0m\u001b[1;38;5;251m(\u001b[0m\u001b[1;37m-2.0\u001b[0m\u001b[1;38;5;251m)\u001b[0m\u001b[1;38;5;251m was above the new maximum \u001b[0m\u001b[1;37m-2.15\u001b[0m\u001b[1;38;5;251m.\u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=539156;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py\u001b\\\u001b[2mparameter.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=631064;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py#794\u001b\\\u001b[2m794\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "l = 184.56\n", "b = -5.78\n", "\n", "alpha = -1.99\n", "beta = -2.32\n", "E0 = 531. * (alpha - beta) * u.keV\n", "xp = E0 * (alpha + 2) / (alpha - beta)\n", "piv = 500. * u.keV\n", "K = 3.07e-5 / u.cm / u.cm / u.s / u.keV\n", "\n", "spectrum = Band()\n", "\n", "spectrum.alpha.min_value = -2.14\n", "spectrum.alpha.max_value = 3.0\n", "spectrum.beta.min_value = -5.0\n", "spectrum.beta.max_value = -2.15\n", "spectrum.xp.min_value = 1.0\n", "\n", "spectrum.alpha.value = alpha\n", "spectrum.beta.value = beta\n", "spectrum.xp.value = xp.value\n", "spectrum.K.value = K.value\n", "spectrum.piv.value = piv.value\n", "\n", "spectrum.xp.unit = xp.unit\n", "spectrum.K.unit = K.unit\n", "spectrum.piv.unit = piv.unit\n", "\n", "spectrum.alpha.delta = 0.01\n", "spectrum.beta.delta = 0.01\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", "# Optional: free the position parameters\n", "#source.position.l.free = True\n", "#source.position.b.free = True\n", "\n", "model = Model(source) # Model with single source. If we had multiple sources, we would do Model(source1, source2, ...)\n", "\n", "# Optional: if you want to call get_log_like manually, then you also need to set the model manually\n", "# 3ML does this internally during the fit though\n", "cosi.set_model(model)" ] }, { "cell_type": "markdown", "id": "e955d7a4-a40f-4fa2-af9a-c277fce3dc26", "metadata": {}, "source": [ "Gather all plugins and combine with the model in a JointLikelihood object, then perform maximum likelihood fit" ] }, { "cell_type": "code", "execution_count": 10, "id": "f83dea31-2284-4f87-910a-be1003d970c8", "metadata": { "scrolled": true, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
11:22:07 INFO      set the minimizer to minuit                                             joint_likelihood.py:1045\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:22:07\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=375798;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/classicMLE/joint_likelihood.py\u001b\\\u001b[2mjoint_likelihood.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=502880;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/classicMLE/joint_likelihood.py#1045\u001b\\\u001b[2m1045\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "Adding 1e-12 to each bin of the expectation to avoid log-likelihood = -inf.\n", "\n", "WARNING IntegrationWarning: The occurrence of roundoff error is detected, which prevents \n", " the requested tolerance from being achieved. The error may be \n", " underestimated.\n", "\n", "\n", "WARNING IntegrationWarning: The occurrence of roundoff error is detected, which prevents \n", " the requested tolerance from being achieved. The error may be \n", " underestimated.\n", "\n", "\n", "WARNING IntegrationWarning: The occurrence of roundoff error is detected, which prevents \n", " the requested tolerance from being achieved. The error may be \n", " underestimated.\n", "\n" ] }, { "data": { "text/html": [ "
11:23:04 WARNING   get_number_of_data_points not implemented, values for statistical        plugin_prototype.py:130\n",
       "                  measurements such as AIC or BIC are unreliable                                                   \n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:23:04\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m get_number_of_data_points not implemented, values for statistical \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=430167;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/plugin_prototype.py\u001b\\\u001b[2mplugin_prototype.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=282327;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/threeML/plugin_prototype.py#130\u001b\\\u001b[2m130\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[38;5;46m \u001b[0m \u001b[1;38;5;251mmeasurements such as AIC or BIC are unreliable \u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
11:23:04 WARNING   The current value of the parameter beta (-2.0) was above the new maximum -2.15. parameter.py:794\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:23:04\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m The current value of the parameter beta \u001b[0m\u001b[1;38;5;251m(\u001b[0m\u001b[1;37m-2.0\u001b[0m\u001b[1;38;5;251m)\u001b[0m\u001b[1;38;5;251m was above the new maximum \u001b[0m\u001b[1;37m-2.15\u001b[0m\u001b[1;38;5;251m.\u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=384743;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py\u001b\\\u001b[2mparameter.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=88743;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py#794\u001b\\\u001b[2m794\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(2.831 +/- 0.024) x 10^-51 / (keV s cm2)
source.spectrum.main.Band.alpha-1.9884 +/- 0.0005
source.spectrum.main.Band.xp4.39 -0.20 +0.21keV
source.spectrum.main.Band.beta-2.1674 +/- 0.0016
background_cosi(9.9414 +/- 0.0019) x 10^-1
\n", "
" ], "text/plain": [ " result unit\n", "parameter \n", "source.spectrum.main.Band.K (2.831 +/- 0.024) x 10^-5 1 / (keV s cm2)\n", "source.spectrum.main.Band.alpha -1.9884 +/- 0.0005 \n", "source.spectrum.main.Band.xp 4.39 -0.20 +0.21 keV\n", "source.spectrum.main.Band.beta -2.1674 +/- 0.0016 \n", "background_cosi (9.9414 +/- 0.0019) x 10^-1 " ] }, "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.48-0.51-0.070.03
0.481.000.480.08-0.03
-0.510.481.00-0.060.02
-0.070.08-0.061.00-0.50
0.03-0.030.02-0.501.00
" ], "text/plain": [ " 1.00 0.48 -0.51 -0.07 0.03\n", " 0.48 1.00 0.48 0.08 -0.03\n", "-0.51 0.48 1.00 -0.06 0.02\n", "-0.07 0.08 -0.06 1.00 -0.50\n", " 0.03 -0.03 0.02 -0.50 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)
cosi-2.612141e+08
total-2.612141e+08
\n", "
" ], "text/plain": [ " -log(likelihood)\n", "cosi -2.612141e+08\n", "total -2.612141e+08" ] }, "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
AIC-5.224283e+08
BIC-5.224283e+08
\n", "
" ], "text/plain": [ " statistical measures\n", "AIC -5.224283e+08\n", "BIC -5.224283e+08" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "( value negative_error positive_error \\\n", " source.spectrum.main.Band.K 0.000028 -2.423793e-07 2.397817e-07 \n", " source.spectrum.main.Band.alpha -1.988386 -5.021034e-04 4.499167e-04 \n", " source.spectrum.main.Band.xp 4.385546 -2.065864e-01 2.077363e-01 \n", " source.spectrum.main.Band.beta -2.167420 -1.558193e-03 1.610435e-03 \n", " background_cosi 0.994138 -1.948180e-04 1.932436e-04 \n", " \n", " error unit \n", " source.spectrum.main.Band.K 2.410805e-07 1 / (keV s cm2) \n", " source.spectrum.main.Band.alpha 4.760100e-04 \n", " source.spectrum.main.Band.xp 2.071613e-01 keV \n", " source.spectrum.main.Band.beta 1.584314e-03 \n", " background_cosi 1.940308e-04 ,\n", " -log(likelihood)\n", " cosi -2.612141e+08\n", " total -2.612141e+08)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "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": "e7c645bf-3e24-4caf-a47f-1b4b442fae46", "metadata": {}, "source": [ "## Error propagation and plotting (Band function)" ] }, { "cell_type": "markdown", "id": "1d4083b0-10f2-40a6-838a-99352580e1d0", "metadata": {}, "source": [ "Define Band function spectrum injected into MEGAlib" ] }, { "cell_type": "code", "execution_count": 11, "id": "1758942e-55e6-47ea-ab06-779e8a0fc622", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
11:23:18 WARNING   The current value of the parameter beta (-2.0) was above the new maximum -2.15. parameter.py:794\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:23:18\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m The current value of the parameter beta \u001b[0m\u001b[1;38;5;251m(\u001b[0m\u001b[1;37m-2.0\u001b[0m\u001b[1;38;5;251m)\u001b[0m\u001b[1;38;5;251m was above the new maximum \u001b[0m\u001b[1;37m-2.15\u001b[0m\u001b[1;38;5;251m.\u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=140514;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py\u001b\\\u001b[2mparameter.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=639233;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py#794\u001b\\\u001b[2m794\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "alpha_inj = -1.99\n", "beta_inj = -2.32\n", "E0_inj = 531. * (alpha_inj - beta_inj) * u.keV\n", "xp_inj = E0_inj * (alpha_inj + 2) / (alpha_inj - beta_inj)\n", "piv_inj = 100. * u.keV\n", "K_inj = 7.56e-4 / u.cm / u.cm / u.s / u.keV\n", "\n", "spectrum_inj = Band()\n", "\n", "spectrum_inj.alpha.min_value = -2.14\n", "spectrum_inj.alpha.max_value = 3.0\n", "spectrum_inj.beta.min_value = -5.0\n", "spectrum_inj.beta.max_value = -2.15\n", "spectrum_inj.xp.min_value = 1.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": "9e7688b1-430a-4bce-8e9c-448202589e7f", "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": 12, "id": "c3851355-28fa-4ff4-9c5b-522733bb110e", "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(2.831 +/- 0.024) x 10^-51 / (keV s cm2)
source.spectrum.main.Band.alpha-1.9884 +/- 0.0005
source.spectrum.main.Band.xp4.39 -0.20 +0.21keV
source.spectrum.main.Band.beta-2.1674 +/- 0.0016
background_cosi(9.9414 +/- 0.0019) x 10^-1
\n", "
" ], "text/plain": [ " result unit\n", "parameter \n", "source.spectrum.main.Band.K (2.831 +/- 0.024) x 10^-5 1 / (keV s cm2)\n", "source.spectrum.main.Band.alpha -1.9884 +/- 0.0005 \n", "source.spectrum.main.Band.xp 4.39 -0.20 +0.21 keV\n", "source.spectrum.main.Band.beta -2.1674 +/- 0.0016 \n", "background_cosi (9.9414 +/- 0.0019) x 10^-1 " ] }, "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.48-0.51-0.070.03
0.481.000.480.08-0.03
-0.510.481.00-0.060.02
-0.070.08-0.061.00-0.50
0.03-0.030.02-0.501.00
" ], "text/plain": [ " 1.00 0.48 -0.51 -0.07 0.03\n", " 0.48 1.00 0.48 0.08 -0.03\n", "-0.51 0.48 1.00 -0.06 0.02\n", "-0.07 0.08 -0.06 1.00 -0.50\n", " 0.03 -0.03 0.02 -0.50 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)
cosi-2.612141e+08
total-2.612141e+08
\n", "
" ], "text/plain": [ " -log(likelihood)\n", "cosi -2.612141e+08\n", "total -2.612141e+08" ] }, "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
AIC-5.224283e+08
BIC-5.224283e+08
\n", "
" ], "text/plain": [ " statistical measures\n", "AIC -5.224283e+08\n", "BIC -5.224283e+08" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] }, { "data": { "text/html": [ "
11:23:22 WARNING   The current value of the parameter beta (-2.0) was above the new maximum -2.15. parameter.py:794\n",
       "
\n" ], "text/plain": [ "\u001b[38;5;46m11:23:22\u001b[0m\u001b[38;5;46m \u001b[0m\u001b[38;5;134mWARNING \u001b[0m \u001b[1;38;5;251m The current value of the parameter beta \u001b[0m\u001b[1;38;5;251m(\u001b[0m\u001b[1;37m-2.0\u001b[0m\u001b[1;38;5;251m)\u001b[0m\u001b[1;38;5;251m was above the new maximum \u001b[0m\u001b[1;37m-2.15\u001b[0m\u001b[1;38;5;251m.\u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=257689;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py\u001b\\\u001b[2mparameter.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=1639;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py#794\u001b\\\u001b[2m794\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   The current value of the parameter beta (-2.0) was above the new maximum -2.15. parameter.py:794\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 current value of the parameter beta \u001b[0m\u001b[1;38;5;251m(\u001b[0m\u001b[1;37m-2.0\u001b[0m\u001b[1;38;5;251m)\u001b[0m\u001b[1;38;5;251m was above the new maximum \u001b[0m\u001b[1;37m-2.15\u001b[0m\u001b[1;38;5;251m.\u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=580430;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py\u001b\\\u001b[2mparameter.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=907467;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py#794\u001b\\\u001b[2m794\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
         WARNING   The current value of the parameter beta (-2.0) was above the new maximum -2.15. parameter.py:794\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 current value of the parameter beta \u001b[0m\u001b[1;38;5;251m(\u001b[0m\u001b[1;37m-2.0\u001b[0m\u001b[1;38;5;251m)\u001b[0m\u001b[1;38;5;251m was above the new maximum \u001b[0m\u001b[1;37m-2.15\u001b[0m\u001b[1;38;5;251m.\u001b[0m\u001b[1;38;5;251m \u001b[0m\u001b]8;id=504220;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py\u001b\\\u001b[2mparameter.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=99234;file:///discover/nobackup/ckarwin/Software/COSIPY/lib/python3.10/site-packages/astromodels/core/parameter.py#794\u001b\\\u001b[2m794\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " * source (point source):\n", " * position:\n", " * l:\n", " * value: 184.56\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: -5.78\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: 2.830532377573198e-05\n", " * desc: Differential flux at the pivot energy\n", " * min_value: 1.0e-50\n", " * max_value: null\n", " * unit: keV-1 s-1 cm-2\n", " * is_normalization: true\n", " * alpha:\n", " * value: -1.9883862891924717\n", " * desc: low-energy photon index\n", " * min_value: -2.14\n", " * max_value: 3.0\n", " * unit: ''\n", " * is_normalization: false\n", " * xp:\n", " * value: 4.385546491485944\n", " * desc: peak in the x * x * N (nuFnu if x is a energy)\n", " * min_value: 1.0\n", " * max_value: null\n", " * unit: keV\n", " * is_normalization: false\n", " * beta:\n", " * value: -2.1674202553986954\n", " * desc: high-energy photon index\n", " * min_value: -5.0\n", " * max_value: -2.15\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": "d13bc552-c841-41d4-abc6-1d431eaca348", "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": 13, "id": "804e78ca-2ccb-421b-aff2-ad41b70ed24f", "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 = crab.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 = cosi._expected_counts['source']" ] }, { "cell_type": "markdown", "id": "b3cf7385-133f-4d4e-a78d-b90f9896c82e", "metadata": {}, "source": [ "Plot the fitted and injected spectra" ] }, { "cell_type": "code", "execution_count": 14, "id": "3402ff8a-d50e-4bad-a27d-f3b7bc4f4f54", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm4AAAG7CAYAAAB6sxkSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACEcUlEQVR4nO3dd1zWZdvH8Q97OVBEREERUMCJmntvU7PhKO1+yrq1UktNTc27YdlOs2xY2bCtZpmW5sK9MgcuhpuhMpW94Xr+IK8icF94Mb7v1+t5PXGev3H8uLnk4Pidw8JgMBgQERERkTLP0twBiIiIiMj1UeImIiIiUk4ocRMREREpJ5S4iYiIiJQTStxEREREygklbiIiIiLlhBI3ERERkXJCiVsFkpWVRXh4OFlZWeYORUREREqBErcKJCIigrFjxxIREWHuUERERKQUKHETERERKSeUuImIiIiUE0rcRERERMoJJW4iIiIi5YS1uQMQERGp7PLz88nNzTV3GFLKrKyssLa2xsLC4qavocRNRETEjNLS0oiOjsZgMJg7FLkNHB0dcXd3x9bW9qbOV+ImIiJiJvn5+URHR+Po6Iirq+stVWKkbDMYDOTk5BAfH8+ZM2do1KgRlpY3PmJNiZuIiIiZ5ObmYjAYcHV1xcHBwdzhSClzcHDAxsaGiIgIcnJysLe3v+FraHKCiIiImanSVnncTJWtyPkmikNERERESpkSNxERETHy8vLCz8+PwMBAAgICGDVqFOnp6Td9vcWLFxMWFnbF/j179tC8eXNatWrFunXrGDhwIOHh4dd1bmWkxE1ERESKWLp0KcHBwRw7dozk5GQWL15809e6VvL11VdfMWrUKA4ePEj//v1Zs2YNfn5+13VuZaTJCSIiImXEL//bSUZydqnew7G6Hfe82vm6js3JySEjI4MaNWoY2+bOncuyZcvIy8ujdu3afPLJJzRo0IBff/2V//3vf1haWpKXl8err75KfHw8+/bt4+mnn2b27Nm89tprDBw40HitN954g6VLl+Lg4MDSpUvZsmULgYGB/PLLL+zbt++q51ZWStxERETKiIzkbDIulm7idj3uv/9+HBwcOHv2LG3atGHEiBEAfP/994SHh7N7926srKz45ptvGD9+PKtXr+a5557jk08+oWPHjhQUFJCSkoKzszPffvstkydP5p577il2n5kzZxIWFkZgYCCTJ08u0jdmzJirnltZKXGT62IwGNi0aRM9e/a85RkxIiJSMsfqdmXiHkuXLiUwMJC8vDwef/xxZsyYwbx58/jll1/4888/adOmDVC4Dt1lvXv3ZtKkSQwbNox+/foRGBhYWo9QqSlxk+uyefNm+vTpg5+fH2+99RZDhgwxd0giIhXO9b7CvF2sra0ZOnQozzzzDPPmzcNgMPDss8/y2GOPFTv2nXfe4dixY2zevJmHH36YBx98kOnTp5sh6opNiZtcl3nz5gEQHh5OZmammaMREZHbZdOmTcbJAvfccw/z5s1j2LBh1KxZk9zcXI4ePUqrVq0ICwujadOmNG3aFGtra9avXw9AtWrVSE5Ovql738q5FZUSN7ku48aNIz09nTNnzjB06NAifbGxsVy6dAl/f38zRSciIqZ0eYxbXl4eDRo04OOPPwbgwQcfJDExkZ49ewKQl5fHo48+SqtWrZg1axbh4eHY2tri6OjIwoULAXjssceYOnUq8+fPv+EJBrdybkVlYdCutmVSUlISr732GsHBwbi6ujJlyhTjmIIrCQ8PZ+zYsSxatMj415GpXbx4kZo1axZpmzFjBm+99RaDBw/m7bffVgInInKdsrKyOHPmDA0bNryp7Y+k/LnV/801yryMmj9/PjVr1mTVqlWMGzeOF198kZSUFHOHVSxpS01N5ZNPPgFg3bp1ODk5mSMsERGRSkGJWxmUkZHB9u3befTRR7G3t6dLly54e3uzY8cOc4dWjKWlJc8//zyenp7897//xdPTs0h/UlISKuqKiIiYRoUb4xYeHs6XX37JkSNHyMnJoW7dutx1110MGzasVO6XkZHBkiVLCAkJITQ0lNTUVJ599lnuvPPOEo/Pycnh888/Z/369aSmpuLj48OYMWNo27at8Zjo6GgcHByoXbu2sc3b25szZ86UyjPcCicnJ6ZOncrEiROLTVowGAz07dsXe3t7XnzxRXr37q2NlEVERG5Bhaq47d27l/Hjx5OUlMTDDz/MxIkT6dixI/Hx8aV2z8tbgURERODr63vN419//XWWLVtG3759mThxIpaWlkyfPp3Dhw8bj8nMzCz2ytHJyalMz+a0sbGhWrVqRdp+//139u3bx44dO5g2bZoqbyIiIreowlTc0tPTee211+jQoQNz5sy57kViU1NTOXDgAN27dy+xf+PG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xE1ERETKrX379jFt2jQyMzN56KGHCA4ONndIpUqJm4iIiJRbzZo145FHHgFg+vTpBAYGmjegUqYxbiIiIlJu2dvb8+mnnzJkyBAGDBhg7nBKnSpuIiIiUu4NHjwYa+ui9aht27Yxa9Ys8vLyzBSV6aniJiIiIhVOTEwM999/PzExMezevZsVK1bg7Oxs7rBumSpuIiIiUuHs2LGDhIQEAKysrKhataqZIzINJW4iIiJS4QwbNowtW7bQrl07vv/+e6ysrMwdkknoVamIiIhUSJ07d2bPnj1YWFgUaY+JicHe3r5cvjpVxU1EREQqrH8nbbm5uQwdOpQ77rijXK75psRNREREKo3Zs2eza9cuTp06xQMPPEB+fr65Q7ohStxERESk0hg7dix33HEHNjY2fP311+Vu7JvGuImIiEil4eXlxY4dO9izZw/t2rUzdzg3TBU3ERERqVTs7Ozo3r17sfZZs2axYsUKM0R0/ZS4iYiISKW3ZMkSXn/9de677z6ee+45c4dzRUrcREREpNLbuHGj8b8bNGhgxkiuTmPcREREpNJbtGgRgYGBHD58mDFjxpg7nCtS4iYiIiKVnoWFBU8++WSJfYcPH6ZZs2ZYWpr/RaX5IxAREREpo44cOUKHDh0YMmQIly5dMnc4StxERERESpKXl8eIESPIzMxk9erVvPXWW+YOSYmbiIiISEmsra159913cXFxoVWrVrz44ovmDklj3ERERESupH///hw8eJC8vDzs7e3NHY4SNxEREZGr8fT0NHcIRnpVKiIiIlJOKHETERERKSeUuImIiIiUE0rcRERERMoJJW4iIiIi5YQSNxEREZFyQombiIiISDmhxE1ERESknFDiJiIiIlJOKHETERERKSeUuImIiIiUE0rcRERERMoJJW4iIiIi5YQSNxEREZFywtrcAYjpZGdnAxAREWHmSERERORGNWjQAHt7+6seo8StAomJiQHglVdeMXMkIiIicqMWLVqEn5/fVY+xMBgMhtsUj5SypKQk9u7dyy+//MKkSZOu65z333+fp5566prHRURE8Morr/Dcc8/RoEGDWw213Lve75u53O74Sut+prrurVznZs690XOu53h9BovT5/D23M8U173Va5T257Cs/C5Uxa2ScXZ2pl+/fmzatOmaGftlVapUue5jofCH6kaOr6hu9Pt2u93u+Err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Dh48WOI5GRkZfPHFFzz00EP06dOHgQMHMnXqVA4fPlzs2IkTJ9KtWzeys7NZtGgRDzzwAD179uSLL74wHrN161bGjh1Lnz59uPvuu3nrrbdITU1lxIgRRV7tzpkzh27duhESElJiXJ9//jndunVj48aN13zuvXv3kpiYSI8ePa557GVxcXE8/PDD9OnThy1bthjbL126xPvvv8/IkSPp3bs3d911F8899xynT58ucv7AgQOxsLDg999/x2AwlHiPNWvWADBo0KAi7c7OzrRq1YotW7aQkZFx3TGLVBZK3ESk0khLS2PChAmcPXuWfv360a1bN8LDw5k2bVqx5CMlJYVx48axePFiqlatyt133023bt04fvw4kyZNYvv27SXe4/nnn2ft2rW0atWKYcOGGceUrV69mueff57o6Gj69+/PgAEDOHbsGFOmTCEvL6/INYYMGWI859/y8/NZs2YN1atXN75ivJr9+/cD0LRp02t/g4CzZ88yfvx44uLiePvtt40J37lz5xgzZgw//vgjdevW5b777qNDhw7s3buXcePGFUky69SpQ5s2bTh//nyJSfHp06cJCwujUaNGNG7cuFh/06ZNycnJ4ejRo9cVs0hlolelIlJunTt3rkhF65+aNm1K+/bti7SdPHmSe+65h8mTJ2NpWfh3a+vWrXnrrbf4+eefmTZtmvHYd999lzNnzjB9+nQGDx5sbL906RJjx47l7bffpl27dkVe8wEkJiby5ZdfUq1aNWNbamoqCxYswMHBgU8//RRPT08Axo4dy7Rp0wgPD6dOnTrG41u2bImXlxdBQUE8+eSTODg4GPv27t1LfHw8w4cPx9bW9prfoyNHjmBpaYmvr+81jz127BgzZszA2tqa999/v8g5r776KhcvXmTu3Lm0a9fO2P7QQw8xduxY3nrrLRYvXmxsHzRoEPv27WPNmjW0bt26yH2uVG27zM/PD4CjR48WuZeIqOImIuXYuXPnWLx4cYn/98cffxQ73sHBgSeeeMKYtEHhTEYrKyvCwsKMbUlJSWzevJnWrVsXSdoAatSowciRI0lKSjJWs/7pkUceKZK0AezYsYPMzEwGDhxoTNqgcDD+mDFjSny2IUOGkJGRQVBQUJH23377DYC77rrrSt+WIuLj46lSpco1k7zdu3fz9NNPU7VqVT766KMiSdvx48c5evQo/fv3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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": "markdown", "id": "53f3bfb1-efc4-4b80-98ab-d86be8fe5133", "metadata": {}, "source": [ "Plot the fitted spectrum convolved with the response, as well as the simulated source counts" ] }, { "cell_type": "code", "execution_count": 15, "id": "e20787dd-42ce-4255-9994-2280912165c8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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rKysVj+GnZ0dM9xmYGdnR1paWqvvX0REpK07dPAQjm6O7Du4j+q06lbff58+fXB2dj5lGxvDMIxWP3IH8/nnn7NkyRKzY4iIiEgLrFixgrCwsFO2UUHUBIWFhfz000988MEH3HHHHU1+3bJly1i4cOEp22RlZbFkyRIeeugh+vTpc6ZRO4SmfG5mMSObNY7ZWvs8k/205LXNfY3OwZZpy+cgnP181jpeZzgPm9rW2udhU3qIdMmsCbp168a4ceP48ssvT1th/l6XLl2a3L5Pnz7N2ndH1pzP7WwzI5s1jtla+zyT/bTktc19jc7BlmnL5yCc/XzWOl5nOA+bu38zz0PdZdYMMTExVm0vx7Tlz82MbNY4Zmvt80z205LX6hw8O9r653a281nreJ3hPGzr30u/p0tmJktLS2POnDlNur4pIq1P56CI+drCeageIpN5eXlxww034OXlZXYUkU5J56CI+drCeageIhEREen01EMkIiIinZ4KIhEREen0VBC1cdXV1SxdupSrrrqKCRMmMG/ePBITE82OJdKpPPXUU/zpT39iwoQJzJo1i++++87sSCKdVmJiIhdddBFvvvlmq+5XY4jauIqKCtauXcvEiRPx8fFh69atPP/886xduxZXV1ez44l0CllZWfj7++Po6EhKSgp33XUXa9aswcPDw+xoIp1KfX098+fPxzAMzj//fGbNmtVq+1YPURvn4uLCDTfcgK+vL7a2towdOxZ7e3tycnLMjibSafTp0wdHR0cAbGxsqKmp4dChQyanEul8Pv74Y8LDw60ym7Vmqm5l5eXlrFmzhuTkZFJSUigpKeGBBx5g4sSJJ7Strq5m5cqVfP7555SUlNC/f39mz57N8OHDT7r/nJwcSkpKCAgIsObbEGm3rHUOPvvss2zatInq6mrOO+88goKCzsbbEWmXrHEeFhUVsX79el555RWWLVvW6pnVQ9TKioqKWLVqFVlZWQQHB5+y7eOPP866deu49NJLuf3227G1tWXRokXs3Lmz0fZVVVUsWbKEmTNn0qVLF2vEF2n3rHUO3nXXXWzZsoXnnnuO4cOHY2NjY623INLuWeM8XLFiBdOnT8fd3d06oQ1pVVVVVcahQ4cMwzCMlJQUY9SoUcamTZtOaJeUlGSMGjXKeOeddyzbKisrjRkzZhjz5s07oX1NTY2xaNEi45FHHjHq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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,ax = plt.subplots()\n", "\n", "ax.stairs(expectation.project('Em').todense().contents, binned_energy_edges, color='purple', label = \"Best fit convolved with response\")\n", "ax.errorbar(binned_energy, expectation.project('Em').todense().contents, yerr=np.sqrt(expectation.project('Em').todense().contents), color='purple', linewidth=0, elinewidth=1)\n", "ax.stairs(crab.binned_data.project('Em').todense().contents, binned_energy_edges, color = 'black', ls = \":\", label = \"Source counts\")\n", "ax.errorbar(binned_energy, crab.binned_data.project('Em').todense().contents, yerr=np.sqrt(crab.binned_data.project('Em').todense().contents), 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": "28b9380a-6e72-4cb9-9cd5-1fdb44bd2dcf", "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": 16, "id": "29823cda-ca7b-4c5c-ac11-681bfaf12ba8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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/zaZTCZTTU2N6fjx4yaTyWQaPHiwacOGDWc838SJE01Lly6tdf5du3adc9+qqipTaGio6aOPPjJvy8nJMZlMJlO/fv1MK1asMJlMJtOBAwdMbdu2NaWkpJhMJpMJMC1evNhkMplM8fHxJjc3N1NVVZWptLTU5OXlZcrMzDSZTCbT999/b+rTp4/JZDKZNm7caOratav5NU2dOtU0ffp0k8lkMj399NOmWbNmmUwmk+n55583PfDAA+Y8gwYNMn355Zcmk8lkGj58uOmHH34wZx8xYoRp/fr1poqKClNAQIDpu+++M5lMJtPmzZtNgGnbtm11XvPq1atN9957r8lkMpluuukm01VXXWX65ptvTCUlJaa2bduaKisrTcnJySYPDw/zPoA596n3u1+/fqaSkhJTdXW16eqrr671Hp4OMD3zzDPmx1OnTjW99957JpPJZDpx4oRp8uTJppdfftl07Ngxk4eHh6m0tNRkMplMJSUl5s81YHryySdNJpPJlJSUZPL09DQlJyebsrOzTW3btjXt2bPHZDKZTP/4xz9MERERphMnTpi2bdtmsrOzM+3YscNkMplMy5cvNw0fPtxkMplMr776qmnatGnmTHl5eSaT6eyfzfpeV32Z/vh+nf5ZNJlMpr59+5q2bdt21td7uqefftrUrl0782fq/vvvN02dOtVkMplMx44dM2fNy8szdezY0ZSWlmYymUymSZMmme6//35TTU2NyWQymY4ePWo+3qxZs0zbtm0zRUREmHbu3GkymUzm9zI+Pt5kMplMf//7302A+TV16tTJNHnyZNOJEydMJpPJNHfuXNOECRNMNTU1puLiYlPv3r1Na9euNZlMdb9z48aNM7377rsmk+nsn505c+aY/vSnP5lOnDhhys/PN3Xt2tU0ceLEOu9JfT/3LpZ+p1wY3QXZAqVnpvMN3zAqcxR+tNxpKOqTuz+XlX1XWuz403ZOa9DUH+vWraN3795UV1fz5z//mXnz5rFkyRI+//xz/vOf/9C3b1/g5FQapwwbNoxZs2Zx6623Mnz4cHr37m2plwFAQkIC5eXl3HnnneZt3t7eFBUVERMTw88//wxAaGgo11xzDT/99BOdOnUC4K677gKga9eu2Nvbk5WVRUBAAOPGjeODDz7gscceY82aNebelejoaG6//XZzz9L999/PbbfdVifTPffcw2WX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rq7m66+/pkePHvj7+1v8fLa2tlx//fWsWbOGTZs2MXHixHrbRUdHU1FRwahRo3BycjJvHzZsGG+99RZffPGFCjCRP9AlSBGxOoMGDeKhhx7i2LFjPP/884wZM4aoqCimT5/Orl276t2ntLSUv//979xzzz1ERUUxatQoZs+ezZ49e+q0feihhxg0aBAVFRWsWrWKO+64g6FDh/L3v//d3Gb79u1MnTqVqKgobrzxRl5++WWKiooYP358rUumCxcuZNCgQcTFxdWba/Xq1QwaNIjo6Ohzvu7ffvuNvLw8hgwZcs62pxw9epSJEycSFRXFDz/8YN5+/Phx3nzzTe68806GDRvGmDFjePLJJzl06FCt/UeNGoWNjQ3ffvstJpOp3nNs3LgRgNGjR9fa3qZNGy677DJ++OEHSktLG5xZpCVQASYiVqm4uJgHHniAlJQUhg8fzqBBg0hISGDOnDl1iojCwkLuv/9+1qxZg7u7OzfeeCODBg3iwIEDzJo1i59++qneczz11FNs2rSJyy67jFtvvdU85uqbb77hqaeeIj09nREjRjBy5EhiY2N59NFHqa6urnWMsWPHmvf5o5qaGjZu3IiHh4f50t3Z7Ny5E4Bu3bqd+w0CUlJSmDFjBkePHuWVV14xF24ZGRlMmTKFjz/+mA4dOnDLLbfQv39/fvvtN+6///5axaKvry99+/blyJEj9Ra3hw4dYv/+/YSGhhIWFlbn+W7dulFZWcm+ffsalFmkpdAlSBFpEjIyMmr1MJ2uW7duXHnllbW2JSYmctNNN/Hwww9ja3vyb8k+ffrw8ssv89lnnzFnzhxz29dee43k5GTmzp3LDTfcYN5+/Phxpk6dyiuvvEK/fv1qXT4DyMvL491336V169bmbUVFRbzxxhs4OzuzcuVKAgMDAZg6dSpz5swhISEBX19fc/tevXrRuXNntm7dyoMPPoizs7P5ud9++42cnBxuu+02HB0dz/ke7d27F1tbW0JCQs7ZNjY2lnnz5mFvb8+bb75Za5/nn3+eY8eOsXjxYvr162fefs899zB16lRefvll1qxZY94+evRo/vvf/7Jx40b69OlT6zxn6v06JTw8HIB9+/bVOpdIS6ceMBFpEjIyMlizZk29//z666912js7OzN9+nRz8QUn77yzs7Nj//795m35+fls27aNPn361Cq+ADw9PbnzzjvJz8839y6d7t57761VfAH861//oqysjFGjRpmLLzg56HzKlCn1vraxY8dSWlrK1q1ba23/+uuvARgzZsyZ3pZacnJycHNzO2ex9ssvv/DII4/g7u7OsmXLahVfBw4cYN++fYwYMaJOQRQYGMgNN9zAoUOHavUiDhw4EA8PD7Zv305JSYl5e3V1NVu2bMHR0fGMN1C0bdsWOHkpVET+Rz1gItIk9OvXj8WLFze4fUBAAC4uLrW22dvb07ZtW4qLi83b9u/fT01NDVVVVfX2sKWnpwOQmprK1VdfXeu5iIiIOu1PzWvVs2fPOs9FRkZiZ2dXZ/uIESP429/+xtdff20uAo8dO8a///1vunfvTufOnc/xak8qLCykXbt2Z22zbds2/vOf/xAcHMwrr7yCp6dnredPXV48fvx4ve/H4cOHzf8fFBQEYC6wPvnkE6Kjo7nxxhsB+Pnnn8nPzycqKgp3d/d685zaXlBQ0KDXKNJSqAATEavk6upa73Y7OztOnDhhflxYWAicvHy3d+/eMx6vvLy8zrZTvTenO9UD9MfCBk7eNejh4VFnu7u7O0OHDmXTpk0cOnSIoKAgvv32W2pqahrc+wXg5OREZWXlWdvExsZSU1NDz54968146v345Zdf+OWXX854nLKyslqPR48ezSeffMLGjRvNBdi5Lj8C5rytWrU6a26RlkYFmIg0a6cKtdtvv50HHnjgvPa1sbE54/GOHz9e57kTJ05QUFBQby/VjTfeyKZNm/jqq6+YNWsW33zzDa6urgwdOrTBeTw8PMjJyTlrm2nTpvGvf/2LTz75BDs7uzqv+VT+WbNmMW7cuAafOzg4mK5duxIfH09ycjLu7u789ttv+Pn51RkXdrpTBV+bNm0afC6RlkBjwESkWevatSs2NjbExsY2yvGCg4MB6u1Ni4+Pp6ampt79unXrRnBwMN999x2//fYb6enpXHfddefVMxQUFERlZSXZ2dlnbOPo6Mjzzz/PVVddxbp163jrrbdqPX/qsuqFvB+nerq++eYbNm/eTE1NjXmaijM5dUnz1OVMETlJBZiINGteXl4MHTqUffv28c9//rPeuazi4uLqvQRZn2uuuQZnZ2e++eYbMjIyzNurq6tZvXr1WfcdO3YshYWFLFq0CKDOTQHn0rt3b3Pes3F0dOS5557j6quvZv369bz55pvm5yIjI4mMjGTr1q11bgqAk714u3fvrve4UVFRtGrVii1btrBx40ZsbW0ZOXLkWbPEx8fXyi4iJ+kSpIg0CWebhgLgrrvuqjNNREM9+uijpKWlsXz5cjZv3ky3bt1wc3MjJyeH/fv3k56ezoYNGxrUG+Xu7s6DDz7IK6+8wtSpU7n22mtxdXVlx44dODo64u3tfcYeoeHDh7NixQpyc3MJDw+vd96ss7nmmmt4++23+e9//3vOS5cODg4sXLiQv/71r3z88ceYTCYeeughAP7617/y8MMP88wzz/DJJ58QGhqKk5MTR48eZd++fRQUFNQ7MayrqyuDBw9m8+bN5Ofnc+WVV55xeSIAk8nEzp076dSpU607RkVEBZiINBGnpqE4k9tuu+2CC7DWrVuzbNkyPvvsM77//nuio6M5ceIEbdu2JSQkhIkTJ9Y7eP5MxowZg7u7Ox988AGbNm3C1dWVAQMGMH36dG677bYzLhPk6urKwIED2bJly3n3fgH4+flxxRVX8MMPPzBr1qxzTkdxqgh7+umn+eSTTzCZTMyaNYsOHTqwevVq1q1bx08//cS3336Lra0tXl5e9OrV66wz7Y8ePZrNmzcDJ2fJP5vff/+d7OxsZs6ced6vVaS5szGdaW0JERE5L+np6UyYMIGhQ4fyzDPP1Ntm4sSJZGVl8dlnn53xTs6z2blzJ4888ghPPvkkw4cPv9jIFrVw4UJ+/fVX/vnPf55xmgqRlkpjwEREzlNRUVGd6SAqKirMA94HDhxY7347duwgOTmZqKioCyq+APr27cuVV17J+++/X2u6jaYmLS2N77//nnvuuUfFl0g9dAlSROQ87d69m5deeokrrriC9u3bU1BQQExMDFlZWfTp04drr722VvvPP/+co0eP8vXXX+Po6Mhdd911Ued/6KGH+O6778jJyTnrGCwjHT16lEmTJnHzzTcbHUWkSdIlSBGR85SWlsbq1avZt28f+fn5APj7+3Pttddyxx131BmrNn78eHJycggMDGT69Ol1ZtwXkZZHBZiIiIjIJaYxYCIiIiKXmAowERERkUtMBZiIiIjIJaYCTEREROQSUwEmIiIicompABMRERG5xFSAiYiIiFxiKsBERERELjEVYCIiIiKX2P8BQSUS4JNKYm4AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,ax = plt.subplots()\n", "\n", "ax.stairs(expectation.project('Em').todense().contents+(bkg_par.value * bkg.binned_data.project('Em').todense().contents), binned_energy_edges, color='purple', label = \"Best fit convolved with response plus background\")\n", "ax.errorbar(binned_energy, expectation.project('Em').todense().contents+(bkg_par.value * bkg.binned_data.project('Em').todense().contents), yerr=np.sqrt(expectation.project('Em').todense().contents+(bkg_par.value * bkg.binned_data.project('Em').todense().contents)), color='purple', linewidth=0, elinewidth=1)\n", "ax.stairs(crab_bkg.binned_data.project('Em').todense().contents, binned_energy_edges, color = 'black', ls = \":\", label = \"Total counts\")\n", "ax.errorbar(binned_energy, crab_bkg.binned_data.project('Em').todense().contents, yerr=np.sqrt(crab_bkg.binned_data.project('Em').todense().contents), 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()" ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:COSIPY]", "language": "python", "name": "conda-env-COSIPY-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.10.15" } }, "nbformat": 4, "nbformat_minor": 5 }