{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Herschel Stripe 82 DECAM merging\n",
    "\n",
    "Both DES and DECaLS provide DECam fluxes which have overlapping coverage. We chose which to use DES preferentially. In this notebook we cross match both catalogues and take the DES fluxes where available, using DECaLS otherwise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This notebook was run with herschelhelp_internal version: \n",
      "017bb1e (Mon Jun 18 14:58:59 2018 +0100)\n",
      "This notebook was executed on: \n",
      "2019-02-05 16:48:13.563631\n"
     ]
    }
   ],
   "source": [
    "from herschelhelp_internal import git_version\n",
    "print(\"This notebook was run with herschelhelp_internal version: \\n{}\".format(git_version()))\n",
    "import datetime\n",
    "print(\"This notebook was executed on: \\n{}\".format(datetime.datetime.now()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/pyenv/versions/3.7.2/lib/python3.7/site-packages/matplotlib/__init__.py:855: MatplotlibDeprecationWarning: \n",
      "examples.directory is deprecated; in the future, examples will be found relative to the 'datapath' directory.\n",
      "  \"found relative to the 'datapath' directory.\".format(key))\n",
      "/opt/pyenv/versions/3.7.2/lib/python3.7/site-packages/matplotlib/__init__.py:846: MatplotlibDeprecationWarning: \n",
      "The text.latex.unicode rcparam was deprecated in Matplotlib 2.2 and will be removed in 3.1.\n",
      "  \"2.2\", name=key, obj_type=\"rcparam\", addendum=addendum)\n",
      "/opt/pyenv/versions/3.7.2/lib/python3.7/site-packages/seaborn/apionly.py:9: UserWarning: As seaborn no longer sets a default style on import, the seaborn.apionly module is deprecated. It will be removed in a future version.\n",
      "  warnings.warn(msg, UserWarning)\n"
     ]
    }
   ],
   "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\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": [
    "des = Table.read(\"{}/DES.fits\".format(TMP_DIR))\n",
    "decals = Table.read(\"{}/DECaLS.fits\".format(TMP_DIR))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for col in des.colnames:\n",
    "    if '_decam_' in col:\n",
    "        des[col].name = col.replace('_decam_', '_des-decam_')\n",
    "        \n",
    "for col in decals.colnames:\n",
    "    if '_decam_' in col:\n",
    "        decals[col].name = col.replace('_decam_', '_decals-decam_')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## II - Merging tables\n",
    "\n",
    "We first merge DES and DECaLS.\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": [
    "### DES"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue = des\n",
    "master_catalogue['des_ra'].name = 'ra'\n",
    "master_catalogue['des_dec'].name = 'dec'\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Add DECaLS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "nb_merge_dist_plot(\n",
    "    SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n",
    "    SkyCoord(decals['decals_ra'], decals['decals_dec'])\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Given the graph above, we use 0.8 arc-second radius\n",
    "master_catalogue = merge_catalogues(master_catalogue, decals, \"decals_ra\", \"decals_dec\", radius=0.8*u.arcsec)\n"
   ]
  },
  {
   "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": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for col in master_catalogue.colnames:\n",
    "    if (col.startswith(\"m_\")  \n",
    "        or col.startswith(\"merr_\") \n",
    "        or col.startswith(\"f_\")\n",
    "        or col.startswith(\"ferr_\")\n",
    "        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": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=10</i>\n",
       "<table id=\"table140089122309568-410586\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>idx</th><th>des_id</th><th>ra</th><th>dec</th><th>des_stellarity</th><th>m_des-decam_g</th><th>merr_des-decam_g</th><th>m_ap_des-decam_g</th><th>merr_ap_des-decam_g</th><th>m_des-decam_r</th><th>merr_des-decam_r</th><th>m_ap_des-decam_r</th><th>merr_ap_des-decam_r</th><th>m_des-decam_i</th><th>merr_des-decam_i</th><th>m_ap_des-decam_i</th><th>merr_ap_des-decam_i</th><th>m_des-decam_z</th><th>merr_des-decam_z</th><th>m_ap_des-decam_z</th><th>merr_ap_des-decam_z</th><th>m_des-decam_y</th><th>merr_des-decam_y</th><th>m_ap_des-decam_y</th><th>merr_ap_des-decam_y</th><th>f_des-decam_g</th><th>ferr_des-decam_g</th><th>flag_des-decam_g</th><th>f_ap_des-decam_g</th><th>ferr_ap_des-decam_g</th><th>f_des-decam_r</th><th>ferr_des-decam_r</th><th>flag_des-decam_r</th><th>f_ap_des-decam_r</th><th>ferr_ap_des-decam_r</th><th>f_des-decam_i</th><th>ferr_des-decam_i</th><th>flag_des-decam_i</th><th>f_ap_des-decam_i</th><th>ferr_ap_des-decam_i</th><th>f_des-decam_z</th><th>ferr_des-decam_z</th><th>flag_des-decam_z</th><th>f_ap_des-decam_z</th><th>ferr_ap_des-decam_z</th><th>f_des-decam_y</th><th>ferr_des-decam_y</th><th>flag_des-decam_y</th><th>f_ap_des-decam_y</th><th>ferr_ap_des-decam_y</th><th>des_flag_cleaned</th><th>des_flag_gaia</th><th>flag_merged</th><th>decals_id</th><th>f_decals-decam_g</th><th>f_decals-decam_r</th><th>f_decals-decam_z</th><th>ferr_decals-decam_g</th><th>ferr_decals-decam_r</th><th>ferr_decals-decam_z</th><th>f_ap_decals-decam_g</th><th>f_ap_decals-decam_r</th><th>f_ap_decals-decam_z</th><th>ferr_ap_decals-decam_g</th><th>ferr_ap_decals-decam_r</th><th>ferr_ap_decals-decam_z</th><th>m_decals-decam_g</th><th>merr_decals-decam_g</th><th>flag_decals-decam_g</th><th>m_decals-decam_r</th><th>merr_decals-decam_r</th><th>flag_decals-decam_r</th><th>m_decals-decam_z</th><th>merr_decals-decam_z</th><th>flag_decals-decam_z</th><th>m_ap_decals-decam_g</th><th>merr_ap_decals-decam_g</th><th>m_ap_decals-decam_r</th><th>merr_ap_decals-decam_r</th><th>m_ap_decals-decam_z</th><th>merr_ap_decals-decam_z</th><th>decals_stellarity</th><th>decals_flag_cleaned</th><th>decals_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></tr></thead>\n",
       "<tr><td>0</td><td>64025141</td><td>29.962551924564956</td><td>1.85748200298586</td><td>0.9998080730438232</td><td>14.778578758239746</td><td>0.00016981095541268587</td><td>14.75588083267212</td><td>0.00019427189545240253</td><td>17.221220016479492</td><td>0.0018786931177601218</td><td>19.540488719940186</td><td>0.0057341852225363255</td><td>17.27545166015625</td><td>0.0026964067947119474</td><td>19.78158187866211</td><td>0.00845393631607294</td><td>16.889568328857422</td><td>0.0028015754651278257</td><td>19.285632133483887</td><td>0.008376861922442913</td><td>14.114730834960938</td><td>0.0008479319512844086</td><td>14.282644271850586</td><td>0.0004543427494354546</td><td>4452.136762568256</td><td>0.696321623951075</td><td>False</td><td>4546.190885490687</td><td>0.8134546094550313</td><td>469.3663960868965</td><td>0.8121635938563568</td><td>False</td><td>55.43761167409162</td><td>0.2927870805460521</td><td>446.49781293249634</td><td>1.1088694761573417</td><td>False</td><td>44.398392736903546</td><td>0.34570200670188855</td><td>637.0487508373398</td><td>1.643806426104957</td><td>False</td><td>70.10470184681725</td><td>0.5408840608899477</td><td>8205.549430258232</td><td>6.408322306346515</td><td>False</td><td>7029.789023434306</td><td>2.941721625254117</td><td>False</td><td>3</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>0</td></tr>\n",
       "<tr><td>1</td><td>125273261</td><td>350.18296992456493</td><td>-1.11147799701414</td><td>0.9997141361236572</td><td>15.151880264282227</td><td>0.00022763466404285282</td><td>15.136163234710693</td><td>0.0002210345701314509</td><td>16.80906105041504</td><td>0.0015507363714277744</td><td>19.248191356658936</td><td>0.004334254190325737</td><td>16.077579498291016</td><td>0.001403065281920135</td><td>18.87619400024414</td><td>0.002714356407523155</td><td>15.159420013427734</td><td>0.0010724454186856747</td><td>18.09251117706299</td><td>0.0023103076964616776</td><td>13.557523727416992</td><td>0.0007202222477644682</td><td>15.974007606506348</td><td>0.0017904984997585416</td><td>3156.806006789858</td><td>0.6618536543728427</td><td>False</td><td>3202.836035151643</td><td>0.6520345210271143</td><td>686.081296181808</td><td>0.9799168666227303</td><td>False</td><td>72.56437471915018</td><td>0.2896766671467015</td><td>1345.7618129180082</td><td>1.73908880367473</td><td>False</td><td>102.21682803101966</td><td>0.2555435665742574</td><td>3134.9599331199856</td><td>3.0965840535700377</td><td>False</td><td>210.37567826245305</td><td>0.4476525204815886</td><td>13708.518075729338</td><td>9.093534560930557</td><td>False</td><td>1480.4609529720751</td><td>2.441443053691034</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>0</td></tr>\n",
       "<tr><td>2</td><td>278039760</td><td>12.594595924564954</td><td>-1.16716099701414</td><td>0.9998543858528137</td><td>14.652830123901367</td><td>0.000183248586836271</td><td>14.870250225067139</td><td>0.0002213548868894577</td><td>16.975990295410156</td><td>0.00172981689684093</td><td>19.46656560897827</td><td>0.004823703318834305</td><td>16.795658111572266</td><td>0.002385657513514161</td><td>19.30589485168457</td><td>0.004299966152757406</td><td>16.30711555480957</td><td>0.002733764471486211</td><td>18.94441509246826</td><td>0.0072219702415168285</td><td>13.294859886169434</td><td>0.0004965477273799479</td><td>13.70643138885498</td><td>0.00037369501660577953</td><td>4998.825199132762</td><td>0.8436926479638615</td><td>False</td><td>4091.663500111047</td><td>0.8341894718879429</td><td>588.3068184032511</td><td>0.937302330474812</td><td>False</td><td>59.34358192692551</td><td>0.26365136562448477</td><td>694.6031610073021</td><td>1.5262319177584278</td><td>False</td><td>68.80849506255267</td><td>0.272510208736259</td><td>1089.3157377104465</td><td>2.7427773421694153</td><td>False</td><td>95.99176188229583</td><td>0.638506521848137</td><td>17460.474651212025</td><td>7.985327346586858</td><td>False</td><td>11951.63838577308</td><td>4.113584575576254</td><td>False</td><td>3</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>0</td></tr>\n",
       "<tr><td>3</td><td>124464173</td><td>350.22394192456494</td><td>-1.03165599701414</td><td>0.9994781017303467</td><td>15.194710731506348</td><td>0.00020704611961264163</td><td>15.081164836883545</td><td>0.00022244198771659285</td><td>17.51705551147461</td><td>0.0018696717452257872</td><td>19.745919704437256</td><td>0.005019625183194876</td><td>17.580432891845703</td><td>0.003450485412031412</td><td>19.976228713989258</td><td>0.010055295191705227</td><td>17.299715042114258</td><td>0.005092284642159939</td><td>19.879889488220215</td><td>0.01756281591951847</td><td>14.090643882751465</td><td>0.0008090565097518265</td><td>14.184463500976562</td><td>0.0004401865298859775</td><td>3034.699599763628</td><td>0.578706663338235</td><td>False</td><td>3369.2564252204465</td><td>0.6902819423986115</td><td>357.41913168711415</td><td>0.615486937609675</td><td>False</td><td>45.88092005022725</td><td>0.21211876393453852</td><td>337.1528562740875</td><td>1.0714766691027136</td><td>False</td><td>37.11150051833899</td><td>0.34369959395629707</td><td>436.63041343658983</td><td>2.0478697669830495</td><td>False</td><td>40.55498122801998</td><td>0.6560153993261308</td><td>8389.623024939592</td><td>6.2516835055742535</td><td>False</td><td>7695.10587595167</td><td>3.1198019719669836</td><td>False</td><td>3</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>0</td></tr>\n",
       "<tr><td>4</td><td>130230378</td><td>351.415346924565</td><td>1.87702600298586</td><td>0.9989911913871765</td><td>14.905692100524902</td><td>0.0001955412153620273</td><td>14.98053789138794</td><td>0.00022406202333513647</td><td>17.638036727905273</td><td>0.0030192409176379442</td><td>20.178527355194092</td><td>0.010271490551531315</td><td>17.725706100463867</td><td>0.004694038070738316</td><td>20.507383346557617</td><td>0.011649349704384804</td><td>16.836103439331055</td><td>0.00477426266297698</td><td>19.475674629211426</td><td>0.020234856754541397</td><td>13.759861946105957</td><td>0.0005968034383840859</td><td>13.958259582519531</td><td>0.000316018849844113</td><td>3960.255080540736</td><td>0.7132423955274578</td><td>False</td><td>3696.4500625777364</td><td>0.7628317786114224</td><td>319.7314143748967</td><td>0.8891166792674027</td><td>False</td><td>30.80271927913906</td><td>0.29140581169772334</td><td>294.9290553665137</td><td>1.275087086522743</td><td>False</td><td>22.753418844467493</td><td>0.24413161496128724</td><td>669.204148053486</td><td>2.942663571463771</td><td>False</td><td>58.84778871907225</td><td>1.0967457563204448</td><td>11377.719469864247</td><td>6.25406251613136</td><td>False</td><td>9477.551805031184</td><td>2.758575248424335</td><td>False</td><td>3</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>0</td></tr>\n",
       "<tr><td>5</td><td>125271997</td><td>350.18956392456494</td><td>-1.0792149970141398</td><td>0.9996566772460938</td><td>15.236632347106934</td><td>0.00017871946329250932</td><td>15.177425861358643</td><td>0.0002250047109555453</td><td>15.670337677001953</td><td>0.0003338014066684991</td><td>16.058518886566162</td><td>0.0004195460060145706</td><td>17.69673728942871</td><td>0.0028565330430865288</td><td>19.800378799438477</td><td>0.008987022563815117</td><td>17.176166534423828</td><td>0.0030897066462785006</td><td>19.14793872833252</td><td>0.008308326825499535</td><td>14.371517181396484</td><td>0.0006590065313503146</td><td>14.483017921447754</td><td>0.000531471858266741</td><td>2919.7593721575927</td><td>0.4806119807449221</td><td>False</td><td>3083.398490497691</td><td>0.6389942447113584</td><td>1958.235544010353</td><td>0.602044747438929</td><td>False</td><td>1369.5958941197937</td><td>0.5292339748032261</td><td>302.9040528538677</td><td>0.7969297072990721</td><td>False</td><td>43.63635640278868</td><td>0.3611935550052899</td><td>489.25287482573594</td><td>1.3922791304511124</td><td>False</td><td>79.58377003706022</td><td>0.6089950473932952</td><td>6477.286805342418</td><td>3.931502229955371</td><td>False</td><td>5845.111921835429</td><td>2.8612037447595275</td><td>False</td><td>3</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>0</td></tr>\n",
       "<tr><td>6</td><td>151263822</td><td>9.518864924564955</td><td>-0.5035939970141399</td><td>0.8454249501228333</td><td>10.127481460571289</td><td>2.4180399122997187e-05</td><td>14.432249546051025</td><td>0.0002286173403263092</td><td>11.09371280670166</td><td>8.242495823651552e-05</td><td>15.836757183074951</td><td>0.0006993665010668337</td><td>10.639458656311035</td><td>5.4149339121067896e-05</td><td>15.454995155334473</td><td>0.0003641163348220289</td><td>9.726004600524902</td><td>4.309895302867517e-05</td><td>15.176738739013672</td><td>0.000438172894064337</td><td>8.096098899841309</td><td>4.037336111650802e-05</td><td>13.398040771484375</td><td>0.0004993428592570126</td><td>322854.9250156704</td><td>7.190292551258673</td><td>False</td><td>6124.916629316998</td><td>1.2896891007026634</td><td>132591.25378319452</td><td>10.065823086411369</td><td>False</td><td>1679.952981120162</td><td>1.0821255045322344</td><td>201472.8534990138</td><td>10.048133073206007</td><td>False</td><td>2387.8219375940917</td><td>0.8007884127969033</td><td>467302.55955420644</td><td>18.549856748023878</td><td>False</td><td>3085.3504771294897</td><td>1.245161524357364</td><td>2096816.570572031</td><td>77.97062696057125</td><td>False</td><td>15877.557398018862</td><td>7.302275519964148</td><td>False</td><td>3</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>0</td></tr>\n",
       "<tr><td>7</td><td>292002933</td><td>16.138755924564954</td><td>1.36683300298586</td><td>0.9998221397399902</td><td>14.403653144836426</td><td>0.00015104877820704132</td><td>14.558786869049072</td><td>0.0002374612813582644</td><td>23.896692276000977</td><td>0.24730455875396729</td><td>23.91183042526245</td><td>0.21365173161029816</td><td>23.670591354370117</td><td>0.3018966615200043</td><td>23.684785842895508</td><td>0.24641230702400208</td><td>23.793851852416992</td><td>0.7336224913597107</td><td>23.490323066711426</td><td>0.44474631547927856</td><td>22.52427864074707</td><td>0.5148016214370728</td><td>23.077553749084473</td><td>0.7837612628936768</td><td>6288.379483014505</td><td>0.8748460571259725</td><td>False</td><td>5451.113846734883</td><td>1.1922126877622214</td><td>1.0030511717664996</td><td>0.228470899611038</td><td>False</td><td>0.9891629244833227</td><td>0.19464799159722973</td><td>1.2352744486914002</td><td>0.3434768321131692</td><td>False</td><td>1.2192300634405695</td><td>0.2767092885074593</td><td>1.1027047847656466</td><td>0.7450880129895475</td><td>False</td><td>1.4583802467346352</td><td>0.5973911880809772</td><td>3.5504920430959532</td><td>1.6834651480489247</td><td>False</td><td>2.1329393199344078</td><td>1.539706613578186</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>0</td></tr>\n",
       "<tr><td>8</td><td>274386086</td><td>11.099912924564956</td><td>-2.2458449970141396</td><td>0.9996293187141418</td><td>14.93580436706543</td><td>0.0002198040165239945</td><td>15.021619319915771</td><td>0.0002409252483630553</td><td>18.40334701538086</td><td>0.009979305788874626</td><td>21.287103176116943</td><td>0.028291678056120872</td><td>18.42706871032715</td><td>0.015078871510922909</td><td>nan</td><td>nan</td><td>17.821382522583008</td><td>0.013765943236649036</td><td>nan</td><td>nan</td><td>14.33005428314209</td><td>0.0018135616555809975</td><td>14.667513847351074</td><td>0.0008848029538057745</td><td>3851.928819984828</td><td>0.7798113595979874</td><td>False</td><td>3559.19901076848</td><td>0.7897875210249281</td><td>158.00149412950455</td><td>1.4522360202298477</td><td>False</td><td>11.09580279775193</td><td>0.2891299738854475</td><td>154.58683867058306</td><td>2.1469258070037083</td><td>False</td><td>nan</td><td>nan</td><td>270.0517468960365</td><td>3.4239597081105955</td><td>False</td><td>nan</td><td>nan</td><td>6729.430105662413</td><td>11.240517125668184</td><td>False</td><td>4931.675141147106</td><td>4.018987957640728</td><td>False</td><td>3</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>0</td></tr>\n",
       "<tr><td>9</td><td>180643112</td><td>2.8662259245649557</td><td>-1.8533209970141398</td><td>0.9919420480728149</td><td>15.315929412841797</td><td>0.00019060890190303326</td><td>15.290348529815674</td><td>0.00024208365357480943</td><td>15.239893913269043</td><td>0.0003743919951375574</td><td>15.463939189910889</td><td>0.00047834625001996756</td><td>17.267948150634766</td><td>0.001681505935266614</td><td>19.073963165283203</td><td>0.005078486632555723</td><td>17.194364547729492</td><td>0.002608304377645254</td><td>19.169194221496582</td><td>0.00990327075123787</td><td>14.269207954406738</td><td>0.0005337785696610808</td><td>14.423922538757324</td><td>0.0004418044991325587</td><td>2714.114935135867</td><td>0.4764826531138078</td><td>False</td><td>2778.821101257922</td><td>0.6195861958689615</td><td>2911.0015366470284</td><td>1.0037941706075506</td><td>False</td><td>2368.232430504722</td><td>1.0433796877575523</td><td>449.59424117581403</td><td>0.6962974815482317</td><td>False</td><td>85.19512292594571</td><td>0.3984966984081935</td><td>481.12085319008025</td><td>1.1558144805824757</td><td>False</td><td>78.04090758065938</td><td>0.7118305846821904</td><td>7117.32533877337</td><td>3.499078065642419</td><td>False</td><td>6172.0720118761155</td><td>2.511520912600012</td><td>False</td><td>3</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>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</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>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",
       "\n",
       "var astropy_sort_num = function(a, b) {\n",
       "    var a_num = parseFloat(a);\n",
       "    var b_num = parseFloat(b);\n",
       "\n",
       "    if (isNaN(a_num) && isNaN(b_num))\n",
       "        return ((a < b) ? -1 : ((a > b) ? 1 : 0));\n",
       "    else if (!isNaN(a_num) && !isNaN(b_num))\n",
       "        return ((a_num < b_num) ? -1 : ((a_num > b_num) ? 1 : 0));\n",
       "    else\n",
       "        return isNaN(a_num) ? -1 : 1;\n",
       "}\n",
       "\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(\"$('#table140089122309568-410586').dataTable()\");\n",
       "    \n",
       "jQuery.extend( jQuery.fn.dataTableExt.oSort, {\n",
       "    \"optionalnum-asc\": astropy_sort_num,\n",
       "    \"optionalnum-desc\": function (a,b) { return -astropy_sort_num(a, b); }\n",
       "});\n",
       "\n",
       "    $('#table140089122309568-410586').dataTable({\n",
       "        order: [],\n",
       "        pageLength: 50,\n",
       "        lengthMenu: [[10, 25, 50, 100, 500, 1000, -1], [10, 25, 50, 100, 500, 1000, 'All']],\n",
       "        pagingType: \"full_numbers\",\n",
       "        columnDefs: [{targets: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 35, 36, 38, 39, 40, 41, 43, 44, 45, 46, 48, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 70, 72, 73, 75, 76, 77, 78, 79, 80, 81, 83], type: \"optionalnum\"}]\n",
       "    });\n",
       "});\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 10,
     "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": 11,
   "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=\"decam_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": 12,
   "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=\"decam_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."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "stellarity_columns = [column for column in master_catalogue.colnames\n",
    "                      if 'stellarity' in column]\n",
    "\n",
    "master_catalogue.add_column(Column(\n",
    "    data=np.nanmax([master_catalogue[column] for column in stellarity_columns], axis=0),\n",
    "    name=\"decam_stellarity\"\n",
    "))\n",
    "master_catalogue.remove_columns(stellarity_columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## VIII - Cross-identification table\n",
    "\n",
    "We are producing a table associating to each HELP identifier, the identifiers of the sources in the pristine catalogue. This can be used to easily get additional information from them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue.add_column(Column(data=np.arange(len(master_catalogue)), \n",
    "                              name=\"decam_intid\"))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['des_id', 'decals_id', 'decam_intid']\n"
     ]
    }
   ],
   "source": [
    "\n",
    "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": "markdown",
   "metadata": {},
   "source": [
    "## VI - Choosing between multiple values for the same filter\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "decam_origin = Table()\n",
    "decam_origin.add_column(master_catalogue['decam_intid'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "decam_stats = Table()\n",
    "decam_stats.add_column(Column(data=['g','r','i','z','y'], name=\"Band\"))\n",
    "for col in [\"DES\", \"DECaLS\"]:\n",
    "    decam_stats.add_column(Column(data=np.full(5, 0), name=\"{}\".format(col)))\n",
    "    decam_stats.add_column(Column(data=np.full(5, 0), name=\"use {}\".format(col)))\n",
    "    decam_stats.add_column(Column(data=np.full(5, 0), name=\"{} ap\".format(col)))\n",
    "    decam_stats.add_column(Column(data=np.full(5, 0), name=\"use {} ap\".format(col)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "decam_bands = ['g','r','i','z','y'] # Lowercase naming convention (k is Ks)\n",
    "for band in decam_bands:\n",
    "    if (band == 'i') or (band == 'y'):\n",
    "        master_catalogue[\"f_des-decam_{}\".format(band)].name = \"f_decam_{}\".format(band)\n",
    "        master_catalogue[\"ferr_des-decam_{}\".format(band)].name = \"ferr_decam_{}\".format(band)\n",
    "        master_catalogue[\"m_des-decam_{}\".format(band)].name = \"m_decam_{}\".format(band)\n",
    "        master_catalogue[\"merr_des-decam_{}\".format(band)].name = \"merr_decam_{}\".format(band)\n",
    "        master_catalogue[\"f_ap_des-decam_{}\".format(band)].name = \"f_ap_decam_{}\".format(band)\n",
    "        master_catalogue[\"ferr_ap_des-decam_{}\".format(band)].name = \"ferr_ap_decam_{}\".format(band)\n",
    "        master_catalogue[\"m_ap_des-decam_{}\".format(band)].name = \"m_ap_decam_{}\".format(band)\n",
    "        master_catalogue[\"merr_ap_des-decam_{}\".format(band)].name = \"merr_ap_decam_{}\".format(band)\n",
    "        master_catalogue[\"flag_des-decam_{}\".format(band)].name = \"flag_decam_{}\".format(band)\n",
    "        \n",
    "        continue\n",
    "\n",
    "    # DECam total flux \n",
    "    has_des = ~np.isnan(master_catalogue['f_des-decam_' + band])\n",
    "    has_decals = ~np.isnan(master_catalogue['f_decals-decam_' + band])\n",
    "\n",
    "    use_des = has_des \n",
    "    use_decals = has_decals & ~has_des\n",
    "\n",
    "\n",
    "    f_decam = np.full(len(master_catalogue), np.nan)\n",
    "    f_decam[use_des] = master_catalogue['f_des-decam_' + band][use_des]\n",
    "    f_decam[use_decals] = master_catalogue['f_decals-decam_' + band][use_decals]\n",
    "\n",
    "    ferr_decam = np.full(len(master_catalogue), np.nan)\n",
    "    ferr_decam[use_des] = master_catalogue['ferr_des-decam_' + band][use_des]\n",
    "    ferr_decam[use_decals] = master_catalogue['ferr_decals-decam_' + band][use_decals]\n",
    "    \n",
    "    m_decam = np.full(len(master_catalogue), np.nan)\n",
    "    m_decam[use_des] = master_catalogue['m_des-decam_' + band][use_des]\n",
    "    m_decam[use_decals] = master_catalogue['m_decals-decam_' + band][use_decals]\n",
    "    \n",
    "    merr_decam = np.full(len(master_catalogue), np.nan)\n",
    "    merr_decam[use_des] = master_catalogue['merr_des-decam_' + band][use_des]\n",
    "    merr_decam[use_decals] = master_catalogue['merr_decals-decam_' + band][use_decals]\n",
    "    \n",
    "    flag_decam = np.full(len(master_catalogue), False, dtype=bool)\n",
    "    flag_decam[use_des] = master_catalogue['flag_des-decam_' + band][use_des]\n",
    "    flag_decam[use_decals] = master_catalogue['flag_decals-decam_' + band][use_decals]\n",
    "\n",
    "    master_catalogue.add_column(Column(data=f_decam, name=\"f_decam_\" + band))\n",
    "    master_catalogue.add_column(Column(data=ferr_decam, name=\"ferr_decam_\" + band))\n",
    "    master_catalogue.add_column(Column(data=m_decam, name=\"m_decam_\" + band))\n",
    "    master_catalogue.add_column(Column(data=merr_decam, name=\"merr_decam_\" + band))\n",
    "    master_catalogue.add_column(Column(data=flag_decam, name=\"flag_decam_\" + band))\n",
    "\n",
    "\n",
    "    old_des_columns = ['f_des-decam_' + band,\n",
    "                               'ferr_des-decam_' + band,\n",
    "                               'm_des-decam_' + band, \n",
    "                               'merr_des-decam_' + band,\n",
    "                               'flag_des-decam_' + band]\n",
    "    old_decals_columns =      ['f_decals-decam_' + band,\n",
    "                               'ferr_decals-decam_' + band,\n",
    "                               'm_decals-decam_' + band, \n",
    "                               'merr_decals-decam_' + band,\n",
    "                               'flag_decals-decam_' + band]\n",
    "    \n",
    "    old_columns = old_des_columns + old_decals_columns\n",
    "    master_catalogue.remove_columns(old_columns)\n",
    "\n",
    "    origin = np.full(len(master_catalogue), '     ', dtype='<U5')\n",
    "    origin[use_des] = \"DES\"\n",
    "    origin[use_decals] = \"DECaLS\"\n",
    "\n",
    "    \n",
    "    decam_origin.add_column(Column(data=origin, name= 'f_decam_' + band ))\n",
    "    \n",
    "    # DECam aperture flux \n",
    " \n",
    "    has_ap_des = ~np.isnan(master_catalogue['f_ap_des-decam_' + band])\n",
    "    has_ap_decals = ~np.isnan(master_catalogue['f_ap_decals-decam_' + band])\n",
    "\n",
    "    use_ap_des = has_ap_des \n",
    "    use_ap_decals = has_ap_decals & ~has_ap_des\n",
    "\n",
    "\n",
    "    f_ap_decam = np.full(len(master_catalogue), np.nan)\n",
    "    f_ap_decam[use_ap_des] = master_catalogue['f_ap_des-decam_' + band][use_ap_des]\n",
    "    f_ap_decam[use_ap_decals] = master_catalogue['f_ap_decals-decam_' + band][use_ap_decals]\n",
    "\n",
    "    ferr_ap_decam = np.full(len(master_catalogue), np.nan)\n",
    "    ferr_ap_decam[use_ap_des] = master_catalogue['ferr_ap_des-decam_' + band][use_ap_des]\n",
    "    ferr_ap_decam[use_ap_decals] = master_catalogue['ferr_ap_decals-decam_' + band][use_ap_decals]\n",
    "    \n",
    "    m_ap_decam = np.full(len(master_catalogue), np.nan)\n",
    "    m_ap_decam[use_ap_des] = master_catalogue['m_ap_des-decam_' + band][use_ap_des]\n",
    "    m_ap_decam[use_ap_decals] = master_catalogue['m_ap_decals-decam_' + band][use_ap_decals]\n",
    "    \n",
    "    merr_ap_decam = np.full(len(master_catalogue), np.nan)\n",
    "    merr_ap_decam[use_ap_des] = master_catalogue['merr_ap_des-decam_' + band][use_ap_des]\n",
    "    merr_ap_decam[use_ap_decals] = master_catalogue['merr_ap_decals-decam_' + band][use_ap_decals]\n",
    "    \n",
    "\n",
    "    master_catalogue.add_column(Column(data=f_ap_decam, name=\"f_ap_decam_\" + band))\n",
    "    master_catalogue.add_column(Column(data=ferr_ap_decam, name=\"ferr_ap_decam_\" + band))\n",
    "    master_catalogue.add_column(Column(data=m_ap_decam, name=\"m_ap_decam_\" + band))\n",
    "    master_catalogue.add_column(Column(data=merr_ap_decam, name=\"merr_ap_decam_\" + band))\n",
    "  \n",
    "\n",
    "\n",
    "    old_ap_des_columns = ['f_ap_des-decam_' + band,\n",
    "                               'ferr_ap_des-decam_' + band,\n",
    "                               'm_ap_des-decam_' + band, \n",
    "                               'merr_ap_des-decam_' + band]\n",
    "    old_ap_decals_columns =      ['f_ap_decals-decam_' + band,\n",
    "                               'ferr_ap_decals-decam_' + band,\n",
    "                               'm_ap_decals-decam_' + band, \n",
    "                               'merr_ap_decals-decam_' + band]\n",
    "    \n",
    "    old_ap_columns = old_ap_des_columns + old_ap_decals_columns\n",
    "    master_catalogue.remove_columns(old_ap_columns)\n",
    "\n",
    "    origin_ap = np.full(len(master_catalogue), '     ', dtype='<U5')\n",
    "    origin_ap[use_ap_des] = \"DES\"\n",
    "    origin_ap[use_ap_decals] = \"DECaLS\"\n",
    "\n",
    "    \n",
    "    decam_origin.add_column(Column(data=origin_ap, name= 'f_ap_decam_' + band ))    \n",
    "\n",
    "   \n",
    "    decam_stats['DES'][decam_stats['Band'] == band] = np.sum(has_des)\n",
    "    decam_stats['DECaLS'][decam_stats['Band'] == band] = np.sum(has_decals)\n",
    "\n",
    "    decam_stats['use DES'][decam_stats['Band'] == band] = np.sum(use_des)\n",
    "    decam_stats['use DECaLS'][decam_stats['Band'] == band] = np.sum(use_decals)\n",
    "\n",
    "    decam_stats['DES ap'][decam_stats['Band'] == band] = np.sum(has_ap_des)\n",
    "    decam_stats['DECaLS ap'][decam_stats['Band'] == band] = np.sum(has_ap_decals)\n",
    "\n",
    "    decam_stats['use DES ap'][decam_stats['Band'] == band] = np.sum(use_ap_des)\n",
    "    decam_stats['use DECaLS ap'][decam_stats['Band'] == band] = np.sum(use_ap_decals)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=5</i>\n",
       "<table id=\"table140079068159616-502386\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>idx</th><th>Band</th><th>DES</th><th>use DES</th><th>DES ap</th><th>use DES ap</th><th>DECaLS</th><th>use DECaLS</th><th>DECaLS ap</th><th>use DECaLS ap</th></tr></thead>\n",
       "<tr><td>0</td><td>g</td><td>17916439</td><td>17916439</td><td>18075684</td><td>18075684</td><td>22070865</td><td>6064610</td><td>22206939</td><td>6140397</td></tr>\n",
       "<tr><td>1</td><td>r</td><td>18364250</td><td>18364250</td><td>18386425</td><td>18386425</td><td>23344622</td><td>6600444</td><td>22971964</td><td>6354365</td></tr>\n",
       "<tr><td>2</td><td>i</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>\n",
       "<tr><td>3</td><td>z</td><td>18240782</td><td>18240782</td><td>18320913</td><td>18320913</td><td>23359706</td><td>6673056</td><td>22011790</td><td>5699597</td></tr>\n",
       "<tr><td>4</td><td>y</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</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",
       "\n",
       "var astropy_sort_num = function(a, b) {\n",
       "    var a_num = parseFloat(a);\n",
       "    var b_num = parseFloat(b);\n",
       "\n",
       "    if (isNaN(a_num) && isNaN(b_num))\n",
       "        return ((a < b) ? -1 : ((a > b) ? 1 : 0));\n",
       "    else if (!isNaN(a_num) && !isNaN(b_num))\n",
       "        return ((a_num < b_num) ? -1 : ((a_num > b_num) ? 1 : 0));\n",
       "    else\n",
       "        return isNaN(a_num) ? -1 : 1;\n",
       "}\n",
       "\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(\"$('#table140079068159616-502386').dataTable()\");\n",
       "    \n",
       "jQuery.extend( jQuery.fn.dataTableExt.oSort, {\n",
       "    \"optionalnum-asc\": astropy_sort_num,\n",
       "    \"optionalnum-desc\": function (a,b) { return -astropy_sort_num(a, b); }\n",
       "});\n",
       "\n",
       "    $('#table140079068159616-502386').dataTable({\n",
       "        order: [],\n",
       "        pageLength: 50,\n",
       "        lengthMenu: [[10, 25, 50, 100, 500, 1000, -1], [10, 25, 50, 100, 500, 1000, 'All']],\n",
       "        pagingType: \"full_numbers\",\n",
       "        columnDefs: [{targets: [0, 2, 3, 4, 5, 6, 7, 8, 9], type: \"optionalnum\"}]\n",
       "    });\n",
       "});\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "decam_stats.show_in_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "decam_origin.write(\"{}/herschel-stripe-82_decam_fluxes_origins{}.fits\".format(OUT_DIR, SUFFIX), overwrite=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## IX - Saving the catalogue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['des_id',\n",
       " 'ra',\n",
       " 'dec',\n",
       " 'm_decam_i',\n",
       " 'merr_decam_i',\n",
       " 'm_ap_decam_i',\n",
       " 'merr_ap_decam_i',\n",
       " 'm_decam_y',\n",
       " 'merr_decam_y',\n",
       " 'm_ap_decam_y',\n",
       " 'merr_ap_decam_y',\n",
       " 'f_decam_i',\n",
       " 'ferr_decam_i',\n",
       " 'flag_decam_i',\n",
       " 'f_ap_decam_i',\n",
       " 'ferr_ap_decam_i',\n",
       " 'f_decam_y',\n",
       " 'ferr_decam_y',\n",
       " 'flag_decam_y',\n",
       " 'f_ap_decam_y',\n",
       " 'ferr_ap_decam_y',\n",
       " 'flag_merged',\n",
       " 'decals_id',\n",
       " 'decam_flag_cleaned',\n",
       " 'decam_flag_gaia',\n",
       " 'decam_stellarity',\n",
       " 'decam_intid',\n",
       " 'f_decam_g',\n",
       " 'ferr_decam_g',\n",
       " 'm_decam_g',\n",
       " 'merr_decam_g',\n",
       " 'flag_decam_g',\n",
       " 'f_ap_decam_g',\n",
       " 'ferr_ap_decam_g',\n",
       " 'm_ap_decam_g',\n",
       " 'merr_ap_decam_g',\n",
       " 'f_decam_r',\n",
       " 'ferr_decam_r',\n",
       " 'm_decam_r',\n",
       " 'merr_decam_r',\n",
       " 'flag_decam_r',\n",
       " 'f_ap_decam_r',\n",
       " 'ferr_ap_decam_r',\n",
       " 'm_ap_decam_r',\n",
       " 'merr_ap_decam_r',\n",
       " 'f_decam_z',\n",
       " 'ferr_decam_z',\n",
       " 'm_decam_z',\n",
       " 'merr_decam_z',\n",
       " 'flag_decam_z',\n",
       " 'f_ap_decam_z',\n",
       " 'ferr_ap_decam_z',\n",
       " 'm_ap_decam_z',\n",
       " 'merr_ap_decam_z']"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "master_catalogue.colnames"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue[\"ra\"].name = \"decam_ra\"\n",
    "master_catalogue[\"dec\"].name = \"decam_dec\"\n",
    "master_catalogue[\"flag_merged\"].name = \"decam_flag_merged\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "columns = [\"decam_intid\", \"des_id\", \"decals_id\",\n",
    "           'decam_ra', 'decam_dec', 'decam_flag_merged',  \n",
    "           'decam_flag_cleaned',  'decam_flag_gaia', 'decam_stellarity']\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"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "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": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=10</i>\n",
       "<table id=\"table140079067947696-796649\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>idx</th><th>des_id</th><th>decam_ra</th><th>decam_dec</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_y</th><th>merr_decam_y</th><th>m_ap_decam_y</th><th>merr_ap_decam_y</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_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>decam_flag_merged</th><th>decals_id</th><th>decam_flag_cleaned</th><th>decam_flag_gaia</th><th>decam_stellarity</th><th>decam_intid</th><th>f_decam_g</th><th>ferr_decam_g</th><th>m_decam_g</th><th>merr_decam_g</th><th>flag_decam_g</th><th>f_ap_decam_g</th><th>ferr_ap_decam_g</th><th>m_ap_decam_g</th><th>merr_ap_decam_g</th><th>f_decam_r</th><th>ferr_decam_r</th><th>m_decam_r</th><th>merr_decam_r</th><th>flag_decam_r</th><th>f_ap_decam_r</th><th>ferr_ap_decam_r</th><th>m_ap_decam_r</th><th>merr_ap_decam_r</th><th>f_decam_z</th><th>ferr_decam_z</th><th>m_decam_z</th><th>merr_decam_z</th><th>flag_decam_z</th><th>f_ap_decam_z</th><th>ferr_ap_decam_z</th><th>m_ap_decam_z</th><th>merr_ap_decam_z</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></tr></thead>\n",
       "<tr><td>0</td><td>64025141</td><td>29.962551924564956</td><td>1.85748200298586</td><td>17.27545166015625</td><td>0.0026964067947119474</td><td>19.78158187866211</td><td>0.00845393631607294</td><td>14.114730834960938</td><td>0.0008479319512844086</td><td>14.282644271850586</td><td>0.0004543427494354546</td><td>446.49781293249634</td><td>1.1088694761573417</td><td>False</td><td>44.398392736903546</td><td>0.34570200670188855</td><td>8205.549430258232</td><td>6.408322306346515</td><td>False</td><td>7029.789023434306</td><td>2.941721625254117</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9998080730438232</td><td>0</td><td>4452.136762568256</td><td>0.696321623951075</td><td>14.778578758239746</td><td>0.00016981095541268587</td><td>False</td><td>4546.190885490687</td><td>0.8134546094550313</td><td>14.75588083267212</td><td>0.00019427189545240253</td><td>469.3663960868965</td><td>0.8121635938563568</td><td>17.221220016479492</td><td>0.0018786931177601218</td><td>False</td><td>55.43761167409162</td><td>0.2927870805460521</td><td>19.540488719940186</td><td>0.0057341852225363255</td><td>637.0487508373398</td><td>1.643806426104957</td><td>16.889568328857422</td><td>0.0028015754651278257</td><td>False</td><td>70.10470184681725</td><td>0.5408840608899477</td><td>19.285632133483887</td><td>0.008376861922442913</td></tr>\n",
       "<tr><td>1</td><td>125273261</td><td>350.18296992456493</td><td>-1.11147799701414</td><td>16.077579498291016</td><td>0.001403065281920135</td><td>18.87619400024414</td><td>0.002714356407523155</td><td>13.557523727416992</td><td>0.0007202222477644682</td><td>15.974007606506348</td><td>0.0017904984997585416</td><td>1345.7618129180082</td><td>1.73908880367473</td><td>False</td><td>102.21682803101966</td><td>0.2555435665742574</td><td>13708.518075729338</td><td>9.093534560930557</td><td>False</td><td>1480.4609529720751</td><td>2.441443053691034</td><td>False</td><td>-1</td><td>False</td><td>2</td><td>0.9997141361236572</td><td>1</td><td>3156.806006789858</td><td>0.6618536543728427</td><td>15.151880264282227</td><td>0.00022763466404285282</td><td>False</td><td>3202.836035151643</td><td>0.6520345210271143</td><td>15.136163234710693</td><td>0.0002210345701314509</td><td>686.081296181808</td><td>0.9799168666227303</td><td>16.80906105041504</td><td>0.0015507363714277744</td><td>False</td><td>72.56437471915018</td><td>0.2896766671467015</td><td>19.248191356658936</td><td>0.004334254190325737</td><td>3134.9599331199856</td><td>3.0965840535700377</td><td>15.159420013427734</td><td>0.0010724454186856747</td><td>False</td><td>210.37567826245305</td><td>0.4476525204815886</td><td>18.09251117706299</td><td>0.0023103076964616776</td></tr>\n",
       "<tr><td>2</td><td>278039760</td><td>12.594595924564954</td><td>-1.16716099701414</td><td>16.795658111572266</td><td>0.002385657513514161</td><td>19.30589485168457</td><td>0.004299966152757406</td><td>13.294859886169434</td><td>0.0004965477273799479</td><td>13.70643138885498</td><td>0.00037369501660577953</td><td>694.6031610073021</td><td>1.5262319177584278</td><td>False</td><td>68.80849506255267</td><td>0.272510208736259</td><td>17460.474651212025</td><td>7.985327346586858</td><td>False</td><td>11951.63838577308</td><td>4.113584575576254</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9998543858528137</td><td>2</td><td>4998.825199132762</td><td>0.8436926479638615</td><td>14.652830123901367</td><td>0.000183248586836271</td><td>False</td><td>4091.663500111047</td><td>0.8341894718879429</td><td>14.870250225067139</td><td>0.0002213548868894577</td><td>588.3068184032511</td><td>0.937302330474812</td><td>16.975990295410156</td><td>0.00172981689684093</td><td>False</td><td>59.34358192692551</td><td>0.26365136562448477</td><td>19.46656560897827</td><td>0.004823703318834305</td><td>1089.3157377104465</td><td>2.7427773421694153</td><td>16.30711555480957</td><td>0.002733764471486211</td><td>False</td><td>95.99176188229583</td><td>0.638506521848137</td><td>18.94441509246826</td><td>0.0072219702415168285</td></tr>\n",
       "<tr><td>3</td><td>124464173</td><td>350.22394192456494</td><td>-1.03165599701414</td><td>17.580432891845703</td><td>0.003450485412031412</td><td>19.976228713989258</td><td>0.010055295191705227</td><td>14.090643882751465</td><td>0.0008090565097518265</td><td>14.184463500976562</td><td>0.0004401865298859775</td><td>337.1528562740875</td><td>1.0714766691027136</td><td>False</td><td>37.11150051833899</td><td>0.34369959395629707</td><td>8389.623024939592</td><td>6.2516835055742535</td><td>False</td><td>7695.10587595167</td><td>3.1198019719669836</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9994781017303467</td><td>3</td><td>3034.699599763628</td><td>0.578706663338235</td><td>15.194710731506348</td><td>0.00020704611961264163</td><td>False</td><td>3369.2564252204465</td><td>0.6902819423986115</td><td>15.081164836883545</td><td>0.00022244198771659285</td><td>357.41913168711415</td><td>0.615486937609675</td><td>17.51705551147461</td><td>0.0018696717452257872</td><td>False</td><td>45.88092005022725</td><td>0.21211876393453852</td><td>19.745919704437256</td><td>0.005019625183194876</td><td>436.63041343658983</td><td>2.0478697669830495</td><td>17.299715042114258</td><td>0.005092284642159939</td><td>False</td><td>40.55498122801998</td><td>0.6560153993261308</td><td>19.879889488220215</td><td>0.01756281591951847</td></tr>\n",
       "<tr><td>4</td><td>130230378</td><td>351.415346924565</td><td>1.87702600298586</td><td>17.725706100463867</td><td>0.004694038070738316</td><td>20.507383346557617</td><td>0.011649349704384804</td><td>13.759861946105957</td><td>0.0005968034383840859</td><td>13.958259582519531</td><td>0.000316018849844113</td><td>294.9290553665137</td><td>1.275087086522743</td><td>False</td><td>22.753418844467493</td><td>0.24413161496128724</td><td>11377.719469864247</td><td>6.25406251613136</td><td>False</td><td>9477.551805031184</td><td>2.758575248424335</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9989911913871765</td><td>4</td><td>3960.255080540736</td><td>0.7132423955274578</td><td>14.905692100524902</td><td>0.0001955412153620273</td><td>False</td><td>3696.4500625777364</td><td>0.7628317786114224</td><td>14.98053789138794</td><td>0.00022406202333513647</td><td>319.7314143748967</td><td>0.8891166792674027</td><td>17.638036727905273</td><td>0.0030192409176379442</td><td>False</td><td>30.80271927913906</td><td>0.29140581169772334</td><td>20.178527355194092</td><td>0.010271490551531315</td><td>669.204148053486</td><td>2.942663571463771</td><td>16.836103439331055</td><td>0.00477426266297698</td><td>False</td><td>58.84778871907225</td><td>1.0967457563204448</td><td>19.475674629211426</td><td>0.020234856754541397</td></tr>\n",
       "<tr><td>5</td><td>125271997</td><td>350.18956392456494</td><td>-1.0792149970141398</td><td>17.69673728942871</td><td>0.0028565330430865288</td><td>19.800378799438477</td><td>0.008987022563815117</td><td>14.371517181396484</td><td>0.0006590065313503146</td><td>14.483017921447754</td><td>0.000531471858266741</td><td>302.9040528538677</td><td>0.7969297072990721</td><td>False</td><td>43.63635640278868</td><td>0.3611935550052899</td><td>6477.286805342418</td><td>3.931502229955371</td><td>False</td><td>5845.111921835429</td><td>2.8612037447595275</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9996566772460938</td><td>5</td><td>2919.7593721575927</td><td>0.4806119807449221</td><td>15.236632347106934</td><td>0.00017871946329250932</td><td>False</td><td>3083.398490497691</td><td>0.6389942447113584</td><td>15.177425861358643</td><td>0.0002250047109555453</td><td>1958.235544010353</td><td>0.602044747438929</td><td>15.670337677001953</td><td>0.0003338014066684991</td><td>False</td><td>1369.5958941197937</td><td>0.5292339748032261</td><td>16.058518886566162</td><td>0.0004195460060145706</td><td>489.25287482573594</td><td>1.3922791304511124</td><td>17.176166534423828</td><td>0.0030897066462785006</td><td>False</td><td>79.58377003706022</td><td>0.6089950473932952</td><td>19.14793872833252</td><td>0.008308326825499535</td></tr>\n",
       "<tr><td>6</td><td>151263822</td><td>9.518864924564955</td><td>-0.5035939970141399</td><td>10.639458656311035</td><td>5.4149339121067896e-05</td><td>15.454995155334473</td><td>0.0003641163348220289</td><td>8.096098899841309</td><td>4.037336111650802e-05</td><td>13.398040771484375</td><td>0.0004993428592570126</td><td>201472.8534990138</td><td>10.048133073206007</td><td>False</td><td>2387.8219375940917</td><td>0.8007884127969033</td><td>2096816.570572031</td><td>77.97062696057125</td><td>False</td><td>15877.557398018862</td><td>7.302275519964148</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.8454249501228333</td><td>6</td><td>322854.9250156704</td><td>7.190292551258673</td><td>10.127481460571289</td><td>2.4180399122997187e-05</td><td>False</td><td>6124.916629316998</td><td>1.2896891007026634</td><td>14.432249546051025</td><td>0.0002286173403263092</td><td>132591.25378319452</td><td>10.065823086411369</td><td>11.09371280670166</td><td>8.242495823651552e-05</td><td>False</td><td>1679.952981120162</td><td>1.0821255045322344</td><td>15.836757183074951</td><td>0.0006993665010668337</td><td>467302.55955420644</td><td>18.549856748023878</td><td>9.726004600524902</td><td>4.309895302867517e-05</td><td>False</td><td>3085.3504771294897</td><td>1.245161524357364</td><td>15.176738739013672</td><td>0.000438172894064337</td></tr>\n",
       "<tr><td>7</td><td>292002933</td><td>16.138755924564954</td><td>1.36683300298586</td><td>23.670591354370117</td><td>0.3018966615200043</td><td>23.684785842895508</td><td>0.24641230702400208</td><td>22.52427864074707</td><td>0.5148016214370728</td><td>23.077553749084473</td><td>0.7837612628936768</td><td>1.2352744486914002</td><td>0.3434768321131692</td><td>False</td><td>1.2192300634405695</td><td>0.2767092885074593</td><td>3.5504920430959532</td><td>1.6834651480489247</td><td>False</td><td>2.1329393199344078</td><td>1.539706613578186</td><td>False</td><td>-1</td><td>False</td><td>0</td><td>0.9998221397399902</td><td>7</td><td>6288.379483014505</td><td>0.8748460571259725</td><td>14.403653144836426</td><td>0.00015104877820704132</td><td>False</td><td>5451.113846734883</td><td>1.1922126877622214</td><td>14.558786869049072</td><td>0.0002374612813582644</td><td>1.0030511717664996</td><td>0.228470899611038</td><td>23.896692276000977</td><td>0.24730455875396729</td><td>False</td><td>0.9891629244833227</td><td>0.19464799159722973</td><td>23.91183042526245</td><td>0.21365173161029816</td><td>1.1027047847656466</td><td>0.7450880129895475</td><td>23.793851852416992</td><td>0.7336224913597107</td><td>False</td><td>1.4583802467346352</td><td>0.5973911880809772</td><td>23.490323066711426</td><td>0.44474631547927856</td></tr>\n",
       "<tr><td>8</td><td>274386086</td><td>11.099912924564956</td><td>-2.2458449970141396</td><td>18.42706871032715</td><td>0.015078871510922909</td><td>nan</td><td>nan</td><td>14.33005428314209</td><td>0.0018135616555809975</td><td>14.667513847351074</td><td>0.0008848029538057745</td><td>154.58683867058306</td><td>2.1469258070037083</td><td>False</td><td>nan</td><td>nan</td><td>6729.430105662413</td><td>11.240517125668184</td><td>False</td><td>4931.675141147106</td><td>4.018987957640728</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9996293187141418</td><td>8</td><td>3851.928819984828</td><td>0.7798113595979874</td><td>14.93580436706543</td><td>0.0002198040165239945</td><td>False</td><td>3559.19901076848</td><td>0.7897875210249281</td><td>15.021619319915771</td><td>0.0002409252483630553</td><td>158.00149412950455</td><td>1.4522360202298477</td><td>18.40334701538086</td><td>0.009979305788874626</td><td>False</td><td>11.09580279775193</td><td>0.2891299738854475</td><td>21.287103176116943</td><td>0.028291678056120872</td><td>270.0517468960365</td><td>3.4239597081105955</td><td>17.821382522583008</td><td>0.013765943236649036</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td></tr>\n",
       "<tr><td>9</td><td>180643112</td><td>2.8662259245649557</td><td>-1.8533209970141398</td><td>17.267948150634766</td><td>0.001681505935266614</td><td>19.073963165283203</td><td>0.005078486632555723</td><td>14.269207954406738</td><td>0.0005337785696610808</td><td>14.423922538757324</td><td>0.0004418044991325587</td><td>449.59424117581403</td><td>0.6962974815482317</td><td>False</td><td>85.19512292594571</td><td>0.3984966984081935</td><td>7117.32533877337</td><td>3.499078065642419</td><td>False</td><td>6172.0720118761155</td><td>2.511520912600012</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9919420480728149</td><td>9</td><td>2714.114935135867</td><td>0.4764826531138078</td><td>15.315929412841797</td><td>0.00019060890190303326</td><td>False</td><td>2778.821101257922</td><td>0.6195861958689615</td><td>15.290348529815674</td><td>0.00024208365357480943</td><td>2911.0015366470284</td><td>1.0037941706075506</td><td>15.239893913269043</td><td>0.0003743919951375574</td><td>False</td><td>2368.232430504722</td><td>1.0433796877575523</td><td>15.463939189910889</td><td>0.00047834625001996756</td><td>481.12085319008025</td><td>1.1558144805824757</td><td>17.194364547729492</td><td>0.002608304377645254</td><td>False</td><td>78.04090758065938</td><td>0.7118305846821904</td><td>19.169194221496582</td><td>0.00990327075123787</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",
       "\n",
       "var astropy_sort_num = function(a, b) {\n",
       "    var a_num = parseFloat(a);\n",
       "    var b_num = parseFloat(b);\n",
       "\n",
       "    if (isNaN(a_num) && isNaN(b_num))\n",
       "        return ((a < b) ? -1 : ((a > b) ? 1 : 0));\n",
       "    else if (!isNaN(a_num) && !isNaN(b_num))\n",
       "        return ((a_num < b_num) ? -1 : ((a_num > b_num) ? 1 : 0));\n",
       "    else\n",
       "        return isNaN(a_num) ? -1 : 1;\n",
       "}\n",
       "\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(\"$('#table140079067947696-796649').dataTable()\");\n",
       "    \n",
       "jQuery.extend( jQuery.fn.dataTableExt.oSort, {\n",
       "    \"optionalnum-asc\": astropy_sort_num,\n",
       "    \"optionalnum-desc\": function (a,b) { return -astropy_sort_num(a, b); }\n",
       "});\n",
       "\n",
       "    $('#table140079067947696-796649').dataTable({\n",
       "        order: [],\n",
       "        pageLength: 50,\n",
       "        lengthMenu: [[10, 25, 50, 100, 500, 1000, -1], [10, 25, 50, 100, 500, 1000, 'All']],\n",
       "        pagingType: \"full_numbers\",\n",
       "        columnDefs: [{targets: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 23, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54], type: \"optionalnum\"}]\n",
       "    });\n",
       "});\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "master_catalogue[:10].show_in_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue[columns].write(\"{}/decam_merged_catalogue_herschel-stripe-82.fits\".format(TMP_DIR), 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.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
