{ "metadata": { "name": "00-Introduction-and-demo" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "
\n", "![PyConSG 2013 logo](https://pycon.sg/static/images/pycon-logo.jpg \"PyConSG logo\")\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Introduction to data processing with Python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plan\n", "1. Ipython notebook\n", "2. Overview of numerical/scientific packages\n", "3. Basic plotting\n", "4. Array-oriented programming\n", "5. NumPy arrays (indexing, slicing, shaping)\n", "6. SciPy, scikit-image, scikit-learn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Starting ipython notebook (OSX and Linux)\n", "\n", "
\n",
      "\n",
      "    $ which ipython\n",
      "    /Users/ivan/dev/anaconda/bin/ipython\n",
      "\n",
      "    $ cd ~/dev/proj/pyconsg2013-tut/ipynb\n",
      "\n",
      "    $ pwd\n",
      "    /Users/ivan/dev/proj/pyconsg2013-tut/ipynb\n",
      "\n",
      "    $ ipython notebook\n",
      "    [NotebookApp] Using existing profile dir: u'/Users/ivan/.ipython/profile_default'\n",
      "    [NotebookApp] Serving notebooks from /Users/ivan/dev/proj/pyconsg2013-tut/ipynb\n",
      "    [NotebookApp] The IPython Notebook is running at: http://127.0.0.1:8888/\n",
      "    [NotebookApp] Use Control-C to stop this server and shut down all kernels.\n",
      "    [NotebookApp] Using MathJax from CDN: http://cdn.mathjax.org/mathjax/latest/MathJax.js\n",
      "    [NotebookApp] Kernel started: 8843b5b0-be77-4b41-9e90-ed5af6bafbbb\n",
      "    [NotebookApp] Connecting to: tcp://127.0.0.1:52020\n",
      "    [IPKernelApp] To connect another client to this kernel, use:\n",
      "    [IPKernelApp] --existing kernel-8843b5b0-be77-4b41-9e90-ed5af6bafbbb.json\n",
      "    [NotebookApp] Connecting to: tcp://127.0.0.1:52021\n",
      "    [NotebookApp] Connecting to: tcp://127.0.0.1:52023\n",
      "\n",
      "
\n", "\n", "\n", "## Download tutorial notebooks\n", "\n", "Git:\n", "\n", " $ git clone https://github.com/vanzaj/pyconsg2013-tut.git\n", "\n", "or download from https://github.com/vanzaj/pyconsg2013-tut/archive/master.zip\n" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Quick demo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Computing $\\pi$ using Monte Carlo method\n", "\n", "\n", "Consider a circle inside a square\n", "\n", "![unit circle](http://learntofish.files.wordpress.com/2010/10/circle_dots.png?w=300&h=300)\n", "\n", "([image source](http://learntofish.wordpress.com/2010/10/13/calculating-pi-with-the-monte-carlo-method/))\n", "\n", "$$\n", "\\frac{A_{circle}}{A_{square}} = \\frac{\\pi r^2}{(2r)^2} = \\frac{\\pi}{4}\n", "$$\n", "\n", "The value of $\\pi$ can be found from the ratio of the areas times 4. If we don't know the areas, we can still estimate the ratio by considering a set of random points inside the square and the fraction of points inside the circle (thinks (a few) games of darts).\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n", "For more information, type 'help(pylab)'.\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "nb_pts = 5000\n", "px = rand(nb_pts) # x coordinates\n", "py = rand(nb_pts) # y coordiantes\n", "inside = find((px**2 + py**2) <= 1.0)\n", "nb_inside = len(inside)\n", "ratio = float(nb_inside)/nb_pts\n", "print(\"pi estimate: %5.3f\" % (ratio * 4))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "pi estimate: 3.170\n" ] } ], "prompt_number": 2 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "A bit of visualisation" ] }, { "cell_type": "code", "collapsed": false, "input": [ "axis('scaled')\n", "plot(px, py, '.')\n", "plot(px[inside], py[inside], 'r.')\n", "\n", "# quarter of a circle\n", "cx = linspace(0,1, 100)\n", "cy = sqrt(1 - cx**2)\n", "plot(cx, cy, 'k-', linewidth=2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 3, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\nzn333cfvvPNO9PNdd93F7733XvxGaoAafIKTcxwqHn1i1SggMAehsMwumi1NU5Jj2Q7+d7ULokXh\nowTDsfiuK4vXquP3BbB8EGxrYYmIckDR2AKfWZu2jPhYtiNWqIabR3cBs5Qp/vz9b3/PjBVZkHJ5\nVgu4ZL2PUIVrPjfMJ6jVVJqW9YB/j/McCiTj32kFi3gafVDoAj1RlHh4itJFEJkVr5k3b96VUQ6v\nvvpqKuWwa9eu6Oe77rqL9+7dG78R0eRn8jP5uUafS5FKCsicOXPo008/jX7+9NNPqaOjI/idY8eO\n0Zw5c2LXKuiHSZmUSSkXyYZ+uWrVKjp8+DDlcjkaGxujX/7yl3T//fc737n//vvppz/9KRER7d69\nmxobG2nWrFlXbsSTMimTclUkaDlUVlbSj370I7r33nvp4sWL9Oijj9KNN95IL7zwAhERPf7447R2\n7Vravn07LVy4kKZOnUovvfTSVRn4pEzKpFxhuSRnJCCXCxdxtSRpvK+88govW7aMly5dyrfeeivv\n37//GozSlTRzzMy8Z88erqio4Ndee+0qji4uaca7Y8cOXrFiBS9evJhvv/32qztAQ5LG3N/fz/fe\ney8vX76cFy9ezC+99NLVHyTIN77xDZ45cyYvWbLE+52J7rvLqhwuJy7iakia8XZ1dXE+n2fmwoK5\nluNlTjdm+d6dd97J69at41dfffUajLQ0jqTxDg8P80033cSffvopMxc23rWUNGPevHkzf//732fm\nwnibm5t5fHz8WgyXmZl37tzJ+/bt8yqHS9l3wZjDRGXPnj20cOFC+tznPkdVVVW0YcMGev31153v\n/OpXv6KNGzcSEdGaNWson89TX1/f5RxGakkz3ltuuYUaGhqIqDDeY8eOXYuhRpJmzEREP/zhD+nB\nBx+k1tbWazDKkqQZ789//nP62te+FgW7W1parsVQI0kz5tmzZ9OpU6eIiOjUqVM0Y8YMqqwMeulX\nVL74xS9SU1OT9/eXsu8uq3Lo6emhuXPnRj93dHRQT09P4neu1YZLM16UF198kdauXXs1huaVtHP8\n+uuv0ze/+U0iIspkMld1jHosSeM9fPgwDQ0N0Z133kmrVq2il19++WoP05E0Y960aRMdPHiQ2tvb\nafny5fT8889f7WFOSC5l311WVZd2EbJKa16rxTuR++7YsYN+8pOf0DvvvHMFR5Qsacb87W9/m559\n9lnKZDLEBdfxKozMljTjHR8fp3379tFvfvMbOnfuHN1yyy1088030/XXX38VRgDP4RMAAAH2SURB\nVBiXNGPesmULrVixgn73u9/Rxx9/THfffTft37+f6uvrr8IIL00muu8uq3K4nLiIqyFpxktEdODA\nAdq0aRO9+eabQdPtakiaMe/du5c2bNhAREQDAwP0xhtvUFVVVSwNfTUkzXjnzp1LLS0tVFdXR3V1\ndfSlL32J9u/ff82UQ5oxd3V10VNPPUVERJ2dnTR//nz605/+RKtWrbqqY00rl7TvLltEhJnHx8d5\nwYIFfOTIER4dHU0MSHZ3d1/TAF+a8X7yySfc2dnJ3d3d12iUrqQZM8rXv/71a5qtSDPeDz/8kO+6\n6y6+cOECnz17lpcsWcIHDx68RiNON+bvfOc7/PTTTzNzofpxzpw5PDg4eC2GG8mRI0dSBSTT7rvL\nnsrcvn0733DDDdzZ2clbtmxhZuatW7fy1q1bo+888cQT3NnZycuWLTOh1ldTksb76KOPcnNzM69Y\nsYJXrFjBq1evvpbDZeZ0cyxyrZUDc7rxPvfcc3zTTTfxkiVL+Pnnn79WQ40kacz9/f1833338bJl\ny3jJkiX8s5/97FoOlzds2MCzZ8/mqqoq7ujo4BdffPGv3ncZ5klc86RMyqTE5bJmKyZlUibl/x+Z\nVA6TMimTYsqkcpiUSZkUUyaVw6RMyqSYMqkcJmVSJsWUSeUwKZMyKab8P3wbnQVvYzqlAAAAAElF\nTkSuQmCC\n" } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Python for scientific/numeric applications\n", "(Sorry, forgot to mention BigData above)\n", "\n", "\n", "Core functionality\n", "\n", "* [IPython](http://ipython.org/) - Enhanced interactive shell and notebook (ignore at your peril)\n", "* [NumPy](http://www.numpy.org/) - Fundamental package for scientific computing (N-dimensional array object, integration with C/C++/Fortran code, linear algebra, random numbers, FFT, ... )\n", "* [Matplotlib](http://matplotlib.org/) - Fundamental 2D plotting library\n", "\n", "(`pylab` is a helper package created to facilitate interactive work inside `ipython`. It allows importing everything from `numpy` and `matplotlib` into the current namespace).\n", "\n", "Main packages/libraries\n", "\n", "* [SciPy library](http://docs.scipy.org/doc/scipy/reference/) - Collection of libraries for scientific computing (Integration, Interpolation, Optimization, Special functions, ...)\n", "* [SymPy](http://sympy.org/) - Symbolic mathematics\n", "* [Statsmodels](http://statsmodels.sourceforge.net/) - Statistics in Python\n", "* [scikit-learn](http://scikit-learn.org/) - Machine Learning\n", "* [scikit-image](http://scikit-image.org/) - Image processing\n", "* [Pandas](http://pandas.pydata.org/) - data analysis on steroids\n", "\n", "Specialized packages/libraries\n", "\n", "* [astropy](http://www.astropy.org/) - Astronomy in Python\n", "* [biopython](http://biopython.org/) - Computational Biology\n", "* [nipy](http://nipy.org/) - NeuroImaging in Python\n", "* ...\n", "\n", "\n", "\n", "* [disco](http://discoproject.org/) - MapReduce in Python\n", "* [PyTables](http://www.pytables.org) - Hierarchical datasets (HDF5)\n", "* [PyCUDA](http://documen.tician.de/pycuda/) - GPU and Python\n", "* ...\n", "\n", "\n", "Distributions/Development environments\n", "\n", "* [IPY Notebook](http://ipython.org/notebook.html) - Interactive Python Notebook (scientific computing 3.0)\n", "* [EPD](https://www.enthought.com/products/epd/) - Enthought Python Distribution\n", "* [Anaconda](https://store.continuum.io/cshop/anaconda/) - Anaconda distribution from Continuum Analytics\n", "* [Spider](https://code.google.com/p/spyderlib/) - Scientific PYthon Development EnviRonment (IDE)\n", "* [SAGE](http://www.sagemath.org/) - free open source alternative to Magma, Maple, Mathematica and Matlab.\n", " (SAGE is a huge collection (over 100) of open-source scientific packages that uses Python as a glue language)\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Version info" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sys, IPython, numpy, matplotlib\n", "print 'Python %d.%d.%d' % (sys.version_info.major, sys.version_info.minor, sys.version_info.micro)\n", "print 'Ipython', IPython.__version__\n", "print 'NumPy', numpy.version.version\n", "print 'MPL', matplotlib.__version__" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Python 2.7.4\n", "Ipython 0.13.2\n", "NumPy 1.7.1\n", "MPL" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 1.2.1\n" ] } ], "prompt_number": 4 } ], "metadata": {} } ] }