{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# SPIRE-NEP master catalogue: Flags"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from astropy.table import Table\n",
    "\n",
    "import itertools\n",
    "\n",
    "from herschelhelp_internal.flagging import flag_outliers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "SUFFIX = \"20180220\"\n",
    "FIELD = \"SPIRE-NEP\"\n",
    "catname = \"../../dmu1/dmu1_ml_SPIRE-NEP/data/master_catalogue_spire-nep_{}.fits\".format(SUFFIX)\n",
    "master_catalogue = Table.read(catname)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "all_bands = []"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Magnitudes and magnitude erros"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def flag_mag(flagcol, mask):\n",
    "    \n",
    "    # Add flag columns if does not exist\n",
    "    if flagcol not in master_catalogue.colnames:\n",
    "        master_catalogue[flagcol] = np.zeros(len(master_catalogue), dtype=bool)\n",
    "    \n",
    "    # Flagged\n",
    "    master_catalogue[flagcol][mask] = np.ones(len(mask), dtype=bool)\n",
    "    print('    Number of flagged objects:', len(master_catalogue[flagcol][mask]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.a Pan-STARRS Aperture and Total magnitude errors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GPC1 g\n",
      "  Aperture magnitude\n",
      "    Number of flagged objects: 6\n",
      "  Total magnitude\n",
      "    Number of flagged objects: 7\n",
      "GPC1 r\n",
      "  Aperture magnitude\n",
      "    Number of flagged objects: 3\n",
      "  Total magnitude\n",
      "    Number of flagged objects: 3\n",
      "GPC1 i\n",
      "  Aperture magnitude\n",
      "    Number of flagged objects: 2\n",
      "  Total magnitude\n",
      "    Number of flagged objects: 2\n",
      "GPC1 z\n",
      "  Aperture magnitude\n",
      "    Number of flagged objects: 4\n",
      "  Total magnitude\n",
      "    Number of flagged objects: 3\n",
      "GPC1 y\n",
      "  Aperture magnitude\n",
      "    Number of flagged objects: 3\n",
      "  Total magnitude\n",
      "    Number of flagged objects: 3\n"
     ]
    }
   ],
   "source": [
    "## dmu0: Pan-STARRS forced photometry catalogue\n",
    "gpc1_err = 0.0010860000038519502\n",
    "bands = [\"GPC1 g\", \"GPC1 r\", \"GPC1 i\", \"GPC1 z\", \"GPC1 y\"]\n",
    "\n",
    "for i, band in enumerate(bands):\n",
    "    print(band)\n",
    "    basecol = band.replace(\" \", \"_\").lower()\n",
    "    \n",
    "    ecol_ap, ecol_tot = \"merr_ap_{}\".format(basecol), \"merr_{}\".format(basecol)\n",
    "    flagcol_ap, flagcol_tot = \"flag_{}_ap\".format(basecol), \"flag_{}\".format(basecol)\n",
    "    \n",
    "    mask_ap  = np.where(master_catalogue[ecol_ap]  == gpc1_err)[0]\n",
    "    mask_tot = np.where(master_catalogue[ecol_tot] == gpc1_err)[0]\n",
    "    \n",
    "    print('  Aperture magnitude')\n",
    "    flag_mag(flagcol_ap, mask_ap)\n",
    "    print('  Total magnitude')\n",
    "    flag_mag(flagcol_tot, mask_tot)\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Save table"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "flag_cols = [\"help_id\"]\n",
    "for col in master_catalogue.colnames:\n",
    "    if col.startswith(\"flag_\"):\n",
    "        flag_cols += [col]\n",
    "new_catname = \"./data/{}_{}_flags.fits\".format(FIELD.lower(),SUFFIX)\n",
    "master_catalogue[flag_cols].write(new_catname, 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.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
