{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![HELP-Logo](https://avatars1.githubusercontent.com/u/7880370?s=200&v=4)\n", "\n", "\n", "# DMU 24 - SGP: Photo-z Selection Function\n", "\n", "The goal is to create a selection function for the photometric redshifts that varies spatially across the field. We will use the depth maps for the optical masterlist to find regions of the field that have similar photometric coverage and then calculate the fraction of sources meeting a given photo-z selection within those pixels.\n", "\n", "1. For optical depth maps: do clustering analysis to find HEALpix with similar photometric properties.\n", "2. Calculate selection function within those groups of similar regions as a function of magnitude in a given band.\n", "3. Paramatrise the selection function in such a way that it can be easily applied for a given sample of sources or region." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This notebook was executed on: \n", "2018-06-28 14:42:13.320275\n" ] } ], "source": [ "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, join\n", "import numpy as np\n", "import healpy as hp\n", "\n", "import warnings\n", "#We ignore warnings - this is a little dangerous but a huge number of warnings are generated by empty cells later\n", "warnings.filterwarnings('ignore')\n", "\n", "from astropy.io.votable import parse_single_table\n", "from astropy.io import fits\n", "from astropy.stats import binom_conf_interval\n", "from astropy.utils.console import ProgressBar\n", "from astropy.modeling.fitting import LevMarLSQFitter\n", "\n", "from sklearn.cluster import MiniBatchKMeans, MeanShift\n", "from collections import Counter\n", "\n", "from astropy.modeling import Fittable1DModel, Parameter" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def coords_to_hpidx(ra, dec, order):\n", " \"\"\"Convert coordinates to HEALPix indexes\n", " Given to list of right ascension and declination, this function computes\n", " the HEALPix index (in nested scheme) at each position, at the given order.\n", " Parameters\n", " ----------\n", " ra: array or list of floats\n", " The right ascensions of the sources.\n", " dec: array or list of floats\n", " The declinations of the sources.\n", " order: int\n", " HEALPix order.\n", " Returns\n", " -------\n", " array of int\n", " The HEALPix index at each position.\n", " \"\"\"\n", " ra, dec = np.array(ra), np.array(dec)\n", "\n", " theta = 0.5 * np.pi - np.radians(dec)\n", " phi = np.radians(ra)\n", " healpix_idx = hp.ang2pix(2**order, theta, phi, nest=True)\n", "\n", " return healpix_idx\n", "\n", "class GLF1D(Fittable1DModel):\n", " \"\"\"\n", " Generalised Logistic Function \n", " \"\"\"\n", " inputs = ('x',)\n", " outputs = ('y',)\n", "\n", " A = Parameter()\n", " B = Parameter()\n", " K = Parameter()\n", " Q = Parameter()\n", " nu = Parameter()\n", " M = Parameter()\n", " \n", " @staticmethod\n", " def evaluate(x, A, B, K, Q, nu, M):\n", " top = K - A\n", " bottom = (1 + Q*np.exp(-B*(x-M)))**(1/nu)\n", " return A + (top/bottom)\n", "\n", " @staticmethod\n", " def fit_deriv(x, A, B, K, Q, nu, M):\n", " d_A = 1 - (1 + (Q*np.exp(-B*(x-M)))**(-1/nu))\n", " \n", " d_B = ((K - A) * (x-M) * (Q*np.exp(-B*(x-M)))) / (nu * ((1 + Q*np.exp(-B*(x-M)))**((1/nu) + 1)))\n", "\n", " d_K = 1 + (Q*np.exp(-B*(x-M)))**(-1/nu)\n", " \n", " d_Q = -((K - A) * (Q*np.exp(-B*(x-M)))) / (nu * ((1 + Q*np.exp(-B*(x-M)))**((1/nu) + 1)))\n", " \n", " d_nu = ((K-A) * np.log(1 + (Q*np.exp(-B*(x-M))))) / ((nu**2) * ((1 + Q*np.exp(-B*(x-M)))**((1/nu))))\n", " \n", " d_M = -((K - A) * (Q*B*np.exp(-B*(x-M)))) / (nu * ((1 + Q*np.exp(-B*(x-M)))**((1/nu) + 1)))\n", "\n", " return [d_A, d_B, d_K, d_Q, d_nu, d_M]\n", " \n", "class InverseGLF1D(Fittable1DModel):\n", " \"\"\"\n", " Generalised Logistic Function \n", " \"\"\"\n", " inputs = ('x',)\n", " outputs = ('y',)\n", "\n", " A = Parameter()\n", " B = Parameter()\n", " K = Parameter()\n", " Q = Parameter()\n", " nu = Parameter()\n", " M = Parameter()\n", " \n", " @staticmethod\n", " def evaluate(x, A, B, K, Q, nu, M):\n", " return M - (1/B)*(np.log((((K - A)/(x -A))**nu - 1)/Q))\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 0 - Set relevant initial parameters" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "FIELD = 'SGP'\n", "ORDER = 10\n", "\n", "OUT_DIR = 'data'\n", "SUFFIX = 'depths_20180221_photoz_20180502'\n", "\n", "DEPTH_MAP = '../../dmu1/dmu1_ml_SGP/data/depths_sgp_20180221.fits'\n", "MASTERLIST = '../../dmu1/dmu1_ml_SGP/data/master_catalogue_sgp_20180221.fits'\n", "PHOTOZS = 'data/master_catalogue_sgp_20180221_photoz_20180502_r_optimised.fits'\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## I - Find clustering of healpix in the depth maps" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "depth_map = Table.read(DEPTH_MAP)\n", "\n", "# Get Healpix IDs\n", "hp_idx = depth_map['hp_idx_O_{0}'.format(ORDER)]\n", "\n", "# Calculate RA, Dec of depth map Healpix pixels for later plotting etc.\n", "dm_hp_ra, dm_hp_dec = hp.pix2ang(2**ORDER, hp_idx, nest=True, lonlat=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The depth map provides two measures of depth:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "mean_values = Table(depth_map.columns[2::2]) # Mean 1-sigma error within a cell\n", "p90_values = Table(depth_map.columns[3::2]) # 90th percentile of observed fluxes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the photo-z selection functions we will make use of the mean 1-sigma error as this can be used to accurately predict the completeness as a function of magnitude.\n", "\n", "We convert the mean 1-sigma uncertainty to a 3-sigma magnitude upper limit and convert to a useable array.\n", "When a given flux has no measurement in a healpix (and *ferr_mean* is therefore a *NaN*) we set the depth to some semi-arbitrary bright limit separate from the observed depths:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "dm_clustering = 23.9 - 2.5*np.log10(3*mean_values.to_pandas().as_matrix())\n", "dm_clustering[np.isnan(dm_clustering)] = 14\n", "dm_clustering[np.isinf(dm_clustering)] = 14\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To encourage the clustering to group nearby Healpix together, we also add the RA and Dec of the healpix to the inpux dataset:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "dm_clustering = np.hstack([dm_clustering, np.array(dm_hp_ra.data, ndmin=2).T, np.array(dm_hp_dec.data, ndmin=2).T])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we find clusters within the depth maps using a simple k-means clustering. For the number of clusters we assume an initial guess on the order of the number of different input magnitdues (/depths) in the dataset. This produces good initial results but may need further tuning:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "NCLUSTERS = dm_clustering.shape[1]*2\n", "km = MiniBatchKMeans(n_clusters=NCLUSTERS)\n", "\n", "km.fit(dm_clustering)\n", "\n", "counts = Counter(km.labels_) # Quickly calculate sizes of the clusters for reference\n", "\n", "clusters = dict(zip(hp_idx.data, km.labels_))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we illustrate the different clusters with each colour corresponding to a different group of similar sources (although the colours may not be unique to a single cluster of sources). You can see structures and patterns within the field, e.g. the outline of the HSC coverage." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Fig, Ax = plt.subplots(1,1,figsize=(8,8))\n", "Ax.scatter(dm_hp_ra, dm_hp_dec, c=km.labels_, cmap=plt.cm.tab20, s=6)\n", "\n", "Ax.set_xlabel('Right Ascension [deg]')\n", "Ax.set_ylabel('Declination [deg]')\n", "Ax.set_title('{0}'.format(FIELD))\n", "Fig.savefig('plots/dmu24_{0}_sf_hpclusters_illustration.png'.format(FIELD), \n", " format='png', bbox_inches='tight', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## II - Map photo-z and masterlist objects to their corresponding depth cluster\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now load the photometric redshift catalog and keep only the key columns for this selection function.\n", "Note: if using a different photo-$z$ measure than the HELP standard `z1_median`, the relevant columns should be retained instead." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "photoz_catalogue = Table.read(PHOTOZS)\n", "\n", "photoz_catalogue.keep_columns(['help_id', 'RA', 'DEC', 'id', 'z1_median', 'z1_min', 'z1_max', 'z1_area'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we load the relevant sections of the masterlist catalog (including the magnitude columns) and map the Healpix values to their corresponding cluster. For each of the masterlist/photo-$z$ sources and their corresponding healpix we find the respective cluster." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "masterlist_hdu = fits.open(MASTERLIST, memmap=True)\n", "masterlist = masterlist_hdu[1]\n", "\n", "masterlist_catalogue = Table()\n", "masterlist_catalogue['help_id'] = masterlist.data['help_id']\n", "masterlist_catalogue['RA'] = masterlist.data['ra']\n", "masterlist_catalogue['DEC'] = masterlist.data['dec']\n", "\n", "for column in masterlist.columns.names:\n", " if (column.startswith('m_') or column.startswith('merr_')):\n", " masterlist_catalogue[column] = masterlist.data[column]\n", "\n", "masterlist_hpx = coords_to_hpidx(masterlist_catalogue['RA'], masterlist_catalogue['DEC'], ORDER)\n", "\n", "keys = np.array([*clusters])\n", "incl = np.array([hpx in clusters.keys() for hpx in masterlist_hpx])\n", "if incl.sum() != len(incl):\n", " notincl = np.where(np.invert(incl))[0]\n", " for i in notincl:\n", " masterlist_hpx[i] = keys[np.argmin(np.abs(masterlist_hpx[i] -keys))]\n", " \n", "masterlist_catalogue[\"hp_idx_O_{:d}\".format(ORDER)] = masterlist_hpx" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "masterlist_cl_no = np.array([clusters[hpx] for hpx in masterlist_hpx])\n", "masterlist_catalogue['hp_depth_cluster'] = masterlist_cl_no" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "merged = join(masterlist_catalogue, photoz_catalogue, join_type='left', keys=['help_id', 'RA', 'DEC'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Constructing the output selection function table:\n", "\n", "The photo-$z$ selection function will be saved in a table that mirrors the format of the input optical depth maps, with matching length." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "pz_depth_map = Table()\n", "pz_depth_map.add_column(depth_map['hp_idx_O_13'])\n", "pz_depth_map.add_column(depth_map['hp_idx_O_10'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## III - Creating the binary photo-z selection function\n", "\n", "With the sources now easily grouped into regions of similar photometric properties, we can calculate the photo-$z$ selection function within each cluster of pixels. To begin with we want to create the most basic set of photo-$z$ selection functions - a map of the fraction of sources in the masterlist in a given region that have a photo-$z$ estimate. We will then create more informative selection function maps that make use of the added information from clustering." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "84" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "NCLUSTERS # Fixed during the clustering stage above" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 In cluster: 432218 With photo-z: 233824 Fraction: 0.541 \n", "1 In cluster: 530282 With photo-z: 393399 Fraction: 0.742 \n", "2 In cluster: 504125 With photo-z: 385028 Fraction: 0.764 \n", "3 In cluster: 198146 With photo-z: 177084 Fraction: 0.894 \n", "4 In cluster: 287673 With photo-z: 81328 Fraction: 0.283 \n", "5 In cluster: 401090 With photo-z: 368175 Fraction: 0.918 \n", "6 In cluster: 1055159 With photo-z: 798959 Fraction: 0.757 \n", "7 In cluster: 101807 With photo-z: 6015 Fraction: 0.059 \n", "8 In cluster: 236949 With photo-z: 0 Fraction: 0.000 \n", "9 In cluster: 242832 With photo-z: 216967 Fraction: 0.893 \n", "10 In cluster: 187649 With photo-z: 24405 Fraction: 0.130 \n", "11 In cluster: 33761 With photo-z: 16922 Fraction: 0.501 \n", "12 In cluster: 487151 With photo-z: 407811 Fraction: 0.837 \n", "13 In cluster: 512052 With photo-z: 427183 Fraction: 0.834 \n", "14 In cluster: 2026777 With photo-z: 1102563 Fraction: 0.544 \n", "15 In cluster: 30431 With photo-z: 14384 Fraction: 0.473 \n", "16 In cluster: 333991 With photo-z: 207468 Fraction: 0.621 \n", "17 In cluster: 224746 With photo-z: 194366 Fraction: 0.865 \n", "18 In cluster: 985764 With photo-z: 873865 Fraction: 0.886 \n", "19 In cluster: 115043 With photo-z: 79603 Fraction: 0.692 \n", "20 In cluster: 7310 With photo-z: 1 Fraction: 0.000 \n", "21 In cluster: 119239 With photo-z: 65233 Fraction: 0.547 \n", "22 In cluster: 36393 With photo-z: 17077 Fraction: 0.469 \n", "23 In cluster: 103648 With photo-z: 54481 Fraction: 0.526 \n", "24 In cluster: 805395 With photo-z: 597824 Fraction: 0.742 \n", "25 In cluster: 283539 With photo-z: 43432 Fraction: 0.153 \n", "26 In cluster: 360730 With photo-z: 145102 Fraction: 0.402 \n", "27 In cluster: 214128 With photo-z: 151011 Fraction: 0.705 \n", "28 In cluster: 123102 With photo-z: 70608 Fraction: 0.574 \n", "29 In cluster: 918799 With photo-z: 474474 Fraction: 0.516 \n", "30 In cluster: 257247 With photo-z: 135118 Fraction: 0.525 \n", "31 In cluster: 583486 With photo-z: 97292 Fraction: 0.167 \n", "32 In cluster: 149217 With photo-z: 15689 Fraction: 0.105 \n", "33 In cluster: 534928 With photo-z: 35400 Fraction: 0.066 \n", "34 In cluster: 187464 With photo-z: 78594 Fraction: 0.419 \n", "35 In cluster: 83524 With photo-z: 76382 Fraction: 0.914 \n", "36 In cluster: 99998 With photo-z: 80436 Fraction: 0.804 \n", "37 In cluster: 158551 With photo-z: 74793 Fraction: 0.472 \n", "38 In cluster: 532808 With photo-z: 343673 Fraction: 0.645 \n", "39 In cluster: 141698 With photo-z: 92253 Fraction: 0.651 \n", "40 In cluster: 177675 With photo-z: 102470 Fraction: 0.577 \n", "41 In cluster: 111687 With photo-z: 58616 Fraction: 0.525 \n", "42 In cluster: 79423 With photo-z: 61837 Fraction: 0.779 \n", "43 In cluster: 75492 With photo-z: 56096 Fraction: 0.743 \n", "44 In cluster: 55566 With photo-z: 49000 Fraction: 0.882 \n", "45 In cluster: 1544851 With photo-z: 821643 Fraction: 0.532 \n", "46 In cluster: 59560 With photo-z: 31984 Fraction: 0.537 \n", "47 In cluster: 262742 With photo-z: 138687 Fraction: 0.528 \n", "48 In cluster: 101665 With photo-z: 53638 Fraction: 0.528 \n", "49 In cluster: 244467 With photo-z: 0 Fraction: 0.000 \n", "50 In cluster: 652260 With photo-z: 343480 Fraction: 0.527 \n", "51 In cluster: 132263 With photo-z: 110325 Fraction: 0.834 \n", "52 In cluster: 308120 With photo-z: 67676 Fraction: 0.220 \n", "53 In cluster: 403914 With photo-z: 265027 Fraction: 0.656 \n", "54 In cluster: 100154 With photo-z: 48761 Fraction: 0.487 \n", "55 In cluster: 130601 With photo-z: 87171 Fraction: 0.667 \n", "56 In cluster: 227005 With photo-z: 194646 Fraction: 0.857 \n", "57 In cluster: 469861 With photo-z: 95978 Fraction: 0.204 \n", "58 In cluster: 78617 With photo-z: 42306 Fraction: 0.538 \n", "59 In cluster: 758459 With photo-z: 360953 Fraction: 0.476 \n", "60 In cluster: 825268 With photo-z: 602024 Fraction: 0.729 \n", "61 In cluster: 760448 With photo-z: 537822 Fraction: 0.707 \n", "62 In cluster: 277550 With photo-z: 48095 Fraction: 0.173 \n", "63 In cluster: 181867 With photo-z: 107316 Fraction: 0.590 \n", "64 In cluster: 577150 With photo-z: 337920 Fraction: 0.585 \n", "65 In cluster: 894672 With photo-z: 438730 Fraction: 0.490 \n", "66 In cluster: 220939 With photo-z: 117509 Fraction: 0.532 \n", "67 In cluster: 252503 With photo-z: 141510 Fraction: 0.560 \n", "68 In cluster: 157081 With photo-z: 90401 Fraction: 0.576 \n", "69 In cluster: 49981 With photo-z: 42226 Fraction: 0.845 \n", "70 In cluster: 160264 With photo-z: 81633 Fraction: 0.509 \n", "71 In cluster: 250580 With photo-z: 143142 Fraction: 0.571 \n", "72 In cluster: 79103 With photo-z: 58903 Fraction: 0.745 \n", "73 In cluster: 920530 With photo-z: 694813 Fraction: 0.755 \n", "74 In cluster: 178743 With photo-z: 79747 Fraction: 0.446 \n", "75 In cluster: 192506 With photo-z: 107745 Fraction: 0.560 \n", "76 In cluster: 68799 With photo-z: 16737 Fraction: 0.243 \n", "77 In cluster: 262605 With photo-z: 135604 Fraction: 0.516 \n", "78 In cluster: 600712 With photo-z: 533459 Fraction: 0.888 \n", "79 In cluster: 431058 With photo-z: 89156 Fraction: 0.207 \n", "80 In cluster: 36807 With photo-z: 26835 Fraction: 0.729 \n", "81 In cluster: 450012 With photo-z: 65916 Fraction: 0.146 \n", "82 In cluster: 941560 With photo-z: 676561 Fraction: 0.719 \n", "83 In cluster: 416720 With photo-z: 231818 Fraction: 0.556 \n" ] } ], "source": [ "cluster_photoz_fraction = np.ones(NCLUSTERS)\n", "\n", "pz_frac_cat = np.zeros(len(merged))\n", "pz_frac_map = np.zeros(len(dm_hp_ra))\n", "\n", "for ic, cluster in enumerate(np.arange(NCLUSTERS)):\n", " ml_sources = (merged['hp_depth_cluster'] == cluster)\n", " has_photoz = (merged['z1_median'] > -90.)\n", " \n", " in_ml = np.float(ml_sources.sum())\n", " withz = np.float((ml_sources*has_photoz).sum())\n", " \n", " if in_ml > 0:\n", " frac = withz / in_ml \n", " else:\n", " frac = 0.\n", " \n", " cluster_photoz_fraction[ic] = frac\n", " print(\"\"\"{0} In cluster: {1:<6.0f} With photo-z: {2:<6.0f}\\\n", " Fraction: {3:<6.3f}\"\"\".format(cluster, in_ml, withz, frac))\n", " \n", " # Map fraction to catalog positions for reference\n", " where_cat = (merged['hp_depth_cluster'] == cluster)\n", " pz_frac_cat[where_cat] = frac\n", " \n", " # Map fraction back to depth map healpix \n", " where_map = (km.labels_ == cluster)\n", " pz_frac_map[where_map] = frac" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The binary photo-$z$ selection function of the field" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Fig, Ax = plt.subplots(1,1,figsize=(9.5,8))\n", "Sc = Ax.scatter(dm_hp_ra, dm_hp_dec, c=pz_frac_map, cmap=plt.cm.viridis, s=6, vmin=0, vmax=1)\n", "\n", "Ax.set_xlabel('Right Ascension [deg]')\n", "Ax.set_ylabel('Declination [deg]')\n", "Ax.set_title('{0}'.format(FIELD))\n", "CB = Fig.colorbar(Sc)\n", "CB.set_label('Fraction with photo-z estimate')\n", "Fig.savefig('plots/dmu24_{0}_sf_binary_map.png'.format(FIELD), \n", " format='png', bbox_inches='tight', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Add the binary photo-$z$ selection function to output catalog" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "pz_depth_map.add_column(Column(name='pz_fraction', data=pz_frac_map))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## IV - Magnitude dependent photo-z selection functions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The binary selection function gives a broad illustration of where photo-$z$s are available in the field (given the availability of optical datasets etc.). However, the fraction of sources that have an estimate available will depend on the brightness of a given source in the bands used for photo-$z$s.\n", "Furthermore, the quality of those photo-$z$ is also highly dependent on the depth, wavelength coverage and sampling of the optical data in that region.\n", "\n", "To calculate the likelihood of a given source having a photo-$z$ that passes the defined quality selection or be able to select samples of homogeneous photo-$z$ quality, we therefore need to estimate the magnitude (and spatially) dependent selection function." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Defining the photo-$z$ quality criteria\n", "\n", "A key stage in the photo-$z$ estimation methodology is the explicit calibration of the redshift posteriors as a function of magnitude. The benefit of this approach is that by making a cut based on the width of redshift posterior, $P(z)$, we can select sources with a desired estimated redshift precision.\n", "Making this cut based on the full $P(z)$ is impractical. However the main photo-$z$ catalog contains information about the width of the primary and secondary peaks above the 80% highest probability density (HPD) credible interval, we can use this information to determine our redshift quality criteria." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Parse columns to select the available magnitudes within the masterlist:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "40 magnitude columns present in the masterlist.\n" ] } ], "source": [ "filters = [col for col in merged.colnames if col.startswith('m_')]\n", "print('{0} magnitude columns present in the masterlist.'.format(len(filters)))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "scaled_photoz_error = (0.5*(merged['z1_max']- merged['z1_min'])) / (1 + merged['z1_median'])\n", "\n", "photoz_quality_cut = (scaled_photoz_error < 0.2)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To calculate the magnitude dependent selection function in a given masterlist filter, for each of the Healpix clusters we do the following:\n", "1. Find the number of masterlist sources within that cluster that have a measurement in the corresponding filter. (If this is zero - see stage 3B)\n", "2. Calculate the fraction of sources at that magnitude that haThis relation typically follows a form of a sigmoid function the declines towards fainter magnitudes - however depending on the selection being applied it may not start at 1. Similarly, the rate of decline and the turnover point depends on the depth of the optical selection properties of that cluster.\n", "3. \n", " 1. Fit the magnitude dependence using the generalised logistic function (GLF, or Richards' function). Provided with conservative boundary conditions and plausible starting conditions based on easily estimated properties (i.e. the typical magnitude in the cluster and the maximum point), this function is able to describe well almost the full range of measured selection functions.\n", " 2. If no masterlist sources in the cluster have an observation in the filter - all parameters set to zero (with the GLF then returning zero for all magnitudes).\n", "4. Map the parameters estimated for a given healpix cluster back to the healpix belonging to that cluster." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "m_ap_omegacam_z\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "578c015bab95410baa95461c81234ad2", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_omegacam_z\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fd4ee84e774a43d0b38ea83cc0a6dc49", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_omegacam_u\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ebcdeaea6393499ca4dc9f87c1a25a05", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_omegacam_u\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c1ebe61d5fec44e985bb2a4a0910bc9d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_omegacam_g\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c87b1d41bddf4bd6be87cc81c804eb12", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_omegacam_g\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7bd3751192cf422eb4524e3e4cffcd51", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_omegacam_r\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "62850cc107db4b4cb5b84bd1b4529965", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_omegacam_r\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c0a456f1773c44b2a203f70539edc92d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_omegacam_i\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8d39d1f6309e49e8a4f22dad6a73983a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_omegacam_i\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "98675f36380d4b7c92a24b585575ad46", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_gpc1_g\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e0d3ecc00bda43e1bcc4b33be70b4bdd", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_gpc1_g\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7c655b0c6b9f41bfb3882170076e6a12", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_gpc1_r\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "97dacc6ca8a9451a80c3d45d29281b4f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_gpc1_r\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fa9def6960b145b0aa299877447c4385", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_gpc1_i\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0e07686deacd4fe493a51d556ebb2a37", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_gpc1_i\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c67b512a033f4e7781262c1bee21266f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_gpc1_z\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "547094accee545588d4125fa2ccd30c4", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_gpc1_z\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3f9af9e16d3e4ecf9914555b3826595d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_gpc1_y\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "24419140dbca4fa1bb1a944dc08a14d8", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_gpc1_y\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fe30d239ae4748a8affaa49e962e3da7", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_vista_z\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "906149a7d970488082918d8df78dfd72", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_vista_z\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9f7218ce41214d61a551111cf1b0fb6d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_vista_y\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "443c1d20c78b4eb9bfa7d135f91d0f2d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_vista_y\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cc728342f1f844c8b9e9530dac6ee20d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_vista_j\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6f3bde9cec554a89b1109df2b0f6cff7", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_vista_j\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ebd2e42a4aea40e5a79e2ad21aa9905e", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_vista_h\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e6998fa2baf149e0b6e252db5e3af5cc", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_vista_h\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0a8f4f3795984f24a2a971020d83ff42", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_vista_ks\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "994a9a968cc94aa0ae95458039597698", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_vista_ks\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3714ccdde97f480cba96c53eddf69398", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_decam_g\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ad9e4332fefc4208870110c265c628ca", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_decam_g\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4eecaaa3d1ce46b59e8309a6123f21b1", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_decam_r\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "06a1f138ec7d43acb0ba116aca645856", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_decam_r\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3327c4241bbe44ba868af3ab3fe73cae", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_decam_i\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "04ced1e29aaf4e47a53f93f575738a74", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_decam_i\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6290d1e602e04db49c38f14c7e351f75", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_decam_z\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fdd7d617af7547cdae61793c2319c992", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_decam_z\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "76254262aafb45e49d9b8c9a9981a34c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_decam_y\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "16568f170c3c4780ac32986663cfc793", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "m_ap_decam_y\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9eeaf7d38c0648ffb60d12952af29c3f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "for photometry_band in filters:\n", " print(photometry_band)\n", " \n", " pz_frac_cat = np.zeros(len(merged))\n", " pz_M_map = np.zeros((len(dm_hp_ra),6))\n", "\n", " if np.isnan(merged[photometry_band]).sum() < len(merged):\n", " m001, m999 = np.nanpercentile(merged[photometry_band], [0.1, 99.9])\n", "\n", "\n", " counts, binedges = np.histogram(merged[photometry_band], \n", " range=(np.minimum(m001, 17.), np.minimum(m999, 29.)),\n", " bins=10)\n", "\n", " binmids = 0.5*(binedges[:-1] + binedges[1:])\n", "\n", "\n", " with ProgressBar(NCLUSTERS, ipython_widget=True) as bar:\n", " for ic, cluster in enumerate(np.arange(NCLUSTERS)[:]):\n", " ml_sources = (merged['hp_depth_cluster'] == cluster)\n", " has_photoz = (merged['z1_median'] > -90.) * photoz_quality_cut\n", " has_mag = (merged[photometry_band] > -90.)\n", "\n", " in_ml = np.float(ml_sources.sum())\n", " withz = (has_photoz)\n", "\n", " frac = []\n", " frac_upper = []\n", " frac_lower = []\n", "\n", " iqr25_mag = (np.nanpercentile(merged[photometry_band][ml_sources*has_photoz], 25))\n", "\n", " if (ml_sources*has_photoz*has_mag).sum() > 1:\n", " for i in np.arange(len(binedges[:-1])):\n", " mag_cut = np.logical_and(merged[photometry_band] >= binedges[i],\n", " merged[photometry_band] < binedges[i+1])\n", "\n", " if (ml_sources * mag_cut).sum() > 0:\n", " pass_cut = np.sum(ml_sources * withz * mag_cut)\n", " total_cut = np.sum(ml_sources * mag_cut)\n", " frac.append(np.float(pass_cut) / total_cut)\n", "\n", " lower, upper = binom_conf_interval(pass_cut, total_cut)\n", " frac_lower.append(lower)\n", " frac_upper.append(upper)\n", "\n", " else:\n", " frac.append(0.)\n", " frac_lower.append(0.)\n", " frac_upper.append(1.)\n", "\n", " frac = np.array(frac)\n", " frac_upper = np.array(frac_upper)\n", " frac_lower = np.array(frac_lower)\n", "\n", "\n", " model = GLF1D(A=np.median(frac[:5]), K=0., B=0.9, Q=1., nu=0.4, M=iqr25_mag, \n", " bounds={'A': (0,1), 'K': (0,1), 'B': (0., 5.),\n", " 'M': (np.minimum(m001, 17.), np.minimum(m999, 29.)),\n", " 'Q': (0., 10.),\n", " 'nu': (0, None)})\n", "\n", " fit = LevMarLSQFitter()\n", " m = fit(model, x=binmids, y=frac, maxiter=1000,\n", " weights=1/(0.5*((frac_upper-frac) + (frac-frac_lower))), \n", " estimate_jacobian=False)\n", " parameters = np.copy(m.parameters)\n", "\n", " else:\n", " frac = np.zeros(len(binmids))\n", " frac_upper = np.zeros(len(binmids))\n", " frac_lower = np.zeros(len(binmids))\n", "\n", " parameters = np.zeros(6)\n", "\n", " # Map parameters to cluster\n", "\n", " # Map parameters back to depth map healpix \n", " where_map = (km.labels_ == cluster)\n", " pz_M_map[where_map] = parameters\n", "\n", " bar.update()\n", " \n", " \n", " else:\n", " pz_M_map = [np.zeros(6)] * len(dm_hp_ra)\n", " \n", " c = Column(data=pz_M_map, name='pz_glf_{0}'.format(photometry_band), shape=(1,6))\n", "\n", " try:\n", " pz_depth_map.add_column(c)\n", " except:\n", " pz_depth_map.replace_column('pz_glf_{0}'.format(photometry_band), c)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The selection function catalog consists of a set of parameters for the generalised logistic function (GLF, or Richards' function) that can be used to calculate the fraction of masterlist sources that have a photo-$z$ estimate satisfying the quality cut as a function of a given magnitude. e.g.\n", "\n", "$S = \\rm{GLF}(M_{f}, \\textbf{P}_{\\rm{Healpix}})$,\n", "\n", "where $S$ is the success fraction for a given magnitude $M_{f}$ in a given filter, $f$, and $\\textbf{P}_{\\rm{Healpix}}$ corresponds to the set of 6 parameters fit for that healpix.\n", "\n", "\n", "In practical terms, using the GLF function defined in this notebook this would be `S = GLF1D(*P)(M)`. Similarly, to estimate the magnitude corresponding to a desired photo-$z$ completeness one can use the same parameters and the corresponding inverse function: `M = InverseGLF1D(*P)(S)`.\n", "\n", "### Save the photo-$z$ selection function catalog:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "pz_depth_map.write('{0}/photo-z_selection_{1}_{2}.fits'.format(OUT_DIR, FIELD, SUFFIX).lower(), format='fits', overwrite=True)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " ![HELP LOGO](https://avatars1.githubusercontent.com/u/7880370?s=75&v=4)\n", " \n", "**Author**: [Kenneth Duncan](http://dunkenj.github.io)\n", "\n", "The Herschel Extragalactic Legacy Project, ([HELP](http://herschel.sussex.ac.uk/)), is a [European Commission Research Executive Agency](https://ec.europa.eu/info/departments/research-executive-agency_en)\n", "funded project under the SP1-Cooperation, Collaborative project, Small or medium-scale focused research project, FP7-SPACE-2013-1 scheme, Grant Agreement\n", "Number 607254.\n", "\n", "[Acknowledgements](http://herschel.sussex.ac.uk/acknowledgements)\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.3" } }, "nbformat": 4, "nbformat_minor": 2 }