{
 "metadata": {
  "name": "",
  "signature": "sha256:61ed4ed931e3c8e5e570e7d5f27133e79474d10ae592ba322c919fd21c373177"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "# iPython notebooks are a great way to learn and experiment with code\n",
      "## The fact that they document your work so well is just a benefit!\n",
      "So let's work on a little project together :)\n",
      "\n",
      "I have a really up-lifting topic we can look at, School Shooting Incidents in the United States"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import os\n",
      "import sys\n",
      "\n",
      "os.listdir('.')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 1,
       "text": [
        "['us_population.csv', 'Example.ipynb', 'school_shootings.csv']"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import gale.fileIO.csvHandlers as csvh\n",
      "data, headers = csvh.read_as_list('school_shootings.csv', header=True)\n",
      "print data[0]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "['1850', '5']\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import pandas as pd\n",
      "df = pd.read_csv('school_shootings.csv')\n",
      "print df.head()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "   Decade  Count\n",
        "0    1850      5\n",
        "1    1860      6\n",
        "2    1870     12\n",
        "3    1880     16\n",
        "4    1890     11\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "df.plot(x='Decade', y='Count')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 4,
       "text": [
        "<matplotlib.axes.AxesSubplot at 0x9ecfc6c>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\njoWeiKjA/T8KZ3R8abKYJQAAAABJRU5ErkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x9ecf8ac>"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Gross! Let's make that look nicer easily"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from mpltools import style\n",
      "style.use('ggplot')\n",
      "\n",
      "df.plot(x='Decade', y='Count')\n",
      "plt.ylabel('Number of School Shooting Incidents')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "os.listdir('.')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "uspop = pd.read_csv('us_population.csv')\n",
      "uspop.head()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def pull_year(date_string):\n",
      "    return int(date_string.split(' ')[-1])\n",
      "\n",
      "uspop['year'] = uspop.Date.apply(pull_year)\n",
      "uspop.head()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "uspop.plot(x='year', y='National Population')\n",
      "plt.ylabel('US Population')\n",
      "plt.xlabel('Year')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## So iPython notebook is great and it documents my work, but sometimes it's easier to use bash commands than just Python\n",
      "iPython already recognizes some of the basic bash commands and other shell commands can be run with a '!' before it."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ls"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\u001b[0m\u001b[00mExample.ipynb\u001b[0m  \u001b[00mschool_shootings.csv\u001b[0m  \u001b[00mus_population.csv\u001b[0m\r\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "cd ~/Projects/Fragmented-Care/"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "/home/visitors/adampah/Projects/Fragmented-Care\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ls -la"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "total 40\r\n",
        "drwxrwxr-x  6 adampah adampah 4096 May 20 11:38 \u001b[0m\u001b[01;35m.\u001b[0m/\r\n",
        "drwxr-xr-x 27 adampah adampah 4096 May 29 11:21 \u001b[01;35m..\u001b[0m/\r\n",
        "drwxr-xr-x  5 adampah adampah 4096 May 28 08:24 \u001b[01;35mCode\u001b[0m/\r\n",
        "drwxr-xr-x 16 adampah adampah 4096 Jun  9 21:23 \u001b[01;35mData\u001b[0m/\r\n",
        "-rw-r--r--  1 adampah adampah 4096 May 19 15:36 \u001b[00m._.DS_Store\u001b[0m\r\n",
        "-rw-r--r--  1 adampah adampah 6148 May 20 08:53 \u001b[00m.DS_Store\u001b[0m\r\n",
        "drwxr-xr-x  4 adampah adampah 4096 May 29 12:00 \u001b[01;35m.hg\u001b[0m/\r\n",
        "-rw-r--r--  1 adampah adampah   31 May 19 15:52 \u001b[00m.hgignore\u001b[0m\r\n",
        "drwxrwxr-x  3 adampah adampah 4096 Jun  9 16:34 \u001b[01;35mResults\u001b[0m/\r\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "!ping www.google.com"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "PING www.google.com (74.125.225.116) 56(84) bytes of data.\r\n",
        "64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_req=1 ttl=56 time=1.61 ms\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_req=2 ttl=56 time=1.57 ms\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_req=3 ttl=56 time=1.57 ms\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_req=4 ttl=56 time=1.62 ms\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_req=5 ttl=56 time=1.63 ms\r\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "^C\r\n",
        "--- www.google.com ping statistics ---\r\n",
        "5 packets transmitted, 5 received, 0% packet loss, time 4003ms\r\n",
        "rtt min/avg/max/mdev = 1.571/1.604/1.635/0.044 ms\r\n",
        "\r\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "But sometimes you may want to actually just execute a big block of bash code and we can do that too!"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%%bash\n",
      "cd $gale\n",
      "ls -la"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "total 16\n",
        "drwxrwxr-x  4 adampah adampah 4096 Jun  6 15:42 .\n",
        "drwxr-xr-x 23 adampah adampah 4096 Jun  2 18:52 ..\n",
        "drwxrwxr-x 14 adampah adampah 4096 Jun  3 19:43 gale\n",
        "drwxrwxr-x  4 adampah adampah 4096 Jun  6 15:42 .hg\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "That '%%' symbol is the invocation of a magic command (specifically a cell magic, you can do a line magic with just a single '%'). \n",
      "\n",
      "iPython notebook can run code from a number of other programming languages that way.\n",
      "\n",
      "One thing to note though, is executing bash commands in a cell magic doesn't change the state of the actual notebook."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ls -la"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "total 40\r\n",
        "drwxrwxr-x  6 adampah adampah 4096 May 20 11:38 \u001b[0m\u001b[01;35m.\u001b[0m/\r\n",
        "drwxr-xr-x 27 adampah adampah 4096 May 29 11:21 \u001b[01;35m..\u001b[0m/\r\n",
        "drwxr-xr-x  5 adampah adampah 4096 May 28 08:24 \u001b[01;35mCode\u001b[0m/\r\n",
        "drwxr-xr-x 16 adampah adampah 4096 Jun  9 21:23 \u001b[01;35mData\u001b[0m/\r\n",
        "-rw-r--r--  1 adampah adampah 4096 May 19 15:36 \u001b[00m._.DS_Store\u001b[0m\r\n",
        "-rw-r--r--  1 adampah adampah 6148 May 20 08:53 \u001b[00m.DS_Store\u001b[0m\r\n",
        "drwxr-xr-x  4 adampah adampah 4096 May 29 12:00 \u001b[01;35m.hg\u001b[0m/\r\n",
        "-rw-r--r--  1 adampah adampah   31 May 19 15:52 \u001b[00m.hgignore\u001b[0m\r\n",
        "drwxrwxr-x  3 adampah adampah 4096 Jun  9 16:34 \u001b[01;35mResults\u001b[0m/\r\n"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Even better we can actually transfer the results from a bash command to python!"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "files = !ls\n",
      "for individual_file in files:\n",
      "    print individual_file"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Code\n",
        "Data\n",
        "Results\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Even better iPython can handle this with more languages than just bash too! At the current time it works with:\n",
      "\n",
      "- Ruby\n",
      "- Javascript\n",
      "- HTML\n",
      "- LaTeX\n",
      "- Perl\n",
      "- R\n",
      "- Julia\n",
      "\n",
      "    and more are always coming. Running them is also simple"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%%ruby\n",
      "puts \"Oh snap. This is Ruby Code!\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Oh snap. This is Ruby Code!\n"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%%javascript\n",
      "console.log(\"Double damn! It's javascript!\")"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "javascript": [
        "console.log(\"Double damn! It's javascript!\")"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x9de3fec>"
       ]
      }
     ],
     "prompt_number": 13
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## But wait, more!\n",
      "Magics aren't just used for running other languages, there are also other built-in, useful magics"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%timeit map(float, [1, 2, 3, 4, 5] * 1000)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1000 loops, best of 3: 594 \u00b5s per loop\n"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%timeit [float(x) for x in [1, 2, 3, 4, 5] * 1000]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}