Skip to content

Instantly share code, notes, and snippets.

@mwcraig
Created February 7, 2013 03:57
Show Gist options
  • Save mwcraig/4728341 to your computer and use it in GitHub Desktop.
Save mwcraig/4728341 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "median_doesnt_work_wo_normalization"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pyfits"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fils = ['flats-271R_flt.fit', 'flats-272R_flt.fit', 'flats-273R_flt.fit']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the description that follows these images will be referred to by their 'python' numbers: 0, 1, 2"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"all_hdus = []\n",
"for fil in fils:\n",
" all_hdus.append(pyfits.open(fil))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"shape = list(all_hdus[0][0].data.shape)\n",
"shape.append(3)\n",
"med = zeros(shape)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"med.shape"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 5,
"text": [
"(2048, 3085, 3)"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"med_values = zeros(3)\n",
"for idx, hdus in enumerate(all_hdus):\n",
" med[:,:,idx] = hdus[0].data\n",
" med_values[idx] = median(med[:, :, idx])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"med_values"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 7,
"text": [
"array([ 22462., 22891., 23172.])"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"npmed = median(med, axis=2)\n",
"new_med = med.copy()\n",
"ref_value = med_values[2]\n",
"for idx in range(0,3):\n",
" new_med[:,:,idx] = new_med[:,:,idx]/med_values[idx]*ref_value\n",
"npnew_med = median(new_med, axis=2)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"crapper = pyfits.PrimaryHDU(data=npmed)\n",
"crapper2 = pyfits.PrimaryHDU(data=npnew_med)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"crapper.writeto('python-median.fit', clobber=True)\n",
"crapper2.writeto('python-median-norm.fit', clobber=True)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Overwriting existing file 'python-median.fit'.\n",
"Overwriting existing file 'python-median-norm.fit'.\n"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In principle, a simple median combine should eliminate artifacts like cosmic rays. In practice that will work, I think, only if the background level in the images is about the same.\n",
"\n",
"If it isn't, the defect will tend to bias the median a bit higher in the pixels where the defect shows up than in the pixels where the edefect is not present."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the pixel values below, at the position of one of the fake cosmic ray. The pixels values are frome images 0, 1, 2, andthe ray is in the first image. In this case the median will be from image 2 (python numbering for the images, this is 3_flt)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"med[819,1480,:]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 11,
"text": [
"array([ 24495.76367188, 23260. , 23492. ])"
]
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In an adjacent pixel without a cosmic ray the median value is from image 1:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"med[820,1480,:]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 12,
"text": [
"array([ 22705., 23027., 23544.])"
]
}
],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This will be the case for most pixels because the median of all of the pixels in image 1 is higher than the median for image 0 and lower than the median for image 2:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"med_values"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 13,
"text": [
"array([ 22462., 22891., 23172.])"
]
}
],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The net result, then, is for the result of the median to be slightly higher where the cosmic ray is because those pixels always have, as their highest value, the contribution from the cosmic ray. If the remaining images all have about the same pixel value that doesn't matter. In this case, though, choosing a pixel from image 2 means choosing a pixel that is roughly 280 ADU higher than is typical for surrounding pixels (which will end up being taken from image 1).\n",
"\n",
"The cosmic ray is *reduced*, but not eliminated.\n",
"\n",
"Normalizing the images before combining does fix the problem. For this toy example I've just normalized by scaling the raw flats to a common value for the image median. That isn't really the right thing to do; they should be dark/bias subtracted first, then normalized."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I fear the problem is due to variation in the bias level rather than the lighting. If so, we should see it in the overscan, which is columns 3072-3084 (inclusive); note that column is the second index.\n",
"\n",
"The plot below shows the overscan region for each flat, averaged over all of the rows for that flat. Only the middle part of the overscan region is shown because it rises sharply on the ends."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for idx in range(med.shape[2]):\n",
" oscan = med[:,3073:,idx].mean(axis=0)\n",
" plot(oscan[1:8], label=str(idx))\n",
" \n",
"legend()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 5870.03613281 3474.41699219 3151.765625 3100.84423828\n",
" 3094.12402344 3102.70898438 3159.34082031 3544.47998047\n",
" 6109.23730469 22612.11181641 10171.75439453 3129.73339844]\n",
"[ 5933.59228516 3483.36621094 3153.48779297 3103.05908203\n",
" 3095.10253906 3102.70800781 3161.75585938 3555.44287109\n",
" 6177.64501953 23196.47802734 10173.59375 3128.86621094]"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"[ 5973.98779297 3490.23535156 3153.94091797 3101.96386719\n",
" 3095.42480469 3102.71044922 3162.46777344 3563.66943359\n",
" 6227.15429688 23593.73291016 10175.88378906 3128.64550781]\n"
]
},
{
"output_type": "pyout",
"prompt_number": 14,
"text": [
"<matplotlib.legend.Legend at 0x34c94f0>"
]
},
{
"output_type": "display_data",
"png": "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\nSUVORK5CYII=\n"
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Clearly the bias level (to the extent it is accruately represented by the overscan) is **not** varying by a few hundred ADU from frame to frame.\n",
"\n",
"Good! Except that it means the floodlight isn't so steady..."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment