{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# AKARI-NEP master catalogue\n", "\n", "This notebook presents the merge of the various pristine catalogues to produce HELP mater catalogue on AKARI-NEP." ] }, { "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-15 20:31:42.157732\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", "\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": [ "ps1 = Table.read(\"{}/PS1.fits\".format(TMP_DIR))\n", "akari = Table.read(\"{}/AKARI.fits\".format(TMP_DIR))\n", "nep = Table.read(\"{}/NEP-Spitzer.fits\".format(TMP_DIR))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## II - Merging tables\n", "\n", "We first merge the optical catalogues and then add the infrared ones: WFC, DXS, SpARCS, HSC, PS1, SERVS, SWIRE.\n", "\n", "At every step, we look at the distribution of the distances separating the sources from one catalogue to the other (within a maximum radius) to determine the best cross-matching radius." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### PanSTARRS" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue = ps1\n", "master_catalogue['ps1_ra'].name = 'ra'\n", "master_catalogue['ps1_dec'].name = 'dec'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Add AKARI" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nGzkT37JopAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nb_merge_dist_plot(\n", " SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n", " SkyCoord(akari['akari_ra'], akari['akari_dec'])\n", ")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Given the graph above, we use 1 arc-second radius\n", "master_catalogue = merge_catalogues(master_catalogue, akari, \"akari_ra\", \"akari_dec\", radius=1.*u.arcsec)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Add NEP-Spitzer" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAF3CAYAAACfXf7mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcXOV95/vvr9beF6k3bS0J1NrYBMhsZvOGwcslTHjF\nYIfcOPaVyZjEzs3MxM74OpnJvOYm15l44kCMiYfLTGKwfWNjE5vVsTE2GJBYDBKgBbFIrVZ3S63e\nu7pree4fdaopmpa6pa46p6r683696lWnzlLn16VW97ef85znMeecAAAAUFyhoAsAAABYDAhdAAAA\nPiB0AQAA+IDQBQAA4ANCFwAAgA8IXQAAAD4gdAEAAPiA0AUAAOADQhcAAIAPCF0AAAA+iARdwGxa\nWlrcmjVrgi4DAABgTs8888wR51zrXPuVZOhas2aNduzYEXQZAAAAczKzN+azH5cXAQAAfEDoAgAA\n8AGhCwAAwAeELgAAAB8QugAAAHxA6AIAAPABoQsAAMAHhC4AAAAfELoAAAB8QOgCAADwAaELAADA\nB4QuAAAAHxC6AAAAfBAJugDM7u6n3pxzn49f2OlDJQAAoBBo6QIAAPABoQsAAMAHhC4AAAAfELoA\nAAB8QOgCAADwAaELAADAB4QuAAAAHxC6AAAAfEDoAgAA8AGhCwAAwAeELgAAAB/MOfeimd0p6SOS\n+pxzZ86y/d9L+kTe+22S1OqcGzCz1yWNSEpLSjnnthaqcAAAgHIyn5auuyRdfbyNzrmvOOe2OOe2\nSPqipJ875wbydnmPt53ABQAAFq05Q5dz7jFJA3Pt57lR0j0LqggAAKACFaxPl5nVKNsi9r281U7S\nT8zsGTPbVqhzAQAAlJs5+3SdhI9KenzGpcVLnXPdZtYm6REze8VrOXsHL5Rtk6TOzs4ClgUAABC8\nQt69eINmXFp0znV7z32S7pV0wfEOds7d4Zzb6pzb2traWsCyAAAAgleQ0GVmjZKukPTDvHW1Zlaf\nW5Z0laSdhTgfAABAuZnPkBH3SLpSUouZHZT0Z5KikuScu93b7TpJDzvnxvIObZd0r5nlznO3c+7B\nwpUOAABQPuYMXc65G+exz13KDi2Rv26/pHNOtTAAAIBKwoj0AAAAPiB0AQAA+IDQBQAA4ANCFwAA\ngA8IXQAAAD4gdAEAAPiA0AUAAOADQhcAAIAPCF0AAAA+IHQBAAD4gNAFAADgA0IXAACADwhdAAAA\nPiB0AQAA+IDQBQAA4ANCFwAAgA8IXQAAAD4gdAEAAPiA0AUAAOADQhcAAIAPCF0AAAA+IHQBAAD4\ngNAFAADgA0IXAACADwhdAAAAPiB0AQAA+IDQBQAA4ANCFwAAgA8IXQAAAD4gdAEAAPiA0AUAAOAD\nQhcAAIAPCF0AAAA+mDN0mdmdZtZnZjuPs/1KMxsys+e9x5fztl1tZrvNbJ+ZfaGQhQMAAJST+bR0\n3SXp6jn2+YVzbov3+M+SZGZhSbdJukbSZkk3mtnmhRQLAABQruYMXc65xyQNnMJ7XyBpn3Nuv3Nu\nStK3JV17Cu8DAABQ9grVp+sSM3vBzB4wszO8dSskHcjb56C3DgAAYNGJFOA9npXU6ZwbNbMPSfqB\npK6TfRMz2yZpmyR1dnYWoCwAAIDSseCWLufcsHNu1Fu+X1LUzFokdUtalbfrSm/d8d7nDufcVufc\n1tbW1oWWBQAAUFIWHLrMrMPMzFu+wHvPo5K2S+oys7VmFpN0g6T7Fno+AACAcjTn5UUzu0fSlZJa\nzOygpD+TFJUk59ztkq6X9PtmlpI0IekG55yTlDKzWyQ9JCks6U7n3K6ifBUAAAAlbs7Q5Zy7cY7t\nt0q69Tjb7pd0/6mVBgAAUDkYkR4AAMAHhC4AAAAfFGLICATk7qfenHOfj1/I8BsAAJQCWroAAAB8\nQOgCAADwAaELAADAB4QuAAAAHxC6AAAAfEDoAgAA8AGhCwAAwAeELgAAAB8QugAAAHxA6AIAAPAB\noQsAAMAHhC4AAAAfELoAAAB8QOgCAADwAaELAADAB4SuMjc0kdSxsamgywAAAHOIBF0ATk464/Tm\nwLj29I5o9+ERHR5OqDoa1p9+aJPCIQu6PAAAcByErjLy5P6jevilw0okMwqZtHpprc5d1aTnDgzq\nwMC41rTUBl0iAAA4DkJXGXn6tQHVV0X1b85t17q2OlVFw5qYSuv5A4Pa2zdC6AIAoITRp6tMJNMZ\n9Y0kdMbyBp25olFV0bAkqToW1qolNdrbNxpwhQAA4EQIXWWidzihjJOWN1a/Y1tXW526j01ofCoV\nQGUAAGA+CF1lontwQpK0omn20OUk7aO1CwCAkkXoKhOHBidUHQ2rqSb6jm0rmmtUFQ0RugAAKGGE\nrjJxaDChFU3VMnvnsBDhkOn01jrt7RuVcy6A6gAAwFwIXWUglcno8HBCy5uqjrtPV1u9hiaS6h+Z\n9LEyAAAwX4SuMtA3PKl0xmn5LP25crra6iSJuxgBAChRhK4ycMjrRH+i0NVcG1NLXUx7+0b8KgsA\nAJwEQlcZ6B6cUDwS0pLa2An362qr12tHxpRKZ3yqDAAAzBehqwwcGpzQ8qZqhWbpRJ+vq61OybTT\n60fHfaoMAADMF6GrxKUzLtuJvvH4nehz1rbWKmymfVxiBACg5MwZuszsTjPrM7Odx9n+CTN7wcxe\nNLMnzOycvG2ve+ufN7MdhSx8segfnVQyfeJO9DnxSFidS5kSCACAUjSflq67JF19gu2vSbrCOXeW\npL+QdMeM7e9xzm1xzm09tRIXt/l0os/X1VannqGERhLJYpYFAABO0pyhyzn3mKSBE2x/wjl3zHv5\npKSVBaoNyoauaNjUWh+f1/5d7fWSmBIIAIBSU+g+XZ+S9EDeayfpJ2b2jJltK/C5FoXuwQkta5y7\nE33OssYq1cbCXGIEAKDERAr1Rmb2HmVD16V5qy91znWbWZukR8zsFa/lbLbjt0naJkmdnZ2FKqus\nZZxTz2BC561unvcxITOta8tOCZRhSiAAAEpGQVq6zOxsSd+UdK1z7mhuvXOu23vuk3SvpAuO9x7O\nuTucc1udc1tbW1sLUVbZOzo6pal0RitOMP3PbNa21GlsMqXBcfp1AQBQKhYcusysU9L3Jd3knNuT\nt77WzOpzy5KukjTrHZCY3cl2os/p8IaX6B1OFLwmAABwaua8vGhm90i6UlKLmR2U9GeSopLknLtd\n0pclLZX095btd5Ty7lRsl3Svty4i6W7n3INF+BoqVvfghCIhU1v9ybV0tXud7gldAACUjjlDl3Pu\nxjm2f1rSp2dZv1/SOe88AvN1aHBCHY1VCofm14k+Jx4Nq7kmqsOELgAASgYj0pco55wODU1oeePJ\nXVrMaW+ooqULAIASQugqUcfGk0okM1pxkv25ctobqtQ/MqmpFJNfAwBQCghdJar7FDvR57Q3VCnj\npNeOjBWyLAAAcIoIXSXq0OCEQia1N8xvJPqZcsft7mXyawAASgGhq0QdGpxQe0OVIuFT+ydqrY8r\nZNLuw8MFrgwAAJwKQleJ6h+dVHvDyQ0VkS8SCqmlLq7dh5kOCACAUkDoKkHpjNPwRFKN1dEFvU97\nQ5V299LSBQBAKSB0laCjo5PKOBUkdB0YmNDYZKpAlQEAgFNF6CpBh4ay42stNHR1eJcn99CZHgCA\nwBG6StDhoexwEQtv6crewUjoAgAgeISuEnRosDAtXc21MVVHw3SmBwCgBBC6StDh4YQiIVNNLLyg\n9wmZaX17HZ3pAQAoAYSuEnRocEKN1VGZndxE17NZ315PSxcAACWA0FWCDg8l1LDAS4s5GzrqdWR0\nUkdHJwvyfgAA4NQQukpQz1BCTQUMXRLTAQEAEDRCV4lJZ5wODxe2pUuS9hwmdAEAECRCV4k5Mjqp\ndMYt+M7FnNa6uJprorR0AQAQMEJXiTk0mB2jq1CXF81MGzrqtZuWLgAAAkXoKjGHvdHoC3V5UZI2\ntNdrT++onHMFe08AAHByCF0lJjcFUKFauiRpfUe9RidT6vZa0QAAgP8IXSXm8NCE4pGQqhc4MGq+\njbk7GLnECABAYAhdJebQUELLm6oLMjBqTlc7w0YAABA0QleJ6RmcUEdDVUHfs6EqqhVN1QwbAQBA\ngAhdJebwUELLmgobuiRpfXudXiF0AQAQGEJXCUlnnHpHJrW8sbrg772ho0H7+8eUTGcK/t4AAGBu\nhK4S0j+SHRi1o7HwLV0bOuo0lc7o9SNjBX9vAAAwt0jQBSxWdz/15jvWvTkwLkna0zuijR0NBT1f\nV1u2M/2+vtHpjvUAAMA/tHSVkKGJpCQVbAqgfKe11krKhi4AAOA/QlcJKWboqolFtKKpWvv6CV0A\nAASB0FVChsanFA2bqqOFGxg1X1d7nfb2EroAAAgCoauEDCVSaqyOFnRg1HzrWuu0/8ioMhnmYAQA\nwG+ErhIyND5VlEuLOeva6pRIZpiDEQCAABC6Ssiw19JVLOva6iTRmR4AgCDMGbrM7E4z6zOzncfZ\nbmb2NTPbZ2YvmNl5eduuNrPd3rYvFLLwSpPOOA1PJAldAABUqPm0dN0l6eoTbL9GUpf32Cbp65Jk\nZmFJt3nbN0u60cw2L6TYSjY6mZKT1FDE0NVUE1NLXVx7+5gOCAAAv80Zupxzj0kaOMEu10r6Xy7r\nSUlNZrZM0gWS9jnn9jvnpiR929sXsxgan5IkNRUxdEnSurZaWroAAAhAIfp0rZB0IO/1QW/d8dZj\nFkOJlKTitnRJ2UuM+/pG5Rx3MAIA4KeS6UhvZtvMbIeZ7ejv7w+6HN+91dIVK+p51rXWaTiRUv/o\nZFHPAwAA3q4Qoatb0qq81yu9dcdbPyvn3B3Oua3Oua2tra0FKKu8DE0kFQuHVBUtbg5elzcHIwAA\n8E8hfsPfJ+l3vLsYL5I05JzrkbRdUpeZrTWzmKQbvH0xi6GJpBqKODBqTlc7dzACABCEyFw7mNk9\nkq6U1GJmByX9maSoJDnnbpd0v6QPSdonaVzSJ71tKTO7RdJDksKS7nTO7SrC11ARhiaSRe9EL0lt\n9XHVxyOELgAAfDZn6HLO3TjHdifps8fZdr+yoQxzGJpIal1bVdHPY2Y63etMDwAA/DNn6ELxpTNO\nI0Uajf7up958x7qQmV7sHpre9vELOwt+XgAA8HYlc/fiYjaSSMpJRR2NPl9bfVwjiZQmptK+nA8A\nABC6SsLQRFKSv6FLkvpHEr6cDwAAELpKwnToqvEndLV6oatvhLG6AADwC6GrBEyHrip/QldzbUyR\nkKmf0AUAgG8IXSVgaCKpWKT4A6PmhMzUUhenpQsAAB8RukrA0ERSjVXFHxg1X2t9nKmAAADwEaGr\nBAxNJH3rz5XT1hDXsbEpJdMZX88LAMBiRegqAcNeS5ef2uqr5CT6dQEA4BNCV8AyLjswakO1v+PU\ntk4PG0HoAgDAD4SugI1OpuQk1fvc0tVSG5OJYSMAAPALoStgI4mUJKm+yt+Wrkg4pCW1MQZIBQDA\nJ4SugI0ksmN0+d3SJWVHpqelCwAAfxC6AhZUS5cktTVU6ejolFLcwQgAQNERugI23dIV9z90tdbH\nlXZObwyM+35uAAAWG0JXwEYSKVVHw4qE/f+nyE18vbd31PdzAwCw2BC6AjaSSAVyaVHKjtVlknYf\nHgnk/AAALCaEroCNJJKBha5YJHsH4+7e4UDODwDAYkLoCtjIZCqQOxdzOhqr9EoPLV0AABQboStA\nzhuNPqiWLklqb6jS60fHNDGVDqwGAAAWA0JXgCaSaaUzLtiWroYqZZy0t4/WLgAAionQFaAgx+jK\n6WiskiS9Qmd6AACKitAVoFIIXUtqY6qKhriDEQCAIiN0BSg3MGpDPLjLiyEzbWiv1yuHuYMRAIBi\nInQFqBRauiRpQ0c9LV0AABQZoStAI4mkYuGQ4tFwoHVs6GjQkdEp9TP5NQAARUPoClB2jK5gW7kk\naVNHvSRGpgcAoJgIXQEaSaRUVwKha4MXuujXBQBA8RC6ApSdAii4TvQ5S+viaqmLM2wEAABFROgK\nUNCj0efbtIzO9AAAFBOhKyBTqYwmUxk1xEsjdG1or9ee3hGlMy7oUgAAqEiEroDkxugqhcuLUrZf\n12Qqo9ePjgVdCgAAFYnQFZDhEhmjK2fTsgZJ3MEIAECxzCt0mdnVZrbbzPaZ2Rdm2f7vzex577HT\nzNJmtsTb9rqZveht21HoL6BclVpL17q2OoVMeqWHOxgBACiGOZtZzCws6TZJH5B0UNJ2M7vPOfdS\nbh/n3FckfcXb/6OS/sg5N5D3Nu9xzh0paOVlbnSytFq6qqJhrW2p5Q5GAACKZD4tXRdI2uec2++c\nm5L0bUnXnmD/GyXdU4jiKtlIIqWwmapjwY5Gn29jR4N29xK6AAAohvmErhWSDuS9Puitewczq5F0\ntaTv5a12kn5iZs+Y2bZTLbTSjCSSqquKKGQWdCnTNnTU642j4xrzWuEAAEDhFLoj/UclPT7j0uKl\nzrktkq6R9Fkzu3y2A81sm5ntMLMd/f39BS6r9JTSGF05G72R6ffQ2gUAQMHNJ3R1S1qV93qlt242\nN2jGpUXnXLf33CfpXmUvV76Dc+4O59xW59zW1tbWeZRV3kYSKdWXyBhdORs7sncw0q8LAIDCm0/o\n2i6py8zWmllM2WB138ydzKxR0hWSfpi3rtbM6nPLkq6StLMQhZe74RKZAijfyuZq1cTCDBsBAEAR\nzNnU4pxLmdktkh6SFJZ0p3Nul5nd7G2/3dv1OkkPO+fyR9dsl3SvZfstRSTd7Zx7sJBfQDmaSmU0\nPpUuucuLoZBpQ0c9E18DAFAE8/qt75y7X9L9M9bdPuP1XZLumrFuv6RzFlRhBToyOimpdMboyrex\no14P7Dws55yshDr5AwBQ7hiRPgB9I7nQVVotXVJ2DsbB8eR0jQAAoDAIXQHoG05IKs3QtXEZnekB\nACgGQlcA+kv48uIm7w7GXYeGAq4EAIDKQugKQN/wpExSXYkNGSFJjTVRrVlao+ffHAy6FAAAKgqh\nKwB9I5OqiYUVDpVmR/Utq5r0/IFBOeeCLgUAgIpB6ApA/0iiJC8t5mxZ1aS+kUn1DCWCLgUAgIpB\n6ApA38hkSXaiz9nS2SxJev4AlxgBACgUQlcA+oYnS7qla9OyesXCIUIXAAAFROjyWSbjdGS0tFu6\n4pGwNi9voDM9AAAFROjy2cD4lFIZV9KhS8r263qxe0ipdCboUgAAqAiELp/1DZfuGF35zu1s0kQy\nrd29DJIKAEAhELp81jeSvSOwoQxauiQ60wMAUCiELp/1j5RHS1fnkhotqY3RrwsAgAIhdPksN5F0\nKY5Gn8/MdM7KRlq6AAAoEEKXz/pHJlUfjygWKf2P/tzOZu3rH9VIIhl0KQAAlL3Sbm6pQH0jCbU2\nxIMu423ufurNWdcfG5uSc9JXH9mrL390s89VAQBQWUq/uaXC9A1Pqq2+tELX8axsrpEkHTw2HnAl\nAACUP0KXz/pGJtVWXxV0GfNSHQurpS6uAwOELgAAForQ5SPnnPpGEmXT0iVJq5qr9eaxCTnngi4F\nAICyRujy0chkSolkRm0l1qfrRFYtqdHYZEoHj00EXQoAAGWN0OWjw0PZgVE7GqsDrmT+Vnn9uhg6\nAgCAhSF0+ejQYLa1aHljefTpkqSOxipFQkboAgBggQhdPurxWrqWNZVPS1c4ZFreVE3oAgBggQhd\nPuoZnFDIpPYy6kgvZTvT7+weUjKdCboUAADKFqHLR4eGEmqrr1IkXF4f+6olNZpMZfRKz0jQpQAA\nULbK67d/mesZmtCypvLpz5XzVmf6YwFXAgBA+SJ0+ahnMKFlZdSJPqepJqr2hriefG0g6FIAAChb\nhC6fOOd0aGhCy8pouIgcM9Ol61r1+L4jSmcYJBUAgFNB6PLJ4HhSiWSmLFu6JOny9S0aHE9qZ/dQ\n0KUAAFCWCF0+OTTkjdFVRsNF5Lt0XYvMpMf29AddCgAAZYnQ5ZOeQW+MrjJt6VpaF9eZyxv12F5C\nFwAAp4LQ5ZOeMm/pkqTLulr07JuDGkkkgy4FAICyQ+jySc9QQpGQqaWuvAZGzXf5+lalM05PvHo0\n6FIAACg7hC6f9Awl1N5QpXDIgi7llJ3X2azaWFi/4BIjAAAnbV6hy8yuNrPdZrbPzL4wy/YrzWzI\nzJ73Hl+e77GLxaHBCS0vw4FR88UiIV18+lI9tudI0KUAAFB25gxdZhaWdJukayRtlnSjmW2eZddf\nOOe2eI//fJLHVryeoURZjtE10+XrW/XmwLhePzIWdCkAAJSV+bR0XSBpn3Nuv3NuStK3JV07z/df\nyLEVI5NxOjyUKMspgGa6rKtVkrjECADASZpP6Foh6UDe64PeupkuMbMXzOwBMzvjJI+VmW0zsx1m\ntqO/v7J+oR8dm9JUOqPlFdDStWZpjVYtqdbPucQIAMBJKVRH+mcldTrnzpb0d5J+cLJv4Jy7wzm3\n1Tm3tbW1tUBllYbccBHlOkZXPjPTZV2t+tWrR5RMZ4IuBwCAsjGf0NUtaVXe65XeumnOuWHn3Ki3\nfL+kqJm1zOfYxeCQNzBqOY/Rle/yrlaNTaX17BvHgi4FAICyMZ/QtV1Sl5mtNbOYpBsk3Ze/g5l1\nmJl5yxd473t0PscuBpXU0iVJl6xbqnDIGJ0eAICTMGfocs6lJN0i6SFJL0v6rnNul5ndbGY3e7td\nL2mnmf1a0tck3eCyZj22GF9IKesZSigeCWlJbSzoUgqioSqqc1c16Rd76dcFAMB8Reazk3fJ8P4Z\n627PW75V0q3zPXaxOTQ4oWWNVfIaAyvC5etb9dWf7NHA2FTFhEkAAIqJEel9UCljdOW7rKtFzkm/\n3EdrFwAA80Ho8kGP19JVSc5e2aSmmqgefaUv6FIAACgLhK4iS2ecekcmK2Jg1HzhkOkDm9r18Eu9\nmphKB10OAAAlj9BVZP0jk0pnXMVdXpSk685bodHJlB55uTfoUgAAKHmEriI75A0XUe6TXc/morVL\ntbyxSvc+ezDoUgAAKHmEriLr8QZGrcSWrlDIdO25K/TY3iPqH5kMuhwAAEravIaMwKnLDYxa7vMu\n3v3Um7Ouj4VDSmec/vy+XbrtE+f5XBUAAOWDlq4iOzSYUE0srIbqysy37Q1VWt5UpecOMCUQAAAn\nQugqsp6hyhsYdaZzVzXr0GBCe3pHgi4FAICSRegqskNDiYqZ6Pp4zlnVpJBJ33920c1lDgDAvBG6\niqwSB0adqS4eUVdbvX74fLcyGRd0OQAAlCRCVxFNpTLqH52syDsXZ9rS2aSeoYSe3H806FIAAChJ\nhK4i6h1OyLnKHKNrps3LGlQXj+j7z3GJEQCA2RC6iqhnqHLH6JopGg7pQ2d16IEXe5gWCACAWRC6\niqingkejn811567U2FRaD790OOhSAAAoOYSuIjpUwaPRz+bCtUu0oqla//wM0wIBADAToauIeoYm\n1FAVUW28MgdGnSkUMn38wk79Yu8R7eweCrocAABKCqGriHoWwRhdM9108WrVV0V060/3BV0KAAAl\nhdBVRD1DE+qo8DG6ZmqoiuqTl6zRg7sOM0I9AAB5CF1F1DOYWDT9ufJ98t1rVRsL09oFAEAeQleR\nJJJpHR2b0vJF1tIlSc21Mf32xav1oxcOaX//aNDlAABQEghdRXI4N0bXIuvTlfPpS09TNBzS1x99\nNehSAAAoCYSuInntyJgkafXSmoArCUZrfVw3XtCpe5/r1oGB8aDLAQAgcISuIsl1Il/fVh9wJcH5\nzBWnKWSmbzxGaxcAAISuItnTO6q2+rgaa6JBlxKYZY3Vun7rSn13+0H1DieCLgcAgEARuopkb9+I\n1rcv3launN+/4nSlndM3fr4/6FIAAAgUoasIMhmnvb2j6mqvC7qUwK1aUqPrzl2hf3rqDb3KnYwA\ngEVsccxP47PuwQlNJNOLrqXr7qfenHV9V1udQiZ96q4d+ukfX6FQyHyuDACA4NHSVQTTnehp6ZIk\n1VdF9aEzl+n1o2O6Z/vswQwAgEpH6CqCPb3Zy2jrFvGdizOdv7pZp7XW6i/vf2V6DDMAABYTQlcR\n7O0dUUdDlRqrF++dizOZma7bskLJTEZf+sFOOeeCLgkAAF8RuopgT98InehnsbQurv/zA+v1k5d7\n9eMXe4IuBwAAXxG6CiyTcdrXN7roOtHP1++9e63OWtGoP79vlwbHp4IuBwAA38wrdJnZ1Wa228z2\nmdkXZtn+CTN7wcxeNLMnzOycvG2ve+ufN7MdhSy+FB04Nq5EMkMn+uOIhEP6y988S8fGk/ovP345\n6HIAAPDNnKHLzMKSbpN0jaTNkm40s80zdntN0hXOubMk/YWkO2Zsf49zbotzbmsBai5pdKKf2xnL\nG3XzFafpn585qO/uOBB0OQAA+GI+LV0XSNrnnNvvnJuS9G1J1+bv4Jx7wjl3zHv5pKSVhS2zfOSG\ni6BP14l9/v3rdem6Fv3He1/Uk/uPBl0OAABFN5/QtUJSfnPEQW/d8XxK0gN5r52kn5jZM2a27eRL\nLC97e0e0rLFKDVXcuXgi0XBIt33iPHUuqdHN//SMXj8yFnRJAAAUVUE70pvZe5QNXX+St/pS59wW\nZS9PftbMLj/OsdvMbIeZ7ejv7y9kWb7a0zuqLjrRz0tjdVR3/u67ZJI+9T+3a2giGXRJAAAUzXym\nAeqWtCrv9Upv3duY2dmSvinpGufc9PUi51y399xnZvcqe7nysZnHO+fukNcXbOvWrWU5iFM64/Rq\n/6guOX1p0KWUrNmmCrr+/FW685ev6Te//oT+94vX6KaLVwdQGQAAxTWflq7tkrrMbK2ZxSTdIOm+\n/B3MrFPS9yXd5Jzbk7e+1szqc8uSrpK0s1DFl5o3B8Y1mcowXMRJWttSq984d7n29Y3qRy8cYuBU\nAEBFmjN0OedSkm6R9JCklyV91zm3y8xuNrObvd2+LGmppL+fMTREu6RfmtmvJT0t6cfOuQcL/lWU\nCDrRn7rzVy/R5V0teuq1Af3Fj15WJkPwAgBUlvlcXpRz7n5J989Yd3ve8qclfXqW4/ZLOmfm+kq1\ndzp00dLuv77QAAAVzklEQVR1Kq46o0OpjNOdj7+mY+NT+n+uP1vRMOP3AgAqw7xCF+ZnT++oVjRV\nqy7Ox3oqQmb68FnLdMnpS/XXD+/R8ERSt33iPFVFw0GXBgDAgtGMUEB7eplzcaHMTLe8t0v/5TfO\n1E939+l3/sfT3NUIAKgIhK4CSaUz2t8/Rif6Avnti1br7248V88dOKYb7nhS3YMTQZcEAMCCELoK\n5I2BcU2lM+pqo6WrUD5y9nLd+bvv0oGBcV3z3x/T/S/2BF0SAACnjNBVILlO9LR0FdZlXa368R9e\nqrWtdfq333pWX/jeCxqfSgVdFgAAJ40e3wXy1kTXtHQt1KwDqJ63Uk3VUX1n+wFtf31AX7vxXJ2x\nvDGA6gAAODW0dBXInt4RrWyuVi13LhZFOGT64Bkd+r1L12okkdJ1tz2hrz6yRxNT6aBLAwBgXghd\nBbK3d5RLiz44vbVOD37+cl11Rrv+9l/36n3/7VH9y68ZxR4AUPoIXQWQTGe0/8gow0X4ZEltTLd+\n/Dx9Z9tFaqqJ6Q/ueU6/9Y1faWf3UNClAQBwXISuAnjj6JiSaaf1bbR0+enC05bqX/7gUv3f/+Ys\n7e8f00dv/aU+9+3n9Mrh4aBLAwDgHeiAVAAvei0sGzoIXX6YraP9Z9+zTo/u7tMDOw/rh88f0ns3\ntunfXnm6tq5ZEkCFAAC8E6GrAB55qVdt9XFtXtYQdCmLVlU0rKvPXKYr1rfpV/uP6tk3j+n623+l\nC9Ys0acuW6v3bmxjHkcAQKAIXQuUSKb16O5+XXfuCoVCFnQ5i151LKz3bmzT127cou9uP6B/+MVr\n+sw/PqPW+riuP3+lfmvrKq1tqQ26TADAIkToWqDH9x3R+FRaV53REXQpyPOD5w4pFgnr5itO197e\nEW1/45i+8fNX9fVHX9Xallqd19msL39ksxprokGXCgBYJAhdC/TQrsOqr4ro4tOWBl0KZhEOmTYu\na9DGZQ0aTiT13BvHtP2NY/reswf1w+e7dfHpS3XNmct01RntaqmLB10uAKCCEboWIJXO6Ccv9+m9\nG9sUi9BfqNQ1VEV1xYY2Xb6+Vd2DE8o46cGdPfrTe1/Ul37wos5f3azLulp1aVeLzl7RqAh9wAAA\nBUToWoAdbxzTwNiUrtrMpcVyYmZa2Vyjj1/YqT+5eoNeOTyiB3Ye1s9e6dNXf7JHf/PIHjVURXTJ\n6S16d1eL3rWmWevb6umzBwBYEELXAjy8q1exSEhXbmgNuhScgvyhJzoaqnTjBZ0am0zp1f5R7esb\n1ZP7j+rBXYclSfVVEZ2/ullbVzfr/NVLdNbKRtUx5RMA4CTwW+MUOef00K7DumxdC/MtVpDaeERn\nr2zS2Sub5JzTwNiU3hgY1xtHx/XSoWE9urtfkmSSWurjWtlUrWu3LNdZK5u0aVm9amJ8LwAAZsdv\niFO069Cwugcn9IfvWxd0KSgSM9PSuriW1sV1XmezJGl8KqUDAxPqHhzXwWMT2tc3qj//l5e8/aW1\nS2u1aVmDNi2r16ZlDVrfXq8VTdVcmgQAELpO1cMv9Spk0vs3tQddCnxUE4toQ0f99OwDzjkNJ1Lq\nPjahnuEJ9Qwm9MSrR/TjF3umj4mGTRs7GrSurU7r2up0WkutVi+t1eqlNbSSAihrs80QMtPHL+z0\noZLywE/8U/TwrsPaunqJljLMwKJmZmqsjqqxOqrNy9+akSCRTOvwUEJ9I5PqG0koHDI9uf+o7n2u\n+23Ht9TFtXppjVY1V2tlc41WNFdrRVP19HNVNOz3lwRgkclknFIZp4xzSmec4pEQd28XCaHrFLxx\ndEyvHB7Rlz68KehSUKKqomGtaanVmhmj3yeSaQ2MTeno2JSOjk5OL7/aP6qRRErpjHvb/s01US1r\nrNayxiota6rSssZqdTRUaVljldobq9TRUEVrGQBJ2Z8v/SOT0z9fss9TGhib1NHRKQ1OJDXkPXqH\nEppIppWa8TNHyvZZrY6FVRePqK4qorp4REtr41rbUqvOJTUMkbQA/LQ+BQ/v6pUkfZBR6HGSqqJh\nLW+q1vKm6ndsS2ecRhJJHRtPanB8SkMTyewPyfGkdh0a1hOvHtVEMv2O4+qrImpvyAawtoa42huq\n1F4fV2t9lVrr49OP2lhYZvQtA8pBruvCsbEpHRvPPgbGktkANTalY2NTeX/AZUPW2NQ7fz5I2S4O\ntfGIaqJhVcXCqo6GtaGjXtXRsCLhkEIhKWSmkLKt91PpjEYnUxpNpDQ6mdLBYxPa2T2kn+2WwmZa\n0Vyt01pq1dVerzVLa/i5chIIXafgoV2HtWlZg1YtqQm6FFSQcMjUVBNTU01M0uzzQ06lMhpOZP9S\nHfYeQ4mURhJJvXF0TDu7h7ItZu6df71Gw6a6eESdS2q0tC6uJbUxLa2LqbkmpiU1MTXVRNVcm33d\nVJO9ZMok4cDCZTJOI4mUBsazQWlmkMq9HhxPamB8SoPe8mytUFL2Z0VtLKzaeES1sYiW1Ma0qrla\ndfFIdl08Mr1cF48UpGVqMpnWGwPj2t8/pteOjOqxvf16dE+/2urjuui0pTq3s0nxCN0h5kLoOkn9\nI5N65s1j+tz7uoIuBYtQLBJSS138hFMWZZzT+FRao4mURiaT2WfvL9axyZTqq6PqG0no5Z5hHR2d\n0lQ6c9z3qo2F1VQTU0N1VI3VETVURdVQHfWes6/rqiKqj0dU7y3XTf/AD6s2FuHOTVSMTMZpbCrl\n/dGTmr5UNzyR9EJUtpU6t/xWuEq+o+tATthMNbGwauJh1cQiqomFtbalTjWxsGpjYdXEI9lnb1tt\nPKJ4JOR761I8Gtb69nqtb8/eRDSZTGvXoWH9av9R3ffrQ3r4pcM6v7NZF522lL7OJ0DoOkn/3zMH\n5JwYhR4lK2Q2HXw6VHXCfZ1zmkpnND6Z1vhUWuNTKY1NpTWRTGtiKqUJb3l8KntjwOtHxjWRTCuR\nTGsydfywli/3F3mN94ujNu+XS3U0rGrvuSaWvfQRj4RVFQ2pKhJW3HuORUKKRUKK5z+H31ofDVt2\nOez/LyOUFuecJlMZTUylNeZ9D497j4lkShNTmez3dzKtRO57PZn29ktl95t66//D6GTuD5a0RidT\nJzx3LkBV532vr22p05nH+T9QG8t+D5fj92w8GtZ5q5t1bmeTDgyM64n9R/Wr/Uf1xKtHtXVNs963\nqV0NVdGgyyw5hK6T8MLBQX31kT16/6Y2bVpWH3Q5wIKZmeKRbNBpnv2K5nGlM05TqYwSybQSqbQS\nyYwmU2lNJjOaTHnLqYwmvYA2lc5oKpXR0dEp9aQTmkxllEpnFA5Z9pdcMq1ZroqetGjYFA2H8h7Z\n15GwKRrKPkfCIYVNioRCCodMkbApZKZwKPscsuwlnFDIFPbWm2V/qYYsuz5kmj7GZlv23sfsrfcM\n5b1/yLL7Wm4/Zbdb9h9Gln2Sydsv77WmX5t3XPb9pLfeN2w2/d65r8u85dy2cChX49vrzJ1TM2rI\nedvyjPpya2dyzskp2xKbyWSfUxmnVDqjZNoplckolXZvfe8kM0p4z+NTaY0nU0rkwlAyrfHJ1HSY\n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\nJP3MzF5Q9o+1R5xzDGsAlDlGpAcAAPABLV0AAAA+IHQBAAD4gNAFAADgA0IXAACADwhdAAAAPiB0\nAQAA+IDQBWBBzCztjdW1y8x+bWZ/bGYhb9tWM/vaCY5dY2Yf96/ad5x7wpvfsCSY2cfMbJ+ZMSYX\nUIEIXQAWasI5t8U5d4ayI6dfI+nPJMk5t8M594cnOHaNpEBCl+dVb37DeTOzcLGKcc59R9Kni/X+\nAIJF6AJQMM65PknbJN1iWVfmWm3M7Iq8EeyfM7N6SX8p6TJv3R95rU+/MLNnvccl3rFXmtmjZvbP\nZvaKmX3Lm45IZvYuM3vCa2V72szqzSxsZl8xs+1m9oKZfWY+9ZvZD8zsGa/Vblve+lEz+29m9mtJ\nFx/nnGd4y8975+zyjv3tvPXfyIU2M7va+xp/bWb/WsB/BgAlKhJ0AQAqi3Nuvxcs2mZs+neSPuuc\ne9zM6iQlJH1B0r9zzn1EksysRtIHnHMJL7TcI2mrd/y5ks6QdEjS45LebWZPS/qOpI8557abWYOk\nCUmfkjTknHuXmcUlPW5mDzvnXpuj/N9zzg148x1uN7PvOeeOSqqV9JRz7o+9eVNfmeWcN0v6W+fc\nt7x9wma2SdLHJL3bOZc0s7+X9Akze0DSP0i63Dn3mpktOekPGkDZIXQB8Mvjkv7GzL4l6fvOuYNe\nY1W+qKRbzWyLpLSk9XnbnnbOHZQkrx/WGklDknqcc9slyTk37G2/StLZZna9d2yjpC5Jc4WuPzSz\n67zlVd4xR71avuet33Ccc/5K0n80s5Xe17fXzN4n6XxlA5wkVUvqk3SRpMdyIdA5NzBHXQAqAKEL\nQEGZ2WnKhpQ+SZty651zf2lmP5b0IWVbnj44y+F/JKlX0jnKdn9I5G2bzFtO68Q/v0zSHzjnHjqJ\nuq+U9H5JFzvnxs3sUUlV3uaEcy59ouOdc3eb2VOSPizpfu+Spkn6n865L84410fnWxeAykGfLgAF\nY2atkm6XdKtzzs3Ydrpz7kXn3F9J2i5po6QRSfV5uzUq24qUkXSTpLk6re+WtMzM3uWdo97MIpIe\nkvT7Zhb11q83s9o53qtR0jEvcG1UtjVq3uf0wuZ+59zXJP1Q0tmS/lXS9WbW5u27xMxWS3pS0uVm\ntja3fo7aAFQAWroALFS1d7kvKikl6R8l/c0s+33ezN4jKSNpl6QHvOW010H9Lkl/L+l7ZvY7kh6U\nNHaiEzvnpszsY5L+zuuHNaFsa9U3lb38+KzX4b5f0m/M8XU8KOlmM3tZ2WD15Eme87ck3WRmSUmH\nJf1Xr3/YlyQ9bNlhNJLK9mt70uuo/31vfZ+yd34CqGA2449RAFgUzGyNpB85584MuJS38S5zTt9c\nAKBycHkRwGKVltRoJTY4qrKtfceCrgVA4dHSBQAA4ANaugAAAHxA6AIAAPABoQsAAMAHhC4AAAAf\nELoAAAB88P8D7nrNkV6RzrEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nb_merge_dist_plot(\n", " SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n", " SkyCoord(nep['nep_ra'], nep['nep_dec'])\n", ")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Given the graph above, we use 1 arc-second radius\n", "master_catalogue = merge_catalogues(master_catalogue, nep, \"nep_ra\", \"nep_dec\", radius=1.*u.arcsec)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cleaning\n", "\n", "When we merge the catalogues, astropy masks the non-existent values (e.g. when a row comes only from a catalogue and has no counterparts in the other, the columns from the latest are masked for that row). We indicate to use NaN for masked values for floats columns, False for flag columns and -1 for ID columns." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "for col in master_catalogue.colnames:\n", " if \"m_\" in col or \"merr_\" in col or \"f_\" in col or \"ferr_\" in col or \"stellarity\" in col:\n", " master_catalogue[col].fill_value = np.nan\n", " elif \"flag\" in col:\n", " master_catalogue[col].fill_value = 0\n", " elif \"id\" in col:\n", " master_catalogue[col].fill_value = -1\n", " \n", "master_catalogue = master_catalogue.filled()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<Table length=10>\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
idxps1_idradecm_ap_gpc1_gmerr_ap_gpc1_gm_gpc1_gmerr_gpc1_gm_ap_gpc1_rmerr_ap_gpc1_rm_gpc1_rmerr_gpc1_rm_ap_gpc1_imerr_ap_gpc1_im_gpc1_imerr_gpc1_im_ap_gpc1_zmerr_ap_gpc1_zm_gpc1_zmerr_gpc1_zm_ap_gpc1_ymerr_ap_gpc1_ym_gpc1_ymerr_gpc1_yf_ap_gpc1_gferr_ap_gpc1_gf_gpc1_gferr_gpc1_gflag_gpc1_gf_ap_gpc1_rferr_ap_gpc1_rf_gpc1_rferr_gpc1_rflag_gpc1_rf_ap_gpc1_iferr_ap_gpc1_if_gpc1_iferr_gpc1_iflag_gpc1_if_ap_gpc1_zferr_ap_gpc1_zf_gpc1_zferr_gpc1_zflag_gpc1_zf_ap_gpc1_yferr_ap_gpc1_yf_gpc1_yferr_gpc1_yflag_gpc1_yps1_flag_cleanedps1_flag_gaiaflag_mergedakari_idakari_stellaritym_megacam_umerr_megacam_um_megacam_gmerr_megacam_gm_megacam_rmerr_megacam_rm_megacam_imerr_megacam_im_megacam_zmerr_megacam_zm_wircam_ymerr_wircam_ym_wircam_jmerr_wircam_jm_wircam_ksmerr_wircam_ksf_megacam_uferr_megacam_uflag_megacam_uf_megacam_gferr_megacam_gflag_megacam_gf_megacam_rferr_megacam_rflag_megacam_rf_megacam_iferr_megacam_iflag_megacam_if_megacam_zferr_megacam_zflag_megacam_zf_wircam_yferr_wircam_yflag_wircam_yf_wircam_jferr_wircam_jflag_wircam_jf_wircam_ksferr_wircam_ksflag_wircam_ksakari_flag_cleanedakari_flag_gaianep_idm_irac_i1merr_irac_i1m_ap_irac_i1merr_ap_irac_i1m_irac_i2merr_irac_i2m_ap_irac_i2merr_ap_irac_i2irac_stellarityf_irac_i1ferr_irac_i1flag_irac_i1f_ap_irac_i1ferr_ap_irac_i1f_irac_i2ferr_irac_i2flag_irac_i2f_ap_irac_i2ferr_ap_irac_i2nep_flag_cleanednep_flag_gaia
degdegmagmagmagmagmagmagmagmagmagmagmagmagmagmagmagmag
0188302712307623275271.23085961166.918774822218.19319915770.018.05809974670.014.99979972840.015.1988000870.024.27619934081.82103002071nannannannannannan21.78949928281.73686003685nannan191.7433615390.0217.1501338120.0False3631.450332240.03023.291097410.0False0.7071641953651.1860774502nannanFalsenannannannanFalse6.985544874511.174826514nannanFalseFalse0False-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
1189672700208609845270.02070702168.06601032229.790510177610.0010860000038510.7659997940.0010860000038510.06149959560.0nannan11.56130027770.0024830000475nannan8.022919654850.001086000003858.19451045990.001086000003858.627799987790.1167209967978.767999649050.0866530016065440347.899394440.454889818179308.171728179.351737866False343083.7605490.0nannanFalse86194.5663248197.120729088nannanFalse2243014.794222243.559774911915119.225271915.58453785False1284931.58562138135.2991941129276.1092490127.9372272FalseFalse3False-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
2189982707079134663270.70758828168.320131242211.44639968870.0010860000038511.41779994960.0010860000038511.55739974980.011.29049968720.014.2034997940.038571000099213.81809997560.019277999177614.29240036010.0nannan13.08969974520.075024001300312.79220008850.076647996902595816.460657295.839740985798373.929662898.3978313743False86504.77883130.0110611.4600890.0False7561.36290537268.61895927810783.506632191.468637661False6966.904476660.0nannanFalse21092.11360951457.4578538827740.86281071958.37769568FalseFalse2False-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
3185752699446475438269.94490465164.795584792212.50559997560.0010860000038512.5671997070.0010860000038511.19250011440.011.31089973450.011.17640018460.073444999754411.13739967350.022363999858513.01809978490.0328960008919nannan11.59479999540.058630999177711.64340019230.053063999861536121.020346636.129796596734128.729182434.1370213696False121059.8005950.0108552.5690740.0False122868.3217028311.46996638127362.0763432623.40469521False22529.9426413682.619783677nannanFalse83575.69596974513.1833498879917.13810933905.85023045FalseFalse3False-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
4189682715123431188271.51194630168.067029372210.57460021970.0010860000038510.50730037690.0010860000038512.14599990840.013.78880023960.0nannannannan13.24590015410.0033799998927912.61209964750.0010860000038510.3178997040.17021399736410.2519998550.179143995047213874.945612213.926910368227551.576791227.60686453False50303.71235020.011078.47301490.0FalsenannannannanFalse18265.852164956.86333207732746.142017332.7540982802False270919.40829542472.8172895287872.41951847498.292007FalseFalse3False-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
5188582724662465602272.46654295167.153977372214.33959960940.0012460000580214.7826995850.0016659999964811.38119983670.012.7007999420.015.10219955440.052616998553314.22200012210.085230000317112.36310005190.0010860000038512.67360019680.0010860000038511.41310024260.062913998961411.41040039060.05370000004776670.527151557.655153417034435.27105276.80566930143False101746.6374160.030177.27518490.0False3304.60973739160.1481510977433.61306078583.536627729False41186.982882541.196989999130942.822159130.950340273False98800.67301715725.0973232299046.66197994898.8011358FalseFalse3True-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
6187862661494997604266.14940110166.555820152213.83380031590.0015600000042513.80589962010.0028979999478914.88619995120.016.94339942930.014.24590015410.001200999948213.96940040590.00149000005331nannannannan12.25290012360.1444009989513.30599975590.11005199700610628.693259915.271445732310905.363646229.1081232622False4031.995321730.0606.2339142980.0False7271.766723138.043750792789380.799153412.873653082FalsenannannannanFalse45586.88847936062.9757086317282.24261561751.75636978FalseFalse0False-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
7186862710807715078271.08019135165.720444202215.55959987640.0018949999939714.82019996640.0017389999702614.12220001220.013.72200012210.55727601051314.82619953160.001741999993114.16849994660.0012250000145313.17710018160.0010860000038513.65719985960.0013330000219912.76780033110.056616999208912.36559963230.1230370029812168.503110513.784817493714284.695993616.86270400931False8149.294170740.011781.48273546047.08369119False4261.08489996.836660538447809.082686158.81072802221False19460.765853419.465494195612506.046989815.3541540195False28371.34125521479.4571631341092.2713324656.62827508FalseFalse0False-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
8189832699068197946269.90687001168.197696342213.86009979250.0024119999725413.89089965820.0014890000456913.59759998320.013.64589977260.013.51449966430.014039999805413.56200027470.0075980001129213.47859954830.0024820000398913.53909969330.0029980000108513.45709991460.0014619999565213.52250003810.00095000001601910374.330586123.046928875610084.169495413.8296289409False13211.73964390.012636.88667790.0False14262.6470233184.43481994513652.113497195.5377184973False14742.128101133.700600914513943.125059338.5005942475False15036.959644220.248043907614157.937302112.3879452531FalseFalse3False-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
9188132687099408163268.70984613166.781221152223.92189979550.036281999200623.41860008240.22711299359823.52619934080.023.08749961856.40987014771nannan24.48209953318.4064798355122.14509963990.42141398787521.68751.2195099592220.73590087890.62988799810420.76740074160.3959650099280.980031605730.03274967324461.557973143690.325894948568False1.410978069510.02.113489782412.4774277622Falsenannan0.5850058200454.52949768859False5.034544037851.954090939247.673614893628.61908237469False18.434851707810.694947618617.9076955946.53088736709FalseFalse0False-1nannannannannannannannannannannannannannannannannannannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalsenannanFalseFalse0-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0
\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "master_catalogue[:10].show_in_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## III - Merging flags and stellarity\n", "\n", "Each pristine catalogue contains a flag indicating if the source was associated to a another nearby source that was removed during the cleaning process. We merge these flags in a single one." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "flag_cleaned_columns = [column for column in master_catalogue.colnames\n", " if 'flag_cleaned' in column]\n", "\n", "flag_column = np.zeros(len(master_catalogue), dtype=bool)\n", "for column in flag_cleaned_columns:\n", " flag_column |= master_catalogue[column]\n", " \n", "master_catalogue.add_column(Column(data=flag_column, name=\"flag_cleaned\"))\n", "master_catalogue.remove_columns(flag_cleaned_columns)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each pristine catalogue contains a flag indicating the probability of a source being a Gaia object (0: not a Gaia object, 1: possibly, 2: probably, 3: definitely). We merge these flags taking the highest value." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "flag_gaia_columns = [column for column in master_catalogue.colnames\n", " if 'flag_gaia' in column]\n", "\n", "master_catalogue.add_column(Column(\n", " data=np.max([master_catalogue[column] for column in flag_gaia_columns], axis=0),\n", " name=\"flag_gaia\"\n", "))\n", "master_catalogue.remove_columns(flag_gaia_columns)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each prisitine catalogue may contain one or several stellarity columns indicating the probability (0 to 1) of each source being a star. We merge these columns taking the highest value. We keep trace of the origin of the stellarity." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "akari_stellarity, irac_stellarity\n" ] } ], "source": [ "stellarity_columns = [column for column in master_catalogue.colnames\n", " if 'stellarity' in column]\n", "\n", "print(\", \".join(stellarity_columns))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "\n", "# We create an masked array with all the stellarities and get the maximum value, as well as its\n", "# origin. Some sources may not have an associated stellarity.\n", "stellarity_array = np.array([master_catalogue[column] for column in stellarity_columns])\n", "stellarity_array = np.ma.masked_array(stellarity_array, np.isnan(stellarity_array))\n", "\n", "max_stellarity = np.max(stellarity_array, axis=0)\n", "max_stellarity.fill_value = np.nan\n", "\n", "no_stellarity_mask = max_stellarity.mask\n", "\n", "master_catalogue.add_column(Column(data=max_stellarity.filled(), name=\"stellarity\"))\n", "\n", "stellarity_origin = np.full(len(master_catalogue), \"NO_INFORMATION\", dtype=\"S20\")\n", "stellarity_origin[~no_stellarity_mask] = np.array(stellarity_columns)[np.argmax(stellarity_array, axis=0)[~no_stellarity_mask]]\n", "\n", "master_catalogue.add_column(Column(data=stellarity_origin, name=\"stellarity_origin\"))\n", "\n", "master_catalogue.remove_columns(stellarity_columns)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## IV - Adding E(B-V) column" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue.add_column(\n", " ebv(master_catalogue['ra'], master_catalogue['dec'])\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## V.a - Adding HELP unique identifiers and field columns" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue.add_column(Column(gen_help_id(master_catalogue['ra'], master_catalogue['dec']),\n", " name=\"help_id\"))\n", "master_catalogue.add_column(Column(np.full(len(master_catalogue), \"AKARI-NEP\", dtype='" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nb_merge_dist_plot(\n", " SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n", " SkyCoord(specz['ra'] * u.deg, specz['dec'] * u.deg)\n", ")" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue = specz_merge(master_catalogue, specz, radius=1. * u.arcsec)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## VIII.a Wavelength domain coverage\n", "\n", "We add a binary `flag_optnir_obs` indicating that a source was observed in a given wavelength domain:\n", "\n", "- 1 for observation in optical;\n", "- 2 for observation in near-infrared;\n", "- 4 for observation in mid-infrared (IRAC).\n", "\n", "It's an integer binary flag, so a source observed both in optical and near-infrared by not in mid-infrared would have this flag at 1 + 2 = 3.\n", "\n", "*Note 1: The observation flag is based on the creation of multi-order coverage maps from the catalogues, this may not be accurate, especially on the edges of the coverage.*\n", "\n", "*Note 2: Being on the observation coverage does not mean having fluxes in that wavelength domain. For sources observed in one domain but having no flux in it, one must take into consideration de different depths in the catalogue we are using.*" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "ps1_moc = MOC(filename=\"../../dmu0/dmu0_PanSTARRS1-3SS/data/PanSTARRS1-3SS_AKARI-NEP_MOC.fits\")\n", "akari_moc = MOC(filename=\"../../dmu0/dmu0_AKARI-NEP-OptNIR/data/AKARI-NEP_OptNIR_MOC.fits\")\n", "nep_moc = MOC(filename=\"../../dmu0/dmu0_NEP-Spitzer/data/NEP-Spitzer-APJ_MOC.fits\")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "was_observed_optical = inMoc(\n", " master_catalogue['ra'], master_catalogue['dec'],\n", " ps1_moc + akari_moc) \n", "\n", "was_observed_nir = inMoc(\n", " master_catalogue['ra'], master_catalogue['dec'],\n", " akari_moc\n", ")\n", "\n", "was_observed_mir = inMoc(\n", " master_catalogue['ra'], master_catalogue['dec'],\n", " nep_moc\n", ")" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue.add_column(\n", " Column(\n", " 1 * was_observed_optical + 2 * was_observed_nir + 4 * was_observed_mir,\n", " name=\"flag_optnir_obs\")\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## VIII.b Wavelength domain detection\n", "\n", "We add a binary `flag_optnir_det` indicating that a source was detected in a given wavelength domain:\n", "\n", "- 1 for detection in optical;\n", "- 2 for detection in near-infrared;\n", "- 4 for detection in mid-infrared (IRAC).\n", "\n", "It's an integer binary flag, so a source detected both in optical and near-infrared by not in mid-infrared would have this flag at 1 + 2 = 3.\n", "\n", "*Note 1: We use the total flux columns to know if the source has flux, in some catalogues, we may have aperture flux and no total flux.*\n", "\n", "To get rid of artefacts (chip edges, star flares, etc.) we consider that a source is detected in one wavelength domain when it has a flux value in **at least two bands**. That means that good sources will be excluded from this flag when they are on the coverage of only one band." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# SpARCS is a catalogue of sources detected in r (with fluxes measured at \n", "# this prior position in the other bands). Thus, we are only using the r\n", "# CFHT band.\n", "# Check to use catalogue flags from HSC and PanSTARRS.\n", "nb_optical_flux = (\n", " 1 * ~np.isnan(master_catalogue['f_megacam_u']) +\n", " 1 * ~np.isnan(master_catalogue['f_megacam_g']) +\n", " 1 * ~np.isnan(master_catalogue['f_megacam_r']) +\n", " 1 * ~np.isnan(master_catalogue['f_megacam_i']) +\n", " 1 * ~np.isnan(master_catalogue['f_megacam_z']) +\n", " 1 * ~np.isnan(master_catalogue['f_gpc1_g']) +\n", " 1 * ~np.isnan(master_catalogue['f_gpc1_r']) +\n", " 1 * ~np.isnan(master_catalogue['f_gpc1_i']) +\n", " 1 * ~np.isnan(master_catalogue['f_gpc1_z']) +\n", " 1 * ~np.isnan(master_catalogue['f_gpc1_y'])\n", ")\n", "\n", "nb_nir_flux = (\n", " 1 * ~np.isnan(master_catalogue['f_wircam_y']) +\n", " 1 * ~np.isnan(master_catalogue['f_wircam_j']) +\n", " 1 * ~np.isnan(master_catalogue['f_wircam_ks'])\n", ")\n", "\n", "nb_mir_flux = (\n", " 1 * ~np.isnan(master_catalogue['f_irac_i1']) +\n", " 1 * ~np.isnan(master_catalogue['f_irac_i2']) \n", ")" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": true }, "outputs": [], "source": [ "has_optical_flux = nb_optical_flux >= 2\n", "has_nir_flux = nb_nir_flux >= 2\n", "has_mir_flux = nb_mir_flux >= 2\n", "\n", "master_catalogue.add_column(\n", " Column(\n", " 1 * has_optical_flux + 2 * has_nir_flux + 4 * has_mir_flux,\n", " name=\"flag_optnir_det\")\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## IX - Cross-identification table\n", "\n", "We are producing a table associating to each HELP identifier, the identifiers of the sources in the pristine catalogues. This can be used to easily get additional information from them.\n", "\n", "For convenience, we also cross-match the master list with the SDSS catalogue and add the objID associated with each source, if any. **TODO: should we correct the astrometry with respect to Gaia positions?**" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "33 master list rows had multiple associations.\n" ] } ], "source": [ "#\n", "# Addind SDSS ids\n", "#\n", "sdss = Table.read(\"../../dmu0/dmu0_SDSS-DR13/data/SDSS-DR13_AKARI-NEP.fits\")['objID', 'ra', 'dec']\n", "sdss_coords = SkyCoord(sdss['ra'] * u.deg, sdss['dec'] * u.deg)\n", "idx_ml, d2d, _ = sdss_coords.match_to_catalog_sky(SkyCoord(master_catalogue['ra'], master_catalogue['dec']))\n", "idx_sdss = np.arange(len(sdss))\n", "\n", "# Limit the cross-match to 1 arcsec\n", "mask = d2d <= 1. * u.arcsec\n", "idx_ml = idx_ml[mask]\n", "idx_sdss = idx_sdss[mask]\n", "d2d = d2d[mask]\n", "nb_orig_matches = len(idx_ml)\n", "\n", "# In case of multiple associations of one master list object to an SDSS object, we keep only the\n", "# association to the nearest one.\n", "sort_idx = np.argsort(d2d)\n", "idx_ml = idx_ml[sort_idx]\n", "idx_sdss = idx_sdss[sort_idx]\n", "_, unique_idx = np.unique(idx_ml, return_index=True)\n", "idx_ml = idx_ml[unique_idx]\n", "idx_sdss = idx_sdss[unique_idx]\n", "print(\"{} master list rows had multiple associations.\".format(nb_orig_matches - len(idx_ml)))\n", "\n", "# Adding the ObjID to the master list\n", "master_catalogue.add_column(Column(data=np.full(len(master_catalogue), -1, dtype='>i8'), name=\"sdss_id\"))\n", "master_catalogue['sdss_id'][idx_ml] = sdss['objID'][idx_sdss]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['ps1_id', 'akari_id', 'nep_id', 'help_id', 'specz_id', 'sdss_id']\n" ] } ], "source": [ "id_names = []\n", "for col in master_catalogue.colnames:\n", " if '_id' in col:\n", " id_names += [col]\n", " if '_intid' in col:\n", " id_names += [col]\n", " \n", "print(id_names)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue[id_names].write(\n", " \"{}/master_list_cross_ident_akari-nep{}.fits\".format(OUT_DIR, SUFFIX), overwrite=True)\n", "id_names.remove('help_id')\n", "master_catalogue.remove_columns(id_names)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## X - Adding HEALPix index\n", "\n", "We are adding a column with a HEALPix index at order 13 associated with each source." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue.add_column(Column(\n", " data=coords_to_hpidx(master_catalogue['ra'], master_catalogue['dec'], order=13),\n", " name=\"hp_idx\"\n", "))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## XI - Saving the catalogue" ] }, { "cell_type": "code", "execution_count": 32, "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", "\n", "# Some band have no aperture measurements\n", "for band in ['megacam_u', 'megacam_g', 'megacam_r', 'megacam_i', 'megacam_z', 'wircam_j','wircam_ks', 'wircam_y']:\n", " columns += [\"f_{}\".format(band), \"ferr_{}\".format(band),\n", " \"m_{}\".format(band), \"merr_{}\".format(band)] \n", " \n", "columns += [\"stellarity\", \"stellarity_origin\", \"flag_cleaned\", \"flag_merged\", \"flag_gaia\", \"flag_optnir_obs\", \n", " \"flag_optnir_det\", \"ebv\", 'zspec_association_flag', 'zspec_qual', 'zspec']" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Missing columns: {'flag_megacam_u', 'flag_megacam_i', 'flag_wircam_ks', 'flag_gpc1_z', 'flag_wircam_j', 'flag_wircam_y', 'flag_gpc1_r', 'flag_irac_i2', 'flag_gpc1_y', 'flag_gpc1_i', 'flag_megacam_g', 'flag_megacam_z', 'flag_irac_i1', 'flag_gpc1_g', 'flag_megacam_r'}\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": 34, "metadata": {}, "outputs": [], "source": [ "master_catalogue[columns].write(\"{}/master_catalogue_akari-nep{}.fits\".format(OUT_DIR, SUFFIX), overwrite=True)" ] } ], "metadata": { "kernelspec": { "display_name": "Python (herschelhelp_internal)", "language": "python", "name": "helpint" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }