{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# XID+MIPS ELAIS-S1 Prior" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pylab\n", "import pymoc\n", "import xidplus\n", "import numpy as np\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook uses all the raw data from the masterlist, maps, PSF and relevant MOCs to create XID+ prior object and relevant tiling scheme" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Read in MOCs\n", "The selection functions required are the main MOC associated with the masterlist. As the prior for XID+ is based on IRAC detected sources coming from two different surveys at different depths (SERVS and SWIRE) I will split the XID+ run into two different runs. Here we use the SERVS depth." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "Sel_func=pymoc.MOC()\n", "Sel_func.read('../data/ELAIS-S1/holes_ELAIS-S1_irac1_O16_20180122_MOC.fits')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Read in Masterlist\n", "Next step is to read in Masterlist and select only sources that are detected in mid-infrared and at least one other wavelength domain (i.e. optical or nir). This will remove most of the objects in the catalogue that are artefacts. We can do this by using the `flag_optnir_det` flag and selecting sources that have a binary value of $>= 5$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from astropy.io import fits\n", "\n", "masterlist=fits.open('../data/ELAIS-S1/master_catalogue_elais-s1_20171207.fits')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "good=masterlist[1].data['flag_optnir_det']>=5" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ColDefs(\n", " name = 'help_id'; format = '27A'\n", " name = 'field'; format = '18A'\n", " name = 'ra'; format = 'D'; unit = 'deg'\n", " name = 'dec'; format = 'D'; unit = 'deg'\n", " name = 'hp_idx'; format = 'K'\n", " name = 'f_ap_voice_b99'; format = 'E'\n", " name = 'ferr_ap_voice_b99'; format = 'E'\n", " name = 'm_ap_voice_b99'; format = 'E'\n", " name = 'merr_ap_voice_b99'; format = 'E'; unit = 'mag'\n", " name = 'f_voice_b99'; format = 'E'\n", " name = 'ferr_voice_b99'; format = 'E'\n", " name = 'm_voice_b99'; format = 'E'; unit = 'mag'\n", " name = 'merr_voice_b99'; format = 'E'; unit = 'mag'\n", " name = 'flag_voice_b99'; format = 'L'\n", " name = 'f_ap_voice_b123'; format = 'E'\n", " name = 'ferr_ap_voice_b123'; format = 'E'\n", " name = 'm_ap_voice_b123'; format = 'E'\n", " name = 'merr_ap_voice_b123'; format = 'E'; unit = 'mag'\n", " name = 'f_voice_b123'; format = 'E'\n", " name = 'ferr_voice_b123'; format = 'E'\n", " name = 'm_voice_b123'; format = 'E'; unit = 'mag'\n", " name = 'merr_voice_b123'; format = 'E'; unit = 'mag'\n", " name = 'flag_voice_b123'; format = 'L'\n", " name = 'f_ap_voice_v'; format = 'E'\n", " name = 'ferr_ap_voice_v'; format = 'E'\n", " name = 'm_ap_voice_v'; format = 'E'\n", " name = 'merr_ap_voice_v'; format = 'E'; unit = 'mag'\n", " name = 'f_voice_v'; format = 'E'\n", " name = 'ferr_voice_v'; format = 'E'\n", " name = 'm_voice_v'; format = 'E'; unit = 'mag'\n", " name = 'merr_voice_v'; format = 'E'; unit = 'mag'\n", " name = 'flag_voice_v'; format = 'L'\n", " name = 'f_ap_voice_r'; format = 'E'\n", " name = 'ferr_ap_voice_r'; format = 'E'\n", " name = 'm_ap_voice_r'; format = 'E'\n", " name = 'merr_ap_voice_r'; format = 'E'; unit = 'mag'\n", " name = 'f_voice_r'; format = 'E'\n", " name = 'ferr_voice_r'; format = 'E'\n", " name = 'm_voice_r'; format = 'E'; unit = 'mag'\n", " name = 'merr_voice_r'; format = 'E'; unit = 'mag'\n", " name = 'flag_voice_r'; format = 'L'\n", " name = 'f_ap_irac3'; format = 'D'; unit = 'uJy'\n", " name = 'ferr_ap_irac3'; format = 'D'; unit = 'uJy'\n", " name = 'm_ap_irac3'; format = 'D'\n", " name = 'merr_ap_irac3'; format = 'D'\n", " name = 'f_irac3'; format = 'D'; unit = 'uJy'\n", " name = 'ferr_irac3'; format = 'D'; unit = 'uJy'\n", " name = 'm_irac3'; format = 'D'\n", " name = 'merr_irac3'; format = 'D'\n", " name = 'flag_irac3'; format = 'L'\n", " name = 'f_ap_irac4'; format = 'D'; unit = 'uJy'\n", " name = 'ferr_ap_irac4'; format = 'D'; unit = 'uJy'\n", " name = 'm_ap_irac4'; format = 'D'\n", " name = 'merr_ap_irac4'; format = 'D'\n", " name = 'f_irac4'; format = 'D'; unit = 'uJy'\n", " name = 'ferr_irac4'; format = 'D'; unit = 'uJy'\n", " name = 'm_irac4'; format = 'D'\n", " name = 'merr_irac4'; format = 'D'\n", " name = 'flag_irac4'; format = 'L'\n", " name = 'f_ap_irac1'; format = 'D'\n", " name = 'ferr_ap_irac1'; format = 'D'\n", " name = 'm_ap_irac1'; format = 'D'\n", " name = 'merr_ap_irac1'; format = 'D'\n", " name = 'f_irac1'; format = 'D'\n", " name = 'ferr_irac1'; format = 'D'\n", " name = 'm_irac1'; format = 'D'\n", " name = 'merr_irac1'; format = 'D'\n", " name = 'flag_irac1'; format = 'L'\n", " name = 'f_ap_irac2'; format = 'D'\n", " name = 'ferr_ap_irac2'; format = 'D'\n", " name = 'm_ap_irac2'; format = 'D'\n", " name = 'merr_ap_irac2'; format = 'D'\n", " name = 'f_irac2'; format = 'D'\n", " name = 'ferr_irac2'; format = 'D'\n", " name = 'm_irac2'; format = 'D'\n", " name = 'merr_irac2'; format = 'D'\n", " name = 'flag_irac2'; format = 'L'\n", " name = 'f_ap_vista_y'; format = 'D'\n", " name = 'ferr_ap_vista_y'; format = 'D'\n", " name = 'm_ap_vista_y'; format = 'D'\n", " name = 'merr_ap_vista_y'; format = 'D'\n", " name = 'f_vista_y'; format = 'D'\n", " name = 'ferr_vista_y'; format = 'D'\n", " name = 'm_vista_y'; format = 'D'\n", " name = 'merr_vista_y'; format = 'D'\n", " name = 'flag_vista_y'; format = 'L'\n", " name = 'f_ap_vista_j'; format = 'D'\n", " name = 'ferr_ap_vista_j'; format = 'D'\n", " name = 'm_ap_vista_j'; format = 'D'\n", " name = 'merr_ap_vista_j'; format = 'D'\n", " name = 'f_vista_j'; format = 'D'\n", " name = 'ferr_vista_j'; format = 'D'\n", " name = 'm_vista_j'; format = 'D'\n", " name = 'merr_vista_j'; format = 'D'\n", " name = 'flag_vista_j'; format = 'L'\n", " name = 'f_ap_vista_h'; format = 'D'\n", " name = 'ferr_ap_vista_h'; format = 'D'\n", " name = 'm_ap_vista_h'; format = 'D'\n", " name = 'merr_ap_vista_h'; format = 'D'\n", " name = 'f_vista_h'; format = 'D'\n", " name = 'ferr_vista_h'; format = 'D'\n", " name = 'm_vista_h'; format = 'D'\n", " name = 'merr_vista_h'; format = 'D'\n", " name = 'flag_vista_h'; format = 'L'\n", " name = 'f_ap_vista_k'; format = 'D'\n", " name = 'ferr_ap_vista_k'; format = 'D'\n", " name = 'm_ap_vista_k'; format = 'D'\n", " name = 'merr_ap_vista_k'; format = 'D'\n", " name = 'f_vista_k'; format = 'D'\n", " name = 'ferr_vista_k'; format = 'D'\n", " name = 'm_vista_k'; format = 'D'\n", " name = 'merr_vista_k'; format = 'D'\n", " name = 'flag_vista_k'; format = 'L'\n", " name = 'f_ap_vista_z'; format = 'D'\n", " name = 'ferr_ap_vista_z'; format = 'D'\n", " name = 'm_ap_vista_z'; format = 'D'\n", " name = 'merr_ap_vista_z'; format = 'D'\n", " name = 'f_vista_z'; format = 'D'\n", " name = 'ferr_vista_z'; format = 'D'\n", " name = 'm_vista_z'; format = 'D'\n", " name = 'merr_vista_z'; format = 'D'\n", " name = 'flag_vista_z'; format = 'L'\n", " name = 'stellarity'; format = 'D'\n", " name = 'flag_cleaned'; format = 'L'\n", " name = 'flag_merged'; format = 'L'\n", " name = 'flag_gaia'; format = 'K'\n", " name = 'flag_optnir_obs'; format = 'K'\n", " name = 'flag_optnir_det'; format = 'K'\n", " name = 'ebv'; format = 'D'\n", ")" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "masterlist[1].columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create uninformative (i.e. conservative) upper and lower limits based on IRAC fluxes\n", "As the default flux prior for XID+ is a uniform distribution, it makes sense to set reasonable upper and lower 24 micron flux limits based on the longest wavelength IRAC flux available. For a lower limit I take IRAC/500.0 and for upper limit I take IRACx500." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "MIPS_lower=np.full(good.sum(),0.0)\n", "MIPS_upper=np.full(good.sum(),1E5)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "for i in range(0,good.sum()):\n", " if masterlist[1].data['f_irac4'][good][i]>0:\n", " MIPS_lower[i]=masterlist[1].data['f_irac4'][good][i]/500.0\n", " MIPS_upper[i]=masterlist[1].data['f_irac4'][good][i]*500.0\n", " elif masterlist[1].data['f_irac3'][good][i]>0:\n", " MIPS_lower[i]=masterlist[1].data['f_irac3'][good][i]/500.0\n", " MIPS_upper[i]=masterlist[1].data['f_irac3'][good][i]*500.0\n", " elif masterlist[1].data['f_irac2'][good][i]>0:\n", " MIPS_lower[i]=masterlist[1].data['f_irac2'][good][i]/500.0\n", " MIPS_upper[i]=masterlist[1].data['f_irac2'][good][i]*500.0\n", " elif masterlist[1].data['f_irac1'][good][i]>0:\n", " MIPS_lower[i]=masterlist[1].data['f_irac1'][good][i]/500.0\n", " MIPS_upper[i]=masterlist[1].data['f_irac1'][good][i]*500.0" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "MIPS_Map=fits.open('../data/ELAIS-S1/MIPS/wp4_elais-s1_mips24_map_v1.0.fits.gz')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Read in PSF" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true }, "outputs": [], "source": [ "MIPS_psf=fits.open('../../dmu17/dmu17_ELAIS-S1/data/dmu17_MIPS_ELAIS-S1_20180116.fits')" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "centre=np.long((MIPS_psf[1].header['NAXIS1']-1)/2)\n", "radius=20" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nlyY7rdUAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pylab as plt\n", "plt.imshow(np.log10(MIPS_psf[1].data[centre-radius:centre+radius+1,centre-radius:centre+radius+1]/np.max(MIPS_psf[1].data[centre-radius:centre+radius+1,centre-radius:centre+radius+1])))\n", "plt.colorbar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Set XID+ prior class" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "prior_MIPS=xidplus.prior(MIPS_Map[1].data,MIPS_Map[2].data,MIPS_Map[0].header,MIPS_Map[1].header,moc=Sel_func)\n", "prior_MIPS.prior_cat(masterlist[1].data['ra'][good],masterlist[1].data['dec'][good],'master_catalogue_elais-s1_20171207.fits',flux_lower=MIPS_lower,\n", " flux_upper=MIPS_upper,ID=masterlist[1].data['help_id'][good])\n", "prior_MIPS.set_prf(MIPS_psf[1].data[centre-radius:centre+radius+1,centre-radius:centre+radius+1]/1.0E6,np.arange(0,41/2.0,0.5),np.arange(0,41/2.0,0.5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calculate tiles\n", "As fitting the whole map would be too computationally expensive, I split based on HEALPix pixels. For MIPS, the optimum order is 11. So that I don't have to read the master prior based on the whole map into memory each time (which requires a lot more memory) I also create another layer of HEALPix pixels based at the lower order of 7." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "----- There are 8189 tiles required for input catalogue and 50 large tiles\n" ] }, { "ename": "SystemExit", "evalue": "", "traceback": [ "An exception has occurred, use %tb to see the full traceback.\n", "\u001b[0;31mSystemExit\u001b[0m\n" ], "output_type": "error" } ], "source": [ "import pickle\n", "#from moc, get healpix pixels at a given order\n", "from xidplus import moc_routines\n", "order=11\n", "tiles=moc_routines.get_HEALPix_pixels(order,prior_MIPS.sra,prior_MIPS.sdec,unique=True)\n", "order_large=7\n", "tiles_large=moc_routines.get_HEALPix_pixels(order_large,prior_MIPS.sra,prior_MIPS.sdec,unique=True)\n", "print('----- There are '+str(len(tiles))+' tiles required for input catalogue and '+str(len(tiles_large))+' large tiles')\n", "output_folder=''\n", "outfile=output_folder+'Master_prior.pkl'\n", "with open(outfile, 'wb') as f:\n", " pickle.dump({'priors':[prior_MIPS],'tiles':tiles,'order':order,'version':xidplus.io.git_version()},f)\n", "outfile=output_folder+'Tiles.pkl'\n", "with open(outfile, 'wb') as f:\n", " pickle.dump({'tiles':tiles,'order':order,'tiles_large':tiles_large,'order_large':order_large,'version':xidplus.io.git_version()},f)\n", "raise SystemExit()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": true }, "outputs": [], "source": [ "with open('Master_prior.pkl', 'wb') as f:\n", " pickle.dump({'priors':prior_MIPS,'tiles':tiles,'order':order,'version':xidplus.io.git_version()},f)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'4606071 (Mon Nov 27 11:43:56 2017 +0000) [with local modifications]'" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xidplus.io.git_version()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Large pickle problem\n", "It would appear that if the file trying to be saved is too big, then pickle will fail. To get round this, use the following fix:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import copy" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pickle\n", "class MacOSFile(object):\n", " \n", "\n", "\n", " def __init__(self, f):\n", " self.f = f\n", "\n", " def __getattr__(self, item):\n", " return getattr(self.f, item)\n", "\n", " def read(self, n):\n", " # print(\"reading total_bytes=%s\" % n, flush=True)\n", " if n >= (1 << 31):\n", " buffer = bytearray(n)\n", " idx = 0\n", " while idx < n:\n", " batch_size = min(n - idx, 1 << 31 - 1)\n", " # print(\"reading bytes [%s,%s)...\" % (idx, idx + batch_size), end=\"\", flush=True)\n", " buffer[idx:idx + batch_size] = self.f.read(batch_size)\n", " # print(\"done.\", flush=True)\n", " idx += batch_size\n", " return buffer\n", " return self.f.read(n)\n", "\n", " def write(self, buffer):\n", " n = len(buffer)\n", " print(\"writing total_bytes=%s...\" % n, flush=True)\n", " idx = 0\n", " while idx < n:\n", " batch_size = min(n - idx, 1 << 31 - 1)\n", " print(\"writing bytes [%s, %s)... \" % (idx, idx + batch_size), end=\"\", flush=True)\n", " self.f.write(buffer[idx:idx + batch_size])\n", " print(\"done.\", flush=True)\n", " idx += batch_size\n", "\n", "\n", "def pickle_dump(obj, file_path):\n", " with open(file_path, \"wb\") as f:\n", " return pickle.dump(obj, MacOSFile(f), protocol=pickle.HIGHEST_PROTOCOL)\n", "\n", "\n", "def pickle_load(file_path):\n", " with open(file_path, \"rb\") as f:\n", " return pickle.load(MacOSFile(f))" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "writing total_bytes=1418884427...\n", "writing bytes [0, 1073741824)... done.\n", "writing bytes [1073741824, 1418884427)... done.\n" ] } ], "source": [ "pickle_dump({'priors':[prior_MIPS],'tiles':tiles,'order':order,'version':xidplus.io.git_version()},'Master_prior.pkl')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "obj=pickle_load('Tiles.pkl')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([47]),)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "np.where(obj['tiles_large'] == 141913)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "141913" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obj['tiles_large'][47]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "298" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "8189 - 7891" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "" ] } ], "metadata": { "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3.0 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.0" } }, "nbformat": 4, "nbformat_minor": 0 }