{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# SSDF master catalogue\n", "\n", "This notebook presents the merge of the various pristine catalogues to produce HELP mater catalogue on SSDF." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This notebook was run with herschelhelp_internal version: \n", "0246c5d (Thu Jan 25 17:01:47 2018 +0000) [with local modifications]\n" ] } ], "source": [ "from herschelhelp_internal import git_version\n", "print(\"This notebook was run with herschelhelp_internal version: \\n{}\".format(git_version()))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "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": [ "ssdf = Table.read(\"{}/SSDF.fits\".format(TMP_DIR))\n", "vhs = Table.read(\"{}/VISTA-VHS.fits\".format(TMP_DIR))\n", "des = Table.read(\"{}/DES.fits\".format(TMP_DIR))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## II - Merging tables\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": [ "### VISTA-VHS" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue = vhs\n", "master_catalogue['vhs_ra'].name = 'ra'\n", "master_catalogue['vhs_dec'].name = 'dec'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Add SSDF" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [ { "data": { "image/png": "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\nk/8f+G0Babft94QAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nb_merge_dist_plot(\n", " SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n", " SkyCoord(ssdf['ssdf_ra'], ssdf['ssdf_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, ssdf, \"ssdf_ra\", \"ssdf_dec\", radius=1.*u.arcsec)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Add DES" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nb_merge_dist_plot(\n", " SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n", " SkyCoord(des['des_ra'], des['des_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, des, \"des_ra\", \"des_dec\", radius=0.8*u.arcsec)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cleaning\n", "\n", "When we merge the catalogues, astropy masks the non-existent values (e.g. when a row comes only from a catalogue and has no counterparts in the other, the columns from the latest are masked for that row). We indicate to use NaN for masked values for floats columns, False for flag columns and -1 for ID columns." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "for col in master_catalogue.colnames:\n", " if \"m_\" in col or \"merr_\" in col or col.startswith(\"f_\") or \"ferr_\" in col or \"stellarity\" in col:\n", " #print(master_catalogue[col].name, master_catalogue[col].dtype)\n", " master_catalogue[col].fill_value = np.nan\n", " elif \"flag\" in col:\n", " master_catalogue[col].fill_value = 0\n", " elif \"id\" in col:\n", " master_catalogue[col].fill_value = -1\n", " \n", "master_catalogue = master_catalogue.filled()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [ { "data": { "text/html": [ "<Table length=10>\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
idxvhs_idradecvhs_stellaritym_vista_jmerr_vista_jm_ap_vista_jmerr_ap_vista_jm_vista_hmerr_vista_hm_ap_vista_hmerr_ap_vista_hm_vista_ksmerr_vista_ksm_ap_vista_ksmerr_ap_vista_ksf_vista_jferr_vista_jflag_vista_jf_ap_vista_jferr_ap_vista_jf_vista_hferr_vista_hflag_vista_hf_ap_vista_hferr_ap_vista_hf_vista_ksferr_vista_ksflag_vista_ksf_ap_vista_ksferr_ap_vista_ksvhs_flag_cleanedvhs_flag_gaiaflag_mergedssdf_idssdf_stellarityf_irac_i1ferr_irac_i1f_ap_irac_i1ferr_ap_irac_i1f_irac_i2ferr_irac_i2f_ap_irac_i2ferr_ap_irac_i2m_irac_i1merr_irac_i1flag_irac_i1m_ap_irac_i1merr_ap_irac_i1m_irac_i2merr_irac_i2flag_irac_i2m_ap_irac_i2merr_ap_irac_i2ps1_flag_cleanedssdf_flag_gaiades_iddes_stellaritym_decam_gmerr_decam_gm_ap_decam_gmerr_ap_decam_gm_decam_rmerr_decam_rm_ap_decam_rmerr_ap_decam_rm_decam_imerr_decam_im_ap_decam_imerr_ap_decam_im_decam_zmerr_decam_zm_ap_decam_zmerr_ap_decam_zm_decam_ymerr_decam_ym_ap_decam_ymerr_ap_decam_yf_decam_gferr_decam_gflag_decam_gf_ap_decam_gferr_ap_decam_gf_decam_rferr_decam_rflag_decam_rf_ap_decam_rferr_ap_decam_rf_decam_iferr_decam_iflag_decam_if_ap_decam_iferr_ap_decam_if_decam_zferr_decam_zflag_decam_zf_ap_decam_zferr_ap_decam_zf_decam_yferr_decam_yflag_decam_yf_ap_decam_yferr_ap_decam_ydes_flag_cleaneddes_flag_gaia
degdeguJyuJyuJyuJyuJyuJyuJyuJy
0473258099205353.71504639-55.17688564290.9nannannannan11.01440.00034214211.76760.000443277nannannannannannanFalsenannan142634.044.9476False71279.129.1014nannanFalsenannanFalse0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
1473258099214353.716916527-55.17707856520.9nannannannan12.41280.0006241511.8370.000457395nannannannannannanFalsenannan39345.322.6182False66866.128.1691nannanFalsenannanFalse0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
2473159272904357.028826947-50.89187665820.99386510.05110.00016970411.94570.00041642610.41120.00021617412.03530.000459508nannannannan346378.054.1399False60495.423.2026248617.049.5005False55701.323.574nannanFalsenannanFalse0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
3473258099213353.717364472-55.17625773130.9nannannannan12.07410.00067822111.89030.000468439nannannannannannanFalsenannan53746.333.5734False63660.127.4661nannanFalsenannanFalse0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
4473187364700355.363136226-51.2565847360.993865nannannannan11.04620.00028414912.0710.00050626111.43090.00066747412.07050.000601201nannanFalsenannan138518.036.2515False53901.825.133597192.759.7508False53926.229.8604False0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
5473152558982345.214389613-49.40568916870.9nannannannan11.46210.00048519512.2370.000511784nannannannannannanFalsenannan94445.242.2058False46260.521.8059nannanFalsenannanFalse0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
6473186079334357.027332159-50.8905678970.9nannannannan9.857330.00016482512.21180.000512821nannannannannannanFalsenannan414065.062.8587False47345.522.3625nannanFalsenannanFalse0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
7473291696371359.762016956-59.5315930940.9nannannannan9.925670.00016562912.27660.000512838nannannannannannanFalsenannan388804.059.3119False44600.721.0667nannanFalsenannanFalse0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
8473291696370359.76367545-59.53036764980.9nannannannan10.60810.00024297712.27750.000512951nannannannannannanFalsenannan207377.046.4089False44566.521.0552nannanFalsenannanFalse0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
9473187364707355.364618938-51.25634105960.9nannannannan11.15790.00030893512.10420.000513928nannannannannannanFalsenannan124983.035.5628False52278.524.7458nannanFalsenannanFalse0False-1nannannannannannannannannannannanFalsenannannannanFalsenannanFalse0-1nannannannannannannannannannannannannannannannannannannannannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannannannanFalsenannanFalse0
\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." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "vhs_stellarity, ssdf_stellarity, des_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": [ "# 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 - 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), \"SSDF\", dtype='" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nb_merge_dist_plot(\n", " SkyCoord(master_catalogue['ra'], master_catalogue['dec']),\n", " SkyCoord(specz['ra'], specz['dec'])\n", ")" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue = specz_merge(master_catalogue, specz, radius=.8 * u.arcsec)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## VII - Choosing between multiple values for the same filter\n", "\n", "There are no duplicate bands." ] }, { "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": [ "ssdf_moc = MOC(filename=\"../../dmu0/dmu0_SSDF/data/SSDF-I1_20160530_MOC.fits\")\n", "vhs_moc = MOC(filename=\"../../dmu0/dmu0_VISTA-VHS/data/VHS_SSDF_MOC.fits\")\n", "des_moc = MOC(filename=\"../../dmu0/dmu0_DES/data/DES-DR1_SSDF_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", " des_moc\n", ")\n", "\n", "was_observed_nir = inMoc(\n", " master_catalogue['ra'], master_catalogue['dec'],\n", " vhs_moc\n", ")\n", "\n", "was_observed_mir = inMoc(\n", " master_catalogue['ra'], master_catalogue['dec'],\n", " ssdf_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": [ "nb_optical_flux = (\n", " 1 * ~np.isnan(master_catalogue['f_decam_g']) +\n", " 1 * ~np.isnan(master_catalogue['f_decam_r']) + \n", " 1 * ~np.isnan(master_catalogue['f_decam_i']) +\n", " 1 * ~np.isnan(master_catalogue['f_decam_z']) +\n", " 1 * ~np.isnan(master_catalogue['f_decam_y']) \n", ")\n", "\n", "nb_nir_flux = (\n", " 1 * ~np.isnan(master_catalogue['f_vista_j']) +\n", " 1 * ~np.isnan(master_catalogue['f_vista_h']) + \n", " 1 * ~np.isnan(master_catalogue['f_vista_ks'])\n", ")\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": [ "# We have only one nIR and one mIR detection. Flagging only the sources with more than 1 detection will then\n", "# lead to having no source flagged.\n", "\n", "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 catalogue. This can be used to easily get additional information from them." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['vhs_id', 'ssdf_id', 'des_id', 'help_id', 'specz_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": 29, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue[id_names].write(\n", " \"{}/master_list_cross_ident_ssdf{}.fits\".format(OUT_DIR, SUFFIX))\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": 30, "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": 31, "metadata": { "collapsed": true }, "outputs": [], "source": [ "columns = [\"help_id\", \"field\", \"ra\", \"dec\", \"hp_idx\"]\n", "\n", "bands = [column[5:] for column in master_catalogue.colnames if 'f_ap' in column]\n", "for band in bands:\n", " columns += [\"f_ap_{}\".format(band), \"ferr_ap_{}\".format(band),\n", " \"m_ap_{}\".format(band), \"merr_ap_{}\".format(band),\n", " \"f_{}\".format(band), \"ferr_{}\".format(band),\n", " \"m_{}\".format(band), \"merr_{}\".format(band),\n", " \"flag_{}\".format(band)] \n", " \n", "columns += [\"stellarity\", \"stellarity_origin\", \"flag_cleaned\", \"flag_merged\", \"flag_gaia\", \"flag_optnir_obs\", \"flag_optnir_det\", \n", " \"zspec\", \"zspec_qual\", \"zspec_association_flag\", \"ebv\"]" ] }, { "cell_type": "code", "execution_count": 32, "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": 33, "metadata": { "collapsed": true }, "outputs": [], "source": [ "master_catalogue[columns].write(\"{}/master_catalogue_ssdf{}.fits\".format(OUT_DIR, SUFFIX))" ] } ], "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 }