{
"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": [
" 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"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"stackhd_im = fits.open('../dmu18_HELP-PACS-maps/data/AKARI-SEP_PACS100_v0.9.fits')\n",
"im=stackhd_im[1].data\n",
"stackhd = fits.open('./data/output_data/100um/Akari-SEP-100um-psffromstack.fits')\n",
"psf = stackhd[0].data\n",
"hd = stackhd[0].header\n",
"plt.imshow(psf)"
]
},
{
"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": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"resol= np.abs(stackhd[0].header['CDELT1'])/np.abs(stackhd_im[1].header['CDELT1'])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 4,
"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": 5,
"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": 6,
"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": 7,
"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": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-2.0000000484"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hd['CDELT1']*3600."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Encircled flux')"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAERCAYAAACU1LsdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xd8VvXd//HXJwlhJcyETSAoU1BGBNyKC0fFtlrFUevuz9Whbe2t1db27q29e3dr1VpHrZNqFRWLow4cjCBLlkAYCSsDAhlkf35/XBcxxRAuMFdOrlzv5+ORB+ec61wnH4/J9c453+/5fs3dERERAUgIugAREWk9FAoiIlJPoSAiIvUUCiIiUk+hICIi9RQKIiJSLyZDwcweNbN8M/u0GY51ipktbvBVYWbnN0edIiKxxmLxOQUzOxEoBf7m7qOb8bg9gLXAAHcvb67jiojEipi8UnD394EdDbeZ2WFm9i8zW2hmc8xsxCEc+gLgdQWCiMSrmAyF/XgYuNndJwC3AQ8cwjEuBp5p1qpERGJIUtAFNAczSwGOBWaY2d7N7cOvfQ24p5G3bXb3Mxscoy8wBpgd3WpFRFqvNhEKhK54it197L4vuPuLwIsRHOMbwD/dvbq5ixMRiRVt4vaRu+8G1pvZhQAWctRBHmY6unUkInEuJkPBzJ4BPgaGm1memV0NXApcbWZLgOXAtIM43mBgIPBe81crIhI7YrJLqoiIREdMXimIiEh0xFxDc1pamg8ePDjoMkREYsrChQsL3T39QPvFXCgMHjyY7OzsoMsQEYkpZrYxkv10+0hEROopFEREpJ5CQURE6ikURESknkJBRETqKRRERKSeQkFEROrF3HMKIiKxrrbOKS6voqisisLSSnbvqaaq1qmpraO6to7q8HJNndcvV9c5p47oxVEDu0W1NoWCiEiUrC8s48mPN1JQWklRaSVFpVUUlVWyo6yKukMYdq53l/YKBRGR1qqqpo6C0koKSkJf+SUV4X9D659s3ElJZQ39u3WkZ+dkBqd1YsLg7qR1TqZH52R6prSnZ0oy3Tomk5xkJCUk0C4pgXYJRlJiAu0SjXaJCSQlGIkJRoNJxKJGoSAichDcna27Knh2/iYenpNDRXXdF/bp0TmZXqntGTOgKz84czhH9OsaQKWHRqEgItKEiupalm3exaJNO1m0qZhPNu1k++5KAM49si/HHZ5Gekp7enVpT3pqe9JS2tMuMXb78CgURET2sW1XBS98ksfs5dtYsWU3NeEGgIwenZg8pCfjM7ozeUhPhvdJDbjS5qdQEBFp4NWlW7jlmUXUOUwY1J3rThzCuIzujMvoRlpK+6DLizqFgojEvZraOjYX7yGnsIxfz17NsN6pPHjZBAandQ66tBanUBCRuOLufLa9lDlrCpi3fgc5BaVs2lFOdW3oFlFigvFQnAYCKBREJI5sKirnisfms76wDIDMtM4M753K6aP6MCStM5npnRmS1pmecXCbaH8UCiISF/J2lnP5o/MoLq/m3q+N4YRh6fTv1jHoslodhYKItGnrCkp58N11vLR4M0kJCfz9mklMGNQ96LJaLYWCiLQp23ZV8MmmnSzOLWbRpp1kb9xJcmICl0zM4NoThzCge6egS2zVFAoi0iZUVNdy379W8diHGwBITkxgVL8u3HzK4Xzz2MFx0Z20OSgURCTm5e4o56rHF7Amv5TLJw/i6xMGMLJvKu2TEoMuLeYoFEQk5v3P6yvZuquCJ66ayEnD0oMuJ6bF7gAdIhL3qmrq+HhdEa9/uo0rjh2kQGgGulIQkZhRV+c8NX8Tc3OK+GxbCesLy6ipc1LbJ3HVcZlBl9cmKBREJCaUVFTzvecW89bKfAb26MiIPl0444jeDOudysTMHnH9wFlzUiiISKu3cOMObn1+CXk793DPtCO4fPKgFplwJh5FrU3BzB41s3wz+3Q/r5uZ/cHM1prZUjMbH61aRCR2vbF8Gxc9NJeaOufpayfzzWMGKxCiKJoNzY8DU5t4/SxgaPjrOuDPUaxFRGJMTW0df/t4Azc+/QlH9O/KrO+cwMTMHkGX1eZF7faRu79vZoOb2GUa8Dd3d2CumXUzs77uvjVaNYlIbHj/swJ+/uoK1uSXctzhPXng0gl06dAu6LLiQpBtCv2B3AbreeFtXwgFM7uO0NUEGRkZLVKciARjbX4JVzw2n0E9OvHQ5RM4Y1Rv3S5qQUGGQmP/l72xHd39YeBhgKysrEb3EZHY5e5s2lHO4txiZi7egjv8/ZpJGqcoAEGGQh4wsMH6AGBLQLWISEDW5pdw9RPZbCwqB6Bju0TOH9tPgRCQIENhJnCTmT0LTAJ2qT1BJL6s2LKby/86DzPjF+ePZnxGd4b1TiEpUYMtBCVqoWBmzwAnA2lmlgfcDbQDcPcHgVnA2cBaoBy4Mlq1iEjrs66glOl/mUun5ESeumYSQ9JTgi5JiG7vo+kHeN2BG6P1/UWkdZuRnUdZZQ2v3HQ8GT11q6i10DWaiATi43WFjMvopkBoZRQKItKi8ksqeGFhHss27+KYw9KCLkf2obGPRCTqauucWcu28sicHJbk7QKgd5f2nD+2X8CVyb4UCiISVe7OLc8s4rVlWxmS3pkfnDmck4alM6pvFxIS9FBaa6NQEJGo+vN763ht2VZuPX0YN5xyOIkKglZNoSAiUbO5eA+/e2sNZ4/pw01TDtdwFTFADc0iEhWfbt7FNU9kA3DHOaMUCDFCVwoi0uzeWrGdG5/+hK4d2/HnS8fTv1vHoEuSCCkURKRZzV6+jRue+oTR/brw2JUT6dE5OeiS5CAoFESk2eTuKOe2GUsY3a8LT107mZT2+oiJNWpTEJFmUVvnfPe5xbjDH6ePVyDEKIWCiDSL+et3sHDjTu48Z6SGrohhCgURaRazl28jKcE458i+QZciX4JCQUS+tNwd5Tw9fxPnje1HquZSjmkKBRH50n79xmoMuO2M4UGXIl+SWoJE5JC8sXwbL36ymZzCUj7bXsoNJx9GPz2PEPMUCiJySB58bx2fbS9l8pAeTB3dl2+fNCTokqQZKBRE5KAtyS1mQ1E5kzJ78MgVRwddjjQjtSmIyEF5/MP1fP3PH9E+KYGbTx0adDnSzHSlICIRK6mo5hevreSYw3ryp+nj6dpJPY3aGl0piEjE3lyxnZo654aTD1cgtFEKBRGJSEV1Lf/3xmeM6JPKxMweQZcjUaLbRyJyQAUllfzPrJVsLt7D09dO0uxpbZhCQUT2a2dZFQ+8u5Yn526kqqaO604cwrGHpQVdlkSRQkFE9uu2GUt4Z3U+54/rz81ThpKZ1jnokiTKFAoi0qiyyhrmrCnkquMyufPcUUGXIy0kqg3NZjbVzFab2Vozu72R1zPM7B0zW2RmS83s7GjWIyKR+2hdEVW1dUwZ0SvoUqQFRS0UzCwRuB84CxgFTDezff/cuBN43t3HARcDD0SrHhGJXEV1LQ+9t47U9klkDVZPo3gSzSuFicBad89x9yrgWWDaPvs40CW83BXYEsV6RCQCdXXObTOWkL1xJ//9tTEkJ6nnejyJ5v/t/kBug/W88LaGfgpcZmZ5wCzg5sYOZGbXmVm2mWUXFBREo1YRCbtv9ipeXbqV288awXlH9Qu6HGlh0QyFxjoy+z7r04HH3X0AcDbwpJl9oSZ3f9jds9w9Kz09PQqlighA9oYdPPReDpdPHsT1J2rU03gUzVDIAwY2WB/AF28PXQ08D+DuHwMdAHWCFgnI7OXbSE5M4PazRmCmB9TiUTRDYQEw1MwyzSyZUEPyzH322QScCmBmIwmFgu4PiQSgsqaWt1flc1ivFDq3V2/1eBW1UHD3GuAmYDawklAvo+Vmdo+ZnRfe7VbgWjNbAjwDfMvd973FJCJRVlxexaV/mUdOQRmXTBx44DdImxXVPwfcfRahBuSG2+5qsLwCOC6aNYjIgT23IJfsjTv50yXjOPdINS7HM/U1ExHySyoBOHt034ArkaApFETi3JsrtvP4RxuYMqIXCRr9NO6pNUkkTm0sKuNXs1fz2tKtjOnflT9MHxd0SdIKKBRE4kxdnfOHf6/h/nfWkpSQwC2nDuX6E4eox5EAEYSCmY0KNwg33Hayu78btapEJCrKKmv43nOLeWPFdqaN7ccdZ4+kV5cOQZclrUgkfxo8b2ZPAr8i9BzBr4As4JhoFiYizauiuparn1jA/PU7uOvcUVx53GA9oCZfEElD8yRCTyZ/ROiBtC2oG6lIzPnRC0uZm7OD33xjLFcdn6lAkEZFEgrVwB6gI6ErhfXuXhfVqkSkWX26eRcvL97CzVMO5/xx+45LKfK5SEJhAaFQOBo4ntC8CP+IalUi0qweej+HlPZJXHOCBrmTpkXSpnC1u2eHl7cB08zs8ijWJCLNaENhGa8t3cK1Jwyha8d2QZcjrVwkoZBvZhn7bHsvGsWISPNyd376ynI6tkvk6uMzgy5HYkAkofAaoXkQjFCbQiawGjgiinWJSDOYtWwb764u4CfnjlLXU4nIAUPB3cc0XDez8cD1UatIRJrF7opqfvbKckb378IVxwwKuhyJEQc99pG7f0Ko0VlEWrH7/72WwtJKfvnVMSQlapgziUwkTzR/v8FqAjAeTYQj0qrV1jn/XLSZM0b14cgB3YIuR2JIJG0KqQ2Wawi1MbwQnXJE5MuqrXOuf3Ih+SWVTBuruRHk4ETSpvCzlihERJrH3Jwi3lq5nR+cOZypo/sEXY7EmP2Ggpm9QqjXUaPc/bz9vSYiLW9TUTkzFubyfHYuHdslctVxGspCDl5TVwq/brEqROSQrdlewl0vL+fjnCISDE4cls71Jx5Gx+TEoEuTGNRUKNzl7qea2X3u/qMWq0hEDsorS7fycU4Rt50xjK9PGEDfrh2DLkliWFOh0NfMTgLOM7NnCT28Vi/cNVVEAlRcXsXcdUUkJyZw05ShQZcjbUCTVwrA7cAA4P/4z1BwYEoU6xKRA1ibX8oVj84nv6SCn503OuhypI3Ybyi4+z+Af5jZT9z95y1Yk4hE4P531rJ7TzUzvn0sYwfqWQRpHgd8zFGBINL6FJRU8uaK7Uwd3UeBIM1Kz76LxJg9VbX8+MWlVNXUcd2Jmh9BmlckTzSLSCvg7ryxYjv3vLKCzcV7+Mm5oxjaO/XAbxQ5CE09vNajqTe6+44DHdzMpgK/BxKBR9z93kb2+QbwU0KN10vc/ZIDHVck3tTVOXe8tIxn5ucyvHcqz143mclDegZdlrRBTV0pLOTzeRQygJ3h5W7AJkLzKuyXmSUC9wOnA3nAAjOb6e4rGuwzFPgxcJy77zSzXl/iv0Wkzbr9xaU8n53H/zv5ML5/+jDaadRTiZL9/mS5e6a7DwFmA19x9zR37wmcC7wYwbEnAmvdPcfdq4BngWn77HMtcL+77wx/z/xD+Y8Qactyd5TzfHYeVx+fyY+mjlAgSFRF8tN1tLvP2rvi7q8DJ0Xwvv5AboP1vPC2hoYBw8zsQzObG77dJCINrN5WAsA5R/YNuBKJB5E0NBea2Z3A3wndTroMKIrgfY2NxLXvAHtJwFDgZEIPyc0xs9HuXvwfBzK7DrgOICNj3+miRdq21dtDoTC0V0rAlUg8iORKYTqQDvwz/JUe3nYgecDABusDgC2N7POyu1e7+3pCcz9/4Vl9d3/Y3bPcPSs9PT2Cby3Sdmwp3kOPzsmkdmgXdCkSByKZT2EH8B0zS3H30oM49gJgqJllApuBi4F9exa9RChgHjezNEK3k3IO4nuItFmfbt7FGyu2886qfBITNAS2tIxIpuM8FngESAEyzOwo4Hp3v6Gp97l7jZndRKihOhF41N2Xm9k9QLa7zwy/doaZrQBqgR+4eyS3pkTatFnLtnLDU5+QYDAuozuXTNRtU2kZ5r7feXRCO5jNAy4AZrr7uPC2T909kBG4srKyPDs7O4hvLdIiVm7dzcUPz2Vwz048fuVEundODrokaQPMbKG7Zx1ov4j6trl77j6bag+pKhFp0qxlW5l2/4ckJyXw24vGKhCkxUXS+yg3fAvJzSwZuAVYGd2yROLP8wtyuf3FpYzP6M5Dl0+gZ0r7oEuSOBRJKHyb0FAV/Qn1FnoDuDGaRYnEk90V1dz98nL+uWgzJwxN46HLJ9ApWcOSSTAi6X1UCFzaArWIxJ25OUXc+vwStu2u4DunDuWmKYfriWUJVFMD4v2RLz5sVs/db4lKRSJxoLbO+dW/VvHwnBwG9ejEP759DOMyugddlkiTVwrq4iMSJa8s2cJD7+cwfeJAfnLuKN0uklajqek4n2jJQkTihbvz9LxNDOjekf8+fwwJejBNWpED3rw0szfNrFuD9e5mNju6ZYm0XY9+uIH5G3bw7ZMOUyBIqxNJi1Z6wwHqwsNca94DkUNQWlnDr2ev5tQRvbh0kp5SltYnklCoNbP6n14zG0QTDdAisn+zP93GnupabjjlcMx0lSCtTyStW3cAH5jZe+H1EwkPYy0iB2dL8R4AjhzQNeBKRBrXZChY6E+Z5cB4YDKhORK+F352QUQOUmFpJcmJCSTqKkFaqSZDwd3dzF5y9wnAqy1Uk0ibUV1bx9r8UpZv2c3yLbv456LNTBnRSw3M0mpFcvtorpkd7e4Lol6NSBtSXlXD2b+fw4aicgA6tktkVL8ufPf0L8wjJdJqRBIKpwDXm9lGoIzQLSR39yOjWplIDKutcx7/aAMbisq585yRnDw8ncy0FE2WI61eJKFwVtSrEGkjSitrmJGdy+MfbWBjUTnjMrpx9fGZ6mkkMaOpsY+6uPtuoKQF6xGJWTvLqjjjd+9TUFLJhEHd+eGZIzjziN4KBIkpTV0pPA2cCywk9FxCw59sB4ZEsS6RmPPios0UlFTyt6smcuKw9KDLETkkTY19dG7438yWK0ckNrk7zy/I5aiB3RQIEtMiGfvoq2bWtcF6NzM7P7plicSOz7aX8KMXlrJ6ewkXZQ0MuhyRLyWSYS7udvdde1fC4yDdHb2SRGLHqm27OecPc5i5ZAuXTsrga+P7B12SyJcSSe+jxoJDg79L3HN37n55OZ3bJ/HGd0+kV5cOQZck8qVFcqWQbWa/MbPDzGyImf2WUOOzSFx7ZelW5q3fwQ/OHK5AkDYjklC4GagCngNmABXAjdEsSqS1q6mt477XVzGmf1cuPlpDYEvbccDbQO5eBtzeArWIxITNxXt4et5GNhfv4SfnjtJTytKmHDAUzGwYcBswuOH+7j4lemWJtD51dc61f8vm7VX5AEzK7MGpIzXflLQtkTQYzwAeBB4BaqNbjkjr9cHaQt5elc+3jh3MN48ZxJD0lKBLEml2kYRCjbv/+VAObmZTgd8DicAj7n7vfva7gFD4HO3u2YfyvUSiKXvDDr7//BLSU9vz47NH0D4pMeiSRKIikobmV8zsBjPra2Y99n4d6E1mlgjcT2hAvVHAdDMb1ch+qcAtwLyDrF0k6ipranng3bVM/8tcUton8tQ1kxQI0qZFcqVwRfjfHzTYFsnYRxOBte6eA2BmzwLTgBX77Pdz4FeE2i1EWo05awq4++Xl5BSWMfWIPtz39SPp2qld0GWJRFUkvY8Odeyj/kBug/U8YFLDHcxsHDDQ3V81s/2GgpldR3he6IwMdf+T6Kqtc/7vjdU88O46BvfsxONXHs3Jw9WgLPFhv7ePzOyHDZYv3Oe1X0Zw7Mb66XmDYyQAvwVuPdCB3P1hd89y96z0dA02JtFTWVPL1U8s4IF31zF94kD+9d0TFQgSV5pqU7i4wfKP93ltagTHzgMajg42ANjSYD0VGA28a2YbgMnATDPLiuDYIs3O3fnRP5by7uoCfnH+aP7na0fSoZ3aDyS+NHX7yPaz3Nh6YxYAQ80sE9hMKGQu2ftieJC9tPoDmr0L3KbeRxKE3RXV/GDGEmYv385tZwzjssmDgi5JJBBNhYLvZ7mx9S++2b3GzG4CZhPqkvqouy83s3uAbHefedDVikRB/u4KvvHQx+Tt3MOd54zk6uM1hYjEr6ZC4Sgz203oqqBjeJnwekSjf7n7LGDWPtvu2s++J0dyTJHm9pc5OeTu3MMz105mYuYBe1uLtGlNzbymm6nS5hWUVPLM/FzOGt1HgSBCZA+vibRZv/rXKipravne6cOCLkWkVVAoSNyas6aAGQvzuOq4TA7TOEYigGZQkzizvrCM2cu38cbybSzKLWZ471RuPnVo0GWJtBoKBYkLz2fn8pf3c1iTXwrA6P5d+N5pw7h0UgYp7fVrILKXfhukzdtcvIf/enEZw/ukcvdXRnHGEX3o361j0GWJtEoKBWmz3J13Vudz3+urAXj4m1kKA5EDUChIm7SxqIzbZixhwYadZPToxAOXjlcgiERAoSBtTkV1Ldc/uZCtuyr4+fmjuShrIMlJ6mgnEgmFgrQ5976+ilXbSnj0W1lMGdE76HJEYor+fJI25Z1V+Tz+0Qa+dexgBYLIIVAoSJtRW+fc8+oKhvZK4fazRgRdjkhMUihIm+Du/PWDHNYXlvH904dpHgSRQ6Q2BYlZ7s7SvF3MWraVWZ9uJXfHHk4f1Zszj+gTdGkiMUuhIDHphYV5/Patz8jbuYekBOP4oWncMmUo08b2JyEhkjmgRKQxCgWJOfklFdzx0jIO75XCd04dyhmj+tC1U7ugyxJpExQKEnMeeGcd1bXOn6aPZ3Ba56DLEWlTFAoSE9ydnMIy5uXs4Ol5m7hg/AAFgkgUKBSkVauoruX+d9byzPxNFJZWATCge0duOU3DXYtEg0JBWq2P1hXy4xeXsbGonDOP6M0pw3txdGYPhqR1xkyNySLRoFCQVmnXnmq+9dgC+nXtwNPXTOLYw9OCLkkkLigUpFX6eF0hVTV1/O+FR3H04B5BlyMSN/REs7RK731WSEr7JMYO7BZ0KSJxRVcK0mpsKd7DU/M28vbKfFZtK+HsMX1ol6i/W0RakkJBAldRXcsjc3K4/511VNXWcfTg7tx5zkgunDAw6NJE4o5CQQLh7qzYuptXlmzl5cWb2bqrgrNG9+G/zh7JwB6dgi5PJG5FNRTMbCrweyAReMTd793n9e8D1wA1QAFwlbtvjGZNEqzi8ioe+3ADryzdQk5BGYkJxvGHp/HrC4/iOPUwEglc1ELBzBKB+4HTgTxggZnNdPcVDXZbBGS5e7mZ/T/gV8BF0apJguXu3PzMIj5YW8jkzJ5cc/wQpo7uQ4/OyUGXJiJh0bxSmAisdfccADN7FpgG1IeCu7/TYP+5wGVRrEcC9vd5m5izppC7vzKKK4/LDLocEWlENEOhP5DbYD0PmNTE/lcDrzf2gpldB1wHkJGR0Vz1SQuprXN+OWslf/1gPScMTePyyYOCLklE9iOa/f0aG4fAG93R7DIgC/jfxl5394fdPcvds9LT05uxRGkJz8zfxF8/WM+Vxw3msW8dTZK6mYq0WtG8UsgDGvYpHABs2XcnMzsNuAM4yd0ro1iPBMDdefLjjYzu34W7zh2lMYtEWrlohsICYKiZZQKbgYuBSxruYGbjgIeAqe6eH8VapIW4O2vzS1mcW8zyLbtZklfM6u0l3Pu1MQoEkRgQtVBw9xozuwmYTahL6qPuvtzM7gGy3X0modtFKcCM8AfGJnc/L1o1SfQUlFTy0qLNzFiYy2fbSwHolJzIEf26cNMph/PV8f0DrlBEImHujd7mb7WysrI8Ozs76DIkLH93BT95+VPeXplPTZ0zLqMbXx8/gMlDepKZ1plEzZcs0iqY2UJ3zzrQfnqiWQ6Zu3PrjCUs2LCDq47P5MIJAxjaOzXoskTkS1AoyCFZuHEnf/z3GuasKeSeaUfwzWMGB12SiDQDhYIclJVbd/OL11bw4doiundqx4+mjuCySXruQKStUChIxHaWVXHlYwuorq3jjrNHcsmkDDq314+QSFui32g5oIKSSl5buoVnF+RSVFbJP284jtH9uwZdlohEgUJB9qu2znn0g/X8+o3VVNbUMaJPKr+7aJwCQaQNUyjIf6irc3IKS1m0qZhnF+SycONOThvZmx9OHc4w9SwSafMUCkJNbR1vrcxnRnYu8zfsoKSiBoAenZP57UVHcf7Y/noaWSROKBTiWH5JBc/My+WZ+ZvYtruCPl06cO6R/Rg3sBvjMrpxWHoKCXr4TCSuKBTiVO6Ocs6//0OKyqo4YWgaP5t2BKeO6KURTEXinEIhzlTV1PHhukJ++dpKqmvrmHXLCYzq1yXoskSklVAoxIHKmlo+WFPIrGXbeHPFNnZX1NClQxIPXjZBgSAi/0Gh0EbV1NbxzuoCZi3bylsrtlNSGQqC00f14ewxfTh+aBrtkxKDLlNEWhmFQhtTW+e8vHgzf/z3WtYXltGtUzvOGtOHs8f05djD0khOUpuBiOyfQqGNqK1zXl26hd+/tYacwjJG9u3Cg5eN59SRvWmnxmMRiZBCoQ3YtquCKx9fwMqtuxnRJ5UHLxvPGaP6qDupiBw0hUIMK6moZvW2Er7//BJ2lFXxx+njOGdMX4WBiBwyhUIMcHfWFZTy4doiVm3bzbqCMnIKyigsrQSgS4ck/n7NJMYO7BZwpSIS6xQKrVRRaSUfrC3kgzWFfLC2kK27KoDQ0BND0jozZUQ6mWkpDEnvzPiM7qSntg+4YhFpCxQKrczm4j3c9vwSPs4pAqBbp3Ycd1gaxw9N4/jD0xjYo1PAFYpIW6ZQaEU+WFPILc8uoqqmjltPH8aJw9IZ3b8riWojEJEWolAIiLuzo6yKrbsqWJq3ixkLc1m0qZhhvVN48LIJDElPCbpEEYlDCoUoKy6v4tWlW9lcvIdtuyrYUryHbbsr2Lqrgqqauvr9hvZK0RSXIhI4ffpEibvzytKt/GzmcorKqkhKMHp36UC/bh04ckA3zjyiA327hr4Gp3VmeO9UzVkgIoFTKDSjqpo68naWs3FHOX/7aAPvrC7gqAFdeezKoxndr6ueHxCRVk+hcJDcndwde1ixdRcbisrZWFTOph1lbCwqZ0vxHuo8tF/Hdon85NxRfOvYwWooFpGYEdVQMLOpwO+BROARd793n9fbA38DJgBFwEXuviGaNR2MujqnsKySFVt2szi3mCW5xSzJ28WOsqr6fXp0TiYdftNjAAAIkklEQVSjRycmDOrO18b1J6NnZwb17MSwXql07dQuwOpFRA5e1ELBzBKB+4HTgTxggZnNdPcVDXa7Gtjp7oeb2cXAfcBF0appr7LKGgpKKskvqaSgpJKCkgoKSvcuV9YvF5ZWURv+098s1Bh82shejB3YnTH9uzI4rROpHfTBLyJtRzSvFCYCa909B8DMngWmAQ1DYRrw0/DyP4A/mZm5uzd3Mc8t2MQD766joKSS8qraL7yemGCkpSSTntqe9JT2jOrbhV6pHUhLSWZYn1SOHNCNFPUKEpE2Lpqfcv2B3AbrecCk/e3j7jVmtgvoCRQ23MnMrgOuA8jIyDikYnp2bs9RA7qFPvTDH/zpqe3p1SW03L1TshqCRSTuRTMUGvuE3fcKIJJ9cPeHgYcBsrKyDukq4rRRvTltVO9DeauISNyI5uwrecDABusDgC3728fMkoCuwI4o1iQiIk2IZigsAIaaWaaZJQMXAzP32WcmcEV4+QLg39FoTxARkchE7fZRuI3gJmA2oS6pj7r7cjO7B8h295nAX4EnzWwtoSuEi6NVj4iIHFhUu9O4+yxg1j7b7mqwXAFcGM0aREQkcprRXURE6ikURESknkJBRETqKRRERKSexVoPUDMrADYe4tvT2Odp6Tin8/E5nYvP6Vx8ri2di0Hunn6gnWIuFL4MM8t296yg62gtdD4+p3PxOZ2Lz8XjudDtIxERqadQEBGRevEWCg8HXUAro/PxOZ2Lz+lcfC7uzkVctSmIiEjT4u1KQUREmqBQEBGRenETCmY21cxWm9laM7s96Hpakpk9amb5ZvZpg209zOxNM1sT/rd7kDW2FDMbaGbvmNlKM1tuZt8Jb4/X89HBzOab2ZLw+fhZeHummc0Ln4/nwsPfxwUzSzSzRWb2ang9rs5FXISCmSUC9wNnAaOA6WY2KtiqWtTjwNR9tt0OvO3uQ4G3w+vxoAa41d1HApOBG8M/C/F6PiqBKe5+FDAWmGpmk4H7gN+Gz8dO4OoAa2xp3wFWNliPq3MRF6EATATWunuOu1cBzwLTAq6pxbj7+3xxRrtpwBPh5SeA81u0qIC4+1Z3/yS8XELol78/8Xs+3N1Lw6vtwl8OTAH+Ed4eN+fDzAYA5wCPhNeNODsX8RIK/YHcBut54W3xrLe7b4XQByXQK+B6WpyZDQbGAfOI4/MRvl2yGMgH3gTWAcXuXhPeJZ5+X34H/BCoC6/3JM7ORbyEgjWyTX1x45iZpQAvAN91991B1xMkd69197GE5lGfCIxsbLeWrarlmdm5QL67L2y4uZFd2/S5iOrMa61IHjCwwfoAYEtAtbQW282sr7tvNbO+hP5KjAtm1o5QIDzl7i+GN8ft+djL3YvN7F1CbS3dzCwp/BdyvPy+HAecZ2ZnAx2ALoSuHOLqXMTLlcICYGi4F0EyobmgZwZcU9BmAleEl68AXg6wlhYTvkf8V2Clu/+mwUvxej7SzaxbeLkjcBqhdpZ3gAvCu8XF+XD3H7v7AHcfTOgz4t/ufilxdi7i5onmcPr/DkgEHnX3/w64pBZjZs8AJxMaBng7cDfwEvA8kAFsAi50930bo9scMzsemAMs4/P7xv9FqF0hHs/HkYQaTxMJ/ZH4vLvfY2ZDCHXI6AEsAi5z98rgKm1ZZnYycJu7nxtv5yJuQkFERA4sXm4fiYhIBBQKIiJST6EgIiL1FAoiIlJPoSAiIvUUCiIiUk+hIDHJzGrNbLGZfWpmr+x9AOsg3v9TM7stvHyPmZ32JesZbGZ7wmMItQpmdlF4qPhXg65FYodCQWLVHncf6+6jCY0Ae+OhHsjd73L3t5qhpnXhMYQiFh7WPSrc/TngmmgdX9omhYK0BR8THrnSzFLM7G0z+8TMlplZ/RDpZnZHeKKlt4DhDbY/bmYXhJc3mFlaeDkrPBYQZnZS+MpkcXgCltQDFWVmL5nZwvDkNdc12F4avjqZBxxjZkeb2UfhiW7mm1mqmR0RXl5sZkvNbGj4vZc12P7Q3lCx0CRSn4SP8faXP6USr+JlQDxpo8IfiqcSGs8IoAL4qrvvDn+4zzWzmcB4QuPZjCP0c/8JsLCRQ+7PbcCN7v5heITVigjec5W77wiPKbTAzF5w9yKgM/Cpu98VHotrFXCRuy8wsy7AHuDbwO/d/anwPolmNhK4CDjO3avN7AHgUjN7HfgLcKK7rzezHgfx3yXyHxQKEqs6hu/fDyb04f5meLsBvzSzEwmNbdQf6A2cAPzT3csBwkFxMD4EfmNmTwEvunteBO+5xcy+Gl4eCAwFioBaQqO0QuiKZau7LwDYO4y3mX0M3BGe9OVFd19jZqcCEwgFDEBHQqO5Tgbed/f14WO0+TGbJHp0+0hi1Z7w/ftBQDKftylcCqQDE8Kvbyc0DDJENg5+DZ//Xux9H+5+L6H78x0JXX2MaOog4QHVTgOOCU91uajB8SrcvXbvro3V5e5PA+cRumqYbWZTwvs+EW5LGevuw939p/s7hsihUChITHP3XcAtwG3heRK6EpoopdrMTiEUGgDvA181s47h9oCv7OeQGwj9NQ7w9b0bzewwd1/m7vcB2UCToRCuY6e7l4cDZPJ+9lsF9DOzo8PfJ9XMksIjc+a4+x8IDet9JKG5oy8ws17hfXuY2SBCbSonmVnm3u0HqE1kv3T7SGKeuy8ysyWE2gyeAl4xs2xgMaEPXdz9EzN7LrxtI6HhsxvzM+CvZrZ3OO29vhsOmVpgBfD6Acr6F/BtM1sKrAbm7qf2KjO7CPhjuO1hD6ErjIuAy8ysGtgG3BNun7gTeMPMEoBqQu0cc8MN2S+Gt+cDpx+gPpFGaehskWZgofmeXw13kW01Gs4LEHQtEht0+0ikedQCXVvbw2vAA8DOoGuR2KErBRERqacrBRERqadQEBGRegoFERGpp1AQEZF6/x84YjpTCgjRIwAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"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": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.1532845795154572\n",
"[[1.14861929 1.17466807 1.15194494 ... 1.13957936 1.14336771 1.16823363]\n",
" [1.15329462 1.1685971 1.14009511 ... 1.09741247 1.16506648 1.15251482]\n",
" [1.14676702 1.14538515 1.14272958 ... 1.16336721 1.16579074 1.18198657]\n",
" ...\n",
" [1.12335187 1.1421684 1.10268682 ... 1.15275288 1.17029482 1.16121519]\n",
" [1.11251694 1.19576067 1.1577462 ... 1.14278424 1.12926912 1.13160986]\n",
" [1.16533595 1.16769928 1.1759119 ... 1.17250931 1.12843215 1.14361763]]\n"
]
}
],
"source": [
"# This is clearly. \n",
"print(np.median(psf[0:5,:]))\n",
"\n",
"print(psf)\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Encircled flux')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAERCAYAAACU1LsdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xd8VfX9x/HXh7D33oSAgGwUAoha90Crgoitq86W2mGnVXCh4B5t7a+OUutqrVohICqKddeFgIOEIBB2mGHPkPX5/XEv6W0M4RJzc+69eT8fjzy459zvPfdzckLeOed87/dr7o6IiAhAraALEBGR+KFQEBGRUgoFEREppVAQEZFSCgURESmlUBARkVIJGQpm9qSZbTKzrCrY1slm9mXEV76Zja6KOkVEEo0l4ucUzOwEYDfwrLv3r8LttgRygM7uvreqtisikigS8kzB3T8AtkauM7MjzOwNM5tvZv8xs96V2PRY4HUFgojUVAkZCgcxBbjO3YcA1wOPVmIbFwHPV2lVIiIJpHbQBVQFM2sMHAu8ZGYHVtcLPzcGmFTOy9a6+5kR2+gADABmx7ZaEZH4lRShQOiMZ7u7H1X2CXfPADKi2Mb3gOnuXljVxYmIJIqkuHzk7juBFWZ2IYCFDDrMzVyMLh2JSA2XkKFgZs8DnwBHmlmumV0DXApcY2ZfAQuBUYexvTSgC/B+1VcrIpI4ErJLqoiIxEZCnimIiEhsJNyN5tatW3taWlrQZYiIJJT58+dvdvc2h2qXcKGQlpbGvHnzgi5DRCShmNmqaNrp8pGIiJRSKIiISCmFgoiIlFIoiIhIKYWCiIiUUiiIiEgphYKIiJRSKIiIxLm9BUXc8/oicrfFfv6vhPvwmohITfLBkjxump5J7rZ9dGnRkMuO6RrT91MoiIjEoW17Cpj8WjYZn6+le5tGvDjuGIZ3bxXz91UoiIjEEXdn5lfrmPRKNjv2FXLdKT342ck9qF8npVreX6EgIhIncrft5ZYZWby3OI+jujTnuQsG0Lt902qtQaEgIhKw4hLnmY9X8uCbiwGYeG5fLh+RRkotO8Qrq55CQUQkQF9v2MmN0zL5as12TjqyDXeO7k/nFg0Dq0ehICISgPzCYh55N4fH3ltG0wZ1ePiiozhvUEfMqv/sIJJCQUSkmn22YivjMxawPG8PY47uxC3n9KVlo7pBlwUoFEREqs3O/ELuff1r/jlnNZ1bNODZq4dxQq9DToZWrRQKIiLVYPbCDdz2chZ5u/bzw+O78ZszetGwbvz9Co6/ikREksimnflMnLmQ17M20Lt9E6b8IJ1BXZoHXdZBKRRERGLA3Xlx7hrumrWI/UUl/O7MIxl3QnfqpMT3kHMKBRGRKrY8bzcTMjKZs2Irw7u15J4xA+jepnHQZUVFoSAiUkUKi0uY8sFyHn57KfVq1+LeMQP4XnoXagXwIbTKUiiIiFSBr9Zs58ZpC/h6wy7O6t+eO87rR9um9YMu67ApFEREvoW9BUX8/s0lPPnRCto0qcdffjCEM/u1D7qsSlMoiIhU0vtL8rg5PNfBpcNTufGs3jStXyfosr4VhYKIyGHauqeAO1/NJuOL0FwH//rxCIZ1axl0WVVCoSAiEqUDcx3c8Uo2OwOY66A6xCwUzOxJ4Bxgk7v3L+d5Ax4Gzgb2Ale6++exqkdE5NsoO9fBvQHMdVAdYnmm8DTwZ+DZgzx/FtAz/DUceCz8r4hI3IinuQ6qQ8xCwd0/MLO0CpqMAp51dwc+NbPmZtbB3dfHqiYRkcMRb3MdVIcg7yl0AtZELOeG130jFMxsHDAOIDU1tVqKE5GaK7+wmD+/k8Pj78fXXAfVIchQKO+76+U1dPcpwBSA9PT0ctuIiFSFOcu3MCEjk+Wb42+ug+oQZCjkAl0iljsD6wKqRURquESY66A6BBkKM4Gfm9kLhG4w79D9BBEJwhtZobkONu+O77kOqkMsu6Q+D5wEtDazXGAiUAfA3R8HZhHqjppDqEvqVbGqRUSkPBt35nPby1nMXriRPh2a8sQV6QzsHL9zHVSHWPY+uvgQzzvws1i9v4jIwZSUOM/PXc29s76moLiEG0f25off6Rb3cx1Uh5p5fiQiNVbOpt3clJHJZyu3MqJ7K+4ZM4C01o2CLituKBREpEYoKCrh8feX8ed3cmhQN4X7xw7kwiGda0Q308OhUBCRpPf56m2Mn7aAJRt3c87ADkw8tx9tmtQLuqy4pFAQkaS1e38RD85ezDOfrKR90/r87Yp0Tu3TLuiy4ppCQUSS0jtfb+SW6Vms35nP5cd05Xcje9O4nn7lHYq+QyKSVPJ27WfSq9m88tU6erVrzNRLjmVI1xZBl5UwFAoikhTcnanzc7nztUXsKyjmN6f34toTj6BubXUzPRwKBRFJeKu27OGm6Zl8lLOFoWktuGfMQHq0bRx0WQlJoSAiCauwuIQn/rOCP761hLoptbhzdH8uGZZKrSSd66A6KBREJCEtyN3OjdMyWbR+J2f2a8cd5/WnfbP6QZeV8BQKIpJQ9hYU8fs3l/DkRyto3bgej182hJH92wddVtJQKIhIwnh/SR43T88kd9s+Lh2eyo1n9aZp/TpBl5VUFAoiEve27N7P5FezmfHlOo5o04iXrh3B0LSWQZeVlBQKIhK33J3pX6xl8qvZ7N5fxC9O7cnPTj6CerVTgi4taSkURCQurd6yl5tnZPKfpZsZ0rUF94wZQK92TYIuK+kpFEQkrhQVl/DkRyv4/b+XULtWLSaP6selw7uqm2k1USiISNzIWruD8RkLyFq7k9P7tmPSqH50aNYg6LJqFIWCiARuX0Exf3hrCX/7cAUtG9XlsUsHM7J/e811EACFgogE6sOlm7lpeiart+7l4mFdGH9WH5o1UDfToCgURCQQ2/YUMPm1bDI+X0v31o14YdwxHNO9VdBl1XgKBRGpVu7OzK/WMemVbHbsK+S6U3rws5N7UL+OupnGA4WCiFSb3G17uXl6Fu8vyeOoLs157oIB9G7fNOiyJIJCQURirrjEefrjlTz05mIMuP3cvvxgRBop6mYadxQKIhJTi9bvZPy0BXyVu4NTerdl8uj+dGqubqbxSqEgIjGRX1jMn95eypQPltO8YR3+7+KjOWdgB3UzjXMKBRGpcp8s28JN0zNZsXkPFw7pzM3f7UPzhnWDLkuiENNQMLORwMNACvCEu99b5vlU4BmgebjNeHefFcuaRCR2duwt5O5Zi3hx3hq6tmrIcz8cznE9WgddlhyGmIWCmaUAjwCnA7nAXDOb6e7ZEc1uAf7l7o+ZWV9gFpAWq5pEJDbcnVmZG5g4cyHb9hZw7YlH8MtTe9KgrrqZJppYnikMA3LcfTmAmb0AjAIiQ8GBA/3RmgHrYliPiMTA+h37uHVGFm8t2sSATs14+qqh9O/ULOiypJJiGQqdgDURy7nA8DJtbgfeNLPrgEbAaeVtyMzGAeMAUlNTq7xQETl8JSXOP+as4v43FlNUUsLNZ/fhquPSqJ1SK+jS5FuIZSiU18XAyyxfDDzt7g+Z2Qjg72bW391L/udF7lOAKQDp6elltyEi1Wzpxl2Mz8hk/qptfKdna+4+fwBdWjYMuiypArEMhVygS8RyZ755eegaYCSAu39iZvWB1sCmGNYlIpW0v6iYR99dxqPv5dC4Xm3+8P1BjD6qk7qZJpFYhsJcoKeZdQPWAhcBl5Rpsxo4FXjazPoA9YG8GNYkIpU0b+VWxmdkkrNpN+cf3YlbvtuHVo3rBV2WVLGYhYK7F5nZz4HZhLqbPunuC81sEjDP3WcCvwX+ama/JnRp6Up31+UhkTiyM7+Q+9/4mn98uppOzRvwzNXDOLFXm6DLkhiJ6ecUwp85mFVm3W0Rj7OB42JZg4hU3psLN3Dry1nk7drPNcd34zen96JRPX3mNZnp6IrIN2zamc/EmQt5PWsDfTo0ZcoP0hnUpXnQZUk1UCiISKmSEueFuWu45/VFFBSVcMPII/nRd7pTR91MawyFgogAsCxvNxMyMvlsxVZGdG/F3WMG0K11o6DLkmqmUBCp4QqKSpjywTL+9E4O9WvX4v4LBnJhemd1M62hDhkKZta3zHhFmNlJ7v5ezKoSkWrxxeptjJ+WyeKNu/juwA5MPLcvbZvUD7osCVA0Zwr/MrO/A/cT+hzB/UA6MCKWhYlI7OzeX8SDsxfzzCcrad+0Pk9cns5pfdsFXZbEgWhCYThwH/Ax0AR4DnUjFUlY7369iVtmZLFuxz4uP6Yr1595JE3q1wm6LIkT0YRCIbAPaEDoTGFF2bGJRCT+bd69nzteyeaVr9bRs21jpl57LEO6tgi6LIkz0YTCXOBlYCjQCviLmY1197ExrUxEqoS7M3V+LnfNWsTe/cX8+rRe/OSkI6hbW91M5ZuiCYVr3H1e+PEGYJSZ/SCGNYlIFVm1ZQ83Tc/ko5wtDE1rwT1jBtCjbZOgy5I4Fk0obApPmxnp/VgUIyJVo6i4hCc+XMEf31pCnVq1uHN0fy4ZlkqtWupmKhWLJhReIzRYnRG6p9ANWAz0i2FdIlJJWWt3cOO0BSxct5Mz+rZj0qj+tG+mbqYSnUOGgrsPiFw2s8HAj2NWkYhUyt6CIv7w7yX87cMVtGpcj8cvG8zI/h2CLksSzGF/otndPzezobEoRkQq54Mledw8I5M1W/dx8bBUxp/Vm2YN1M1UDl80n2j+TcRiLWAwmghHJC5s3VPAna9mk/HFWrq3bsSL445hePdWQZclCSyaM4XIrgpFhO4xTItNOSISDXfn5S/XMenVbHbuK+S6U3rws5N7UL9OStClSYKL5p7CHdVRiIhEZ83WvdwyI4v3l+RxVJfm3HvBAHq3bxp0WZIkDhoKZvYKoV5H5XL382JSkYiUq7jEeeqjFTz05hLMYOK5fbl8RBop6mYqVaiiM4UHq60KEalQ9rqdTMhYwFe5Ozj5yDbcef4AOjVvEHRZkoQqCoXb3P1UM7vP3W+stopEpFR+YTF/enspUz5YTrMGdfjTxUdz7sAOmutAYqaiUOhgZicC55nZC4Q+vFbK3T+PaWUiNdzHyzZzU0YmK7fsZeyQztx8dh9aNKobdFmS5Co8UwDGA52Bh/jfUHDglBjWJVJj7dhbyN2zFvHivDWktmzIP64ZzvE9WwddltQQBw0Fd58KTDWzW919cjXWJFIjuTuzMjcwceZCtu0t4McndudXp/aiQV11M5XqE02XVAWCSIyt37GPW2dk8daiTfTv1JSnrxpK/07Ngi5LaqDDHuZCRKpOSYnzjzmruP+NxRSVlHDz2X246rg0aqdorgMJhkJBJCBLNu5i/LQFfL56O9/p2Zq7Rg8gtVXDoMuSGq6iD6+1rOiF7r71UBs3s5HAw0AK8IS731tOm+8BtxO6ef2Vu19yqO2KJLL8wmIefTeHx95fRuN6tXnowkGMGdxJ3UwlLlR0pjCf/86jkApsCz9uDqwmNK/CQZlZCvAIcDqQC8w1s5nunh3RpicwATjO3beZWdtvsS8ice+zFVsZn7GA5Xl7GH1UR249py+tGtcLuiyRUhX1PuoGYGaPAzPdfVZ4+SzgtCi2PQzIcffl4de9AIwCsiPa/Ah4xN23hd9zU2V2QiTe7dhXyL2vf83zn62mc4sGPHP1ME7s1SboskS+IZp7CkPd/doDC+7+uplF0yOpE7AmYjkXGF6mTS8AM/uI0CWm2939jSi2LZIQ3J03skLdTDfv3s8Pj+/Gb87oRcO6up0n8Sman8zNZnYL8A9Cl5MuA7ZE8bryLpCWHWCvNtATOInQh+T+Y2b93X37/2zIbBwwDiA1tex00SLxacOOfG59OYt/Z2+kb4emPHFFOgM7Nw+6LJEKRRMKFwMTgemEfql/EF53KLlAl4jlzsC6ctp86u6FwAozW0woJOZGNnL3KcAUgPT09IOO3CoSD0pKnOfmrOK+cDfTCWf15urju1FH3UwlAUTz4bWtwC/NrLG77z6Mbc8FeppZN2AtcBFQtmfRDEIB87SZtSZ0OWn5YbyHSFxZunEX4zMymb9qG8f3aM1d5/ena6tGQZclErVopuM8FngCaAykmtkg4Mfu/tOKXufuRWb2c2A2ofsFT7r7QjObBMxz95nh584ws2ygGPidu0dzaUokruwvKuaRd5fx2Hs5NFI3U0lg5l7x1RgzmwOMJdQD6ejwuix3718N9X1Denq6z5s3L4i3FinX3JVbGT9tAcvUzVTimJnNd/f0Q7WLqguEu68p8xdPcWULE0kWO/ND3Uz/OWc1nZo34OmrhnLSkfqojSS2aEJhTfgSkptZXeAXwKLYliUS397IWs9tL6ubqSSfaH6KryU0VEUnQr2F3gR+FsuiROLVhh353PZyFm+qm6kkqWh6H20GLq2GWkTiVkmJ89xnq7n/9a8pKC5h/Fm9uUbdTCUJVTQg3v/xzQ+blXL3X8SkIpE4s3TjLiZkZDJv1TaO69GKu88foG6mkrQqOlNQFx+p0fYXFfPou8t4NNzN9IGxAxk7pLO6mUpSq2hAvGeqsxCReDJ/1VZunJZJzqbdnDeoI7ed25fW6mYqNUA0H177N3DhgfGIzKwF8IK7nxnr4kSq2678Qh6YvZi/f7qKjs0a8NRVQzlZ3UylBomm91GbyAHqNO+BJKu3sjdyy4wsNu7K58pj07j+jCNpVE/dTKVmieYnvtjMUt19NYCZdaWCG9AiiSZv135uf2Uhry1Yz5HtmvDYZYM5OrVF0GWJBCKaULgZ+NDM3g8vn0B4GGuRRObuvDQ/l7teW8S+gmKuP6MX4044grq11c1Uaq4KQ8FC3SwWAoOBYwjNkfDr8GcXRBLWqi17mJCRycfLtjAsrSV3jxlAj7aNgy5LJHAVhoK7u5nNcPchwKvVVJNIzBQVl/C3D1fw+38voW5KLe46vz8XD02lVi11MxWB6C4ffWpmQ9197qGbisSvrLU7uHHaAhau28npfdsxeVR/2jerH3RZInElmlA4Gfixma0C9hC6hOTuPjCmlYlUkX0FxfzxrSU88eEKWjaqy2OXDmZk//b6EJpIOaIJhbNiXoVIjHyUs5kJGZms3rqXi4d1YfzIPjRrWCfoskTiVkVjHzV1953ArmqsR6RKbN9bwF2vLeKl+bl0a92I5390DCOOaBV0WSJxr6IzhX8C5wDzCX0uIfJc24HuMaxLpFLcndcy13P7zIVs21vIT086gl+c2pP6dVKCLk0kIVQ09tE54X+7VV85IpW3bvs+bns5i7cWbWJg52Y8e/Vw+nZsGnRZIgklmrGPzgfecfcd4eXmwEnuPiPWxYlEo6TEeW7OKu57YzFFJSXc8t0+XHlsGrU114HIYYvmRvNEd59+YMHdt5vZREChIIFbunEX4zMymb9qG9/p2Zq7Rg8gtVXDoMsSSVjRhEJ5f25plDAJ1P6iYh57bxmPvruMhvVSeOjCQYwZ3EndTEW+pWh+uc8zs98DjxC6wXwdoZvPIoGYv2ob46ctYOmm3Yw6qiO3nqO5DkSqSjShcB1wK/AioR5IbwI/i2VRIuXZvb+IB974mmc/XUWHpvV56sqhnNxbo7iLVKVDhoK77wHGV0MtIgf19qLQXAcbduZzxYg0rj/zSBprrgORKhdN76NewPVAWmR7dz8ldmWJhOTt2s8dryzk1QXr6dWuMY9ceiyDNdeBSMxE86fWS8DjwBNAcWzLEQlxd6bOz+XO8FwHvzm9F9eeqLkORGItmlAocvfHKrNxMxsJPAykAE+4+70HaTeWUPgMdfd5lXkvSR6rt+xlwvQFfJSzhfSuLbj3ggH0aNsk6LJEaoRoQuEVM/spMB3Yf2Clu2+t6EVmlkKox9LpQC4w18xmunt2mXZNgF8Acw6zdkkyRcUlPPlRaK6D2rVqMXl0fy4dprkORKpTNKFwRfjf30Wsi2bso2FAjrsvBzCzF4BRQHaZdpOB+wndt5AaKmvtDsZnLCBr7U5O69OOyaP70aFZg6DLEqlxoul9VNmxjzoBayKWc4HhkQ3M7Gigi7u/amYHDQUzG0d4XujU1NRKliPxKL+wmD++tZS//mc5LRrW5dFLB3OW5joQCcxB79qZ2Q0Rjy8s89zdUWy7vP/VHrGNWsAfgN8eakPuPsXd0909vU2bNlG8tSSCj3M2c+YfP+Dx95cxdnBn3v7NiZw9oIMCQSRAFXXluCji8YQyz42MYtu5QJeI5c7AuojlJkB/4D0zWwkcA8w0s/Qoti0JbMfeQm6Y+hWXPDEHA/75o+HcN3agJr8RiQMVXT6ygzwub7k8c4GeZtYNWEsoZC458GR41NXWpRs0ew+4Xr2Pkpe7MytzAxNnLmTb3gJ+ctIR/FJzHYjElYpCwQ/yuLzlb77YvcjMfg7MJtQl9Ul3X2hmk4B57j7zsKuVhLV+xz5unbGQtxZtpH+npjxz9VD6dWwWdFkiUkZFoTDIzHYSOitoEH5MeLl+NBt391nArDLrbjtI25Oi2aYklpIS57nPVnPf619TVFLCzWf34arjNNeBSLyqaOY1ndPLt5KzaRfjp2Uyb9U2ju/RmrvP11wHIvFOI4pJlSsoKuHx95fx53dyaFA3hQcvHMQFmutAJCEoFKRKzV+1jQkZC1iycTfnDurIbef0pU0TzXUgkigUClIldu8v4sHZi3nmk5V0aFqfJ69M55Te7YIuS0QOk0JBvrV3vt7ILdOzWK+5DkQSnv7nSqVt3r2fSa9kM/OrdfRs25ip1x7LkK6a60AkkSkU5LC5Oxmfr2Xya9ns2V/Er0/rxbUndadebXVYE0l0CgU5LGu27uWm6Zn8Z+lmhnRtwb1jBtCzneY6EEkWCgWJSlFxCU9/vJKH3lxCSi1j8qh+XDq8q+Y6EEkyCgU5pIXrdjB+WiaZa3dwWp+2TBrVn47NNdeBSDJSKMhB5RcW8/DbS5nywXJaNKzDI5cM5uwBmutAJJkpFKRcHy/bzE0ZmazcspfvpXfmprP70Lxh3aDLEpEYUyjI/9ixt5B7Xl/EC3PXkNqyIc/9cDjH9Wh96BeKSFJQKAgQ6mb6RtYGbpu5kK17Cvjxid351am9aFBX3UxFahKFgrBxZz63zsjizeyN9OvYlKeuHEr/TprrQKQmUijUYO7OS/NymfxaNgVFJYw/qzc/PL6b5joQqcEUCjVU5IfQhnVryX0XDKRb60ZBlyUiAVMo1DAlJc6zn6zk/tmLMWDy6P5cOixVH0ITEUChUKMsy9vN+GkLmLtyGyf2asPdYwbQSR9CE5EICoUaoKi4hL/+ZwV/eGsJDepoJjQROTiFQpJbtH4nN0xdQObaHYzs155Jo/vRtkn9oMsSkTilUEhS+4uKeeSdHB59bxnNG9bh0UsHc/aADkGXJSJxTqGQhL5cs50bpn7Fko27Of/oTtx2Tl9aNNIQFSJyaAqFJLKvoJjf/3sxf/twBe2a1uepK4dycu+2QZclIglEoZAkPl2+hfHTFrByy14uGZ7KhLN606R+naDLEpEEo1BIcLvyC7nvja/5x6erSW3ZkH/+aDjHHqEB7ESkcmIaCmY2EngYSAGecPd7yzz/G+CHQBGQB1zt7qtiWVMyeW/xJm7KyGT9znyuOb4bvz2jFw3rKudFpPJi9hvEzFKAR4DTgVxgrpnNdPfsiGZfAOnuvtfMfgLcD3w/VjUli+17C5j0ajYZn6+lR9vGTPvJsQxObRF0WSKSBGL5Z+UwIMfdlwOY2QvAKKA0FNz93Yj2nwKXxbCepPB65npufXkh2/cWcN0pPfj5KT2oV1vDW4tI1YhlKHQC1kQs5wLDK2h/DfB6eU+Y2ThgHEBqampV1ZdQ8nbtZ+LMLGZlbqBfx6Y8c/VQ+nXU8NYiUrViGQrljaHg5TY0uwxIB04s73l3nwJMAUhPTy93G8nK3Zn+xVomvZrN3oJifnfmkYw7oTt1NLy1iMRALEMhF+gSsdwZWFe2kZmdBtwMnOju+2NYT8JZt30fN03P5L3FeQzp2oL7LhhIj7aNgy5LRJJYLENhLtDTzLoBa4GLgEsiG5jZ0cBfgJHuvimGtSSUkhLn+bmruWfW1xSXOBPP7cvlI9JI0fDWIhJjMQsFdy8ys58Dswl1SX3S3Rea2SRgnrvPBB4AGgMvhUfsXO3u58WqpkSwassebpy2gE+Xb+W4Hq245/yBpLZqGHRZIlJDxLRTu7vPAmaVWXdbxOPTYvn+iaS4xHnqoxU8+OZi6tSqxb1jBvD9oV00vLWIVCt90ikOLNm4ixumLuDLNds5rU9b7hw9gPbNNLy1iFQ/hUKACotLePy9ZfzfOzk0qpfCwxcdxXmDOursQEQCo1AISNbaHfxu6gIWrd/JOQM7cPt5/WjduF7QZYlIDadQqGb5hcU8/PZSpnywnFaN6jLlB0M4o1/7oMsSEQEUCtVq3sqt3DBtAcvz9vC99M7cfHZfmjXU8NYiEj8UCtVgz/4iHpi9mGc+WUnHZg149uphnNCrTdBliYh8g0Ihxj5cupnxGQvI3baPK0Z05YaRvWlUT992EYlP+u0UIzv2FXL3a4t4cd4aurduxEvXjmBoWsugyxIRqZBCIQbeyt7IzTMyydu1n2tPPIJfndaT+nU0vLWIxD+FQhXasns/d7ySzcyv1tG7fRP+enk6Azs3D7osEZGoKRSqgLvzyoL13D5zIbvyC/n1ab34yUlHULe2hrcWkcSiUPiWNu7M5+bpWby1aCODOjfj/rHHcGT7JkGXJSJSKQqFSnJ3XpqXy+TXsikoKuGms3tz9XHdqK3Jb0QkgSkUKmH9jn3cOC2TD5bkMaxbS+67YCDdWjcKuiwRkW9NoXAY3J2X5ucy+ZVsikqcSaP6cdnwrtTS5DcikiQUClHasCOfCRkLeHdxHsO7teSBsYM0+Y2IJB2FwiG4Oxmfr+WOVxZSUFzC7eGpMXV2ICLJSKFQgU0787lpeiZvLdrE0LQWPDB2EGm6dyAiSUyhUA535+Uv1zFx5kLyC4u59Zy+XHlsGik6OxCRJKdQKGP73gLGT8vkjYUbGNK1BQ+MHUj3No2DLktEpFooFCJ8tmIrv3rhC/J272fCWb354Xe66+xARGoUhQJQXOL8+Z0cHn57CaktGzLtJ8dqzCIRqZFFlV6RAAAKCUlEQVRqfChs3JnPL57/gjkrtnL+0Z2YPLo/jTXfgYjUUDX6t9+i9Tu56qm57Mwv5PffG8SYwZ2DLklEJFA1NhQ+WJLHT5/7nMb1ajPtJ8fSp0PToEsSEQlcjQyFf81dw4TpmfRs25inrhpKh2YNgi5JRCQuxHRITzMbaWaLzSzHzMaX83w9M3sx/PwcM0uLZT0Az36ykhumLeDYI1rx0rUjFAgiIhFiFgpmlgI8ApwF9AUuNrO+ZZpdA2xz9x7AH4D7YlUPwItzV3Pbyws5rU9b/nbFUJrUrxPLtxMRSTixPFMYBuS4+3J3LwBeAEaVaTMKeCb8eCpwqpnF5IMBM75Yy/iMTE7s1YZHLh2sWdFERMoRy9+MnYA1Ecu54XXltnH3ImAH0KrshsxsnJnNM7N5eXl5lSqmY/MGnN6nHX/5wRDq1U6p1DZERJJdLG80l/cXv1eiDe4+BZgCkJ6e/o3nozGsW0uGdWtZmZeKiNQYsTxTyAW6RCx3BtYdrI2Z1QaaAVtjWJOIiFQglqEwF+hpZt3MrC5wETCzTJuZwBXhx2OBd9y9UmcCIiLy7cXs8pG7F5nZz4HZQArwpLsvNLNJwDx3nwn8Dfi7meUQOkO4KFb1iIjIocX0w2vuPguYVWbdbRGP84ELY1mDiIhET/0yRUSklEJBRERKKRRERKSUQkFEREpZovUANbM8YFUlX94a2FyF5cSzmrSvoP1NZjVpXyF2+9vV3dscqlHChcK3YWbz3D096DqqQ03aV9D+JrOatK8Q/P7q8pGIiJRSKIiISKmaFgpTgi6gGtWkfQXtbzKrSfsKAe9vjbqnICIiFatpZwoiIlIBhYKIiJSqEaFgZiPNbLGZ5ZjZ+KDrqQpm1sXM3jWzRWa20Mx+GV7f0sz+bWZLw/+2CK83M/tT+HuwwMwGB7sHh8/MUszsCzN7NbzczczmhPf1xfAQ7ZhZvfByTvj5tCDrrgwza25mU83s6/AxHpGsx9bMfh3+Gc4ys+fNrH4yHVsze9LMNplZVsS6wz6WZnZFuP1SM7uivPeqCkkfCmaWAjwCnAX0BS42s77BVlUlioDfunsf4BjgZ+H9Gg+87e49gbfDyxDa/57hr3HAY9Vf8rf2S2BRxPJ9wB/C+7oNuCa8/hpgm7v3AP4QbpdoHgbecPfewCBC+510x9bMOgG/ANLdvT+hYfYvIrmO7dPAyDLrDutYmllLYCIwHBgGTDwQJFXO3ZP6CxgBzI5YngBMCLquGOzny8DpwGKgQ3hdB2Bx+PFfgIsj2pe2S4QvQjP3vQ2cArxKaCrXzUDtsseZ0BweI8KPa4fbWdD7cBj72hRYUbbmZDy2/Hee9pbhY/UqcGayHVsgDciq7LEELgb+ErH+f9pV5VfSnynw3x+6A3LD65JG+BT6aGAO0M7d1wOE/20bbpbo34c/AjcAJeHlVsB2dy8KL0fuT+m+hp/fEW6fKLoDecBT4ctlT5hZI5Lw2Lr7WuBBYDWwntCxmk/yHtsDDvdYVtsxrgmhYOWsS5p+uGbWGJgG/Mrdd1bUtJx1CfF9MLNzgE3uPj9ydTlNPYrnEkFtYDDwmLsfDezhv5cXypOw+xu+BDIK6AZ0BBoRuoRSVrIc20M52P5V237XhFDIBbpELHcG1gVUS5UyszqEAuE5d88Ir95oZh3Cz3cANoXXJ/L34TjgPDNbCbxA6BLSH4HmZnZg9sDI/Snd1/DzzQhN95oocoFcd58TXp5KKCSS8dieBqxw9zx3LwQygGNJ3mN7wOEey2o7xjUhFOYCPcO9GeoSuok1M+CavjUzM0JzXC9y999HPDUTONAz4QpC9xoOrL883LvhGGDHgdPXeOfuE9y9s7unETp+77j7pcC7wNhws7L7euB7MDbcPmH+mnT3DcAaMzsyvOpUIJskPLaELhsdY2YNwz/TB/Y1KY9thMM9lrOBM8ysRfjs6ozwuqoX9A2YarrJczawBFgG3Bx0PVW0T8cTOn1cAHwZ/jqb0PXVt4Gl4X9bhtsboV5Yy4BMQr09At+PSuz3ScCr4cfdgc+AHOAloF54ff3wck74+e5B112J/TwKmBc+vjOAFsl6bIE7gK+BLODvQL1kOrbA84TulxQS+ov/msocS+Dq8H7nAFfFql4NcyEiIqVqwuUjERGJkkJBRERKKRRERKSUQkFEREopFEREpJRCQRKCmbmZPRSxfL2Z3V5F237azMYeuuW3fp8LwyOevnsYr5llZs0r+X67K/M6qdkUCpIo9gNjzKx10IVECo/CG61rgJ+6+8nRvsDdz3b37YdfmUjlKBQkURQRmrv212WfKPuX/oG/kM3sJDN738z+ZWZLzOxeM7vUzD4zs0wzOyJiM6eZ2X/C7c4Jvz7FzB4ws7nhse1/HLHdd83sn4Q+YFS2novD288ys/vC624j9IHDx83sgTLtTzKzD8xsupllm9njZlYr/NxKM2ttZkPDNdQ3s0YWmn+gf7jN7yJqvKOcejqEt/9luKbvHN63XmqS2oduIhI3HgEWmNn9h/GaQUAfQuPjLAeecPdhFpqU6DrgV+F2acCJwBHAu2bWA7ic0DADQ82sHvCRmb0Zbj8M6O/uKyLfzMw6EhrjfwiheQDeNLPR7j7JzE4Brnf3eeXUOYzQfB+rgDeAMYTGPALA3eea2UzgTqAB8A93zzKzMwiNvT+M0KdhZ5rZCe7+QcS2LyE09PRd4TObhofx/ZMaRqEgCcPdd5rZs4QmZdkX5cvmengcIDNbBhz4pZ4JRF7G+Ze7lwBLzWw50JvQ+DIDI85CmhH6BVwAfFY2EMKGAu+5e174PZ8DTiA0VEVFPnP35eHXPE/orGJqmTaTCI3llU/oe0C4xjOAL8LLjcM1RobCXODJ8ACKM9z9y0PUIjWYLh9JovkjoWvzjSLWFRH+WQ4PqlY34rn9EY9LIpZL+N8/isqO93JguOLr3P2o8Fc3dz8QKnsOUl95QxxHo7z3L6sloV/6TQiNAXTg/e6JqLGHu//tfzYUOms4AVgL/N3MLq9kjVIDKBQkobj7VuBf/Hd6RoCVhC7XQGhs/jqV2PSFZlYrfJ+hO6EZr2YDPwn/hY2Z9bLQZDcVmQOcGL4PkEJoxqz3o3j/YeGRfGsB3wc+LKfNFOBW4Dn+Ow3lbOBqC82rgZl1MrO2kS8ys66E5qP4K6GRdRNqDmepXrp8JInoIeDnEct/BV42s88IjTh5sL/iK7KY0C/vdsC17p5vZk8QutfwefgMJA8YXdFG3H29mU0gNPSzAbPc/eWKXhP2CXAvMIDQpZ/pkU+G/7ovcvd/hsPmYzM7xd3fNLM+wCehEtkNXMZ/x+eH0MiyvzOzwvDzOlOQg9IoqSIBM7OTCN2APifoWkR0+UhERErpTEFERErpTEFEREopFEREpJRCQURESikURESklEJBRERK/T8YdzEABzbelgAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"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": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"141\n"
]
},
{
"data": {
"text/plain": [
"373.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(len(nbpix))\n",
"nbpix[50]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0783462701860282e-10\n"
]
}
],
"source": [
"print(bkg)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"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": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Encircled flux')"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"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": 17,
"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": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"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": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"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": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"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": 21,
"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 < 8))\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": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"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": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"rf = 1.000, ff = 1.039, residual = 0.007\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": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"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, 100])\n",
"plt.xlabel('Radius [arcsec]')\n",
"plt.ylabel('Encircled flux')\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"563841326718.8872"
]
},
"execution_count": 25,
"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": 26,
"metadata": {},
"outputs": [],
"source": [
"psfok=psfok/1.0E6"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Validation\n",
"To check PSF is reasonable, lets look at a 100 micron source, e.g. `-------`. We can see from `AKARI-SEP_PACS100_v0.9.fits` that it has a flux of -- mJy. Maximum value in our normalised PSF gives a peak ---.\n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from astropy.table import Table"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: './data/AKARI-SEP_PACSxID24_v1.fits'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mPACScat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mTable\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'./data/AKARI-SEP_PACSxID24_v1.fits'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/astropy/table/table.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(cls, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2548\u001b[0m \u001b[0;31m# RST table and inserts at the end of the docstring. DO NOT REMOVE.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2549\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2550\u001b[0;31m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mio_registry\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcls\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2551\u001b[0m \u001b[0;31m# For some readers (e.g., ascii.ecsv), the returned `out` class is not\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2552\u001b[0m \u001b[0;31m# guaranteed to be the same as the desired output `cls`. If so,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/astropy/io/registry.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(cls, format, *args, **kwargs)\u001b[0m\n\u001b[1;32m 500\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 501\u001b[0m \u001b[0mctx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_readable_fileobj\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'binary'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 502\u001b[0;31m \u001b[0mfileobj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mctx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__enter__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 503\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 504\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.6/contextlib.py\u001b[0m in \u001b[0;36m__enter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__enter__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 81\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"generator didn't yield\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/astropy/utils/data.py\u001b[0m in \u001b[0;36mget_readable_fileobj\u001b[0;34m(name_or_obj, encoding, cache, show_progress, remote_timeout)\u001b[0m\n\u001b[1;32m 191\u001b[0m \u001b[0mname_or_obj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcache\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcache\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshow_progress\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mshow_progress\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 192\u001b[0m timeout=remote_timeout)\n\u001b[0;32m--> 193\u001b[0;31m \u001b[0mfileobj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFileIO\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname_or_obj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 194\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_url\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mcache\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 195\u001b[0m \u001b[0mdelete_fds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfileobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: './data/AKARI-SEP_PACSxID24_v1.fits'"
]
}
],
"source": [
"PACScat=Table.read('./data/AKARI-SEP_PACSxID24_v1.fits')"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'PACScat' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mPACScat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'HELP_ID'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'PACScat' is not defined"
]
}
],
"source": [
"PACScat['HELP_ID']"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'PACScat' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mPACScat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mPACScat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'HELP_ID'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;34m'AKARI-SEP-PACSxID24-1-11009'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'PACScat' is not defined"
]
}
],
"source": [
"PACScat[PACScat['HELP_ID']=='AKARI-SEP-PACSxID24-1-11009']"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Max PSF = 66.7167 Jy/sr, off pixel Max PSF = 50.0188 Jy/sr\n"
]
}
],
"source": [
"cpix=np.int((hd['NAXIS1']+1)/2.0)\n",
"\n",
"print(\"Max PSF = {:.4f} Jy/sr, off pixel Max PSF = {:.4f} Jy/sr\".format(psfok[cpix-1,cpix-1]*0.08,psfok[cpix-2,cpix-2]*0.08))"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/mc741/anaconda3/lib/python3.6/site-packages/mpl_toolkits/axes_grid/__init__.py:12: MatplotlibDeprecationWarning: \n",
"The mpl_toolkits.axes_grid module was deprecated in Matplotlib 2.1 and will be removed two minor releases later. Use mpl_toolkits.axes_grid1 and mpl_toolkits.axisartist, which provide the same functionality instead.\n",
" obj_type='module')\n"
]
},
{
"ename": "OSError",
"evalue": "File not found: ./data/input_data/AKARI-SEP_PACS100_v0.9.fits",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_style\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"white\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mcmap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcubehelix_palette\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstart\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m.5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrot\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m.75\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mas_cmap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mfig\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maplpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFITSFigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'./data/input_data/AKARI-SEP_PACS100_v0.9.fits'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecenter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mPACScat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mPACScat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'HELP_ID'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;34m'AKARI-SEP-PACSxID24-1-69605'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'RA'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mPACScat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mPACScat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'HELP_ID'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;34m'AKARI-SEP-PACSxID24-1-69605'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Dec'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mradius\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.004\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow_colorscale\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvmin\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mvmax\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcmap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcmap\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/aplpy/core.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, data, hdu, figure, subplot, downsample, north, convention, dimensions, slices, auto_refresh, **kwargs)\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/aplpy/decorators.py\u001b[0m in \u001b[0;36m_auto_refresh\u001b[0;34m(f, *args, **kwargs)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mmydata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnesting\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmydata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'nesting'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0mmydata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnesting\u001b[0m \u001b[0;34m-=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/aplpy/core.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, data, hdu, figure, subplot, downsample, north, convention, dimensions, slices, auto_refresh, **kwargs)\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 216\u001b[0m self._data, self._header, self._wcs = self._get_hdu(data, hdu, north, \\\n\u001b[0;32m--> 217\u001b[0;31m convention=convention, dimensions=dimensions, slices=slices)\n\u001b[0m\u001b[1;32m 218\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_wcs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_header\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'NAXIS%i'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdimensions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 219\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_wcs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mny\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_header\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'NAXIS%i'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdimensions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/aplpy/core.py\u001b[0m in \u001b[0;36m_get_hdu\u001b[0;34m(self, data, hdu, north, convention, dimensions, slices)\u001b[0m\n\u001b[1;32m 297\u001b[0m \u001b[0;31m# Check file exists\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexists\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 299\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mIOError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"File not found: \"\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 300\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 301\u001b[0m \u001b[0;31m# Read in FITS file\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mOSError\u001b[0m: File not found: ./data/input_data/AKARI-SEP_PACS100_v0.9.fits"
]
}
],
"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('./data/input_data/AKARI-SEP_PACS100_v0.9.fits')\n",
"fig.recenter(PACScat[PACScat['HELP_ID']=='AKARI-SEP-PACSxID24-1-69605']['RA'],PACScat[PACScat['HELP_ID']=='AKARI-SEP-PACSxID24-1-69605']['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_AKARI-SEP_20190228sr.fits',output_verify='fix+warn', overwrite=True)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"947.2309648442018"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.max(psfok)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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0F+5ckXr1q1TaWmp1q1bp6tXrw57vX379qm0tFSlpaXat29f+Pjbb7+twsJCzZs3L14jDzHc6+sO1NPTo40bN6qkpESrVq3SuXPnwm9rampSSUmJysrK9NVXX8Vz7GFFu5ZQKKRnnnlG8+bNU2NjY7zHHla0a/n6669VXV2tiooKVVdX69ixY/EefYho19LR0aEVK1ZoxYoVqqys1KFDh+I9+rC8fM1I0m+//aZ58+bpgw8+iNfItxXtWs6dO6fZs2eH75/6+vroBnBjwNatW11TU5Nzzrmmpib35ptvDrlOKBRyfr/fhUIhd+XKFef3+92VK1ecc8599913LhgMurlz58Z17n69vb2uqKjInT171t28edNVVFS4U6dODbrOJ5984l599VXnnHMtLS3uxRdfdM45d+rUKVdRUeFu3rzpzp4964qKilxvb2/c19DPy1r+/PNP980337g9e/a4hoaGuM9+Ky9r+eGHH1x3d7dzzrmffvrJ5efnx3f4W3hZy40bN9zff//tnHMuGAy6hQsXhi8nipf19NuwYYOrra11zc3NcZt7OF7W0tXV5crLyz3PMCYe0be1tamqqkqSVFVVpdbW1iHXOXr0qBYvXqxp06YpPT1dixcvDj/6nTt3bkJfFOV2r687UHt7u5588klJUllZmY4dOybnnNra2lReXq60tDRlZWUpOztbHR0diViGJG9rmTp1qh5//HFNmjQpEaMP4WUtDz/8sDIzMyVJOTk56unpUU9PT9zX0M/LWqZMmaLU1H83sr1586ZSUlLiPv+tvKxHklpbW3XfffclxdbpXtcSC2Mi9JcuXQqHOiMjQ5cvXx5yndu9hm0yiGS2YDCoGTNmSJJSU1N19913KxQKJd26vKwl2cRqLQcOHNBDDz2ktLS00R/6Nryu5eTJkyovL1dlZaUaGhrC4U8UL+u5ceOG3n//fW3YsCGuM9+O1/vm3Llzqqqq0po1a/Ttt99GNUNi780Bnn32WV28eHHI8Y0bN0b0/sN990uGRyZSZLPd7jrJti4va0k2sVjLqVOntG3bNn344YexH3AEvK5lzpw5CgQC+uWXX/TSSy+poKAgof/y8rKed999V2vXrtWdd945avONhJe1ZGRk6Msvv9T06dP1/fff64UXXlAgENBdd901ohmSJvQfffTRbd9277336sKFC8rIyNCFCxd0zz33DLmOz+fTiRMnwpeDwaDmz58/GqOOWCSvr+vz+fT777/L5/Opt7dX169f17Rp05LutXm9rCXZeF1Ld3e3NmzYoK1bt2rWrFlxnf1WsbpfHnjgAU2ZMkU///yzcnNz4zL7cLys5+TJkzpw4IC2bduma9eu6Y477tCkSZO0Zs2aeC8jPGe0a0lJSQn/S/HRRx/VrFmzdObMmRHfN2PiqRu/36/9+/dLkvbv36+ioqIh18nPz9fRo0d19epVXb16VUePHlV+fn68Rx1WJK+v6/f7w78pdODAAS1cuFApKSny+/0KBALq6elRV1eXOjs7NXv27EQsQ5K3tSQbL2u5du2annvuOdXV1emxxx5LxPiDeFlLV1eXent7Jf27SdaZM2cSvsmgl/Xs2bNH7e3tam9v19q1a/X8888nLPKSt7VcvnxZfX19khT++s/Kyhr5EJ5/nBsHly9fdjU1Na6kpMTV1NS4UCjknHOuo6PDvfLKK+Hr7d271xUXF7vi4mL36aefho9v3brVLVmyxD344INuyZIlbseOHXFfw+HDh11paakrKipyO3fudM45984777jW1lbnnHN//fWXq62tdcXFxW7lypXu7Nmz4ffduXOnKyoqcqWlpe7w4cNxn/1WXtaydOlSl5eX5+bOneuWLFky5LcP4i3atbz33ntuzpw5rrKyMvzfxYsXE7YO56Jfy759+9yyZctcZWWlq6qqcocOHUrYGgby8v9Zvx07diT8t26ci34tX3zxhVu2bJmrqKhwVVVVrq2tLaqPz+6VAGDcmHjqBgAQPUIPAMYRegAwjtADgHGEHgCMI/QAYByhBwDjCD0AGPc/DJdAziDnAvMAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"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": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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+PGqqqq64fkjeS39+vr6VF9fryVLltz0fJG8ls7OTtXV1amurk4HDhwYCOS1nPCYmTFjhkpKSrR69WqVlJTo4YcfVnT0jY/dGslrCcaN5g/FuiI69D///LPq6+vldrtVVlamQ4cO6c0331RXV5cuX74s6epLO/1/O7pcLv3777+Srobo/Pnzmjx5ctjmH05iYqIkacqUKcrKylJLS4umTJky8E/MM2fOKD4+XtL1x+UdvNZwc7lccrlcmjNnjiRpyZIlam1tdeRa+jU0NGjWrFm67777JMmRazl48KAeeOABxcfHKzY2VtnZ2Tp69KhjHzNFRUWqqanRzp07NXnyZKWkpDjydhlspPOH4vjcER36F198UQ0NDaqvr9fWrVs1f/58vf/++5o3b5727Nkj6eq70f3HqnW73QPvSO/Zs0fz58+PqL/Ru7u7deHChYGff/zxR82cOVNut1u7d++WJO3evVuLFy+WpIHtxhj98ssvmjBhQsTccadOnSqXy6Xjx49Luvra9owZMxy5ln5er1cej2fgtBPXcv/99+vXX3/VxYsXZYxRU1OTHnzwQcc+Zs6ePStJ+ueff7R3717l5uY68nYZbKTzL1q0SI2Njers7FRnZ6caGxu1aNGikV3p6N5L/u8dOnRo4FM3J0+eNIWFhSYzM9OUlpaa3t5eY4wxPT09prS01GRmZprCwkJz8uTJcI58nZMnT5q8vDyTl5dn/ve//5mPPvrIGGPMuXPnTHFxscnKyjLFxcXG7/cbY4y5cuWKeeONN8zixYtNbm6uaWlpCef412ltbTXLly83ubm5Zu3ataajo8Oxa+nu7jZz5841XV1dA9ucupYPPvjA5OTkGI/HY1566SXT29vr2MfMypUrzdKlS01eXp45ePCgMcZZt8sLL7xgFi5caB555BHz5JNPml27do1q/q+++spkZmaazMxM8/XXX494DvZeCQCWi+iXbgAAt4/QA4DlCD0AWI7QA4DlCD0AWI7QA4DlCD0AWI7QA4Dl/g/PSoenI+ksRAAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(psfok.flatten(),bins=np.arange(400,1000,5));\n",
"plt.yscale('log')"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1024"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(psfok.flatten())"
]
},
{
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}