{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "
\n", "**This is a fixed-text formatted version of a Jupyter notebook.**\n", "\n", "- Try online [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/gammapy/gammapy-webpage/v0.9?urlpath=lab/tree/nddata_demo.ipynb)\n", "- You can contribute with your own notebooks in this\n", "[GitHub repository](https://github.com/gammapy/gammapy/tree/master/tutorials).\n", "- **Source files:**\n", "[nddata_demo.ipynb](../_static/notebooks/nddata_demo.ipynb) |\n", "[nddata_demo.py](../_static/notebooks/nddata_demo.py)\n", "
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# How to use the NDDataArray class" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n", "\n", "This notebook explains how to use the class [gammapy.utils.nddata.NDDataArray](..\/api/gammapy.utils.nddata.NDDataArray.rst)\n", "\n", "The NDDataArray is basically an numpy array with associated axes and convenience methods for interpolation. For now \n", "only the scipy [RegularGridInterpolator](https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.interpolate.RegularGridInterpolator.html)\n", "can be used, i.e. available interpolation methods are \"nearest neighbour\" and \"linear\". A spline interpolator\n", "will be added in the future. The interpolation behaviour (\"log\", \"linear\") can be set for each axis individually.\n", "\n", "The NDDataArray is currently used in the following classes\n", "\n", "* [gammapy.irf.EffectiveAreaTable](..\/api/gammapy.irf.EffectiveAreaTable.rst)\n", "* [gammapy.irf.EffectiveAreaTable2D](..\/api/gammapy.irf.EffectiveAreaTable2D.rst)\n", "* [gammapy.irf.EnergyDispersion](..\/api/gammapy.irf.EnergyDispersion.rst)\n", "* [gammapy.spectrum.CountsSpectrum](..\/api/gammapy.spectrum.CountsSpectrum.rst)\n", "* Probably some more by now ...\n", "\n", "Feedback welcome!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup\n", "\n", "As usual, we'll start with some setup ..." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from gammapy.utils.nddata import NDDataArray, DataAxis, BinnedDataAxis\n", "from gammapy.utils.energy import Energy, EnergyBounds\n", "import numpy as np\n", "import astropy.units as u" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1D example\n", "\n", "Let's start with a simple example. A one dimensional array storing an exposure in ``cm-2 s-1`` as a function of energy. The energy axis is log spaced and thus also the interpolation shall take place in log." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NDDataArray summary info\n", "energy : size = 10, min = 10.000 TeV, max = 100.000 TeV\n", "Data : size = 10, min = 2.000 1 / (cm2 s), max = 20.000 1 / (cm2 s)\n", "\n", "DataAxis\n", "Name: energy\n", "Unit: TeV\n", "Nodes: 10\n", "Interpolation mode: log\n" ] } ], "source": [ "energies = Energy.equal_log_spacing(10, 100, 10, unit=u.TeV)\n", "x_axis = DataAxis(energies, name=\"energy\", interpolation_mode=\"log\")\n", "data = np.arange(20, 0, -2) / u.cm ** 2 / u.s\n", "nddata = NDDataArray(axes=[x_axis], data=data)\n", "print(nddata)\n", "print(nddata.axis(\"energy\"))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 10. 12.91549665 16.68100537 21.5443469 27.82559402\n", " 35.93813664 46.41588834 59.94842503 77.42636827 100. ] TeV\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEKCAYAAAAB0GKPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8FdX9//HXJ4RFEDQCKoICURSR1QQIghjEBSt1p4pLtUotrWvtpm0Vqu33p9WqdamUIrhRioqoRWtRBHGLShQRQQVZJGIlBmQREEI+vz9mEkO4SYaQm8nyfj4e95GZM9vnXi75ZM45c465OyIiIpVJiTsAERGpG5QwREQkEiUMERGJRAlDREQiUcIQEZFIlDBERCQSJQwREYlECUNERCJRwhARkUhS4w6gOrVp08Y7deoUdxgiInVGbm7uV+7eNsq+9SphdOrUiXnz5sUdhohInWFmK6PuqyopERGJRAlDREQiUcIQEZFI6lUbhoh8Z/v27eTl5bF169a4Q5FaoFmzZnTo0IHGjRtX+RxKGCL1VF5eHi1btqRTp06YWdzhSIzcnYKCAvLy8ujcuXOVz5O0KikzO9jMZpvZYjP70MyuCcv3M7MXzWxJ+DOtnOMvDvdZYmYXJytOkfpq69attG7dWslCMDNat269x3ebyWzDKAR+4e5HAlnAFWbWDbgemOXuXYBZ4fpOzGw/YAzQH+gHjCkvsVSH3JXruH/2UnJXrkvWJURioWQhxarju5C0Kil3/wL4IlzeaGaLgfbA6UB2uNvDwBzgN2UOPxl40d3XApjZi8AwYEp1x5m7ch0XTMhhW2ERTVJTmDwqi4yOSctNIiJ1Vo30kjKzTkAf4C3ggDCZFCeV/RMc0h5YVWo9LyxLdO7LzWyemc3Lz8/f7dhylhWwrbCIIofthUXkLCvY7XOISGJ77713pfvcfffdbN68OemxPPTQQ1x55ZUV7jNnzhzeeOONkvVx48bxyCOPJDu0Ss2ZM4fhw4fHHUbyE4aZ7Q1MA6519w1RD0tQ5ol2dPfx7p7p7plt20Z6un0nWemtaZKaQiODxqkpZKW33u1ziEjVVSVh7NixIymxlE0Yo0eP5oc//GFSrlUXJTVhmFljgmQx2d2fCou/NLN24fZ2wJoEh+YBB5da7wCsTkaMGR3TmDwqi+tOOkLVUdLgJas9b86cOWRnZ3POOefQtWtXLrjgAtyde+65h9WrVzNkyBCGDBkCwMyZMxkwYABHH300I0aMYNOmTUAw9M/NN9/MoEGDeOKJJ8jOzubaa6/lmGOOoXv37rz99tsArF27ljPOOIOePXuSlZXFggULdonn3//+N/3796dPnz6ccMIJfPnll6xYsYJx48Zx11130bt3b1599VXGjh3LHXfcAcD8+fPJysqiZ8+enHnmmaxbF3xG2dnZ/OY3v6Ffv34cfvjhvPrqq5HfP8CsWbPo06cPPXr04NJLL+Xbb78F4IUXXqBr164MGjSIp556quRc33zzDZdeeil9+/alT58+PPPMMwB8+OGH9OvXj969e9OzZ0+WLFlSLf92O3H3pLwI7hIeAe4uU347cH24fD3w5wTH7gcsB9LC13Jgv8qumZGR4SISWLRo0W7tP2/FWj/i98975+tn+BG/f97nrVi7xzG0aNHC3d1nz57trVq18lWrVvmOHTs8KyvLX331VXd379ixo+fn57u7e35+vh977LG+adMmd3e/9dZb/Q9/+EPJfrfddlvJuY877jgfNWqUu7u/8sorftRRR7m7+5VXXuljx451d/dZs2Z5r1693N190qRJfsUVV7i7+9q1a72oqMjd3f/xj3/4dddd5+7uY8aM8dtvv73kGqXXe/To4XPmzHF39xtvvNGvueaakjiKj3/uued86NChu3wO5b3/LVu2eIcOHfzjjz92d/eLLrrI77rrrpLyTz75xIuKinzEiBF+6qmnurv7DTfc4I8++qi7u69bt867dOnimzZt8iuvvNIfe+wxd3f/9ttvffPmzbvEkeg7AczziL/Xk/kcxkDgIuADM5sflv0WuBV43MwuAz4DRgCYWSYw2t1HuftaM7sFeCc87mYPG8BFJDkStedV5x13v3796NChAwC9e/dmxYoVDBo0aOcYcnJYtGgRAwcOBGDbtm0MGDCgZPu555670/4jR44EYPDgwWzYsIGvv/6a1157jWnTpgFw/PHHU1BQwPr163c6Li8vj3PPPZcvvviCbdu2Vfpswvr16/n666857rjjALj44osZMWJEyfazzjoLgIyMDFasWBH5/bds2ZLOnTtz+OGHl5z3/vvvJzs7m86dO9OlSxcALrzwQsaPHw8Ed2DPPvtsyZ3P1q1b+eyzzxgwYAB/+tOfyMvL46yzzio5tjols5fUayRuiwAYmmD/ecCoUusTgYnJiU5Eyipuz9teWJSU9rymTZuWLDdq1IjCwsJd9nF3TjzxRKZMSdwhskWLFjutl+0qamYlVT0V7XfVVVdx3XXXcdpppzFnzhzGjh0b9W0kVPzeyntfpfcpvV+iWMuLuZi7M23aNI444oidyo888kj69+/Pc889x8knn8yECRM4/vjjd/etVEhjSYkIEF97XsuWLdm4cSMAWVlZvP766yxduhSAzZs388knn5R77NSpUwF47bXX2Geffdhnn30YPHgwkydPBoK2gzZt2tCqVaudjlu/fj3t2wcdLx9++OGEsZS2zz77kJaWVtI+8eijj5bcbeyJrl27smLFipL3W3zerl27snz5cj799FOAnRLoySefzL333luSbN577z0Ali1bRnp6OldffTWnnXZawrabPaWhQUSkREbHtBrv+HH55Zdzyimn0K5dO2bPns1DDz3EyJEjSxp///jHP5ZU2ZSVlpbGMcccw4YNG5g4MaiQGDt2LD/60Y/o2bMnzZs33ykhFBs7diwjRoygffv2ZGVlsXz5cgC+//3vc8455/DMM89w77337nTMww8/zOjRo9m8eTPp6elMmjRpj997s2bNmDRpEiNGjKCwsJC+ffsyevRomjZtyvjx4zn11FNp06YNgwYNYuHChQDceOONXHvttfTs2RN3p1OnTsyYMYOpU6fy2GOP0bhxYw488EBuuummPY6vLKvolqiuyczMdE2gJBJYvHgxRx55ZNxhJE12djZ33HEHmZmZcYdSZyT6TphZrrtH+hBVJSUiIpGoSkpE6qQ5c+bEHUKDozsMERGJRAlDREQiUcIQEZFIlDBERCQSJQwRSZq6Prx5VJ06deKrr76qamjVfp5kUcIQkVjV5uHNZWdKGCKSdHV1ePP8/HzOPvts+vbtS9++fXn99dcBKCgo4KSTTqJPnz785Cc/STgm1AMPPMCvf/3rkvWHHnqIq666CoAzzjiDjIwMjjrqqJJBBUtbsWIF3bt3L1m/4447Ssa7+vTTTxk2bBgZGRkce+yxfPTRRwA88cQTdO/enV69ejF48ODd/jeKJOqwtnXhpeHNRb6zy1DWE7+36+ut8cG2b79JvP3dYLhs3/TVrtsiqOvDm48cObIkzpUrV3rXrl3d3f2qq64qiWvGjBkOlLyHYmvW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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "eval_energies = np.linspace(2, 6, 20) * 1e4 * u.GeV\n", "eval_exposure = nddata.evaluate(energy=eval_energies, method=\"linear\")\n", "\n", "plt.plot(\n", " nddata.axis(\"energy\").nodes.value,\n", " nddata.data.value,\n", " \".\",\n", " label=\"Interpolation nodes\",\n", ")\n", "print(nddata.axis(\"energy\").nodes)\n", "plt.plot(\n", " eval_energies.to(\"TeV\").value,\n", " eval_exposure,\n", " \"--\",\n", " label=\"Interpolated values\",\n", ")\n", "plt.xlabel(\"{} [{}]\".format(nddata.axes[0].name, nddata.axes[0].unit))\n", "plt.ylabel(\"{} [{}]\".format(\"Exposure\", nddata.data.unit))\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2D example\n", "\n", "Another common use case is to store a Quantity as a function of field of view offset and energy. The following shows how to use the NDDataArray to slice the data array at any values of offset and energy" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NDDataArray summary info\n", "energy : size = 50, min = 1.023 TeV, max = 9.772 TeV\n", "offset : size = 4, min = 0.000 deg, max = 2.000 deg\n", "Data : size = 200, min = 3.763 1 / (cm2 s TeV), max = 27.082 1 / (cm2 s TeV)\n", "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "energy_data = EnergyBounds.equal_log_spacing(1, 10, 50, unit=u.TeV)\n", "energy_axis = BinnedDataAxis(\n", " lo=energy_data.lower_bounds,\n", " hi=energy_data.upper_bounds,\n", " name=\"energy\",\n", " interpolation_mode=\"log\",\n", ")\n", "offset_data = np.linspace(0, 2, 4) * u.deg\n", "offset_axis = DataAxis(offset_data, name=\"offset\")\n", "\n", "data_temp = 10 * np.exp(-energy_data.log_centers.value / 10)\n", "data = np.outer(data_temp, (offset_data.value + 1))\n", "\n", "nddata2d = NDDataArray(\n", " axes=[energy_axis, offset_axis], data=data * u.Unit(\"cm-2 s-1 TeV-1\")\n", ")\n", "\n", "print(nddata2d)\n", "extent_x = nddata2d.axis(\"energy\").bins[[0, -1]].value\n", "extent_y = nddata2d.axis(\"offset\").nodes[[0, -1]].value\n", "extent = extent_x[0], extent_x[1], extent_y[0], extent_y[1]\n", "plt.imshow(nddata2d.data.value, extent=extent, aspect=\"auto\")\n", "plt.xlabel(\"Energy\")\n", "plt.ylabel(\"Offset\")\n", "plt.colorbar();" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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i8Vi4eGHH+YnP/kJcXFxNeufeeYZnnnmGT755BPeeOMNPvzww3qf27FjBw8//DD29vaEhYUxZcoUAM6cOdNg+/Py8igoKGDMmDEAfPe732Xt2rU3++e5LV0+8Fer7ga6K+4ujmUfY8npJSw7s4zFpxYzNmwsD/d5mHHh47C3s7d1U4VoUzc7M28r/fr149NPP6237tq1ayQnJ9OjR496XSDX69WrF4cPH2b9+vW8+OKLzJgxg/nz59OvXz/27t17222KiIggOTm55n1KSgphYWEN7rtgwQLi4+P56U9/2uD2hx56iB/96EcNbmss4TXU/tzc3OY2v0W6VB9/c1R3A701/i0237eZZxOe5VzeOZ7d+ixzVs7hnyf+SX5Zvq2bKUSXMnXqVIqLi/noo48Ac4b7n//5nzz22GO4ud28yzUtLQ03Nze+973vsXDhQo4cOULv3r3JysqqCZwVFRV8++23AHh6elJQUNBkm+bOnctHH32E1pp9+/bh7e3d4FXDSy+9RH5+Pu+880699efOnav5e926dcTHx9/w2QkTJrB06VIqKytJT09n27ZtAI2239fXF09PT/bt2wfA0qVLm/wdt6PbBf66AlwDeGrQU3zxnS/448Q/Euoeyh8P/5Gpy6fy8u6XOZVzytZNFKJLUEqxcuVKli9fTnx8PL169cLFxYVf//rXTX72+PHjjBgxgoSEBN58801eeuklnJycWLFiBS+88AKDBg0iISGBPXv2AOaWyR/+8Ic1g7svv/wyq1evvuF7Z8+eTVxcHD179uTf//3f+etf/1qzLSEhATBXAW+++SYnT55kyJAhJCQk8P777wPwl7/8hX79+pGQkMDbb799QzcPwPz584mPj2fAgAH86Ec/YuLEiQA3bf8HH3zAggULGD16NFprvL29b/Ffu2mqI97lMmzYMG2riVjO5p5l6emlrL24lhJLCYMCB/FQn4eYET0DJ3snm7RJiJY6deoUd9xxh62bIZqhsLAQDw8PAN566y3S09P585//XG+fhv57KqUO62ZWQO7WZ/wN6eXbi5dHv8yW+7fw/PDnySvL48WdLzJt+TTeOfwOqYWptm6iEKILW7duHQkJCfTv35+dO3fy0ksvtfox5Iy/CVW6iv3p+1l2ZhnbkrehtWZCxAQe7P0gY8PHYqckd4qOT874u5aWnvF3m7t6bpedsmN0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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "offsets = [0.23, 1.23, 2] * u.deg\n", "eval_energies = Energy.equal_log_spacing(3, 8, 20, u.TeV)\n", "\n", "for offset in offsets:\n", " slice_ = nddata2d.evaluate(offset=offset, energy=eval_energies)\n", " plt.plot(eval_energies.value, slice_, label=\"Offset: {}\".format(offset))\n", "plt.xlabel(\"Energy [TeV]\")\n", "plt.legend();" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.0" }, "nbsphinx": { "orphan": true }, "toc": { "colors": { "hover_highlight": "#DAA520", "navigate_num": "#000000", "navigate_text": "#333333", "running_highlight": "#FF0000", "selected_highlight": "#FFD700", "sidebar_border": "#EEEEEE", "wrapper_background": "#FFFFFF" }, "moveMenuLeft": true, "nav_menu": { "height": "101px", "width": "253px" }, "navigate_menu": true, "number_sections": false, "sideBar": true, "threshold": 4, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false, "widenNotebook": false } }, "nbformat": 4, "nbformat_minor": 2 }