{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Pythonic Data Analysis\n",
    "One of the nice aspects of Python is that it contains many powerful tools built into the language itself:\n",
    "- Iteration and unpacking\n",
    "- dictionaries\n",
    "- first-class functions\n",
    "- filepath manipulation (standard library)\n",
    "\n",
    "In this section we'll look at how to use these concepts to write simple, yet powerful data analysis scripts."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Basic"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's start by opening a time series from the GFS to play with."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from netCDF4 import Dataset, num2date\n",
    "data = Dataset('data/model-gfs.nc', 'r')\n",
    "\n",
    "# Convert the array of time numbers to datetimes\n",
    "time_var = data['time']\n",
    "time = num2date(time_var[:], time_var.units).squeeze()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's make a basic time series plot with matplotlib."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsEAAAFwCAYAAABZz6Y5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm81fP2x/HXp0llKMkt05U5CpnrEhlCSsk1Xq76ITMJ\nl8wyZKYMUeZZyBUSko4kCnWIhKKUIWPlShrO5/fHOocjZz577893f77v5+NxHs7eZw8rq29n7e93\nfdbHee8REREREUmTOqEDEBERERHJNRXBIiIiIpI6KoJFREREJHVUBIuIiIhI6qgIFhEREZHUUREs\nIiIiIqlTYRHsnGvonJvknCt0zk13zl1dfP/1zrmPnHPvOeeeds41KfWc851znzrnZjjn9s32H0BE\nREREpLpcZXOCnXONvfeLnXP1gAnAOUAjYKz3vsg5dw2A976/c24r4FFgJ2A94BVgc+99UTb/ECIi\nIiIi1VFpO4T3fnHxtw2AusCP3vsxpQrbScD6xd/3AB7z3i/z3s8GZgI7ZzZkEREREZHaqbQIds7V\ncc4VAvOBcd776Ss95FjgheLv1wXmlfrZPOyMsIiIiIhIYlTlTHCR974ddrZ3d+dcp5KfOecuBJZ6\n7x+t6CVqHaWIiIiISAbVq+oDvfcLnXOjgB2BAudcb+AAYO9SD/sS2KDU7fWL7/sT55wKYxERERHJ\nOu+9K+v+yqZDNHfONS3+vhHQGZjqnNsf+A/Qw3u/pNRTngWOcM41cM5tBGwGTC4noJx+XXrppTl/\nT30pn/pSTtP6pXzG96WcxvWVlnxWpLIzwesADzjn6hQXzA9578c65z7FFsqNcc4BvOm9P8V7P905\n9wQwHVgOnOIriyBHZs+eHToEySDlMz7KaVyUz/gop3FRPispgr3304Dty7h/swqeMxAYWPvQRERE\nRESyIzU7xvXu3Tt0CJJBymd8lNO4KJ/xUU7jonxWYbOMrLypc0npkhARERGRSDnn8DVZGBeTgoKC\n0CFIBimf8VFO46J8xkc5jYvymaIiWERERESkhNohRERERCRKaocQERERESklNUWwel/ionzGRzmN\ni/IZH+U0LspniopgEREREZES6gkWERERkSipJ1hEREREpJTUFMHqfYmL8hkf5TQuymd8lNO4KJ8p\nKoJFREREREqoJ1hEREREoqSeYBERERGRUlJTBKv3JS7KZ3yU07gon/FRTuOifKaoCBYRERERKaGe\nYBERERGJknqCRURERERKSU0RrN6XuCif8VFO46J8xkc5jYvymaIiWERERESkhHqCRURERCRK6gkW\nERERESklNUWwel/ionzGRzmNi/IZH+U0LspniopgEREREZES6gkWERERkSipJ1hEREREpJTUFMHq\nfYmL8hkf5TQuymd8lNO4KJ8pKoJFREREREqoJ1hEREREoqSeYBERERGRUlJTBKv3JS7KZ3yU07go\nn/FRTuOifKaoCBYRERERKaGeYBERERGJknqCRURERERKSU0RrN6XuCif8VFO46J8xkc5jYvymaIi\nWERERESkhHqCRURERCRK6gkWERERESklNUWwel/ionzGRzmNi/IZH+U0LspniopgEREREZES6gkW\nERERkSipJ1hEREREpJTUFMHqfYmL8hkf5TQuymd8lNO4KJ8pKoJFREREREqoJ1hEREREolRRT3C9\nXAeTVT/9BLNmwcyZ9t+S7z/7DC66CE46KXSEIiIiIpIA+dUO4T189RW8/jrcf78VtkceCTvvDM2a\nwYYbQp8+MGIE/PwzdOgAAwbAFVdQcMcdoaOXDFIvU3yU07gon/FRTuOifCbxTPDy5fDFF389mztr\nlp3RXW012GQT+9p0U+ja9Y/vmzcHV8YZ78WL4dRT7Uzxmmvm/s8kIiIiIokSrif4gw/Kbl2YOxda\ntrSitnSxW/L96qvX7E27doVjjoHDD8/sH0ZEREREEqminuBwRfAWW5Rd6LZqBauskvk3HTIE3noL\nHnww868tIiIiIomTzM0yZsyA55+HwYPhjDPggANgiy2yUwADBc2awejRsGJFVl5fcku9TPFRTuOi\nfMZHOY2L8plvC+Nqo2VL+5o8OXQkIiIiIhJYuuYE9+8P9erBlVfm/r1FREREJKeS2Q4RQteuMGpU\n6ChEREREJLDUFMEFBQU2N3jOHJg3L3Q4UkvqZYqPchoX5TM+ymlclM8UFcGAtULsvz+88ELoSERE\nREQkoHT1BAM88gg88QSMHBnm/UVEREQkJ5I5JzhUEfzDD7DRRvDtt9CwYZgYRERERCTrarwwzjnX\n0Dk3yTlX6Jyb7py7uvj+Q51zHzrnVjjnti/1+FbOuV+dc1OLv4Zk9o9Sc7/3vqy1Fmy9Nbz2WtB4\npHbUyxQf5TQuymd8lNO4KJ9Qr6Ifeu+XOOf29N4vds7VAyY453YDpgE9gaFlPG2m9367LMSaOV27\n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\nOP10K5glr+kYjYvymaIiWEREsqBPH3jiCdtZ7rbb/jyU/6mnYNYs23BDRCRh1BMsIiK19/nntmBu\n113h1lvhl19sw40RI6BDh9DRiUhKVdQTrCJYREQyY9EiOPpo++8660Dz5lYQi4gEooVxqPclNspn\nfJTTCKyxhg3hb9/e8jlQ0zJjomM0LspnNbZNFhERqVTdunDNNbDvvrYjlYhIQqkdQkRERESipHYI\nEREREZFSUlMEq/clLspnfJTTuCif8VFO46J8pqgIFhEREREpoZ5gEREREYmSeoJFREREREpJTRGs\n3pe4KJ/xUU7jonzGRzmNi/KZoiJYRERERKSEeoJFREREJErqCRYRERERKSU1RbB6X+KifMZHOY2L\n8hkf5TQuymeKimARERERkRLqCRYRERGRKKknWERERESklNQUwep9iYvyGR/lNC7KZ3yU07gonykq\ngkVERERESqgnWERERESipJ5gEREREZFSUlMEq/clLspnfJTTuCif8VFO46J8pqgIFhEREREpoZ5g\nEREREYmSeoJFREREREpJTRGs3pe4KJ/xUU7jonzGRzmNi/KZoiJYRERERKSEeoJFREREJErqCRYR\nERERKSU1RbB6X+KifMZHOY2L8hkf5TQuymeKimARERERkRLqCRYRERGRKKknWERERESklNQUwep9\niYvyGR/lNC7KZ3yU07gonykqgkVERERESqgnWERERESipJ5gEREREZFSUlMEq/clLspnfJTTuCif\n8VFO46J8pqgIFhEREREpoZ5gEREREYmSeoJFREREREpJTRGs3pe4KJ/xUU7jonzGRzmNi/KZoiJY\nRERERKSEeoJFREREJErqCRYRERERKSU1RbB6X+KifMZHOY2L8hkf5TQuymeKimARERERkRLqCRYR\nERGRKKknWERERESklNQUwep9iYvyGR/lNC7KZ3yU07gonykqgkVERERESqgnWERERESipJ5gERER\nEZFSKiyCnXMbOOfGOec+dM594Jw7o/j+bZ1zbzrn3nfOPeucW734/lbOuV+dc1OLv4bk4g9RFep9\niYvyGR/lNC7KZ3yU07gon5WfCV4G9PPetwHaA6c657YE7gbO9d5vA/wX+E+p58z03m9X/HVKVqKu\ngcLCwtAhSAYpn/FRTuOifMZHOY2L8llJEey9/8Z7X1j8/f+Aj4D1gM28968XP+wV4J9ZjTIDFixY\nEDoEySDlMz7KaVyUz/gop3FRPqvRE+ycawVsB0wCPnTO9Sj+0aHABqUeulFxK0SBc263TAUqIiIi\nIpIpVSqCnXOrAU8Bfb33PwPHAqc4594BVgOWFj/0K2AD7/12wFnAoyX9wqHNnj07dAiSQcpnfJTT\nuCif8VFO46J8VmFEmnOuPvA8MNp7P6iMn28OPOS936WMn40DzvbeT1npfs1HExEREZGsK29EWr2K\nnuScc8A9wPTSBbBzbm3v/XfOuTrARcAdxfc3B37y3q9wzm0MbAZ8VtVgRERERERyocIiGNgVOBp4\n3zk3tfi+C4DNnHOnFt8e4b2/v/j73YHLnXPLgCLgRO+9Oq9FREREJFGC7BgnIiIiIhJSIneMc87t\n75yb4Zz71Dl3XvF9zZxzY5xznzjnXnbONa3qc3P5fPkr59y9zrn5zrlppe673jn3kXPuPefc0865\nJuU8V/lMIB2jcdExGh8do3HRMZol3vtEfQF1gZlAK6A+UAhsCVyHbdABcB5wTVWfW/yzrD9fX+Xm\ntCM2Xm9aqfs6A3WKv79G+cyfLx2j8X3pGI3rS8dofF86RrP0/zV0AGX8D+8AvFjqdn/gfGAG0KL4\nvpbAjCo+t3/x91l/vr4qzGur0gfvSj/rCTysfObHl47ROL90jMbzpWM0zi8do5n/SmI7xHrA3FK3\n5xXf18J7P7/4vvlACwDn3LrOuVGVPJdsPV8y4ljgBVA+84SO0fTRMZpfdIymj47RGkhiEVzWSr0/\n3eftY4cv/v4r733Xcp7rynq9TD5fasc5dyGw1Hv/KCifeULHaIroGM1LOkZTRMdozSWxCP6SP2/D\nvEHxffOdcy0BnHPrAN9W4bnrF99Hjp4v1eCc6w0cABxVzkOUz2TSMZoSOkbzlo7RlNAxWjtJLILf\nweYQt3LONQAOB0YCzwK9ih/TC3imis99tvhnuXi+VJFzbn/gP0AP7/2Sch6mfCaTjtEU0DGa13SM\npoCO0QwI3ZRc1hfQBfgYW5F4fvF9zYBXgE+Al4GmxfevC4yq6LnZfL6+qpTPx4CvgKVYb9GxwKfA\nHGBq8dcQ5TN/vnSMxvWlYzS+Lx2jcX3pGM3OlzbLEBEREZHUSWI7hIiIiIhIVqkIFhEREZHUUREs\nIiIiIqmjIlhEREREUkdFsIiIiIikjopgEREREUkdFcEiIiIikjoqgkVEREQkdf4fU5yuONSIusAA\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108475ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "# Just a single panel of time vs. Temperature_isobaric, which was taken from 1000mb\n",
    "fig, ax = plt.subplots(1, 1, figsize=(12, 6))\n",
    "ax.plot(time, data.variables['Temperature_isobaric'][:].squeeze(), 'r-')\n",
    "ax.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's work a bit harder and add axis labels, set up some better date ticking, and format the grid lines to go with the new ticking so that we can more easily denote the days."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n4LIEAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1090de470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 1, figsize=(12, 6))\n",
    "ax.plot(time, data.variables['Temperature_isobaric'][:].squeeze(), 'r-', linewidth=2)\n",
    "\n",
    "# Add x/y axis labels with a bigger font\n",
    "label_font = dict(size=16)\n",
    "ax.set_xlabel('Forecast time (UTC)', fontdict=label_font)\n",
    "ax.set_ylabel('Temperature', fontdict=label_font)\n",
    "\n",
    "# Set the x-axis to do major ticks on the days and label them like 'Jul 20'\n",
    "from matplotlib.dates import DateFormatter, DayLocator, HourLocator\n",
    "ax.xaxis.set_major_locator(DayLocator())\n",
    "ax.xaxis.set_major_formatter(DateFormatter('%h %d'))\n",
    "\n",
    "# Set up minor ticks with the hours 6, 12, 18 written as '18Z'\n",
    "ax.xaxis.set_minor_locator(HourLocator(range(6, 24, 6)))\n",
    "ax.xaxis.set_minor_formatter(DateFormatter('%HZ'))\n",
    "\n",
    "# Highlight the major x-axis grid lines with a thicker, dashed line\n",
    "ax.grid(axis='x', linestyle='--', color='#666699', linewidth=1.0)\n",
    "ax.grid(which='minor', axis='x')\n",
    "ax.grid(axis='y')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Containers and iteration"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Python's built-in lists and tuples facilitate easy ways of looping over groups of data. One useful utility is ``zip``, which iterates over multiple lists at the same time and gives tuples of the elements."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "vals = [1, 2, 3, 4]\n",
    "names = ['one', 'two', 'three', 'four']\n",
    "z = list(zip(names, vals))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Coincidentally, ``zip`` can also be used to unzip, using the ability of Python to pass a sequence as a set of positional arguments:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('one', 'two', 'three', 'four'), (1, 2, 3, 4)]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(zip(*z))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Another useful part of the containers is unpacking, which allows assignment directly from a container"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n"
     ]
    }
   ],
   "source": [
    "one, two, three, four = vals\n",
    "print(three)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This same functionality enables multiple return values from functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0000000000000002 1.7320508075688772\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "def polar_to_cartesian(r, th):\n",
    "    x = r * math.cos(th)\n",
    "    y = r * math.sin(th)\n",
    "    return x, y\n",
    "\n",
    "X,Y = polar_to_cartesian(2, math.pi / 3)\n",
    "print(X, Y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can put those together and iterate over multiple lists, and unpack those items into individual variables:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "one == 1\n",
      "two == 2\n",
      "three == 3\n",
      "four == 4\n"
     ]
    }
   ],
   "source": [
    "for n, v in zip(names, vals):\n",
    "    print('%s == %d' % (n, v))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's add ``Relative_humidity_isobaric`` to our plot on a new subplot. But we need to do this in a loop without duplicating code. To do so we need:\n",
    "- A list of variables to plot\n",
    "- A way to convert the variable from the file to an axis label\n",
    "- A list of plot formats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# This is just to keep the different cells in the notebook from rehashing this\n",
    "def set_defaults(ax):\n",
    "    # Set the x-axis to do major ticks on the days and label them like 'Jul 20'\n",
    "    from matplotlib.dates import DateFormatter, DayLocator, HourLocator\n",
    "    ax.xaxis.set_major_locator(DayLocator())\n",
    "    ax.xaxis.set_major_formatter(DateFormatter('%h %d'))\n",
    "\n",
    "    # Set up minor ticks with the hours 6, 12, 18 written as '18Z'\n",
    "    ax.xaxis.set_minor_locator(HourLocator(range(6, 24, 6)))\n",
    "    ax.xaxis.set_minor_formatter(DateFormatter('%HZ'))\n",
    "\n",
    "    # Highlight the major x-axis grid lines with a thicker, dashed line\n",
    "    ax.grid(axis='x', linestyle='--', color='#666699', linewidth=1.0)\n",
    "    ax.grid(which='minor', axis='x')\n",
    "    ax.grid(axis='y')\n",
    "    \n",
    "    # Normal x-axis label\n",
    "    ax.set_xlabel('Forecast time (UTC)', fontdict=dict(size=16))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# This creates a figure and 2 subplots (axes is a list 2 Axes objects)\n",
    "fig, axes = plt.subplots(1, 2, figsize=(18, 6))\n",
    "\n",
    "# What should we loop over?\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dictionaries"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Dictionaries are another powerful language feature that allow you to create arbitrary mappings between two sets of things (key -> value). They can be abused, certainly, but they give programmers the ability to create simple data structures on the fly."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1: 'one', 2: 'two', 3: 'three', 4: 'four'}\n"
     ]
    }
   ],
   "source": [
    "# From before, we can now create a way to map a integer value to its\n",
    "# english representation\n",
    "num_map = dict(zip(vals, names))\n",
    "print(num_map)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Of course, the values can themselves be dictionaries:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OK\n"
     ]
    }
   ],
   "source": [
    "states = dict(Colorado={'abbreviation': 'CO', 'capitol': 'Denver', 'notes': 'Home!'},\n",
    "              Oklahoma={'abbreviation': 'OK', 'capitol': 'Oklahoma City', 'flat': True},\n",
    "              Kansas={'abbreviation': 'KS', 'capitol': 'Topeka', 'flat': True})\n",
    "\n",
    "print(states['Oklahoma']['abbreviation'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Dictionaries can also be used to pass a set of keyword arguments:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def print_states(Colorado, **the_rest):\n",
    "    print(Colorado['abbreviation'], 'is', Colorado['notes'])\n",
    "    for state, info in the_rest.items():\n",
    "        print('The capitol of %s is %s' % (state, info['capitol']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CO is Home!\n",
      "The capitol of Kansas is Topeka\n",
      "The capitol of Oklahoma is Oklahoma City\n"
     ]
    }
   ],
   "source": [
    "print_states(**states)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's add a third panel with the ``Temperature_surface``. This should have the same plotting style as ``Temperature``, but **without** duplicating the style information. It might also be nice to set the title of the axes with the variable name for clarity.\n",
    "\n",
    "Hint: We already have ``name``, that might make a nice key\n",
    "\n",
    "\n",
    "Hint #2: ``plot`` takes a bunch of keyword arguments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Should probably specify plotting styles here\n",
    "\n",
    "fig, axes = plt.subplots(1, 3, figsize=(18, 6))\n",
    "\n",
    "# Now need to loop over the subplots"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## First class functions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Functions in Python can be passed around and used, just like any other object. This makes it very easy to pull out bits of functionality and re-use them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'two'"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Function using our dictionary from earlier\n",
    "def to_english(i):\n",
    "    return num_map[i]\n",
    "\n",
    "to_english(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So let's sort our list of numbers using their english representation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1, 2, 3, 4]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[4, 1, 3, 2]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vals.sort(key=to_english)\n",
    "vals"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's convert the temperature on our plots from Kelvin to Farenheit. Since functions are first-class objects, we can stuff them into dictionaries as well...."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# Conversion functions, and some structure to use them...\n",
    "\n",
    "fig, axes = plt.subplots(1, 3, figsize=(18, 6))\n",
    "\n",
    "# Loop over the subplots"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## A bit more advanced"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's now go ahead and put both temperature variables on the same plot. We'll need to change to loop over a list of `varnames` for each plot. We'll also need to label each plot with the level ``surface`` vs. ``isobaric``, and add a legend. This will also require separating out the plot styles across the type and level."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Need some styles here\n",
    "\n",
    "# Now only two subplots\n",
    "fig, axes = plt.subplots(1, 2, figsize=(18, 6))\n",
    "\n",
    "# Looping over each subplot\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Filepath manipulation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Python standard library has a lot of utilties for manipulating paths. One such utility is the ``glob`` module, which makes it easy to find files matching a UNIX shell-style file wildcard:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['data/model-gfs.nc',\n",
       " 'data/model-nam.nc',\n",
       " 'data/new.nc',\n",
       " 'data/new2.nc',\n",
       " 'data/prmsl.2000.nc',\n",
       " 'data/prmsl.2001.nc',\n",
       " 'data/prmsl.2002.nc',\n",
       " 'data/prmsl.2003.nc',\n",
       " 'data/prmsl.2004.nc',\n",
       " 'data/prmsl.2005.nc',\n",
       " 'data/prmsl.2006.nc',\n",
       " 'data/prmsl.2007.nc',\n",
       " 'data/prmsl.2008.nc',\n",
       " 'data/prmsl.2009.nc',\n",
       " 'data/prmsl.2010.nc',\n",
       " 'data/prmsl.2011.nc',\n",
       " 'data/rtofs_glo_3dz_f006_6hrly_reg3.nc',\n",
       " 'data/testrh.nc']"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import glob\n",
    "glob.glob('data/*.nc')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The ``os.path`` module provides functions that make it easy to manipulate paths, making munging such information trivial. For instance, to get the base filename from those paths above:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['model-gfs.nc',\n",
       " 'model-nam.nc',\n",
       " 'new.nc',\n",
       " 'new2.nc',\n",
       " 'prmsl.2000.nc',\n",
       " 'prmsl.2001.nc',\n",
       " 'prmsl.2002.nc',\n",
       " 'prmsl.2003.nc',\n",
       " 'prmsl.2004.nc',\n",
       " 'prmsl.2005.nc',\n",
       " 'prmsl.2006.nc',\n",
       " 'prmsl.2007.nc',\n",
       " 'prmsl.2008.nc',\n",
       " 'prmsl.2009.nc',\n",
       " 'prmsl.2010.nc',\n",
       " 'prmsl.2011.nc',\n",
       " 'rtofs_glo_3dz_f006_6hrly_reg3.nc',\n",
       " 'testrh.nc']"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os.path\n",
    "filenames = [os.path.basename(fname) for fname in glob.glob('data/*.nc')]\n",
    "filenames"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And even remove the file extensions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['model-gfs',\n",
       " 'model-nam',\n",
       " 'new',\n",
       " 'new2',\n",
       " 'prmsl.2000',\n",
       " 'prmsl.2001',\n",
       " 'prmsl.2002',\n",
       " 'prmsl.2003',\n",
       " 'prmsl.2004',\n",
       " 'prmsl.2005',\n",
       " 'prmsl.2006',\n",
       " 'prmsl.2007',\n",
       " 'prmsl.2008',\n",
       " 'prmsl.2009',\n",
       " 'prmsl.2010',\n",
       " 'prmsl.2011',\n",
       " 'rtofs_glo_3dz_f006_6hrly_reg3',\n",
       " 'testrh']"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[os.path.splitext(name)[0] for name in filenames]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Can we use this to process all files beginning with `model-` in the `data/` directory? Let's start by just collecting the NetCDF4 datasets into a dictionary with the model name (the part after `model-`, but before `.nc`) capitalized as the key."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Create empty dict where we'll store stuff\n",
    "model_data = dict()\n",
    "\n",
    "# Glob for file and loop\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we need to update the plotting to loop over the model datasets. Note that we need to do the time conversion step from the beginning inside this loop, so that each dataset has it done. The subplots should have their title set based on the model. It might also be nice to use consistent y-axis limits for the variables."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "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.4.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}