{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PSF normalization\n",
    "\n",
    "Let us assume that we have reduced an observation, for which we have determined the PSF by stacking the flux of point-like sources. The PSF we obtain will not be as high S/N as the instrumental PSF that has been determined by the instrument team. Moreover, it is likely to be fattened due to the some small pointing errors. We need to find out what fraction of a point-like flux the PSF we have determined represent. In order to do this, we use the growth curve of the theoretical PSF that has been determine by the instrument team, and compare it to the growth curve we determine from our PSF.\n",
    "\n",
    "We will first look at a theoretical case, then go practical with an example drawn from the PACS observation of the the XMM-LSS.\n",
    "\n",
    "## 1) Theoretical example. \n",
    "\n",
    "Let us suppose we have a perfect telescope, without any central obscuration and spider to support the secondary. Diffraction theory gives us the shape of a PSF in this case, an Airy function. Let's compute it, and assume the resolution is 10\".\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# import what we will need. \n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "from astropy.io import fits\n",
    "from astropy.table import Table\n",
    "from astropy.io import ascii as asciiread\n",
    "from matplotlib import pyplot as plt\n",
    "from scipy import interpolate \n",
    "from scipy import special\n",
    "from scipy import signal\n",
    "from scipy import fftpack"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Let us perform our computation with a 0.1\" resolution on a 5' field of view\n",
    "resol = 0.1\n",
    "size = 300.\n",
    "# wavelength\n",
    "wavelength = 250e-6\n",
    "# primary aperture = 3.6 m diameter\n",
    "aperture = 3.6 / 2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Ensure we have an odd number of points \n",
    "nbpix = np.ceil(size/resol) // 2 * 2 + 1\n",
    "xcen = int((nbpix - 1) / 2)\n",
    "ycen = int((nbpix - 1) / 2)\n",
    "x = y = (np.arange(nbpix) - xcen)*resol\n",
    "xv, yv = np.meshgrid(x, y, sparse=False, indexing='xy')\n",
    "r = np.sqrt(xv**2+yv**2)\n",
    "# avoid division by 0 problems in the center\n",
    "r[xcen,ycen] = 1e-6\n",
    "# coordinates in fourier\n",
    "q = 2 * np.pi / wavelength * aperture * np.sin(r/3600.*np.pi/180.)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "psf = (2*special.jn(1, q)/q)**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# put back the correct value at center\n",
    "psf[xcen, ycen] = 1.\n",
    "# and normalize the PSF\n",
    "psf = psf/(np.sum(psf)*resol**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.imshow(np.log10(psf))\n",
    "print(r'$\\int\\int$ psf dx dy = {}'.format(np.sum(psf)*resol**2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(y[ycen-500:ycen+500], psf[ycen-500:ycen+500, xcen], label='Without obscuration')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us now suppose that we observe a point source, and our image reconstruction has a ...This will shows a a blurring of the image, with a gaussian of 10\" FWHM. Let's generate this blurring"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "fwhm = 10.\n",
    "sigma = fwhm / 2. / np.sqrt(2. * np.log(fwhm))\n",
    "sigmasq = sigma**2\n",
    "kernel_blur = 1./ 2./ np.pi / sigmasq * np.exp(-(r**2/2./sigmasq))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Check our kernel is properly normalized\n",
    "np.sum(kernel_blur*resol**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# apply the blur\n",
    "psfblur = signal.convolve(psf, kernel_blur, mode='same')*resol**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(y[ycen-500:ycen+500], psf[ycen-500:ycen+500, xcen], label='Original')\n",
    "plt.plot(y[ycen-500:ycen+500], psfblur[ycen-500:ycen+500, xcen], label='With blurring')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see the effect of blurring, the, observed PSF is wider, and we have lost some flux in the central core. Suppose now that we observed this psf with sources of unknown fluxes, so that we re unsure of its scaling, and that a background remain in our observation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "psfobs = psfblur * 2. + 1e-4"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The question is now how to recover the PSF that serve for our observation. For this, we will use the PSFs curve of growth. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "radii = np.arange(0, np.max(r), resol)\n",
    "growth_psf = np.zeros(radii.shape)\n",
    "growth_psfobs = np.zeros(radii.shape)\n",
    "nbpix_psfobs = np.zeros(radii.shape)\n",
    "for i, radius in enumerate(radii):\n",
    "    if ((i % 100) == 0):\n",
    "        print(radius, np.max(radii))\n",
    "    if i == 0:\n",
    "        idj, idi = np.where(r <= radius)\n",
    "        growth_psf[i] = np.sum(psf[idj, idi])*resol**2\n",
    "        growth_psfobs[i] = np.sum(psfobs[idj, idi])*resol**2\n",
    "        nbpix_psfobs[i] =len(idi)\n",
    "    else:\n",
    "        idj, idi = np.where((r > radii[i-1]) & (r <= radius))\n",
    "        growth_psf[i] = growth_psf[i-1]+np.sum(psf[idj, idi])*resol**2\n",
    "        growth_psfobs[i] = growth_psfobs[i-1]+np.sum(psfobs[idj, idi])*resol**2\n",
    "        nbpix_psfobs[i] = nbpix_psfobs[i-1]+len(idi)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(radii, growth_psf, label='PSF')\n",
    "plt.plot(radii, growth_psfobs, label='Observed PSF')\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "plt.ylabel('Encircled flux')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This strongly rising shape of the observed PSF is a sure sign of an non zero background. Let's determine it. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(nbpix_psfobs, growth_psfobs)\n",
    "plt.xlabel('Number of pixels')\n",
    "plt.ylabel('Encircled flux')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When plotted as a function of the intergated area, there is a clear linear relation, that we will fit:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "idx, = np.where(radii > 50)\n",
    "p = np.polyfit(nbpix_psfobs[idx], growth_psfobs[idx], 1)\n",
    "bkg = p[0]/resol**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Correct PSF and curve of growth\n",
    "psfcor = psfobs-bkg\n",
    "growth_psfcor = growth_psfobs - bkg*nbpix_psfobs*resol**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(radii, growth_psf, label='PSF')\n",
    "plt.plot(radii, growth_psfcor, label='Observed PSF')\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "plt.ylabel('Encircled flux')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='direct_ratio'></a> Let's have a look at the ratio of the two:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(radii[1:], growth_psfcor[1:]/growth_psf[1:])\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "plt.ylabel('Ratio of encircled flux')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Due to the different resolution, the ratio is not constant. Let's note the calibration $C(r)$. Let us assume that our observed PSF encirled energy is of the form:\n",
    "\n",
    "$E(r) = \\alpha C(r \\times \\beta)$\n",
    "\n",
    "Where $\\beta$ is the fattening of the PSF. If we differentiate as a function of $r$:\n",
    "\n",
    "$E'(r) = \\alpha \\beta C'(r \\times \\beta)$\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# compute the derivatives\n",
    "deriv_growth_psf = (growth_psf[2:]-growth_psf[0:-2])/(radii[2:]-radii[0:-2])\n",
    "deriv_growth_psfcor  = (growth_psfcor[2:]-growth_psfcor[0:-2])/(radii[2:]-radii[0:-2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(radii[1:-1], deriv_growth_psf)\n",
    "plt.plot(radii[1:-1], deriv_growth_psfcor)\n",
    "plt.xlim([0,60])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Compared with the growth curve plot, the derivative show clear maxima and minima that are out of phase. Findind the positions of the these will tell us if our assumption of homothetical variation is correct."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Find the local minima and maxima of the two curves.\n",
    "# To find a local extremum, we will fit the portion of curve with a degree 3 polynomial, \n",
    "# extract the roots of its derivative and only retain the one that are between the bounds.\n",
    "# This is what the following function does.\n",
    "def local_max(xvalues, yvalues, lower_bound, upper_bound, check_plot=False):\n",
    "    idx,=np.where((xvalues > lower_bound) & (xvalues < upper_bound))\n",
    "    p = np.polyfit(xvalues[idx], yvalues[idx], 3)\n",
    "    delta = (2.*p[1])**2 - 4.*3.*p[0]*p[2]\n",
    "    r1 = (-2*p[1]+np.sqrt(delta))/(2*3*p[0])\n",
    "    r2 = (-2*p[1]-np.sqrt(delta))/(2*3*p[0])\n",
    "    result = r1 if ((r1 > lower_bound) and (r1 < upper_bound)) else r2\n",
    "    if check_plot:\n",
    "        plt.plot(xvalues[idx], yvalues[idx])\n",
    "        plt.plot(xvalues[idx], p[0]*xvalues[idx]**3+p[1]*xvalues[idx]**2+\n",
    "                 p[2]*xvalues[idx]+p[3], '--')\n",
    "        plt.plot(np.array([result, result]), np.array([np.min(yvalues), np.max(yvalues)]), '-')\n",
    "    return result\n",
    "    \n",
    "    \n",
    "max_dpsf_1 = local_max(radii[1:-1], deriv_growth_psf, 3, 10, check_plot=True)\n",
    "max_dpsfcor_1 = local_max(radii[1:-1], deriv_growth_psfcor, 3, 10, check_plot=True)\n",
    "\n",
    "max_dpsf_2 = local_max(radii[1:-1], deriv_growth_psf, 14, 21, check_plot=True)\n",
    "max_dpsfcor_2 = local_max(radii[1:-1], deriv_growth_psfcor, 14, 21, check_plot=True)\n",
    "\n",
    "max_dpsf_3 = local_max(radii[1:-1], deriv_growth_psf, 21, 28, check_plot=True)\n",
    "max_dpsfcor_3 = local_max(radii[1:-1], deriv_growth_psfcor, 21, 28, check_plot=True)\n",
    "\n",
    "max_dpsf_4 = local_max(radii[1:-1], deriv_growth_psf, 28, 35, check_plot=True)\n",
    "max_dpsfcor_4 = local_max(radii[1:-1], deriv_growth_psfcor, 28, 35, check_plot=True)\n",
    "\n",
    "max_dpsf_5 = local_max(radii[1:-1], deriv_growth_psf, 35, 45, check_plot=True)\n",
    "max_dpsfcor_5 = local_max(radii[1:-1], deriv_growth_psfcor, 35, 45, check_plot=True)\n",
    "\n",
    "max_dpsf_6 = local_max(radii[1:-1], deriv_growth_psf, 40, 50, check_plot=True)\n",
    "max_dpsfcor_6 = local_max(radii[1:-1], deriv_growth_psfcor, 40, 50, check_plot=True)\n",
    "\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "\n",
    "# Lets pack all of them, adding the r=0 point. \n",
    "max_dpsf = np.array([0, max_dpsf_1, max_dpsf_2, max_dpsf_3, max_dpsf_4, max_dpsf_5, max_dpsf_6])\n",
    "max_dpsfcor = np.array([0, max_dpsfcor_1, max_dpsfcor_2, max_dpsfcor_3, max_dpsfcor_4, \n",
    "                        max_dpsfcor_5, max_dpsfcor_6])\n",
    "\n",
    "print(max_dpsf,max_dpsfcor)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the plot, we can deduce that our homothetical assumption is not perfect: the spacing increases for the first three (don't forget the point at 0, 0, not shown), is very small for the 4th and 6th, and gets narrower for the 5th and 7th...\n",
    "Let's plot the situation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "plt.plot(max_dpsf, max_dpsfcor, 'o-')\n",
    "p = np.polyfit(max_dpsf[0:3], max_dpsfcor[0:3], 1)\n",
    "plt.plot(max_dpsf, p[0]*max_dpsf+p[1])\n",
    "plt.xlabel('extremum position of theoretical psf [arcsec]')\n",
    "plt.ylabel('extremum position of observed blurred psf [arcsec]')\n",
    "\n",
    "\n",
    "print(p)\n",
    "print((max_dpsfcor[1]-max_dpsfcor[0])/(max_dpsf[1]-max_dpsf[0]))\n",
    "print((max_dpsfcor[2]-max_dpsfcor[0])/(max_dpsf[2]-max_dpsf[0]))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Lets use the data before 20\", corresponding to the central core\n",
    "beta = (max_dpsfcor[2]-max_dpsfcor[0])/(max_dpsf[2]-max_dpsf[0])\n",
    "\n",
    "# lets interpolate at the scaled radius\n",
    "tckpsfcor = interpolate.splrep(radii, growth_psfcor, s=0)\n",
    "interp_growth_psfcor = interpolate.splev(radii*beta, tckpsfcor, der=0)\n",
    "\n",
    "# check interpolation\n",
    "plt.plot(radii*beta, growth_psf)\n",
    "plt.plot(radii, growth_psfcor)\n",
    "plt.plot(radii*beta, interp_growth_psfcor)\n",
    "plt.xlim([0,60])\n",
    "plt.xlabel('radius [arcsec]')\n",
    "plt.ylabel('Encircled flux')\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us check the ratio, using the psf with a corrected radius"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(radii[1:]*beta, interp_growth_psfcor[1:]/growth_psf[1:])\n",
    "plt.xlabel('radius [arcsec]')\n",
    "plt.ylabel('Ratio of encircled flux')\n",
    "plt.xlim([0,60])\n",
    "idx, = np.where(((radii*p[0]) > 0) & ((radii*p[0]) < 60))\n",
    "scale_factor = np.median(interp_growth_psfcor[idx]/growth_psf[idx])\n",
    "print(\"alpha = {:.3f}\".format(scale_factor))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now have a much better looking ratio [compared with the cell where we computed the direct ratio](#the_ratio), and we have a decent determination of the psf scaling. The normalized PSF to use for our observations is then:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "psf_obs_norm = psfcor / scale_factor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print('\\int \\int psf_obs_norm dx dy = {}'.format(np.sum(psf_obs_norm)*resol**2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Indeed, let's look at the encircled energy in the core of our psf:\n",
    "In this example, we have used the derivative of the scale factor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "idj, idi = np.where(r<max_dpsfcor_2)\n",
    "print('central core for observation: {}'.format(np.sum(psf_obs_norm[idj, idi])*resol**2))\n",
    "idj, idi = np.where(r<max_dpsf_2)\n",
    "print('central core for theoretical: {}'.format(np.sum(psf[idj, idi])*resol**2))\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The two agree extremely well. \n",
    "\n",
    "Unfortunately, with real data, it is not always possible as we will see to use the derivative of the curve of growth to derive the factor beta of PSF fattening. For real observation, one can use a brute force approach to try all the reasonable couples alpha, beta and try to match the theoretical psf to the observed one. This is how we will proceed next on real data."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2) Real data: PACS observations\n",
    "\n",
    "We will look at a real stack of point sources in the PACS 100 $\\mathrm{\\mu m}$ ELAIS-N1 observations, and try to find its normalization factor. \n",
    "\n",
    "Let's load the stacked PSF:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f98e9232320>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "stackhd_im = fits.open('../dmu18_HELP-PACS-maps/data/EGS_PACS100_v0.9.fits')\n",
    "stackhd = fits.open('./data/output_data/100um/EGS_PACS100_20161012_stacked_psf_100.fits')\n",
    "psf = stackhd[0].data\n",
    "hd = stackhd[0].header\n",
    "plt.imshow(psf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SIMPLE  =                    T / conforms to FITS standard                      \n",
       "BITPIX  =                  -64 / array data type                                \n",
       "NAXIS   =                    2 / number of array dimensions                     \n",
       "NAXIS1  =                   32                                                  \n",
       "NAXIS2  =                   32                                                  \n",
       "CTYPE1  = 'RA---TAN'                                                            \n",
       "CTYPE2  = 'DEC--TAN'                                                            \n",
       "CDELT1  =      -0.000555555569                                                  \n",
       "CDELT2  =       0.000555555569                                                  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set the resolution of the psf. Because the map is in units of Jy/pixel, this turns out to be:\n",
    "* =1 if psf at same resolution of map\n",
    "* otherwise, should be in factor of map pixel size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "resol= np.abs(stackhd[0].header['CDELT1'])/np.abs(stackhd_im[1].header['CDELT1'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "resol"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's build the growthcurve for our PSF."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# find the brightest pixel, it will be our center.\n",
    "jmax, imax = np.unravel_index(np.argmax(psf), psf.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# build the array of coordinates\n",
    "x = np.arange(hd['NAXIS1'])\n",
    "y = np.arange(hd['NAXIS2'])\n",
    "xv, yv = np.meshgrid(x, y, sparse=False, indexing='xy')\n",
    "xp = (xv-imax)*np.abs(hd['CDELT1'])*3600.\n",
    "yp = (yv-jmax)*np.abs(hd['CDELT2'])*3600.\n",
    "r = np.sqrt(xp**2 + yp**2)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# build the growth curve\n",
    "radii = np.unique(r)\n",
    "encircled_flux = np.zeros(radii.shape)\n",
    "nbpix = np.zeros(radii.shape)\n",
    "for i, radius in enumerate(radii):\n",
    "    idj, idi = np.where(r <= radius)\n",
    "    nbpix[i] =len(idi)\n",
    "    encircled_flux[i] = np.sum(psf[idj, idi])*resol**2\n",
    "    #multiply by ((np.abs(hd['CDELT1'])*3600.)**2)/4.25E10 as map is in units of MJy/sr\n",
    "    #encircled_flux[i] = np.sum(psf[idj, idi])*((np.abs(hd['CDELT1'])*3600.)**2)/4.25E10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-2.0000000484"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hd['CDELT1']*3600."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Encircled flux')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(radii, encircled_flux)\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "plt.ylabel('Encircled flux')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looking at the shape of the encircled flux, it looks like the background level of our PSF is not zero. Let's check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4.404386520385742\n",
      "[[4.36763239 4.40457726 4.41574669 ... 4.52529621 4.35046148 4.34159184]\n",
      " [4.36587954 4.39745665 4.37430096 ... 4.41908455 4.40006971 4.40460062]\n",
      " [4.40069723 4.4095459  4.43114138 ... 4.37970543 4.45459366 4.42327452]\n",
      " ...\n",
      " [4.39033556 4.43188381 4.39797735 ... 4.46299648 4.39450359 4.30911112]\n",
      " [4.38480663 4.41511965 4.39796591 ... 4.42165804 4.39733744 4.4020052 ]\n",
      " [4.44509172 4.38752317 4.40440226 ... 4.37093925 4.37513113 4.38743544]]\n"
     ]
    }
   ],
   "source": [
    "# This is clearly. \n",
    "print(np.median(psf[0:5,:]))\n",
    "\n",
    "print(psf)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Encircled flux')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEKCAYAAAAFJbKyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzt3Xd8VHX2//HXoffeS+gIoSmGZkFERERXxLLiWlDZRXf9ratbBOx9Ude237Usa1nbWpYOotiwropgSUKP1NARCB1Szu+PueiIkGRCJpOZvJ+PRx6Z+7mfO3NuLuTkc8vnmLsjIiJSWOViHYCIiMQXJQ4REYmIEoeIiEREiUNERCKixCEiIhFR4hARkYgocYiISESUOEREJCJKHCIiEpEKsQ4gGho0aOCtW7eOdRgiInFl/vz5W9y9YUH9EjJxtG7dmnnz5sU6DBGRuGJmqwrTT6eqREQkIkocIiISESUOERGJiBKHiIhERIlDREQiosQhIiIRUeIQEZGIKHGIiCQAd+fVuat5Z+HGqH9WQj4AKCJSlqzcsptxk9P4bPn3nN29KacnN47q5ylxiIjEqZzcPJ75ZAUPv7OUSuXLcd/wbozo1TLqn6vEISIShxasy2LspDTS1mZxenJj7h7WlSa1q5TIZytxiIjEkX3Zufz9vWX886Pl1K1Wkcd/1ZOh3ZpgZiUWgxKHiEic+GL594ybnMbyLbu54PgW3HJWZ+pUq1TicShxiIiUcjv3ZTP+zcW8/MVqWtStyoujenNyhwJnP48aJQ4RkVLs3YUbuWVqOpt27mPUSW340+COVKsU21/dShwiIqXQll37uWP6AmamrueYxjV56rLjObZlnViHBShxiIiUKu7O5K/WcvcbC9mzP5c/nt6Ra05pR6UKped5bSUOEZFSYs3WPdw8NZ2Plm7m+FZ1GX9eNzo0rhnrsH5GiUNEJMZy85zn/7eSv729BAPuPKcLl/VtRblyJXeLbSSUOEREYmjpxp3cODGVb9ZsZ8AxDbl3eDea16ka67DypcQhIhID+3NyeWLOdzzxQQY1Klfg0YuOZdixzUr0Qb6iUuIQESlh81dtY+ykVJZt2sWwY5tx29nJ1K9ROdZhFZoSh4hICdm9P4cHZy/h+c9W0rRWFZ69IoWBnaI7k200KHGIiJSAD5du5qbJaazL2stlfVtx45BO1Kgcn7+C4zNqEZE4sW33Ae6euZDJX6+lXcPq/PfqfqS0rhfrsI6KEoeISBS4OzNS13Pn9AVk7c3m9wPbc+2p7alSsXysQztqShwiIsVsfdZebpmSznuLN9GjRW1e+nUfOjetFeuwio0Sh4hIMcnLc16eu5r731xMTl4et5zVmStPbEP5UvogX1FFffITMytvZl+b2cxguY2ZfWFmy8zsNTOrFLRXDpYzgvWtw95jXNC+xMzOiHbMIiKR+m7zLkZM+Jxbp6ZzbMs6vH39Kfz65LYJlzSgBBIH8AdgUdjy/cAj7t4B2AaMCtpHAdvcvT3wSNAPM0sGRgBdgCHAE2YW/ycJRSQhZOfm8ficDM587GMWb9jBAxd058VRvUmqXy3WoUVNVBOHmbUAzgKeDpYNGAhMDLo8D5wbvB4WLBOsPy3oPwx41d33u/sKIAPoHc24RUQKIzVzO+f841MenL2EQZ0b8e6fTuGXKS3j4unvoxHtaxyPAjcCB6d3rA9sd/ecYDkTaB68bg6sAXD3HDPLCvo3Bz4Pe8/wbUREStzeA7k8/M4SnvlkBQ1qVOaflx3PGV2axDqsEhO1xGFmZwOb3H2+mQ042HyYrl7Auvy2Cf+80cBogKSkpIjjFREpjP9lbGHs5DRWb93Dxb2TGHtmJ2pXrRjrsEpUNEccJwLnmNlQoApQi9AIpI6ZVQhGHS2AdUH/TKAlkGlmFYDawNaw9oPCt/mBu08AJgCkpKT8LLGIiByNrD3Z3DdrEa/NW0Pr+tV45Td96deufqzDiomoXeNw93Hu3sLdWxO6uP2+u18CzAEuCLqNBKYFr6cHywTr33d3D9pHBHddtQE6AHOjFbeIyKHeTFvPoEc+ZOJXmVx9Slveur5/mU0aEJvnOMYAr5rZPcDXwDNB+zPAi2aWQWikMQLA3ReY2evAQiAHuNbdc0s+bBEpazbt2Met09KZvWAjyU1r8dwVvejavHasw4o5C/1Rn1hSUlJ83rx5sQ5DROKUu/Pal2u4d9YiDuTkcf2gjvz65DZULF966n5Hg5nNd/eUgvrpyXERkTArt+xm3OQ0Plv+PX3a1GP8+d1p06B6rMMqVZQ4RESAnNw8nv10BQ+/s5SK5cpx3/BujOjVstTW/Y4lJQ4RKfMWrMti7KQ00tZmMahzY+45tytNaleJdVillhKHiJRZ+7Jz+b/3l/HUh8upW60ij/+qJ0O7NUn4J7+PlhKHiJRJc1dsZeykVJZv2c0Fx7fglrM6U6dapViHFReUOESkTNm5L5vxby7m5S9W06JuVV64qjf9OzaMdVhxRYlDRMqM9xZt5Jap6WzYsY9RJ7XhT4M7Uq2Sfg1GSj8xEUl4W3bt584ZC5nx7TqOaVyTJy7pyXFJdWMdVtxS4hCRhOXuTPl6LXfNXMju/TncMKgjvx3QjkoVEvtBvmhT4hCRhJS5bQ83TUnno6Wb6ZlUh/vP706HxjUL3lAKpMQhIgklN8954bOVPDh7CQB3/CKZy/q1TsgSrrGixCEiCWPZxp3cOCmVr1dv55SODbl3eFda1E3cEq6xosQhInHvQE4eT3yQweNzMqhRuQKPXNSDc49trgf5okSJQ0Ti2tertzFmUipLN+7inB7NuO0XyTSoUTnWYSU0JQ4RiUt7DuTwt9lLee5/K2hSqwrPjEzhtM6NYx1WmaDEISJx56Olm7lpShqZ2/Zyad8kxgzpRM0qZavudywpcYhI3Ni2+wD3vLGISV9l0rZBdV6/uh+929SLdVhljhKHiJR67s7M1PXcOWMB2/dkc+2p7fj9wA5UqVg+1qGVSUocIlKqrc/ay61T03l30Sa6Na/NC1f1IblZrViHVaYpcYhIqZSX57zy5WrGz1pMdl4eNw3txFUntqFCgtf9jgdKHCJS6izfvIuxk9OYu2Ir/drWZ/z53WhVX3W/SwslDhEpNbJz8/jXx8t59N1lVK5QjvvP78YvU1rqQb5SRolDREqF9LVZ3DgxlYXrdzCkSxPuGtaFRrVU97s0UuIQkZjal53LI+8u5emPV1CveiWevKQnZ3ZrGuuwJB9KHCISM5999z3jJqey8vs9XJTSkpuGdqZ2NT3IV9opcYhIicvam834Nxfxytw1JNWrxn9+3YcT2jeIdVhSSEocIlKiZi/YwK1T09myaz+j+7flhkEdqVpJD/LFEyUOESkRm3bu447pC5iVtoFOTWry9MgUureoE+uwpAiUOEQkqtydifMzueeNRew9kMtfzjiG0f3bUlEP8sUtJQ4RiZo1W/dw05Q0Pl62hV6t6/LX87rTvlGNWIclR0mJQ0SKXW6e89ynK3jo7aWUM7h7WBcu6dOKcqr7nRCUOESkWC3esIMxk9L4ds12BnZqxD3ndqVZnaqxDkuKkRKHiBSL/Tm5PP5+Bk988B21qlbksRHHck6PZpouJAEpcYjIUZu/aitjJqWRsWkXw49rzq1nJ1OveqVYhyVRosQhIkW2a38OD761mBc+X0Wz2lV57spenHpMo1iHJVEWtfvhzKyKmc01s2/NbIGZ3Rm0tzGzL8xsmZm9ZmaVgvbKwXJGsL512HuNC9qXmNkZ0YpZRApvzpJNDH74Q174fBUj+7Vm9g39lTTKiGiOOPYDA919l5lVBD4xszeBPwKPuPurZvYUMAp4Mvi+zd3bm9kI4H7gIjNLBkYAXYBmwLtm1tHdc6MYu4gcwdbdB7hrxgKmfrOO9o1qMPGafhzfSnW/y5ICRxzBL+5D2wYUtJ2H7AoWKwZfDgwEJgbtzwPnBq+HBcsE60+z0FW1YcCr7r7f3VcAGUDvgj5fRIqXuzPtm7UMevhDZqau57qB7XnjupOUNMqgwow4XjezF4EHgCrB9xSgX0Ebmll5YD7QHngc+A7Y7u45QZdMoHnwujmwBsDdc8wsC6gftH8e9rbh24hICVi3fS83T0ljzpLN9GhZh/vP70anJqr7XVYVJnH0IXTa6H9ATeBl4MTCvHlwOulYM6sDTAE6H65b8P1w9+x5Pu0/YWajgdEASUlJhQlPRAqQl+e89MUq7n9zMXkOt5zVmStPbEN5PchXphUmcWQDe4GqhEYcK9w9L5IPcfftZvYB0BeoY2YVglFHC2Bd0C0TaAlkmlkFoDawNaz9oPBtwj9jAjABICUl5WeJRUQik7FpF2MnpTJv1TZOat+Av57XjZb1qsU6LCkFCnNX1ZeEEkcv4CTgYjObmP8mYGYNg5EGZlYVGAQsAuYAFwTdRgLTgtfTg2WC9e+7uwftI4K7rtoAHYC5hYhbRIogOzePf7y/jKGPfcyyTbt48ILuvDiqt5KG/KAwI45R7j4veL0BGGZmlxViu6bA88F1jnLA6+4+08wWAq+a2T3A18AzQf9ngBfNLIPQSGMEgLsvMLPXgYVADnCt7qgSiY7UzO3cODGVxRt2cla3ptx+TjKNaqrut/yUhf6oz6eD2WEvGLj76qhEVAxSUlJ83rx5BXcUEQD2Hsjl4XeW8MwnK2hYszJ3D+vK4C5NYh2WlDAzm+/uKQX1K8yI4w1+vEhdBWgDLCH0XIWIxLlPM7YwbnIaq7fu4eLeSYw9sxO1q6rutxxZgYnD3buFL5tZT+DqqEUkIiUia082985ayOvzMmldvxqv/KYv/drVj3VYEgcifnLc3b8ys17RCEZESsabaeu5bfoCtu4+wNWnhOp+V6mout9SOAUmDjP7Y9hiOaAnsDlqEYlI1GzasY9bp6Uze8FGkpvW4rkretG1ee1YhyVxpjAjjpphr3MIXfOYFJ1wRCQa3J3XvlzDvbMWsT8njxuHHMNvTlbdbymawlzjuLMkAhGR6Fi5ZTfjJqfx2fLv6d2mHuPP60bbhqr7LUV3xMRhZjM4zNQeB7n7OVGJSESKRU5uHs9+uoKH31lKxXLluHd4Vy7ulaS633LU8htx/K3EohCRYrVw3Q7GTk4lNTOLQZ0bc8+5XWlSWw/ySfHIL3Hc5u6nmdn97j6mxCISkSLbl53L/72/jH9+uJw61Sryj18dx1ndmqrutxSr/BJHUzM7BTjHzF7lkFlq3f2rqEYmIhH5cuVWxkxKZfnm3ZzXszm3npVMXdX9lijId8QBjCU0G+1D/DRxHCzIJCIxtnNfNg+8tYQXP19F8zpVef6q3pzSsWGsw5IEdsTE4e4TgYlmdqu7312CMYlIIb2/eCM3T0lnw459XHlia/48+BiqV45mRWiRwt2Oq6QhUsp8v2s/d85YyPRv19GhUQ0mXnMCx7eqG+uwpIzQnyYicSRU93sdd85YwK79OfzhtA787tR2VK6g6UKk5ChxiMSJtUHd7w+WbObYlnV44ILudGxcs+ANRYpZfg8A1stvQ3ffWvzhiMih8vKcFz9fxQNvhep+33Z2MiNPaK263xIz+Y045vNjHY4kYFvwug6wmlBdDhGJooxNOxkzKY35q7ZxcocG3Ddcdb8l9vK7q6oNgJk9BUx391nB8pmE6oeLSJQcyMnjqQ+/4x/vZ1CtcnkeurAH5/Vsrgf5pFQozDWOXu5+zcEFd3/TzHSnlUiUfLNmO2Mnhep+n929Kbf/ogsNa1aOdVgiPyhM4thiZrcALxE6dXUp8H1UoxIpg/YcyOGht5fy3KcraFSzCv+6PIXTkxvHOiyRnylM4rgYuB2YQihxfBS0iUgx+TRjC2Mnp7Jm615+1SdU97tWFdX9ltKpMA8AbgX+YGY13H1XCcQkUmZk7cnmnjcW8t/5mbRpUJ1XR/elb1vV/ZbSrTClY08AngZqAElm1gO42t1/F+3gRBLZm2nruXXaArbtOcBvB7TjD6d1UN1viQuFOVX1CHAGMB3A3b81s/5RjUokgW3csY/bgrrfXZrV4t9Xqu63xJdCPTnu7msOuQ0wNzrhiCSu8LrfB3LyGDOkE785uQ0VVPdb4kxhEsea4HSVm1kl4DpgUXTDEkks4XW/+7Spx/jzu9OmQfVYhyVSJIVJHNcAjwHNgUzgbeDaaAYlkihycvN45pNQ3e9K5ctx3/BujOjVUnW/Ja4V5q6qLcAlJRCLSEJZuG4HYyalkrY2i9OTG3P3MNX9lsSQ3ySH/0fouY3DcvfrohKRSJw7tO7347/qydBuTTRdiCSM/EYc80osCpEEMXfFVsZODtX9vuD4FtxyVmfqVFPdb0ks+U1y+HxJBiISz3buy+b+txbz0ueraVG3Ki9c1Zv+qvstCaowDwC+A1zo7tuD5brAq+5+RrSDE4kH7y3ayC1TQ3W/rzqxDX8a3FF1vyWhFeZfd8ODSQPA3beZWaMoxiQSF7YEdb9nfLuOjo1r8MQlJ3Bckup+S+IrTOLINbMkd18NYGatyOeiuUiic3emfrOWu2YsZNf+HG4Y1JHfDmhHpQp6kE/KhsIkjpuBT8zsw2C5PzC6oI3MrCXwAtAEyAMmuPtjQUna14DWwErgl8Eoxgg9LzIU2ANc4e5fBe81ErgleOt7dP1FYiVz2x5umZrOB0s2c1xSHe4/X3W/pezJN3EEv8wXAD2BvoRKx94QPNtRkBzgT+7+lZnVBOYH10uuAN5z9/FmNhYYC4wBzgQ6BF99gCeBPkGiuR1IITTSmW9m0919W8R7K1JEeXnOC5+t5IHZSwC4/RfJXN5Pdb+lbMo3cbi7m9lUdz8emBnJG7v7emB98HqnmS0i9PT5MGBA0O154ANCiWMY8IK7O/C5mdUxs6ZB33eC6d0PXqwfArwSSTwiRbVs407GTErlq9Xb6d+xIfcN70qLuqr7LWVXYU5VfW5mvdz9y6J+iJm1Bo4DvgAaB0kFd18fdqG9ObAmbLPMoO1I7SJRdWjd74d/2YPhx6nut0hhEsepwNVmtgrYTeh0lbt798J8gJnVACYB17v7jnz+0x1uhefTfujnjCa49pKUlFSY0ESO6Js12xkzMZUlG0N1v+84pwsNaqjutwgULnGcWdQ3N7OKhJLGy+4+OWjeaGZNg9FGU2BT0J4JtAzbvAWwLmgfcEj7B4d+lrtPACYApKSk6K4vKZJD634/fXkKg1T3W+Qnjnj/oJnVCl7uPMJXvoIL688Ai9z94bBV04GRweuRwLSw9sstpC+QFZzSmg0MNrO6wcOHg4M2kWL1ybItnPHoRzzzyQou7p3E23/sr6Qhchj5jTj+A5wNzOfnp4wcaFvAe58IXAakmdk3QdtNwHjgdTMbBawGLgzWzSJ0K24Godtxr4RQzXMzuxs4eI3lroMXykWKQ3jd77YNqvPa6L70Ud1vkSOy0E1MiSUlJcXnzdMcjZI/d+fN9A3cFtT9vrp/W65T3W8pw8xsvrunFNSvMHNVDQfed/esYLkOMMDdpx59mCKxsXHHPm6dms7bCzfStXktnr+qF12aqe63SGEU5uL47e4+5eCCu283s9sBJQ6JO+7Oq1+u4b6g7vfYMzvx65NU91skEoVJHIf7H6WpPyXuhNf97tu2Hn89T3W/RYqiMAlgnpk9DDxO6KL47wldMBeJC4fW/f7red24KEV1v0WKqjCJ4/fArYQmJjTgbeDaaAYlUlwWrMti7KQ00tZmMTi5MXef25XGtVT3W+RoFJg43H03oYkIReLGvuxc/v7eMv750XLqVqvIE5f05MyuqvstUhwKc1dVR+DPhKZB/6G/uw+MXlgiRTd3xVbGTkpl+RbV/RaJhsKcqvov8BTwNJAb3XBEim7nvmzGv7mYl78I1f1+cVRvTu6gut8ixa0wiSPH3Z+MeiQiRyG87veok0J1v6tV0s1/ItFQmP9ZM8zsd8AUYP/BRk37IaVBeN3vYxrX5IlLeqrut0iUFSZxHJyQ8C9hbYWZq0okatydKV+v5e6ZqvstUtIKc1dVm5IIRKSwMrft4eYp6Xy4dDM9g7rfHVT3W6TE5Det+o1hry88ZN190QxK5HBy85x/f7qCwY98xJcrt3LHL5L57zUnKGmIlLD8xvUjwl6PO2TdkCjEInJEyzbu5MKn/scdMxbSq3U93r6hP1ec2IbyevpbpMTld6rKjvD6cMsiUXEgJ48nP/iOx+eE6n4/clEPzj1Wdb9FYim/xOFHeH24ZZFiF173+xc9mnH7L5JV91ukFMgvcfQwsx2ERhdVg9cEy5rsR6Lm0Lrfz4xM4bTOKuEqUlocMXG4u8qgSYn7ZNkWxk1JZc3WvVzaN4kxQzpRs0rFWIclImH0aK2UCll7srl31kJen6e63yKlnRKHxNxb6Ru4dVo6W3cf4HcD2qnut0gpp8QhMbNp5z7umL6AWWkbSG5ai+eu6EXX5qr7LVLaKXFIiXN3Jn0Vmi5kb3YufznjGEb3b0tF1f0WiQtKHFKi1mzdw01T0vh42RZSWtVl/Pndad+oRqzDEpEIKHFIicjLc174bCUPzF6CAXcN68KlfVqp7rdIHFLikKjL2LSLsZNSmbdqG/07NuS+4V1pUbdarMMSkSJS4pCoyc7NY8JHy3ns3WVUrVSehy7swXk9NV2ISLxT4pCoSF+bxY0TU1m4fgdndWvKHed0oWFNTRcikgiUOKRY7cvO5bH3ljHho+XUq16Jpy49niFdm8Q6LBEpRkocUmzmrtjK2EmpLN+ym4tSWnLT0M7UrqbpQkQSjRKHHLVd+3O4/83FvPj5KlrUrcpLo/pwUocGsQ5LRKJEiUOOypwlm7h5chrrd+zjqhPb8OczOlKtkv5ZiSQy/Q+XItm2+wB3z1zI5K/X0qFRDSZecwLHt6ob67BEpAQocUhE3J030tZz+7QFZO3N5rqB7bl2YHsqV9CkhCJlhRKHFNrGHfu4ZWo67yzcSPcWtXnp133o3LRWrMMSkRKmxCEFcnden7eGe95YxIGcPG4a2omrTmxDBU1KKFImRe1/vpk9a2abzCw9rK2emb1jZsuC73WDdjOzv5tZhpmlmlnPsG1GBv2XmdnIaMUrh7f6+z1c8vQXjJmURnLTWsy+vj+j+7dT0hApw6L5v//fwJBD2sYC77l7B+C9YBngTKBD8DUaeBJCiQa4HegD9AZuP5hsJLpy85ynP17O4Ec/JDUzi3uHd+WV3/SldYPqsQ5NRGIsaqeq3P0jM2t9SPMwYEDw+nngA2BM0P6CuzvwuZnVMbOmQd933H0rgJm9QygZvRKtuAWWbNjJmEmpfLNmOwM7NeLe4V1pWrtqrMMSkVKipK9xNHb39QDuvt7MGgXtzYE1Yf0yg7YjtUsUHMjJ44kPMnh8TgY1q1TksRHHck6PZpqUUER+orRcHD/cbybPp/3nb2A2mtBpLpKSkoovsjLimzXbGTMxlSUbdzLs2GbcdnYy9WtoUkIR+bmSThwbzaxpMNpoCmwK2jOBlmH9WgDrgvYBh7R/cLg3dvcJwASAlJSUwyYX+bm9B3J5+J0lPPPJChrVrMLTl6cwKLlxrMMSkVKspG+NmQ4cvDNqJDAtrP3y4O6qvkBWcEprNjDYzOoGF8UHB21SDP733RbOePQj/vXxCkb0TuLtP/ZX0hCRAkVtxGFmrxAaLTQws0xCd0eNB143s1HAauDCoPssYCiQAewBrgRw961mdjfwZdDvroMXyqXoduzL5q+zFvPK3NW0ql+NV37Tl37t6sc6LBGJExa6kSmxpKSk+Lx582IdRqn07sKN3Dw1jc079/Prk9tyw6COVK2k6UJEBMxsvrunFNSvtFwclyjbsms/d85YyIxv19GpSU0mXJZCj5Z1Yh2WiMQhJY4E5+5M+2Ydd85YwK79Ofzx9I5cc0o7KlXQk98iUjRKHAls3fa93DI1nfcXb+K4pDrcf353OjauGeuwRCTOKXEkoLw85z9zVzP+zcXk5jm3nZ3MyBNaU76cHuQTkaOnxJFgVmzZzZhJqcxdsZUT29fnr8O7k1S/WqzDEpEEosSRIHJy83j6kxU88s5SKlUoxwPnd+fClBaaLkREip0SRwJYuG4HN076lvS1Oxic3Ji7z+1K41pVYh2WiCQoJY44tj8nl3+8n8GTH3xHnWoVefxXPRnarYlGGSISVUoccWr+qq3cODGV7zbv5ryezbn1rGTqVq8U67BEpAxQ4ogzu/fn8ODsJTz/2Uqa1a7Kv6/sxYBjGhW4nYhIcVHiiCMfLd3MuMlprN2+l5H9WvGXIZ2oUVmHUERKln7rxIGsPdnc/cZCJs7PpG3D6vz3mn70al0v1mGJSBmlxFHKvZW+nlunLWDr7gP8bkA7rjutA1UqalJCEYkdJY5SatPOfdw+bQFvpm8guWktnruiF12b1451WCIiShyljbszcX4m97yxiL3ZufzljGMY3b8tFctrUkIRKR2UOEqRNVv3cNOUND5etoWUVnUZf3532jeqEeuwRER+QomjFMjLc174bCUPzF6CAXcN68KlfVpRTpMSikgppMQRYxmbdjJmUhrzV22jf8eG3De8Ky3qalJCESm9lDhiJDs3j39++B1/fy+DapXL89CFPTivZ3NNFyIipZ4SRwykZWZx46RUFq3fwVndmnLHOV1oWLNyrMMSESkUJY4StC87l0ffXca/Pl5OveqVeOrS4xnStUmswxIRiYgSRwn5Yvn3jJ2cxootu7kopSU3De1M7WoVYx2WiEjElDiibOe+bO5/azEvfb6aFnWr8tKoPpzUoUGswxIRKTIljiias3gTN09JY/2OfVx1Yhv+fEZHqlXSj1xE4pt+i0XBtt0HuGvmQqZ8vZYOjWow6bcn0DOpbqzDEhEpFkocxWz2gg3cPCWd7XsOcN3A9lw7sD2VK2hSQhFJHEocxWTb7gPcMWMB075ZR3LTWrxwVW+Sm9WKdVgiIsVOiaMYhI8yrh/UgWtPba9JCUUkYSlxHAWNMkSkLFLiKCKNMkSkrFLiiJBGGSJS1ilxROCjpZv503+/ZdtujTJEpOxS4iiEfdm5PPDWEp79dAUdGtXg31f2okszlXEVkbJJiaMASzbs5A+vfs3iDTsZ2a8V44Z2pkpyyyIxAAAJPUlEQVRFPZchImWXEscRuDsvf7Gau2YupFaVCjx3RS9O7dQo1mGJiMRc3CQOMxsCPAaUB5529/HR+qx92bncNi2d1+dl0r9jQx66sIfqZYiIBOIicZhZeeBx4HQgE/jSzKa7+8Li/qz1WXu55qWv+HbNdn4/sD3XD+pIedX+FhH5QVwkDqA3kOHuywHM7FVgGFCsiSN9bRZXPDeXvQdyVWRJROQI4iVxNAfWhC1nAn3CO5jZaGA0QFJSUpE+pFmdqnRuWovbzk6mQ+OaRQxVRCSxxctDCIc7V+Q/WXCf4O4p7p7SsGHDIn1IveqVeHFUHyUNEZF8xEviyARahi23ANbFKBYRkTItXhLHl0AHM2tjZpWAEcD0GMckIlImxcU1DnfPMbP/B8wmdDvus+6+IMZhiYiUSXGROADcfRYwK9ZxiIiUdfFyqkpEREoJJQ4REYmIEoeIiEREiUNERCJi7l5wrzhjZpuBVUXcvAGwpRjDKe3K0v6WpX2FsrW/ZWlfIXr728rdC3yCOiETx9Ews3nunhLrOEpKWdrfsrSvULb2tyztK8R+f3WqSkREIqLEISIiEVHi+LkJsQ6ghJWl/S1L+wpla3/L0r5CjPdX1zhERCQiGnGIiEhElDjCmNkQM1tiZhlmNjbW8RwtM2tpZnPMbJGZLTCzPwTt9czsHTNbFnyvG7Sbmf092P9UM+sZ2z2InJmVN7OvzWxmsNzGzL4I9vW1YHZlzKxysJwRrG8dy7iLwszqmNlEM1scHON+CX5sbwj+Haeb2StmViVRjq+ZPWtmm8wsPawt4mNpZiOD/svMbGS04lXiCITVNT8TSAYuNrPk2EZ11HKAP7l7Z6AvcG2wT2OB99y9A/BesAyhfe8QfI0Gniz5kI/aH4BFYcv3A48E+7oNGBW0jwK2uXt74JGgX7x5DHjL3TsBPQjtd0IeWzNrDlwHpLh7V0KzZI8gcY7vv4Ehh7RFdCzNrB5wO6HqqL2B2w8mm2Ln7voKXefpB8wOWx4HjIt1XMW8j9OA04ElQNOgrSmwJHj9T+DisP4/9IuHL0IFvt4DBgIzCVWO3AJUOPQYE5qiv1/wukLQz2K9DxHsay1gxaExJ/CxPVg+ul5wvGYCZyTS8QVaA+lFPZbAxcA/w9p/0q84vzTi+NHh6po3j1EsxS4Yqh8HfAE0dvf1AMH3RkG3eP8ZPArcCOQFy/WB7e6eEyyH788P+xqszwr6x4u2wGbgueDU3NNmVp0EPbbuvhb4G7AaWE/oeM0ncY8vRH4sS+wYK3H8qMC65vHKzGoAk4Dr3X1Hfl0P0xYXPwMzOxvY5O7zw5sP09ULsS4eVAB6Ak+6+3HAbn48lXE4cb2/wSmXYUAboBlQndApm0MlyvHNz5H2rcT2WYnjRwlZ19zMKhJKGi+7++SgeaOZNQ3WNwU2Be3x/DM4ETjHzFYCrxI6XfUoUMfMDhYsC9+fH/Y1WF8b2FqSAR+lTCDT3b8IlicSSiSJeGwBBgEr3H2zu2cDk4ETSNzjC5EfyxI7xkocP0q4uuZmZsAzwCJ3fzhs1XTg4B0XIwld+zjYfnlw10ZfIOvgULm0c/dx7t7C3VsTOnbvu/slwBzggqDboft68GdwQdA/bv4idfcNwBozOyZoOg1YSAIe28BqoK+ZVQv+XR/c34Q8voFIj+VsYLCZ1Q1GaIODtuIX6wtCpekLGAosBb4Dbo51PMWwPycRGqqmAt8EX0MJnet9D1gWfK8X9DdCd5Z9B6QRuoMl5vtRhP0eAMwMXrcF5gIZwH+BykF7lWA5I1jfNtZxF2E/jwXmBcd3KlA3kY8tcCewGEgHXgQqJ8rxBV4hdO0mm9DIYVRRjiVwVbDPGcCV0YpXT46LiEhEdKpKREQiosQhIiIRUeIQEZGIKHGIiEhElDhERCQiShySMMzMzeyhsOU/m9kdxfTe/zazCwruedSfc2Ew0+2cCLaZZWZ1ivh5u4qynZRtShySSPYD55lZg1gHEi6YebmwRgG/c/dTC7uBuw919+2RRyZSNEockkhyCJXUvOHQFYeOGA7+pW1mA8zsQzN73cyWmtl4M7vEzOaaWZqZtQt7m0Fm9nHQ7+xg+/Jm9qCZfRnURrg67H3nmNl/CD2kdWg8Fwfvn25m9wdttxF6aPMpM3vwkP4DzOwjM5tiZgvN7CkzKxesW2lmDcysVxBDFTOrbqHaFV2DPn8Ji/HOw8TTNHj/b4KYTo7sRy9lSYWCu4jElceBVDN7IIJtegCdCc1ltBx42t17W6jw1e+B64N+rYFTgHbAHDNrD1xOaMqHXmZWGfjUzN4O+vcGurr7ivAPM7NmhOpDHE+ohsTbZnauu99lZgOBP7v7vMPE2ZtQrZhVwFvAeYTmqALA3b80s+nAPUBV4CV3TzezwYRqN/Qm9NTxdDPr7+4fhb33rwhNSX5vMEKqFsHPT8oYJQ5JKO6+w8xeIFT0Z28hN/vSg3mbzOw74OAv/jQg/JTR6+6eBywzs+VAJ0LzAXUPG83UJvRL+gAw99CkEegFfODum4PPfBnoT2jakPzMdfflwTavEBqdTDykz12E5l3bR+hnQBDjYODrYLlGEGN44vgSeDaYFHOqu39TQCxShulUlSSiRwldK6ge1pZD8O89mCSvUti6/WGv88KW8/jpH1eHzs9zcCrr37v7scFXG3c/mHh2HyG+w01/XRiH+/xD1SOUGGoSmq/p4Of9NSzG9u7+zE/eKDT66A+sBV40s8uLGKOUAUocknDcfSvwOj+WEQVYSejUEITqOlQswltfaGblgusebQlVXpsN/Db4Sx0z62ihgkr5+QI4JbguUZ5Q5bYPC/H5vYPZm8sBFwGfHKbPBOBW4GV+LJc6G7jKQnVZMLPmZtYofCMza0Wonsm/CM2oHHc1yaXk6FSVJKqHgP8XtvwvYJqZzSU00+iRRgP5WULoF3xj4Bp332dmTxO69vFVMJLZDJyb35u4+3ozG0doSnADZrn7tPy2CXwGjAe6ETrNNCV8ZTBKyHH3/wQJ6X9mNtDd3zazzsBnoRDZBVzKj/UdIDSj8F/MLDtYrxGHHJFmxxWJA2Y2gNBF87NjHYuITlWJiEhENOIQEZGIaMQhIiIRUeIQEZGIKHGIiEhElDhERCQiShwiIhIRJQ4REYnI/wdjAz//EtcVDgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(nbpix, encircled_flux)\n",
    "plt.xlabel('Number of pixels')\n",
    "plt.ylabel('Encircled flux')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "141"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(nbpix)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Lets do a linear fit to the outer part of the curve to determine the backgound\n",
    "p = np.polyfit(nbpix[50:], encircled_flux[50:], 1)\n",
    "bkg = p[0]/resol**2\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "373.0"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nbpix[50]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4.40502458305865\n"
     ]
    }
   ],
   "source": [
    "print(bkg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Lets correct the psf and encircled flux\n",
    "psf = psf - bkg\n",
    "encircled_flux = encircled_flux - bkg * nbpix*resol**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Encircled flux')"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzt3Xl8XHW9//HXJ3uapE3SpqVbmm4UWiylpLRsF0QRVBRQNkVEASuueK+7eF1/Xper4nLdUFZlURBwAxEQBUqhO3Sl+55uWZtmn3x+f8wpDSVJp8vkZOa8n4/HPDLn5MycTw9k3nPO93y/X3N3REQkujLCLkBERMKlIBARiTgFgYhIxCkIREQiTkEgIhJxCgIRkYhTEIiIRJyCQEQk4hQEIiIRlxV2AYkYMmSIV1RUhF2GiEhKWbhw4R53LzvUdikRBBUVFSxYsCDsMkREUoqZbUpkO10aEhGJOAWBiEjEKQhERCJOQSAiEnEKAhGRiFMQiIhEXNKCwMzyzGyemb1kZsvN7OvB+jvNbIOZLQke05JVg4iIHFoy+xG0Aue5e6OZZQPPmdljwe8+6+4PJnHfIhLYtbeFl7fUs7F6H8UDcrhgyjCK8rLZVtfMiu0NlJcOoHpfK40tHcwcN5hB+dlhlyx9LGlB4PHJkBuDxezgoQmSRfpIQ0s7H757IXPXV79m/c0PZ3DG+ME8/cru171mVEk+v7rmVKaMGNTj+3Z2OiuqGtha28wFU4ZhZq+uf3z5DjZWN1FZUcKMitJj+w+SpElqz2IzywQWAhOAn7n7i2b2EeBbZvYV4CngC+7emsw6RNLFC+urWbS5lmmjinl+XTUVQwqYMLSQ8WUFFOUd+CbfHuvko79bxPyNNfzX+cdz5oQhjB1SwOaaJh5etJUnVuzkginDuHjaSBqa28nPyWRgXjZfengpV/xyLt+9bCoDcjLZ1xpjyZY6hhTmsmtvC9vrmlm4qZY9jW0AvHdmORefPILapjb+7+m1LNvWAMCQwhye+/x55GVnhnKc5PBY/It7kndiVgw8DHwCqAZ2ADnArcA6d/9GN6+ZDcwGKC8vP3XTpoR6SoskVXusk/vmbebOORtpaY9RkJvFqWNKuLxyNKeOKTnm++vsdNbubmTp1nqWbqvnwYVbaWzt6HbboUW5jCrJZ+a4wcxdV82SLXX872VTubxydML7e27NHq69Yx6xztd/LuRkZTC6JJ+TRg7i7IllPLBgCws21b667YhBeXz+rScwMC+bD945n3OOL+OM8YO5vHI0JQOyaWjuoC3WSVlR7pEdjG60xzr505LtPLtmN5OOK6JyTClTRw16XQC5O60dnbTHOmluj9HQ3E5dUzv1wc9Yp3Pp9JFkZ/bebNrSHuPx5TuIdTo5WRnkZmWSm5URf2THnw/Mz2Zkcf4x+zceDTNb6O6Vh9yuL4IAwMy+Cuxz9+93WXcu8Bl3v6i311ZWVrrGGpKwtXV0csnP5rCiqoHKMSVUDCmgZl8b8zfUsLe1g+nlxXzo7HG8ZcpxtMc6WbKljhfX13DPi5t4+9ThXH7qaL792Eq21TXT0NzBW086juvOGsvLW+tYUdXAJ86bSGHugZP0vy+r4nuPv8L63fsAyM/O5A2jBnHVjNHcN28zwwbm8Z/nH8/aXY2s3dXIxj37mLu+mq21zQwtyuXLF03mnSePOOx/5476Fqr3tdIec9o6OskwWLurkStnjH71MtB+expbuX/eZqaPKeG0ilKyMjNwd266fwkLN9Wyra6ZrIz4azqCwPjIueP53AWTaGjpYGBe1uveMxGv7NjLDXfPZ29LB3VN7ZQW5FCzL36Wkp1pjC4ZQElBzqsBtGRLHW2xzl7f8wNnVDBlxECa22PkZGaQm931gz6T7EzjB0+sZt6GmkPWd/LoYsoKcxmQk0l+dib5OcEjO5MBOZnkZccf2ZlGTmYG2ZkZZGdlvHY5M4OcLGP4oHwKco/s4k3oQWBmZUC7u9eZWT7wD+C7wEJ3r7L4f/1bgBZ3/0Jv76UgkLC0dXTS0dnJ9roWHli4hV/9ez3fe/dULq8c9eoH2L7WDh5YsIXb52xkc00TZUW51De309bRiRns/xPLzcqgMDeLWeMGg8E/lu+gPXbg7+/E4QO57dpKRhTn88L6aq669QWOH1bIDWeN45TyYsaVFZKZ0fuHZmen097ZSW5W/7gk88qOvTyyZBsZBiUDcli8pY6/vVxFyYBsapvaGVKYy8xxpcwaW8rp4wczYWjRq6/dUtPEltom6praqW1qo6axjep98ceK7fWs272PmWNLufGc8Zw7qYzapnYWbapl4eZattQ0xV+zr52crAwqx5RQWpBDTmYGednxb+3FA3Iozs9mUH423/zrCp5ateuQ/57sTOM775pKZUUJrR2dtLZ30toRiz/viNHa3smKqgbmrN1Dc3snzW0dNLfHaG6L0dwee81/70Td8cEZvHHS0MN+HfSPIJgK3AVkEr9N9Q/u/g0z+ydQBhiwBLjR3Rt7ficFgSSPu7O1tplYpzMgJ5MBuVnEOp3Wjhj/WL6THz25hj2NB5qwTh83mHs/NLPbb7GxTueJFTt4ZPF2RpfmM3PsYGZUlFKQm8n/Pb2WuqZ2rp5ZzsRh8Q+7HfUtPLx4G5OOKyTDjE/cuxgH8rIzX93nqm9emFbX2Ts7nV8/u55VO/YyYWgha3bu5cUNNVTVtwDxMLyichTb65r5zXMbOPjjqSgvi8EFOQwuzOW8E4bysTdOOCZ17WvtYO2uRkoG5DAgN5O2jk7aOjoPfMAHH/ojS/IZO6TgiPez/9JUS1uMlvZO2mLxLxrtHU5bLH7pav+jrcNpj3Uyc2wpQwfmHdH+Qg+CY0lBIMdaa0eMe1/czG/nbmL9nn09bnfqmBIqx5QwrqyAGRWljB1ScESXMhKxeudefvPserIyM9hZ38LllaO58KTjkrKv/sTd2VLTzNOv7OLBhVtZuq0egKtnlvP2qcMpGZATfxRk95sznVShIBDpgbvzxYeWcv/8LZxSXsy7ThlJQW4WTW0xmto6yMyIN/5VDC7gzAmDk/bBL91btaOBjphz0sieb2GVxCQaBCkxMY3I0Yh1OjX72tjT2Mr2umbumruJZ1bv5sPnjOOLbz0x7PLkICccNzDsEiJHQSBpqa2jk5vuX8yCTbVUN7bS9W7IgpxMvvaOyVxzekVo9Yn0JwoCSRvtsU4WbaplRVUDz67Zwz9X7eKSaSMYXTqAIYW5lBXFH1NGDGRAjv7XF9lPfw2SsjZV72NlVQPnTz6O1o4YH7hj/qv3eJcW5OjSj0iCFASSMjo7nSVb63hixU6eXLGTNbvidx1/+vzjmbNuDws21vDNS07iLZOHMbQoV428IglSEEi/9tKWOn76zzU8s2YPEL/2n5lhzBxbylWnlfPkip384InVAPz4qmlcPG1kmOWKpCQFgfRLq3Y08J3HVvGvV3YzKD+bq2aMJi87kykjBnLu8UMZNCA+wNq7p4/k/vlbmDJiIGdPLAu5apHUpCCQfmfO2j3MvnsBOVkZfO7CSVwza8xrRtbsqnhADjeeM76PKxRJLwoC6VceW1rFTfcvYeyQAu6+/jSGHWHXehFJnIJA+o0tNU18/L7FTBtdzO3Xznj18o+IJJcmr5d+46mVO4l1Oj+4/GSFgEgf0hmBhGpLTRMvb61nQG4mjy7dQcXgAVQcxeiOInL4FATS59ydf63ezW/nbuLpV3a9Zqjh684cG15hIhGlIJA+tWbnXr765+U8v66asqJcPvHGCbxlynG0xTppao1xSnlx2CWKRI6CQPrE3pZ2fvLUGu6Ys5EBOZl88+IpXHVa+SHniBWR5FMQSNI9s3o3n3ngJXY3tnJl5Wg+e8EkBhceuwnMReToKAgkKZrbYizYVINhfPzeRQwbmMet769k2mhd+hHpbxQEcszt7w/w0pY6ID5p+6+uOZVxZYUhVyYi3VEQyDFR39TO35ZW8cjibczbWENOZgbfe/dUhg7MpWJwgW4JFenHkhYEZpYHPAPkBvt50N2/amZjgfuBUmARcI27tyWrDkkud+fXz67n+/9YTVtHJ+PLCvjsBZO4eNoIRpUMCLs8EUlAMs8IWoHz3L3RzLKB58zsMeC/gFvc/X4z+yVwPfCLJNYhSbK3pZ3PPvAyf1++g7dMHsYnzpvISSMHah4AkRSTtCBwdwcag8Xs4OHAecB7g/V3AV9DQZByVu/cy42/XcimmiZuftuJ3HD2WAWASIpKahuBmWUCC4EJwM+AdUCdu3cEm2wFNJNIinl2zW5m372Qgtws7rlhJrPGDQ67JBE5CkkNAnePAdPMrBh4GOhuAlnvZh1mNhuYDVBeXp60GuXwbKrex8fvXUx56QANEy2SJvqkW6e71wH/AmYBxWa2P4BGAdt7eM2t7l7p7pVlZZp5qj94YX017/r58wDc+v5TFQIiaSJpQWBmZcGZAGaWD7wZWAk8DVwWbHYt8Kdk1SDHhrtz55wNXP2bFykekM1DHz2DMYN1O6hIukjmpaHhwF1BO0EG8Ad3/6uZrQDuN7P/BywGbktiDXIMfPfvr/DLf6/jzScO45YrT+5x2kgRSU3JvGvoZeCUbtavB05L1n7l2Krd18btczZwybQR/PCKaWRk6M4gkXSjoR+lV39ctJW2jk5uPHe8QkAkTSkIpEdPrdzJL/+9junlxZxw3MCwyxGRJNFYQ/I6expb+e9HlvHYsh0cP6yQb136hrBLEpEkUhDIa/x92Q6+9PBSGls7+OwFk/jQ2ePIydKJo0g6UxBE3K6GFl7YUMO8DdXM21DD6p2NnDRyILdcMY2Jw4rCLk9E+oCCIKI6Yp387Ol1/OSfa4h1OgU5mVRWlHLVjHLeN2uMzgJEIkRBEEGbq5v4zz8sYeGmWi6eNoLrzxrL5OEDydL8wSKRpCCImD8t2cbNDy/DgB9fNY2Lp2nMP5GoUxBEyOqde/nU75dQOaaEW66cpoljRARQEETKD/7xCoU5Wdx6TSUlBTlhlyMi/YQuCkeAu3P/vM08vnwn1589ViEgIq+hM4I0t3ZXIzc/vJQXN9Qwo6KEG84eF3ZJItLPKAjSVEt7jJ8/vZZf/Hsd+dmZfPtdb+DKytEaL0hEXkdBkIbmrN3Dlx9ZxoY9+7hk2ghufvtkyopywy5LRPopBUEa2dPYyrf+tpKHF2+jYvAAfnf9TM6aOCTsskSkn1MQpIHOTuf3C7bwncdW0dTWwSfPm8BH3ziBvOzMsEsTkRSgIEhxm6r38ek/vMSCTbXMHFvKty59AxOGFoZdloikEAVBCtvZ0MJ7f/0ija0d/O9lU7ns1FGYqTFYRA6PgiBFtXbE+MAd86lrauP+2afzhlGDwi5JRFKUgiBFzV1XzcqqBn7ynlMUAiJyVNSzOEX965Xd5GVn8JbJw8IuRURSXNKCwMxGm9nTZrbSzJab2U3B+q+Z2TYzWxI83pasGtKVu/PPVbs4Y/wQ3RkkIkctmZeGOoBPu/siMysCFprZE8HvbnH37ydx32ltw559bK5p4kNnjw27FBFJA0kLAnevAqqC53vNbCWgwe+PgX+9shuAcycNDbkSEUkHfdJGYGYVwCnAi8Gqj5vZy2Z2u5mV9PCa2Wa2wMwW7N69uy/KTAlba5u4d95mJgwtZHSp5hMQkaOX9CAws0Lgj8Cn3L0B+AUwHphG/IzhB929zt1vdfdKd68sKytLdpkp4fHlO3jbj59lZ30LN7/9xLDLEZE0kdTbR80sm3gI3OPuDwG4+84uv/818Ndk1pAOWjtifPvRVdz5/EamjhrE/71nOuWDdTYgIsdG0oLA4l1cbwNWuvsPu6wfHrQfAFwKLEtWDelg4559fPy+RSzb1sD1Z43l8xeeQE6W7voVkWMnmWcEZwLXAEvNbEmw7kvAe8xsGuDARuDDSawhpT27Zjcf+d0iMjOMX7+/kvPVZ0BEkiCZdw09B3Q38M2jydpnOnlgwRa++NBSJgwt5LYPzGBkcX7YJYlImjrkNQYzm9zNunOTUo3g7vzoydV89sGXOX38YB648XSFgIgkVSIXm/9gZp+3uHwz+ynw7WQXFkXtsU4+9+DL/OjJNbx7+ihu/8AMivKywy5LRNJcIkEwExgNPA/MB7YTv/4vx9Delnauu3M+DyzcyiffNJHvXz6V7Ew1CotI8iXSRtAONAP5QB6wwd07k1pVxMQ6nat/8yLLtzfwvXdP5YoZo8MuSUQiJJGvnPOJB8EM4Czid/08mNSqImb97kZe3lrPf7/9RIWAiPS5RM4Irnf3BcHzHcDFZnZNEmuKnBVVDQDMGj845EpEJIoSCYJdZlZ+0Lp/J6OYqFq+vYGcrAzGl2muYRHpe4kEwd+Id/4y4m0EY4FXgClJrCtSVmxvYNKwIjUOi0goDhkE7v6GrstmNh31Bj5m3J3l2+t5y+Tjwi5FRCLqsL+Cuvsi4g3HcgzsaGihtqmdKSMHhl2KiETUIc8IzOy/uixmANMBTRBwjKzYHm8onjxcQSAi4UikjaCoy/MO4m0Gf0xOOdGzfHsDZnCCgkBEQpJIG8HX+6KQqFqxvYGKwQUU5iZ1aggRkR71+OljZn8hfrdQt9z9nUmpKGKWV9UzdWRx2GWISIT19jX0+31WRUTVN7ezpaaZq2Yc3E1DRKTv9BYEX3H3N5nZd939831WUYQs3lwLwJQRah8QkfD0FgTDzewc4J1mdj8HTTIT3EYqR+HRpVUU5mYxa5yGlhCR8PR6RgB8ARgF/IDXBoED5yWxrrTX2hHj78t28JYpw8jLzgy7HBGJsB6DwN0fBB40s/9292/2YU2R8OzqPTS0dPCOk0eEXYqIRNwhexYrBJLjLy9vp3hANmdNGBJ2KSIScUkb5czMRpvZ02a20syWm9lNwfpSM3vCzNYEP0uSVUN/1dwW48kVO3nrScdpoDkRCV0yP4U6gE+7+4nALOBjZjaZeLvDU+4+EXgqWI6UJ1fuZF9bjHdM1WUhEQlfbx3KSnt7obvXHOL3VUBV8Hyvma0ERgIXA+cGm90F/AuIzO2pizfXcvPDSxkzeAAzdbeQiPQDvd01tJAD8xCUA7XB82JgM/F5CRJiZhXAKcCLwLAgJHD3KjMb2sNrZgOzAcrL06PD1Yvrq7nuzvkMLszlnhtmkplhh36RiEiS9XhpyN3Huvs44HHgHe4+xN0HAxcBDyW6AzMrJD5I3afcvSHR17n7re5e6e6VZWVlib6s33pm9W6uvWMew4vzeeDG0xlVMiDskkREgMTaCGa4+6P7F9z9MeCcRN7czLKJh8A97r4/PHaa2fDg98OBXYdXcur5x/Id3HDXAsYOKeT3s2cxbGBe2CWJiLwqkSDYY2ZfNrMKMxtjZjcD1Yd6kZkZcBuw0t1/2OVXfwauDZ5fC/zpcItOJX9+aTsfuWcRk0cM5P4PzWJwYW7YJYmIvEYiQfAeoAx4OHiUBesO5UzgGuA8M1sSPN4GfAc438zWAOcHy2npDwu2cNP9izl1TAm/u2EmgwZkh12SiMjrJDIfQQ1wk5kVuntjom/s7s9x0PhEXbwp0fdJVXfP3chX/rScsycO4dZrKsnP0TASItI/HfKMwMzOMLMVwIpg+WQz+3nSK0thjy2t4it/Ws75k4fxm2sVAiLSvyVyaegW4AKCdgF3fwn4j2QWlermrNtDUV4WP796OrlZCgER6d8S6lns7lsOWhVLQi1pY0d9CyOL8zV8hIikhEQmyt1iZmcAbmY5wCeBlcktK7Vtr2thRHF+2GWIiCQkka+sNwIfIz48xFZgWrAsPaiqb2b4IPUVEJHUkMhdQ3uAq/uglrTQ3BajtqldQSAiKaO3Qed+SnysoW65+yeTUlGKq6pvBmD4IF0aEpHU0NsZwYI+qyKNVNW3ADC8WGcEIpIaepuq8q6+LCRd7A+CETojEJEUkUiHsifMrLjLcomZPZ7cslJXVV380tBxaiMQkRSRyF1DZe5et3/B3WuBbucQENhe38LgghzystWRTERSQyJBEDOzV2eGMbMx9NKIHHVV9c1qHxCRlJJIh7KbgefM7N/B8n8QzBwmr1dV18LoUk06IyKpo9cgCOYUWA5MJz4BvQH/GfQtkG5sr29m5rhep3sWEelXeg0Cd3cze8TdTwX+2kc1pazG1g72tnSoD4GIpJRE2gheMLMZSa8kDewIOpONUBuBiKSQRNoI3gh82Mw2AfuIXx5yd5+a1MpS0Pa6oDOZzghEJIUkEgRvTXoVaeLA8BI6IxCR1NHbWEMD3b0B2NuH9aS07XUtmMGwgQoCEUkdvZ0R3AtcBCwk3m+g6/zDDoxLYl0pqaq+mSGFueRkaUIaEUkdPX5iuftFwc+x7j4u+Ln/ccgQMLPbzWyXmS3rsu5rZrbNzJYEj7cdm39G/1BV38IIXRYSkRSTyFhDl5rZoC7LxWZ2SQLvfSdwYTfrb3H3acHj0cRL7f+q6lvUUCwiKSeRaxhfdff6/QvBuENfPdSL3P0ZoOYoaksp7k5VnYaXEJHUk0gQdLdNIncb9eTjZvZycOmo5Cjep19paOlgX1tMw0+LSMpJJAgWmNkPzWy8mY0zs1uINyAfiV8A44nPe1wF/KCnDc1stpktMLMFu3fvPsLd9Z1Xbx3VGYGIpJhEguATQBvwe+ABoIUjnLze3Xe6e8zdO4FfA6f1su2t7l7p7pVlZWVHsrs+VaXOZCKSohKZvH4f8IVjsTMzG+7uVcHipcCy3rZPJa9OUam7hkQkxRwyCMzseOAzQEXX7d39vEO87j7gXGCImW0l3sB8rplNI94PYSPw4SOsu9+pqm8mw2BoUW7YpYiIHJZEGn0fAH4J/AaIJfrG7v6eblbflujrU822umaGDcwjK1OdyUQktSQSBB3u/oukV5LCWtpjPL1qFzPHDg67FBGRw5bI19e/mNlHzWy4mZXufyS9shTy0KJt1Da184EzK8IuRUTksCVyRnBt8POzXdZprKGAu3P7nA1MGTGQmWOVjyKSehK5a2hsXxSSqv69ejdrdzXywytOJj6zp4hIaunx0pCZfa7L88sP+t3/JLOoVHLbcxsYWpTLRVNHhF2KiMgR6a2N4Kouz7940O+6G0wuclbv3Muza/bw/tPHaOhpEUlZvX16WQ/Pu1uOpNuf20BedgbvnTkm7FJERI5Yb0HgPTzvbjlyqhtbeWjxNt41fRSlBTlhlyMicsR6ayw+2cwaiH/7zw+eEyxHfhyFe17cTFtHJ9edqbZ0EUltPQaBu2f2ZSGppLUjxt1zN3HupDImDC0MuxwRkaOiFs4j8JeXqtjT2Mr1Z+lsQERSn4LgMLk7v3l2PZOGFXHWhCFhlyMictQUBIdp7rpqVu3Yy3VnVagDmYikBQXBYbrtuQ0MLsjh4mkjwy5FROSYUBAchvW7G3lq1S6unjWGvGy1pYtIelAQHIY75mwkJzODa2apA5mIpA8FQYLqmtp4cOFW3jltBGWahUxE0oiCIEEPLNhKc3tMHchEJO0oCBL07No9TBpWxOQRA8MuRUTkmFIQJKCz01m8uZbpY0rCLkVE5JhLWhCY2e1mtsvMlnVZV2pmT5jZmuBnSnyyrtvdyN6WDqaXF4ddiojIMZfMM4I7ef28BV8AnnL3icBTwXK/t2hzLQCnlKdEbomIHJakBYG7PwPUHLT6YuCu4PldwCXJ2v+xtGhTHYPysxk3pCDsUkREjrm+biMY5u5VAMHPoX28/yOyaHMtp5QXk5GhISVEJP3028ZiM5ttZgvMbMHu3btDq6O+uZ01uxqZrstCIpKm+joIdprZcIDg566eNnT3W9290t0ry8rK+qzAgy3ZUgegIBCRtNXXQfBn4Nrg+bXAn/p4/4dt8eZazODk0YPCLkVEJCmSefvofcBcYJKZbTWz64HvAOeb2Rrg/GC5X1u0uY5Jw4ooyssOuxQRkaTobc7io+Lu7+nhV29K1j6Ptf0dyS6aOiLsUkREkqbfNhb3B+pIJiJRoCDohTqSiUgUKAh6oY5kIhIFCoJeqCOZiESBgqAH6kgmIlGhIOjBS+pIJiIRoSDowSJ1JBORiFAQ9EAdyUQkKhQE3djfkUy3jYpIFCgIuqGOZCISJQqCbqgjmYhEiYKgG+pIJiJRoiDohjqSiUiUKAgOUtfUxtrd6kgmItGhIDjIgwu34g7nnZAS0ymLiBw1BUEXsU7nrrkbqRxTwkkj1ZFMRKJBQdDFUyt3sqWmmQ+eOTbsUkRE+oyCoIs75mxkxKA8LpgyLOxSRET6jIIgsLKqgbnrq3n/GRVkZeqwiEh06BMvcMecDeRlZ3DVjNFhlyIi0qeSNnl9b8xsI7AXiAEd7l4ZRh37VTe28siS7Vx26iiKB+SEWYqISJ8LJQgCb3T3PSHu/1X3zdtMW0cnHzyjIuxSRET6XOQvDbV1dHL33E2cPXEIE4cVhV2OiEifCysIHPiHmS00s9kh1QDAY8uq2LW3let0y6iIRFRYl4bOdPftZjYUeMLMVrn7M103CAJiNkB5eXnSCrl9zkbGDSngnOPLkrYPEZH+LJQzAnffHvzcBTwMnNbNNre6e6W7V5aVJedDetHmWl7aUse1Z1RogDkRiaw+DwIzKzCzov3PgbcAy/q6Doh3ICvKzeLdp44KY/ciIv1CGJeGhgEPm9n+/d/r7n/v6yKq6pt5dGkVHzyjgsLcMG+eEhEJV59/Arr7euDkvt7vwX47dxPuzrW6ZVREIi6St4+2tMe4b95m3nziMEaXDgi7HBGRUEUyCB5ZvI3apnaNMioiQgSDwN25fc4GTjiuiFnjSsMuR0QkdJELgufXVbN6ZyPXnTWWoMFaRCTSIhcEd8zZwOCCHN558oiwSxER6RciFQSbqvfx1KpdvHdmOXnZmWGXIyLSL0QqCO58fiOZZrxv1piwSxER6TciEwR7W9p5YMFW3j51OMMG5oVdjohIvxGZIHhgwVYaWzt0y6iIyEEiEQSxTueuuRuZXl7MtNHFYZcjItKvRCIInl61i03VTTobEBHpRiSC4PY5GzhuYB4XnnRc2KWIiPQ7aR8Eq3Y08Py6at5/xhiyM9P+nysictjS/pPxzjkbycvO4D0zkjfLmYhIKkvrIKjZ18bDi7eIClwmAAAHi0lEQVRx6SkjKSnICbscEZF+Ka2D4L55m2nt6OQDZ6iRWESkJ2kdBGVFuVxROYpJxxWFXYqISL+V1nM0XlE5misqR4ddhohIv5bWZwQiInJoCgIRkYhTEIiIRFwoQWBmF5rZK2a21sy+EEYNIiIS1+dBYGaZwM+AtwKTgfeY2eS+rkNEROLCOCM4DVjr7uvdvQ24H7g4hDpERIRwgmAksKXL8tZg3WuY2WwzW2BmC3bv3t1nxYmIRE0YQWDdrPPXrXC/1d0r3b2yrKysD8oSEYmmMDqUbQW69vIaBWzv7QULFy7cY2abjnB/Q4A9R/jadKNj8Vo6HgfoWByQTscioQnazf11X8aTysyygNXAm4BtwHzgve6+PEn7W+Dulcl471SjY/FaOh4H6FgcEMVj0ednBO7eYWYfBx4HMoHbkxUCIiJyaKGMNeTujwKPhrFvERF5rSj0LL417AL6ER2L19LxOEDH4oDIHYs+byMQEZH+JQpnBCIi0ou0DoIoj2lkZreb2S4zW9ZlXamZPWFma4KfJWHW2FfMbLSZPW1mK81suZndFKyP3PEwszwzm2dmLwXH4uvB+rFm9mJwLH5vZpGZ29XMMs1ssZn9NViO3LFI2yDQmEbcCVx40LovAE+5+0TgqWA5CjqAT7v7icAs4GPB/wtRPB6twHnufjIwDbjQzGYB3wVuCY5FLXB9iDX2tZuAlV2WI3cs0jYIiPiYRu7+DFBz0OqLgbuC53cBl/RpUSFx9yp3XxQ830v8j34kETweHtcYLGYHDwfOAx4M1kfiWACY2Sjg7cBvgmUjgscinYMgoTGNImaYu1dB/MMRGBpyPX3OzCqAU4AXiejxCC6FLAF2AU8A64A6d+8INonS38qPgM8BncHyYCJ4LNI5CBIa00iiw8wKgT8Cn3L3hrDrCYu7x9x9GvHhXU4DTuxus76tqu+Z2UXALndf2HV1N5um/bFI58nrD3tMowjYaWbD3b3KzIYT/0YYCWaWTTwE7nH3h4LVkT0eAO5eZ2b/It5uUmxmWcE34aj8rZwJvNPM3gbkAQOJnyFE7lik8xnBfGBicAdADnAV8OeQawrbn4Frg+fXAn8KsZY+E1z3vQ1Y6e4/7PKryB0PMyszs+LgeT7wZuJtJk8DlwWbReJYuPsX3X2Uu1cQ/3z4p7tfTQSPRVp3KAuS/kccGNPoWyGX1GfM7D7gXOIjKe4Evgo8AvwBKAc2A5e7+8ENymnHzM4CngWWcuBa8JeItxNE6niY2VTiDaCZxL8I/sHdv2Fm44jfUFEKLAbe5+6t4VXat8zsXOAz7n5RFI9FWgeBiIgcWjpfGhIRkQQoCEREIk5BICIScQoCEZGIUxCIiEScgkBEJOIUBJIyzCxmZkvMbJmZ/WV/x6jDeP3XzOwzwfNvmNmbj7KeCjNrDsbt6RfM7Mpg2PW/hl2LpA4FgaSSZnef5u4nER9Z9WNH+kbu/hV3f/IY1LQuGLcnYcEQ6Unh7r8HbkjW+0t6UhBIqppLMCqkmRWa2VNmtsjMlprZq8ONm9nNweRETwKTuqy/08wuC55vNLMhwfPKYPwdzOyc4AxkSTBxSdGhijKzR8xsYTDpy+wu6xuDs5AXgdPNbIaZPR9MEDPPzIrMbErwfImZvWxmE4PXvq/L+l/tDxKLT7y0KHiPp47+kEpUpfOgc5Kmgg/CNxEfPwigBbjU3RuCD/QXzOzPwHTiY8icQvz/9UXAwm7esiefAT7m7nOCkUtbEnjNde5eE4zjM9/M/uju1UABsMzdvxKMfbUKuNLd55vZQKAZuBH4sbvfE2yTaWYnAlcCZ7p7u5n9HLjazB4Dfg38h7tvMLPSw/h3ibyGgkBSSX5wPb6C+Af6E8F6A/7HzP6D+FhCI4FhwNnAw+7eBBCEw+GYA/zQzO4BHnL3rQm85pNmdmnwfDQwEagGYsRHP4X4mUmVu88H2D8ktpnNBW4OJkt5yN3XmNmbgFOJhwpAPvFRUmcBz7j7huA90nqMJEkuXRqSVNIcXI8fA+RwoI3gaqAMODX4/U7iwwpDYmPJd3Dgb2H/63D37xC/3p5P/CzjhN7eJBi47M3A6cFUkIu7vF+Lu8f2b9pdXe5+L/BO4mcHj5vZecG2dwVtI9PcfZK7f62n9xA5EgoCSTnuXg98EvhMMM/AIOITjLSb2RuJBwXAM8ClZpYfXN9/Rw9vuZH4t26Ad+9faWbj3X2pu38XWAD0GgRBHbXu3hSExqwetlsFjDCzGcF+iswsKxj1cr27/4T4ENlTic+lfJmZDQ22LTWzMcTbSM4xs7H71x+iNpEe6dKQpCR3X2xmLxFvA7gH+IuZLQCWEP+gxd0Xmdnvg3WbiA9F3Z2vA7eZ2f6hqff7VBAsMWAF8Nghyvo7cKOZvQy8ArzQQ+1tZnYl8NOgLaGZ+JnElcD7zKwd2AF8I2hv+DLwDzPLANqJt1u8EDRGPxSs3wWcf4j6RLqlYahFjpDF5z/+a3A7a7/RdWz9sGuR1KBLQyJHLgYM6m8dyoCfA7Vh1yKpQ2cEIiIRpzMCEZGIUxCIiEScgkBEJOIUBCIiEacgEBGJuP8P+EdOlxgBVfEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(radii, encircled_flux)\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "plt.ylabel('Encircled flux')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our PSF does now behaves correctly.\n",
    "\n",
    "Now let us compare our growth curve with the encircled energy curve provided by the instrument team. We use the standard growth curve for 100 µm PACS, taken with 20\"/s scan speed. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "f = open('./data/EEF_grn_20.txt', 'r')\n",
    "lines = f.readlines()\n",
    "f.close()\n",
    "radiuseff = np.zeros(len(lines)-3)\n",
    "valeff = np.zeros(len(lines)-3)\n",
    "i = 0\n",
    "for line in lines:\n",
    "    if line[0] != '#':\n",
    "        bits = line.split()\n",
    "        radiuseff[i] = float(bits[0])\n",
    "        valeff[i] = float(bits[1])\n",
    "        i = i+1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f98e8487160>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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TuCEE04AIDs7m4KCAgBuv/12pkyZwpQpU7jzzjubnfuKK64gJyeHU045hcrKytB8UK2I7Kuhdn4MQOWg6RSUVTIi3ZKFMZHi5ufXsHZXaVDPOXlYCjd9LafN/atXr2bmzJmHbPd6vTz77LOkpKRQUFDAkUceyRlnnNFu+/9HH33E6tWrSUhIYNasWXz1q18lIyOD9evX88ADD3D33XcD8Jvf/Ib09HR8Ph/z58/ns88+49prr+X222/n9ddfJyMjo9l5V65cyQMPPMCHH36IqjJnzhyOP/54BgwYwIYNG3j00Ue59957Of/883n66ae5+OKLu/hpdU5k1yx25gHCdu9hAFazMMZ0iaryi1/8gsMPP5yTTjqJnTt3dtg0dfLJJzNw4EDi4+M5++yzeeeddwAYNWoURx55ZONxTzzxBDNmzGD69OmsWbOGtWvXtnved955h7POOovExESSkpI4++yzefvttwEYPXo006ZNA2DmzJls3bq1G39150R2zSI/DwZNYstBJ+eNSk8Mc0DGmEC1VwMIlZycnFb7HR555BH279/PypUriYmJITs7u8PLT1vWOhrWExObyqEtW7bwhz/8gRUrVjBgwAAWLlzY4XlVWx2cG4C4uKarPT0eT482Q0VuzULV7dzOZXtROQAjrWZhjGnHiSeeSHV1Nffee2/jthUrVrBt2zYGDRpETEwMr7/+Otu2bevwXMuXL6eoqIjKykqee+455s6de8gxpaWlJCYmkpqayt69e3nxxaYpe5KTkzl48OAhrznuuON47rnnqKiooLy8nGeffZZjjz22i39x8ERusijaDJXFMDyXbYUVpMbHkBof3NvbjTF9i4jw7LPPsnz5csaOHUtOTg5LlizhtNNOIy8vj9zcXB555BEOO+ywDs91zDHHcMkllzBt2jTOOecccnNzDznmiCOOYPr06eTk5PCtb32rWUJZtGgRp556amMHd4MZM2awcOFCZs+ezZw5c/jOd77D9OnTu//Hd5O0V+XpjXJzczUvLw8+fQyevRKufo9L/l1GSWUty645JtzhGWPasW7dOiZNmhTuMPq81j5nEVmpqodmtABFbs0iPw9ikyDzMLYXVTDSroQyxpiQidxksTMPhk2nVoWdxZV2JZQxxoRQZCaL2krY87nbuV1BXb0yJiMp3FEZY0yfFZnJYvdnUF8HWbPYvN+5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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(radiuseff, valeff, label='Calibration')\n",
    "plt.plot(radii, encircled_flux/np.max(encircled_flux), label='Our PSF')\n",
    "plt.xlim([0, 100])\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "plt.ylabel('Encircled flux')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will work below 10\" where our PSF is well behaved"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f98e83ef9e8>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(radiuseff, valeff, label='Calibration')\n",
    "plt.plot(radii, encircled_flux/np.max(encircled_flux), label='Our PSF')\n",
    "plt.xlim([0, 50])\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "plt.ylabel('Encircled flux')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see that while the calibration curve still rises beyond 30\", our PSF has reached a plateau. Let's note the calibration $C(r)$. Our PSF encirled energy is of the form:\n",
    "\n",
    "$E(r) = \\alpha C(r \\times \\beta)$\n",
    "\n",
    "Where $\\beta$ is the fattening of the PSF.\n",
    "\n",
    "We could take the derivative, but this too noisy. Instead we do a brute force approach"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f98e83d3e48>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(radiuseff, valeff, label='Calibration')\n",
    "plt.plot(radii, encircled_flux/np.max(encircled_flux), label='Our PSF')\n",
    "plt.xlim([0, 50])\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "plt.ylabel('Encircled flux')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "rfactor = np.arange(1.,2., 1e-3)\n",
    "ffactor = np.arange(1.,2., 1e-3)\n",
    "# work with the data points between 2 and 10\"\n",
    "idx, = np.where((radii > 2 ) & (radii < 7))\n",
    "xv = radii[idx]\n",
    "yv = encircled_flux[idx]/np.max(encircled_flux)\n",
    "resid = np.zeros((len(rfactor), len(ffactor)))\n",
    "for i, rf in enumerate(rfactor):\n",
    "    #print(i, rf)\n",
    "    tck = interpolate.splrep(radiuseff*rf, valeff, s=0)\n",
    "    yfit = interpolate.splev(xv, tck, der=0)\n",
    "    for j, ff in enumerate(ffactor):\n",
    "        resid[i, j] = np.sum((yv-yfit*ff)**2)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f98e8339860>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(np.log(resid))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This shows a minimum, with some degeneracy. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rf = 1.000, ff = 1.054, residual = 0.009\n"
     ]
    }
   ],
   "source": [
    "imin = np.argmin(resid)\n",
    "rmin, fmin = np.unravel_index(imin, resid.shape)\n",
    "print(\"rf = {:.3f}, ff = {:.3f}, residual = {:.3f}\".format(rfactor[rmin], ffactor[fmin], resid[rmin, fmin]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f98e8315e10>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEKCAYAAADjDHn2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzt3Xl8XVW99/HPLyfz1CFJSyGdKKV0ANISKFwECgUslUEQoSpIHcCJi/cqPnLFBxFfcvXig17vA9eLMigPKpPFokVEBRmk0BYKtGVoCy0NndMhbTOdnPyeP/ZOeppmOE1ycnKS7/v1Oq+z99rr7PPLbrp/WXvtvZa5OyIiIp3JSHUAIiLS/ylZiIhIl5QsRESkS0oWIiLSJSULERHpkpKFiIh0SclCRES6pGQhIiJdUrIQEZEuZaY6gENVWlrq48aNS3UYIiJpZdmyZdvdvay7n0+7ZDFu3DiWLl2a6jBERNKKma3vyed1GUpERLqkZCEiIl1SshARkS4pWYiISJeULEREpEtJSxZmdo+ZbTWzFR1sNzP7qZmtMbPXzWxGsmIREZGeSWbL4j5gTifbzwMmhq9rgP9OYiwiItIDSUsW7v4ssKOTKhcBv/LAYmComY1KVjwiItJ9qeyzOALYELdeFZYdxMyuMbOlZrZ027ZtfRKciIjsl8pkYe2UeXsV3f0ud69098qysm4/rS4iIt2UymRRBYyOWy8HNqYoFhER6UQqx4ZaCFxrZr8FZgK73X1TCuMREelX3J1ozInGmsOX09TcTFPMaWp2msKyWLMTbSmPNQfbmsP64Wd6KmnJwsx+A8wCSs2sCvgOkAXg7j8DFgFzgTVALfCZZMUiItIed6ehqZnGWDPRpuDk2tiyHmumsSl8b1321vK2daKxYF/RcF8t2xtaPtfmMy3L0SaP23+bWGI9P8n3lqQlC3f/RBfbHfhKsr5fRNJDU3hCDV4xGqLBcn00dlBZQ1NYFm6rj8aVtVOvdR8H1Nv/+Yam3j8ZZ0cyyIoYWZkZ4XIG2S3LmRasRzIozMlsXc7KDD6TkxnUb/lMsN3IzswgMyOokxnJIJJhwXJLWUYGkYiRlZFBZiTYFsnIIDMj+L7MiHHUD3v2c6XdEOUikjzNzd56kq1vilEfDZej4XJTjIbogeV10f31G9qpXx9XP/4E3vIea273vpaEZWYEJ9mcrAi54XtOZkb4ilCYk0lJQbCckxW+Z2YcuJx54Am64xN3y7LtTwBtPmfW3r076U/JQiSNRGPN1DbGqGuMUReNUdvYRF1jjNrwVRdtat3eWtYYlNVGW8qDz7SczIPlGPVNwaWQ7srOzCA3M4PcrEj4CpczIxTlZlJWlBOuByfq3DYn79ys9k7iLXXitsed7LMjGWRGNGpRX1CyEEmS5manNhpjX0MTe+qb2NfQxN42yy2vlvXahpaTetuTfhN10RjR2KH9FZ4dySAvO0J+dqT1PT8rk6H52eTFn9CzIq0n8ANO9HFlOXEn/5bteS2fzcwgI2Ng/kUtASULkTaam519jU3U1Dexpz5KTV0TNXVR9jRE2VMfnuDDE/6ehvgTf4y99VH2NcSCBNDYhCdwbs/MMApzMynIzgxO5uGJfWRxbnCCz2opO3B7fnaEvKy2ZZn7l7Mi+qtbeo2SRV+qWgYLvgDVq4P1KxfAhLNSG9MA1Nzs7KlvYnddlJr6KDV1UWrqmw5Ybk0C9dE2y8G2ri6jRzKMwpzM1ldBToQheVkcMTQ3XM+kKHwvzI2vF7wX5e5fzsnMGLDXuWXgULJItqYGqN8NBWXwpxv2JwqAZ38UvP/pWxBrCJa//BJkZvd9nP2Qu1MXjbGzNsqu2kZ21UbZGb7vqm1kZ7i+O768LtjW1cm+KDxhF+dlUZybxaghuUw6rIji3EyKcrMozsukODeL4rysoF5u8F4UvusEL4ONkkVPRethyS9gzClQfsLB2++/BNY/HySLfdtg5pdgzMmw7rngc/e/cGD9neug7OgDy2JNsOUNOHz6/rLmZsgILzG4Q5qcuNydmromtu2tZ2tNA9v2NrBtTwNb97S817N9T2Nw8q+LdtrhmpcVYVh+FkPzsxman8XkUXkMzc9iaH4Ww/KzGZKX1ZoMWk/+uVkU5mYS0fV1kUOiZNFTS34Bf74RLAM++yS89hvIHRpcXtqzKUgUECQKgGM+AuNPg8OOhfeehe3vwAnz4ZX7wWNwx4lw0R0w/YqgfnMzfK8kWJ70EYhkQdUSqNsJX3kJXvqf4FV8OIw9NdhXyVGQP7xPE0hjUzPb25z4W07+B5TtbWg3AWRnZjCiKIeyohzGlORTMXpoeOLPDk/+8ctBIsjNivTZzycy2Jkn0gPXj1RWVvrSpUtTHcZ+v7wANr8RXG6K1h68vfwkOOObUDQS9myGiee0vx93+Pt/wDO3BuuX/78gOax+En4zL6xkkJUP3gxNdfs/O/LY4NLVB8v2l0Wyg9bMjE/DrBt6/GPWNcbYsLOW96treX9H8KraWUvVzjq21NSzszba7ueG5WcxoiiXsjARtCSEA9dzKc7N1GUdkSQys2XuXtndz6tl0ROLfxa0Do7/JIw6LuiTACiZuL9vYuwpMPHsYPmwYzvelxnM+mZwCerh+fDgFQdu/8JzMKQ8SBYZEVh8Z1C+dytUfApGToEd7wUtleo1Qfm+bTBk9EFf1R53Z2dtlHXV+3i/upZ11ftYX13L+up9vL+jju17Gw6on58dYczwfMqH5XHC2GHtJoTSwhyyM3U3jshAoJZFdyy9B/76PagL53b6+ttQdNiBfQcLr4NXfglffAEOm3Zo+2/cB7dNhOg+mPUtOOnq4LJSDzU3O1v3NByYEHYECWH99lr2NDS11jWDUcW5jCnJZ+zwAkYPz2P08HzGhK/hBdlqCYikkZ62LJQsDlW0Dn44HkZMhtEnwclfhmFje/97dq6DtxbByV865L6HhqYY723fx+ote1mzdf9r/Y591Ef39xdkZhjlw/IYW1LA2JJ8xpYUMK4kn7El+ZQPy1efgMgAostQfe2954L+gtO+DpPPT973DBsHp3y50ypNsWbWbNvLm5tqWL1lL6tbkkL1vtZbRzMMxgzP56gRhZx+dCljWhLC8AIOH5qrh7ZEJCFKFofiD18LLkEVlMFRs/v0q+saY7y5uYaVG2tYtXE3KzfW8NbmPa13FmVmGONLC5g8qogLjhvFUSOLmDiikPGlBWohiEiPKVkkqnotLLsXJp0H5/0QsvKS9lVNsWbe2bKXVzfs5NX3d/Hahl2s3ba3tbUwJC+LqYcXc9UpY5l6+BCmHF7M+NICstRKEJEkUbJIxPp/wL3nQe4QOPNGGDqmV3e/c18jS9bt4NUNu3j1/Z28XrWb2sYYAMMLsqkYPZTzph3G1COGMPXwYo4YmqfOZRHpU0oWXXn7if3POZz29UO/s6kdNfVRXlxbzYtrq1n8bjVvbd4DBJeSph5ezGWVo6kYPZTpY4YyZni+EoOIpJySRWdW/R4e+vT+9SNndXtXm3bX8ZdVW/jzqi0sfreaaMzJzcqgcuxwrj93FDOPLOHYI4aof0FE+iUli440x+Av3w2G8bh2KezbDqOOP6RdRGPNPLVqC/e/uJ4X360G4MjSAj77ofGcNWkEFWOGkpOp5CAi/Z+SRUeqlsKOtXDJL6BkQvBK0O66KPe9sI5fv7yeLTUNHDE0j6+fczTnHTuKo0YUJjFoEZHkULLoyJqnglZFy1AdCaiPxvjlP9Zx5zNr2V0X5Yyjy7j14rHMmjRCo5yKSFpTsujIptdgxFTIG9ZlVXdn4Wsb+fdFb7G5pp5Zk8r4xocnMfXwIX0QqIhI8ilZdKS2GgrLuqy2YUct335sBX9/ZxvHlQ/hJ/MqOPnIkj4IUESk7yhZtOeVXwXDfU+7tMMqTbFm7n1hHbc/9Q5m8J0LpvDpU8bpcpOIDEhKFm3VbIInvhnMB3HcZe1WWfHBbm743eus+KCG2ceM4JaPTuOIocl7oltEJNWULNp6+a5gZNnrXoHhRx6wqbaxiZ/8ZTV3P/8ew/KzueOTM5h77GF6aE5EBjwli3iNtcH4T8d85KBE8fd3tvHtx95gw446PnHSaG6YM5kh+VkpClREpG8pWcR764/B3NYzv9BaVL23ge/9YRWPLd/IkWUFPHjNycxUB7aIDDJKFi2i9fC7zwfL5ScC8MQbm/i3BW+wr6GJ62ZP5MuzJmg4DhEZlJQsWix/IHg/YT6NlsMPHl/FPS+8x/HlQ7jt48dz9Mii1MYnIpJCShYAu96HJ2+ECWdRe+5tXH3fy7ywppr5/zSOb82dTHam5okQkcFNyQLgjYehqY7o3B9zzf2v8uLaan708eO59ITyVEcmItIvJPVPZjObY2Zvm9kaM7uhne1jzOxpM3vVzF43s7nJjKdDKxZA+Unc8txenl+znR987DglChGROElLFmYWAe4AzgOmAJ8wsyltqn0beMjdpwPzgDuTFU+HqtfCljd4q/Rs7l+8nqtPG89llaP7PAwRkf4smS2Lk4A17v6uuzcCvwUualPHgeJweQiwMYnxtG/9PwC4eeUoJo8q5hsfPqbPQxAR6e+S2WdxBLAhbr0KmNmmzs3An83sn4ECoN3xwM3sGuAagDFjenf+a959mrqsYby0ZxgPzFNntohIe5J5ZmxvDAxvs/4J4D53LwfmAveb2UExuftd7l7p7pVlZV2PBJuwaB3+9p/4Q/QEzpg0kn+aUNp7+xYRGUCSmSyqgPiL/+UcfJnpc8BDAO7+IpAL9N0Ze/0LWHQff2g8gW/O0eUnEZGOJDNZLAEmmtl4M8sm6MBe2KbO+8BsADObTJAstiUxpgNEt68DoHTCdCaPKu68sojIIJa0ZOHuTcC1wJPAmwR3Pa00s1vM7MKw2teBq83sNeA3wHx3b3upKmnefXc1MTc++qHpffWVIiJpKakP5bn7ImBRm7Kb4pZXAacmM4bONK1fzAcZozh14shUhSAikhYG7a0/1e+vYmrDctaVX0SGZrcTEenUoE0Wm//8n0Q9wuizPp/qUERE+r3BmSyW3M3Uqt/ydO5ZjB9/VKqjERHp9wbfQILNMZr+/iOWNR/D+6d8P9XRiIikhcHXsnjvWTL3buT+pnP48HEaA0pEJBGDL1m8uZBay+P9EWcyenh+qqMREUkLgy5ZNG55hzdj5Zw1Ta0KEZFEDa5k4U502xrW+0g+PPWwVEcjIpI2BleyqFpKQf1m1uZM5ZjDNKe2iEiiBtXdULGX/odaz6NxyqWY6UE8EZFEDZ6Wxd6t2KrHeCR2OqdNG5/qaERE0srgSRbLfklGc5RHMuYw88jhqY5GRCStDI7LULEovvQeXrLjGXP08eRkRlIdkYhIWhkcLYu3F2F7NvLzhrOZPVkjzIqIHKrBkSze+TN1mUN4xqdz5qRenJZVRGSQGBzJomoJr9skjh89nJLCnFRHIyKSdgZFsmjes4lVdcN0CUpEpJsGfrKIRcloqGGnF3G2koWISLcM/GRRtxMAzx/O0SMLUxyMiEh66jJZmNmUdspmJSWaJKjfvQ2AMUeU66ltEZFuSqRl8ZCZfdMCeWb2X8C/Jzuw3rJyzXsAHHPk2BRHIiKSvhJJFjOB0cA/gCXARuDUZAbVm7a9+SwAk6ZOT3EkIiLpK5FkEQXqgDwgF3jP3ZuTGlVvcefoLYtYkzOV7BK1LEREuiuRZLGEIFmcCHwI+ISZPZLUqHrJltXLONI3sG38hakORUQkrSUyNtTn3H1puLwZuMjMrkxiTL1m50u/ZrhHKJ05L9WhiIiktUSSxVYzG9Om7O/JCKa3DdvwFMtsKieN1SUoEZGeSCRZ/BFwwAj6LMYDbwNTkxhXz1WvZWTj+zxdcgEnZ+iWWRGRnugyWbj7sfHrZjYD+ELSIuoltSv+SD7QdNScVIciIpL2Dnk+C3d/xcxOTEYwvalh1SI2NJcz4ej+3QASEUkHXSYLM/ta3GoGMAPYlrSIekPjPoq3vsyDzXO5snxIqqMREUl7ibQsiuKWmwj6MB5NTji9ZN82Ih5jT9GRFOQMjskARUSSKZE+i+/2RSC9qnEfAEOHDE1xICIiA0OHycLMHie4C6pd7t7lk25mNgf4TyAC/MLdf9BOncuAm8Pves3dP9l12J2L1taQBQwbNrynuxIRETpvWfyoJzs2swhwB3AOUAUsMbOF7r4qrs5E4N+AU919p5mN6Ml3tthWvZ3DgdKSkt7YnYjIoNdZsrjJ3Web2Q/d/Zvd2PdJwBp3fxfAzH4LXASsiqtzNXCHu+8EcPet3fieg2yt3sHhwGFlmm9bRKQ3dJYsRpnZGcCF4Yn+gCfb3P2VLvZ9BLAhbr2KYATbeEcDmNkLBJeqbnb3PyUSeGd27NgRBDCytKe7EhERumhZADcA5cD/4cBk4cBZXey7vcem2/aBZAITgVnh9zxnZtPcfdcBOzK7BrgGYMyYtiOPHKxmdzA7XlHRsC7riohI1zpMFu7+CPCImf1vd/9eN/ZdRTAPRotygrkw2tZZ7O5R4D0ze5sgeSxpE8tdwF0AlZWVHXa6t9i3N8w1OZpGVUSkN3Q5RHk3EwUEJ/yJZjbezLKBecDCNnUeA84EMLNSgstS73bz+1o17KshRgQi2T3dlYiIkNh8Ft3i7k3AtcCTwJvAQ+6+0sxuMbOW226fBKrNbBXwNPANd6/uyffWR2NkRPcRzSwAzbktItIrkvp4s7svAha1KbspbtmBr4WvXrF5dz2FVk8sq6C3dikiMuh19lBep0+0ufuO3g+n5zbtrmc4NXieHsgTEektnbUslrF/HosxwM5weSjwPsG8Fv3O5po6JthurLBfhicikpY67LNw9/HufiRBv8IF7l7q7iXA+cDv+irAQ7V5dwOltpvsISNTHYqIyICRSAf3iWHfAwDu/gRwRvJC6pnNu2optRqyipUsRER6SyId3NvN7NvA/yO4LHUF0KM7lpKpZtd2smmCwl4ZZkpEREisZfEJoAxYEL7KwrJ+qWHX5mChQMlCRKS3JDKfxQ7gq2ZW6O57+yCmHhm+561goeTI1AYiIjKAdNmyMLN/Ch+aWxWuH29mdyY9sm6Ixpo5vvEV6jKLYVRFqsMRERkwErkM9WPgw4T9FO7+GnB6MoPqrh17Gzgt4w22lJ4CGZFUhyMiMmAkNNyHu29oUxRLQiw9VvP+GxxmO9lzxGmpDkVEZEBJ5G6oDWb2T4CHAwJeRzDWU7+T8e7fAGg+8swURyIiMrAk0rL4IvAVgsmMqoCKcL3fKax6ltXNR1A8Uk9vi4j0pkTuhtoOfKoPYumZaB0l1Uv5Y/OZXFqooclFRHpTZwMJ/hcHz2zXyt2vS0pE3bX9HTKbG3jVjuEzOUkdTFdEZNDp7Ky6tM+i6A3RegAyc4swzWMhItKrOptW9Zd9GUiPNQXJIjdP81iIiPS2RB7Ke8rMhsatDzOzJ5MbVjfEGgHIz89PcSAiIgNPIndDlbn7rpYVd98J9L+Bl8KWRUG+WhYiIr0tkWQRM7MxLStmNpZOOr5TxZsaACgoVLIQEeltidw2dCPwvJn9PVw/HbgmeSF1T31dLXnAkILCVIciIjLgdJosLLitaCUwAziZYFrVfw2fvehX6uuDZJGvy1AiIr2u02Th7m5mj7n7CcAf+iimbmmoqwMgv0Ad3CIivS2RPovFZnZi0iPpocaGWgAK1bIQEel1ifRZnAl8wczWA/sILkW5ux+X1MgOUbRBd0OJiCRLIsnivKRH0QuiDXVEPUJxQU6qQxERGXA6Gxuq2N1rgD19GE+3NTXW00AWxblZqQ5FRGTA6axl8WvgfGAZwXMV8QMuOdCvJrmORYNkMSRXgwiKiPS2zsaGOj98T4vJITxaR5QsMiMJTf4nIiKHIJGxoS42syFx60PN7KPJDevQNUcbiJrmsRARSYZE/gz/jrvvblkJx4n6TvJC6qamBmIZ6q8QEUmGRJJFe3X6X8dArIFYhu6EEhFJhkSSxVIzu93MJpjZkWb2Y4JO737FYg00R3QZSkQkGRJJFv8MNAIPAg8D9cBXEtm5mc0xs7fNbI2Z3dBJvUvNzM2sMpH9ticj1ohH1LIQEUmGLi8nufs+oMMTfUfMLALcAZwDVAFLzGyhu69qU68IuA546VC/I16kuQEixT3ZhYiIdKDLZGFmRwPXA+Pi67v7WV189CRgjbu/G+7nt8BFwKo29b4H/Ef4Hd3i7mQ2N2KZalmIiCRDIh3VDwM/A34BxA5h30cAG+LWq4CZ8RXMbDow2t3/YGbdThZ10RhZNNGcldvdXYiISCcSSRZN7v7f3di3tVPWOsOemWUAPwbmd7kjs2sIJ1waM2bMQdtr6prIsSiNWWpZiIgkQyId3I+b2ZfNbJSZDW95JfC5KmB03Ho5sDFuvQiYBjxjZusIJlda2F4nt7vf5e6V7l5ZVlZ20BfV1EfJIUokOy+BsERE5FAl0rK4Knz/RlxZImNDLQEmmtl44ANgHvDJ1h0ED/qVtqyb2TPA9e6+NIGYDrCnPsphRGlQshARSYpE7obq1thQ7t5kZtcCTwIR4B53X2lmtwBL3X1hd/bbnpq6JnKIkpWty1AiIsnQ4WUoM/tfccsfb7Pt1kR27u6L3P1od5/g7t8Py25qL1G4+6zutCoAavfsIseiZBaWdOfjIiLShc76LObFLf9bm21zkhBLt8V2BTddZQ07uPNbRER6rrNkYR0st7eeWjUfAJBTqmQhIpIMnSUL72C5vfWUytwbJovhShYiIsnQWQf38WZWQ9CKyAuXCdf71dNvufs2ESODSNGoVIciIjIgdTZTXqQvA+mJ/PrNbLfhjIz0v5HTRUQGggExB2lxwxZ2RA5+WE9ERHrHgEgWw6Jb2JU9MtVhiIgMWOmfLJqbKWnexp6cw1IdiYjIgJX+yaJ2O9k0UZenzm0RkWRJ/2SxO3ggr7FAyUJEJFnSPlk07ngfgObi8hRHIiIycKV/sqgOkgVKFiIiSZP2yaJp5wZqPYecIg0iKCKSLGmfLNhdxUYvoTg/K9WRiIgMWGmfLDJqPgiSRa6ShYhIsqR9ssjetzFIFnlKFiIiyZLeycKd7MZd7KCYolyNCyUikizpnSyidWR4E3s8X5ehRESSKL2TRUMwavpeyyc/O20GyRURSTvpnSzqg2TRlFWIWf+avE9EZCBJ72QRtixi2cUpDkREZGBL72RRvzt4zylKbRwiIgNceieLsGVhuUNSHIiIyMCW3ski7LPIULIQEUmq9E4WYcsiM1/JQkQkmdI7WdTX0OxGdoGShYhIMqV1smiu381ecinOy0l1KCIiA1paJ4um2l3sIV9DfYiIJFmaJ4vdwVAfGkRQRCSp0jpZNNfVsIc8itWyEBFJqrROFjSoZSEi0hfSOllYwx71WYiI9IGkJgszm2Nmb5vZGjO7oZ3tXzOzVWb2upn91czGHsr+I9E97PE8DU8uIpJkSUsWZhYB7gDOA6YAnzCzKW2qvQpUuvtxwCPAfyT8Be5kRYOWhS5DiYgkVzJbFicBa9z9XXdvBH4LXBRfwd2fdvfacHUxUJ7w3pvqiXhTcBkqR5ehRESSKZnJ4ghgQ9x6VVjWkc8BTyS893BcqMZIIRkZmstCRCSZkvkneXtncG+3otkVQCVwRgfbrwGuARgzZkxQ2DqXhYYnFxFJtmS2LKqA0XHr5cDGtpXM7GzgRuBCd29ob0fufpe7V7p7ZVlZWVBYr2QhItJXkpkslgATzWy8mWUD84CF8RXMbDrwPwSJYush7T1sWZCjQQRFRJItacnC3ZuAa4EngTeBh9x9pZndYmYXhtVuAwqBh81suZkt7GB3B6vfBUBGnqZUFRFJtqTeRuTui4BFbcpuils+u9s7r9kEQFP+Yd3ehYiIJCZ97zmt+YA6ssksLCEajVJVVUV9fX2qoxqwcnNzKS8vJytLz7SIDEZpmyx81wY2NZdQlJdFVVUVRUVFjBs3DjPdRtvb3J3q6mqqqqoYP358qsMRkRRI27GhYrur2OjDKc7Nor6+npKSEiWKJDEzSkpK1HITGcTSNlmw+wM2eilD84PLIkoUyaXjKzK4pWeyiEWJ7NvCJkoY0o/Ghdq8eTPz5s1jwoQJTJkyhblz5/LOO+90WL+wsBCAjRs3cumllwJw3333ce211/Yojp/85CfU1ta2rs+dO5ddu3b1aJ8iMrilZ7Ko2YjhbPQShuZnpzoaILiuf/HFFzNr1izWrl3LqlWruPXWW9myZUuXnz388MN55JFHDum7mpubO9zeNlksWrSIoUOHJrx/EZG20jRZfADAJh/eehkq1Z5++mmysrL44he/2FpWUVHB9OnTmT17NjNmzODYY4/l97///UGfXbduHdOmTWtd37BhA3PmzGHSpEl897vfba0zefJkvvzlLzNjxgw2bNjAl770JSorK5k6dSrf+c53APjpT3/Kxo0bOfPMMznzzDMBGDduHNu3bwfg9ttvZ9q0aUybNo2f/OQnB+z76quvZurUqZx77rnU1dUl50CJSFpKz7uhdgfJ4gMvZWheFtVxm777+EpWbazp1a+bcngx37lgaqd1VqxYwQknnHBQeW5uLgsWLKC4uJjt27dz8sknc+GFF3baB/Dyyy+zYsUK8vPzOfHEE/nIRz5CaWkpb7/9Nvfeey933nknAN///vcZPnw4sViM2bNn8/rrr3Pddddx++238/TTT1NaWnrAfpctW8a9997LSy+9hLszc+ZMzjjjDIYNG8bq1av5zW9+w89//nMuu+wyHn30Ua644opuHC0RGYjStGVRBcAmL+n3c1m4O9/61rc47rjjOPvss/nggw+6vDR1zjnnUFJSQl5eHpdccgnPP/88AGPHjuXkk09urffQQw8xY8YMpk+fzsqVK1m1alWn+33++ee5+OKLKSgooLCwkEsuuYTnnnsOgPHjx1NRUQHACSecwLp163rwU4vIQJO2LYu6SBGeVUBuVuSATV21AJJl6tSp7fY7PPDAA2zbto1ly5aRlZXFuHHjurwFtW2ro2W9oKCgtey9997jRz/6EUuWLGHYsGHMnz+/y/26tzvoLwA5OTmty5FIRJehROQA6dmy2F3FrsyyfnUPQ5pNAAAOTUlEQVQn1FlnnUVDQwM///nPW8uWLFnC+vXrGTFiBFlZWTz99NOsX7++y3099dRT7Nixg7q6Oh577DFOPfXUg+rU1NRQUFDAkCFD2LJlC088sX8qkKKiIvbs2XPQZ04//XQee+wxamtr2bdvHwsWLOC0007r5k8sIoNJeiaLmiq2Rcr6Tec2BH/9L1iwgKeeeooJEyYwdepUbr75ZubOncvSpUuprKzkgQce4JhjjulyXx/60Ie48sorqaio4GMf+xiVlZUH1Tn++OOZPn06U6dO5bOf/ewBCeWaa67hvPPOa+3gbjFjxgzmz5/PSSedxMyZM/n85z/P9OnTe/7Di8iAZ51dmuiPKisrfenHq/mzncLdQ/6ZB79wCm+++SaTJ09OdWgDno6zSPoys2XufvBfnglKv5aFN0PdDj6I9Z/bZkVEBrr0SxaxKADrm4YyNK9/PJAnIjLQpWGyaARgTcMwtSxERPpIGiaLsGURG9bvn7EQERko0jBZBC2LLf1oqA8RkYEuLZNFU14ZjWSpz0JEpI+kYbKIUp8/CqBfPZRXVVXFRRddxMSJE5kwYQJf/epXaWxs7NE+58+f3zoMx4wZM3jxxRcBWLx4MTNnzqSiooLJkydz8803A8Hw5mVlZVRUVFBRUcGnP/3pnv5YIiJAWiaLRvbmjASgpLB/tCzcnUsuuYSPfvSjrF69mnfeeYe9e/dy4403HtJ+YrHYQWW33XYby5cv5wc/+AFf+MIXALjqqqu46667WL58OStWrOCyyy5rrX/55ZezfPlyli9fzq9+9aue/WAiIqE0TBZRdmSOAPpPsvjb3/5Gbm4un/nMZ4BgbKUf//jH3HPPPdTW1h40odH555/PM888AwQTIN10003MnDmzteXQntNPP501a9YAsHXrVkaNGtX6XVOmTEnSTyYiEki/gQQ9xjYrxQyGtzfx0RM3wOY3evc7DzsWzvtBh5tXrlx50PDkxcXFjBkzpvUE35F9+/Yxbdo0brnllk7rPf744xx77LEA/Ou//iuTJk1i1qxZzJkzh6uuuorc3FwAHnzwwdZRar/61a+2JjARkZ5Iv5YFUOUlDM/PJjPSP8J393bnp+ioPF4kEuFjH/tYh9u/8Y1vUFFRwV133cXdd98NwE033cTSpUs599xz+fWvf82cOXNa68dfhlKiEJHekn4tC+D9pmGUFua0v7GTFkCyTJ06lUcfffSAspqaGjZs2MCECRN47bXXDpgGNX4o8dzcXCKRA4dZj3fbbbe1zs8db8KECXzpS1/i6quvpqysjOrq6nY+LSLSO/rHn+aHaG3DkH7TXwEwe/ZsamtrWzuUY7EYX//615k/fz75+fmMGzeO5cuX09zczIYNG3j55Zd79H1//OMfW+emWL16NZFIRHNsi0hSpV+yMGNNbUHHLYsUaBme/OGHH2bixIkcffTR5ObmcuuttwJw6qmnMn78eI499liuv/56ZsyY0aPvu//++5k0aRIVFRVceeWVPPDAA522TkREeir9higfnee1n1nAvBPHcNMFwV1AGjq7b+g4i6Svng5Rnn59FnlDee5/ndllx7GIiPSe9EsWxUdQ0o8uQYmIDAbp12chIiJ9bsAki3Tre0k3Or4ig1tSk4WZzTGzt81sjZnd0M72HDN7MNz+kpmN68735ObmUl1drRNakrg71dXVrU+Ji8jgk7Q+CzOLAHcA5wBVwBIzW+juq+KqfQ7Y6e5Hmdk84IfA5Yf6XeXl5VRVVbFt27beCF3akZubS3l5earDEJEUSWYH90nAGnd/F8DMfgtcBMQni4uAm8PlR4D/a2bmh9hEyMrKYvz48T2PWERE2pXMy1BHABvi1qvCsnbruHsTsBsoSWJMIiLSDclMFu09CNG2xZBIHczsGjNbamZLdalJRKTvJTNZVAGj49bLgY0d1TGzTGAIsKPtjtz9LnevdPfKsrKyJIUrIiIdSWafxRJgopmNBz4A5gGfbFNnIXAV8CJwKfC3rvorli1bttfM3k5CvL2tFNie6iASoDh7TzrECIqzt6VLnJN68uGkJQt3bzKza4EngQhwj7uvNLNbgKXuvhC4G7jfzNYQtCjmJbDrt3syvklfMbOlirP3pEOc6RAjKM7elk5x9uTzSR3uw90XAYvalN0Ut1wPfDyZMYiISM8NmCe4RUQkedIxWdyV6gASpDh7VzrEmQ4xguLsbYMizrSbz0JERPpeOrYsRESkj6VVsuhqYMJUMLPRZva0mb1pZivN7Kth+c1m9oGZLQ9fc/tBrOvM7I0wnqVh2XAze8rMVofvw1Ic46S4Y7bczGrM7F/6w/E0s3vMbKuZrYgra/f4WeCn4e/q62bWs7l0ex7nbWb2VhjLAjMbGpaPM7O6uOP6sxTH2eG/s5n9W3g83zazD6c4zgfjYlxnZsvD8pQcz07OQ733++nuafEiuP12LXAkkA28BkzpB3GNAmaEy0XAO8AUgjGvrk91fG1iXQeUtin7D+CGcPkG4IepjrPNv/lmYGx/OJ7A6cAMYEVXxw+YCzxBMErBycBLKY7zXCAzXP5hXJzj4uv1g+PZ7r9z+H/qNSAHGB+eCyKpirPN9v8D3JTK49nJeajXfj/TqWXROjChuzcCLQMTppS7b3L3V8LlPcCbHDwGVn92EfDLcPmXwEdTGEtbs4G17r4+1YEAuPuzHDzCQEfH7yLgVx5YDAw1s1GpitPd/+zB+GsAiwlGVEipDo5nRy4CfuvuDe7+HrCG4JyQdJ3FaWYGXAb8pi9i6Ugn56Fe+/1Mp2SRyMCEKWXBfBzTgZfComvDJt49qb68E3Lgz2a2zMyuCctGuvsmCH7hgBEpi+5g8zjwP2F/O57Q8fHrz7+vnyX4q7LFeDN71cz+bmanpSqoOO39O/fX43kasMXdV8eVpfR4tjkP9drvZzoli4QGHUwVMysEHgX+xd1rgP8GJgAVwCaCpmqqneruM4DzgK+Y2empDqgjZpYNXAg8HBb1x+PZmX75+2pmNwJNwANh0SZgjLtPB74G/NrMilMVHx3/O/fL4wl8ggP/oEnp8WznPNRh1XbKOj2e6ZQsEhmYMCXMLIvgH+gBd/8dgLtvcfeYuzcDP6ePmsydcfeN4ftWYAFBTFtamp/h+9bURXiA84BX3H0L9M/jGero+PW731czuwo4H/iUhxeuw8s61eHyMoK+gKNTFWMn/8798XhmApcAD7aUpfJ4tnceohd/P9MpWbQOTBj+1TmPYCDClAqvWd4NvOnut8eVx1//uxhY0fazfcnMCsysqGWZoMNzBfsHcyR8/31qIjzIAX+x9bfjGaej47cQ+HR418nJwO6WywGpYGZzgG8CF7p7bVx5mQWzWmJmRwITgXdTE2Wn/84LgXkWTMU8niDOl/s6vjbOBt5y96qWglQdz47OQ/Tm72df99r3sMd/LkEv/1rgxlTHE8b0IYLm2+vA8vA1F7gfeCMsXwiMSnGcRxLcTfIasLLl+BFMNvVXYHX4PrwfHNN8oBoYEleW8uNJkLw2AVGCv8w+19HxI2jm3xH+rr4BVKY4zjUE16hbfkd/Ftb9WPj78BrwCnBBiuPs8N8ZuDE8nm8D56UyzrD8PuCLbeqm5Hh2ch7qtd9PPcEtIiJdSqfLUCIikiJKFiIi0iUlCxER6ZKShYiIdEnJQkREuqRkISIiXVKykLRkZrFwCOgVZva4hUNuH8Lnbzaz68PlW8zs7B7G0zo0dU/205vM7PJwCOo/pDoWSX9KFpKu6ty9wt2nEYwI+pXu7sjdb3L3v/RCTGvdveJQPtDytG8yuPuDwOeTtX8ZXJQsZCB4kXDETDMrNLO/mtkrFkz01DqMvZndaMHEOX8BJsWV32dml4bL68ysNFyuNLNnwuUzbP+ENq+2DJ3SGTN7LBzhd2XcKL+Y2d6wNfMScIqZnWhm/zCz18zsZTMrMrOp4fLycATWieFnr4gr/5+4oSXmhD/za2b2154fUpEDZaY6AJGeCE+WswnGxQGoBy5295rwpL/YzBYSTF4zj2Do5kyCoRiWHcJXXQ98xd1fCEf2rE/gM5919x1mlgcsMbNHPRhkroBggpybwnHO3gIud/cl4QildcAXgf909wfCOhEzmwxcTjB6cNTM7gQ+ZWZPEAy6d7q7v2dmww/h5xJJiJKFpKu8sH9gHMFJ/6mw3IBbw+HXmwlaHCMJ5h1Y4OEgemECORQvALeb2QPA7zxu8LhOXGdmF4fLowkGlasGYgSjg0LQwtnk7ksAPBxW2sxeBG40s/Lw+1ab2WzgBILEA5BHMIroycCzHkwKhLsnOqGQSMJ0GUrSVV3YPzCWYJrdlj6LTwFlwAnh9i1AbrgtkYHQmtj//6Llc7j7Dwiu/+cRtFaO6WwnZjaLYFTSU9z9eODVuP3Vu3uspWp7cbn7rwnm86gDnjSzs8K6vwz7aircfZK739zRPkR6k5KFpDV33w1cB1wfjuc/BNgaXqY5kyCZADwLXGxmeWF/wwUd7HIdwV/vEIwgCoCZTXD3N9z9h8BSoNNkEcax091rw8Rycgf13gION7MTw+8pMrPMcHjrd939pwSjrx5HMGropWY2Iqw73MzGEvTZnBEO3Y0uQ0ky6DKUpD13f9XMXiPok3gAeNzMlhIM0/xWWOcVM3swLFsPPNfB7r4L3G1m32L/9LgA/xImnxiwigOnJW3Pn4AvmtnrBENqL+4g9kYzuxz4r7Bvo46gRXI5cIWZRYHNwC1h/8e3CabGzSAYMvsr7r447ED/XVi+FTini/hEDomGKBfpBRbMe/yH8FbefiO8HHa9u5+f6lgkvekylEjviAFD+ttDecCdwM5UxyLpTy0LERHpkloWIiLSJSULERHpkpKFiIh0SclCRES6pGQhIiJd+v+KEOhDlS6l0QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(radiuseff*rfactor[rmin], valeff, label='Calibration')\n",
    "plt.plot(radii, encircled_flux/np.max(encircled_flux)/ffactor[fmin], label='Our PSF')\n",
    "plt.xlim([0, 200])\n",
    "plt.xlabel('Radius [arcsec]')\n",
    "plt.ylabel('Encircled flux')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9287456528288424"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The two curve overlap\n",
    "psfok = psf/np.max(encircled_flux)/ffactor[fmin]\n",
    "np.sum(psfok)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "psfok is the PSF that a source of flux 1 Jy has in our data, and is to be used for source extraction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "### As units of map in MJy/sr, divide by 1E6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "#psfok=psfok/1.0E6\n",
    "#psfok"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Validation\n",
    "To check PSF is reasonable, lets look at a 100 micron source, e.g. `EGS-PACSxID24-1-11009`. We can see from `EGS_PACS100_v0.9.fits.fits` that it has a flux of 8 mJy. Maximum value in our normalised PSF gives a peak below. \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from astropy.table import Table"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "PACScat=Table.read('./data/EGS_PACSxID24_v1.fits')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "&lt;Column name=&apos;HELP_ID&apos; dtype=&apos;bytes21&apos; length=17582&gt;\n",
       "<table>\n",
       "<tr><td>EGS-PACSxID24-1-00001</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00002</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00003</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00004</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00005</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00006</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00007</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00008</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00009</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00010</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00011</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-00012</td></tr>\n",
       "<tr><td>...</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17571</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17572</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17573</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17574</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17575</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17576</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17577</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17578</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17579</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17580</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17581</td></tr>\n",
       "<tr><td>EGS-PACSxID24-1-17582</td></tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<Column name='HELP_ID' dtype='bytes21' length=17582>\n",
       "EGS-PACSxID24-1-00001\n",
       "EGS-PACSxID24-1-00002\n",
       "EGS-PACSxID24-1-00003\n",
       "EGS-PACSxID24-1-00004\n",
       "EGS-PACSxID24-1-00005\n",
       "EGS-PACSxID24-1-00006\n",
       "EGS-PACSxID24-1-00007\n",
       "EGS-PACSxID24-1-00008\n",
       "EGS-PACSxID24-1-00009\n",
       "EGS-PACSxID24-1-00010\n",
       "EGS-PACSxID24-1-00011\n",
       "EGS-PACSxID24-1-00012\n",
       "                  ...\n",
       "EGS-PACSxID24-1-17571\n",
       "EGS-PACSxID24-1-17572\n",
       "EGS-PACSxID24-1-17573\n",
       "EGS-PACSxID24-1-17574\n",
       "EGS-PACSxID24-1-17575\n",
       "EGS-PACSxID24-1-17576\n",
       "EGS-PACSxID24-1-17577\n",
       "EGS-PACSxID24-1-17578\n",
       "EGS-PACSxID24-1-17579\n",
       "EGS-PACSxID24-1-17580\n",
       "EGS-PACSxID24-1-17581\n",
       "EGS-PACSxID24-1-17582"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "PACScat['HELP_ID']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<i>Table length=1</i>\n",
       "<table id=\"table140294706901064\" class=\"table-striped table-bordered table-condensed\">\n",
       "<thead><tr><th>XID</th><th>RA</th><th>Dec</th><th>F_PACS_100__A4</th><th>F_PACS_100__A5</th><th>F_PACS_100__A6</th><th>F_PACS_100__A7</th><th>F_PACS_100__A8</th><th>F_PACS_100__A10</th><th>F_PACS_100</th><th>Ferr_PACS_100__A4</th><th>Ferr_PACS_100__A5</th><th>Ferr_PACS_100__A6</th><th>Ferr_PACS_100__A7</th><th>Ferr_PACS_100__A8</th><th>Ferr_PACS_100__A10</th><th>Ferr_PACS_100</th><th>F_PACS_100__SKY</th><th>F_PACS_160__A4</th><th>F_PACS_160__A5</th><th>F_PACS_160__A6</th><th>F_PACS_160__A7</th><th>F_PACS_160__A8</th><th>F_PACS_160__A10</th><th>F_PACS_160</th><th>Ferr_PACS_160__A4</th><th>Ferr_PACS_160__A5</th><th>Ferr_PACS_160__A6</th><th>Ferr_PACS_160__A7</th><th>Ferr_PACS_160__A8</th><th>Ferr_PACS_160__A10</th><th>Ferr_PACS_160</th><th>F_PACS_160__SKY</th><th>HELP_ID</th></tr></thead>\n",
       "<thead><tr><th></th><th>deg</th><th>deg</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy / pix</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy</th><th>mJy / pix</th><th></th></tr></thead>\n",
       "<thead><tr><th>int32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>float32</th><th>bytes21</th></tr></thead>\n",
       "<tr><td>2575</td><td>215.00018</td><td>53.09926</td><td>11.426454</td><td>12.391393</td><td>11.650432</td><td>9.094607</td><td>8.623888</td><td>16.266293</td><td>8.361958</td><td>8.119628</td><td>7.4193273</td><td>7.375466</td><td>7.555211</td><td>7.975198</td><td>9.050085</td><td>5.4688787</td><td>0.0</td><td>-0.09106709</td><td>3.546952</td><td>5.152154</td><td>7.15646</td><td>8.790151</td><td>9.369039</td><td>-3.0475616</td><td>12.885257</td><td>10.977354</td><td>10.34544</td><td>9.874907</td><td>9.616633</td><td>9.947265</td><td>6.856733</td><td>0.0</td><td>EGS-PACSxID24-1-11009</td></tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<Table length=1>\n",
       " XID      RA      Dec    ... Ferr_PACS_160 F_PACS_160__SKY        HELP_ID       \n",
       "         deg      deg    ...      mJy         mJy / pix                         \n",
       "int32  float32  float32  ...    float32        float32            bytes21       \n",
       "----- --------- -------- ... ------------- --------------- ---------------------\n",
       " 2575 215.00018 53.09926 ...      6.856733             0.0 EGS-PACSxID24-1-11009"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "PACScat[PACScat['HELP_ID']=='EGS-PACSxID24-1-11009']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Max PSF = 0.0002 Jy/pix, off pixel Max PSF = 0.0001 Jy/pix\n"
     ]
    }
   ],
   "source": [
    "cpix=np.int((hd['NAXIS1']+1)/2.0)\n",
    "\n",
    "print(\"Max PSF = {:.4f} Jy/pix, off pixel Max PSF = {:.4f} Jy/pix\".format(psfok[cpix-1,cpix-1]*0.008,psfok[cpix-2,cpix-2]*0.008))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: hdu=0 does not contain any data, using hdu=1 instead [aplpy.core]\n",
      "WARNING: Cannot determine equinox. Assuming J2000. [aplpy.wcs_util]\n",
      "WARNING: Cannot determine equinox. Assuming J2000. [aplpy.wcs_util]\n"
     ]
    },
    {
     "data": {
      "image/png": "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d9rGjRun5ORk9enTRx06dJAk/fjjj/rss890xx13NFiBAAAAqCW0JScny263a+3ate5Pj/bq1Uv33XefwsLCGrJGAACAZq/WT4+GhYWpV69eHp8eJbABAAA0PL+h7ZtvvtHDDz+skpISRUVFybIsFRYWqk2bNnr44Yd1xRVXNGSdAAAAzZrf0DZ58mRNnz5d3bp182jfsmWLpkyZonfffbfeiwMAAEAlv58ePXLkiFdgk6Tu3bvryJEj9VoUAAAAPPm90xYbG6uxY8cqKSnJ/dujhYWFyszMVL9+/RqsQAAAANQS2tLT07VmzRplZ2dr//79sixLkZGRuuGGG9S/f/+GrBEAAKDZq/XTo/379yegAQAANAF+39NWUVGhN998U0899ZQ2b97sse3ZZ5+t98IAAABwgt/QNnXqVG3atElt27bVjBkz9Nhjj7m3rVq1qkGKAwAAQCW/oS0vL09PPvmkRo0apbffflulpaW68847VVZWxm+PAgAANDC/oe348ePu/w4JCdHf//53XXrppfrrX/+q0tLSBikOAAAAlfyGtq5duyo3N9ej7c4779Tw4cO1d+/eei8MAAAAJ/j99Ojs2bN9tqempio1NbXeCgIAAIA3v6Htww8/9NspNDRU0dHR6tSpU70UBQAAAE9+Q9tHH33kt1N5ebl27typHj16KD09vV4KAwAAwAl+Q1v1r/jwxeVyKSEh4YwXBAAAAG9+P4iwfPlyuVwuvx337NmjRx55pF6KAgAAgCe/d9qKi4uVlJSkK664Ql27dlW7du1UVlamH374QZs2bVK7du103333NWStAAAAzZbf0HbzzTfrxhtv1Pr167V582Z9++23atmypTp16qRZs2bp/PPPb8g6AQAAmrVafzA+ODhYffr0UZ8+fRqqHgAAAPjg9z1tAAAAaDoIbQAAAAYgtAEAABigztD2P//zPzp06JD78cGDBzVnzpx6LQoAAACe6gxtubm5atOmjftxWFiY1w/JAwAAoH7VGdoqKipUVlbmfnz06FGPxwAAAKh/tX7lhyRdffXVuvnmm5WSkiKbzaZ33nlHSUlJDVEbAAAAflVnaLvtttvUpUsXrVu3TpZl6Y477lC/fv0aojYAAAD8qs7QJkmdOnVSSEiI/uu//ktHjhzR4cOH1apVq/quDQAAAL+q8z1tb7/9tu6++25NnTpVkuR0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8vJylZSUeP2L39811tSff1V/ZrRv314Oh0N5eXnq1KmTXnnlFWVkZCg+Pl7R0dEB96167Gsdxo4dqxkzZujo0aMaOXKkdu7cWd+nd1pOdW6a+rWwe/du7dmzR4mJibLb7SosLFRKSop++uknSfIIXcHBwXU+v2ubk+pjVT33qv67Kpz+9re/VXBwsIKCgpSamqqtW7dKklasWKF+/fqpRYsWat++vXr06OHeVl1ERIRsNptCQ0OVkpLi3sffn2E9e/bUokWLFBkZqfvvv1+ZmZknNX+NjdDWhMTExCg/P18FBQUqKytTVlaW+18mdTl48KD7k0g///yzNm/erIsvvlg2m029evXSypUrJVV+irJqzN27d6tbt26aMGGC2rVr53GBNzWnMzd9+/bV2rVrdfDgQR08eFBr165V3759FRERofPOO09btmyRZVnKzMzUwIED5XK5tG/fPvXu3VuTJk1SSUmJSktL6/kMT52/ufG37tX9/PPP7j88CwoKlJ+fr+jo6CY9N5Zl6W9/+5suuugi3XLLLe52u93u/gO4qt5A1fY8sdvt7k8cr1y5Ur179/a6c+JvDZry86+0tNT9vrLS0lJ9+umn6ty5s/vOisvl0nPPPadrr7024L6S/3XYvXu3unTporFjx6pr167atWtXvZ/jqTqduWnq10KXLl20bt065eTkKCcnR1FRUcrIyNDvfve7UxovkDmpTVXAl6TVq1e7r6MOHTpow4YNsixLpaWl+vLLL3XRRRf57W9Zlkf/quvQsixt2bJFrVu3VkREhPbu3av27dtr5MiRGj58uHGfKm3a96ebmZCQEE2dOlVjxoxRRUWFhg8frs6dO2vhwoV66aWX9O9//1tXX321+vfvr5kzZ2rr1q168803NXPmTO3cuVMPP/yw+2W/2267TRdffLEkadKkSbrnnnv01FNP6bLLLlNqaqokadasWfrhhx9kWZZ69+7t8/0NTcXpzE3btm11xx13aMSIEZKk8ePHu++UTJs2TVOmTNHRo0cVGxur2NhYlZeXa9KkSe6XCUeNGqU2bdo05unXyt/c+Fv37Oxsbdu2TRMmTNCmTZv0zDPPKDg4WMHBwXrkkUea/Nx8/vnnWr58uS655BIlJiZKqnyJZOzYsUpLS9PSpUvVoUMHPf300yc1rr/5GjFihCZNmiSHw6GwsDDNmTNHUuUdlPT0dL344ot+16C2cRv7+XfgwAGNHz9eUuXL6cOGDVNsbKwWLFig119/XZLkcDg0fPhwr/P111eS33VYsGCBNmzYoKCgIF188cXu/Zui05mbpnYt3Hvvvdq4caOKiooUGxuru+66y33cMzHOihUrfM5JoJ544glt375dknTBBRdo+vTpkqQbbrhBU6ZM0bBhw2RZllJSUtzzctttt2nGjBmKjIzUxIkTVVRUJMuydOmll+qRRx6RVPky75o1a+RwOHTOOefo0UcflVT5gZiXX35ZISEhOvfcc/WPf/zjpOeiMfGLCAAAAAbg5VEAAAADENoAAAAMQGgDAAAwAKENAADAAIQ2AAAAAxDaADR5l112mfu3AseNG+f1Uz+vvvqqYmJiVFJS4neM/fv367//+78lSRs2bHD/97vvvquEhAQlJCTo2muvdX/9gCTl5uYqLi5ODofD/U3rUuV32qWmpmrw4MFKS0tzf0diWVmZ0tLS5HA4lJqa6v61hW+//VaTJ08+M5MBoNkitAFo8n7zm99o+fLlWrFihcLCwrR48WKP7StWrFBMTIxWrVrld4z58+f7/H6q3//+91q0aJH+9a9/6fbbb9dDDz0kqfL7uaZPn66XXnpJWVlZWrFihb7//ntJ0uzZszVq1Ch9+OGHatOmjZYuXSpJWrJkidq0aaNVq1Zp1KhRmj17tqTKLzQtLCzUjz/+eEbmA0DzRGgDYJTu3bu7f2hbqvw2+dLSUqWlpSkrK8tvvw8//NDnF7r26NFDYWFh7rGrvo0+Ly9PHTt2VHR0tEJDQxUfH6/s7GxZlqX169crLi5OkpScnKzs7GxJUk5OjpKTkyVJcXFxWrdunfs3EAcMGFBrfQBQF0IbAGNUVFRo3bp1Hj/JtWLFCsXHx+vPf/6zdu3a5fMHrgsKChQWFub3x8+rLF261B3snE6noqKi3NsiIyPldDpVVFSkNm3auH/wPCoqyh0inU6nOnToIKnylypat27t/h3Jrl276vPPPz+NswfQ3BHaADR5R48eVWJionr16qWDBw+qT58+7m3vvfee4uPjFRQUJIfDoQ8++MCr/08//aR27drVeoz169dr6dKlmjhxoiTJ14/F1PzN0ZrttfWp/kPqAHAqCG0Amryq97R99NFHOn78uPs9bdu3b1d+fr5uvfVW2e1293vPfPWv+rCAL9u3b1d6erqeffZZd7iLiory+OFup9OpiIgItWvXTocOHVJ5ebkkqbCwUBEREe4++/btkySVl5erpKTE/Vuux44dU8uWLc/AbABorghtAIzRunVrpaen65VXXtHx48eVlZWlu+66Szk5OcrJydHatWvldDq1d+9ej34XXnihV1uVH3/8UXfddZdmzZqlP/zhD+72mJgY5efnq6CgQGVlZcrKypLdbpfNZlOvXr20cuVKSdKyZcvcL9fa7XYtW7ZMkrRy5Ur17t3bfactPz/f/cPhAHAqCG0AjHL55Zfr0ksvVVZWlrKysjRo0CCP7Q6Hw+sN/+eee66io6P1ww8/SKp8b1zV+9v++c9/qri4WI888ogSExOVkpIiqfI9aVOnTtWYMWM0dOhQDRkyxB26Jk2apPnz58vhcKi4uNj9qdQRI0aouLhYDodD8+fPd7/UKlV+zchf/vKXepkTAM2DzfL1JgwAOMusWrVK27Zt0z333KMFCxbI6XTq/vvvb5Bjl5WV6cYbb9Trr7/u/gADAJwsQhuAZmPJkiX64osvtGPHDj311FO64IILGuS4+fn5cjqd6tWrV4McD8DZidAGAABgAN7TBgAAYABCGwAAgAEIbQAAAAYgtAEAABiA0AYAAGAAQhsAAIAB/h+jqixkQjh3dwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x648 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import aplpy\n",
    "import seaborn as sns\n",
    "sns.set_style(\"white\")\n",
    "cmap=sns.cubehelix_palette(8, start=.5, rot=-.75,as_cmap=True)\n",
    "fig=aplpy.FITSFigure('../dmu18_HELP-PACS-maps/data/EGS_PACS100_v0.9.fits')\n",
    "fig.recenter(PACScat[PACScat['HELP_ID']=='EGS-PACSxID24-1-11009']['RA'],PACScat[PACScat['HELP_ID']=='EGS-PACSxID24-1-11009']['Dec'], radius=0.004)\n",
    "fig.show_colorscale(vmin=0.0,vmax=1,cmap=cmap)\n",
    "fig.add_colorbar()\n",
    "fig.colorbar.set_location('top')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In summary, the PSF is within 10% of this source, and given noise and shape of source will add additional uncertianty, as well as non-zero background, this seems reasonable.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create PSF fits file¶\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "stackhd[0].data=psfok\n",
    "stackhd.writeto('dmu18_PACS_100_PSF_EGS_20190125.fits',output_verify='fix+warn', overwrite=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.03883219968825611"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.max(psfok)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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9erVunjx4rC32717t0pLS1VaWqrdu3eHjr/99tsqLCzUrFmz4jXyEMO9vu6N+vr6tH79epWUlGjZsmU6depU6GNNTU0qKSlRWVmZvv7663iOPaxI19Lb26tnnnlGs2bNUmNjY7zHHlaka/nmm29UU1OjyspK1dTU6PDhw/EefYhI19LR0aElS5ZoyZIlqqqq0v79++M9+rCi+TsjSb///rtmzZqlDz74IF4j31akazl16pSmT58e+vnU19dHNoAbBTZv3uyampqcc841NTW5N998c8htent7nd/vd729ve7ChQvO7/e7CxcuOOec+/77710wGHQzZ86M69yD+vv7XVFRkTt58qS7du2aq6ysdMePH7/pNp988ol79dVXnXPOtbS0uBdffNE559zx48ddZWWlu3btmjt58qQrKipy/f39cV/DoGjW8tdff7lvv/3Wffrpp66hoSHus98qmrX8+OOPrqenxznn3M8//+zy8/PjO/wtolnLlStX3PXr151zzgWDQTd37tzQ+4kSzXoGrV271q1bt841NzfHbe7hRLOW7u5uV1FREfUMo+KMvq2tTdXV1ZKk6upqtba2DrnNoUOHNH/+fE2aNEnp6emaP39+6Ox35syZCX1RlNu9vu6N2tvb9dRTT0mSysrKdPjwYTnn1NbWpoqKCqWlpSkrK0vZ2dnq6OhIxDIkRbeWiRMn6sknn9S4ceMSMfoQ0azl0UcfVWZmpiQpJydHfX196uvri/saBkWzlgkTJig19Z+NbK9du6aUlJS4z3+raNYjSa2trXrggQeSYuv0aNfihVER+nPnzoVCnZGRofPnzw+5ze1ewzYZhDNbMBjUlClTJEmpqam699571dvbm3TrimYtycartezdu1ePPPKI0tLSYj/0bUS7lmPHjqmiokJVVVVqaGgIhT9RolnPlStX9P7772vt2rVxnfl2ov3ZnDp1StXV1Vq5cqW+++67iGZI7E/zBs8++6zOnj075Pj69evD+vzh/u+XDGcmUniz3e42ybauaNaSbLxYy/Hjx7VlyxZ9+OGH3g84AtGuZcaMGQoEAvr111/10ksvqaCgIKH/8opmPe+++65WrVqlu+++O2bzjUQ0a8nIyNBXX32lyZMn64cfftALL7ygQCCge+65Z0QzJE3oP/roo9t+7P7779eZM2eUkZGhM2fO6L777htyG5/Pp6NHj4beDwaDmj17dixGHbFwXl/X5/Ppjz/+kM/nU39/vy5fvqxJkyYl3WvzRrOWZBPtWnp6erR27Vpt3rxZ06ZNi+vst/Lq5/LQQw9pwoQJ+uWXX5SbmxuX2YcTzXqOHTumvXv3asuWLbp06ZLuuusujRs3TitXroz3MkJzRrqWlJSU0L8UH3/8cU2bNk2dnZ0j/tmMiks3fr9fe/bskSTt2bNHRUVFQ26Tn5+vQ4cO6eLFi7p48aIOHTqk/Pz8eI86rHBeX9fv94ceKbR3717NnTtXKSkp8vv9CgQC6uvrU3d3t7q6ujR9+vRELENSdGtJNtGs5dKlS3ruuedUV1enJ554IhHj3ySatXR3d6u/v1/SP5tkdXZ2JnyTwWjW8+mnn6q9vV3t7e1atWqVnn/++YRFXopuLefPn9fAwIAkhf7+Z2VljXyIqH+dGwfnz593tbW1rqSkxNXW1rre3l7nnHMdHR3ulVdeCd1u165drri42BUXF7vPPvssdHzz5s1uwYIF7uGHH3YLFixw27Zti/saDhw44EpLS11RUZHbvn27c865d955x7W2tjrnnLt69apbt26dKy4udkuXLnUnT54Mfe727dtdUVGRKy0tdQcOHIj77LeKZi0LFy50eXl5bubMmW7BggVDHn0Qb5Gu5b333nMzZsxwVVVVof/Onj2bsHU4F/ladu/e7crLy11VVZWrrq52+/fvT9gabhTNn7NB27ZtS/ijbpyLfC1ffvmlKy8vd5WVla66utq1tbVF9P3ZvRIAjBsVl24AAJEj9ABgHKEHAOMIPQAYR+gBwDhCDwDGEXoAMI7QA4Bx/wP/PEY95Uux2wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(psfok.flatten(),bins=np.arange(-0.01,0.05,0.0005));\n",
    "plt.yscale('log')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1024"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(psfok.flatten())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(~np.isnan(psfok))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "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.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
