{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "/* \n", "* @Author: paul\n", "* @Date: 2016-02-25 17:35:32\n", "* @Last Modified by: paul\n", "* @Last Modified time: 2016-02-25 17:45:54\n", "*/\n", "\n", "\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Notebook Styling\n", "from IPython.core.display import HTML\n", "def css_styling():\n", " sheet = '../css/custom.css'\n", " styles = open(sheet, \"r\").read() \n", " return HTML(styles)\n", "css_styling()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Structuring Data Exercise: Numpy dtypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before looking at Python Classes and Objects, we motivate the need for structured data using some simple image data. In this exercise you will be prompted to fill in sections using what you now know about structuring data with dtypes." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import os\n", "import matplotlib.pyplot as plt\n", "import matplotlib.cm as cm\n", "import numpy as np\n", "%matplotlib inline\n", "\n", "# The image pixel size - constant for all images in this exercise\n", "Nx = Ny = 72" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Portable Greymap ( `.pgm`) Format" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You have been provided with some image files i.e. `img1, .. img4` in the `data` directory in *portable greymap* (.pgm) format. Although admittedly a primitive image format, `.pgm` files are simple to manipulate as they contain only one pixel grey value per $x, y$ pixel in the image: the scale runs from 0 (black) to 255 (white). This represents a common task in scientific computing where you must read in some field data on a grid of points. **You are provided with the code to read and reshape this data from a file!**\n", "\n", "Here's a demonstration of a greymap image that might be stored in `.pgm` format using a simple gradient of white to black - it is displayed here using a contour plot:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 255. 253.20422535 251.4084507 ..., 131.0915493 129.29577465\n", " 127.5 ]\n", " [ 253.20422535 251.4084507 249.61267606 ..., 129.29577465 127.5\n", " 125.70422535]\n", " [ 251.4084507 249.61267606 247.81690141 ..., 127.5 125.70422535\n", " 123.9084507 ]\n", " ..., \n", " [ 131.0915493 129.29577465 127.5 ..., 7.18309859\n", " 5.38732394 3.5915493 ]\n", " [ 129.29577465 127.5 125.70422535 ..., 5.38732394 3.5915493\n", " 1.79577465]\n", " [ 127.5 125.70422535 123.9084507 ..., 3.5915493 1.79577465\n", " 0. ]]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Nx = 72\n", "Ny = 72\n", "img_x = np.linspace(1, 0, Nx)\n", "img_y = np.linspace(1, 0, Ny)\n", "X, Y = np.meshgrid(img_x, img_y)\n", "\n", "# Generate the gradient image - this could be stored in .pgm format!\n", "img_z = (X+Y) * 255*0.5\n", "print(img_z)\n", "\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111, aspect='equal')\n", "ax.contourf(img_x, img_y, img_z, 20, cmap=cm.Greys_r)\n", "ax.set_xlabel('x')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Task Breakdown\n", "\n", "Create a structured array of images in the next cell: for this we will need to define the `dtype` for the array. This should involve passing a list of length 3 as an argument to `np.dtype` defining the 3 data types required by elements (images) in the array:\n", "\n", "1. An $x$ component - The array of regularly spaced pixels x values from 1 to 0 (image colour values in pgm files start from top right pixel). Array of type float64, length $Nx$.\n", "\n", "2. A $y$ component - similar to $x$, but with length $Ny$\n", "\n", "3. A $z$ component - the array of grey levels for each pixel in the image. Array of float64, shape ($Nx, Ny$)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Create the dtype\n", "dt = np.dtype([('x', np.float64, (Nx)), ('y', np.float64, (Ny)), \n", " ('z', np.float64, (Nx,Ny))])\n", "\n", "# create a new zero'ed array of length 4 using your dtype\n", "imgs = np.zeros(4, dtype=dt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now create the normalised x and y values between 1 and 0 - these are the same for each image.\n", "\n", "*(Hint: Numpy linspace works backwards too ....)*" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "xs = np.linspace(1., 0, Nx)\n", "ys = np.linspace(1., 0., Ny)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fill in the exercise in the next section to input $xs$ and $ys$ data. Also look at the format of the code: hopefully this is more readable and neater than creating separate unstructured arrays." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['data/img1.pgm', 'data/img2.pgm', 'data/img3.pgm', 'data/img4.pgm']\n" ] }, { "data": { "image/png": "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\n9AAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# The image file names\n", "names = ['img1.pgm', 'img2.pgm', 'img3.pgm', 'img4.pgm']\n", "files = [os.path.join('data', name) for name in names]\n", "\n", "print(files)\n", "\n", "for i, file in enumerate(files):\n", " # This reads in the color data (top 4 rows are headings)\n", " imgs['z'][i] = np.loadtxt(file, skiprows=4).reshape(Nx, Ny)\n", " \n", " # Input data in to the structured format\n", " (imgs['x'][i], imgs['y'][i]) = (xs, ys)\n", "\n", "# A typical program would do something clever with the data here\n", "\n", "# Visualisation: Notice we can iterate over imgs directly\n", "for img in imgs:\n", " fig = plt.figure()\n", " ax = fig.add_subplot(111, aspect='equal')\n", " ax.contourf(img['x'], img['y'], img['z'], cmap=cm.Greys_r)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For your entertainment, we'll sum the pixel value of those images and plot the (normalised) result:" ] }, { "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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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "combined = np.zeros(1, dtype=dt)\n", "combined['x'][0] = xs\n", "combined['y'][0] = ys\n", "\n", "for img in imgs:\n", " combined['z'][0] += img['z']\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111, aspect='equal')\n", "ax.contourf(combined['x'][0], combined['y'][0], combined['z'][0], cmap=cm.Greys_r)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## [Solutions](../soln/03-dtypes.ipynb)" ] } ], "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 }