{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XMM-LSS 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-07 12:41:32.224691\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": {
    "collapsed": true
   },
   "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 the optical catalogues and then add the infrared ones: HSC, VHS, VICS82, UKIDSS-LAS, PanSTARRS, SHELA, SpIES.\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": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEKCAYAAADpfBXhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XuYXHWd5/H3t66dpDsJSXdCSEICElBArjHAgMrqOAaG9bKi4gUvOz5RVxd1HWeHcZZZ/WPWefYZd0dxZHjAB3C8K6vIRh0exRUGCDSZEAgXiSGQG6Rz6XtXd12++8c51SmaTnd196murlOf10M9dW51zu8k5FO/+p3f+R1zd0REJF4S9S6AiIhET+EuIhJDCncRkRhSuIuIxJDCXUQkhhTuIiIxpHAXEYkhhbuISAwp3EVEYihVrwO3t7f72rVr63V4EZGG9Oijjx5y947JtqtbuK9du5bOzs56HV5EpCGZ2fPVbKdmGRGRGFK4i4jEkMJdRCSGFO4iIjGkcBcRiSGFu4hIDCncRURiSOEuIhJDCncRkRiq2x2q9fTdLS+Mu/z9F508yyUREakN1dxFRGJI4S4iEkMKdxGRGFK4i4jEkMJdRCSGFO4iIjGkcBcRiSGFu4hIDE0a7mbWYmYPm9ljZrbDzL40zjYfMbMuM9sWvj5Wm+KKiEg1qrlDdRh4k7v3m1kauN/MfuHuD43Z7gfu/unoiygiIlM1abi7uwP94Ww6fHktCyUiIjNTVZu7mSXNbBtwELjH3beMs9m7zGy7mf3YzFZHWkoREZmSqsLd3Yvufh6wCthgZmeP2eTnwFp3Pwe4B7h9vP2Y2SYz6zSzzq6urpmUW0REJjCl3jLu3g3cC2wcs/ywuw+Hs7cAFx7n8ze7+3p3X9/R0TGd8oqISBWq6S3TYWaLw+l5wFuAp8dss6Ji9m3AU1EWUkREpqaa3jIrgNvNLEnwZfBDd7/bzL4MdLr7XcB1ZvY2oAAcAT5SqwKLiMjkquktsx04f5zlN1RMXw9cH23RRERkunSHqohIDCncRURiSOEuIhJDCncRkRhSuIuIxJDCXUQkhhTuIiIxpHAXEYkhhbuISAwp3EVEYkjhLiISQwp3EZEYUriLiMSQwl1EJIYU7iIiMaRwFxGJIYW7iEgMKdxFRGJI4S4iEkOThruZtZjZw2b2mJntMLMvjbNN1sx+YGY7zWyLma2tRWFFRKQ61dTch4E3ufu5wHnARjO7eMw2fwYcdffTgP8F/F20xRQRkamYNNw90B/OpsOXj9ns7cDt4fSPgTebmUVWShERmZKq2tzNLGlm24CDwD3uvmXMJiuBPQDuXgB6gKXj7GeTmXWaWWdXV9fMSi4iIsdVVbi7e9HdzwNWARvM7OzpHMzdb3b39e6+vqOjYzq7EBGRKkypt4y7dwP3AhvHrNoHrAYwsxSwCDgcRQFFRGTqqukt02Fmi8PpecBbgKfHbHYX8OFw+mrgN+4+tl1eRERmSaqKbVYAt5tZkuDL4IfufreZfRnodPe7gFuBb5vZTuAIcE3NSiwiIpOaNNzdfTtw/jjLb6iYzgHvjrZoIiIyXbpDVUQkhhTuIiIxpHAXEYkhhbuISAwp3EVEYkjhLiISQwp3EZEYUriLiMSQwl1EJIYU7iIiMaRwFxGJIYW7iEgMKdxFRGJI4S4iEkMKdxGRGFK4i4jEkMJdRCSGFO4iIjFUzQOyV5vZvWb2pJntMLPPjLPN5WbWY2bbwtcN4+1LRERmRzUPyC4An3f3rWbWBjxqZve4+5NjtrvP3a+KvogiIjJVk9bc3f2Au28Np/uAp4CVtS6YiIhM35Ta3M1sLXA+sGWc1ZeY2WNm9gszOyuCsomIyDRV0ywDgJm1Aj8BPuvuvWNWbwXWuHu/mV0J/BRYN84+NgGbAE4++eRpF1pERCZWVc3dzNIEwf4dd79z7Hp373X3/nB6M5A2s/ZxtrvZ3de7+/qOjo4ZFl1ERI6nmt4yBtwKPOXuXz3ONieG22FmG8L9Ho6yoCIiUr1qmmUuBa4FHjezbeGyvwJOBnD3m4CrgU+aWQEYAq5xd69BeUVEpAqThru73w/YJNvcCNwYVaFERGRmdIeqiEgMKdxFRGJI4S4iEkMKdxGRGFK4i4jEkMJdRCSGFO4iIjGkcA/l8kWGRor1LoaISCQU7oC7c8t9u7j+zu31LoqISCQU7sBLvcPs78mxbU93vYsiIhIJhTuwfV8Q6i8cGSSXV9OMiDS+pg93d+fxvT2kEkbJYVfXQL2LJCIyY1U/rCOu9vfkODwwwh+9aikP/OEwtz+wm3NXLx5d//6L9FAREWk8TV9zf3xvNwmDN5zeQcLgYF+u3kUSEZmxpg53d+fxfT2ctqyVhS1plizIcrBvuN7FEhGZsaYO971Hhzg6mOeclUEzzLK2LC/1KtxFpPE1dbhv39tNMmGcedJCAJYvzHJkYJhCsVTnkomIzExTh/vTL/axblkrLekkAMvaWig5HBoYqXPJRERmpmnD3d3pHsqzrK1ldNmyhVkADvbqoqqINLZJw93MVpvZvWb2pJntMLPPjLONmdnXzGynmW03swtqU9zo5PIliiWnreVYb9D21iwGuqgqIg2vmn7uBeDz7r7VzNqAR83sHnd/smKbK4B14esi4Jvh+5zVl8sD0Jo99keQTiZYsiCjmruINLxJa+7ufsDdt4bTfcBTwMoxm70duMMDDwGLzWxF5KWNUN9wAYDWlpd/vy1rU3dIEWl8U2pzN7O1wPnAljGrVgJ7Kub38sovgDmlPwz3tuyYcF/YwqH+YYolr0exREQiUXW4m1kr8BPgs+7eO52DmdkmM+s0s86urq7p7CIy/bnj19xLDof7VXsXkcZVVbibWZog2L/j7neOs8k+YHXF/Kpw2cu4+83uvt7d13d0dEynvJHpyxVImjEv7AZZtmxh0HtGTTMi0siq6S1jwK3AU+7+1eNsdhfwobDXzMVAj7sfiLCckesfztPakiI4vWM6RnvM6KKqiDSuanrLXApcCzxuZtvCZX8FnAzg7jcBm4ErgZ3AIPDR6Isarf7hwsu6QZZlUgkWz09rGAIRaWiThru73w/YJNs48KmoCjUb+nIFFs1Lj7uuvTXLEd2lKiINrGnvUO3PFV7Wx71SW0t6tDeNiEgjaspwL7kft1kGoK0lRX+uQMnVHVJEGlNThvvgSBGHCWruKYruDI3oeaoi0piaMtxHhx5oGb/NvRz6fWqaEZEG1ZThXr6BaezdqWVtYeiXtxMRaTRNGe7lGvlx29zLNfewhi8i0miaMtxHhx6YoM0dgu6SIiKNqDnDfbhAOmlkUuOffiaVIJ00dYcUkYbVlOHel8vT1pJ+xdADZWZGW0tazTIi0rCaM9yHj38DU1lrNqXeMiLSsJoy3Ce6O7WsrSWlNncRaVjNGe4T3J1aVr5LVUSkETVduI8USgyOFF/xkI6xWrNphvJFhgu6S1VEGk/ThfvhgWAo32qaZQAO9Wt0SBFpPE0X7of6grBuy44/9EBZOdwP9uqhHSLSeJou3Lv6g7CetM09DP8uPW5PRBpQ84V7GNaTtrmH67v0oGwRaUBNF+7lNvRq+rkbqrmLSGNqunDv6humJZ0gnZz41JMJY34mqXAXkYY0abib2bfM7KCZPXGc9ZebWY+ZbQtfN0RfzOh09Q3TOsnF1LK2ljQHFe4i0oAmfUA2cBtwI3DHBNvc5+5XRVKiGgvCvZrTDtrdVXMXkUY0ac3d3X8HHJmFssyKQ/3Dk/aUKWvLKtxFpDFF1eZ+iZk9Zma/MLOzItpnTUyl5t7WkqKrfxjXg7JFpMFEEe5bgTXufi7wdeCnx9vQzDaZWaeZdXZ1dUVw6KkZLhTpGy6woOpmmTQjhRK9QxpjRkQay4zD3d173b0/nN4MpM2s/Tjb3uzu6919fUdHx0wPPWVHB4Lx2Rdkk1VtX37cXvnGJxGRRjHjcDezEy186oWZbQj3eXim+62F8rgyCzLVX1AF1GNGRBrOpClnZt8DLgfazWwv8DdAGsDdbwKuBj5pZgVgCLjG52gj9ZGB4AamaptlyhdedVFVRBrNpCnn7u+bZP2NBF0l57zRcM9U2yyj8WVEpDE11R2qU625t6QTZFIJhbuINJymC3czmFdlzd3M6GjNKtxFpOE0XbifMD9DIrj+W5VlC7MaGVJEGk7ThfuSBZkpfaajNcvBXoW7iDSWpgr3wwMjLJk/tXBfvrCFl/rUz11EGktThfvRadTcly/M0j2YJ5fXg7JFpHE0VbgfGRhhSevUwn3ZwhZA3SFFpLE0TbiXSs7Rwak3y5wYhvuLelC2iDSQpgn3nqE8JWcazTJBuL+kcBeRBtI04X44vIFp6RSbZZYvzALwknrMiEgDaZpwL9+desIUm2UWzUuTSSVUcxeRhtJ04T7VZhkz48SFLQp3EWkoTRfuU22WgaBpRuEuIo2kicI9aDOfarMMBN0h1eYuIo2kicI9z4JMkpZ0dYOGVSo3y8zRYepFRF6hicJ9eMo3MJUtX5hlcKRI/7CepSoijaFpwv3wwAhLFmSn9Vn1dReRRtM04R7cnZqe1mePhbva3UWkMTRNuB/pV81dRJrHpOFuZt8ys4Nm9sRx1puZfc3MdprZdjO7IPpiztyRwZFpdYME3aUqIo2nmpr7bcDGCdZfAawLX5uAb868WNEaHCmQy5em1Q0SYH4mRVtLSjV3EWkYk4a7u/8OODLBJm8H7vDAQ8BiM1sRVQGjcLg/vIFpinenVlquu1RFpIFE0ea+EthTMb83XPYKZrbJzDrNrLOrqyuCQ1fn6OD0hh6opLtURaSRzOoFVXe/2d3Xu/v6jo6OWTtueUTIE2Zcc1ebu4g0hijCfR+wumJ+VbhszjgSUbPMwb4cpZLuUhWRuS+KcL8L+FDYa+ZioMfdD0Sw38iMNstMs7cMwPK2LPmij+5LRGQuS022gZl9D7gcaDezvcDfAGkAd78J2AxcCewEBoGP1qqw03V4YIR00mjLTnq6x7W84nF7S1un119eRGS2TJp27v6+SdY78KnISlQDR/pHOGF+BjOb9j6WLwrC/WDvMGedFFXJRERqoynuUD0yODKjnjKgu1RFpLE0R7gPzDzcO8KmmBcV7iLSABTuVcqkErS3ZtQdUkQaQtOE+0y6QZYta2vhoGruItIAYh/u+WKJnqH8jG5gKlu+MKtmGRFpCLEP94N9QTNK+YLoTJy4qIUXexTuIjL3xT7cD3QPAbBi0czDfc3SBRweGKE3l5/xvkREain24b4vDPeVi+fNeF+nti8AYFfXwIz3JSJSS7EP9wNhM8qKKMK9oxWAXV39M96XiEgtxT7c93cPsbAlResMhh4oO3nJfJIJU81dROa8Jgj3HCdFUGuHoK/7yUvms+uQau4iMrfFPtwP9AxFFu4QtLur5i4ic13sw31/91AkPWXKTu1YwHOHBjSuu4jMabEO96GRIkcH89HW3DtaGS6URnvhiIjMRbEO9/09QQCftDi6mvsp5e6Qh9Q0IyJzV6zD/UB32A1yUZQ193Jfd11UFZG5K9bhvj/CG5jKOlqztGVTuqgqInPazDt/z2H7e4Ywm9m4Mt/d8sIrli2an1Z3SBGZ06qquZvZRjN7xsx2mtlfjrP+I2bWZWbbwtfHoi/q1B3oztHemiWTivYHSntrVjV3EZnTqnlAdhL4BvAWYC/wiJnd5e5Pjtn0B+7+6RqUcdr2R9zHvay9Ncu2Pd0MjhSYn4n1jx8RaVDVVGk3ADvdfZe7jwDfB95e22JFY3/3ECdF2Me9rKMteOTec+oxIyJzVDXhvhLYUzG/N1w21rvMbLuZ/djMVkdSuhlw90iHHqjU3ho8+ENNMyIyV0XVGP1zYK27nwPcA9w+3kZmtsnMOs2ss6urK6JDj69nKM9Qvhjp3all7a1ZzBTuIjJ3VRPu+4DKmviqcNkodz/s7uUnR98CXDjejtz9Zndf7+7rOzo6plPequ0P+7jXouaeTiY4adE89ZgRkTmrmnB/BFhnZqeYWQa4BrircgMzW1Ex+zbgqeiKOD3lPu61CHcIbmZSzV1E5qpJw93dC8CngV8RhPYP3X2HmX3ZzN4Wbnadme0ws8eA64CP1KrA1TpQHnqgBs0yAK/qaGVXVz9FDSAmInNQVf343H0zsHnMshsqpq8Hro+2aDOzrztHOmm0t2Zrsv/zVi/mtgd2s2N/D+esWlyTY4iITFdshx840DPEiYtaSCSsJvu/9LR2AO579lBN9i8iMhPxDffuXKQDho3V0Zbl1Se2cb/CXUTmoNiG+77uoUgHDBvPG07voPP5IwyOFGp6HBGRqYpluBdLzku9uZr0ca902Wnt5IvOlueO1PQ4IiJTFctwP9AzRKHkNesGWbbhlCVkUgk1zYjInBPLcH/0+aNA0KOlllrSSTasXaJwF5E5J5bh/vBzR2jNpnjNioU1P9Zl69p55qU+XurN1fxYIiLVim24X7jmBJI16gZZ6bKwS6Rq7yIyl8Qu3I8MjPDswX42nLJkVo535oqFLF2Q4f6dCncRmTtiF+6P7A56rlw0S+GeSBiXntbOfc8eoqShCERkjohduD/83BGyqQSvXbVo1o75J2ct51D/MJufODBrxxQRmUgsw/38kxeTTSVn7ZhXnL2CM5a38ff/8nvyxdKsHVdE5HhiFe59uTw79vewYe3sNMmUJRPGF956Bs8dGuBHnXtn9dgiIuOJ1dOdH33+KCWHDacsrfmxvrvlhZfNuzsXnLyYf/j17/kPF6ykJT17vxxEmp27M5QvMjBcZGikyMBIgcGRYHooX2RwpEAuXySXL5HLFxkulCgUS5QcSu6kkgkWz0uzeH6aFYvmcd7qxczLNPa/4ViF+8PPHSGVMC5YM/tD8JoZ/3Xjq3nvzQ9x+wO7+fgbXzXrZRCZS0olJ1c4FqhD+SBsyyE7FC7LvexVYrhQZDhfIjf6XhpdPxxOD40UyRWKDA4XgxDPF6dVxoSBYRTdX7F85eJ5nLasjYtOXcLClvTL1r//opOn/ecyW2IV7o/sPsLZKxcxP1Of07ro1KVcfkYH//jbP3Dla1ewesn8upRDpFrFkjMwUqA/V2BguED/cFDjDd6P1X4Hw1c5WAfz5VpxIXw/FrpDFUE8HQmDVCJBKmmkkwlSifA9nE8njUwqwYJsihULE2RSCdLJBNlUMJ1Jhu/h8uDdyCQTo/tJJRIvuw+m5D5a/kP9w+w+PMjuQwP89pmD3PdsFxeuOYHXr+tgyYJMVH/0NRebcM/lizy2p4ePXrq2ruX44pWv4eqbHuTdNz3IP39sA6cta6treSR+SuVAHi4HcpHB4QIDI8XRgB6oWFde1jdcoC+Xpz9XoC8XLOsfrn5E02TCRkOyHJzpZCIMTaOtJcWS+RnSqQSZpJGqWFfeNv2y5UHQZpIJ0qkE6USwbjZuPhwrYcb8TIr5mRRLW7OccWJwd/vh/mF+92wXnbuP0rn7KG88o4PLT6/t85+jEptwv/X+5xgplrhsXXtdy7FueRvf33Qx1976MO/5p4e44z9u4OyVs9ctU+a2cttw71CBnqE8vbk8vaPvBXqH8vQNh++5Ar25/GgQl4N5YKT6JohMKkFLKkE2lSSbTtCSTpJNJVi5eB4t6QTZcL68PBtumxlTC07XKXTrbWlrlneev4o3vXo5v3ziAL95+iBP7OvhrJWLuHDNCfUu3oTMvT433qxfv947Ozsj2dfWF47y7pse5IqzT+Tr7zsfs4n/Jxx7MTQqle1wuw8N8IFbttAzlOcTbzyVay9Zy6J56Qk+LY1ipFCiL5enN/fyEO4dylcEdhDe5fmeoWPr88WJ/82lEsa8dJJsOklLGMgtlQEczmdSxwI5Uw7wVIJMOliWTiZITPJvQabm6Rd7+dm2/fTm8nzwojV8YeMZr2iPrzUze9Td10+6XTXhbmYbgX8AksAt7v6VMeuzwB3AhcBh4L3uvnuifUYV7r25PH/6tfsolWDzZ15fVYDWKtzH6h4c4Wfb9vPMS320ZVN88JI1bDzrRM46aSGpZKx6oTaEkUIpbC8uMBA2VwyEzRX9FbXjIKwLowHeN1q7DqZz+YnbkhMWjBg6L50M3jPB9Nj5lnTi2HQqSUsmCG39vzG3DeeLPH9kkDse3M3S1iz/7aozueq1K2r2SM+xIgt3M0sCvwfeAuwFHgHe5+5PVmzzn4Bz3P0TZnYN8E53f+9E+40i3N2dz/5gG3dvP8APP34xF66prn/7bIV72TmrFvHN//cHNj9+AHdoy6Z43SlLOH15G6e0z2fN0gUsX9jCkgUZFrakJv3lEQelkjNSLDFc7h1RCN6D3hIlhit6RpTXjc6HPSnKvTBy5fmwB0XlBb7Ki4KFKoeHSCUsqC2Xa81hTXleJgjhbBjQ5dr0vPSxYJ6XSZJJJpri77CZvf+ik9m+t5sv/p8neHxfD6d2LODDl6zlXReuojVb29buKMP9EuC/u/tbw/nrAdz9f1Rs86twmwfNLAW8CHT4BDufbri7O9v2dPOLJ15k8+MH2Ht0iP/yltO57s3rqt7HbId7WV8uz65DA+zqGuDo4AjPHx54xU/04MJUmgXZJAsyKeZnkmRTQdCkwwtPmbD9M5UwkuErYeX34OKQmWEGBpRzxggmHKf8N+OAe7As/I9SyUf7/7o7RQ/nS04xfBXC93yxRCGcLxRLFIpBaBdKJfKFYP1IsUS+WCJfdEYKpeA1wzt5EwapZHAR7hUX61LH5jMVf2ajPSqS5WaMY80Z5fZn1ZylGuUm2GLJ+flj+7ntgd1s29PNgkySC9acwHmrF3POqsWsWNTCCQsynDA/TUsqGUntvtpwr+YrZiWwp2J+L3DR8bZx94KZ9QBLgciHSvzRo3v5ix9vJ500Ljutnc/98em88/yVUR+mJtpa0py7ajHnrgr64RdLTs9QnsMDw6Nd0QZGjnUjGw4vvOVLIxSKlaF67OaLcuiWA7sUprZ7RWgfRznsCb8EIPgiMLPRLwUj+JJI2LH3xOh7+IWSCOaTZiTCL5vyF08mlWJRxZdQqqJHRGUXt/LydNgFLpW00eljy+rbo0JkrGTCeMf5K3nH+SvZtqebH3XuYesL3Xzj3p2M90PRDNKJBJvecCp//tYzalq2We0tY2abgE3hbL+ZPTOT/e0EbpveR9upwRfPHBHXc4vreUF8zy2u58UHZvj5L/wtfGH6H19TzUbVhPs+YHXF/Kpw2Xjb7A2bZRYRXFh9GXe/Gbi5moLVkpl1VvOzphHF9dziel4Q33OL63k1imoaFx8B1pnZKWaWAa4B7hqzzV3Ah8Ppq4HfTNTeLiIitTVpzT1sQ/808CuCrpDfcvcdZvZloNPd7wJuBb5tZjuBIwRfACIiUidVtbm7+2Zg85hlN1RM54B3R1u0mqp701ANxfXc4npeEN9zi+t5NYS63aEqIiK1ow69IiIx1HThbmYbzewZM9tpZn9Z7/JExcy+ZWYHzeyJepclSma22szuNbMnzWyHmX2m3mWKgpm1mNnDZvZYeF5fqneZomZmSTP7NzO7u95laUZNFe7hUArfAK4AzgTeZ2Zn1rdUkbkN2FjvQtRAAfi8u58JXAx8KiZ/Z8PAm9z9XOA8YKOZXVznMkXtM8BT9S5Es2qqcAc2ADvdfZe7jwDfB95e5zJFwt1/R9BTKVbc/YC7bw2n+wjCojFuSZ6AB/rD2XT4is0FMDNbBfwpcEu9y9Ksmi3cxxtKoeGDolmY2VrgfGBLfUsSjbDZYhtwELjH3WNxXqH/DfwFMLNBhGTami3cpUGZWSvwE+Cz7t5b7/JEwd2L7n4ewV3fG8zs7HqXKQpmdhVw0N0frXdZmlmzhXs1QynIHGNmaYJg/46731nv8kTN3buBe4nPNZNLgbeZ2W6Cps83mdk/17dIzafZwr2aoRRkDrFgYPRbgafc/av1Lk9UzKzDzBaH0/MInpfwdH1LFQ13v97dV7n7WoJ/Y79x9w/WuVhNp6nC3d0LQHkohaeAH7r7jvqWKhpm9j3gQeAMM9trZn9W7zJF5FLgWoLa37bwdWW9CxWBFcC9ZradoNJxj7ury6BERneoiojEUFPV3EVEmoXCXUQkhhTuIiIxpHAXEYkhhbuISAwp3EVEYkjhLrPGzIphP/Ud4VC3nzezRLhuvZl9bYLPrjWz989eaV9x7KFwHJg5wczeGw5brb7xMi6Fu8ymIXc/z93PIrgj8wrgbwDcvdPdr5vgs2uBuoR76A/hODBVC4eYrgl3/wHwsVrtXxqfwl3qwt0PApuAT1vg8nIt1MzeWHE36r+ZWRvwFeD14bLPhbXp+8xsa/j6o/Czl5vZb83sx2b2tJl9JxzCADN7nZk9EP5qeNjM2sKRGf+nmT1iZtvN7OPVlN/Mfmpmj4a/QjZVLO83s783s8eAS45zzLPC6W3hMdeFn/1gxfJ/Kn85hA+Y2Rru49cR/jVInLm7XnrNygvoH2dZN7AcuBy4O1z2c+DScLqV4EHuo+vD5fOBlnB6HdAZTl8O9BAMCpcgGJLhMiAD7AJeF263MNzvJuCvw2VZoBM4ZUwZ1wJPjFm2JHyfBzwBLA3nHXhPOH28Y34d+EDFNvOA14TnnQ6X/yPwIaCDYJjqUyqPW3Gud4/3Z62XXqkpfheIzIZ/Bb5qZt8B7nT3vWHlu1IauNHMzgOKwOkV6x52970AYTv5WoLAP+DujwB4OGywmf0JcI6ZXR1+dhHBl8Vzk5TxOjN7Zzi9OvzM4bAsPwmXn3GcYz4IfDF8oMWd7v6smb0ZuBB4JDzXeQTjvF8M/M7dnwv3EbsHskhtKNylbszsVIIwPEhQcwXA3b9iZv8XuBL4VzN76zgf/xzwEnAuQQ09V7FuuGK6yMT/nxvwn939V1Mo9+XAHwOXuPugmf0WaAlX59y9ONHn3f27ZraF4ElFm8OmIANud/frxxzr31dbLpFKanOXujCzDuAm4EZ39zHrXuXuj7v73xGMmPhqoA9oq9hsEUGtuEQwauRkFy+fAVaY2evCY7SZWYpghNBPhmPGY2anm9mCSfa1CDgaBvurCWrXVR8z/FLb5e5fA34GnAP8GrjazJaF2y4xszXAQ8AbzOz6epM6AAAA4ElEQVSU8vJJyiYCqOYus2te2EySJnjw9beB8cZo/6yZ/TuCR7TtAH4RThfDC5W3EbRJ/8TMPgT8EhiY6MDuPmJm7wW+Ho6fPkRQ+76FoNlma3jhtQt4xyTn8UvgE2b2FEGAPzTFY74HuNbM8sCLwN+6+xEz+2vgX8LuoXngU+7+UHjB9s5w+UGCnkYiE9KQvyKTsODZrXe7+5x6DF7YPPTn7n5Vvcsic4+aZUQmVwQWzbWbmAh+vRytd1lkblLNXUQkhlRzFxGJIYW7iEgMKdxFRGJI4S4iEkMKdxGRGPr/7dmetvvoKHkAAAAASUVORK5CYII=\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 \"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": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=10</i>\n",
       "<table id=\"table140603304651464-726227\" 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>88218898</td><td>33.22824207774105</td><td>-3.07039120280157</td><td>0.9994682669639587</td><td>14.901598930358887</td><td>0.0002342463849345222</td><td>15.168191909790039</td><td>0.0002794938918668777</td><td>17.265405654907227</td><td>0.0023150050546973944</td><td>19.815391540527344</td><td>0.007904324680566788</td><td>17.55018424987793</td><td>0.004681005142629147</td><td>20.160557746887207</td><td>0.013216483406722546</td><td>16.8929386138916</td><td>0.005416904576122761</td><td>20.42754554748535</td><td>0.02536385878920555</td><td>13.847616195678711</td><td>0.002375941490754485</td><td>13.85384464263916</td><td>0.0012575738364830613</td><td>3975.2132183840895</td><td>0.8576478537508474</td><td>False</td><td>3109.7339576833483</td><td>0.8005182499160827</td><td>450.6483009746803</td><td>0.960871609581799</td><td>False</td><td>43.03713810499424</td><td>0.31331691014213664</td><td>346.67801405964263</td><td>1.494655478501944</td><td>False</td><td>31.316765566749837</td><td>0.3812136968918463</td><td>635.0743237626627</td><td>3.1684832793564235</td><td>False</td><td>24.489605038758906</td><td>0.572101106405374</td><td>10494.30112448024</td><td>22.96492034515749</td><td>False</td><td>10434.271741649156</td><td>12.08568627217851</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>117493832</td><td>36.85647907774105</td><td>-6.90755520280157</td><td>0.9988089203834534</td><td>15.407334327697754</td><td>0.0003023075987584889</td><td>15.377582550048828</td><td>0.0002928541216533631</td><td>17.49590301513672</td><td>0.002204287564381957</td><td>19.748981475830078</td><td>0.005073049571365118</td><td>17.366270065307617</td><td>0.002789716934785247</td><td>19.650351524353027</td><td>0.007774882949888706</td><td>17.15704917907715</td><td>0.005037541035562754</td><td>19.64466667175293</td><td>0.013819574378430843</td><td>14.303420066833496</td><td>0.0011181082809343934</td><td>14.338500022888184</td><td>0.0004964201943948865</td><td>2494.9754057698556</td><td>0.6946899445503859</td><td>False</td><td>2564.289062606144</td><td>0.6916621346914933</td><td>364.4507043897783</td><td>0.739916521154968</td><td>False</td><td>45.751718314281355</td><td>0.21377267697837152</td><td>410.66905029925977</td><td>1.0551830170084795</td><td>False</td><td>50.10249925599736</td><td>0.35878058178878164</td><td>497.94379898854515</td><td>2.3103331267907836</td><td>False</td><td>50.36552105593489</td><td>0.6410673801708329</td><td>6896.5513351055</td><td>7.102177420148214</td><td>False</td><td>6677.286193880262</td><td>3.0529880977255974</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>2</td><td>112078864</td><td>36.00836007774105</td><td>-2.36790920280157</td><td>0.9992783069610596</td><td>15.492629051208496</td><td>0.0003249580622650683</td><td>15.490057945251465</td><td>0.00029518670635297894</td><td>17.67612075805664</td><td>0.0028824207838624716</td><td>20.085905075073242</td><td>0.00940440222620964</td><td>17.25002670288086</td><td>0.0032180952839553356</td><td>19.79556369781494</td><td>0.009990930557250977</td><td>16.84869384765625</td><td>0.004293515346944332</td><td>19.438264846801758</td><td>0.012777352705597878</td><td>13.978028297424316</td><td>0.0009170258417725563</td><td>14.013334274291992</td><td>0.0004429612308740616</td><td>2306.473023761689</td><td>0.6903214622332868</td><td>False</td><td>2311.9413996134117</td><td>0.6285637008715302</td><td>308.7107101400616</td><td>0.8195675553684664</td><td>False</td><td>33.545785832542435</td><td>0.2905660339785696</td><td>457.07694800634823</td><td>1.3547647801904192</td><td>False</td><td>43.830307836319555</td><td>0.4033259275839978</td><td>661.488747619895</td><td>2.6158399041042384</td><td>False</td><td>60.91076602166548</td><td>0.716820842499532</td><td>9306.549272886741</td><td>7.86042331789787</td><td>False</td><td>9008.78640923864</td><td>3.675426037217616</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>94364659</td><td>34.64591607774105</td><td>-6.9474082028015705</td><td>0.9998875260353088</td><td>15.015498161315918</td><td>0.0002891847980208695</td><td>14.957252502441406</td><td>0.00030016768141649663</td><td>16.730358123779297</td><td>0.0018261830555275083</td><td>19.073152542114258</td><td>0.004133686888962984</td><td>17.702085494995117</td><td>0.0058384244330227375</td><td>22.241368293762207</td><td>0.036556802690029144</td><td>16.962642669677734</td><td>0.0056015425361692905</td><td>19.382081985473633</td><td>0.018697384744882584</td><td>13.949962615966797</td><td>0.0008716137381270528</td><td>14.17313289642334</td><td>0.0005524715525098145</td><td>3579.3217171930232</td><td>0.9533489104462195</td><td>False</td><td>3776.5826970475177</td><td>1.0440916190161937</td><td>737.6608768423636</td><td>1.2407284459259458</td><td>False</td><td>85.25875433803398</td><td>0.32460278420480493</td><td>301.41565287940375</td><td>1.6208288022030564</td><td>False</td><td>4.607365675171806</td><td>0.1551302767375157</td><td>595.5838765039307</td><td>3.072743087568468</td><td>False</td><td>64.14564933964267</td><td>1.104647593179233</td><td>9550.25468860777</td><td>7.66680999742217</td><td>False</td><td>7775.831507971045</td><td>3.956693795819863</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>94365504</td><td>34.62076507774105</td><td>-6.968653202801569</td><td>0.9910785555839539</td><td>14.942194938659668</td><td>0.000304616114590317</td><td>14.935104370117188</td><td>0.0003147144161630422</td><td>16.665958404541016</td><td>0.0016594595508649945</td><td>19.107948303222656</td><td>0.004744274076074362</td><td>17.281967163085938</td><td>0.0033882716670632362</td><td>19.691563606262207</td><td>0.00650342321023345</td><td>16.333999633789062</td><td>0.00278493482619524</td><td>18.927692413330078</td><td>0.006057560909539461</td><td>13.432988166809082</td><td>0.0005587704363279045</td><td>13.737635612487793</td><td>0.000382722559152171</td><td>3829.323214163537</td><td>1.0743618513383346</td><td>False</td><td>3854.4130401728107</td><td>1.1172505294317163</td><td>782.7383963765898</td><td>1.1963520254767999</td><td>False</td><td>82.56969468256516</td><td>0.360799667760122</td><td>443.82640315340427</td><td>1.385055062462681</td><td>False</td><td>48.236363303939676</td><td>0.28892974491716233</td><td>1062.6742238347033</td><td>2.7257803892765526</td><td>False</td><td>97.48168661179022</td><td>0.5438717541404113</td><td>15374.632133607884</td><td>7.912502012946044</td><td>False</td><td>11613.0355365069</td><td>4.0936008770630865</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>90862137</td><td>33.58497207774105</td><td>-6.38099720280157</td><td>0.99982750415802</td><td>15.10276985168457</td><td>0.0003049937658943236</td><td>15.11154842376709</td><td>0.0003150413394905627</td><td>17.294219970703125</td><td>0.00210925773717463</td><td>19.779186248779297</td><td>0.00714883953332901</td><td>17.671764373779297</td><td>0.003921873867511749</td><td>20.95743465423584</td><td>0.015037811361253262</td><td>16.639381408691406</td><td>0.003074037143960595</td><td>19.214494705200195</td><td>0.008906153030693531</td><td>13.867411613464355</td><td>0.0009318587835878134</td><td>13.996355056762695</td><td>0.0005043012788519263</td><td>3302.8744033977246</td><td>0.9278092580440834</td><td>False</td><td>3276.2771318392615</td><td>0.9506570119275664</td><td>438.84586613347096</td><td>0.8525450606810437</td><td>False</td><td>44.49646402159843</td><td>0.2929791598520175</td><td>309.95186258446245</td><td>1.1196017087109982</td><td>False</td><td>15.032324364233158</td><td>0.20820274493919794</td><td>802.1349445141043</td><td>2.2710789260771076</td><td>False</td><td>74.85177749263619</td><td>0.613999406160862</td><td>10304.700045068465</td><td>8.84425259759478</td><td>False</td><td>9150.777112962778</td><td>4.2503405342222145</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>90853704</td><td>33.34062307774105</td><td>-6.21536020280157</td><td>0.9971857070922852</td><td>15.215068817138672</td><td>0.00026351603446528316</td><td>15.212533950805664</td><td>0.000318219797918573</td><td>15.585156440734863</td><td>0.0003729382297024131</td><td>15.874584197998047</td><td>0.00046980296610854566</td><td>17.934600830078125</td><td>0.0031946173403412104</td><td>20.832785606384277</td><td>0.016510996967554092</td><td>17.13958168029785</td><td>0.0024742837995290756</td><td>19.368621826171875</td><td>0.00791874248534441</td><td>14.431429862976074</td><td>0.0008005436393432319</td><td>14.49173641204834</td><td>0.0005902209668420255</td><td>2978.327648322412</td><td>0.7228616746726921</td><td>False</td><td>2985.289267917963</td><td>0.8749622085016192</td><td>2118.055928424517</td><td>0.7275284962366231</td><td>False</td><td>1622.4313173443447</td><td>0.7020333685617212</td><td>243.30983710470957</td><td>0.7159030170348388</td><td>False</td><td>16.861094305635632</td><td>0.2564098680047346</td><td>506.0195870584806</td><td>1.15316783304846</td><td>False</td><td>64.94582971994396</td><td>0.47367795123294487</td><td>6129.54241786146</td><td>4.519482884700024</td><td>False</td><td>5798.363464523469</td><td>3.1520692366475074</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>130367335</td><td>37.82393607774105</td><td>-3.8429172028015697</td><td>0.9998703598976135</td><td>14.987499237060547</td><td>0.00030697413603775203</td><td>14.931466102600098</td><td>0.0003195886965841055</td><td>17.354764938354492</td><td>0.0020982224959880114</td><td>19.688711166381836</td><td>0.004795628599822521</td><td>17.62111473083496</td><td>0.005977497436106205</td><td>20.315260887145996</td><td>0.013663405552506447</td><td>17.43262481689453</td><td>0.011403210461139679</td><td>19.858789443969727</td><td>0.019458232447504997</td><td>14.355469703674316</td><td>0.0015111601678654552</td><td>14.31194019317627</td><td>0.0005972105427645147</td><td>3672.8255858495227</td><td>1.038431302274454</td><td>False</td><td>3867.3507205473784</td><td>1.1383626801766957</td><td>415.0438898173864</td><td>0.8020865681928796</td><td>False</td><td>48.363256211922696</td><td>0.21361746403410067</td><td>324.75369990075626</td><td>1.7879245437479179</td><td>False</td><td>27.15786625086007</td><td>0.3417671243715156</td><td>386.3225626243715</td><td>4.057447350642506</td><td>False</td><td>41.35082916333029</td><td>0.7410769229496164</td><td>6573.733875112411</td><td>9.149519692429063</td><td>False</td><td>6842.643638283953</td><td>3.7638045993631266</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>8</td><td>120096673</td><td>37.33184507774105</td><td>-3.0320412028015697</td><td>0.9986262321472168</td><td>15.250898361206055</td><td>0.00030277034966275096</td><td>15.291851997375488</td><td>0.00031983060762286186</td><td>17.339542388916016</td><td>0.001923189265653491</td><td>19.677743911743164</td><td>0.0047086551785469055</td><td>17.540542602539062</td><td>0.004114446695894003</td><td>20.225564002990723</td><td>0.014495683833956718</td><td>17.082416534423828</td><td>0.005921080708503723</td><td>19.96006965637207</td><td>0.019886545836925507</td><td>14.083797454833984</td><td>0.0009892861125990748</td><td>14.102452278137207</td><td>0.00045340158976614475</td><td>2881.646181148783</td><td>0.8035810338157697</td><td>False</td><td>2774.9758061884168</td><td>0.8174381533401076</td><td>420.9039916762694</td><td>0.7455568259721391</td><td>False</td><td>48.85425954228409</td><td>0.21187270091918534</td><td>349.77032373201064</td><td>1.3254705392471822</td><td>False</td><td>29.496765720726756</td><td>0.39381185608266506</td><td>533.3758969898595</td><td>2.9087744520328234</td><td>False</td><td>37.66796319918114</td><td>0.6899334050585643</td><td>8442.693401857605</td><td>7.692696714714607</td><td>False</td><td>8298.87243128507</td><td>3.4655949917865243</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>112065990</td><td>35.57481807774105</td><td>-2.11984720280157</td><td>0.9998450875282288</td><td>15.06057357788086</td><td>0.00032545861904509366</td><td>14.991355895996094</td><td>0.00032129205646924675</td><td>17.754425048828125</td><td>0.0031081007327884436</td><td>20.155977249145508</td><td>0.008562754839658737</td><td>17.571796417236328</td><td>0.004485646262764931</td><td>19.984566688537598</td><td>0.011681643314659595</td><td>17.459157943725586</td><td>0.00786625500768423</td><td>19.938148498535156</td><td>0.024145854637026787</td><td>14.52051067352295</td><td>0.001505997497588396</td><td>14.564550399780273</td><td>0.0006505289347842336</td><td>3433.7649940728256</td><td>1.029300126677901</td><td>False</td><td>3659.802433672252</td><td>1.0830121027857411</td><td>287.23012053179787</td><td>0.822244062776437</td><td>False</td><td>31.449163643432332</td><td>0.24802661734118936</td><td>339.84542913272855</td><td>1.4040485823594377</td><td>False</td><td>36.827592125111835</td><td>0.3962351015449104</td><td>376.99606964266036</td><td>2.7313699291850435</td><td>False</td><td>38.436213810706946</td><td>0.8547888772648597</td><td>5646.713204873612</td><td>7.832414465752702</td><td>False</td><td>5422.253778781171</td><td>3.248793730357447</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(\"$('#table140603304651464-726227').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",
       "    $('#table140603304651464-726227').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.char.array(master_catalogue['des_id'].astype(str)) \n",
    "                                    +  np.char.array(master_catalogue['decals_id'].astype(str) )), \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": {
    "collapsed": true
   },
   "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=\"table140602501459640-312972\" 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>1471093</td><td>1471093</td><td>1484375</td><td>1484375</td><td>1727731</td><td>427458</td><td>1732357</td><td>430954</td></tr>\n",
       "<tr><td>1</td><td>r</td><td>1503931</td><td>1503931</td><td>1505413</td><td>1505413</td><td>1783350</td><td>436159</td><td>1756613</td><td>418542</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>1489891</td><td>1489891</td><td>1502365</td><td>1502365</td><td>1784800</td><td>453697</td><td>1657504</td><td>378961</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(\"$('#table140602501459640-312972').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",
       "    $('#table140602501459640-312972').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(\"{}/xmm-lss_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=\"table140603304368056-289520\" 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>88218898</td><td>33.22824207774105</td><td>-3.07039120280157</td><td>17.55018424987793</td><td>0.004681005142629147</td><td>20.160557746887207</td><td>0.013216483406722546</td><td>13.847616195678711</td><td>0.002375941490754485</td><td>13.85384464263916</td><td>0.0012575738364830613</td><td>346.67801405964263</td><td>1.494655478501944</td><td>False</td><td>31.316765566749837</td><td>0.3812136968918463</td><td>10494.30112448024</td><td>22.96492034515749</td><td>False</td><td>10434.271741649156</td><td>12.08568627217851</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9994682669639587</td><td>88218898-1</td><td>3975.2132183840895</td><td>0.8576478537508474</td><td>14.901598930358887</td><td>0.0002342463849345222</td><td>False</td><td>3109.7339576833483</td><td>0.8005182499160827</td><td>15.168191909790039</td><td>0.0002794938918668777</td><td>450.6483009746803</td><td>0.960871609581799</td><td>17.265405654907227</td><td>0.0023150050546973944</td><td>False</td><td>43.03713810499424</td><td>0.31331691014213664</td><td>19.815391540527344</td><td>0.007904324680566788</td><td>635.0743237626627</td><td>3.1684832793564235</td><td>16.8929386138916</td><td>0.005416904576122761</td><td>False</td><td>24.489605038758906</td><td>0.572101106405374</td><td>20.42754554748535</td><td>0.02536385878920555</td></tr>\n",
       "<tr><td>1</td><td>117493832</td><td>36.85647907774105</td><td>-6.90755520280157</td><td>17.366270065307617</td><td>0.002789716934785247</td><td>19.650351524353027</td><td>0.007774882949888706</td><td>14.303420066833496</td><td>0.0011181082809343934</td><td>14.338500022888184</td><td>0.0004964201943948865</td><td>410.66905029925977</td><td>1.0551830170084795</td><td>False</td><td>50.10249925599736</td><td>0.35878058178878164</td><td>6896.5513351055</td><td>7.102177420148214</td><td>False</td><td>6677.286193880262</td><td>3.0529880977255974</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9988089203834534</td><td>117493832-1</td><td>2494.9754057698556</td><td>0.6946899445503859</td><td>15.407334327697754</td><td>0.0003023075987584889</td><td>False</td><td>2564.289062606144</td><td>0.6916621346914933</td><td>15.377582550048828</td><td>0.0002928541216533631</td><td>364.4507043897783</td><td>0.739916521154968</td><td>17.49590301513672</td><td>0.002204287564381957</td><td>False</td><td>45.751718314281355</td><td>0.21377267697837152</td><td>19.748981475830078</td><td>0.005073049571365118</td><td>497.94379898854515</td><td>2.3103331267907836</td><td>17.15704917907715</td><td>0.005037541035562754</td><td>False</td><td>50.36552105593489</td><td>0.6410673801708329</td><td>19.64466667175293</td><td>0.013819574378430843</td></tr>\n",
       "<tr><td>2</td><td>112078864</td><td>36.00836007774105</td><td>-2.36790920280157</td><td>17.25002670288086</td><td>0.0032180952839553356</td><td>19.79556369781494</td><td>0.009990930557250977</td><td>13.978028297424316</td><td>0.0009170258417725563</td><td>14.013334274291992</td><td>0.0004429612308740616</td><td>457.07694800634823</td><td>1.3547647801904192</td><td>False</td><td>43.830307836319555</td><td>0.4033259275839978</td><td>9306.549272886741</td><td>7.86042331789787</td><td>False</td><td>9008.78640923864</td><td>3.675426037217616</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9992783069610596</td><td>112078864-1</td><td>2306.473023761689</td><td>0.6903214622332868</td><td>15.492629051208496</td><td>0.0003249580622650683</td><td>False</td><td>2311.9413996134117</td><td>0.6285637008715302</td><td>15.490057945251465</td><td>0.00029518670635297894</td><td>308.7107101400616</td><td>0.8195675553684664</td><td>17.67612075805664</td><td>0.0028824207838624716</td><td>False</td><td>33.545785832542435</td><td>0.2905660339785696</td><td>20.085905075073242</td><td>0.00940440222620964</td><td>661.488747619895</td><td>2.6158399041042384</td><td>16.84869384765625</td><td>0.004293515346944332</td><td>False</td><td>60.91076602166548</td><td>0.716820842499532</td><td>19.438264846801758</td><td>0.012777352705597878</td></tr>\n",
       "<tr><td>3</td><td>94364659</td><td>34.64591607774105</td><td>-6.9474082028015705</td><td>17.702085494995117</td><td>0.0058384244330227375</td><td>22.241368293762207</td><td>0.036556802690029144</td><td>13.949962615966797</td><td>0.0008716137381270528</td><td>14.17313289642334</td><td>0.0005524715525098145</td><td>301.41565287940375</td><td>1.6208288022030564</td><td>False</td><td>4.607365675171806</td><td>0.1551302767375157</td><td>9550.25468860777</td><td>7.66680999742217</td><td>False</td><td>7775.831507971045</td><td>3.956693795819863</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9998875260353088</td><td>94364659-1</td><td>3579.3217171930232</td><td>0.9533489104462195</td><td>15.015498161315918</td><td>0.0002891847980208695</td><td>False</td><td>3776.5826970475177</td><td>1.0440916190161937</td><td>14.957252502441406</td><td>0.00030016768141649663</td><td>737.6608768423636</td><td>1.2407284459259458</td><td>16.730358123779297</td><td>0.0018261830555275083</td><td>False</td><td>85.25875433803398</td><td>0.32460278420480493</td><td>19.073152542114258</td><td>0.004133686888962984</td><td>595.5838765039307</td><td>3.072743087568468</td><td>16.962642669677734</td><td>0.0056015425361692905</td><td>False</td><td>64.14564933964267</td><td>1.104647593179233</td><td>19.382081985473633</td><td>0.018697384744882584</td></tr>\n",
       "<tr><td>4</td><td>94365504</td><td>34.62076507774105</td><td>-6.968653202801569</td><td>17.281967163085938</td><td>0.0033882716670632362</td><td>19.691563606262207</td><td>0.00650342321023345</td><td>13.432988166809082</td><td>0.0005587704363279045</td><td>13.737635612487793</td><td>0.000382722559152171</td><td>443.82640315340427</td><td>1.385055062462681</td><td>False</td><td>48.236363303939676</td><td>0.28892974491716233</td><td>15374.632133607884</td><td>7.912502012946044</td><td>False</td><td>11613.0355365069</td><td>4.0936008770630865</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9910785555839539</td><td>94365504-1</td><td>3829.323214163537</td><td>1.0743618513383346</td><td>14.942194938659668</td><td>0.000304616114590317</td><td>False</td><td>3854.4130401728107</td><td>1.1172505294317163</td><td>14.935104370117188</td><td>0.0003147144161630422</td><td>782.7383963765898</td><td>1.1963520254767999</td><td>16.665958404541016</td><td>0.0016594595508649945</td><td>False</td><td>82.56969468256516</td><td>0.360799667760122</td><td>19.107948303222656</td><td>0.004744274076074362</td><td>1062.6742238347033</td><td>2.7257803892765526</td><td>16.333999633789062</td><td>0.00278493482619524</td><td>False</td><td>97.48168661179022</td><td>0.5438717541404113</td><td>18.927692413330078</td><td>0.006057560909539461</td></tr>\n",
       "<tr><td>5</td><td>90862137</td><td>33.58497207774105</td><td>-6.38099720280157</td><td>17.671764373779297</td><td>0.003921873867511749</td><td>20.95743465423584</td><td>0.015037811361253262</td><td>13.867411613464355</td><td>0.0009318587835878134</td><td>13.996355056762695</td><td>0.0005043012788519263</td><td>309.95186258446245</td><td>1.1196017087109982</td><td>False</td><td>15.032324364233158</td><td>0.20820274493919794</td><td>10304.700045068465</td><td>8.84425259759478</td><td>False</td><td>9150.777112962778</td><td>4.2503405342222145</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.99982750415802</td><td>90862137-1</td><td>3302.8744033977246</td><td>0.9278092580440834</td><td>15.10276985168457</td><td>0.0003049937658943236</td><td>False</td><td>3276.2771318392615</td><td>0.9506570119275664</td><td>15.11154842376709</td><td>0.0003150413394905627</td><td>438.84586613347096</td><td>0.8525450606810437</td><td>17.294219970703125</td><td>0.00210925773717463</td><td>False</td><td>44.49646402159843</td><td>0.2929791598520175</td><td>19.779186248779297</td><td>0.00714883953332901</td><td>802.1349445141043</td><td>2.2710789260771076</td><td>16.639381408691406</td><td>0.003074037143960595</td><td>False</td><td>74.85177749263619</td><td>0.613999406160862</td><td>19.214494705200195</td><td>0.008906153030693531</td></tr>\n",
       "<tr><td>6</td><td>90853704</td><td>33.34062307774105</td><td>-6.21536020280157</td><td>17.934600830078125</td><td>0.0031946173403412104</td><td>20.832785606384277</td><td>0.016510996967554092</td><td>14.431429862976074</td><td>0.0008005436393432319</td><td>14.49173641204834</td><td>0.0005902209668420255</td><td>243.30983710470957</td><td>0.7159030170348388</td><td>False</td><td>16.861094305635632</td><td>0.2564098680047346</td><td>6129.54241786146</td><td>4.519482884700024</td><td>False</td><td>5798.363464523469</td><td>3.1520692366475074</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9971857070922852</td><td>90853704-1</td><td>2978.327648322412</td><td>0.7228616746726921</td><td>15.215068817138672</td><td>0.00026351603446528316</td><td>False</td><td>2985.289267917963</td><td>0.8749622085016192</td><td>15.212533950805664</td><td>0.000318219797918573</td><td>2118.055928424517</td><td>0.7275284962366231</td><td>15.585156440734863</td><td>0.0003729382297024131</td><td>False</td><td>1622.4313173443447</td><td>0.7020333685617212</td><td>15.874584197998047</td><td>0.00046980296610854566</td><td>506.0195870584806</td><td>1.15316783304846</td><td>17.13958168029785</td><td>0.0024742837995290756</td><td>False</td><td>64.94582971994396</td><td>0.47367795123294487</td><td>19.368621826171875</td><td>0.00791874248534441</td></tr>\n",
       "<tr><td>7</td><td>130367335</td><td>37.82393607774105</td><td>-3.8429172028015697</td><td>17.62111473083496</td><td>0.005977497436106205</td><td>20.315260887145996</td><td>0.013663405552506447</td><td>14.355469703674316</td><td>0.0015111601678654552</td><td>14.31194019317627</td><td>0.0005972105427645147</td><td>324.75369990075626</td><td>1.7879245437479179</td><td>False</td><td>27.15786625086007</td><td>0.3417671243715156</td><td>6573.733875112411</td><td>9.149519692429063</td><td>False</td><td>6842.643638283953</td><td>3.7638045993631266</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9998703598976135</td><td>130367335-1</td><td>3672.8255858495227</td><td>1.038431302274454</td><td>14.987499237060547</td><td>0.00030697413603775203</td><td>False</td><td>3867.3507205473784</td><td>1.1383626801766957</td><td>14.931466102600098</td><td>0.0003195886965841055</td><td>415.0438898173864</td><td>0.8020865681928796</td><td>17.354764938354492</td><td>0.0020982224959880114</td><td>False</td><td>48.363256211922696</td><td>0.21361746403410067</td><td>19.688711166381836</td><td>0.004795628599822521</td><td>386.3225626243715</td><td>4.057447350642506</td><td>17.43262481689453</td><td>0.011403210461139679</td><td>False</td><td>41.35082916333029</td><td>0.7410769229496164</td><td>19.858789443969727</td><td>0.019458232447504997</td></tr>\n",
       "<tr><td>8</td><td>120096673</td><td>37.33184507774105</td><td>-3.0320412028015697</td><td>17.540542602539062</td><td>0.004114446695894003</td><td>20.225564002990723</td><td>0.014495683833956718</td><td>14.083797454833984</td><td>0.0009892861125990748</td><td>14.102452278137207</td><td>0.00045340158976614475</td><td>349.77032373201064</td><td>1.3254705392471822</td><td>False</td><td>29.496765720726756</td><td>0.39381185608266506</td><td>8442.693401857605</td><td>7.692696714714607</td><td>False</td><td>8298.87243128507</td><td>3.4655949917865243</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9986262321472168</td><td>120096673-1</td><td>2881.646181148783</td><td>0.8035810338157697</td><td>15.250898361206055</td><td>0.00030277034966275096</td><td>False</td><td>2774.9758061884168</td><td>0.8174381533401076</td><td>15.291851997375488</td><td>0.00031983060762286186</td><td>420.9039916762694</td><td>0.7455568259721391</td><td>17.339542388916016</td><td>0.001923189265653491</td><td>False</td><td>48.85425954228409</td><td>0.21187270091918534</td><td>19.677743911743164</td><td>0.0047086551785469055</td><td>533.3758969898595</td><td>2.9087744520328234</td><td>17.082416534423828</td><td>0.005921080708503723</td><td>False</td><td>37.66796319918114</td><td>0.6899334050585643</td><td>19.96006965637207</td><td>0.019886545836925507</td></tr>\n",
       "<tr><td>9</td><td>112065990</td><td>35.57481807774105</td><td>-2.11984720280157</td><td>17.571796417236328</td><td>0.004485646262764931</td><td>19.984566688537598</td><td>0.011681643314659595</td><td>14.52051067352295</td><td>0.001505997497588396</td><td>14.564550399780273</td><td>0.0006505289347842336</td><td>339.84542913272855</td><td>1.4040485823594377</td><td>False</td><td>36.827592125111835</td><td>0.3962351015449104</td><td>5646.713204873612</td><td>7.832414465752702</td><td>False</td><td>5422.253778781171</td><td>3.248793730357447</td><td>False</td><td>-1</td><td>False</td><td>3</td><td>0.9998450875282288</td><td>112065990-1</td><td>3433.7649940728256</td><td>1.029300126677901</td><td>15.06057357788086</td><td>0.00032545861904509366</td><td>False</td><td>3659.802433672252</td><td>1.0830121027857411</td><td>14.991355895996094</td><td>0.00032129205646924675</td><td>287.23012053179787</td><td>0.822244062776437</td><td>17.754425048828125</td><td>0.0031081007327884436</td><td>False</td><td>31.449163643432332</td><td>0.24802661734118936</td><td>20.155977249145508</td><td>0.008562754839658737</td><td>376.99606964266036</td><td>2.7313699291850435</td><td>17.459157943725586</td><td>0.00786625500768423</td><td>False</td><td>38.436213810706946</td><td>0.8547888772648597</td><td>19.938148498535156</td><td>0.024145854637026787</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(\"$('#table140603304368056-289520').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",
       "    $('#table140603304368056-289520').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, 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_xmm-lss.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
}
