Skip to content

Instantly share code, notes, and snippets.

@saimn
Last active August 5, 2020 22:17
Show Gist options
  • Save saimn/c5d000626fe2b300f9d3d1acd20af4a5 to your computer and use it in GitHub Desktop.
Save saimn/c5d000626fe2b300f9d3d1acd20af4a5 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%load_ext memory_profiler\n",
"%load_ext line_profiler"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-08-05 18:10:09 INFO - Note: NumExpr detected 12 cores but \"NUMEXPR_MAX_THREADS\" not set, so enforcing safe limit of 8.\n",
"2020-08-05 18:10:09 INFO - NumExpr defaulting to 8 threads.\n",
"/home/sconseil/.pyenv/versions/miniconda3-latest/envs/dragons38/lib/python3.8/site-packages/ginga/cmap.py:13317: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n",
" for name in _cm.cmap_d:\n"
]
}
],
"source": [
"%matplotlib inline\n",
"\n",
"import os\n",
"import pprint\n",
"from pathlib import Path\n",
"from time import time\n",
"\n",
"import astrodata\n",
"import ccdproc\n",
"import numpy as np\n",
"from astropy import units as u\n",
"from astropy.io import fits\n",
"from astropy.nddata import CCDData, VarianceUncertainty\n",
"from astropy.table import Table\n",
"from gempy.library.nddops import NDStacker\n",
"from matplotlib import pyplot as plt\n",
"from memory_profiler import memory_usage"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# From https://github.com/astropy/astroscrappy/blob/master/astroscrappy/tests/fake_data.py\n",
"\n",
"\n",
"# Make a simple Gaussian function for testing purposes\n",
"def gaussian(image_shape, x0, y0, brightness, fwhm):\n",
" x = np.arange(image_shape[1])\n",
" y = np.arange(image_shape[0])\n",
" x2d, y2d = np.meshgrid(x, y)\n",
" sig = fwhm / 2.35482\n",
" normfactor = brightness / 2.0 / np.pi * sig**-2.0\n",
" exponent = -0.5 * sig**-2.0\n",
" exponent *= (x2d - x0)**2.0 + (y2d - y0)**2.0\n",
" return normfactor * np.exp(exponent)\n",
"\n",
"\n",
"def make_fake_data(nimg, outdir, nsources=100, shape=(2048, 2048), dtype=np.float32):\n",
" # Set a seed so that the tests are repeatable\n",
" np.random.seed(200)\n",
"\n",
" # Add some fake sources\n",
" sources = np.zeros(shape, dtype=np.float32)\n",
" xx = np.random.uniform(low=0.0, high=shape[0], size=nsources)\n",
" yy = np.random.uniform(low=0.0, high=shape[1], size=nsources)\n",
" brightness = np.random.uniform(low=1000., high=30000., size=nsources)\n",
" for x, y, b in zip(xx, yy, brightness):\n",
" sources += gaussian(shape, x, y, b, 5)\n",
"\n",
" for i in range(nimg):\n",
" # Create a simulated image to use in our tests\n",
" imdata = np.zeros(shape, dtype=dtype)\n",
" # Add sky and sky noise\n",
" imdata += 200\n",
"\n",
" imdata += sources\n",
"\n",
" # Add the poisson noise\n",
" imdata = np.float32(np.random.poisson(imdata))\n",
"\n",
" # Add readnoise\n",
" imdata += np.random.normal(0.0, 10.0, size=shape)\n",
"\n",
" # Add 100 fake cosmic rays\n",
" cr_x = np.random.randint(low=5, high=shape[0] - 5, size=100)\n",
" cr_y = np.random.randint(low=5, high=shape[1] - 5, size=100)\n",
" cr_brightnesses = np.random.uniform(low=1000.0, high=30000.0, size=100)\n",
" imdata[cr_y, cr_x] += cr_brightnesses\n",
" imdata = imdata.astype('f4')\n",
"\n",
" # Make a mask where the detected cosmic rays should be\n",
" # crmask = np.zeros(shape, dtype=np.bool)\n",
" # crmask[cr_y, cr_x] = True\n",
"\n",
" ccd = CCDData(imdata, uncertainty=VarianceUncertainty(imdata/10), unit=\"electron\")\n",
" ccd.write(os.path.join(outdir, f'image-{i+1:02d}.fits'), overwrite=True)\n",
" print('.', end='')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"datadir = Path(os.path.expanduser('~/data/combiner'))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"if False:\n",
" make_fake_data(20, datadir, nsources=500)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"20"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"flist = list(datadir.glob('image-*.fits'))\n",
"len(flist)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['test.fits',\n",
" 'image-01.fits',\n",
" 'image-02.fits',\n",
" 'image-03.fits',\n",
" 'image-04.fits',\n",
" 'image-05.fits',\n",
" 'image-06.fits',\n",
" 'image-07.fits',\n",
" 'image-08.fits',\n",
" 'image-09.fits',\n",
" 'image-10.fits',\n",
" 'image-11.fits',\n",
" 'image-12.fits',\n",
" 'image-13.fits',\n",
" 'image-14.fits',\n",
" 'image-15.fits',\n",
" 'image-16.fits',\n",
" 'image-17.fits',\n",
" 'image-18.fits',\n",
" 'image-19.fits',\n",
" 'image-20.fits',\n",
" 'res_ccdproc.fits',\n",
" 'res_dragons.fits']"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"os.listdir(datadir)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Filename: /home/sconseil/data/combiner/image-01.fits\n",
"No. Name Ver Type Cards Dimensions Format\n",
" 0 PRIMARY 1 PrimaryHDU 7 (2048, 2048) float32 \n",
" 1 UNCERT 1 ImageHDU 9 (2048, 2048) float32 \n"
]
}
],
"source": [
"fits.info(datadir / 'image-01.fits')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(fits.getdata(datadir / 'image-01.fits'), vmin=200, vmax=250, origin='lower')\n",
"plt.colorbar();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Combine with ccdproc"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"ccds = [CCDData.read(f) for f in flist]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"res_ccdproc = ccdproc.combine(\n",
" ccds, \n",
" #output_file=None,\n",
" #method='average',\n",
" #weights=None,\n",
" #scale=None,\n",
" #mem_limit=16000000000.0,\n",
" #clip_extrema=False,\n",
" #nlow=1,\n",
" #nhigh=1,\n",
" #minmax_clip=False,\n",
" #minmax_clip_min=None,\n",
" #minmax_clip_max=None,\n",
" #sigma_clip=False,\n",
" #sigma_clip_low_thresh=3,\n",
" #sigma_clip_high_thresh=3,\n",
" #sigma_clip_func=<numpy.ma.core._frommethod object at 0x7f16b0a63d30>,\n",
" #sigma_clip_dev_func=<numpy.ma.core._frommethod object at 0x7f16b09ee0a0>,\n",
" #dtype=None,\n",
" #combine_uncertainty_function=None,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"res_ccdproc.write(datadir / 'res_ccdproc.fits', overwrite=True)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"peak memory: 4025.61 MiB, increment: 2883.41 MiB\n"
]
}
],
"source": [
"%memit ccdproc.combine(ccds, method='average')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"mem_ccdproc = memory_usage((ccdproc.combine, [ccds], dict(method='average')))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.12 s ± 69.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%%timeit\n",
"#combiner.sigma_clipping(low_thresh=5, high_thresh=5, func=np.ma.median)\n",
"res_ccdproc = ccdproc.combine(ccds)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Combine with DRAGONS"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"ccds = [CCDData.read(f) for f in flist]\n",
"ndds = [astrodata.NDAstroData(ccd.data, uncertainty=ccd.uncertainty, unit=ccd.unit) for ccd in ccds]\n",
"data = np.array([ccd.data for ccd in ccds])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"#ads = [astrodata.open(str(f)) for f in flist]\n",
"#ndds = [ad[0].nddata for ad in ads]"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 628 ms, sys: 63.5 ms, total: 691 ms\n",
"Wall time: 691 ms\n"
]
}
],
"source": [
"%%time\n",
"stackit = NDStacker(combine=\"mean\", reject=\"none\")\n",
"res_dragons = stackit(ndds)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"fits.writeto(datadir / 'res_dragons.fits', res_dragons.data, overwrite=True)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"mem_drag = memory_usage((stackit, [ndds], {}))"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"713 ms ± 47.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%%timeit\n",
"stackit = NDStacker(combine=\"mean\", reject=\"none\")\n",
"res_dragons = stackit(ndds)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"peak memory: 2332.21 MiB, increment: 779.24 MiB\n"
]
}
],
"source": [
"%memit res_dragons = stackit(ndds)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"#%%timeit\n",
"#NDStacker.combine(data, rejector='none', combiner='mean')"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"#%lprun -m gempy.library.nddops stackit(ndds)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Compare"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(8,6))\n",
"plt.plot(np.arange(len(mem_ccdproc))/10, mem_ccdproc, label='ccdproc')\n",
"plt.plot(np.arange(len(mem_drag))/10, mem_drag, label='dragons')\n",
"plt.legend();"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9997909069061279"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.count_nonzero(np.abs(res_ccdproc.data - res_dragons.data) < 1e-4) / np.prod(res_dragons.shape)\n",
"#np.count_nonzero(np.abs(res_ccdproc.uncertainty.array - res_dragons.variance) < 1e-4) / np.prod(res_dragons.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Compare various combiners/rejectors"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"ccds = [CCDData.read(f) for f in flist]\n",
"ndds = [astrodata.NDAstroData(ccd.data, uncertainty=ccd.uncertainty, unit=ccd.unit) for ccd in ccds]\n",
"data = np.array([ccd.data for ccd in ccds])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"- mean with none\n",
"- mean with sigclip\n",
"- median with none\n",
"- median with sigclip\n"
]
}
],
"source": [
"stats = []\n",
"\n",
"for combine in ('mean', 'median'):\n",
" for reject in ('none', 'sigclip'):\n",
" print(f'- {combine} with {reject}')\n",
" # dragons\n",
" stackit = NDStacker(combine=combine, reject=reject)\n",
" t0 = time()\n",
" for _ in range(10):\n",
" stackit(ndds)\n",
" tot = (time() - t0) / 10\n",
" mem = memory_usage((stackit, [ndds], {}))\n",
" stats.append({\n",
" 'package': 'dragons', \n",
" 'combine': combine,\n",
" 'reject': reject,\n",
" 'mempeak': max(mem),\n",
" 'cputime': tot,\n",
" })\n",
" #pprint.pprint(stats[-1])\n",
"\n",
" # ccdproc\n",
" kwargs = dict(method=combine.replace('mean', 'average'))\n",
" if reject == 'sigclip':\n",
" kwargs['sigma_clip'] = True\n",
" t0 = time()\n",
" for _ in range(10):\n",
" ccdproc.combine(ccds, **kwargs)\n",
" tot = (time() - t0) / 10\n",
" mem = memory_usage((ccdproc.combine, [ccds], kwargs))\n",
" stats.append({\n",
" 'package': 'ccdproc', \n",
" 'combine': combine,\n",
" 'reject': reject,\n",
" 'mempeak': max(mem),\n",
" 'cputime': tot,\n",
" })\n",
" #pprint.pprint(stats[-1])"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<i>Table length=8</i>\n",
"<table id=\"table140018300561248\" class=\"table-striped table-bordered table-condensed\">\n",
"<thead><tr><th>package</th><th>combine</th><th>reject</th><th>cputime</th><th>mempeak</th></tr></thead>\n",
"<thead><tr><th>str7</th><th>str6</th><th>str7</th><th>float64</th><th>float64</th></tr></thead>\n",
"<tr><td>dragons</td><td>mean</td><td>none</td><td>1.51</td><td>5740</td></tr>\n",
"<tr><td>ccdproc</td><td>mean</td><td>none</td><td>3.64</td><td>7865</td></tr>\n",
"<tr><td>dragons</td><td>mean</td><td>sigclip</td><td>3.37</td><td>7030</td></tr>\n",
"<tr><td>ccdproc</td><td>mean</td><td>sigclip</td><td>7.12</td><td>7897</td></tr>\n",
"<tr><td>dragons</td><td>median</td><td>none</td><td>2.29</td><td>6378</td></tr>\n",
"<tr><td>ccdproc</td><td>median</td><td>none</td><td>18.41</td><td>8645</td></tr>\n",
"<tr><td>dragons</td><td>median</td><td>sigclip</td><td>4.19</td><td>7827</td></tr>\n",
"<tr><td>ccdproc</td><td>median</td><td>sigclip</td><td>19.62</td><td>8373</td></tr>\n",
"</table>"
],
"text/plain": [
"<Table length=8>\n",
"package combine reject cputime mempeak\n",
" str7 str6 str7 float64 float64\n",
"------- ------- ------- ------- -------\n",
"dragons mean none 1.51 5740\n",
"ccdproc mean none 3.64 7865\n",
"dragons mean sigclip 3.37 7030\n",
"ccdproc mean sigclip 7.12 7897\n",
"dragons median none 2.29 6378\n",
"ccdproc median none 18.41 8645\n",
"dragons median sigclip 4.19 7827\n",
"ccdproc median sigclip 19.62 8373"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t = Table(stats, names=('package', 'combine', 'reject', 'cputime', 'mempeak'))\n",
"t['cputime'].format = '%.2f'\n",
"t['mempeak'].format = '%d'\n",
"t"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Compare DRAGONS and banzai median\n",
"\n",
"Accessing the DRAGONS median requires adding the following code in `gempy/library/cyclip.pyx` :\n",
"```\n",
"@cython.boundscheck(False)\n",
"@cython.wraparound(False)\n",
"def cymedian(float [:] data, unsigned short [:] mask, int has_mask,\n",
" int data_size):\n",
" return median(&data[0], &mask[0], has_mask, data_size)\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"from gempy.library.cyclip import cymedian\n",
"from banzai.utils.stats import median"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"# Right now DRAGONS' median is limited to 10000 elements\n",
"data = np.random.randint(100, 1000, 10000).astype(np.float32)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"547.0"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.median(data)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"mask = np.zeros(data.shape, dtype=np.uint16)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"547.0"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cymedian(data, mask, 0, data.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"547.0"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"median(data)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"# DRAGONS require an uint16 mask even if we don't use this (3rd arg = 0)\n",
"mask = np.zeros(data.shape, dtype=np.uint16)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"115 µs ± 625 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n"
]
}
],
"source": [
"%timeit cymedian(data, mask, 0, data.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"# Banzai will create a uint8 mask in any case so we give it instead\n",
"mask = np.zeros(data.shape, dtype=np.uint8)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"145 µs ± 477 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n"
]
}
],
"source": [
"%timeit median(data, mask=mask)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"# Now try with masked values\n",
"mask = np.zeros(data.shape, dtype=np.uint16)\n",
"mask[np.random.randint(0, mask.shape[0]-1, 100)] = 65535"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"547.0"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cymedian(data, mask, 1, data.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"547.0"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"median(data, mask=mask>0)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"97.3 µs ± 1.11 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n"
]
}
],
"source": [
"%timeit cymedian(data, mask, 1, data.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"mask = mask > 0"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100 µs ± 582 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n"
]
}
],
"source": [
"%timeit median(data, mask=mask)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"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.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment