{
"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/NGP_PACS100_v0.9.fits')\n",
"stackhd = fits.open('./data/output_data/100um/NGP-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": [
"-3.0000000726000002"
]
},
"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": "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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": [
"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": [
"8.721292495727539\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": "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\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": [
"75\n"
]
},
{
"data": {
"text/plain": [
"5.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(len(nbpix))\n",
"nbpix[1]"
]
},
{
"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[30:], encircled_flux[30:], 1)\n",
"bkg = p[0]/resol**2\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.8455350073667476e-09\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": 25,
"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 > 1 ) & (radii < 20))\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": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 26,
"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": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"rf = 1.359, ff = 1.170, residual = 0.021\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": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 28,
"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, 200])\n",
"plt.xlabel('Radius [arcsec]')\n",
"plt.ylabel('Encircled flux')\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"901913993458.9473"
]
},
"execution_count": 29,
"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\n",
"\n",
"## As units of map in MJy/sr, divide by 1E6"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"psfok=psfok/1E6"
]
},
{
"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 `NGC_PACS100_v0.9.fits` that it has a flux of 8 mJy. Maximum value in our normalised PSF gives a peak ---.\n"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from astropy.table import Table"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: './data/NGC_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/NGC_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/NGC_PACSxID24_v1.fits'"
]
}
],
"source": [
"PACScat=Table.read('./data/NGC_PACSxID24_v1.fits')"
]
},
{
"cell_type": "code",
"execution_count": 33,
"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": 34,
"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'NGP-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']=='NGP-PACSxID24-1-11009']"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Max PSF = 16.0334 Jy/sr, off pixel Max PSF = 15.0891 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.008,psfok[cpix-2,cpix-2]*0.008))"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"ename": "OSError",
"evalue": "File not found: ./data/input_data/NGP_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/NGP_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'NGP-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'NGP-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/NGP_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/NGP_PACS100_v0.9.fits')\n",
"fig.recenter(PACScat[PACScat['HELP_ID']=='NGP-PACSxID24-1-69605']['RA'],PACScat[PACScat['HELP_ID']=='NGP-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_NGP_20190301sr.fits',output_verify='fix+warn', overwrite=True)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2105.2578011580067"
]
},
"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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5ebm6tChQ6Ht7777rrKysrRw4cJ4jdzPQNfX7a2rq0tbt25VTk6OSktL1d7eHnpbTU2NcnJylJeXp++++y6eYw8o0rUEAgG98MILWrhwoaqqquI99oAiXcv333+v4uJiFRQUqLi4WCdPnoz36P1EupaWlhatXbtWa9euVWFhoY4dOxbv0QcUzfeMJP31119auHChPv7443iNPKhI19Le3q558+aFPj+VlZWRDeBGgerqaldTU+Occ66mpsa98847/e4TCASc1+t1gUDAXb161Xm9Xnf16lXnnHM//fST8/v9bsGCBXGdu0d3d7fLzs5258+fd7du3XIFBQXuzJkzfe7zxRdfuNdee80551xdXZ179dVXnXPOnTlzxhUUFLhbt2658+fPu+zsbNfd3R33NfSIZi3//POP++GHH9zBgwfdrl274j773aJZyy+//OI6Ojqcc8799ttvLiMjI77D3yWatdy4ccPdvn3bOeec3+93S5cuDd1OlGjW02PLli2uvLzc1dbWxm3ugUSzlra2Npefnx/1DKNij76hoUFFRUWSpKKiItXX1/e7z4kTJ7R8+XJNnTpVU6ZM0fLly0N7vwsWLEjoRVEGu75ub42NjXr22WclSXl5eTp58qScc2poaFB+fr7Gjx+v1NRUzZ49Wy0tLYlYhqTo1jJ58mQ988wzmjBhQiJG7yeatTzxxBNKSUmRJKWlpamrq0tdXV1xX0OPaNYyadIkjR3774lsb926paSkpLjPf7do1iNJ9fX1evTRR0fEqdOjXUssjIrQX758ORTq5ORkXblypd99BruG7UgQzmx+v18zZsyQJI0dO1YPP/ywAoHAiFtXNGsZaWK1liNHjujxxx/X+PHjh3/oQUS7ltOnTys/P1+FhYXatWtXKPyJEs16bty4oY8++khbtmyJ68yDifZz097erqKiIq1fv14//vhjRDMk9rPZy4svvqhLly71275169aw3n+gv/1Gwp6JFN5sg91npK0rmrWMNLFYy5kzZ7Rnzx598sknsR9wCKJdy/z58+Xz+fTHH39o27ZtyszMTOi/vKJZz/vvv68NGzbowQcfHLb5hiKatSQnJ+vbb7/VtGnT9PPPP+vll1+Wz+fTQw89NKQZRkzoP/vss0HfNn36dF28eFHJycm6ePGiHnnkkX738Xg8am5uDt32+/1avHjxcIw6ZOFcX9fj8ejvv/+Wx+NRd3e3rl+/rqlTp464a/NGs5aRJtq1dHR0aMuWLaqurtasWbPiOvvdYvV5mTt3riZNmqTff/9d6enpcZl9INGs5/Tp0zpy5Ij27Nmja9eu6YEHHtCECRO0fv36eC8jNGeka0lKSgr9S/Gpp57SrFmzdO7cuSF/bkbFoRuv16vDhw9Lkg4fPqzs7Ox+98nIyNCJEyfU2dmpzs5OnThxQhkZGfEedUDhXF/X6/WGXil05MgRLV26VElJSfJ6vfL5fOrq6lJbW5taW1s1b968RCxDUnRrGWmiWcu1a9e0efNmVVRU6Omnn07E+H1Es5a2tjZ1d3dL+vdsiOfOnUv42WSjWc/BgwfV2NioxsZGbdiwQS+99FLCIi9Ft5YrV64oGAxKUuj7PzU1dehDRP3j3Di4cuWKKysrczk5Oa6srMwFAgHnnHMtLS1u586doft9+eWXbtWqVW7VqlXuq6++Cm2vrq52K1ascI899phbsWKF27dvX9zX0NTU5HJzc112drbbv3+/c8659957z9XX1zvnnLt586YrLy93q1atciUlJe78+fOh992/f7/Lzs52ubm5rqmpKe6z3y2ataxcudItWrTILViwwK1YsaLfqw/iLdK1fPDBB27+/PmusLAw9N+lS5cStg7nIl/LoUOH3OrVq11hYaErKipyx44dS9gaeovm66zHvn37Ev6qG+ciX8s333zjVq9e7QoKClxRUZFraGiI6Pk5TTEAGDcqDt0AACJH6AHAOEIPAMYRegAwjtADgHGEHgCMI/QAYNz/ATEEYRWS+jFpAAAAAElFTkSuQmCC\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": 48,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(psfok.flatten(),bins=np.arange(1800,2000,2));\n",
"plt.yscale('log')"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"484"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(psfok.flatten())"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 50,
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}