{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XMM-LSS master catalogue\n",
    "\n",
    "This notebook presents the merge of the various pristine catalogues to produce the HELP master catalogue on XMM-LSS."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This notebook was run with herschelhelp_internal version: \n",
      "0246c5d (Thu Jan 25 17:01:47 2018 +0000) [with local modifications]\n"
     ]
    }
   ],
   "source": [
    "from herschelhelp_internal import git_version\n",
    "print(\"This notebook was run with herschelhelp_internal version: \\n{}\".format(git_version()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "#%config InlineBackend.figure_format = 'svg'\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rc('figure', figsize=(10, 6))\n",
    "\n",
    "import os\n",
    "import time\n",
    "\n",
    "from astropy import units as u\n",
    "from astropy.coordinates import SkyCoord\n",
    "from astropy.table import Column, Table\n",
    "import numpy as np\n",
    "from pymoc import MOC\n",
    "\n",
    "from herschelhelp_internal.masterlist import merge_catalogues, nb_merge_dist_plot, specz_merge\n",
    "from herschelhelp_internal.utils import coords_to_hpidx, ebv, gen_help_id, inMoc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "TMP_DIR = os.environ.get('TMP_DIR', \"./data_tmp\")\n",
    "OUT_DIR = os.environ.get('OUT_DIR', \"./data\")\n",
    "SUFFIX = os.environ.get('SUFFIX', time.strftime(\"_%Y%m%d\"))\n",
    "\n",
    "try:\n",
    "    os.makedirs(OUT_DIR)\n",
    "except FileExistsError:\n",
    "    pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## I - Reading the prepared pristine catalogues"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#candels = Table.read(\"{}/CANDELS.fits\".format(TMP_DIR))           # 1.1\n",
    "#cfht_wirds = Table.read(\"{}/CFHT-WIRDS.fits\".format(TMP_DIR))     # 1.3\n",
    "#cfhtls_wide = Table.read(\"{}/CFHTLS-WIDE.fits\".format(TMP_DIR))   # 1.4a\n",
    "#cfhtls_deep = Table.read(\"{}/CFHTLS-DEEP.fits\".format(TMP_DIR))   # 1.4b\n",
    "#We no longer use CFHTLenS as it is the same raw data set as CFHTLS-WIDE\n",
    "# cfhtlens = Table.read(\"{}/CFHTLENS.fits\".format(TMP_DIR))         # 1.5\n",
    "#decals = Table.read(\"{}/DECaLS.fits\".format(TMP_DIR))             # 1.6\n",
    "#servs = Table.read(\"{}/SERVS.fits\".format(TMP_DIR))               # 1.8\n",
    "#swire = Table.read(\"{}/SWIRE.fits\".format(TMP_DIR))               # 1.7\n",
    "#hsc_wide = Table.read(\"{}/HSC-WIDE.fits\".format(TMP_DIR))         # 1.9a\n",
    "#hsc_deep = Table.read(\"{}/HSC-DEEP.fits\".format(TMP_DIR))         # 1.9b\n",
    "#hsc_udeep = Table.read(\"{}/HSC-UDEEP.fits\".format(TMP_DIR))       # 1.9c\n",
    "#ps1 = Table.read(\"{}/PS1.fits\".format(TMP_DIR))                   # 1.10\n",
    "#sxds = Table.read(\"{}/SXDS.fits\".format(TMP_DIR))                 # 1.11\n",
    "#sparcs = Table.read(\"{}/SpARCS.fits\".format(TMP_DIR))             # 1.12\n",
    "#dxs = Table.read(\"{}/UKIDSS-DXS.fits\".format(TMP_DIR))            # 1.13\n",
    "#uds = Table.read(\"{}/UKIDSS-UDS.fits\".format(TMP_DIR))            # 1.14\n",
    "#vipers = Table.read(\"{}/VIPERS.fits\".format(TMP_DIR))             # 1.15\n",
    "vhs = Table.read(\"{}/VISTA-VHS.fits\".format(TMP_DIR))             # 1.16\n",
    "video = Table.read(\"{}/VISTA-VIDEO.fits\".format(TMP_DIR))         # 1.17\n",
    "viking = Table.read(\"{}/VISTA-VIKING.fits\".format(TMP_DIR))       # 1.18"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## II - Merging tables\n",
    "\n",
    "We first merge the optical catalogues and then add the infrared ones. We start with PanSTARRS because it coevrs the whole field.\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": [
    "### Start with VHS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue = vhs\n",
    "master_catalogue['vhs_ra'].name = 'ra'\n",
    "master_catalogue['vhs_dec'].name = 'dec'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Add VIDEO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f87ed825240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nb_merge_dist_plot(\n",
    "    SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n",
    "    SkyCoord(video['video_ra'], video['video_dec'])\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Given the graph above, we use 0.8 arc-second radius\n",
    "master_catalogue = merge_catalogues(master_catalogue, video, \"video_ra\", \"video_dec\", radius=0.8*u.arcsec)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Add VIKING"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nb1+jX7/cpj/70fP60a2XzPqVZ4LVSWza06GOgRG987zZ17T+Wv7irav1xJ4OfeZHz+unn3iDastm\nZ99ZMUmOZFagUitPu472aefRPjV3vRKgIqGAltWVaX1Dtc4eqVB9eVT1FTFVlzK6AJjtasui+rvr\n1+pPv/es/u6RHfrCO2f3FQ2C1Uk89FyLymMhXb6SlZmMWDior9xwnq6/4wn94Tef0D99YD1LvwWi\na2BkcmBm5vOu1v5jAlTQTInyiOZUxLRqboXmVEQ1pzymmrII+94BeE3Xrp2nD13WqH/+7T69fkm1\n3nnu7F2QIFi9hqHRcT36whG9fd187nQ4ztnzK/X9/3qhbv2XZ3X97Zv0D+89T29h+m5eGB2f0MHO\n5OQdeHta05/bBtQ5MDJ5XChgSpRFVV8R1aq5mRWo1PgCVqAAnI7PXbtKzx/s1uce2KrVc8u1Ypb+\n0k2weg2/2NGqgZFxXcdlwBM6f0mN/v22y/SRf3lGH/nuM/rElSv0iStXMEA0BzLDM/e2DWhf+4D2\npUcYPN/crc6Bkcm976TUHXiJ8qiWJuK6sDGz/11MVaVhVqAAeCocDOj2m1+vt33tN7r1X57RQ7dd\nprJZuM/m7PsTz9CPnjmo+vKoLlxa63cpeWtuZUw/2HiR/vLHL+irv9ilFw/36n+/51xVltDof6ac\nc+pKjmpf+4Ca2gf0k62H1N4/oo7+YbX3j2hkfGLy2Mzq09yKmM6ZX5kaXZC+A68kwmorgNyZUxHT\n1298vW6+e7M++8BWfePG1826u4AJVifwo6cP6rGdbfqzt6zkssg0YuGgvvzudTp7foX+9j926LIv\n/lI3bFikWy5t1PyqEr/Ly2tj4xM62jesAx1JHegc0P6OpA50pj6a2gfUO/TK5HGTVB2PKFEWUUMi\nrtqyqBJlESXKoqosYfUJQP64eFmt/uwtq/Sln72k1y+u1ocua/S7pJwiWB1n19G+1MaSS2t165uW\n+V1OXphu1tVNFy7WLZc26oKGGv3j43t1z6YmfWtTk962bp7+6xuW6pwFlTmqNH8459Q7OKbDvYM6\n3DOkoz1DOtQzpJauQbV0J9XclXp8fMp1u4BJVaUR1cYjWj2vQomyqGrLIqqNR1UdDysUmN23MAMo\nHLe+aamePdClv/2PFxUJmt5/cYPfJeUMwWqKwZFxffS+Z1UaCeqrN5zHatUpOmdBpb5+4+v02WtW\n6lubmnT/Uwf00HOHtHpehS5srNFFS2u0obFWNfGI36WetsGRcbX3D6tjIHNZLnVprq1vWK19Q2rt\nHVZb/7Bae4ePmTYupVadKkrCk5sGL68rU1VpRDXx1EdlSZh/5wAUBTPT1254nT72/Wf1Vw9t19He\nYX366rNmxWVBgtUUX3h4u3a19uvbt2xQfUXM73IK1sLqUv3V29foE29eoR9uOahfvtSq+7cc0L1P\nNEmSzppTpnULq7S4plSLakq0qLpUi2tKVVcezdl/dEOj4+obGlPf0Kj6hsbUMziq7sFRdSdH1J0c\nTX+MqGNgRF3JEXX0pz4nR8ZP+HqxcEDl0bDKYyFVloS1qLpUFSVhVZaEVRkLqaIkrPIYwQnA7FES\nCerO952vv/zxC/rGr3artW9I//P6tUU/PJhglfbj37foB08f1EevWMZE8VN0skuFpZGQ3r5uvu69\nZYO2NnfryX2d2ry3Q4+/3KbWvuFjjg0GTBWxkMpjYVWUhFQRC6ssGlI4FFAkGFAoYAqHAgoHTE6a\n3D7Fycm51KiB0XGnkfEJjYxNaHR8QoMj4xocHVdyZHzy6/6hsWOav0+kLBpSKGiKR0KKR4OqL4+q\nobZU8WhIZZmPWGjy+2L/iwIATkcoGNDf/+FazamI6au/2KW2vmHdfvPrVRop3vhRvH+yU7C3rV//\n49+26YKGan3qzWwimQ3/+kyzJKm6NKJrz5mna8+Zp9HxCXUlR9Q1MKqu5Ih6B0c1NDauodFUIGrp\nGtTw2ITGJpwmnNP4hEt9ne5Lmrq4ZUoFs1AwoKCZgoHURzgYUCRkioUCqoilAlA0FFQsHFAsnP4c\nCqokElRJOPW5NBJiZQkAPGJm+tRVZ6m+Iqq/+vELuuGuzfqb687RuYuq/C4tK2Z1sHLO6fFd7frC\nw9sVCQX0tRtfpxArDzkTDgZUXx5TfTmXXQGg2N184RLVl8f05//6vK67fZOuXjNHn756pVbOLa5B\nojNKEWZ2jZntNLPdZva5EzxvZva19PNbzez13pfqrWf2d+mGuzbrg/c8pZGxCd1x8/maV8l4AAAA\nsuWqNXP0m8/+gf77VWfpd3s6dM1XH9cn7/+9mtoH/C7NM9OuWJlZUNLtkq6S1Cxpi5k97Jx7ccph\n10pakf64UNI305/zyviE04uHevXVX+zS/91xVImyiL7wjjW68cLFbFsDAEAOlEVD+viVK/T+i5bo\nHx/fq3uf2KeHnj+kNfMqdPHSWl28rFYbGmtUHivMYdMzuRS4QdJu59xeSTKz+yVdJ2lqsLpO0nec\nc07SZjOrMrN5zrnDnlc8QwPDY3r2QJd2HulLfRzt08tH+zQ0OqHyaEifufos3XJpo+KzcNw+AAB+\nq45H9LlrV+lPLm3Q/VsO6ok97frO5v26+7f7FAyYzplfoSW1cc2tjKm+PKq5lTHNqYipLBqa7JEt\nCQcVCwcVDQXyZpTDTFLFAkkHp3zfrFevRp3omAWSfAtWe9sG9P5/fkqSlCiLauXcMt20YYlWzi3T\n1WvmqrqAZykBAFAs6iti+viVK/TxK1doaHRczx7o0uY9HdrS1KXnm7v16PYhDY+d/E7uGzcs1t//\n4docVXxyOV2uMbONkjamv+03s525OO9+Sc/k4kQzk5DU7ncRRYr3Nnt4b7OH9zY7eF+z5Ga/CziB\nL6Y/smzJTA6aSbBqkbRoyvcL04+d6jFyzt0l6a6ZFFaszOxp59x6v+soRry32cN7mz28t9nB+wq/\nzOSuwC2SVphZo5lFJN0g6eHjjnlY0gfSdwdeJKnHz/4qAAAAP0y7YuWcGzOz2yQ9Kiko6R7n3HYz\nuzX9/J2SHpH0Vkm7JSUl3ZK9kgEAAPLTjHqsnHOPKBWepj5255SvnaSPelta0ZrVl0KzjPc2e3hv\ns4f3Njt4X+ELc5kN1wAAAHBG2L8FAADAIwSrHJpuayCcHjO7x8xazewFv2spJma2yMx+ZWYvmtl2\nM/uE3zUVCzOLmdlTZvZ8+r39f/2uqdiYWdDMfm9mP/G7FswuBKscmbI10LWS1ki60czW+FtV0bhX\n0jV+F1GExiR92jm3RtJFkj7Kv7OeGZb0B865cyWdJ+ma9B3V8M4nJO3wuwjMPgSr3JncGsg5NyIp\nszUQzpBz7nFJnX7XUWycc4edc8+mv+5T6n9SC/ytqji4lP70t+H0Bw2vHjGzhZLeJuluv2vB7EOw\nyp3X2vYHyHtm1iDpdZKe9LeS4pG+VPWcpFZJ/+mc4731zlck/bmkk++DAmQBwQrASZlZmaQHJH3S\nOdfrdz3Fwjk37pw7T6mdKjaY2Tl+11QMzOztklqdc3m0kxlmE4JV7sxo2x8gn5hZWKlQ9T3n3IN+\n11OMnHPdkn4l+gS9cqmkd5pZk1ItF39gZv/ib0mYTQhWuTOTrYGAvGFmJumfJe1wzv2D3/UUEzOr\nM7Oq9Nclkq6S9JK/VRUH59xfOOcWOucalPp79pfOuff5XBZmEYJVjjjnxiRltgbaIemHzrnt/lZV\nHMzs+5J+J2mlmTWb2Yf8rqlIXCrp/Ur9xv9c+uOtfhdVJOZJ+pWZbVXql67/dM4xFgAoAkxeBwAA\n8AgrVgAAAB4hWAEAAHiEYAUAAOARghUAAIBHCFYAAAAeIVgBAAB4hGAFYFpmNp6eY7XdzJ43s0+b\nWSD93Hoz+9pJfrbBzG7KXbWvOvdgek++vGBm7zWz3WbG3CqgCBGsAMzEoHPuPOfc2UpNCb9W0ucl\nyTn3tHPu4yf52QZJvgSrtD3pPflmzMyC2SrGOfcDSR/O1usD8BfBCsApcc61Stoo6TZLuTyz+mJm\nb5oypf33ZlYu6YuS3pB+7FPpVaTfmNmz6Y9L0j97uZk9Zmb/amYvmdn30tvqyMwuMLMn0qtlT5lZ\nuZkFzezLZrbFzLaa2UdmUr+Z/djMnkmvvm2c8ni/mf0fM3te0sWvcc6z018/lz7nivTPvm/K4/+Y\nCWZmdk36z/i8mf3Cw38MAPJUyO8CABQe59zedHioP+6pz0j6qHNuk5mVSRqS9DlJn3HOvV2SzKxU\n0lXOuaF0MPm+pPXpn3+dpLMlHZK0SdKlZvaUpB9Ieq9zbouZVUgalPQhST3OuQvMLCppk5n93Dm3\nb5ry/8Q515neo2+LmT3gnOuQFJf0pHPu0+n9PF86wTlvlfRV59z30scEzWy1pPdKutQ5N2pmd0i6\n2cx+KumfJL3RObfPzGpO+Y0GUHAIVgC8tEnSP5jZ9yQ96JxrTi86TRWW9A0zO0/SuKSzpjz3lHOu\nWZLSfVENknokHXbObZEk51xv+vmrJa0zs3enf7ZS0gpJ0wWrj5vZ9emvF6V/piNdywPpx1e+xjl/\nJ+l/mNnC9J9vl5ldKel8pUKaJJVIapV0kaTHM0HPOdc5TV0AigDBCsApM7OlSgWRVkmrM487575o\nZv8h6a1KrSC95QQ//ilJRyWdq1Q7wtCU54anfD2uk/8dZZI+5px79BTqvlzSmyVd7JxLmtljkmLp\np4ecc+Mn+3nn3H1m9qSkt0l6JH350SR92zn3F8ed6x0zrQtA8aDHCsApMbM6SXdK+oY7bhd3M1vm\nnNvmnPuSpC2SVknqk1Q+5bBKpVaDJiS9X9J0jeI7Jc0zswvS5yg3s5CkRyX9qZmF04+fZWbxaV6r\nUlJXOlStUmpVacbnTAfKvc65r0l6SNI6Sb+Q9G4zq08fW2NmSyRtlvRGM2vMPD5NbQCKACtWAGai\nJH1pLixpTNJ3Jf3DCY77pJldIWlC0nZJP01/PZ5uCr9X0h2SHjCzD0j6maSBk53YOTdiZu+V9PV0\nX9SgUqtOdyt1qfDZdJN7m6R3TfPn+JmkW81sh1LhafMpnvOPJL3fzEYlHZH0d+l+rb+U9HNLjaAY\nVarPbHO6Of7B9OOtSt1RCaCI2XG/cAJA0TCzBkk/cc6d43Mpx0hfkpxs6AdQPLgUCKCYjUuqtDwb\nEKrUql2X37UA8B4rVgAAAB5hxQoAAMAjBCsAAACPEKwAAAA8QrACAADwCMEKAADAI/8/uYgyhU/3\nrHsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f87dd306978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nb_merge_dist_plot(\n",
    "    SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n",
    "    SkyCoord(viking['viking_ra'], viking['viking_dec'])\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Given the graph above, we use 0.8 arc-second radius\n",
    "master_catalogue = merge_catalogues(master_catalogue, viking, \"viking_ra\", \"viking_dec\", radius=0.8*u.arcsec)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Cleaning\n",
    "\n",
    "When we merge the catalogues, astropy masks the non-existent values (e.g. when a row comes only from a catalogue and has no counterparts in the other, the columns from the latest are masked for that row). We indicate to use NaN for masked values for floats columns, False for flag columns and -1 for ID columns."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for col in master_catalogue.colnames:\n",
    "    if \"m_\" in col or \"merr_\" in col or \"f_\" in col or \"ferr_\" in col or \"stellarity\" in col:\n",
    "        master_catalogue[col] = master_catalogue[col].astype(float)\n",
    "        master_catalogue[col].fill_value = np.nan\n",
    "    elif \"flag\" in col:\n",
    "        master_catalogue[col].fill_value = 0\n",
    "    elif \"id\" in col:\n",
    "        master_catalogue[col].fill_value = -1\n",
    "        \n",
    "master_catalogue = master_catalogue.filled()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Since this is not the final merged catalogue. We rename column names to make them unique\n",
    "master_catalogue['ra'].name = 'vircam_ra'\n",
    "master_catalogue['dec'].name = 'vircam_dec'\n",
    "master_catalogue['flag_merged'].name = 'vircam_flag_merged'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=10</i>\n",
       "<table id=\"table140221508148808-253464\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>idx</th><th>vhs_id</th><th>vircam_ra</th><th>vircam_dec</th><th>vhs_stellarity</th><th>m_vhs_y</th><th>merr_vhs_y</th><th>m_ap_vhs_y</th><th>merr_ap_vhs_y</th><th>m_vhs_j</th><th>merr_vhs_j</th><th>m_ap_vhs_j</th><th>merr_ap_vhs_j</th><th>m_vhs_h</th><th>merr_vhs_h</th><th>m_ap_vhs_h</th><th>merr_ap_vhs_h</th><th>m_vhs_k</th><th>merr_vhs_k</th><th>m_ap_vhs_k</th><th>merr_ap_vhs_k</th><th>f_vhs_y</th><th>ferr_vhs_y</th><th>flag_vhs_y</th><th>f_ap_vhs_y</th><th>ferr_ap_vhs_y</th><th>f_vhs_j</th><th>ferr_vhs_j</th><th>flag_vhs_j</th><th>f_ap_vhs_j</th><th>ferr_ap_vhs_j</th><th>f_vhs_h</th><th>ferr_vhs_h</th><th>flag_vhs_h</th><th>f_ap_vhs_h</th><th>ferr_ap_vhs_h</th><th>f_vhs_k</th><th>ferr_vhs_k</th><th>flag_vhs_k</th><th>f_ap_vhs_k</th><th>ferr_ap_vhs_k</th><th>vhs_flag_cleaned</th><th>vhs_flag_gaia</th><th>vircam_flag_merged</th><th>video_id</th><th>video_stellarity</th><th>m_ap_video_z</th><th>merr_ap_video_z</th><th>m_video_z</th><th>merr_video_z</th><th>f_ap_video_z</th><th>ferr_ap_video_z</th><th>f_video_z</th><th>ferr_video_z</th><th>m_ap_video_y</th><th>merr_ap_video_y</th><th>m_video_y</th><th>merr_video_y</th><th>f_ap_video_y</th><th>ferr_ap_video_y</th><th>f_video_y</th><th>ferr_video_y</th><th>m_ap_video_j</th><th>merr_ap_video_j</th><th>m_video_j</th><th>merr_video_j</th><th>f_ap_video_j</th><th>ferr_ap_video_j</th><th>f_video_j</th><th>ferr_video_j</th><th>m_ap_video_h</th><th>merr_ap_video_h</th><th>m_video_h</th><th>merr_video_h</th><th>f_ap_video_h</th><th>ferr_ap_video_h</th><th>f_video_h</th><th>ferr_video_h</th><th>m_ap_video_k</th><th>merr_ap_video_k</th><th>m_video_k</th><th>merr_video_k</th><th>f_ap_video_k</th><th>ferr_ap_video_k</th><th>f_video_k</th><th>ferr_video_k</th><th>flag_video_z</th><th>flag_video_y</th><th>flag_video_j</th><th>flag_video_h</th><th>flag_video_k</th><th>video_flag_cleaned</th><th>video_flag_gaia</th><th>viking_id</th><th>viking_stellarity</th><th>m_viking_z</th><th>merr_viking_z</th><th>m_ap_viking_z</th><th>merr_ap_viking_z</th><th>m_viking_y</th><th>merr_viking_y</th><th>m_ap_viking_y</th><th>merr_ap_viking_y</th><th>m_viking_j</th><th>merr_viking_j</th><th>m_ap_viking_j</th><th>merr_ap_viking_j</th><th>m_viking_h</th><th>merr_viking_h</th><th>m_ap_viking_h</th><th>merr_ap_viking_h</th><th>m_viking_k</th><th>merr_viking_k</th><th>m_ap_viking_k</th><th>merr_ap_viking_k</th><th>f_viking_z</th><th>ferr_viking_z</th><th>flag_viking_z</th><th>f_ap_viking_z</th><th>ferr_ap_viking_z</th><th>f_viking_y</th><th>ferr_viking_y</th><th>flag_viking_y</th><th>f_ap_viking_y</th><th>ferr_ap_viking_y</th><th>f_viking_j</th><th>ferr_viking_j</th><th>flag_viking_j</th><th>f_ap_viking_j</th><th>ferr_ap_viking_j</th><th>f_viking_h</th><th>ferr_viking_h</th><th>flag_viking_h</th><th>f_ap_viking_h</th><th>ferr_ap_viking_h</th><th>f_viking_k</th><th>ferr_viking_k</th><th>flag_viking_k</th><th>f_ap_viking_k</th><th>ferr_ap_viking_k</th><th>viking_flag_cleaned</th><th>viking_flag_gaia</th></tr></thead>\n",
       "<thead><tr><th></th><th></th><th>deg</th><th>deg</th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><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>472534952089</td><td>36.7715587778</td><td>-6.09844560561</td><td>0.899999976158</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>13.055316925</td><td>0.00067535036942</td><td>12.1337308884</td><td>0.000497119268402</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>21770.734375</td><td>13.541847229</td><td>False</td><td>50875.3554688</td><td>23.2939815521</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>1</td><td>472534952088</td><td>36.770223846</td><td>-6.09784561264</td><td>0.899999976158</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>12.3353052139</td><td>0.000660851481371</td><td>12.1640882492</td><td>0.000499423593283</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>42254.9648438</td><td>25.7191886902</td><td>False</td><td>49472.578125</td><td>22.7567005157</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>2</td><td>472534952082</td><td>36.7711863016</td><td>-6.09747604052</td><td>0.899999976158</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.4644241333</td><td>0.000360919017112</td><td>12.2452793121</td><td>0.000518270011526</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>94238.890625</td><td>31.3267707825</td><td>False</td><td>45907.9726562</td><td>21.9139118195</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>3</td><td>472489515548</td><td>33.8144008647</td><td>-2.69451524786</td><td>0.999657213688</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.5179491043</td><td>0.000414600566728</td><td>11.5571727753</td><td>0.000424904661486</td><td>11.2393751144</td><td>0.000410621665651</td><td>11.902050972</td><td>0.00052699574735</td><td>11.2294778824</td><td>0.000451025465736</td><td>11.5723018646</td><td>0.000520516885445</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>89705.734375</td><td>34.2551422119</td><td>False</td><td>86522.828125</td><td>33.8608474731</td><td>115944.40625</td><td>43.849773407</td><td>False</td><td>62976.6367188</td><td>30.5676651001</td><td>117006.15625</td><td>48.6055030823</td><td>False</td><td>85325.5625</td><td>40.90625</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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>4</td><td>472510756249</td><td>37.745157523</td><td>-4.06548350048</td><td>0.999657213688</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.8806610107</td><td>0.00049145630328</td><td>12.0661182404</td><td>0.000490536971483</td><td>11.980304718</td><td>0.000615808472503</td><td>12.1526088715</td><td>0.000555077800527</td><td>12.1837444305</td><td>0.000820066314191</td><td>12.2506752014</td><td>0.000673640635796</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>64229.6289062</td><td>29.0734138489</td><td>False</td><td>54144.2773438</td><td>24.4624519348</td><td>58597.34375</td><td>33.2352752686</td><td>False</td><td>49998.4179688</td><td>25.561466217</td><td>48584.9882812</td><td>36.6966781616</td><td>False</td><td>45680.3828125</td><td>28.3422088623</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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>5</td><td>472511787941</td><td>35.3642536142</td><td>-3.19082744954</td><td>0.999657213688</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.192158699</td><td>0.00030665108352</td><td>12.00182724</td><td>0.000477591383969</td><td>11.6322393417</td><td>0.000461325282231</td><td>12.2430038452</td><td>0.000567137671169</td><td>11.9852762222</td><td>0.000672731723171</td><td>12.2588291168</td><td>0.00063463090919</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>121097.835938</td><td>34.2024002075</td><td>False</td><td>57447.21875</td><td>25.2697620392</td><td>80742.859375</td><td>34.3073425293</td><td>False</td><td>46004.2851562</td><td>24.0304794312</td><td>58329.65625</td><td>36.1415710449</td><td>False</td><td>45338.6054688</td><td>26.5011711121</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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>6</td><td>472511816927</td><td>34.9198005174</td><td>-4.34503351374</td><td>0.899999976158</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.1817598343</td><td>0.000340650090948</td><td>12.2731513977</td><td>0.000578326231334</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>122263.234375</td><td>38.3601341248</td><td>False</td><td>44744.4609375</td><td>23.8335018158</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td><td>False</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>7</td><td>472511786447</td><td>35.3832229428</td><td>-3.13079985082</td><td>0.999657213688</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.7615938187</td><td>0.000436026952229</td><td>12.0550832748</td><td>0.000489581027068</td><td>11.9422092438</td><td>0.000568056246266</td><td>12.288359642</td><td>0.000579610525165</td><td>12.2397670746</td><td>0.000782796705607</td><td>12.3990726471</td><td>0.000678762036841</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>71674.109375</td><td>28.7840118408</td><td>False</td><td>54697.3828125</td><td>24.6641864777</td><td>60689.8554688</td><td>31.7528800964</td><td>False</td><td>44122.078125</td><td>23.5541763306</td><td>46141.640625</td><td>33.2673072815</td><td>False</td><td>39844.71875</td><td>24.9094409943</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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>8</td><td>472513893263</td><td>34.1855764044</td><td>-5.67467803444</td><td>0.999657213688</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>11.0225439072</td><td>0.000247313611908</td><td>12.2734136581</td><td>0.000485819065943</td><td>11.512345314</td><td>0.00038002175279</td><td>12.7724905014</td><td>0.000582790817134</td><td>12.1992988586</td><td>0.000821049674414</td><td>12.8085184097</td><td>0.000705696584191</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>141573.59375</td><td>32.2482376099</td><td>False</td><td>44733.6601562</td><td>20.0163402557</td><td>90169.921875</td><td>31.5606403351</td><td>False</td><td>28249.0390625</td><td>15.1632413864</td><td>47893.9101562</td><td>36.2180786133</td><td>False</td><td>27327.03125</td><td>17.7617664337</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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "<tr><td>9</td><td>472513518037</td><td>37.0872165057</td><td>-5.57058988956</td><td>0.999657213688</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>12.1582593918</td><td>0.000476740358863</td><td>12.2961416245</td><td>0.000515730294865</td><td>12.5444726944</td><td>0.000634934171103</td><td>12.7842035294</td><td>0.000586045964155</td><td>12.6956949234</td><td>0.000948768632952</td><td>12.7851295471</td><td>0.000702392018866</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>49738.8828125</td><td>21.840051651</td><td>False</td><td>43806.9609375</td><td>20.8085327148</td><td>34850.6445312</td><td>20.3805198669</td><td>False</td><td>27945.9199219</td><td>15.084321022</td><td>30319.4902344</td><td>26.4946327209</td><td>False</td><td>27922.0957031</td><td>18.0635566711</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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>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>False</td><td>False</td><td>False</td><td>False</td><td>False</td><td>0</td><td>-1</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>False</td><td>nan</td><td>nan</td><td>False</td><td>0</td></tr>\n",
       "</table><style>table.dataTable {clear: both; width: auto !important; margin: 0 !important;}\n",
       ".dataTables_info, .dataTables_length, .dataTables_filter, .dataTables_paginate{\n",
       "display: inline-block; margin-right: 1em; }\n",
       ".paginate_button { margin-right: 5px; }\n",
       "</style>\n",
       "<script>\n",
       "\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(\"$('#table140221508148808-253464').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",
       "    $('#table140221508148808-253464').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, 24, 25, 26, 27, 29, 30, 31, 32, 34, 35, 36, 37, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 123, 124, 125, 126, 128, 129, 130, 131, 133, 134, 135, 136, 138, 139, 141], type: \"optionalnum\"}]\n",
       "    });\n",
       "});\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "master_catalogue[:10].show_in_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n",
    "master_catalogue.add_column(Column(data=(np.char.array(master_catalogue['vhs_id'].astype(str)) \n",
    "                                    +  np.char.array(master_catalogue['video_id'].astype(str) )\n",
    "                                    +  np.char.array(master_catalogue['viking_id'].astype(str))), \n",
    "                              name=\"vircam_intid\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['vhs_id', 'video_id', 'viking_id', 'vircam_intid']\n"
     ]
    }
   ],
   "source": [
    "id_names = []\n",
    "for col in master_catalogue.colnames:\n",
    "    if '_id' in col:\n",
    "        id_names += [col]\n",
    "    if '_intid' in col:\n",
    "        id_names += [col]\n",
    "        \n",
    "print(id_names)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## VII - Choosing between multiple values for the same filter\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### VII.c VISTA VIDEO, VHS, and VIKING: VISTA fluxes\n",
    "\n",
    "According to Mattia Vacari VIDEO is deeper than VIKING which is deeper than VHS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "vista_origin = Table()\n",
    "vista_origin.add_column(master_catalogue['vircam_intid'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/anaconda3/envs/herschelhelp_internal/lib/python3.6/site-packages/numpy/core/numeric.py:301: FutureWarning: in the future, full(5, 0) will return an array of dtype('int64')\n",
      "  format(shape, fill_value, array(fill_value).dtype), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "vista_stats = Table()\n",
    "vista_stats.add_column(Column(data=['y','j','h','k','z'], name=\"Band\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"VIDEO\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"VIKING\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"VHS\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"use VIDEO\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"use VIKING\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"use VHS\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"VIDEO ap\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"VIKING ap\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"VHS ap\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"use VIDEO ap\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"use VIKING ap\"))\n",
    "vista_stats.add_column(Column(data=np.full(5, 0), name=\"use VHS ap\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n",
    "vista_bands = ['y','j','h','k','z'] # Lowercase naming convention (k is Ks)\n",
    "for band in vista_bands:\n",
    "    #print('For VISTA band ' + band + ':')\n",
    "    # VISTA total flux \n",
    "    has_video = ~np.isnan(master_catalogue['f_video_' + band])\n",
    "    has_viking = ~np.isnan(master_catalogue['f_viking_' + band])\n",
    "    if band == 'z':\n",
    "        has_vhs = np.full(len(master_catalogue), False, dtype=bool)\n",
    "    else:\n",
    "        has_vhs = ~np.isnan(master_catalogue['f_vhs_' + band])\n",
    "    \n",
    "\n",
    "    #print(\"{} sources with VIDEO flux\".format(np.sum(has_video)))\n",
    "    #print(\"{} sources with VIKING flux\".format(np.sum(has_viking)))\n",
    "    #print(\"{} sources with VHS flux\".format(np.sum(has_vhs)))\n",
    "    #print(\"{} sources with VIDEO, VIKING, and VHS flux\".format(np.sum(has_video & has_viking & has_vhs)))\n",
    "\n",
    "\n",
    "    use_video = has_video \n",
    "    use_viking = has_viking & ~has_video\n",
    "    use_vhs = has_vhs & ~has_video & ~has_viking\n",
    "\n",
    "    #print(\"{} sources for which we use VIDEO\".format(np.sum(use_video)))\n",
    "    #print(\"{} sources for which we use VIKING\".format(np.sum(use_viking)))\n",
    "    #print(\"{} sources for which we use VHS\".format(np.sum(use_vhs)))\n",
    "\n",
    "    f_vista = np.full(len(master_catalogue), np.nan)\n",
    "    f_vista[use_video] = master_catalogue['f_video_' + band][use_video]\n",
    "    f_vista[use_viking] = master_catalogue['f_viking_' + band][use_viking]\n",
    "    if not (band == 'z'):\n",
    "        f_vista[use_vhs] = master_catalogue['f_vhs_' + band][use_vhs]\n",
    "\n",
    "    ferr_vista = np.full(len(master_catalogue), np.nan)\n",
    "    ferr_vista[use_video] = master_catalogue['ferr_video_' + band][use_video]\n",
    "    ferr_vista[use_viking] = master_catalogue['ferr_viking_' + band][use_viking]\n",
    "    if not (band == 'z'):\n",
    "        ferr_vista[use_vhs] = master_catalogue['ferr_vhs_' + band][use_vhs]\n",
    "    \n",
    "    m_vista = np.full(len(master_catalogue), np.nan)\n",
    "    m_vista[use_video] = master_catalogue['m_video_' + band][use_video]\n",
    "    m_vista[use_viking] = master_catalogue['m_viking_' + band][use_viking]\n",
    "    if not (band == 'z'):\n",
    "        m_vista[use_vhs] = master_catalogue['m_vhs_' + band][use_vhs]\n",
    "\n",
    "    merr_vista = np.full(len(master_catalogue), np.nan)\n",
    "    merr_vista[use_video] = master_catalogue['merr_video_' + band][use_video]\n",
    "    merr_vista[use_viking] = master_catalogue['merr_viking_' + band][use_viking]\n",
    "    if not (band == 'z'):\n",
    "        merr_vista[use_vhs] = master_catalogue['merr_vhs_' + band][use_vhs]\n",
    "\n",
    "    flag_vista = np.full(len(master_catalogue), False, dtype=bool)\n",
    "    flag_vista[use_video] = master_catalogue['flag_video_' + band][use_video]\n",
    "    flag_vista[use_viking] = master_catalogue['flag_viking_' + band][use_viking]\n",
    "    if not (band == 'z'):\n",
    "        flag_vista[use_vhs] = master_catalogue['flag_vhs_' + band][use_vhs]\n",
    "\n",
    "    master_catalogue.add_column(Column(data=f_vista, name=\"f_vista_\" + band))\n",
    "    master_catalogue.add_column(Column(data=ferr_vista, name=\"ferr_vista_\" + band))\n",
    "    master_catalogue.add_column(Column(data=m_vista, name=\"m_vista_\" + band))\n",
    "    master_catalogue.add_column(Column(data=merr_vista, name=\"merr_vista_\" + band))\n",
    "    master_catalogue.add_column(Column(data=flag_vista, name=\"flag_vista_\" + band))\n",
    "\n",
    "    old_video_and_viking_columns = ['f_video_' + band, \n",
    "                                     'f_viking_' + band, \n",
    "                                     'ferr_video_' + band,\n",
    "                                     'ferr_viking_' + band, \n",
    "                                     'm_video_' + band, \n",
    "                                     'm_viking_' + band, \n",
    "                                     'merr_video_' + band,\n",
    "                                     'merr_viking_' + band,\n",
    "                                     'flag_video_' + band, \n",
    "                                     'flag_viking_' + band]\n",
    "    old_vhs_columns = ['f_vhs_' + band, \n",
    "                       'ferr_vhs_' + band, \n",
    "                       'm_vhs_' + band, \n",
    "                       'merr_vhs_' + band,\n",
    "                       'flag_vhs_' + band]\n",
    "    \n",
    "    if not (band == 'z'):\n",
    "        old_columns = old_video_and_viking_columns + old_vhs_columns\n",
    "    else:\n",
    "        old_columns = old_video_and_viking_columns\n",
    "    master_catalogue.remove_columns(old_columns)\n",
    "\n",
    "    origin = np.full(len(master_catalogue), '     ', dtype='<U5')\n",
    "    origin[use_video] = \"VIDEO\"\n",
    "    origin[use_viking] = \"VIKING\"\n",
    "    origin[use_vhs] = \"VHS\"\n",
    "    \n",
    "    vista_origin.add_column(Column(data=origin, name= 'f_vista_' + band ))\n",
    "    \n",
    "    \n",
    "    \n",
    "    # VISTA Aperture flux\n",
    "    has_ap_video = ~np.isnan(master_catalogue['f_ap_video_' + band])\n",
    "    has_ap_viking = ~np.isnan(master_catalogue['f_ap_viking_' + band])\n",
    "    if (band == 'z'):\n",
    "        has_ap_vhs = np.full(len(master_catalogue), False, dtype=bool)\n",
    "    else:\n",
    "        has_ap_vhs = ~np.isnan(master_catalogue['f_ap_vhs_' + band])\n",
    "\n",
    "    #print(\"{} sources with VIDEO aperture flux\".format(np.sum(has_ap_video)))\n",
    "    #print(\"{} sources with VIKING aperture flux\".format(np.sum(has_ap_viking)))\n",
    "    #print(\"{} sources with VHS aperture flux\".format(np.sum(has_ap_vhs)))\n",
    "    #print(\"{} sources with VIDEO, VIKING and VHS aperture flux\".format(np.sum(has_ap_video & has_ap_viking & has_ap_vhs)))\n",
    "\n",
    "    use_ap_video = has_ap_video \n",
    "    use_ap_viking = has_ap_viking & ~has_ap_video\n",
    "    use_ap_vhs = has_ap_vhs & ~has_ap_video & ~has_ap_viking\n",
    "\n",
    "    #print(\"{} sources for which we use VIDEO aperture fluxes\".format(np.sum(use_ap_video)))\n",
    "    #print(\"{} sources for which we use VIKING aperture fluxes\".format(np.sum(use_ap_viking)))\n",
    "    #print(\"{} sources for which we use VHS aperture fluxes\".format(np.sum(use_ap_vhs)))\n",
    "\n",
    "    f_ap_vista = np.full(len(master_catalogue), np.nan)\n",
    "    f_ap_vista[use_ap_video] = master_catalogue['f_ap_video_' + band][use_ap_video]\n",
    "    f_ap_vista[use_ap_viking] = master_catalogue['f_ap_viking_' + band][use_ap_viking]\n",
    "    if not (band == 'z'):\n",
    "        f_ap_vista[use_ap_vhs] = master_catalogue['f_ap_vhs_' + band][use_ap_vhs]\n",
    "\n",
    "    ferr_ap_vista = np.full(len(master_catalogue), np.nan)\n",
    "    ferr_ap_vista[use_ap_video] = master_catalogue['ferr_ap_video_' + band][use_ap_video]\n",
    "    ferr_ap_vista[use_ap_viking] = master_catalogue['ferr_ap_viking_' + band][use_ap_viking]\n",
    "    if not (band == 'z'):\n",
    "        ferr_ap_vista[use_ap_vhs] = master_catalogue['ferr_ap_vhs_' + band][use_ap_vhs]\n",
    "    \n",
    "    m_ap_vista = np.full(len(master_catalogue), np.nan)\n",
    "    m_ap_vista[use_ap_video] = master_catalogue['m_ap_video_' + band][use_ap_video]\n",
    "    m_ap_vista[use_ap_viking] = master_catalogue['m_ap_viking_' + band][use_ap_viking]\n",
    "    if not (band == 'z'):\n",
    "        m_ap_vista[use_ap_vhs] = master_catalogue['m_ap_vhs_' + band][use_ap_vhs]\n",
    "\n",
    "    merr_ap_vista = np.full(len(master_catalogue), np.nan)\n",
    "    merr_ap_vista[use_ap_video] = master_catalogue['merr_ap_video_' + band][use_ap_video]\n",
    "    merr_ap_vista[use_ap_viking] = master_catalogue['merr_ap_viking_' + band][use_ap_viking]\n",
    "    if not (band == 'z'):\n",
    "        merr_ap_vista[use_ap_vhs] = master_catalogue['merr_ap_vhs_' + band][use_ap_vhs]\n",
    "\n",
    "\n",
    "    master_catalogue.add_column(Column(data=f_ap_vista, name=\"f_ap_vista_\" + band))\n",
    "    master_catalogue.add_column(Column(data=ferr_ap_vista, name=\"ferr_ap_vista_\" + band))\n",
    "    master_catalogue.add_column(Column(data=m_ap_vista, name=\"m_ap_vista_\" + band))\n",
    "    master_catalogue.add_column(Column(data=merr_vista, name=\"merr_ap_vista_\" + band))\n",
    "\n",
    "\n",
    "    ap_old_video_and_viking_columns = ['f_ap_video_' + band, \n",
    "                                     'f_ap_viking_' + band, \n",
    "                                     'ferr_ap_video_' + band,\n",
    "                                     'ferr_ap_viking_' + band, \n",
    "                                     'm_ap_video_' + band, \n",
    "                                     'm_ap_viking_' + band, \n",
    "                                     'merr_ap_video_' + band,\n",
    "                                     'merr_ap_viking_' + band]\n",
    "    ap_old_vhs_columns = ['f_ap_vhs_' + band, \n",
    "                       'ferr_ap_vhs_' + band, \n",
    "                       'm_ap_vhs_' + band, \n",
    "                       'merr_ap_vhs_' + band]\n",
    "    \n",
    "    if not (band == 'z'):\n",
    "        ap_old_columns = ap_old_video_and_viking_columns + ap_old_vhs_columns\n",
    "    else:\n",
    "        ap_old_columns = ap_old_video_and_viking_columns\n",
    "    master_catalogue.remove_columns(ap_old_columns)\n",
    "\n",
    "    origin_ap = np.full(len(master_catalogue), '     ', dtype='<U5')\n",
    "    origin_ap[use_ap_video] = \"VIDEO\"\n",
    "    origin_ap[use_ap_viking] = \"VIKING\"\n",
    "    origin_ap[use_ap_vhs] = \"VHS\"\n",
    "    \n",
    "    vista_origin.add_column(Column(data=origin_ap, name= 'f_ap_vista_' + band ))\n",
    "    \n",
    "    vista_stats['VIDEO'][vista_stats['Band'] == band] = np.sum(has_video)\n",
    "    vista_stats['VIKING'][vista_stats['Band'] == band] = np.sum(has_viking)\n",
    "    vista_stats['VHS'][vista_stats['Band'] == band] = np.sum(has_vhs)\n",
    "    vista_stats['use VIDEO'][vista_stats['Band'] == band] = np.sum(use_video)\n",
    "    vista_stats['use VIKING'][vista_stats['Band'] == band] = np.sum(use_viking)\n",
    "    vista_stats['use VHS'][vista_stats['Band'] == band] = np.sum(use_vhs)\n",
    "    vista_stats['VIDEO ap'][vista_stats['Band'] == band] = np.sum(has_ap_video)\n",
    "    vista_stats['VIKING ap'][vista_stats['Band'] == band] = np.sum(has_ap_viking)\n",
    "    vista_stats['VHS ap'][vista_stats['Band'] == band] = np.sum(has_ap_vhs)\n",
    "    vista_stats['use VIDEO ap'][vista_stats['Band'] == band] = np.sum(use_ap_video)\n",
    "    vista_stats['use VIKING ap'][vista_stats['Band'] == band] = np.sum(use_ap_viking)\n",
    "    vista_stats['use VHS ap'][vista_stats['Band'] == band] = np.sum(use_ap_vhs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "for col in master_catalogue.colnames:\n",
    "    if '_vista_k' in col:\n",
    "        master_catalogue.rename_column(col, col.replace('_vista_k', '_vista_ks'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Vista origin overview\n",
    "For each band show how many objects have fluxes from each survey for both total and aperture photometries."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=5</i>\n",
       "<table id=\"table140221067868816-808263\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>idx</th><th>Band</th><th>VIDEO</th><th>VIKING</th><th>VHS</th><th>use VIDEO</th><th>use VIKING</th><th>use VHS</th><th>VIDEO ap</th><th>VIKING ap</th><th>VHS ap</th><th>use VIDEO ap</th><th>use VIKING ap</th><th>use VHS ap</th></tr></thead>\n",
       "<tr><td>0</td><td>y</td><td>1234544.0</td><td>77022.0</td><td>0.0</td><td>1234544.0</td><td>48468.0</td><td>0.0</td><td>1230237.0</td><td>77019.0</td><td>0.0</td><td>1230237.0</td><td>48463.0</td><td>0.0</td></tr>\n",
       "<tr><td>1</td><td>j</td><td>1219903.0</td><td>153769.0</td><td>337073.0</td><td>1219903.0</td><td>100902.0</td><td>252234.0</td><td>1212213.0</td><td>153757.0</td><td>334311.0</td><td>1212213.0</td><td>100893.0</td><td>249478.0</td></tr>\n",
       "<tr><td>2</td><td>h</td><td>1205566.0</td><td>169428.0</td><td>223512.0</td><td>1205566.0</td><td>105720.0</td><td>141189.0</td><td>1190468.0</td><td>169398.0</td><td>223305.0</td><td>1190468.0</td><td>105709.0</td><td>141006.0</td></tr>\n",
       "<tr><td>3</td><td>k</td><td>1184328.0</td><td>199414.0</td><td>208775.0</td><td>1184328.0</td><td>115481.0</td><td>126276.0</td><td>1164308.0</td><td>199397.0</td><td>208683.0</td><td>1164308.0</td><td>115472.0</td><td>126199.0</td></tr>\n",
       "<tr><td>4</td><td>z</td><td>986489.0</td><td>163505.0</td><td>0.0</td><td>986489.0</td><td>122842.0</td><td>0.0</td><td>986692.0</td><td>163501.0</td><td>0.0</td><td>986692.0</td><td>122819.0</td><td>0.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(\"$('#table140221067868816-808263').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",
       "    $('#table140221067868816-808263').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, 10, 11, 12, 13], type: \"optionalnum\"}]\n",
       "    });\n",
       "});\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vista_stats.show_in_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "vista_origin.write(\"{}/xmm-lss_vista_fluxes_origins{}.fits\".format(OUT_DIR, SUFFIX), overwrite=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## XI - Saving the catalogue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "columns = [\"help_id\", \"field\", \"ra\", \"dec\", \"hp_idx\"]\n",
    "\n",
    "bands = [column[5:] for column in master_catalogue.colnames if 'f_ap' in column]\n",
    "for band in bands:\n",
    "    columns += [\"f_ap_{}\".format(band), \"ferr_ap_{}\".format(band),\n",
    "                \"m_ap_{}\".format(band), \"merr_ap_{}\".format(band),\n",
    "                \"f_{}\".format(band), \"ferr_{}\".format(band),\n",
    "                \"m_{}\".format(band), \"merr_{}\".format(band),\n",
    "                \"flag_{}\".format(band)]    \n",
    "    \n",
    "columns += [\"stellarity\", \"stellarity_origin\", \"flag_cleaned\", \"flag_merged\", \"flag_gaia\", \"flag_optnir_obs\", \"flag_optnir_det\", \n",
    "            \"zspec\", \"zspec_qual\", \"zspec_association_flag\", \"ebv\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Missing columns: {'video_id', 'viking_stellarity', 'vhs_stellarity', 'vhs_id', 'video_flag_cleaned', 'vhs_flag_gaia', 'vircam_dec', 'vircam_intid', 'video_flag_gaia', 'vircam_ra', 'video_stellarity', 'viking_flag_gaia', 'vhs_flag_cleaned', 'viking_id', 'vircam_flag_merged', 'viking_flag_cleaned'}\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": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue.write(\"{}/vista_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.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
