{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# AKARI-SEP master catalogue\n",
    "\n",
    "This notebook presents the merge of the various pristine catalogues to produce HELP mater catalogue on AKARI-SEP."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This notebook was run with herschelhelp_internal version: \n",
      "0246c5d (Thu Jan 25 17:01:47 2018 +0000) [with local modifications]\n"
     ]
    }
   ],
   "source": [
    "from herschelhelp_internal import git_version\n",
    "print(\"This notebook was run with herschelhelp_internal version: \\n{}\".format(git_version()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "#%config InlineBackend.figure_format = 'svg'\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rc('figure', figsize=(10, 6))\n",
    "\n",
    "import os\n",
    "import time\n",
    "\n",
    "from astropy import units as u\n",
    "from astropy.coordinates import SkyCoord\n",
    "from astropy.table import Column, Table\n",
    "import numpy as np\n",
    "from pymoc import MOC\n",
    "\n",
    "from herschelhelp_internal.masterlist import merge_catalogues, nb_merge_dist_plot, specz_merge\n",
    "from herschelhelp_internal.utils import coords_to_hpidx, ebv, gen_help_id, inMoc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "TMP_DIR = os.environ.get('TMP_DIR', \"./data_tmp\")\n",
    "OUT_DIR = os.environ.get('OUT_DIR', \"./data\")\n",
    "SUFFIX = os.environ.get('SUFFIX', time.strftime(\"_%Y%m%d\"))\n",
    "\n",
    "try:\n",
    "    os.makedirs(OUT_DIR)\n",
    "except FileExistsError:\n",
    "    pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## I - Reading the prepared pristine catalogues"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "vhs = Table.read(\"{}/VISTA-VHS.fits\".format(TMP_DIR))\n",
    "simes = Table.read(\"{}/SIMES_8.fits\".format(TMP_DIR))\n",
    "des = Table.read(\"{}/DES_DR2.fits\".format(TMP_DIR))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## II - Merging tables\n",
    "\n",
    "We first merge the optical catalogues and then add the infrared ones: WFC, DXS, SpARCS, HSC, PS1, SERVS, SWIRE.\n",
    "\n",
    "At every step, we look at the distribution of the distances separating the sources from one catalogue to the other (within a maximum radius) to determine the best cross-matching radius."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### WFC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue = vhs\n",
    "master_catalogue['vhs_ra'].name = 'ra'\n",
    "master_catalogue['vhs_dec'].name = 'dec'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Add SIMES"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n52+T3ghRZqFhoAIhy60VjXoBJxr2gk84pBrvcVNdRNFwTLWRkKKR3PO1kbBqoyHVRrzHkZDqomHV\nRUKqjYbwf8mJAAAPTElEQVRLNpLknNPodFIDY7MaHJ/VwNiMdr82qqePnFNdNKStPc26sbdFm7oa\nFSVkLYoFdTHc7du3u927dwdy7mJks073fOEJSdLffuYtCvn0H3cxc9cojnNOZybntP/0pF49M6VT\nE3PKZHPrC/p7mnXbhnbdtKZFN1zToo2dDfwGBixT2azTdDI9P+oyNZfS5Jx3P5vW5FxK4zMpTczm\nwtLYzPn7semUkpe5dFbIpFg0rPqaiGI1YdVFQ4pFw97j8HzQmQ890VwYOh+abD5MVcNUWjqb1ZGh\nuF4ZnNS+05OaTWVUGwnpDb0t2nHtKvW2xuaPXYlrrMzsOefc9oWOY8TqMv5+3xkdPBvXFz50s2+h\nCv4yM61uiWl1S0x393fr/bdco+dPjOvZY6N69tiovrnrhL76VO4f1NpISP2rm3XDNc3a0t2kjZ2N\n2tjVoJ7mOkYjAZ+lMllNzaW9NUK5tULTyfPriGa8kJSbFktrJpHJ3c9Pl2UuOGYmmVnwnGEz1dfk\nQlHuPqK1bfXa0h1RQ20uPM3f1+Tua6Mhhfj//7xIKKQtPc3a0tOs92edjgzH9fLghF4cGNfu42Na\n2xbT7deu0o29LUGXWtEYsbqEgbEZfeRPdyocMv3Dv32rr7+JMGJVPpms03A8odPjszo1Pqusk/ae\nmtDk3Pn2DQ01YW3satT6VQ3qa6/X2vaY1rbXq6+9XqtbYlXxWyiwGIl0LvxMeQup89NiU3PnF1Hn\n7yfn79Oams2NIo3PJJUucgot4u1Wq/WmzPJTZLVh794bKaqJXDxV5k2Xzd9yI0n8klQas8mM9pwY\n085j5zQST6q+JqxfuGO97r193QWjWNWu2BErgtVFDpyZ1C88+Kxmkxn9z1+6TW9c5+91AQlWwXLO\naSqR1vBUIneL5+5z6y2SF+ysCYdM3U216mmp0+rWmFY316mnpU6dTbXqbKpVV1PucXNdhH/QERjn\nnBLprLe7LPO6xdbn7zOKJ1KKJ87vRJtKpC/YiTYxmypqXVE0bN46oPBFISekOm/KLP96jbdmaH5K\nLRqeX3PELy7Li3NOR4an9czRczpwJnd915+9oUe/eMd63bahver/HWQq8Crsem1Un/jqLsVqwvr2\n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\nWo6cagAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1d2f4db6d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nb_merge_dist_plot(\n",
    "    SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n",
    "    SkyCoord(simes['simes_ra'], simes['simes_dec'])\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Given the graph above, we use 0.8 arc-second radius\n",
    "master_catalogue = merge_catalogues(master_catalogue, simes, \"simes_ra\", \"simes_dec\", radius=0.8*u.arcsec)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Add DES"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1d2f3a5208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nb_merge_dist_plot(\n",
    "    SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n",
    "    SkyCoord(des['des_ra'], des['des_dec'])\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Given the graph above, we use 0.8 arc-second radius\n",
    "master_catalogue = merge_catalogues(master_catalogue, des, \"des_ra\", \"des_dec\", radius=0.8*u.arcsec)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Cleaning\n",
    "\n",
    "When we merge the catalogues, astropy masks the non-existent values (e.g. when a row comes only from a catalogue and has no counterparts in the other, the columns from the latest are masked for that row). We indicate to use NaN for masked values for floats columns, False for flag columns and -1 for ID columns."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for col in master_catalogue.colnames:\n",
    "    if \"m_\" in col or \"merr_\" in col or \"f_\" in col or \"ferr_\" in col or \"stellarity\" in col:\n",
    "        master_catalogue[col].fill_value = np.nan\n",
    "    elif \"flag\" in col:\n",
    "        master_catalogue[col].fill_value = 0\n",
    "    elif \"id\" in col:\n",
    "        master_catalogue[col].fill_value = -1\n",
    "        \n",
    "master_catalogue = master_catalogue.filled()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "&lt;Table length=10&gt;\n",
       "<table id=\"table139763322803368-873058\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>idx</th><th>vhs_id</th><th>ra</th><th>dec</th><th>vhs_stellarity</th><th>m_vista_j</th><th>merr_vista_j</th><th>m_ap_vista_j</th><th>merr_ap_vista_j</th><th>m_vista_h</th><th>merr_vista_h</th><th>m_ap_vista_h</th><th>merr_ap_vista_h</th><th>m_vista_ks</th><th>merr_vista_ks</th><th>m_ap_vista_ks</th><th>merr_ap_vista_ks</th><th>f_vista_j</th><th>ferr_vista_j</th><th>flag_vista_j</th><th>f_ap_vista_j</th><th>ferr_ap_vista_j</th><th>f_vista_h</th><th>ferr_vista_h</th><th>flag_vista_h</th><th>f_ap_vista_h</th><th>ferr_ap_vista_h</th><th>f_vista_ks</th><th>ferr_vista_ks</th><th>flag_vista_ks</th><th>f_ap_vista_ks</th><th>ferr_ap_vista_ks</th><th>vhs_flag_cleaned</th><th>vhs_flag_gaia</th><th>flag_merged</th><th>simes_id</th><th>f_irac_i1</th><th>ferr_irac_i1</th><th>f_ap_irac_i1</th><th>ferr_ap_irac_i1</th><th>simes_stellarity</th><th>f_irac_i2</th><th>ferr_irac_i2</th><th>f_ap_irac_i2</th><th>ferr_ap_irac_i2</th><th>m_irac_i1</th><th>merr_irac_i1</th><th>flag_irac_i1</th><th>m_ap_irac_i1</th><th>merr_ap_irac_i1</th><th>m_irac_i2</th><th>merr_irac_i2</th><th>flag_irac_i2</th><th>m_ap_irac_i2</th><th>merr_ap_irac_i2</th><th>servs_flag_cleaned</th><th>servs_flag_gaia</th><th>des_id</th><th>des_stellarity</th><th>m_decam_g</th><th>merr_decam_g</th><th>m_ap_decam_g</th><th>merr_ap_decam_g</th><th>m_decam_r</th><th>merr_decam_r</th><th>m_ap_decam_r</th><th>merr_ap_decam_r</th><th>m_decam_i</th><th>merr_decam_i</th><th>m_ap_decam_i</th><th>merr_ap_decam_i</th><th>m_decam_z</th><th>merr_decam_z</th><th>m_ap_decam_z</th><th>merr_ap_decam_z</th><th>m_decam_y</th><th>merr_decam_y</th><th>m_ap_decam_y</th><th>merr_ap_decam_y</th><th>f_decam_g</th><th>ferr_decam_g</th><th>flag_decam_g</th><th>f_ap_decam_g</th><th>ferr_ap_decam_g</th><th>f_decam_r</th><th>ferr_decam_r</th><th>flag_decam_r</th><th>f_ap_decam_r</th><th>ferr_ap_decam_r</th><th>f_decam_i</th><th>ferr_decam_i</th><th>flag_decam_i</th><th>f_ap_decam_i</th><th>ferr_ap_decam_i</th><th>f_decam_z</th><th>ferr_decam_z</th><th>flag_decam_z</th><th>f_ap_decam_z</th><th>ferr_ap_decam_z</th><th>f_decam_y</th><th>ferr_decam_y</th><th>flag_decam_y</th><th>f_ap_decam_y</th><th>ferr_ap_decam_y</th><th>des_flag_cleaned</th><th>des_flag_gaia</th></tr></thead>\n",
       "<thead><tr><th></th><th></th><th>deg</th><th>deg</th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead>\n",
       "<tr><td>0</td><td>473240268068</td><td>74.0205586698</td><td>-52.5468267737</td><td>0.9</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>10.5228</td><td>0.000334772</td><td>12.0846</td><td>0.000542435</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>224332.0</td><td>69.1696</td><td>False</td><td>53230.4</td><td>26.594</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>1</td><td>473241073155</td><td>72.5319041476</td><td>-54.1991924401</td><td>0.993865</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>12.4234</td><td>0.000781284</td><td>12.2797</td><td>0.000546547</td><td>10.7157</td><td>0.000283474</td><td>12.1113</td><td>0.000581437</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>38960.2</td><td>28.0353</td><td>False</td><td>44477.0</td><td>22.3892</td><td>187819.0</td><td>49.0375</td><td>False</td><td>51937.1</td><td>27.8135</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>2</td><td>473240268075</td><td>74.0224515147</td><td>-52.5476032209</td><td>0.993865</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.2501</td><td>0.000452232</td><td>12.1402</td><td>0.000557317</td><td>12.0647</td><td>0.000694496</td><td>11.9762</td><td>0.00057904</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>114801.0</td><td>47.8169</td><td>False</td><td>50571.6</td><td>25.9588</td><td>54215.6</td><td>34.6793</td><td>False</td><td>58817.6</td><td>31.3684</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>3</td><td>473240268074</td><td>74.0222147308</td><td>-52.5467514449</td><td>0.9</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>10.6836</td><td>0.000310992</td><td>12.1597</td><td>0.00056267</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>193452.0</td><td>55.4113</td><td>False</td><td>49671.1</td><td>25.7414</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>4</td><td>473241073156</td><td>72.5325882644</td><td>-54.1996653806</td><td>0.993865</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>14.3291</td><td>0.00324278</td><td>12.3684</td><td>0.00057022</td><td>11.5011</td><td>0.000421049</td><td>12.2385</td><td>0.000617738</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>6735.19</td><td>20.1161</td><td>False</td><td>40986.8</td><td>21.5259</td><td>91112.0</td><td>35.3332</td><td>False</td><td>46193.9</td><td>26.2824</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>5</td><td>473261606593</td><td>69.8075179383</td><td>-54.1758906408</td><td>0.993865</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>12.5002</td><td>0.00130824</td><td>12.0244</td><td>0.000574719</td><td>12.0012</td><td>0.00058516</td><td>11.9361</td><td>0.000579327</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>36300.2</td><td>43.7394</td><td>False</td><td>56263.8</td><td>29.7824</td><td>57480.4</td><td>30.9792</td><td>False</td><td>61033.9</td><td>32.5665</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>6</td><td>473193631103</td><td>74.0790931604</td><td>-52.3797058828</td><td>0.9</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.9629</td><td>0.00055748</td><td>12.18</td><td>0.000584537</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>59542.1</td><td>30.5724</td><td>False</td><td>48753.4</td><td>26.2478</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>2</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>7</td><td>473193626813</td><td>72.5373778649</td><td>-52.413495839</td><td>0.993865</td><td>11.2308</td><td>0.000317518</td><td>11.93</td><td>0.000526698</td><td>10.6199</td><td>0.000265465</td><td>12.1789</td><td>0.000585264</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>116862.0</td><td>34.1757</td><td>False</td><td>61376.4</td><td>29.7741</td><td>205136.0</td><td>50.1564</td><td>False</td><td>48802.4</td><td>26.3069</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>8</td><td>473261606601</td><td>69.8080872881</td><td>-54.1764864978</td><td>0.9</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.0584</td><td>0.000318878</td><td>12.067</td><td>0.00058775</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>136980.0</td><td>40.2308</td><td>False</td><td>54098.1</td><td>29.2853</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>9</td><td>473261606598</td><td>69.8096965887</td><td>-54.1759148497</td><td>0.9</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.5238</td><td>0.000639829</td><td>12.0972</td><td>0.000596377</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>89221.3</td><td>52.5785</td><td>False</td><td>52616.2</td><td>28.9012</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "</table><style>table.dataTable {clear: both; width: auto !important; margin: 0 !important;}\n",
       ".dataTables_info, .dataTables_length, .dataTables_filter, .dataTables_paginate{\n",
       "display: inline-block; margin-right: 1em; }\n",
       ".paginate_button { margin-right: 5px; }\n",
       "</style>\n",
       "<script>\n",
       "require.config({paths: {\n",
       "    datatables: 'https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min'\n",
       "}});\n",
       "require([\"datatables\"], function(){\n",
       "    console.log(\"$('#table139763322803368-873058').dataTable()\");\n",
       "    $('#table139763322803368-873058').dataTable({\n",
       "        \"order\": [],\n",
       "        \"iDisplayLength\": 50,\n",
       "        \"aLengthMenu\": [[10, 25, 50, 100, 500, 1000, -1], [10, 25, 50, 100, 500, 1000, 'All']],\n",
       "        \"pagingType\": \"full_numbers\"\n",
       "    });\n",
       "});\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "master_catalogue[:10].show_in_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## III - Merging flags and stellarity\n",
    "\n",
    "Each pristine catalogue contains a flag indicating if the source was associated to a another nearby source that was removed during the cleaning process.  We merge these flags in a single one."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "flag_cleaned_columns = [column for column in master_catalogue.colnames\n",
    "                        if 'flag_cleaned' in column]\n",
    "\n",
    "flag_column = np.zeros(len(master_catalogue), dtype=bool)\n",
    "for column in flag_cleaned_columns:\n",
    "    flag_column |= master_catalogue[column]\n",
    "    \n",
    "master_catalogue.add_column(Column(data=flag_column, name=\"flag_cleaned\"))\n",
    "master_catalogue.remove_columns(flag_cleaned_columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Each pristine catalogue contains a flag indicating the probability of a source being a Gaia object (0: not a Gaia object, 1: possibly, 2: probably, 3: definitely).  We merge these flags taking the highest value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "flag_gaia_columns = [column for column in master_catalogue.colnames\n",
    "                     if 'flag_gaia' in column]\n",
    "\n",
    "master_catalogue.add_column(Column(\n",
    "    data=np.max([master_catalogue[column] for column in flag_gaia_columns], axis=0),\n",
    "    name=\"flag_gaia\"\n",
    "))\n",
    "master_catalogue.remove_columns(flag_gaia_columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Each prisitine catalogue may contain one or several stellarity columns indicating the probability (0 to 1) of each source being a star.  We merge these columns taking the highest value.  We keep trace of the origin of the stellarity."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "vhs_stellarity, simes_stellarity, des_stellarity\n"
     ]
    }
   ],
   "source": [
    "stellarity_columns = [column for column in master_catalogue.colnames\n",
    "                      if 'stellarity' in column]\n",
    "\n",
    "print(\", \".join(stellarity_columns))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# We create an masked array with all the stellarities and get the maximum value, as well as its\n",
    "# origin.  Some sources may not have an associated stellarity.\n",
    "stellarity_array = np.array([master_catalogue[column] for column in stellarity_columns])\n",
    "stellarity_array = np.ma.masked_array(stellarity_array, np.isnan(stellarity_array))\n",
    "\n",
    "max_stellarity = np.max(stellarity_array, axis=0)\n",
    "max_stellarity.fill_value = np.nan\n",
    "\n",
    "no_stellarity_mask = max_stellarity.mask\n",
    "\n",
    "master_catalogue.add_column(Column(data=max_stellarity.filled(), name=\"stellarity\"))\n",
    "\n",
    "stellarity_origin = np.full(len(master_catalogue), \"NO_INFORMATION\", dtype=\"S20\")\n",
    "stellarity_origin[~no_stellarity_mask] = np.array(stellarity_columns)[np.argmax(stellarity_array, axis=0)[~no_stellarity_mask]]\n",
    "\n",
    "master_catalogue.add_column(Column(data=stellarity_origin, name=\"stellarity_origin\"))\n",
    "\n",
    "master_catalogue.remove_columns(stellarity_columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## IV - Adding E(B-V) column"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue.add_column(\n",
    "    ebv(master_catalogue['ra'], master_catalogue['dec'])\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## V - Adding HELP unique identifiers and field columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue.add_column(Column(gen_help_id(master_catalogue['ra'], master_catalogue['dec']),\n",
    "                                   name=\"help_id\"))\n",
    "master_catalogue.add_column(Column(np.full(len(master_catalogue), \"AKARI-SEP\", dtype='<U18'),\n",
    "                                   name=\"field\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OK!\n"
     ]
    }
   ],
   "source": [
    "# Check that the HELP Ids are unique\n",
    "if len(master_catalogue) != len(np.unique(master_catalogue['help_id'])):\n",
    "    print(\"The HELP IDs are not unique!!!\")\n",
    "else:\n",
    "    print(\"OK!\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## VI - Cross-matching with spec-z catalogue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "specz =  Table.read(\"../../dmu23/dmu23_AKARI-SEP/data/Akari-SEP-specz-v2.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "specz.rename_column('RA', 'ra')\n",
    "specz.rename_column('DEC', 'dec')\n",
    "specz.rename_column('OBJID', 'specz_id')\n",
    "specz.rename_column('Z_SPEC', 'z_spec')\n",
    "specz.rename_column('Z_SOURCE', 'z_source')\n",
    "specz.rename_column('Z_QUAL', 'z_qual')\n",
    "specz.rename_column('REL', 'rel')\n",
    "specz.rename_column('AGN', 'agn')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1cf2551dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nb_merge_dist_plot(\n",
    "    SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n",
    "    SkyCoord(specz['ra'] * u.deg, specz['dec'] * u.deg)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue = specz_merge(master_catalogue, specz, radius=1. * u.arcsec)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## VII Wavelength domain coverage\n",
    "\n",
    "We add a binary `flag_optnir_obs` indicating that a source was observed in a given wavelength domain:\n",
    "\n",
    "- 1 for observation in optical;\n",
    "- 2 for observation in near-infrared;\n",
    "- 4 for observation in mid-infrared (IRAC).\n",
    "\n",
    "It's an integer binary flag, so a source observed both in optical and near-infrared by not in mid-infrared would have this flag at 1 + 2 = 3.\n",
    "\n",
    "*Note 1: The observation flag is based on the creation of multi-order coverage maps from the catalogues, this may not be accurate, especially on the edges of the coverage.*\n",
    "\n",
    "*Note 2: Being on the observation coverage does not mean having fluxes in that wavelength domain. For sources observed in one domain but having no flux in it, one must take into consideration de different depths in the catalogue we are using.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "simes_moc = MOC(filename=\"../../dmu0/dmu0_SIMES/data/SEP_catalog7.2_mJy_HELP-coverage_MOC.fits\")\n",
    "vhs_moc = MOC(filename=\"../../dmu0/dmu0_VISTA-VHS/data/VHS_AKARI-SEP_MOC.fits\")\n",
    "des_moc = MOC(filename=\"../../dmu0/dmu0_DES/data/DES-DR1_AKARI-SEP_MOC.fits\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "was_observed_optical =inMoc(\n",
    "    master_catalogue['ra'], master_catalogue['dec'],\n",
    "    des_moc\n",
    ")\n",
    "\n",
    "was_observed_nir = inMoc(\n",
    "    master_catalogue['ra'], master_catalogue['dec'],\n",
    "    vhs_moc\n",
    ")\n",
    "\n",
    "was_observed_mir = inMoc(\n",
    "    master_catalogue['ra'], master_catalogue['dec'],\n",
    "    simes_moc\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue.add_column(\n",
    "    Column(\n",
    "        1 * was_observed_optical + 2 * was_observed_nir + 4 * was_observed_mir,\n",
    "        name=\"flag_optnir_obs\")\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## VIII Wavelength domain detection\n",
    "\n",
    "We add a binary `flag_optnir_det` indicating that a source was detected in a given wavelength domain:\n",
    "\n",
    "- 1 for detection in optical;\n",
    "- 2 for detection in near-infrared;\n",
    "- 4 for detection in mid-infrared (IRAC).\n",
    "\n",
    "It's an integer binary flag, so a source detected both in optical and near-infrared by not in mid-infrared would have this flag at 1 + 2 = 3.\n",
    "\n",
    "*Note 1: We use the total flux columns to know if the source has flux, in some catalogues, we may have aperture flux and no total flux.*\n",
    "\n",
    "To get rid of artefacts (chip edges, star flares, etc.) we consider that a source is detected in one wavelength domain when it has a flux value in **at least two bands**. That means that good sources will be excluded from this flag when they are on the coverage of only one band."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# SpARCS is a catalogue of sources detected in r (with fluxes measured at \n",
    "# this prior position in the other bands).  Thus, we are only using the r\n",
    "# CFHT band.\n",
    "# Check to use catalogue flags from HSC and PanSTARRS.\n",
    "nb_optical_flux = (\n",
    "    1 * ~np.isnan(master_catalogue['f_decam_g']) +\n",
    "    1 * ~np.isnan(master_catalogue['f_decam_r']) +    \n",
    "    1 * ~np.isnan(master_catalogue['f_decam_i']) +\n",
    "    1 * ~np.isnan(master_catalogue['f_decam_z']) +\n",
    "    1 * ~np.isnan(master_catalogue['f_decam_y']) \n",
    ")\n",
    "\n",
    "nb_nir_flux = (\n",
    "    1 * ~np.isnan(master_catalogue['f_vista_j']) +\n",
    "    1 * ~np.isnan(master_catalogue['f_vista_h']) +\n",
    "    1 * ~np.isnan(master_catalogue['f_vista_ks'])\n",
    ")\n",
    "\n",
    "nb_mir_flux = (\n",
    "    1 * ~np.isnan(master_catalogue['f_irac_i1']) +\n",
    "    1 * ~np.isnan(master_catalogue['f_irac_i2']) \n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "has_optical_flux = nb_optical_flux >= 2\n",
    "has_nir_flux = nb_nir_flux >= 2\n",
    "has_mir_flux = nb_mir_flux >= 2\n",
    "\n",
    "master_catalogue.add_column(\n",
    "    Column(\n",
    "        1 * has_optical_flux + 2 * has_nir_flux + 4 * has_mir_flux,\n",
    "        name=\"flag_optnir_det\")\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## IX - Cross-identification table\n",
    "\n",
    "We are producing a table associating to each HELP identifier, the identifiers of the sources in the pristine catalogues. This can be used to easily get additional information from them.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['vhs_id', 'simes_id', 'des_id', 'help_id', 'specz_id']\n"
     ]
    }
   ],
   "source": [
    "id_names = []\n",
    "for col in master_catalogue.colnames:\n",
    "    if '_id' in col:\n",
    "        id_names += [col]\n",
    "    if '_intid' in col:\n",
    "        id_names += [col]\n",
    "        \n",
    "print(id_names)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue[id_names].write(\n",
    "    \"{}/master_list_cross_ident_akari-sep{}.fits\".format(OUT_DIR, SUFFIX), overwrite=True)\n",
    "id_names.remove('help_id')\n",
    "master_catalogue.remove_columns(id_names)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## X - Adding HEALPix index\n",
    "\n",
    "We are adding a column with a HEALPix index at order 13 associated with each source."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue.add_column(Column(\n",
    "    data=coords_to_hpidx(master_catalogue['ra'], master_catalogue['dec'], order=13),\n",
    "    name=\"hp_idx\"\n",
    "))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## XI - Saving the catalogue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "columns = [\"help_id\", \"field\", \"ra\", \"dec\", \"hp_idx\"]\n",
    "\n",
    "bands = [column[5:] for column in master_catalogue.colnames if 'f_ap' in column]\n",
    "for band in bands:\n",
    "    columns += [\"f_ap_{}\".format(band), \"ferr_ap_{}\".format(band),\n",
    "                \"m_ap_{}\".format(band), \"merr_ap_{}\".format(band),\n",
    "                \"f_{}\".format(band), \"ferr_{}\".format(band),\n",
    "                \"m_{}\".format(band), \"merr_{}\".format(band),\n",
    "                \"flag_{}\".format(band)]    \n",
    "    \n",
    "columns += [\"stellarity\", \"stellarity_origin\", \"flag_cleaned\", \"flag_merged\", \"flag_gaia\", \"flag_optnir_obs\", \n",
    "            \"flag_optnir_det\", \"ebv\", 'zspec_association_flag',  'zspec_qual', 'zspec']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Missing columns: set()\n"
     ]
    }
   ],
   "source": [
    "# We check for columns in the master catalogue that we will not save to disk.\n",
    "print(\"Missing columns: {}\".format(set(master_catalogue.colnames) - set(columns)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue[columns].write(\"{}/master_catalogue_akari-sep{}.fits\".format(OUT_DIR, SUFFIX), overwrite=True)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python (herschelhelp_internal)",
   "language": "python",
   "name": "helpint"
  },
  "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.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
