{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Manipulating FileFunction Spectra" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial demonstrates some of the methods that can be used to manipulate FileFunction sources in fermipy. For this example we'll use the draco analysis." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-02-25T23:14:13.158239Z", "iopub.status.busy": "2026-02-25T23:14:13.158062Z", "iopub.status.idle": "2026-02-25T23:14:13.796714Z", "shell.execute_reply": "2026-02-25T23:14:13.795966Z" }, "scrolled": false }, "outputs": [], "source": [ "import os\n", "if os.path.isfile('../data/draco.tar.gz'):\n", " !tar xzf ../data/draco.tar.gz\n", "else:\n", " !curl -OL --output-dir ./../data/ https://raw.githubusercontent.com/fermiPy/fermipy-extras/master/data/draco.tar.gz\n", " !tar xzf ./../data/draco.tar.gz\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-02-25T23:14:13.799019Z", "iopub.status.busy": "2026-02-25T23:14:13.798831Z", "iopub.status.idle": "2026-02-25T23:14:25.425668Z", "shell.execute_reply": "2026-02-25T23:14:25.425108Z" }, "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:15 INFO GTAnalysis.__init__(): \n", "--------------------------------------------------------------------------------\n", "fermipy version 1.4.1 \n", "ScienceTools version 2.2.0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:15 INFO GTAnalysis.setup(): Running setup.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:15 INFO GTBinnedAnalysis.setup(): Running setup for component 00\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:15 INFO GTBinnedAnalysis._select_data(): Skipping data selection.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:15 INFO GTBinnedAnalysis.setup(): Using external LT cube.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'Prefactor': 0, 'Index1': 1, 'Scale': 2, 'Cutoff': 3, 'Index2': 4}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:16 INFO GTBinnedAnalysis._create_expcube(): Skipping gtexpcube.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING: FITSFixedWarning: 'datfix' made the change 'Set DATEREF to '2001-01-01T00:01:04.184' from MJDREF.\n", "Set MJD-OBS to 54682.655283 from DATE-OBS.\n", "Set MJD-END to 56874.155007 from DATE-END'. [astropy.wcs.wcs]\n", "2026-02-25 23:14:16 INFO GTBinnedAnalysis._create_srcmaps(): Skipping gtsrcmaps.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:16 INFO GTBinnedAnalysis.setup(): Finished setup for component 00\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:16 INFO GTBinnedAnalysis._create_binned_analysis(): Creating BinnedAnalysis for component 00.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:22 INFO GTAnalysis.setup(): Initializing source properties\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-02-25 23:14:25 INFO GTAnalysis.setup(): Finished setup.\n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "from fermipy.gtanalysis import GTAnalysis\n", "gta = GTAnalysis('draco/config.yaml')\n", "gta.setup()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By default all sources are initialized with parametric spectral models (PowerLaw, etc.). The spectral model of a source an be updated by calling ``set_source_spectrum()``." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-02-25T23:14:25.427549Z", "iopub.status.busy": "2026-02-25T23:14:25.427368Z", "iopub.status.idle": "2026-02-25T23:14:25.431107Z", "shell.execute_reply": "2026-02-25T23:14:25.430630Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name : 3FGL J1725.3+5853\n", "Associations : ['3FGL J1725.3+5853', '7C 1724+5854', '2FGL J1725.2+5853']\n", "RA/DEC : 261.332/ 58.887\n", "GLON/GLAT : 87.497/ 33.997\n", "TS : nan\n", "Npred : 278.21\n", "Flux : 9.942e-10 +/- nan\n", "EnergyFlux : 2.323e-06 +/- nan\n", "SpatialModel : PointSource\n", "SpectrumType : PowerLaw\n", "Spectral Parameters\n", "b'Prefactor' : 1.627e-13 +/- nan\n", "b'Index' : -2.179 +/- nan\n", "b'Scale' : 1701 +/- nan\n" ] } ], "source": [ "print(gta.roi['3FGL J1725.3+5853'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Running ``set_source_spectrum()`` with no additional arguments will substitute the source spectrum with a FileFunction with the same distribution in differential flux. The normalization parameter is defined such that 1.0 corresponds to the normalization of the original source spectrum. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-02-25T23:14:25.432843Z", "iopub.status.busy": "2026-02-25T23:14:25.432518Z", "iopub.status.idle": "2026-02-25T23:14:25.499668Z", "shell.execute_reply": "2026-02-25T23:14:25.499111Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name : 3FGL J1725.3+5853\n", "Associations : ['3FGL J1725.3+5853', '7C 1724+5854', '2FGL J1725.2+5853']\n", "RA/DEC : 261.332/ 58.887\n", "GLON/GLAT : 87.497/ 33.997\n", "TS : 286.20\n", "Npred : 278.21\n", "Flux : 9.942e-10 +/- nan\n", "EnergyFlux : 2.323e-06 +/- nan\n", "SpatialModel : PointSource\n", "SpectrumType : FileFunction\n", "Spectral Parameters\n", "b'Normalization': 1 +/- 0\n" ] } ], "source": [ "gta.set_source_spectrum('3FGL J1725.3+5853','FileFunction')\n", "print(gta.roi['3FGL J1725.3+5853'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The differential flux of a FileFunction source can be accessed or modified at runtime by calling the ``get_source_dfde()`` and ``set_source_dfde()`` methods:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-02-25T23:14:25.501254Z", "iopub.status.busy": "2026-02-25T23:14:25.501086Z", "iopub.status.idle": "2026-02-25T23:14:25.728770Z", "shell.execute_reply": "2026-02-25T23:14:25.728135Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "60946.41175392648\n", "61037.23412266739\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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5Ze0adOGFStW0KtXL7PjlFgnT56kdu3aDBo0iKlTp5odx2XoklYpdeU0sdzY/5YdAH9/f+rVq0dcXJwJiVxLSEhInt5rV9osXryYzZs364NKCmz27NmkpKTw0ksvmR3FpajwiORDYmIie/bsoX79+mZHKXGys7NxOBycP3+eqVOnsm7dOv0f8v84d+4cY8aM4Y033qBKlSpmxymxnnnmGWw2GwEBATz88MN88803ZkcqUb766iuCgoI4dOgQjRs3xmazUb58eUaOHElSUpLZ8UosFR6RfHjmmWdISUlh/PjxZkcpcUaPHo2Hhwfly5fn+eef5/3332fEiBFmxypRRo8eTe3atRk1apTZUUqkwMBAnnvuOWbMmMGmTZt47733iIuLo3Xr1qxbt87seCXGyZMnuXz5Mr1796ZPnz5s2LCBsWPHsnDhQjp37ozuVLkBp5R658+fdwLOqKgos6OUaK+88ooTcH7wwQdmRymRjh8/7ty5c6fz888/d44cOdJpsVicb731ltmxSoyVK1c6PT09nT/++OPVZU8++aTTz8/PxFQl38WLF51VqlRxRkREmB2lxKhVq5YTcE6ZMuWa5e+++64TcK5fv96kZCWbzvCI5MGkSZN47bXXeP311/njH/9odpwSqVq1atx777107tyZadOmMXz4cCIjIzl//rzZ0Uxnt9t55pln+NOf/kRYWBiXLl3i0qVLZGRkADlPuqWkpJicsmQqW7YsjzzyCD/88AOpqalmxykRgoODAXj44YevWd6pUycA9uzZU+yZXIEKj8gtTJo0iYkTJzJx4kRefvlls+O4jGbNmuFwODh27JjZUUx34cIFzp49yzvvvEO5cuWuTkuXLiUlJYVy5coxYMAAs2OWWM7fPVUqEBERkevyK38ni0Uf7bnRIxQiNzF58mQmTpzIK6+8QlRUlNlxXMqmTZuwWCzccccdZkcxXcWKFdm0adN1y9944w02b95MTEwMISEhJiQr+S5evMhnn31G48aN8fb2NjtOidCzZ09mzpxJTEwMd99999Xla9asAXKGhJDrqfCUYnl5631p9s477/Dqq6/SsWNHunTpct1Ir/o/lRzDhw8nICCAZs2aUaFCBS5cuMCKFSv48MMPGTt2LKGhoWZHNJ23tzetW7e+bvn8+fOxWq25riuN+vfvf/XSaEhICD/99BPvvPMOZ8+eZf78+WbHKzE6dOhA165d+etf/0p2djYtWrRg165dTJo0iUceeYT77rvP7IglkgYeLMXy+tb70qp169Zs3rz5huv1n06OefPmMW/ePA4ePMilS5fw9/enUaNGDBs2jCeeeMLseCXa4MGDNfDg77zxxht8+OGHxMbGYrfbCQoK4r777iMyMpKmTZuaHa9ESU1NZdKkSURHR3P69GnCwsIYMGAAUVFReHl5mR2vRFLhEREREbenO5tERETE7anwiIiIiNtT4RERERG3p8IjIiIibk+FR0RERNyeCo+IiIi4PRUeERERcXsqPCIiIuL2VHhERETE7anwiIiIiNtT4RERERG39/9VA7mL3H4LLgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x, y = gta.get_source_dnde('3FGL J1725.3+5853')\n", "y1 = 1E-12*10**(-2.0*(x-3.0))*np.exp(-10**(x-3.0))\n", "\n", "plt.clf()\n", "plt.figure()\n", "plt.plot(x,y)\n", "plt.plot(x,y1)\n", "plt.gca().set_yscale('log')\n", "plt.gca().set_ylim(1E-17,1E-5)\n", "print(gta.like())\n", "gta.set_source_dnde('3FGL J1725.3+5853',y1)\n", "print(gta.like())\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calling ``set_source_spectrum()`` with the optional dictionary argument can be used to explicitly set the parameters of the new spectral model. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-02-25T23:14:25.730462Z", "iopub.status.busy": "2026-02-25T23:14:25.730283Z", "iopub.status.idle": "2026-02-25T23:14:25.743223Z", "shell.execute_reply": "2026-02-25T23:14:25.742753Z" } }, "outputs": [ { "data": { "text/plain": [ "60946.40599616774" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gta.set_source_spectrum('3FGL J1725.3+5853','PowerLaw',{'Index' : {'value' : -2.179}, 'Scale' : {'value' : 1701}, 'Prefactor' : {'value' : 1.627e-13}})\n", "gta.like()" ] } ], "metadata": { "kernelspec": { "display_name": "fermipy", "language": "python", "name": "python3" }, "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.9.23" } }, "nbformat": 4, "nbformat_minor": 0 }