diff --git a/demos/droplet_analysis/droptest.ipynb b/demos/droplet_analysis/droptest.ipynb new file mode 100644 index 00000000..d6f24abc --- /dev/null +++ b/demos/droplet_analysis/droptest.ipynb @@ -0,0 +1,179 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from skbeam.core.accumulators.droplet import dropletfind, dropletanal\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def hit(img, xcen, ycen, adu, sigma):\n", + " ''' hit an image with a Gaussian photon of ADU and sigma.'''\n", + " x = np.arange(img.shape[1])\n", + " y = np.arange(img.shape[0])\n", + " X,Y = np.meshgrid(x,y)\n", + " C = adu/(2*np.pi*sigma**2)\n", + " img += C*np.exp(-((X-xcen)**2 + (Y-ycen)**2)/(2.*sigma**2))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# hit detector with Nphots photons with avg ADU 800 electrons and stdev of 15 ADU\n", + "Nphots = 600\n", + "adu0 = 800\n", + "sigma_adu = 15\n", + "sigma_charge = 2 #(in pixels)\n", + "img = np.zeros((1000,1000))\n", + "Nx = img.shape[1]\n", + "Ny = img.shape[0]\n", + "for i in range(Nphots):\n", + " xcen = (np.random.random(1)[0]-.5)*(Nx-10*sigma_charge) + Nx/2\n", + " ycen = (np.random.random(1)[0]-.5)*(Ny-10*sigma_charge) + Ny/2\n", + " adu = np.random.normal(loc=adu0,scale=sigma_adu)\n", + " hit(img, xcen, ycen, adu, sigma_charge)\n", + "\n", + "#img = (np.random.random((100,100))*100).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# typical thresholding at an xray beamline\n", + "#img = (img > adu0/2.)*img\n", + "# digitize into adu\n", + "img = ((img > 0)*img).astype(int)\n", + "\n", + "#make binary image for the droplet analysis\n", + "bimg = (img > 0).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# the droplet analysis\n", + "npeaks, dimg = dropletfind(bimg)\n", + "npix, xcen, ycen, adus, idlist = dropletanal(img, dimg, npeaks)\n", + "\n", + "# histogram the ADUS\n", + "hcnts = np.bincount(adus)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plotting\n", + "\n", + "plt.figure(0);plt.clf();\n", + "\n", + "plt.subplot(2,2,1);\n", + "plt.imshow(img)\n", + "plt.title(\"Detector image\")\n", + "\n", + "plt.subplot(2,2,2);\n", + "plt.imshow(bimg);\n", + "plt.title(\"Binary Image\")\n", + "\n", + "plt.subplot(2,2,3);\n", + "plt.title(\"Digitized image with centers plotted\")\n", + "plt.imshow(dimg);\n", + "plt.plot(xcen,ycen,'ro');\n", + "plt.xlim(-.5,dimg.shape[1]+.5)\n", + "plt.ylim(-.5,dimg.shape[0]+.5)\n", + "\n", + "plt.subplot(2,2,4);\n", + "plt.plot(hcnts);\n", + "plt.xlabel(\"ADUs\")\n", + "plt.title(\"Frequency per ADU count\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "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.5.1" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}