{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Herschel Stripe 82 VICS82 - VHS merging\n",
    "\n",
    "VICS 82 and VHS contain VISTA J and Ks fluxes which need to be merged"
   ]
  },
  {
   "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",
      "This notebook was executed on: \n",
      "2018-02-27 15:01:12.533619\n"
     ]
    }
   ],
   "source": [
    "from herschelhelp_internal import git_version\n",
    "print(\"This notebook was run with herschelhelp_internal version: \\n{}\".format(git_version()))\n",
    "import datetime\n",
    "print(\"This notebook was executed on: \\n{}\".format(datetime.datetime.now()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "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",
    "from collections import OrderedDict\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": [
    "vics82 = Table.read(\"{}/VICS82.fits\".format(TMP_DIR))\n",
    "vhs = Table.read(\"{}/VISTA-VHS.fits\".format(TMP_DIR))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## II - Merging tables\n",
    "\n",
    "We first merge the optical catalogues and then add the infrared ones:  VHS, VICS82, \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": [
    "### 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'\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Add VICS82"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\ne8HvWrCwEazmZ1ZH+QDlxsxCyoSqbznnHvS7nsXAOdcv6Weil7BQLpH0fjPbo0zbxjvM7P/4WxIW\nIoLV/MzmuB+grJiZSfoHSdudc3/ndz0LmZk1m1ld9vNKSVdJet3fqhYm59yfOOfanHOrlfl/9U+d\ncx/1uSwsQASreXDOTUjKHfezXdL/dc5t9beqhcnMvi3pKUmnmVm7md3id00L2CWSblbmb/Rbsr/e\n43dRC1SrpJ+Z2SvK/EXtx845xgAAZYzJ6wAAAB5hxQoAAMAjBCsAAACPEKwAAAA8QrACAADwCMEK\nAADAIwQrAAAAjxCsAMzIzNLZeVZbzexlM/tjM6vIPrfZzO44wfeuNrObilftW157JHsWX0kwsw+Z\n2Q4zY14VsAARrADMxohzbpNz7gxlpoNfK+kLkuSce9459wcn+N7VknwJVlk7s2fxzZqZBQpVjHPu\nO5I+UaifD8BfBCsAc+KcOyzpVkm3W8YVudUXM7s8b1r7S2ZWLemLki7LPvaH2VWkX5rZi9lfb89+\n7xVm9nMz+zcze93MvpU9XkdmdoGZPZldLXvWzKrNLGBmf2Nmz5nZK2b2e7Op38y+a2YvZFffbs17\nfNjM/tbMXpb0tuO85hnZz7dkX3Nd9ns/mvf4N3LBzMyuyf4eXzazxz38xwCgRAX9LgBA+XHO7cqG\nhyXTnvqspE85535tZlWSRiV9XtJnnXPvlSQzi0m6yjk3mg0m35a0Ofv950o6Q1KHpF9LusTMnpX0\nHUkfcs49Z2Y1kkYk3SJpwDl3gZlFJP3azB5zzu2eofz/xznXmz2b7zkze8A51yMpLukZ59wfZ8/+\nfP0Yr3mbpC87576VvSZgZhskfUjSJc65cTO7U9JHzOyHkv5e0m8553abWcOc32gAZYdgBcBLv5b0\nd2b2LUkPOufas4tO+UKSvmpmmySlJa3Pe+5Z51y7JGX7olZLGpDU6Zx7TpKcc4PZ56+WdLaZfTD7\nvbWS1kmaKVj9gZndkP18RfZ7erK1PJB9/LTjvOZTkv6bmbVlf39vmtk7JZ2vTEiTpEpJhyVdLOmJ\nXNBzzvXOUBeABYBgBWDOzOwUZYLIYUkbco87575oZj+Q9B5lVpDefYxv/0NJhySdo0w7wmjec2N5\nn6d14v9HmaRPO+cenUPdV0h6l6S3OeeSZvZzSdHs06POufSJvt85d5+ZPSPptyU9kt1+NEn/5Jz7\nk2mv9b7Z1gVg4aDHCsCcmFmzpLskfdVNO8XdzNY65151zv2VpOcknS5pSFJ13mW1yqwGTUq6WdJM\njeJvSGo1swuyr1FtZkFJj0r6pJmFso+vN7P4DD+rVlJfNlSdrsyq0qxfMxsodznn7pD0PUlnS3pc\n0gfNbEn22gYzWyXpaUm/ZWZrco/PUBuABYAVKwCzUZndmgtJmpD0L5L+7hjX/Wczu1LSpKStkn6Y\n/TydbQq/V9Kdkh4ws49J+pGkxIle2DmXMrMPSfpKti9qRJlVp28qs1X4YrbJvUvS9TP8Pn4k6TYz\n265MeHp6jq/5HyXdbGbjkg5K+stsv9Z/l/SYZUZQjCvTZ/Z0tjn+wezjh5W5oxLAAmbT/sIJAAuG\nma2W9H3n3Jk+l3KU7JbkVEM/gIWDrUAAC1laUq2V2IBQZVbt+vyuBYD3WLECAADwCCtWAAAAHiFY\nAQAAeIRgBQAA4BGCFQAAgEcIVgAAAB75/wFZ+gF/HRJJ/AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ff387893518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nb_merge_dist_plot(\n",
    "    SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n",
    "    SkyCoord(vics82['vics82_ra'], vics82['vics82_dec'])\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Given the graph above, we use 0.8 arc-second radius\n",
    "master_catalogue = merge_catalogues(master_catalogue, vics82, \"vics82_ra\", \"vics82_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": 8,
   "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": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=10</i>\n",
       "<table id=\"table140679676471112-141778\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>idx</th><th>vhs_id</th><th>ra</th><th>dec</th><th>vhs_stellarity</th><th>m_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>flag_merged</th><th>vics82_id</th><th>vics82_stellarity</th><th>vics82_flag_cleaned</th><th>f_wircam_j</th><th>f_vista_j</th><th>ferr_wircam_j</th><th>ferr_vista_j</th><th>m_wircam_j</th><th>m_vista_j</th><th>merr_wircam_j</th><th>merr_vista_j</th><th>flag_wircam_j</th><th>flag_vista_j</th><th>f_ap_wircam_j</th><th>f_ap_vista_j</th><th>ferr_ap_wircam_j</th><th>ferr_ap_vista_j</th><th>m_ap_wircam_j</th><th>m_ap_vista_j</th><th>merr_ap_wircam_j</th><th>merr_ap_vista_j</th><th>f_wircam_ks</th><th>f_vista_ks</th><th>ferr_wircam_ks</th><th>ferr_vista_ks</th><th>m_wircam_ks</th><th>m_vista_ks</th><th>merr_wircam_ks</th><th>merr_vista_ks</th><th>flag_wircam_ks</th><th>flag_vista_ks</th><th>f_ap_wircam_ks</th><th>f_ap_vista_ks</th><th>ferr_ap_wircam_ks</th><th>ferr_ap_vista_ks</th><th>m_ap_wircam_ks</th><th>m_ap_vista_ks</th><th>merr_ap_wircam_ks</th><th>merr_ap_vista_ks</th><th>vics82_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>472552085432</td><td>0.673306346297</td><td>-7.06443580379</td><td>0.999981</td><td>11.2259</td><td>0.000400582</td><td>10.7333</td><td>0.000339089</td><td>11.2295</td><td>0.000367877</td><td>11.6455</td><td>0.000379238</td><td>11.1059</td><td>0.000370037</td><td>12.1341</td><td>0.00053474</td><td>12.3747</td><td>0.00104543</td><td>12.5242</td><td>0.000705313</td><td>117397.0</td><td>43.3136</td><td>False</td><td>184788.0</td><td>57.7117</td><td>117008.0</td><td>39.6457</td><td>False</td><td>79764.9</td><td>27.8612</td><td>131105.0</td><td>44.6829</td><td>False</td><td>50856.1</td><td>25.0474</td><td>40749.2</td><td>39.2363</td><td>False</td><td>35508.6</td><td>23.067</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>0</td></tr>\n",
       "<tr><td>1</td><td>472550167438</td><td>354.799219968</td><td>-6.96604497217</td><td>0.999981</td><td>10.8381</td><td>0.000335466</td><td>10.7615</td><td>0.000342863</td><td>11.0164</td><td>0.000292732</td><td>11.3462</td><td>0.000333783</td><td>11.196</td><td>0.00044863</td><td>11.6947</td><td>0.000423534</td><td>10.9581</td><td>0.000438457</td><td>11.1149</td><td>0.000387725</td><td>167782.0</td><td>51.8406</td><td>False</td><td>180046.0</td><td>56.8565</td><td>142375.0</td><td>38.3867</td><td>False</td><td>105076.0</td><td>32.303</td><td>120667.0</td><td>49.8601</td><td>False</td><td>76229.9</td><td>29.7365</td><td>150226.0</td><td>60.6663</td><td>False</td><td>130026.0</td><td>46.4335</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>0</td></tr>\n",
       "<tr><td>2</td><td>472552084617</td><td>0.438188364583</td><td>-7.02594966115</td><td>0.999981</td><td>10.178</td><td>0.00022813</td><td>10.7626</td><td>0.000352718</td><td>10.4168</td><td>0.000227487</td><td>11.8231</td><td>0.000426508</td><td>10.2923</td><td>0.00028397</td><td>12.4207</td><td>0.000643061</td><td>11.2854</td><td>0.000447102</td><td>11.8295</td><td>0.000516409</td><td>308189.0</td><td>64.7553</td><td>False</td><td>179878.0</td><td>58.4361</td><td>247333.0</td><td>51.822</td><td>False</td><td>67725.0</td><td>26.6043</td><td>277393.0</td><td>72.5511</td><td>False</td><td>39059.1</td><td>23.134</td><td>111132.0</td><td>45.7636</td><td>False</td><td>67331.3</td><td>32.0248</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>0</td></tr>\n",
       "<tr><td>3</td><td>472533513039</td><td>350.418456023</td><td>-5.66823053354</td><td>0.999981</td><td>10.9137</td><td>0.000322981</td><td>10.942</td><td>0.000364706</td><td>11.1311</td><td>0.00032009</td><td>11.3007</td><td>0.000336604</td><td>11.5337</td><td>0.000492512</td><td>11.7255</td><td>0.000409554</td><td>11.6317</td><td>0.000615116</td><td>11.6691</td><td>0.000462824</td><td>156506.0</td><td>46.5568</td><td>False</td><td>152475.0</td><td>51.2174</td><td>128102.0</td><td>37.7661</td><td>False</td><td>109580.0</td><td>33.9723</td><td>88411.6</td><td>40.1053</td><td>False</td><td>74097.2</td><td>27.9505</td><td>80783.1</td><td>45.7671</td><td>False</td><td>78049.1</td><td>33.2705</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>0</td></tr>\n",
       "<tr><td>4</td><td>472552083412</td><td>0.508092945481</td><td>-6.96580681684</td><td>0.999981</td><td>10.484</td><td>0.000259921</td><td>10.8517</td><td>0.000366054</td><td>11.1097</td><td>0.000330767</td><td>11.5884</td><td>0.000380202</td><td>11.1516</td><td>0.000438414</td><td>11.7072</td><td>0.000447009</td><td>11.3865</td><td>0.000529828</td><td>11.6285</td><td>0.000466596</td><td>232479.0</td><td>55.6547</td><td>False</td><td>165703.0</td><td>55.8663</td><td>130656.0</td><td>39.804</td><td>False</td><td>84069.7</td><td>29.4394</td><td>125703.0</td><td>50.758</td><td>False</td><td>75355.3</td><td>31.0245</td><td>101252.0</td><td>49.41</td><td>False</td><td>81022.1</td><td>34.8193</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>0</td></tr>\n",
       "<tr><td>5</td><td>472552083136</td><td>0.360617270106</td><td>-6.95299694223</td><td>0.999981</td><td>10.5721</td><td>0.000280615</td><td>10.9244</td><td>0.00037351</td><td>10.9582</td><td>0.000310081</td><td>11.8008</td><td>0.000410481</td><td>11.1491</td><td>0.000447647</td><td>12.1906</td><td>0.000554907</td><td>11.5167</td><td>0.000602693</td><td>11.7189</td><td>0.000484607</td><td>214362.0</td><td>55.4033</td><td>False</td><td>154972.0</td><td>53.3126</td><td>150219.0</td><td>42.9019</td><td>False</td><td>69130.9</td><td>26.1361</td><td>126000.0</td><td>51.9495</td><td>False</td><td>48280.6</td><td>24.6756</td><td>89809.4</td><td>49.8532</td><td>False</td><td>74546.5</td><td>33.2731</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>0</td></tr>\n",
       "<tr><td>6</td><td>472534714823</td><td>0.145602876509</td><td>-5.5517686642</td><td>0.999981</td><td>10.3001</td><td>0.000240276</td><td>10.7998</td><td>0.000374242</td><td>11.2545</td><td>0.000314867</td><td>11.9314</td><td>0.000455072</td><td>11.8628</td><td>0.000783346</td><td>12.5597</td><td>0.000635383</td><td>11.7489</td><td>0.000753477</td><td>12.3753</td><td>0.000711295</td><td>275388.0</td><td>60.9442</td><td>False</td><td>173818.0</td><td>59.9132</td><td>114344.0</td><td>33.1602</td><td>False</td><td>61296.0</td><td>25.6914</td><td>65296.2</td><td>47.1104</td><td>False</td><td>34366.9</td><td>20.1118</td><td>72517.9</td><td>50.3258</td><td>False</td><td>40726.9</td><td>26.6813</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>0</td></tr>\n",
       "<tr><td>7</td><td>472548405385</td><td>357.724882756</td><td>-5.86631118496</td><td>0.999981</td><td>10.5273</td><td>0.000284961</td><td>10.7989</td><td>0.000375849</td><td>10.8195</td><td>0.00032355</td><td>11.4229</td><td>0.000399775</td><td>11.8271</td><td>0.000596844</td><td>12.7362</td><td>0.000727982</td><td>11.4101</td><td>0.000643962</td><td>11.8273</td><td>0.000555651</td><td>223395.0</td><td>58.6319</td><td>False</td><td>173957.0</td><td>60.2186</td><td>170686.0</td><td>50.8646</td><td>False</td><td>97912.1</td><td>36.0519</td><td>67477.2</td><td>37.0932</td><td>False</td><td>29208.4</td><td>19.5841</td><td>99074.6</td><td>58.7622</td><td>False</td><td>67467.9</td><td>34.5283</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>0</td></tr>\n",
       "<tr><td>8</td><td>472552066969</td><td>0.0548805544191</td><td>-5.9566913333</td><td>0.999981</td><td>11.9876</td><td>0.000658944</td><td>10.9307</td><td>0.000376253</td><td>11.2882</td><td>0.000385194</td><td>11.8362</td><td>0.000412144</td><td>11.5098</td><td>0.000481497</td><td>12.3164</td><td>0.000579876</td><td>11.2894</td><td>0.000509449</td><td>11.8661</td><td>0.00051611</td><td>58204.3</td><td>35.3247</td><td>False</td><td>154078.0</td><td>53.3943</td><td>110846.0</td><td>39.3256</td><td>False</td><td>66913.4</td><td>25.4002</td><td>90378.6</td><td>40.0807</td><td>False</td><td>42999.1</td><td>22.9652</td><td>110722.0</td><td>51.9528</td><td>False</td><td>65097.6</td><td>30.9444</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>0</td></tr>\n",
       "<tr><td>9</td><td>472533572298</td><td>355.420251023</td><td>-5.50705317979</td><td>0.999981</td><td>9.63508</td><td>0.00018357</td><td>10.7982</td><td>0.000376723</td><td>10.3105</td><td>0.000251016</td><td>11.9849</td><td>0.000463845</td><td>9.99988</td><td>0.000274352</td><td>13.6404</td><td>0.00119194</td><td>10.1113</td><td>0.000304525</td><td>11.8514</td><td>0.000547935</td><td>508121.0</td><td>85.9103</td><td>False</td><td>174075.0</td><td>60.3998</td><td>272768.0</td><td>63.0624</td><td>False</td><td>58350.3</td><td>24.9282</td><td>363119.0</td><td>91.7557</td><td>False</td><td>12701.0</td><td>13.9433</td><td>327706.0</td><td>91.9142</td><td>False</td><td>65985.5</td><td>33.3007</td><td>False</td><td>3</td><td>False</td><td>-1</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>nan</td><td>False</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>nan</td><td>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>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</td><td>nan</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(\"$('#table140679676471112-141778').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",
       "    $('#table140679676471112-141778').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, 45, 47, 48, 49, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 79, 80, 81, 82, 83], type: \"optionalnum\"}]\n",
       "    });\n",
       "});\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 9,
     "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": 10,
   "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=\"vista_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": 11,
   "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=\"vista_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": 12,
   "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=\"vista_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": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue.add_column(Column(data=np.arange(len(master_catalogue)), \n",
    "                              name=\"vista_intid\"))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['vhs_id', 'vics82_id', 'vista_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": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "vista_origin = Table()\n",
    "vista_origin.add_column(master_catalogue['vista_intid'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "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(2, 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=['j','ks'], name=\"Band\"))\n",
    "for col in [\"VHS\", \"VICS82\"]:\n",
    "    vista_stats.add_column(Column(data=np.full(2, 0), name=\"{}\".format(col)))\n",
    "    vista_stats.add_column(Column(data=np.full(2, 0), name=\"use {}\".format(col)))\n",
    "    vista_stats.add_column(Column(data=np.full(2, 0), name=\"{} ap\".format(col)))\n",
    "    vista_stats.add_column(Column(data=np.full(2, 0), name=\"use {} ap\".format(col)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "vista_bands = ['j','ks'] # Lowercase naming convention (k is Ks)\n",
    "for band in vista_bands:\n",
    "\n",
    "\n",
    "    # VISTA total flux \n",
    "    has_vhs = ~np.isnan(master_catalogue['f_vhs_' + band.strip('s')])\n",
    "    has_vics82 = ~np.isnan(master_catalogue['f_vista_' + band])\n",
    "\n",
    "    #take VICS82 if available\n",
    "    use_vhs = has_vhs & ~has_vics82\n",
    "    use_vics82 = has_vics82 \n",
    "\n",
    "\n",
    "    master_catalogue['f_vista_' + band][use_vhs] = master_catalogue['f_vhs_' + band.strip('s')][use_vhs]\n",
    "    master_catalogue['ferr_vista_' + band][use_vhs] = master_catalogue['ferr_vhs_' + band.strip('s')][use_vhs]\n",
    "    master_catalogue['m_vista_' + band][use_vhs] = master_catalogue['m_vhs_' + band.strip('s')][use_vhs]\n",
    "    master_catalogue['merr_vista_' + band][use_vhs] = master_catalogue['merr_vhs_' + band.strip('s')][use_vhs]\n",
    "    master_catalogue['flag_vista_' + band][use_vhs] = master_catalogue['flag_vhs_' + band.strip('s')][use_vhs]\n",
    "\n",
    "    master_catalogue.remove_columns(['f_vhs_' + band.strip('s'),\n",
    "                               'ferr_vhs_' + band.strip('s'),\n",
    "                               'm_vhs_' + band.strip('s'), \n",
    "                               'merr_vhs_' + band.strip('s'),\n",
    "                               'flag_vhs_' + band.strip('s')])\n",
    "\n",
    "    origin = np.full(len(master_catalogue), '     ', dtype='<U5')\n",
    "    origin[use_vhs] = \"VHS\"\n",
    "    origin[use_vics82] = \"VICS82\"\n",
    "\n",
    "    \n",
    "    vista_origin.add_column(Column(data=origin, name= 'f_vista_' + band ))\n",
    "    \n",
    "    # VISTA aperture flux \n",
    "    has_ap_vhs = ~np.isnan(master_catalogue['f_ap_vhs_' + band.strip('s')])\n",
    "    has_ap_vics82 = ~np.isnan(master_catalogue['f_ap_vista_' + band])\n",
    "\n",
    "    #take VICS82 if available\n",
    "    use_ap_vhs = has_ap_vhs & ~has_ap_vics82\n",
    "    use_ap_vics82 = has_ap_vics82 \n",
    "\n",
    "\n",
    "    master_catalogue['f_ap_vista_' + band][use_ap_vhs] = master_catalogue['f_ap_vhs_' + band.strip('s')][use_ap_vhs]\n",
    "    master_catalogue['ferr_ap_vista_' + band][use_ap_vhs] = master_catalogue['ferr_ap_vhs_' + band.strip('s')][use_ap_vhs]\n",
    "    master_catalogue['m_ap_vista_' + band][use_ap_vhs] = master_catalogue['m_ap_vhs_' + band.strip('s')][use_ap_vhs]\n",
    "    master_catalogue['merr_ap_vista_' + band][use_ap_vhs] = master_catalogue['merr_ap_vhs_' + band.strip('s')][use_ap_vhs]\n",
    "  \n",
    "\n",
    "    master_catalogue.remove_columns(['f_ap_vhs_' + band.strip('s'),\n",
    "                               'ferr_ap_vhs_' + band.strip('s'),\n",
    "                               'm_ap_vhs_' + band.strip('s'), \n",
    "                               'merr_ap_vhs_' + band.strip('s')])\n",
    "\n",
    "    origin_ap = np.full(len(master_catalogue), '     ', dtype='<U5')\n",
    "    origin_ap[use_ap_vhs] = \"VHS\"\n",
    "    origin_ap[use_ap_vics82] = \"VICS82\"\n",
    "\n",
    "    \n",
    "    vista_origin.add_column(Column(data=origin_ap, name= 'f_ap_vista_' + band ))   \n",
    "\n",
    "   \n",
    "    vista_stats['VHS'][vista_stats['Band'] == band] = np.sum(has_vhs)\n",
    "    vista_stats['VICS82'][vista_stats['Band'] == band] = np.sum(has_vics82)\n",
    "\n",
    "    vista_stats['use VHS'][vista_stats['Band'] == band] = np.sum(use_vhs)\n",
    "    vista_stats['use VICS82'][vista_stats['Band'] == band] = np.sum(use_vics82)\n",
    "\n",
    "    vista_stats['VHS ap'][vista_stats['Band'] == band] = np.sum(has_ap_vhs)\n",
    "    vista_stats['VICS82 ap'][vista_stats['Band'] == band] = np.sum(has_ap_vics82)\n",
    "\n",
    "    vista_stats['use VHS ap'][vista_stats['Band'] == band] = np.sum(use_ap_vhs)\n",
    "    vista_stats['use VICS82 ap'][vista_stats['Band'] == band] = np.sum(use_ap_vics82)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=2</i>\n",
       "<table id=\"table140679676506064-855925\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>idx</th><th>Band</th><th>VHS</th><th>use VHS</th><th>VHS ap</th><th>use VHS ap</th><th>VICS82</th><th>use VICS82</th><th>VICS82 ap</th><th>use VICS82 ap</th></tr></thead>\n",
       "<tr><td>0</td><td>j</td><td>3245957.0</td><td>3245957.0</td><td>3245540.0</td><td>3245540.0</td><td>1835512.0</td><td>1342797.0</td><td>1809064.0</td><td>1316380.0</td></tr>\n",
       "<tr><td>1</td><td>ks</td><td>2408910.0</td><td>2408910.0</td><td>2406285.0</td><td>2406285.0</td><td>5422089.0</td><td>5004714.0</td><td>5075374.0</td><td>4658049.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(\"$('#table140679676506064-855925').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",
       "    $('#table140679676506064-855925').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": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vista_stats.show_in_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "vista_origin.write(\"{}/herschel-stripe-82_vista_fluxes_origins{}.fits\".format(OUT_DIR, SUFFIX), overwrite=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Rename old vhs cols"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n",
    "renaming = OrderedDict({\n",
    "    '_vhs_y': '_vista_y',\n",
    "    '_vhs_h': '_vista_h',\n",
    "\n",
    "})\n",
    "\n",
    "\n",
    "for col in master_catalogue.colnames:\n",
    "    for rename_col in list(renaming):\n",
    "        if rename_col in col:\n",
    "            master_catalogue.rename_column(col, col.replace(rename_col, renaming[rename_col]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## IX - Saving the catalogue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue[\"ra\"].name = \"vista_ra\"\n",
    "master_catalogue[\"dec\"].name = \"vista_dec\"\n",
    "master_catalogue[\"flag_merged\"].name = \"vista_flag_merged\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "columns = [\"vhs_id\", \"vics82_id\", \"vista_intid\",\n",
    "           'vista_ra', 'vista_dec', 'vista_flag_merged',  \n",
    "           'vista_flag_cleaned',  'vista_flag_gaia', 'vista_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": 23,
   "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": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=10</i>\n",
       "<table id=\"table140678879396920-440787\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>idx</th><th>vhs_id</th><th>vista_ra</th><th>vista_dec</th><th>m_vista_y</th><th>merr_vista_y</th><th>m_ap_vista_y</th><th>merr_ap_vista_y</th><th>m_vista_h</th><th>merr_vista_h</th><th>m_ap_vista_h</th><th>merr_ap_vista_h</th><th>f_vista_y</th><th>ferr_vista_y</th><th>flag_vista_y</th><th>f_ap_vista_y</th><th>ferr_ap_vista_y</th><th>f_vista_h</th><th>ferr_vista_h</th><th>flag_vista_h</th><th>f_ap_vista_h</th><th>ferr_ap_vista_h</th><th>vista_flag_merged</th><th>vics82_id</th><th>f_wircam_j</th><th>f_vista_j</th><th>ferr_wircam_j</th><th>ferr_vista_j</th><th>m_wircam_j</th><th>m_vista_j</th><th>merr_wircam_j</th><th>merr_vista_j</th><th>flag_wircam_j</th><th>flag_vista_j</th><th>f_ap_wircam_j</th><th>f_ap_vista_j</th><th>ferr_ap_wircam_j</th><th>ferr_ap_vista_j</th><th>m_ap_wircam_j</th><th>m_ap_vista_j</th><th>merr_ap_wircam_j</th><th>merr_ap_vista_j</th><th>f_wircam_ks</th><th>f_vista_ks</th><th>ferr_wircam_ks</th><th>ferr_vista_ks</th><th>m_wircam_ks</th><th>m_vista_ks</th><th>merr_wircam_ks</th><th>merr_vista_ks</th><th>flag_wircam_ks</th><th>flag_vista_ks</th><th>f_ap_wircam_ks</th><th>f_ap_vista_ks</th><th>ferr_ap_wircam_ks</th><th>ferr_ap_vista_ks</th><th>m_ap_wircam_ks</th><th>m_ap_vista_ks</th><th>merr_ap_wircam_ks</th><th>merr_ap_vista_ks</th><th>vista_flag_cleaned</th><th>vista_flag_gaia</th><th>vista_stellarity</th><th>vista_intid</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></tr></thead>\n",
       "<tr><td>0</td><td>472552085432</td><td>0.673306346297</td><td>-7.06443580379</td><td>11.2259</td><td>0.000400582</td><td>10.7333</td><td>0.000339089</td><td>11.1059</td><td>0.000370037</td><td>12.1341</td><td>0.00053474</td><td>117397.0</td><td>43.3136</td><td>False</td><td>184788.0</td><td>57.7117</td><td>131105.0</td><td>44.6829</td><td>False</td><td>50856.1</td><td>25.0474</td><td>False</td><td>-1</td><td>nan</td><td>117008.304688</td><td>nan</td><td>39.645652771</td><td>nan</td><td>11.2294578552</td><td>nan</td><td>0.00036787748104</td><td>False</td><td>False</td><td>nan</td><td>79764.9</td><td>nan</td><td>27.8611602783</td><td>nan</td><td>11.6455</td><td>nan</td><td>0.000379237753805</td><td>nan</td><td>40749.1757812</td><td>nan</td><td>39.2363166809</td><td>nan</td><td>12.3747024536</td><td>nan</td><td>0.0010454270523</td><td>False</td><td>False</td><td>nan</td><td>35508.6</td><td>nan</td><td>23.0669689178</td><td>nan</td><td>12.5242</td><td>nan</td><td>0.000705312821083</td><td>False</td><td>3</td><td>0.999980926514</td><td>0</td></tr>\n",
       "<tr><td>1</td><td>472550167438</td><td>354.799219968</td><td>-6.96604497217</td><td>10.8381</td><td>0.000335466</td><td>10.7615</td><td>0.000342863</td><td>11.196</td><td>0.00044863</td><td>11.6947</td><td>0.000423534</td><td>167782.0</td><td>51.8406</td><td>False</td><td>180046.0</td><td>56.8565</td><td>120667.0</td><td>49.8601</td><td>False</td><td>76229.9</td><td>29.7365</td><td>False</td><td>-1</td><td>nan</td><td>142375.328125</td><td>nan</td><td>38.3867149353</td><td>nan</td><td>11.016412735</td><td>nan</td><td>0.000292732205708</td><td>False</td><td>False</td><td>nan</td><td>105076.0</td><td>nan</td><td>32.3030281067</td><td>nan</td><td>11.3462</td><td>nan</td><td>0.00033378295484</td><td>nan</td><td>150226.046875</td><td>nan</td><td>60.6663398743</td><td>nan</td><td>10.9581365585</td><td>nan</td><td>0.000438456889242</td><td>False</td><td>False</td><td>nan</td><td>130026.0</td><td>nan</td><td>46.4335289001</td><td>nan</td><td>11.1149</td><td>nan</td><td>0.000387725478504</td><td>False</td><td>3</td><td>0.999980926514</td><td>1</td></tr>\n",
       "<tr><td>2</td><td>472552084617</td><td>0.438188364583</td><td>-7.02594966115</td><td>10.178</td><td>0.00022813</td><td>10.7626</td><td>0.000352718</td><td>10.2923</td><td>0.00028397</td><td>12.4207</td><td>0.000643061</td><td>308189.0</td><td>64.7553</td><td>False</td><td>179878.0</td><td>58.4361</td><td>277393.0</td><td>72.5511</td><td>False</td><td>39059.1</td><td>23.134</td><td>False</td><td>-1</td><td>nan</td><td>247333.125</td><td>nan</td><td>51.8220443726</td><td>nan</td><td>10.4167938232</td><td>nan</td><td>0.000227486991207</td><td>False</td><td>False</td><td>nan</td><td>67725.0</td><td>nan</td><td>26.6043300629</td><td>nan</td><td>11.8231</td><td>nan</td><td>0.000426508282544</td><td>nan</td><td>111131.65625</td><td>nan</td><td>45.7635650635</td><td>nan</td><td>11.285405159</td><td>nan</td><td>0.000447101745522</td><td>False</td><td>False</td><td>nan</td><td>67331.3</td><td>nan</td><td>32.024772644</td><td>nan</td><td>11.8295</td><td>nan</td><td>0.000516408588737</td><td>False</td><td>3</td><td>0.999980926514</td><td>2</td></tr>\n",
       "<tr><td>3</td><td>472533513039</td><td>350.418456023</td><td>-5.66823053354</td><td>10.9137</td><td>0.000322981</td><td>10.942</td><td>0.000364706</td><td>11.5337</td><td>0.000492512</td><td>11.7255</td><td>0.000409554</td><td>156506.0</td><td>46.5568</td><td>False</td><td>152475.0</td><td>51.2174</td><td>88411.6</td><td>40.1053</td><td>False</td><td>74097.2</td><td>27.9505</td><td>False</td><td>-1</td><td>nan</td><td>128101.617188</td><td>nan</td><td>37.7660675049</td><td>nan</td><td>11.1311130524</td><td>nan</td><td>0.000320089544402</td><td>False</td><td>False</td><td>nan</td><td>109580.0</td><td>nan</td><td>33.9722595215</td><td>nan</td><td>11.3007</td><td>nan</td><td>0.000336603581673</td><td>nan</td><td>80783.078125</td><td>nan</td><td>45.7670707703</td><td>nan</td><td>11.6316986084</td><td>nan</td><td>0.000615116034169</td><td>False</td><td>False</td><td>nan</td><td>78049.1</td><td>nan</td><td>33.2705459595</td><td>nan</td><td>11.6691</td><td>nan</td><td>0.000462824478745</td><td>False</td><td>3</td><td>0.999980926514</td><td>3</td></tr>\n",
       "<tr><td>4</td><td>472552083412</td><td>0.508092945481</td><td>-6.96580681684</td><td>10.484</td><td>0.000259921</td><td>10.8517</td><td>0.000366054</td><td>11.1516</td><td>0.000438414</td><td>11.7072</td><td>0.000447009</td><td>232479.0</td><td>55.6547</td><td>False</td><td>165703.0</td><td>55.8663</td><td>125703.0</td><td>50.758</td><td>False</td><td>75355.3</td><td>31.0245</td><td>False</td><td>-1</td><td>nan</td><td>130655.976562</td><td>nan</td><td>39.8040237427</td><td>nan</td><td>11.1096763611</td><td>nan</td><td>0.000330766895786</td><td>False</td><td>False</td><td>nan</td><td>84069.7</td><td>nan</td><td>29.4394283295</td><td>nan</td><td>11.5884</td><td>nan</td><td>0.000380201876396</td><td>nan</td><td>101252.0625</td><td>nan</td><td>49.4099655151</td><td>nan</td><td>11.3864898682</td><td>nan</td><td>0.000529828073923</td><td>False</td><td>False</td><td>nan</td><td>81022.1</td><td>nan</td><td>34.8193016052</td><td>nan</td><td>11.6285</td><td>nan</td><td>0.000466595723992</td><td>False</td><td>3</td><td>0.999980926514</td><td>4</td></tr>\n",
       "<tr><td>5</td><td>472552083136</td><td>0.360617270106</td><td>-6.95299694223</td><td>10.5721</td><td>0.000280615</td><td>10.9244</td><td>0.00037351</td><td>11.1491</td><td>0.000447647</td><td>12.1906</td><td>0.000554907</td><td>214362.0</td><td>55.4033</td><td>False</td><td>154972.0</td><td>53.3126</td><td>126000.0</td><td>51.9495</td><td>False</td><td>48280.6</td><td>24.6756</td><td>False</td><td>-1</td><td>nan</td><td>150219.171875</td><td>nan</td><td>42.9018821716</td><td>nan</td><td>10.9581861496</td><td>nan</td><td>0.000310081115458</td><td>False</td><td>False</td><td>nan</td><td>69130.9</td><td>nan</td><td>26.1360969543</td><td>nan</td><td>11.8008</td><td>nan</td><td>0.000410480890423</td><td>nan</td><td>89809.40625</td><td>nan</td><td>49.8532371521</td><td>nan</td><td>11.5166950226</td><td>nan</td><td>0.000602692656685</td><td>False</td><td>False</td><td>nan</td><td>74546.5</td><td>nan</td><td>33.2730903625</td><td>nan</td><td>11.7189</td><td>nan</td><td>0.000484607444378</td><td>False</td><td>3</td><td>0.999980926514</td><td>5</td></tr>\n",
       "<tr><td>6</td><td>472534714823</td><td>0.145602876509</td><td>-5.5517686642</td><td>10.3001</td><td>0.000240276</td><td>10.7998</td><td>0.000374242</td><td>11.8628</td><td>0.000783346</td><td>12.5597</td><td>0.000635383</td><td>275388.0</td><td>60.9442</td><td>False</td><td>173818.0</td><td>59.9132</td><td>65296.2</td><td>47.1104</td><td>False</td><td>34366.9</td><td>20.1118</td><td>False</td><td>-1</td><td>nan</td><td>114344.304688</td><td>nan</td><td>33.1602249146</td><td>nan</td><td>11.2544631958</td><td>nan</td><td>0.000314867065754</td><td>False</td><td>False</td><td>nan</td><td>61296.0</td><td>nan</td><td>25.6914329529</td><td>nan</td><td>11.9314</td><td>nan</td><td>0.000455072091427</td><td>nan</td><td>72517.8671875</td><td>nan</td><td>50.32579422</td><td>nan</td><td>11.7488870621</td><td>nan</td><td>0.000753476924729</td><td>False</td><td>False</td><td>nan</td><td>40726.9</td><td>nan</td><td>26.6812896729</td><td>nan</td><td>12.3753</td><td>nan</td><td>0.000711294531357</td><td>False</td><td>3</td><td>0.999980926514</td><td>6</td></tr>\n",
       "<tr><td>7</td><td>472548405385</td><td>357.724882756</td><td>-5.86631118496</td><td>10.5273</td><td>0.000284961</td><td>10.7989</td><td>0.000375849</td><td>11.8271</td><td>0.000596844</td><td>12.7362</td><td>0.000727982</td><td>223395.0</td><td>58.6319</td><td>False</td><td>173957.0</td><td>60.2186</td><td>67477.2</td><td>37.0932</td><td>False</td><td>29208.4</td><td>19.5841</td><td>False</td><td>-1</td><td>nan</td><td>170686.1875</td><td>nan</td><td>50.864566803</td><td>nan</td><td>10.8195037842</td><td>nan</td><td>0.000323549931636</td><td>False</td><td>False</td><td>nan</td><td>97912.1</td><td>nan</td><td>36.0518989563</td><td>nan</td><td>11.4229</td><td>nan</td><td>0.000399775424739</td><td>nan</td><td>99074.640625</td><td>nan</td><td>58.7622146606</td><td>nan</td><td>11.4100933075</td><td>nan</td><td>0.000643961655442</td><td>False</td><td>False</td><td>nan</td><td>67467.9</td><td>nan</td><td>34.5283050537</td><td>nan</td><td>11.8273</td><td>nan</td><td>0.00055565108778</td><td>False</td><td>3</td><td>0.999980926514</td><td>7</td></tr>\n",
       "<tr><td>8</td><td>472552066969</td><td>0.0548805544191</td><td>-5.9566913333</td><td>11.9876</td><td>0.000658944</td><td>10.9307</td><td>0.000376253</td><td>11.5098</td><td>0.000481497</td><td>12.3164</td><td>0.000579876</td><td>58204.3</td><td>35.3247</td><td>False</td><td>154078.0</td><td>53.3943</td><td>90378.6</td><td>40.0807</td><td>False</td><td>42999.1</td><td>22.9652</td><td>False</td><td>-1</td><td>nan</td><td>110846.117188</td><td>nan</td><td>39.3256034851</td><td>nan</td><td>11.2881984711</td><td>nan</td><td>0.000385193765396</td><td>False</td><td>False</td><td>nan</td><td>66913.4</td><td>nan</td><td>25.400220871</td><td>nan</td><td>11.8362</td><td>nan</td><td>0.000412143708672</td><td>nan</td><td>110721.648438</td><td>nan</td><td>51.9528274536</td><td>nan</td><td>11.2894182205</td><td>nan</td><td>0.000509449280798</td><td>False</td><td>False</td><td>nan</td><td>65097.6</td><td>nan</td><td>30.944437027</td><td>nan</td><td>11.8661</td><td>nan</td><td>0.000516109517775</td><td>False</td><td>3</td><td>0.999980926514</td><td>8</td></tr>\n",
       "<tr><td>9</td><td>472533572298</td><td>355.420251023</td><td>-5.50705317979</td><td>9.63508</td><td>0.00018357</td><td>10.7982</td><td>0.000376723</td><td>9.99988</td><td>0.000274352</td><td>13.6404</td><td>0.00119194</td><td>508121.0</td><td>85.9103</td><td>False</td><td>174075.0</td><td>60.3998</td><td>363119.0</td><td>91.7557</td><td>False</td><td>12701.0</td><td>13.9433</td><td>False</td><td>-1</td><td>nan</td><td>272767.90625</td><td>nan</td><td>63.0623779297</td><td>nan</td><td>10.3105163574</td><td>nan</td><td>0.000251015997492</td><td>False</td><td>False</td><td>nan</td><td>58350.3</td><td>nan</td><td>24.928237915</td><td>nan</td><td>11.9849</td><td>nan</td><td>0.000463844975457</td><td>nan</td><td>327705.875</td><td>nan</td><td>91.9141998291</td><td>nan</td><td>10.1112890244</td><td>nan</td><td>0.000304524815874</td><td>False</td><td>False</td><td>nan</td><td>65985.5</td><td>nan</td><td>33.3007049561</td><td>nan</td><td>11.8514</td><td>nan</td><td>0.00054793531308</td><td>False</td><td>3</td><td>0.999980926514</td><td>9</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(\"$('#table140678879396920-440787').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",
       "    $('#table140678879396920-440787').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, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63], type: \"optionalnum\"}]\n",
       "    });\n",
       "});\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "master_catalogue[:10].show_in_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "master_catalogue[columns].write(\"{}/vista_merged_catalogue_herschel-stripe-82.fits\".format(TMP_DIR), overwrite=True)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python (herschelhelp_internal)",
   "language": "python",
   "name": "helpint"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
