{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# pyphot - A tool for computing photometry from spectra\n",
    "\n",
    "\n",
    "Some examples are provided in this notebook\n",
    "\n",
    "Full documentation available at http://mfouesneau.github.io/docs/pyphot/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import pylab as plt\n",
    "import numpy as np\n",
    "\n",
    "import sys\n",
    "sys.path.append('../')\n",
    "import pyphot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Sun and Vega"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`pyphot` provides convenient interfaces to a spectral representation of the Sun and Vega.\n",
    "In this notebook, we show how they can be used."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Library contains:  243  filters\n"
     ]
    }
   ],
   "source": [
    "import pyphot\n",
    "# get the internal default library of passbands filters\n",
    "lib = pyphot.get_library()\n",
    "print(\"Library contains: \", len(lib), \" filters\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Vega"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose one has a calibrated spectrum and wants to compute the vega magnitude throug the HST WFC3 F110W passband,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Vega magnitude of Vega in HST_WFC3_F110W is : 0.000000 mag\n",
      "AB magnitude of Vega in HST_WFC3_F110W is : 0.751580 mag\n",
      "ST magnitude of Vega in HST_WFC3_F110W is : 2.372379 mag\n"
     ]
    }
   ],
   "source": [
    "# convert to magnitudes\n",
    "import numpy as np\n",
    "\n",
    "# We'll use Vega spectrum as example\n",
    "vega = pyphot.Vega()\n",
    "f = lib['HST_WFC3_F110W']\n",
    "# compute the integrated flux through the filter f\n",
    "# note that it work on many spectra at once\n",
    "fluxes = f.get_flux(vega.wavelength, vega.flux, axis=-1)\n",
    "# convert to vega magnitudes\n",
    "mags = -2.5 * np.log10(fluxes) - f.Vega_zero_mag\n",
    "print(\"Vega magnitude of Vega in {0:s} is : {1:f} mag\".format(f.name, mags))\n",
    "mags = -2.5 * np.log10(fluxes) - f.AB_zero_mag\n",
    "print(\"AB magnitude of Vega in {0:s} is : {1:f} mag\".format(f.name, mags))\n",
    "mags = -2.5 * np.log10(fluxes) - f.ST_zero_mag\n",
    "print(\"ST magnitude of Vega in {0:s} is : {1:f} mag\".format(f.name, mags))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Sun"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The internal reference to the Solar spectrum comes in two flavors: an observed one and a theoretical one.\n",
    "By default, the interface is set to theoretical.\n",
    "\n",
    "In addition, the Sun is at $1\\,au$ but can be set to any distance. Below we instanciate the two flavors and also the Sun if it was at $10\\, pc$ (absolute flux units)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyphot import unit\n",
    "sun_obs = pyphot.Sun(flavor='observed')\n",
    "sun_th = pyphot.Sun()\n",
    "sun_th_10pc = pyphot.Sun(distance=10 * unit['pc'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: VerifyWarning: Invalid keyword for column 2: Column null option (TNULLn) is invalid for binary table columns of type '1E' (got 1.6e+38).  The invalid value will be ignored for the purpose of formatting the data in this column. [astropy.io.fits.column]\n",
      "WARNING: VerifyWarning: Invalid keyword for column 3: Column null option (TNULLn) is invalid for binary table columns of type '1E' (got 1.6e+38).  The invalid value will be ignored for the purpose of formatting the data in this column. [astropy.io.fits.column]\n",
      "WARNING: VerifyWarning: Invalid keyword for column 4: Column null option (TNULLn) is invalid for binary table columns of type '1E' (got 1.6e+38).  The invalid value will be ignored for the purpose of formatting the data in this column. [astropy.io.fits.column]\n",
      "WARNING: VerifyWarning: Invalid keyword for column 5: Column null option (TNULLn) is invalid for binary table columns of type '1E' (got 1.6e+38).  The invalid value will be ignored for the purpose of formatting the data in this column. [astropy.io.fits.column]\n",
      "WARNING: VerifyWarning: Invalid keyword for column 7: Column null option (TNULLn) is invalid for binary table columns of type '1E' (got 1.6e+38).  The invalid value will be ignored for the purpose of formatting the data in this column. [astropy.io.fits.column]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10368ac88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.loglog(sun_obs.wavelength.magnitude, sun_obs.flux.magnitude, label='observed')\n",
    "plt.loglog(sun_th.wavelength.magnitude, sun_th.flux.magnitude, label='theoretical')\n",
    "plt.legend();\n",
    "plt.xlabel('wavelength [{0:s}]'.format(str(sun_obs.wavelength.units)));\n",
    "plt.ylabel('flux [{0:s}]'.format(str(sun_obs.flux.units)));"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One can see the differences between the two flavors.\n",
    "The theoretical spectrum is scaled to match the observed spectrum from 1.5 - 2.5 microns, and then it is used where the observed spectrum ends. The theoretical model of the Sun from Kurucz‘93 atlas using the following parameters when the Sun is at 1 au.\n",
    "\n",
    "|log_Z | T_eff | log_g | V$_{Johnson}$ |\n",
    "|------|-------|-------|---------------|\n",
    "|+0.0  | 5777  |+4.44  | -26.76        |\n",
    "\n",
    "The Sun is also know to have a Johnson V (vega-)magnitude of -26.76 mag.\n",
    "\n",
    "Let's verify this."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "observed     1.84614e+02 -26.7648\n",
      "theoretical  1.84433e+02 -26.7637\n",
      "th. 10pc     4.33499e-11 +4.8084\n"
     ]
    }
   ],
   "source": [
    "f = lib['GROUND_JOHNSON_V']\n",
    "for name, sun in zip(('observed', 'theoretical', 'th. 10pc'), (sun_obs,sun_th, sun_th_10pc)):\n",
    "    flux = f.get_flux(sun.wavelength, sun.flux)\n",
    "    vegamag = f.Vega_zero_mag\n",
    "    print('{0:12s} {1:0.5e} {2:+3.4f}'.format(name, flux, -2.5 * np.log10(flux) - vegamag))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "filter_names = ['GROUND_JOHNSON_B', 'GROUND_JOHNSON_V', 'GROUND_BESSELL_J', 'GROUND_BESSELL_K']\n",
    "filter_names +=  lib.find('GaiaDR2')\n",
    "\n",
    "filters = lib.load_filters(filter_names, lamb=sun_th.wavelength)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         GROUND_JOHNSON_B -26.0701 mag\n",
      "         GROUND_JOHNSON_V -26.7637 mag\n",
      "         GROUND_BESSELL_J -27.8970 mag\n",
      "         GROUND_BESSELL_K -28.2704 mag\n",
      "               GaiaDR2_BP -26.5833 mag\n",
      "                GaiaDR2_G -26.9171 mag\n",
      "               GaiaDR2_RP -27.4022 mag\n",
      "  GaiaDR2_weiler_BPbright -26.5835 mag\n",
      "   GaiaDR2_weiler_BPfaint -26.5560 mag\n",
      "         GaiaDR2_weiler_G -26.9115 mag\n",
      "        GaiaDR2_weiler_RP -27.4055 mag\n",
      "             GaiaDR2v2_BP -26.5868 mag\n",
      "              GaiaDR2v2_G -26.9101 mag\n",
      "             GaiaDR2v2_RP -27.3971 mag\n"
     ]
    }
   ],
   "source": [
    "mags = {}\n",
    "for name, fn in zip(filter_names, filters):\n",
    "    flux = fn.get_flux(sun_th.wavelength, sun_th.flux)\n",
    "    vegamag = fn.Vega_zero_mag\n",
    "    mag = -2.5 * np.log10(flux) - vegamag\n",
    "    mags[name] = mag\n",
    "    print('{0:>25s} {1:+3.4f} mag'.format(name, mag))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         GROUND_JOHNSON_B - GROUND_JOHNSON_V          = 0.6936 mag\n",
      "         GROUND_JOHNSON_V - GROUND_BESSELL_K          = 1.5067 mag\n",
      "         GROUND_BESSELL_J - GROUND_BESSELL_K          = 0.3734 mag\n",
      "               GaiaDR2_BP - GaiaDR2_RP                = 0.8188 mag\n",
      "               GaiaDR2_BP - GaiaDR2_G                 = 0.3338 mag\n",
      "                GaiaDR2_G - GaiaDR2_RP                = 0.4851 mag\n",
      "             GaiaDR2v2_BP - GaiaDR2v2_RP              = 0.8103 mag\n",
      "             GaiaDR2v2_BP - GaiaDR2v2_G               = 0.3233 mag\n",
      "              GaiaDR2v2_G - GaiaDR2v2_RP              = 0.4870 mag\n",
      "  GaiaDR2_weiler_BPbright - GaiaDR2_weiler_RP         = 0.8220 mag\n",
      "   GaiaDR2_weiler_BPfaint - GaiaDR2_weiler_RP         = 0.8495 mag\n",
      "  GaiaDR2_weiler_BPbright - GaiaDR2_weiler_G          = 0.3280 mag\n",
      "   GaiaDR2_weiler_BPfaint - GaiaDR2_weiler_G          = 0.3555 mag\n",
      "         GaiaDR2_weiler_G - GaiaDR2_weiler_RP         = 0.4940 mag\n"
     ]
    }
   ],
   "source": [
    "colors = (('GROUND_JOHNSON_B', 'GROUND_JOHNSON_V'),\n",
    "          ('GROUND_JOHNSON_V', 'GROUND_BESSELL_K'),\n",
    "          ('GROUND_BESSELL_J', 'GROUND_BESSELL_K'),\n",
    "          ('GaiaDR2_BP', 'GaiaDR2_RP'),\n",
    "          ('GaiaDR2_BP', 'GaiaDR2_G'),\n",
    "          ('GaiaDR2_G', 'GaiaDR2_RP'),\n",
    "          ('GaiaDR2v2_BP', 'GaiaDR2v2_RP'),\n",
    "          ('GaiaDR2v2_BP', 'GaiaDR2v2_G'),\n",
    "          ('GaiaDR2v2_G', 'GaiaDR2v2_RP'),\n",
    "          ('GaiaDR2_weiler_BPbright', 'GaiaDR2_weiler_RP'),\n",
    "          ('GaiaDR2_weiler_BPfaint', 'GaiaDR2_weiler_RP'),\n",
    "          ('GaiaDR2_weiler_BPbright', 'GaiaDR2_weiler_G'),\n",
    "          ('GaiaDR2_weiler_BPfaint', 'GaiaDR2_weiler_G'),\n",
    "          ('GaiaDR2_weiler_G', 'GaiaDR2_weiler_RP'))\n",
    "\n",
    "color_values = {}\n",
    "\n",
    "for color in colors:\n",
    "    color_values[color] = mags[color[0]] - mags[color[1]]\n",
    "    print('{0:>25s} - {1:<25s} = {2:3.4f} mag'.format(color[0], color[1], mags[color[0]] - mags[color[1]]))\n",
    "          "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "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.8"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autoclose": false,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}