Skip to content

Instantly share code, notes, and snippets.

@pllim
Created June 21, 2016 16:15
Show Gist options
  • Save pllim/1e426178d0a61132a6fbed2daaf8d03d to your computer and use it in GitHub Desktop.
Save pllim/1e426178d0a61132a6fbed2daaf8d03d to your computer and use it in GitHub Desktop.
Harry's ofilter tests
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from scipy import stats\n",
"import ofiltsky\n",
"from astropy.stats import sigma_clipped_stats\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Testing robust background estimation methods\n",
"----------\n",
"\n",
"This notebook is an attempt to devise a test of robust background estimation methods on simulated data. To simplify the calculations, all the arrays are one dimensional. \n",
"\n",
"The \"sky\" consists of three components:\n",
"\n",
" * clean pixels whose values are drawn from a normal distribution with a mean of 100 plus a small offset and small sigma\n",
" * \"hot pixels\" drawn from a lognormal distribution with a fairly low mean (~10) and with a broad sigma \n",
" * \"cosmic rays\" drawn from a lognormal distribution with a fairly high mean (1000) and narrower sigma.\n",
" \n",
"In the experiment at the end of the notebook there is also a \"source\"\n",
"\n",
" * Source flux = 1000 spread over 5 pixels\n",
" \n",
"We try versions with and without quantization. In the case of quantization, we turn everything to integers before calculating any of the statistical quantities."
]
},
{
"cell_type": "code",
"execution_count": 220,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def cleansky(mean=100.,sigma=1.,offset=0.,nsamp=100000):\n",
" return stats.norm(loc=mean+offset,scale=sigma).rvs(nsamp)\n",
"def hotpix(mean=np.log(10.),sigma=2.,nsamp=100000):\n",
" return np.random.lognormal(mean=mean,sigma=sigma,size=nsamp)\n",
"def cosmicray(mean=np.log(1000.),sigma=1.,nsamp=100000):\n",
" return np.random.lognormal(mean=mean,sigma=sigma,size=nsamp)"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nrBFftR5Z0AAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12d722e90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"n,bins,patches = plt.hist(cleansky(),np.arange(95,105,0.1))"
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nFhI0vej3Nk9FjaeCdfaXdfZXr4GwitNrI3Cg6/lzwJbTXMMinOx7m3+8gHWmn4/M8/oInQzstB89\nOgL8P6pG+Ju/+QHTXxP68Y9/YqbPdHunbXrdEZI1x205CbASWNXu2F7D6tXFOees4Uc/+hGHD6/k\n6NEfAy+zevV5HD78fxkdHeWFF17ghz88Cvwtb3/7FfzJnzzB0aPF6tVHZ67G2r9//yve+fR02J13\n3smNN9440/77v38nL730Ar/1Wx+eWX7ppReOW6d7G7O35xSbdJr0kiaLfQD/BPhc1/NfAT4zR78h\nGB0MwwhkoevMt50TTW0t9rXZo52RBT4Wuu7KOdab6/mJ9n2yEdqJtj3XdqmVK1ceN4I7cZ1rZtpW\nrDhnVp81c/TPHK+vmdnvsbZO3+Tsmf7r1q2b6dvZV6dt3brOFCWsqhUrVs5MV46OjtbIyEhXXWtq\n7dp1tXLlylqx4pxasWJlrVu3rr1+9szz8fHxNgWaGhkZ6Xre6TMyMjIzQh0fH6/R0dGZGqb32/36\nsX2sqdWrR2amUqf7TY9o168fLchxI921ay8oyEyf7tHw9HY6fTrvrfv16ZqmtzXdf+vWrbVixTm1\ndu26mZH3+vWjMyPwad3vYfYU7nR7d51r166b9/Xp5emaZr+PhY7u55pKpscRwmk9qZzkCmCiqq5q\nz7e1N3DrrH6nryhJOoPUcrnKKMlK4GngF4C/BB4H/nlV7TltRUiS5nRazyFU1Y+T/BrwAMcuOzUM\nJGkIDOWNaZKk02+ovg8hyVVJvpvkmSQfHXQ93ZLsS/JnSb6d5PHWdn6SB5I8neTrSdYNoK7bk0wl\n2dXVNm9dSbYn2ZtkT5IrB1zneJLnknyrPa4aZJ1JNiV5KMl3kjyV5IOtfaiO5xx1/nprH7bjOZLk\nm+3/maeSjLf2YTue89U5VMez7XdFq2Vne97fY9mPq4f68WCBN60NsL7vAefParsV+Ddt+aPAJwZQ\n188BbwF2nawu4DLg23SmCi9qxzsDrHMc+M05+m4eRJ3ABuAtbflcOue73jRsx/MEdQ7V8Wz7Pqf9\nXAk8Rucy86E6nieocxiP528A/x7Y2Z739VgO0whhC7C3qvZX1WHgbuDaAdfULbxyRHUtsKMt7wCu\nO60VAVX1KPD8rOb56roGuLuqjlTVPmAvp+k+kHnqhM5xne1aBlBnVR2qqifb8kvAHmATQ3Y856lz\nY3t5aI5nq++HbXGEzi+nYsiO5wnqhCE6nkk2Ab8EfH5WLX07lsMUCHPdtLZxnr6DUMA3kjyR5F+1\ntvVVNQWd/0mBCwdW3fEunKeu2cf4IIM/xr+W5Mkkn+8a7g68ziQX0RnRPMb8/87DVOc3W9NQHc82\nxfFt4BDwjap6giE8nvPUCcN1PD8FfIRjYQV9PpbDFAjD7h1VdTmdhL4lyc9z/D8MczwfFsNa123A\n66vqLXT+R/zdAdcDQJJzga8AH2p/gQ/lv/McdQ7d8ayqo1X19+iMtLYk+RmG8HjOUedlDNHxTPLL\nwFQbGZ7oPoOejuUwBcJB4HVdzze1tqFQVX/Zfv418FU6w6+pJOsBkmwA/mpwFR5nvroOAq/t6jfQ\nY1xVf11twhP4A44NaQdWZ5JVdH7JfqGq7m3NQ3c856pzGI/ntKr6P8AkcBVDeDynddc5ZMfzHcA1\nSb4H/BHwziRfAA7181gOUyA8AVySZDTJWcANwM4B1wRAknPaX2MkWQtcCTxFp74bW7f3AvfOuYFT\nLxz/V8N8de0EbkhyVpKLgUvo3Bx4uhxXZ/sPeNo/Bv68LQ+yzj8EdlfV73W1DePxfEWdw3Y8k/zU\n9DRLkrOBX6RzvmOojuc8dX53mI5nVX2sql5XVa+n87vxoap6N/A1+nksT8eZ8UWcQb+KzhUTe4Ft\ng66nq66L6Vz19G06QbCttf8k8GCr+QHgNQOo7UvAX9D5hLtngfcB589XF7CdzhUHe4ArB1znXcCu\ndmy/Smc+dGB10vkr7Mdd/9bfav9NzvvvPGR1DtvxfHOr7clW12+39mE7nvPVOVTHs2vfWzl2lVFf\nj6U3pkmSgOGaMpIkDZCBIEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQaCJAmA/w/qjR3iD6TTSQAA\nAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11d4e9f50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"n,bins,patches = plt.hist(hotpix(),np.arange(0.,400.,0.1))"
]
},
{
"cell_type": "code",
"execution_count": 223,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1198d64d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"n,bins,patches = plt.hist(cosmicray(),np.arange(0.,3000.,1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Construct a realization of the background, adding in the different components. Return both the floating point and the quantized version."
]
},
{
"cell_type": "code",
"execution_count": 356,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def realization(mean,sigma,offset,nsamp=1000000,hotpix_frac=0.1,cr_frac=0.05):\n",
" nhot = int(nsamp*hotpix_frac)\n",
" ncr = int(nsamp*hotpix_frac)\n",
" ngood = nsamp-nhot-ncr\n",
" goodsample = cleansky(mean,sigma,offset,nsamp=ngood)\n",
" hotsample = hotpix(nsamp=nhot) + cleansky(mean,sigma,offset,nsamp=nhot)\n",
" crsample = cosmicray(nsamp=ncr) + cleansky(mean,sigma,offset,nsamp=ncr)\n",
" floatsample = np.concatenate((goodsample,hotsample))\n",
" intsample = (floatsample+0.5).astype(np.int32)\n",
" return floatsample,intsample"
]
},
{
"cell_type": "code",
"execution_count": 357,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def ofil(data,binsize=0.01):\n",
" return ofiltsky.fitsky_ofilter(data,sigclip_sigma=None,binsize=binsize)[0]"
]
},
{
"cell_type": "code",
"execution_count": 358,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def sigclip(data,niter=5,sigma=3.):\n",
" mean, median, std = sigma_clipped_stats(data, sigma=sigma, iters=niter)\n",
" return mean"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot a realization of the background. Notice that the maximum is pretty high due to the presence of cosmic rays, but that the peak is right around the peak of the good-pixel values, with the hot pixels showing up as a tiny tail in the near wings of this distribution."
]
},
{
"cell_type": "code",
"execution_count": 359,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12241e690>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"f,i = realization(100.,0.1,0.)\n",
"f.max()\n",
"foo = plt.hist(f,np.arange(98.,120.,0.02),alpha=0.2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now compare the estimates from three different techniques, operating on each of the floating point and the integer versions of the array: \n",
" * An unclipped mean\n",
" * An unclipped median\n",
" * ofilter"
]
},
{
"cell_type": "code",
"execution_count": 229,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean of floating point versions: 108.229147848 108.319912062 108.278923662\n",
"Sigma-clipped Mean of floating point versions: 100.05420705 100.149227382 100.252724255\n",
"Mean of integer versions: 108.22895 108.3201 108.278704444\n",
"Sigma-clipped Mean of integer versions: 100.04700964 100.142198474 100.24216495\n",
"Median of float versions: 100.14317959 100.23949204 100.341053137\n",
"Median of integer versions: 100.0 100.0 100.0\n",
"Ofilt of floating point versions 100.014991277 100.111901798 100.213239787\n",
"Ofilt of integer point versions 100.022519885 100.111895088 100.210373557\n"
]
}
],
"source": [
"f0,i0 = realization(100.,1.,0.)\n",
"f1,i1 = realization(100.,1.,0.1)\n",
"f2,i2 = realization(100.,1.,0.2)\n",
"print \"Mean of floating point versions: \", f0.mean(),f1.mean(),f2.mean()\n",
"print \"Sigma-clipped Mean of floating point versions: \", sigclip(f0),sigclip(f1),sigclip(f2)\n",
"print \"Mean of integer versions: \",i0.mean(),i1.mean(),i2.mean()\n",
"print \"Sigma-clipped Mean of integer versions: \", sigclip(i0),sigclip(i1),sigclip(i2)\n",
"print \"Median of float versions: \",np.median(f0),np.median(f1),np.median(f2)\n",
"print \"Median of integer versions: \",np.median(i0),np.median(i1),np.median(i2)\n",
"print \"Ofilt of floating point versions\", ofil(f0),ofil(f1),ofil(f2)\n",
"print \"Ofilt of integer point versions\", ofil(i0),ofil(i1),ofil(i2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Results\n",
"----\n",
"\n",
"For this particular case, ofilter is coming a bit closer to the peak value\n",
"of the goodpixel distribution than the sigma-clipped mean. It is, however, not entirely obvious which is a better sky estimate, since the pixels under the stars also have hot pixels, which is what is skewing the mean.\n",
"\n",
"--------\n",
"\n",
"Repeat the same test, varying the offset and plot the trend."
]
},
{
"cell_type": "code",
"execution_count": 242,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def repeat(realization,sigma=1.,nsamp=100000,val=100,binsize=0.1,plotmed=True):\n",
" offset = np.arange(-1.,1.,0.02)\n",
" fmean = offset*0.\n",
" imean = offset*0.\n",
" fmedian = offset*0.\n",
" imedian = offset*0.\n",
" fofilt = offset*0.\n",
" iofilt = offset*0.\n",
" for n,o in enumerate(offset):\n",
" f,i = realization(val,sigma,o,nsamp=nsamp)\n",
" fmean[n],fmedian[n],fofilt[n] = sigclip(f),np.median(f),ofil(f,binsize=binsize)\n",
" imean[n],imedian[n],iofilt[n] = sigclip(i),np.median(i),ofil(i,binsize=binsize)\n",
" plt.plot(offset,fmean-offset,'o',label='sigclip',alpha=0.3)\n",
" if plotmed:\n",
" plt.plot(offset,imedian-offset,'o',label='int median',alpha=0.3)\n",
" plt.plot(offset,fmedian-offset,'s',label='float median',alpha=0.3)\n",
" plt.plot(offset,fofilt-offset,'d',label='float ofilt',alpha=0.3)\n",
" plt.plot(offset,iofilt-offset,'d',label='int ofilt',alpha=0.3)\n",
" plt.legend()\n",
"# return offset, fmean, imean, fmedian, imedian, fofilt, iofilt"
]
},
{
"cell_type": "code",
"execution_count": 243,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x123dbe5d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"results = repeat(realization)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"How does it compare relative to the standard error?\n",
"--------\n",
"Compare the offset to the expected standard-error-of-the-mean $\\sigma/\\sqrt(N)$.\n"
]
},
{
"cell_type": "code",
"execution_count": 365,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def repeat_relative(realization,sigma=5.,nsamp=100000,val=100,binsize=0.01,plotmed=True):\n",
" offset = np.arange(-1.,1.,0.02)\n",
" fmean = offset*0.\n",
" imean = offset*0.\n",
" fmedian = offset*0.\n",
" imedian = offset*0.\n",
" fofilt = offset*0.\n",
" iofilt = offset*0.\n",
" stderr = sigma/np.sqrt(nsamp)\n",
" for n,o in enumerate(offset):\n",
" f,i = realization(val,sigma,o,nsamp=nsamp)\n",
" fmean[n],fmedian[n],fofilt[n] = sigclip(f),np.median(f),ofil(f,binsize=binsize)\n",
" imean[n],imedian[n],iofilt[n] = sigclip(i),np.median(i),ofil(i,binsize=binsize)\n",
" plt.plot(offset,(fmean-val-offset)/stderr,'o',label='float sigcl ',alpha=0.3)\n",
" plt.plot(offset,(imean-val-offset)/stderr,'o',label='int sigcl',alpha=0.3)\n",
" if plotmed:\n",
" plt.plot(offset,(imedian-val-offset)/stderr,'o',label='int median',alpha=0.3)\n",
" plt.plot(offset,(fmedian-val-offset)/stderr,'s',label='float median',alpha=0.3)\n",
" plt.plot(offset,(fofilt-val-offset)/stderr,'d',label='float ofilt',alpha=0.3)\n",
" plt.plot(offset,(iofilt-val-offset)/stderr,'d',label='int ofilt',alpha=0.3)\n",
"# plt.ylim(-100,100)\n",
" plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 366,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n90i3nbdJ9AAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11d86be50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"repeat_relative(realization)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So all of the estimates are biased high relative to the peak of the good pixels, but OFILT is coming the closest.\n",
"\n",
"Let's see what happens if we vary the hot pixel fraction."
]
},
{
"cell_type": "code",
"execution_count": 367,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def repeathotpix(realization,sigma=1.,nsamp=100000,val=100,binsize=0.01,plotmed=True,offset=0.2):\n",
" hotpixfrac = np.arange(0.,0.3,0.01)\n",
" fmean = hotpixfrac*0.\n",
" imean = hotpixfrac*0.\n",
" fmedian = hotpixfrac*0.\n",
" imedian = hotpixfrac*0.\n",
" fofilt = hotpixfrac*0.\n",
" iofilt = hotpixfrac*0.\n",
" for n,o in enumerate(hotpixfrac):\n",
" f,i = realization(val,sigma,o,nsamp=nsamp,hotpix_frac=o)\n",
" fmean[n],fmedian[n],fofilt[n] = sigclip(f),np.median(f),ofil(f,binsize=binsize)\n",
" imean[n],imedian[n],iofilt[n] = sigclip(i),np.median(i),ofil(i,binsize=binsize)\n",
" plt.plot(hotpixfrac,imean-offset,'o',label='int sigclip',alpha=0.3)\n",
" if plotmed:\n",
" plt.plot(hotpixfrac,imedian-offset,'o',label='int median',alpha=0.3)\n",
" plt.plot(hotpixfrac,fmedian-offset,'s',label='float median',alpha=0.3)\n",
"# plt.plot(hotpixfrac,fofilt-offset,'d',label='float ofilt',alpha=0.3)\n",
" plt.plot(hotpixfrac,iofilt-offset,'d',label='int ofilt',alpha=0.3)\n",
" plt.legend(loc='upper left')\n",
"# return offset, fmean, imean, fmedian, imedian, fofilt, iofilt"
]
},
{
"cell_type": "code",
"execution_count": 368,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEACAYAAABbMHZzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9wVeW97/H3l19CUmLDr6AQYgrCLVVySgFNtSVqiz2t\nKNdetdJR6um9t2Od8cz09Fq0pxKPt7Va9cycuT3Tezu2F+tlbPUclVTPUD0YO16CwEX5UW1ACEEQ\nthajaEJEk+f+kZ2wE/JjPXuvvffae31eMxn3Xllr7edhwXc/Pj++jznnEBGReBmV7wKIiEjuKfiL\niMSQgr+ISAwp+IuIxJCCv4hIDCn4i4jE0IjB38weMrOEme1MOVZuZn8ws2Yz22BmZyaPV5lZh5lt\nT/78czYLLyIi6QnS8v81cPmAY6uB55xz84CNwO0pv3vdObcw+fPdkMopIiIhGjH4O+deBNoGHL4K\nWJt8vRZYkfI7C6doIiKSLen2+U9zziUAnHNHgWkpvzsn2eXzvJldnHEJRUQkdGNCuk9vjogjwCzn\nXJuZLQSeNLP5zrkPQvocEREJQbrBP2FmFc65hJlNB94CcM6dBE4mX283s33AXGD7wBuYmZIKiYik\nwTmXcfd60G4fo39f/nrgW8nXq4CnAMxsipmNSr7+FDAH2D/UTZ1zRfuzZs2avJdB9VP94li/Qqlb\ne3sHjz76J5544mPWr3c88cTHPPron2hv7xj2urAEmeq5DtgEzDWzg2Z2E/BT4Mtm1gxclnwP8EVg\np5ltB34HfMc5925opRURKRI7drzBGWfMY/To0QCMHj2aM86Yx44db+Tk80fs9nHOrRziV18a5Nx/\nBf4100KJiBS748ddX+DvNXr0aI4fz02PuFb4ZkldXV2+i5BVql9hK+b6FUrdysqMrq6ufse6uroo\nK8vNbHkLsw/J64PNXL4+W0Qk3zo6TtDQ0NLX9dPV1cWHHzazfHk1JSUThrzOzHAhDPhGLvifc845\ntLa25qFEMpSqqioOHDiQ72KIFJ2OjhPs2PEGx487ysqMmprKYQM/FHHwT1YsDyWSoeiZiERHWMFf\nff4iIjGk4C8iEkMK/iIiMaTg7+m8887jj3/8Y0F8ztq1a/nCF77Q937ixIkauBURILzEbrGxe/fu\nwOdWV1fz0EMPcemll2b1c4Zjdmpc6P333w/lniJS+Aoq+KczLSob9xARKXQF0+3TuyAikZjNyZPz\nSCRm09DQQkfHiZzeo7q6mo0bNwJw1113cd1117Fq1SrKyso4//zz2b69J4HpjTfeyMGDB1m+fDll\nZWXcf//9p93r2LFjLF++nPLyciZPnszSpUsH/ZzOzk5WrVrFpEmT+MxnPsPPfvYzKisr+849dOgQ\nX//615k2bRpTp07l1ltvHbTso0aNYv/+njx7N910EzfffDPLli2jrKyMSy65hIMHDwb+cxCRwlYw\nwT+MJEjZSKTU0NDAypUree+991i+fDm33HILAA8//DCzZs3i97//PcePH+f73//+adc+8MADVFZW\ncuzYMd566y1+8pOfDPoZ9fX1HDx4kAMHDvDss8/yyCOP9HXndHd3c8UVV1BdXc3Bgwc5fPgw3/jG\nNwa9T2oXEMC6detYs2YNx44do6amhm9+85tp/zmISGEpmOAfRhKkbCRSuvjii7n88ssxM2644QZ2\n7tzZ7/fDLY4aO3YsR44coaWlhdGjR3PRRRcNet5jjz3GD3/4Q8rKyjj77LP7texfeukljhw5wn33\n3cf48eMZN24cn//85we9z8CyfO1rX+Oiiy5i7Nix/PjHP6apqYnDhw8HrbqIFLCCCf5hJEHKRiKl\n6dOn970uKSmhs7OT7u7uQNfedtttzJ49m2XLljFnzhzuvffeQc978803mTlzZt/7gV0+VVVVjBrl\n/yhT71NaWsqkSZN48803ve8jIoWnYIJ/TU0lH37Y3Be8e5Mg1dRUjnBluPfwMbCbZaDS0lLuv/9+\n9u3bx/r163nwwQd5/vnnTzvvrLPO4tChQ33vU/vmKysrOXjwYOAvnFRvvHGqu+uDDz7gnXfe4eyz\nz/a+j4gUnoIJ/iUlE1i+vJqKin2MG9dMRcW+EbPfZeMeI0ntWpk+fXrfAOtgnn76afbt2wf0zMEf\nM2bMad1SANdeey333HMP7777LocPH+bnP/953++WLFnCWWedxerVq+no6ODDDz9k06ZNgcr6zDPP\nsGnTJk6ePMmPfvQjamtrmTFjRtCqikgBK5jgDz3Bu7Z2LpdfPo/a2rlpBe1M7zFSaz7196tXr+bu\nu+9m0qRJPPjgg6edu3fvXr70pS8xceJELrroIm655Ra++MUvnnafO++8kxkzZlBdXc2yZcu45ppr\nOOOMM4CeGTwNDQ3s3buXWbNmUVlZye9+97tAZV+5ciX19fVMnjyZl19+mUceeSTYH4KIDKmj4wRN\n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\nRCSG/j/OvArF3kMpaAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1189cf410>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"repeathotpix(realization,sigma=20.,binsize=0.01,plotmed=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"...And if we vary the cosmic-ray fraction"
]
},
{
"cell_type": "code",
"execution_count": 369,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def repeatcr(realization,sigma=1.,nsamp=100000,val=100,binsize=0.01,plotmed=True,offset=0.2):\n",
" crfrac = np.arange(0.,0.2,0.005)\n",
" fmean = crfrac*0.\n",
" imean = crfrac*0.\n",
" fmedian = crfrac*0.\n",
" imedian = crfrac*0.\n",
" fofilt = crfrac*0.\n",
" iofilt = crfrac*0.\n",
" for n,o in enumerate(crfrac):\n",
" f,i = realization(val,sigma,o,nsamp=nsamp,cr_frac=o)\n",
" fmean[n],fmedian[n],fofilt[n] = sigclip(f),np.median(f),ofil(f,binsize=binsize)\n",
" imean[n],imedian[n],iofilt[n] = sigclip(i),np.median(i),ofil(i,binsize=binsize)\n",
" plt.plot(crfrac,imean-offset,'o',label='int sigclip',alpha=0.3)\n",
" if plotmed:\n",
" plt.plot(crfrac,imedian-offset,'o',label='int median',alpha=0.3)\n",
" plt.plot(crfrac,fmedian-offset,'s',label='float median',alpha=0.3)\n",
"# plt.plot(hotpixfrac,fofilt-offset,'d',label='float ofilt',alpha=0.3)\n",
" plt.plot(crfrac,iofilt-offset,'d',label='int ofilt',alpha=0.3)\n",
" plt.legend(loc='upper left')\n",
"# return offset, fmean, imean, fmedian, imedian, fofilt, iofilt"
]
},
{
"cell_type": "code",
"execution_count": 370,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nIiJS1P8HlX9uUcAunuYAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12abb7110>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"repeatcr(realization,sigma=20.,binsize=0.01,plotmed=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Simulated photometry\n",
"-----------\n",
"\n",
"Add hypothetical stars each \"subtending\" 5 pixels with a total flux of 1000 and no scatter. \n",
"Subtract from each star the background estimate computed from 50 pixel by one or the other technique. \n",
"Do this lots of times and see which if any technique gives the best approximation to the true flux."
]
},
{
"cell_type": "code",
"execution_count": 371,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def fakestars(flux=1000,npix=5,nbkgd=50,niter=50000,floatint=1):\n",
" fi = floatint\n",
" fnpix = 1.*npix # Make sure background is floating point\n",
" background = realization(100.,5.,0.2,nsamp=1.2*niter*nbkgd)[fi]\n",
" f_sigclip = np.zeros((niter),dtype=np.float64) # estimated flux using sigmaclipped mean bkgd\n",
" f_ofilt = np.zeros((niter),dtype=np.float64) # estimated flux using OFILT bkgd\n",
" for i in range(niter):\n",
" source = flux + realization(100.,5.,0.2,nsamp=npix)[fi].sum()\n",
" bi = i*nbkgd\n",
" bkgd = background[bi:bi+nbkgd]\n",
" b_sigclip = sigclip(bkgd)*fnpix\n",
" b_ofilt = ofil(bkgd,binsize=0.1)*fnpix\n",
" f_sigclip[i] = source - b_sigclip\n",
" f_ofilt[i] = source - b_ofilt\n",
" return f_sigclip, f_ofilt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Try this in the floating point version (i.e. no quantization noise)"
]
},
{
"cell_type": "code",
"execution_count": 372,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Clipped mean measured flux using sigclipped background: 999.916019148\n",
"Clipped mean measured flux using OFILT background: 1000.21434127\n",
"OFILT measured flux using OFILT background: 1000.52374705\n"
]
},
{
"data": {
"image/png": "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\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x122031b10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"f_sigclip,f_ofilt = fakestars(floatint=0)\n",
"n,bins,patches = plt.hist(f_sigclip,np.arange(950.,1050,1),alpha=0.5,color='b')\n",
"n,bins,patches = plt.hist(f_ofilt,np.arange(950.,1050,1),alpha=0.5,color='g')\n",
"print \"Clipped mean measured flux using sigclipped background: \",sigclip(f_sigclip)\n",
"print \"Clipped mean measured flux using OFILT background: \",sigclip(f_ofilt)\n",
"print \"OFILT measured flux using OFILT background: \",ofil(f_ofilt)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Try the integer version (i.e. with quantization noise)"
]
},
{
"cell_type": "code",
"execution_count": 373,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Clipped mean measured flux using sigclipped background: 999.961703702\n",
"Clipped mean measured flux using OFILT background: 999.8625475\n",
"OFILT measured flux using OFILT background: 1000.19245971\n"
]
},
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x130d92190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"f_sigclip,f_ofilt = fakestars(floatint=1)\n",
"n,bins,patches = plt.hist(f_sigclip,np.arange(950.,1050,1),alpha=0.5,color='b')\n",
"n,bins,patches = plt.hist(f_ofilt,np.arange(950.,1050,1),alpha=0.5,color='g')\n",
"print \"Clipped mean measured flux using sigclipped background: \",sigclip(f_sigclip)\n",
"print \"Clipped mean measured flux using OFILT background: \",sigclip(f_ofilt)\n",
"print \"OFILT measured flux using OFILT background: \",ofil(f_ofilt)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment