From 469efe70e161615b43666638d1865abcfa0442d5 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Mon, 10 Mar 2014 20:15:18 -0700 Subject: [PATCH] novice: Copy-paste from origin/master I couldn't find a way to merge these without clobbering a bunch of other files, so this is just a copy-paste of the current status as of e4b84bd (Merge pull request #359 from swcarpentry/ahmadia/dhaine_r_ref, 2014-03-06). --- novice/python/.gitignore | 6 + novice/python/01-numpy.ipynb | 1534 +++++++++++++ novice/python/02-func.ipynb | 1691 ++++++++++++++ novice/python/03-loop.ipynb | 910 ++++++++ novice/python/04-cond.ipynb | 1413 ++++++++++++ novice/python/05-defensive.ipynb | 963 ++++++++ novice/python/06-cmdline.ipynb | 1275 +++++++++++ novice/python/README.txt | 9 + novice/python/argv-list.py | 2 + novice/python/count-stdin.py | 7 + novice/python/gen-inflammation.py | 19 + .../python/img/ave-inflammation-over-time.png | Bin 0 -> 9673 bytes novice/python/img/color-cube.png | Bin 0 -> 28840 bytes novice/python/img/combined-inflammation-2.png | Bin 0 -> 18161 bytes .../img/combined-inflammation-per-day.png | Bin 0 -> 18273 bytes novice/python/img/initial-heat-map.png | Bin 0 -> 71446 bytes novice/python/img/loop-inflammation-01.png | Bin 0 -> 18273 bytes novice/python/img/loop-inflammation-02.png | Bin 0 -> 18161 bytes novice/python/img/loop-inflammation-03.png | Bin 0 -> 18034 bytes .../python/img/max-inflammation-over-time.png | Bin 0 -> 6087 bytes .../python/img/min-inflammation-per-day.png | Bin 0 -> 5804 bytes novice/python/img/python-call-stack-01.odg | Bin 0 -> 9101 bytes novice/python/img/python-call-stack-01.svg | 929 ++++++++ novice/python/img/python-call-stack-02.odg | Bin 0 -> 9770 bytes novice/python/img/python-call-stack-02.svg | 1360 ++++++++++++ novice/python/img/python-call-stack-03.odg | Bin 0 -> 9976 bytes novice/python/img/python-call-stack-03.svg | 1791 +++++++++++++++ novice/python/img/python-call-stack-04.odg | Bin 0 -> 9904 bytes novice/python/img/python-call-stack-04.svg | 1431 ++++++++++++ novice/python/img/python-call-stack-05.odg | Bin 0 -> 10118 bytes novice/python/img/python-call-stack-05.svg | 1962 +++++++++++++++++ novice/python/img/python-call-stack-06.odg | Bin 0 -> 10039 bytes novice/python/img/python-call-stack-06.svg | 1602 ++++++++++++++ novice/python/img/python-call-stack-07.odg | Bin 0 -> 9217 bytes novice/python/img/python-call-stack-07.svg | 930 ++++++++ .../img/python-flowchart-conditional.odg | Bin 0 -> 9373 bytes .../img/python-flowchart-conditional.svg | 373 ++++ .../img/python-flowchart-nested-loops.odg | Bin 0 -> 9936 bytes .../img/python-flowchart-nested-loops.svg | 1724 +++++++++++++++ .../img/python-operations-across-axes.odg | Bin 0 -> 9310 bytes .../img/python-operations-across-axes.svg | 610 +++++ .../python/img/python-overlapping-ranges.odg | Bin 0 -> 9239 bytes .../python/img/python-overlapping-ranges.svg | 1418 ++++++++++++ .../img/python-sticky-note-variables-01.odg | Bin 0 -> 8772 bytes .../img/python-sticky-note-variables-01.svg | 234 ++ .../img/python-sticky-note-variables-02.odg | Bin 0 -> 8873 bytes .../img/python-sticky-note-variables-02.svg | 288 +++ .../img/python-sticky-note-variables-03.odg | Bin 0 -> 8869 bytes .../img/python-sticky-note-variables-03.svg | 288 +++ novice/python/index.md | 34 + novice/python/inflammation-01.csv | 60 + novice/python/inflammation-02.csv | 60 + novice/python/inflammation-03.csv | 60 + novice/python/inflammation-04.csv | 60 + novice/python/inflammation-05.csv | 60 + novice/python/inflammation-06.csv | 60 + novice/python/inflammation-07.csv | 60 + novice/python/inflammation-08.csv | 60 + novice/python/inflammation-09.csv | 60 + novice/python/inflammation-10.csv | 60 + novice/python/inflammation-11.csv | 60 + novice/python/inflammation-12.csv | 60 + novice/python/readings-01.py | 9 + novice/python/readings-02.py | 11 + novice/python/readings-03.py | 11 + novice/python/readings-04.py | 22 + novice/python/readings-05.py | 26 + novice/python/readings-06.py | 29 + novice/python/rectangle.py | 3 + novice/python/small-01.csv | 2 + novice/python/small-02.csv | 2 + novice/python/small-03.csv | 2 + novice/python/spatial-intro.ipynb | 399 ++++ novice/python/swc_bc_coords.csv | 113 + novice/python/sys-version.py | 2 + 75 files changed, 24154 insertions(+) create mode 100644 novice/python/.gitignore create mode 100644 novice/python/01-numpy.ipynb create mode 100644 novice/python/02-func.ipynb create mode 100644 novice/python/03-loop.ipynb create mode 100644 novice/python/04-cond.ipynb create mode 100644 novice/python/05-defensive.ipynb create mode 100644 novice/python/06-cmdline.ipynb create mode 100644 novice/python/README.txt create mode 100644 novice/python/argv-list.py create mode 100644 novice/python/count-stdin.py create mode 100644 novice/python/gen-inflammation.py create mode 100644 novice/python/img/ave-inflammation-over-time.png create mode 100644 novice/python/img/color-cube.png create mode 100644 novice/python/img/combined-inflammation-2.png create mode 100644 novice/python/img/combined-inflammation-per-day.png create mode 100644 novice/python/img/initial-heat-map.png create mode 100644 novice/python/img/loop-inflammation-01.png create mode 100644 novice/python/img/loop-inflammation-02.png create mode 100644 novice/python/img/loop-inflammation-03.png create mode 100644 novice/python/img/max-inflammation-over-time.png create mode 100644 novice/python/img/min-inflammation-per-day.png create mode 100644 novice/python/img/python-call-stack-01.odg create mode 100644 novice/python/img/python-call-stack-01.svg create mode 100644 novice/python/img/python-call-stack-02.odg create mode 100644 novice/python/img/python-call-stack-02.svg create mode 100644 novice/python/img/python-call-stack-03.odg create mode 100644 novice/python/img/python-call-stack-03.svg create mode 100644 novice/python/img/python-call-stack-04.odg create mode 100644 novice/python/img/python-call-stack-04.svg create mode 100644 novice/python/img/python-call-stack-05.odg create mode 100644 novice/python/img/python-call-stack-05.svg create mode 100644 novice/python/img/python-call-stack-06.odg create mode 100644 novice/python/img/python-call-stack-06.svg create mode 100644 novice/python/img/python-call-stack-07.odg create mode 100644 novice/python/img/python-call-stack-07.svg create mode 100644 novice/python/img/python-flowchart-conditional.odg create mode 100644 novice/python/img/python-flowchart-conditional.svg create mode 100644 novice/python/img/python-flowchart-nested-loops.odg create mode 100644 novice/python/img/python-flowchart-nested-loops.svg create mode 100644 novice/python/img/python-operations-across-axes.odg create mode 100644 novice/python/img/python-operations-across-axes.svg create mode 100644 novice/python/img/python-overlapping-ranges.odg create mode 100644 novice/python/img/python-overlapping-ranges.svg create mode 100644 novice/python/img/python-sticky-note-variables-01.odg create mode 100644 novice/python/img/python-sticky-note-variables-01.svg create mode 100644 novice/python/img/python-sticky-note-variables-02.odg create mode 100644 novice/python/img/python-sticky-note-variables-02.svg create mode 100644 novice/python/img/python-sticky-note-variables-03.odg create mode 100644 novice/python/img/python-sticky-note-variables-03.svg create mode 100644 novice/python/index.md create mode 100644 novice/python/inflammation-01.csv create mode 100644 novice/python/inflammation-02.csv create mode 100644 novice/python/inflammation-03.csv create mode 100644 novice/python/inflammation-04.csv create mode 100644 novice/python/inflammation-05.csv create mode 100644 novice/python/inflammation-06.csv create mode 100644 novice/python/inflammation-07.csv create mode 100644 novice/python/inflammation-08.csv create mode 100644 novice/python/inflammation-09.csv create mode 100644 novice/python/inflammation-10.csv create mode 100644 novice/python/inflammation-11.csv create mode 100644 novice/python/inflammation-12.csv create mode 100644 novice/python/readings-01.py create mode 100644 novice/python/readings-02.py create mode 100644 novice/python/readings-03.py create mode 100644 novice/python/readings-04.py create mode 100644 novice/python/readings-05.py create mode 100644 novice/python/readings-06.py create mode 100644 novice/python/rectangle.py create mode 100644 novice/python/small-01.csv create mode 100644 novice/python/small-02.csv create mode 100644 novice/python/small-03.csv create mode 100644 novice/python/spatial-intro.ipynb create mode 100644 novice/python/swc_bc_coords.csv create mode 100644 novice/python/sys-version.py diff --git a/novice/python/.gitignore b/novice/python/.gitignore new file mode 100644 index 0000000..759975e --- /dev/null +++ b/novice/python/.gitignore @@ -0,0 +1,6 @@ +01-numpy.md +02-func.md +03-loop.md +04-cond.md +05-defensive.md +06-cmdline.md diff --git a/novice/python/01-numpy.ipynb b/novice/python/01-numpy.ipynb new file mode 100644 index 0000000..687d29c --- /dev/null +++ b/novice/python/01-numpy.ipynb @@ -0,0 +1,1534 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 2, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Analyzing Patient Data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We are studying inflammation in patients who have been given a new treatment for arthritis,\n", + "and need to analyze the first dozen data sets.\n", + "The data sets are stored in [comma-separated values](../../gloss.html#csv) (CSV) format:\n", + "each row holds information for a single patient,\n", + "and the columns represent successive days.\n", + "The first few rows of our first file look like this:\n", + "\n", + " 0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4,2,3,0,0\n", + " 0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5,1,1,0,1\n", + " 0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3,2,2,1,1\n", + " 0,0,2,0,4,2,2,1,6,7,10,7,9,13,8,8,15,10,10,7,17,4,4,7,6,15,6,4,9,11,3,5,6,3,3,4,2,3,2,1\n", + " 0,1,1,3,3,1,3,5,2,4,4,7,6,5,3,10,8,10,6,17,9,14,9,7,13,9,12,6,7,7,9,6,3,2,2,4,2,0,1,1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We want to:\n", + "\n", + "* load that data into memory,\n", + "* calculate the average inflammation per day across all patients, and\n", + "* plot the result.\n", + "\n", + "To do all that, we'll have to learn a little bit about programming." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "objectives" + ] + }, + "source": [ + "#### Objectives\n", + "\n", + "* Explain what a library is, and what libraries are used for.\n", + "* Load a Python library and use the things it contains.\n", + "* Read tabular data from a file into a program.\n", + "* Assign values to variables.\n", + "* Select individual values and subsections from data.\n", + "* Perform operations on arrays of data.\n", + "* Display simple graphs." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Loading Data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Words are useful,\n", + "but what's more useful are the sentences and stories we use them to build.\n", + "Similarly,\n", + "while a lot of powerful tools are built into languages like Python,\n", + "even more lives in the [libraries](../../gloss.html#library) they are used to build.\n", + "\n", + "In order to load our inflammation data,\n", + "we need to [import](../../gloss.html#import) a library called NumPy\n", + "that knows how to operate on matrices:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Importing a library is like getting a piece of lab equipment out of a storage locker\n", + "and setting it up on the bench.\n", + "Once it's done,\n", + "we can ask the library to read our data file for us:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 2, + "text": [ + "array([[ 0., 0., 1., ..., 3., 0., 0.],\n", + " [ 0., 1., 2., ..., 1., 0., 1.],\n", + " [ 0., 1., 1., ..., 2., 1., 1.],\n", + " ..., \n", + " [ 0., 1., 1., ..., 1., 1., 1.],\n", + " [ 0., 0., 0., ..., 0., 2., 0.],\n", + " [ 0., 0., 1., ..., 1., 1., 0.]])" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The expression `numpy.loadtxt(...)` is a [function call](../../gloss.html#function-call)\n", + "that asks Python to run the function `loadtxt` that belongs to the `numpy` library.\n", + "This [dotted notation](../../gloss.html#dotted-notation) is used everywhere in Python\n", + "to refer to the parts of things as `whole.part`.\n", + "\n", + "`numpy.loadtxt` has two [parameters](../../gloss.html#parameter):\n", + "the name of the file we want to read,\n", + "and the [delimiter](../../gloss.html#delimiter) that separates values on a line.\n", + "These both need to be character strings (or [strings](../../gloss.html#string) for short),\n", + "so we put them in quotes.\n", + "\n", + "When we are finished typing and press Shift+Enter,\n", + "the notebook runs our command.\n", + "Since we haven't told it to do anything else with the function's output,\n", + "the notebook displays it.\n", + "In this case,\n", + "that output is the data we just loaded.\n", + "By default,\n", + "only a few rows and columns are shown\n", + "(with `...` displayed to mark missing data).\n", + "To save space,\n", + "Python displays numbers as `1.` instead of `1.0`\n", + "when there's nothing interesting after the decimal point." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Our call to `numpy.loadtxt` read our file,\n", + "but didn't save the data in memory.\n", + "To do that,\n", + "we need to [assign](../../gloss.html#assignment) the array to a [variable](../../gloss.html#variable).\n", + "A variable is just a name for a value,\n", + "such as `x`, `current_temperature`, or `subject_id`.\n", + "We can create a new variable simply by assigning a value to it using `=`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "weight_kg = 55" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Once a variable has a value, we can print it:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print weight_kg" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "55\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "and do arithmetic with it:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'weight in pounds:', 2.2 * weight_kg" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "weight in pounds: 121.0\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can also change a variable's value by assigning it a new one:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "weight_kg = 57.5\n", + "print 'weight in kilograms is now:', weight_kg" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "weight in kilograms is now: 57.5\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "As the example above shows,\n", + "we can print several things at once by separating them with commas.\n", + "\n", + "If we imagine the variable as a sticky note with a name written on it,\n", + "assignment is like putting the sticky note on a particular value:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Variables" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This means that assigning a value to one variable does *not* change the values of other variables.\n", + "For example,\n", + "let's store the subject's weight in pounds in a variable:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "weight_lb = 2.2 * weight_kg\n", + "print 'weight in kilograms:', weight_kg, 'and in pounds:', weight_lb" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "weight in kilograms: 57.5 and in pounds: 126.5\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Creating" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "and then change `weight_kg`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "weight_kg = 100.0\n", + "print 'weight in kilograms is now:', weight_kg, 'and weight in pounds is still:', weight_lb" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "weight in kilograms is now: 100.0 and weight in pounds is still: 126.5\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Updating" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Since `weight_lb` doesn't \"remember\" where its value came from,\n", + "it isn't automatically updated when `weight_kg` changes.\n", + "This is different from the way spreadsheets work.\n", + "\n", + "Now that we know how to assign things to variables,\n", + "let's re-run `numpy.loadtxt` and save its result:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This statement doesn't produce any output because assignment doesn't display anything.\n", + "If we want to check that our data has been loaded,\n", + "we can print the variable's value:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print data" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[[ 0. 0. 1. ..., 3. 0. 0.]\n", + " [ 0. 1. 2. ..., 1. 0. 1.]\n", + " [ 0. 1. 1. ..., 2. 1. 1.]\n", + " ..., \n", + " [ 0. 1. 1. ..., 1. 1. 1.]\n", + " [ 0. 0. 0. ..., 0. 2. 0.]\n", + " [ 0. 0. 1. ..., 1. 1. 0.]]\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Draw diagrams showing what variables refer to what values after each statement in the following program:\n", + "\n", + " ~~~python\n", + " mass = 47.5\n", + " age = 122\n", + " mass = mass * 2.0\n", + " age = age - 20\n", + " ~~~\n", + "\n", + "1. What does the following program print out?\n", + " ~~~python\n", + " first, second = 'Grace', 'Hopper'\n", + " third, fourth = second, first\n", + " print third, fourth\n", + " ~~~" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Manipulating Data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Now that our data is in memory,\n", + "we can start doing things with it.\n", + "First,\n", + "let's ask what [type](../../gloss.html#data-type) of thing `data` refers to:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print type(data)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The output tells us that `data` currently refers to an N-dimensional array created by the NumPy library.\n", + "We can see what its [shape](../../gloss.html#shape) is like this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print data.shape" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(60, 40)\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This tells us that `data` has 60 rows and 40 columns.\n", + "`data.shape` is a [member](../../gloss.html#member) of `data`,\n", + "i.e.,\n", + "a value that is stored as part of a larger value.\n", + "We use the same dotted notation for the members of values\n", + "that we use for the functions in libraries\n", + "because they have the same part-and-whole relationship." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "If we want to get a single value from the matrix,\n", + "we must provide an [index](../../gloss.html#index) in square brackets,\n", + "just as we do in math:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'first value in data:', data[0, 0]" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "first value in data: 0.0\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'middle value in data:', data[30, 20]" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "middle value in data: 13.0\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The expression `data[30, 20]` may not surprise you,\n", + "but `data[0, 0]` might.\n", + "Programming languages like Fortran and MATLAB start counting at 1,\n", + "because that's what human beings have done for thousands of years.\n", + "Languages in the C family (including C++, Java, Perl, and Python) count from 0\n", + "because that's simpler for computers to do.\n", + "As a result,\n", + "if we have an M×N array in Python,\n", + "its indices go from 0 to M-1 on the first axis\n", + "and 0 to N-1 on the second.\n", + "It takes a bit of getting used to,\n", + "but one way to remember the rule is that\n", + "the index is how many steps we have to take from the start to get the item we want.\n", + "\n", + "> #### In the Corner\n", + ">\n", + "> What may also surprise you is that when Python displays an array,\n", + "> it shows the element with index `[0, 0]` in the upper left corner\n", + "> rather than the lower left.\n", + "> This is consistent with the way mathematicians draw matrices,\n", + "> but different from the Cartesian coordinates.\n", + "> The indices are (row, column) instead of (column, row) for the same reason." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "An index like `[30, 20]` selects a single element of an array,\n", + "but we can select whole sections as well.\n", + "For example,\n", + "we can select the first ten days (columns) of values\n", + "for the first four (rows) patients like this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print data[0:4, 0:10]" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[[ 0. 0. 1. 3. 1. 2. 4. 7. 8. 3.]\n", + " [ 0. 1. 2. 1. 2. 1. 3. 2. 2. 6.]\n", + " [ 0. 1. 1. 3. 3. 2. 6. 2. 5. 9.]\n", + " [ 0. 0. 2. 0. 4. 2. 2. 1. 6. 7.]]\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The [slice](../../gloss.html#slice) `0:4` means,\n", + "\"Start at index 0 and go up to, but not including, index 4.\"\n", + "Again,\n", + "the up-to-but-not-including takes a bit of getting used to,\n", + "but the rule is that the difference between the upper and lower bounds is the number of values in the slice.\n", + "\n", + "We don't have to start slices at 0:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print data[5:10, 0:10]" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[[ 0. 0. 1. 2. 2. 4. 2. 1. 6. 4.]\n", + " [ 0. 0. 2. 2. 4. 2. 2. 5. 5. 8.]\n", + " [ 0. 0. 1. 2. 3. 1. 2. 3. 5. 3.]\n", + " [ 0. 0. 0. 3. 1. 5. 6. 5. 5. 8.]\n", + " [ 0. 1. 1. 2. 1. 3. 5. 3. 5. 8.]]\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "and we don't have to take all the values in the slice---if we provide a [stride](../../gloss.html#stride),\n", + "Python takes values spaced that far apart:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print data[0:10:3, 0:10:2]" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[[ 0. 1. 1. 4. 8.]\n", + " [ 0. 2. 4. 2. 6.]\n", + " [ 0. 2. 4. 2. 5.]\n", + " [ 0. 1. 1. 5. 5.]]\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Here,\n", + "we have taken rows 0, 3, 6, and 9,\n", + "and columns 0, 2, 4, 6, and 8.\n", + "(Again, we always include the lower bound,\n", + "but stop when we reach or cross the upper bound.)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We also don't have to include the upper and lower bound on the slice.\n", + "If we don't include the lower bound,\n", + "Python uses 0 by default;\n", + "if we don't include the upper,\n", + "the slice runs to the end of the axis,\n", + "and if we don't include either\n", + "(i.e., if we just use ':' on its own),\n", + "the slice includes everything:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "small = data[:3, 36:]\n", + "print 'small is:'\n", + "print small" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "small is:\n", + "[[ 2. 3. 0. 0.]\n", + " [ 1. 1. 0. 1.]\n", + " [ 2. 2. 1. 1.]]\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Arrays also know how to perform common mathematical operations on their values.\n", + "If we want to find the average inflammation for all patients on all days,\n", + "for example,\n", + "we can just ask the array for its mean value" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print data.mean()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "6.14875\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "`mean` is a [method](../../gloss.html#method) of the array,\n", + "i.e.,\n", + "a function that belongs to it\n", + "in the same way that the member `shape` does.\n", + "If variables are nouns, methods are verbs:\n", + "they are what the thing in question knows how to do.\n", + "This is why `data.shape` doesn't need to be called\n", + "(it's just a thing)\n", + "but `data.mean()` does\n", + "(it's an action).\n", + "It is also why we need empty parentheses for `data.mean()`:\n", + "even when we're not passing in any parameters,\n", + "parentheses are how we tell Python to go and do something for us.\n", + "\n", + "NumPy arrays have lots of useful methods:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'maximum inflammation:', data.max()\n", + "print 'minimum inflammation:', data.min()\n", + "print 'standard deviation:', data.std()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "maximum inflammation: 20.0\n", + "minimum inflammation: 0.0\n", + "standard deviation: 4.61383319712\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "When analyzing data,\n", + "though,\n", + "we often want to look at partial statistics,\n", + "such as the maximum value per patient\n", + "or the average value per day.\n", + "One way to do this is to select the data we want to create a new temporary array,\n", + "then ask it to do the calculation:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "patient_0 = data[0, :] # 0 on the first axis, everything on the second\n", + "print 'maximum inflammation for patient 0:', patient_0.max()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "maximum inflammation for patient 0: 18.0\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We don't actually need to store the row in a variable of its own.\n", + "Instead, we can combine the selection and the method call:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'maximum inflammation for patient 2:', data[2, :].max()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "maximum inflammation for patient 2: 19.0\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "What if we need the maximum inflammation for *all* patients,\n", + "or the average for each day?\n", + "As the diagram below shows,\n", + "we want to perform the operation across an axis:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Operations" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "To support this,\n", + "most array methods allow us to specify the axis we want to work on.\n", + "If we ask for the average across axis 0,\n", + "we get:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print data.mean(axis=0)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[ 0. 0.45 1.11666667 1.75 2.43333333 3.15\n", + " 3.8 3.88333333 5.23333333 5.51666667 5.95 5.9\n", + " 8.35 7.73333333 8.36666667 9.5 9.58333333\n", + " 10.63333333 11.56666667 12.35 13.25 11.96666667\n", + " 11.03333333 10.16666667 10. 8.66666667 9.15 7.25\n", + " 7.33333333 6.58333333 6.06666667 5.95 5.11666667 3.6\n", + " 3.3 3.56666667 2.48333333 1.5 1.13333333\n", + " 0.56666667]\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "As a quick check,\n", + "we can ask this array what its shape is:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print data.mean(axis=0).shape" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(40,)\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The expression `(40,)` tells us we have an N×1 vector,\n", + "so this is the average inflammation per day for all patients.\n", + "If we average across axis 1, we get:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print data.mean(axis=1)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[ 5.45 5.425 6.1 5.9 5.55 6.225 5.975 6.65 6.625 6.525\n", + " 6.775 5.8 6.225 5.75 5.225 6.3 6.55 5.7 5.85 6.55\n", + " 5.775 5.825 6.175 6.1 5.8 6.425 6.05 6.025 6.175 6.55\n", + " 6.175 6.35 6.725 6.125 7.075 5.725 5.925 6.15 6.075 5.75\n", + " 5.975 5.725 6.3 5.9 6.75 5.925 7.225 6.15 5.95 6.275 5.7\n", + " 6.1 6.825 5.975 6.725 5.7 6.25 6.4 7.05 5.9 ]\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "which is the average inflammation per patient across all days." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "A subsection of an array is called a [slice](../../gloss.html#slice).\n", + "We can take slices of character strings as well:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "element = 'oxygen'\n", + "print 'first three characters:', element[0:3]\n", + "print 'last three characters:', element[3:6]" + ], + "language": "python", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "first three characters: oxy\n", + "last three characters: gen\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "1. What is the value of `element[:4]`?\n", + " What about `element[4:]`?\n", + " Or `element[:]`?\n", + "\n", + "1. What is `element[-1]`?\n", + " What is `element[-2]`?\n", + " Given those answers,\n", + " explain what `element[1:-1]` does.\n", + "\n", + "1. The expression `element[3:3]` produces an [empty string](../../gloss.html#empty-string),\n", + " i.e., a string that contains no characters.\n", + " If `data` holds our array of patient data,\n", + " what does `data[3:3, 4:4]` produce?\n", + " What about `data[3:3, :]`?" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Plotting" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The mathematician Richard Hamming once said,\n", + "\"The purpose of computing is insight, not numbers,\"\n", + "and the best way to develop insight is often to visualize data.\n", + "Visualization deserves an entire lecture (or course) of its own,\n", + "but we can explore a few features of Python's `matplotlib` here.\n", + "First,\n", + "let's tell the IPython Notebook that we want our plots displayed inline,\n", + "rather than in a separate viewing window:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%matplotlib inline" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 27 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The `%` at the start of the line signals that this is a command for the notebook,\n", + "rather than a statement in Python.\n", + "Next,\n", + "we will import the `pyplot` module from `matplotlib`\n", + "and use two of its functions to create and display a heat map of our data:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from matplotlib import pyplot\n", + "pyplot.imshow(data)\n", + "pyplot.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 28 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Blue regions in this heat map are low values, while red shows high values.\n", + "As we can see,\n", + "inflammation rises and falls over a 40-day period.\n", + "Let's take a look at the average inflammation over time:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "ave_inflammation = data.mean(axis=0)\n", + "pyplot.plot(ave_inflammation)\n", + "pyplot.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n9v8BdEzZ6MQ88gYAAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Here,\n", + "we have put the average per day across all patients in the variable `ave_inflammation`,\n", + "then asked `pyplot` to create and display a line graph of those values.\n", + "The result is roughly a linear rise and fall,\n", + "which is suspicious:\n", + "based on other studies,\n", + "we expect a sharper rise and slower fall.\n", + "Let's have a look at two other statistics:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'maximum inflammation per day'\n", + "pyplot.plot(data.max(axis=0))\n", + "pyplot.show()\n", + "\n", + "print 'minimum inflammation per day'\n", + "pyplot.plot(data.min(axis=0))\n", + "pyplot.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "maximum inflammation per day\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nLY8xt2k+BwYGtHr1ajU1NamgoMDK+bzjjjt05swZffTRRzp69KjefvvtYX9uy3zeOs5YLGbVfP7+\n97/X1KlTFYlEUv4rId25zPlC/sUvflGdnZ3J33d2dqqwsDDX3yYnpk+fLkmaMmWKVq5cqZMnT7o8\notTC4bC6u7slSV1dXZo6darLIxrZ1KlTk//ne+yxx6yY0+vXr2vVqlVat26dqqqqJNk5n4lxfutb\n30qO08b5TPjc5z6nr3/963r33XetnM+ExDhPnTpl1Xy2t7frwIEDuvfee1VdXa233npL69aty2gu\nc76QL1iwQP/4xz/U0dGha9eu6be//a2WL1+e62+TtY8//lj9/f2SpCtXrujNN98cdvrCNsuXL1dr\na6skqbW1Nfkfum26urqSv3799dddn1NjjGpqajRnzhw98cQTyc/bNp+pxmnbfPb09CRzxNWrV3Xo\n0CFFIhHr5jPVOBMLpOT+fG7btk2dnZ06d+6c9uzZo6997Wv69a9/ndlcOvFT2IMHD5qSkhJTXFxs\ntm3b5sS3yNq//vUvU1ZWZsrKyszcuXOtGueaNWvM9OnTzYQJE0xhYaH55S9/aXp7e82DDz5oZsyY\nYSorK82lS5fcHuZt43zxxRfNunXrTGlpqZk/f75ZsWKF6e7udnWMx44dM6FQyJSVlZny8nJTXl5u\n3njjDevmc6RxHjx40Lr5/POf/2wikYgpKyszpaWl5tlnnzXGGOvmM9U4bZvPhFgsljy1kslc8oYg\nAPA4R94QBADIHxZyAPA4FnIA8DgWcgDwOBZyAPA4FnIA8DgWcgDwOBZyAPC4/wdmBt5lh4uf/AAA\nAABJRU5ErkJggg==\n", + "text": [ + "" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "minimum inflammation per day\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\njG644Ya4xxl0zz33qLKyUg0NDYO/9vbbb2vJkiWaPXu2brnlFr377rsxTpg31JzNzc2qrq5WJpNR\nJpNRS0tLjBNKnZ2dWrRokebNm6f6+no99thjkpJ3PwvNmbT72dPTo6amJqXTadXV1emBBx6QlLz7\nWWjOpN3PAX19fcpkMlr2wd9Gur6frk+9P9Db22tqa2tNR0eHuXTpkmlsbDSHDh3y+nChqqmpMW+9\n9VbcY3zCyy+/bF577TVTX18/+Gvf//73zcMPP2yMMeahhx4y999/f1zjDRpqzubmZvPoo4/GONWV\nTp06Zdra2owxxpw/f97Mnj3bHDp0KHH3s9CcSbufxhhz4cIFY4wxly9fNk1NTWbnzp2Ju5/GDD1n\nEu+nMcY8+uij5hvf+IZZtmyZMcb917vnZ9hJeVONUyaBJz8LFy7UhAkTrvi1F154QatWrZIkrVq1\nSlu3bo1jtCsMNaeUrHs6depUpT94sf64ceM0d+5cnTx5MnH3s9CcUrLupySNHTtWknTp0iX19fVp\nwoQJibuf0tBzSsm7n11dXdq2bZvWrFkzOJvb++k52El5U40TqVRKixcv1oIFC/TEE0/EPc6wzpw5\no8rKSklSZWWlzpw5E/NEhW3cuFGNjY1avXp17H80/qgTJ06ora1NTU1Nib6fA3N+8YtflJS8+9nf\n3690Oq3KysrBY5wk3s+h5pSSdz/vu+8+PfLIIyor+zC7bu+n52A7fVNNEuzevVttbW3avn27Hn/8\nce3cuTPukRxJpVKJvc/f/va31dHRofb2dlVVVel73/te3CNJkrq7u7VixQpt2LBB4z/27YmSdD+7\nu7v19a9/XRs2bNC4ceMSeT/LysrU3t6urq4uvfzyy2ptbb3inyflfn58zlwul7j7+eKLL2rKlCnK\nZDIFn/k7uZ+eg/35z39enZ2dgz/v7OxUdXW114cLVVVVlSRp8uTJWr58ufbu3RvzRIVVVlbq9OnT\nkqRTp05pypQpMU80tClTpgz+D7ZmzZpE3NPLly9rxYoVWrlypW6//XZJybyfA3Pefffdg3Mm8X4O\nqKio0K233qq///3vibyfAwbmfPXVVxN3P//2t7/phRde0IwZM3TnnXfqr3/9q1auXOn6fnoO9oIF\nC/TGG2/oxIkTunTpkv7whz/otttu8/pwoXn//fd1/vx5SdKFCxf00ksvXfFqh6S57bbb9PTTT0uS\nnn766cEv6KQ5derU4I+ff/752O+pMUarV69WXV2dvvvd7w7+etLuZ6E5k3Y/z549O3iMcPHiRf3l\nL39RJpNJ3P0sNOdABKVk3M9169aps7NTHR0d2rJli2666SY988wz7u+nn7/x3LZtm5k9e7apra01\n69at8/NQoTl+/LhpbGw0jY2NZt68eYma84477jBVVVVm9OjRprq62vz2t781b731lrn55pvNrFmz\nzJIlS8w777wT95ifmPPJJ580K1euNA0NDWb+/Pnma1/7mjl9+nSsM+7cudOkUinT2Nho0um0SafT\nZvv27Ym7n0PNuW3btsTdz/3795tMJmMaGxtNQ0OD+cUvfmGMMYm7n4XmTNr9/KhcLjf4KhG395M3\nzgCAJaz4FmEAAIINANYg2ABgCYINAJYg2ABgCYINAJYg2ABgCYINAJb4f/MaHKeR2nZRAAAAAElF\nTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The maximum value rises and falls perfectly smoothly,\n", + "while the minimum seems to be a step function.\n", + "Neither result seems particularly likely,\n", + "so either there's a mistake in our calculations\n", + "or something is wrong with our data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Why do all of our plots stop just short of the upper end of our graph?\n", + " Why are the vertical lines in our plot of the minimum inflammation per day not vertical?\n", + "\n", + "1. Create a plot showing the standard deviation of the inflammation data for each day across all patients." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Wrapping Up" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "It's very common to create an [alias](../../gloss.html#alias-library) for a library when importing it\n", + "in order to reduce the amount of typing we have to do.\n", + "Here are our three plots side by side using aliases for `numpy` and `pyplot`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy as np\n", + "from matplotlib import pyplot as plt\n", + "\n", + "data = np.loadtxt(fname='inflammation-01.csv', delimiter=',')\n", + "\n", + "plt.figure(figsize=(10.0, 3.0))\n", + "\n", + "plt.subplot(1, 3, 1)\n", + "plt.ylabel('average')\n", + "plt.plot(data.mean(0))\n", + "\n", + "plt.subplot(1, 3, 2)\n", + "plt.ylabel('max')\n", + "plt.plot(data.max(0))\n", + "\n", + "plt.subplot(1, 3, 3)\n", + "plt.ylabel('min')\n", + "plt.plot(data.min(0))\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAskAAADSCAYAAAC4u12cAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8zvX/x/HHNcdqct4QYpNYre3KMd9kDkMyESmVsxSl\nA+UUWTlNKqH6Vs5ROvAl+Wrli5V0kEzJMbblEMsxZvzY9vn98c6cNjtcn+t6fz6f63W/3dy+fWf7\nXM/xedv7en9e79fbZRiGgRBCCCGEECJbgO4AQgghhBBCWI1MkoUQQgghhLiMTJKFEEIIIYS4jEyS\nhRBCCCGEuIxMkoUQQgghhLiMTJKFEEIIIYS4jNcmyX369CE4OJjw8PArfu+1114jICCAo0ePeuvl\nhRAFsHfvXpo3b84tt9zCrbfeyrRp0wA4evQo0dHR1K5dm9atW3P8+HHNSYUQealRowa33XYbbreb\nhg0b6o4jhG15bZLcu3dv4uPjr/j43r17WblyJTfeeKO3XloIUUDFihVjypQpbNmyhR9++IG33nqL\nbdu2ERcXR3R0NDt37qRly5bExcXpjiqEyIPL5SIhIYHExETWr1+vO44QtuW1SXLTpk0pW7bsFR8f\nPHgwr7zyirdeVghRCJUqVSIyMhKAwMBA6taty/79+1m2bBk9e/YEoGfPnixdulRnTCFEPsk5YUJ4\nzqc1yZ999hlVq1bltttu8+XLCiEKICUlhcTERBo1akRqairBwcEABAcHk5qaqjmdECIvLpeLVq1a\nUb9+fWbMmKE7jhC2VdRXL5Sens6ECRNYuXJl9sfkna4Q1pKWlkbnzp2ZOnUqpUqVuuT3XC4XLpdL\nUzIhRH6tW7eOypUrc+jQIaKjo6lTpw5NmzbVHUsI2/HZJHn37t2kpKQQEREBwL59+6hXrx7r168n\nKCjoks+tVasWu3fv9lU0ISwjNDSUXbt2aXntc+fO0blzZ7p3707Hjh0BtXp88OBBKlWqxIEDB64Y\nq+fJmBX+SOd4vZrKlSsDULFiRTp16sT69esvmSTLeBX+qqBj1mflFuHh4aSmppKcnExycjJVq1Zl\n48aNOf7Q3b17N4ZheO3XmDFj5PoOzO6E6+v6wWUYBn379iUsLIxnnnkm++MdOnRg3rx5AMybNy97\n8nw5b45Zu/+deuv6w4YZ9O1rUKnSGBYtsl9+X1zfqeP1atLT0zl58iQAp06d4quvvrqiy5T8jPXs\n+p07G3z0UcGvm5VlUKzYGI4dc+6fjdWvX9Ax67VJcrdu3WjSpAk7d+6kWrVqzJkz55Lfl8e2QljH\nunXrWLBgAWvWrMHtduN2u4mPj2f48OGsXLmS2rVrs3r1aoYPH647qgD27YMZM+Cll6BVKxg5Es6d\n051KWEFqaipNmzYlMjKSRo0a0b59e1q3bq07lqPs3g2hoQX/OpcLypaFpCTzMwnv8Fq5xcKFC6/6\n+0lylwhhGXfeeSdZWVk5/t7//vc/H6cReYmNhccegxtuUD+sDx6E2bPVx4R/q1mzJps2bdIdw7EM\nQ01yQ0IK9/XnJ8m3325uLuEdPqtJtpKoqCi5voZry/VFYdj979Ts62/dCsuWwc6dF64fEwMxMfDI\nI3Dddaa+nO3+fHx1bZE7O98zeV3/yBEICIBy5Qp37YiIKLxZpePkP3sdXIZhWK7FhMvlwoKxhPA6\nu977ds1tRx07QtOmMGTIpR9/8EEID4cXXtCTyx/Z9b63a24rWL8eBgyAn38u3Ne//Tb88gu8+665\nuUT+FPTe92mfZCGEEIW3bh0kJsITT1z5e+PGwZQpcPiw73MJ4S8KW498XmgoXl1JFuaSSbIQQtiA\nYcCwYfDyy1Cy5JW/X6uWWk0eP9732YTwF57UI4P6WtmSZR8ySRaXOHtWdwIhRE6WL4e//1Z1x7kZ\nPRrmz4eUFJ/FEsKveLqSfOONsH+/dKOxC5kki2y//652y586pTuJEOJimZkwfDjExUGRIrl/XnAw\nPPkkvPii77IJ4U88XUkuXhwqV4Y9e8zLJLxHJski29tvq3rGVat0JxFCXOz996FCBWjXLu/PHTIE\nvvpKbQ4SQpjL05VkUF8vJRf2IJNkAajV4/nz4emn4b//1Z1GCHHe6dNqZXjSJHUYQV5KlYJRo2DE\nCO9nE8KfnDkDf/0FVat6dp2QENm8ZxcySRYAfPAB3Hmnam3z3/+qTUJCCP3efBMaNIDGjfP/Nf37\nw44dsGaN93IJ4W9SUqB6dSjq4QkTspJsHzJJFhgGvPWWaitVu7baOS+PaoXQ79gxeOUVmDChYF9X\nvLhqCTdsmLzhFcIsntYjnycryfYhk2TBunXqMVLLlupx7j33SMmFEFYQFwedOkGdOgX/2gcegIwM\nWLzY/FxC+KPdu82bJMtKsj3IJFnw5ptqFTngn7tBJslC6Ld3L8ycCWPGFO7rAwJUHfMLL0i7KSHM\nkJTk+aY9uHCgiDzlsT6ZJPu5Awfgyy+hZ88LH2vWDLZskZO7hNApNlbVFt9wQ+GvER0N1arB7Nmm\nxRLCb5m1kly2rGrleOSI59cS3iWTZD83Y4Z6LFu69IWPlSgBLVrAF1/oyyWEP9uyBT7/XNUUe2rS\nJHjpJel/LoSnzFpJBtm8ZxcySfZj587Bu++qUovLScmFEPqMHKkmyGXKeH6tevXgrrvgjTc8v5YQ\n/sowzNu4B7J5zy5kkuzHli5V72bDw6/8vXbt1IEEGRm+zyWEP/v2W9i0Kec3r4U1bhxMmSIlVEIU\n1sGDEBio+pCbQVaS7cGrk+Q+ffoQHBxM+EWzsOeff566desSERHBfffdx99//+3NCOIqpk/P/Qdx\nlSpQowZ8951PIwnh1wxDHT/98suqFaNZatWCBx+E8ePNu6YQ/sTMVWSQlWS78OokuXfv3sTHx1/y\nsdatW7NlyxZ++eUXateuzcSJE70ZQeRi3Tq1e/6++3L/nPbtpeRCCF/6/HP4+2945BHzrz16tDre\nOiXF/GsL4XRmHEd9MVlJtgevTpKbNm1K2bJlL/lYdHQ0Af/0GmvUqBH79u3zZgSRi/Hj1YpVsWK5\nf84998Dy5b7LJIQ/y8hQR0nHxamd72YLDoZBg9QR10KIgpGVZP+ktSZ59uzZtGvXTmcEv7RxI/z6\nK/TqdfXPa9AADh2SlSchfOH996FCBbUfwFuGDFF7DeRETSEKxuyV5GrV1M/XM2fMu6Ywn7ZJ8vjx\n4ylevDgPPfSQrgh+a8IE9cOyRImrf15AANx9t5RcCOFtp0+rQ0MmTVKnXnpLqVIwapRasRZC5J/Z\nK8lFiqiJsixCWVtRHS86d+5cVqxYwapVq3L9nNjY2Oz/joqKIioqyvvB/MC2bbB2Lcybl7/Pb98e\n3nvP3J324oKEhAQSEhJ0xxCavfkmNGwIjRt7/7X691edLtasgebNvf96QjiB2SvJcKEuuTDHzgvf\ncBmGdw9GTElJISYmhs2bNwMQHx/PkCFD+Prrr6lQoULOoVwuvBzLb/XoATffrI6qzY/Tp6F6dfjx\nR3PfRYuc2fXet2tuKzh2TI3Jb77x3Q/Ljz6C119X49qbK9dOZ9f73q65dTl1SpVCnTqlnrCaZeBA\nCAuDJ58075ri6gp673u13KJbt240adKEHTt2UK1aNWbPns2gQYNIS0sjOjoat9vNwIEDvRlBXCQp\nCVasKNiAvOYa6N5dncwnhDBfXBx06uTb1aSuXSEzExYv9t1rCmFXSUlQs6a5E2RQK8myec/avL6S\nXBjyLtc7Hn9cvRseN65gX7d9O0RFwZ49ULy4V6KJf9j13rdrbt327oXISNi8WfUm96WVK1UZ1ZYt\nV+9yI3Jn1/verrl1+ewztVBkdrenJUtg7lx1feEbllpJFtaxfz988gk880zBv7ZOHahbV53QJ4Qw\nT2wsPPaY7yfIANHRcOONMGuW719bCDvxRj0yyEqyHcgk2U9MmaJavuVSBp6nxx6Dd981NZIQfm3L\nFnV4yNCh+jLExanT/U6d0pdBCKszu7PFeTVrQnKyOmlTWJNMkv3AmTOqm4UnmwM6dYLffoOdO83L\nJYQ/GzlSHehTpoy+DPXqQbNm8MYb+jII78jMzMTtdhMTE6M7iu15ayW5VCkIDISDB82/tjCHTJL9\nwKJF6oehJ++ES5RQK9HvvWdaLCH81rffwqZNane7buPGqSdNhw/rTiLMNHXqVMLCwnBJ+xKPeWsl\nGdR15Xhq65JJsh945x1VLuGpRx9VK9JyQpAQhWcYMGwYjB0LJUvqTqNWyLp1U0fVC2fYt28fK1as\noF+/frJBz0OZmfDHH6o0whukLtnatBwmInznt99UzVP79p5fq1YtcLtV26iHH/b8ekL4o2XL4MQJ\na42hUaNUv9annvLeZED4zrPPPsvkyZM5ceKE7ii2t38/lC+v2qF6Q0iIerJUu3bBv7Z8ebjpJvMz\niQtkkuxw774Lffua1+LpscdU/aKVfsALYRcZGepI6FdeUcfSWkVwMAwaBKNHw4IFutMITyxfvpyg\noCDcbvdVT/OUU23zZ/du7x6k1aKF2ptQ0M5TWVmqTEPKpK7O01NtpU+yg6Wnq7PhExPVqXlmOHdO\ntY1auRJuucWca4oL7Hrv2zW3r82erUqWEhKsd9LdyZNqVerLLyEiQncae7DifT9y5Ejmz59P0aJF\nOXPmDCdOnKBz5868//772Z9jxdxWNWsWrF2r+hlbiWHA9der8wvKltWdxj6kT7LI9vHH0KSJeRNk\nUCvSffvC22+bd00h/MHp0zBmDEyaZL0JMqid9qNGqZVuYV8TJkxg7969JCcn89FHH9GiRYtLJsii\nYLy5ac8TLpfKlZysO4mzySTZwczasHe5AQNg4UI4ftz8awvhVNOnQ8OG0Lix7iS5698fduyANWt0\nJxFmke4WnvFW+zczyKY/75NJskMlJsKBA3D33eZfu0oVaNtWTupymj59+hAcHEx4eHj2x2JjY6la\ntSputxu32018fLzGhPZ19ChMngwTJuhOcnXFi6uWcMOGyQEHTtCsWTOWLVumO4atWXUlGaR9nC/I\nJNmh3n1XtWzz1uagZ56BN99U7XGEM/Tu3fuKSbDL5WLw4MEkJiaSmJhI27ZtNaWzt7g4uO8+uPlm\n3Uny9sADaoPh4sW6kwihn6wk+zeZJDvQyZPwySeqdthbGjaESpVUOyvhDE2bNqVsDjtAZIOPZ/bu\nVU9dxozRnSR/AgJU3fTIkWqjrhD+6vhx+L//g4oVdSfJmawke59Mkh3ok0/UUbNVqnj3dZ55Ro6z\n9QfTp08nIiKCvn37clwK0QssNhYef9z749FM0dGqi42UVAl/lpSkVmutWtYtK8neJ5NkB1qwAHr2\n9P7r3Hef+kdk0ybvv5bQY8CAASQnJ7Np0yYqV67MkCFDdEeylS1b4PPPYehQ3UkKLi4OXn4Z0tJ0\nJxFCDyvXI4PqXPXnn/LEx5vkMBGH2bMHNm/2zoa9yxUrBk88AVOnwpw53n894XtBQUHZ/92vXz9i\nYmJy/Vw5nOBKI0eqTXClS+tOUnD16sFdd6mnRaNG6U5jDZ4eTCDsxcr1yKA22lapoo7NrlVLdxpn\nksNEHGbSJNU38Z13fPN6R46owbljB1w0nxKFpPveT0lJISYmhs2bNwNw4MABKleuDMCUKVP46aef\n+PDDD6/4Ot25rejbb9XJlDt2QMmSutMUzq5d0KgRbN9u3bpMnex639s1t6899pg6WGfgQN1Jctey\npXoj3rq17iT2YJnDRHJqJ3X06FGio6OpXbs2rVu3lvpGkxkGzJ/v2yOjy5eH++/33aRceE+3bt1o\n0qQJO3bsoFq1asyePZthw4Zx2223ERERwddff82UKVN0x7QFw1A/uMaOte8EGdQb4G7dYPx43UmE\n8D2rrySD1CV7m9dWkteuXUtgYCA9evTIXpUaOnQoFSpUYOjQoUyaNIljx44RFxd3ZSh5l1sov/wC\n996r6qgCfFhtvmULtGoFKSlQooTvXteJ7Hrv2zW3t3z2GYwerfqVe6sNo6+kpkJYGGzYADVr6k5j\nLXa97+2a29dCQtQx7TfdpDtJ7uLi1BPdyZN1J7EHy6wk59ROatmyZfT8Z0dZz549Wbp0qbde3i8t\nWKBWkX05QQa45Rb1yKduXVW/eOKEb19fCCvJyFBHO8fF2X+CDBAcDIMGwYsv6k4ihO+cOwf796su\nL1YmbeC8y6fTqdTUVIKDgwEIDg4mNTXVly/vaJmZ8OGHvi21uNiCBer1v/9erTYNHqxWloXwN/Pm\nqfpdX2ye9ZUhQ2DlSulkI/zHnj1QubLaHGdlUm7hXdq6W7hcrqueKS875QsmIUEd7hEWpi9D48bw\n8cfqH5fp08HtVpsIy5TRl8nqZLe8s5w+rfoif/qpdXurFkapUqrDxYgR8MUXutMI4X1Wb/923vmV\nZMNw1r85VuHV7haX75SvU6cOCQkJVKpUiQMHDtC8eXO2b99+ZSiplyqw3r3httvg2Wd1J7mgXTvo\n0we6dNGdxD7seu/bNbfZXnkFfvzRmUc6nz2rSqpmzoTmzXWnsQa73vd2ze1L77wDP/8MM2boTpK3\ncuVUFx3pQJM3y9Qk56RDhw7MmzcPgHnz5tGxY0dfvrxjpafD0qXw4IO6k1yqbVuIj9edQgjfOHpU\nbZ6ZMEF3Eu8oXlx1uRg2TK1aCeFkdllJBqlL9iavTZIvbyc1Z84chg8fzsqVK6lduzarV69m+PDh\n3np5v/L559CwoaqfspLzk2T5gSr8QVwcdOoEN9+sO4n3dO2q9j84caVciIvZof3beVKX7D1eq0le\nuHBhjh//3//+562X9FsLFsAjj+hOcaWbblIt4X77DS5qly2E4+zdC7NmqdMunSwgQB1YNHCgajdZ\nrJjuREJ4h6wkC/BxuYUwR1aW6k08axb066dO9rJi5YrLJSUXwj+MGQOPP66OiHW6Vq1UW6xZs3Qn\nEcI7DENWkoUik2Sb6d9fFenfe6/qaOF2q41CpUrpTpazu++W3fDC2bZsgf/+F4YO1Z3Ed+Li4OWX\nIS1NdxIhzHfkiOpxftlRD5YlK8neo60FnCi4Xbtg2TLYuROCgnSnyZ+oKHWs7cmT1p3IC+GJkSNh\n+HAoXVp3Et+pVw+aNVOHB40apTuNEOay0yoyyEqyN8lKso18+incd599JsgAgYHQqBGsWaM7iRDm\n+/ZbdRz8wIG6k/jeuHFqknzokO4kQpjLTvXIAFWrqnF45ozuJM4jk2Qb+fRTuP9+3SkKTkouhBMZ\nhmqHNnas2qDqb0JD1VOi8eN1JxHCXHabJBcpAtWryym33iCTZJvYvVudI3/XXbqTFNzVWsEdOQJy\nOrmwo2XLVE3uQw/pTqLP6NEwf746WVMIp7BbuQVIyYW3yCTZJs6XWhQpojtJwYWFQUaGqqW+WHo6\ntGwJL7ygJ5cQhZWRoY5onjjRnmPSLEFB8NRTUpcsnMVuK8kgm/e8RSbJNvHpp6qRvx25XFeWXBiG\naplVtKg6+lMIO5k3T00Q775bdxL9Bg+GVatg0ybdSYQwh6wki/NkkmwDSUmwb589Sy3Ou7xf8jvv\nQGKi+tj27bLhQNhHerrqizxpknoD6O9KlVIrySNG6E4ihOfOnIG//lKb4exEVpK9QybJNmDnUovz\nWraE776D06fhhx/UJOM//4EKFdTJfL/9pjuhEPkzfTo0bqy6tgilf39VTrV6te4kQngmJUVtgitq\nswa5spLsHTJJtoFPPrFnV4uLlS6tDj45XzYyY4aaHIPquSolF8IOjh6FV1+Vjg6XK15c/ZkMG5bz\nBl0h7MKO9cgANWuqDbQy/swlk2SLc0KpxXlt20LfvvDII+rEwPNkkizsIi5OPdW5+WbdSayna1fI\nyoJFi3Qn8W9nzpyhUaNGREZGEhYWxgipgykQO9Yjgyp7KlUKDhzQncRZbPZAwf+cL7Ww26OfnHTt\nCnv2qL6yF6tXD+bM0ZNJiPzauxdmzYLNm3UnsaaAAFWnPWAAdOwIxYrpTuSfSpYsyZo1a7j22mvJ\nyMjgzjvv5Ntvv+XOO+/UHc0W7LqSDBfqkqtU0Z3EOWQl2eLseoBITkJD4d//vrK2OiICtm2Ds2f1\n5BIiP8aMUR1Z5AdQ7lq1Uo99Z87UncS/XXvttQCcPXuWzMxMypUrpzmRfdh1JRmkLtkbZJJsYUlJ\navXKCaUWV3PtteodsGzeE1b122+wfDkMHao7ifXFxamnRWlpupP4r6ysLCIjIwkODqZ58+aEhYXp\njmQbTlhJFubJ10P8lJQUdu3aRatWrUhPTycjI4Prr7/e29kc7dgxKFv26p/z6afQqZMzSi3ycr4u\n+fbbdScR4kojR8Lw4WoDqri622+HZs1gyhR1Ip/wvYCAADZt2sTff/9NmzZtSEhIICoqSncsn/n1\nV3VkelZWwb82Odm+k+TatWHQILXZv6CqVFH9zsWl8px+vffee8yYMYOjR4+ye/du9u3bx4ABA1jl\nwZ/mxIkTWbBgAQEBAYSHhzNnzhxKlChR6OvZza+/wr/+pUoMcuvFeOIETJ2qjr71B+cnyY8+qjuJ\nEJdauxZ++aVwP3j81bhxqkXe449DxYq60/iv0qVLc88997Bhw4YrJsmxsbHZ/x0VFeWoSfT69VCn\njroPC+q669QGODt68EGoX79wHS4aNcrf4p3dJCQkkJCQUOivdxnG1f84IyIiWL9+PY0bNyYxMRGA\n8PBwNhdy90pKSgotWrRg27ZtlChRggceeIB27drRs2fPC6FcLvKIZWsLF0KvXhATk/tO8MGD1UTZ\nX2r71q2DZ56Bn37SnUQvu977ds2dF8NQb2gffxx69NCdxl4GDVL7D954Q3cS77HifX/48GGKFi1K\nmTJlOH36NG3atGHMmDG0bNky+3OsmNtMI0fCNdfIk4yCiIxUG5Pr1dOdxLsKeu/nWZNcokSJS1Z5\nMzIycHlwzNT1119PsWLFsss20tPTueGGGwp9PTvavh2eekod43rxUc3nbdkCCxbAxIm+z6ZLRIT6\nvs+d051EiAs++0zV1j78sO4k9jN6NMyfrx5fC985cOAALVq0IDIykkaNGhETE3PJBNkf2HnznS6y\n6S9neZZbNGvWjPHjx5Oens7KlSt5++23iYmJKfQLlitXjiFDhlC9enWuueYa2rRpQ6tWrQp9PTva\nsQPat1en0D3xhNoUdM016vcMA558Uu2k96fHlIGBUKOGmihHRupOIwRkZKgVqVdftfdpl7oEBanF\ngNGj1Zt+4Rvh4eFs3LhRdwyt7Lz5ThfZ9JezPFeS4+LiqFixIuHh4bz77ru0a9eOcYUp9PnH7t27\neeONN0hJSeHPP/8kLS2NDz74oNDXs6Pt21W9VNu2apNLXNyF3/vkE1UX9Nhj+vLpIoeKCCuZN09N\n9O6+W3cS+xo8WG0G+qdSTwifkJXkgpOV5JzluZJcpEgR+vfvT//+/U15wQ0bNtCkSRPKly8PwH33\n3cd3333Hw5c9z3TqpoKsLPj9d7ULFdQO8MhI9Ti3ShV47jlVs+wPHS0ud36S3Lev7iS+4+mmAuEd\n6enqac7ixeBBdZnfK1UKRo2CESMgPl53GuEPjh1TZXsVKuhOYi8hIaqjlrhUnhv3wsPDryh0Ll26\nNA0aNGDUqFHZk938+uWXX3j44Yf56aefKFmyJL169aJhw4Y88cQTF0I5eFPBnj3QuDH8+eeFj73+\nuqpNrldPffz99/Xl0+mbb+D55+HHH3Un0ceu975dc+dm0iS1iVSOWPbc2bNQty7MmAEtWuhOYy67\n3vd2zZ0f5xdaNm3SncRedu9WJaApKbqTeFdB7/081yvbtm1L0aJFeeihhzAMg48++oj09HSCg4Pp\n1asXn3/+eYECRkRE0KNHD+rXr09AQAC33367aavUdnC+1OJigwbB3LnwzjuqLZy/crtVffa5c3Kk\nrdDn6FFVh/ztt7qTOEPx4jB+PAwbplpzycq88CapRy6c6tXhwAH1prZ4cd1prCPPlWS3253d+u3y\nj3nSCu6qoRz8Lnf6dNi6VR3PfLHNm9Uq8z336MllFXXqqLrs227TnUQPT+/9M2fOULJkyUs+dvjw\nYSp4+dmjk8bs0KHw99/w7ru6kzhHVhY0aKAmyl276k5jHrve93bNnR9xcXDkCEyerDuJ/YSEwJdf\nwk036U7iPaa3gMvMzOTHi55/r1+/nqx/jrEp6o+Fsx7asePKlWSA8HCZIINs3vNUgwYN+P7777P/\n/+LFi7njjjs0JrKXvXtVr9CLtkQIEwQEqBKWF16QNo/Cu2QlufCkw8WV8pzlzpo1i969e5OWlgZA\nqVKlmDVrFqdOnWLEiBFeD+g027er9m8iZ+cnyb17605iTx9++CF9+vQhKiqK/fv3c+TIEdasWaM7\nlm2MGQMDBkDlyrqTOE+rVlCzpjogacAA3Wmsb/HixQwfPpzU1NTslS+Xy8WJEyc0J7O2pCTo0kV3\nCnsKDZVJ8uXyLLc47/jx47hcLkqXLu3tTI5+FFStmtqgVrOm7iTWlJCgdsJftBjqV8y495csWUL3\n7t0pVaoUa9eupVatWialy50Txuxvv6mNKzt3gg/+mfNLGzeqJ2a//656o9udN+/70NBQli9fTt26\ndU2/thPGa25q1oSVK8EH/+w5zqRJcOiQ2pPhVKZv3ANYvnw5W7du5cyZM9kfe/HFFwuezs+lpala\nqerVdSexLrcbfv1VHeRQtKg6XGXXLjVxaddONv3kpW/fvuzatYvNmzezc+dO2rdvz5NPPsmTTz6p\nO5rljRwJw4fLBNmbbr8dmjdXrS/lyOCrq1SpklcmyE527pzqECU/YwsnJMS/u0vlJM9J8mOPPcbp\n06dZvXo1jz76KJ9++imNGjXyRTbH2blTvbuV07tyV7o03HCDagW3axf88AOULKn+8XvvPejQQXdC\na7v11luZOXMmLpeLmjVr8uOPPzJ48OB8fW2fPn3473//S1BQUPaG3KNHj/LAAw/wxx9/UKNGDT75\n5BPKlCnjzW9Bi7Vr1Zsz6RPqfePGQcOG8Pjj/nWqaEHVr1+fBx54gI4dO1L8n3YDLpeL++67T3My\n6/rjD3Wg1JszAAAgAElEQVTegHRnKBw5UORK+eqTvHnzZm677TZ+/fVX0tLSaNu2Ld96sT+SUx8F\nLVwIS5ao7g0id2+/reqiGjdWv6pWhaVL4eWXVb2yk1eTdd77a9euJTAwkB49emRPkocOHUqFChUY\nOnQokyZN4tixY8RdfETkP+w8Zg0D/vUvVSfbvbvuNP7hqafUZr433tCdxDPevO979eqV/RoXmzNn\njsfXtvN4vZqvvlIlA6tW6U5iT8ePq5LQEyec+3PW9HKLa665BoBrr72W/fv3U758eQ4ePFj4hH5s\n+3a4+WbdKaxv4MArP3bvvfDSS7BsmfpvkbOdO3cycuRItmzZkl0e5XK5SMrHboymTZuSclkn+WXL\nlvH1118D0LNnT6KionKcJNvZZ5/BqVPw0EO6k/iPUaMgLAyeflr2Z+Rm7ty5uiPYjhxH7ZkyZdQq\n/KFDEBSkO4015DlJjomJ4dixYzz//PPUq1cPgEcffdTrwZxoxw7pbFFYLpdqyxUbq0ounPou11O9\ne/fmpZdeYvDgwcTHxzNnzhwyMzMLfb3U1FSCg4MBCA4OJjU11ayolpCRoTaKvv66lEH5UlCQWk0e\nPRoWLNCdxlomTZrEsGHDGDRo0BW/53K5mDZtmoZU9iDt3zx3vg2cTJKVq06Ss7KyaNGiBWXLlqVz\n587cc889nDlzxpE1ib6wYwc895zuFPbVoYNaTV66FDp10p3Gmk6fPk2rVq0wDIMbb7yR2NhYbr/9\ndsaOHevxtV0u1xWPfi8We1Fz4aioKKKiojx+TW+bOxeCg6FtW91J/M/gwerQgsREtWHXDhISEkhI\nSPDqa4SFhQFQr169q443caXdu1W9uyi883XJjRvrTmINV50kBwQE8MQTT7Dpn0PQS5YsecVpXiJ/\nsrLUxr3atXUnsa/zq8kvvqhKLgLyPArH/5QsWZLMzExq1arFm2++SZUqVTh16lShrxccHMzBgwep\nVKkSBw4cIOgqywuxNjuBIz1d3U+LF8uTCR0CA1XZxYgREB+vO03+XP7m76WXXjL9NWJiYgC45ZZb\nmDBhAikpKWRkZGT/fs+ePU1/TaeQlWTPyYEil8pzmtGqVSsWLVrkyCJ/X9q3T3VuuP563UnsLSZG\nPRZfulR3EmuaOnUqp0+fZvr06fz888988MEHzJs3r9DX69ChQ/bXz5s3j44dO5oVVbtp09RqiTTr\n0efRR1UXG9lodaWHH36Y3r17s3jxYj7//PPsXyJnhiE1yWaQDheXyrO7RWBgIOnp6RQpUiR7Fdnb\np/44ceftV1+pM+VXr9adxP4+/1wdb7tpk/NWkz2993/66adLVp8MwyAgIIBff/01z6/t1q0bX3/9\nNYcPHyY4OJiXX36Ze++9l65du7Jnz56rtoCz25g9elRtov32W9lMq9vHH8PkybB+vf3Gszfv+3/9\n61+sW7fOK9e223jNj0OH1Fg+elR3Entbs0adPPrNN7qTeEdB7/18n7jnS04cwNOnw9at8O9/605i\nf4YBDRqox7SdO+tOYy5P7/3atWvz6quvcuuttxJw0YyjRo0aJqTLnd3G7PPPw8mT8M47upOIrCxV\nRzp0KHTtqjtNwXjzvv/qq6/4+OOPadWqlel9ku02XvPjxx/hySfhp590J7G3PXugSRP19NuJTG8B\nl5WVxQcffEBycjIvvvgie/bs4eDBgzSU6vgC2bED6tTRncIZXC61gW/IELj7brj2Wt2JrKNixYp0\nkBNXrmrPHpg9Wx1DLfQLCFBP2R5/XG3ILVZMdyJrmDdvHjt27CAjI+OSN7xymEjOdu+WemQz3HAD\nHD4Mp0/DPx2A/VqeK8mPP/44AQEBrF69mu3bt3P06FFat27Nhg0bvBfKge9yW7VSnS1kF705DEP1\ntS1d2lmrgZ7e+95cfboaO43Z3r3VD4Jx43QnERdr3Ro6dsy5T7pVefO+v/nmm9m+fbtXOlzYabzm\n17hxqt/5xIm6k9hf7dqqf7wTT0U3fSX5xx9/JDExEfc/PXrKlSvHuXPnCp/QT+3YIbWPZnK51OT4\n9ttVdwKnlV0Ulqw+Xd3mzbBiheo0I6wlLg7uuQd69FCdL/xdkyZN2Lp1K7fccovuKLawe7c6OVN4\n7vzmPSdOkgsqz0ly8eLFLzmM4NChQ5f88C2M48eP069fP7Zs2YLL5WL27Nk0dnBTvrQ0OHIEqlfX\nncRZSpdWR323bw/168ONN+pOpN+GDRu8tvrkBCNHqlr20qV1JxGXu/12aN5cHezy4ou60+j3/fff\nExkZSc2aNSlRogSgVsHyswnXHyUlybHyZpE2cBfkOUkeNGgQnTp14q+//mLkyJEsWrSIcR4+p3z6\n6adp164dixYtIiMjw6M+rnawcyfUqiUnenlDw4aqjOXhhyEhAYrmeUc7m6w+5W7tWrWSvGiR7iQi\nN+PGqTE9YABUrKg7jV7xdmkebRHS/s080gbugnx1t9i2bRur/mlk2bJlS+p6sAb/999/43a7SbrK\n2xSn1UstXAhLlsAnn+hO4kxZWWoDX8OGYMLBclp5eu/XqVOH3bt3+3z1yepj1jDUo9gBA2S1yeqe\nekqVU02dqjtJ3qx+3+fGrrlzc+YMlCmjapJlMcpzS5fCrFmq3arTmF6TPGjQILp168aTTz7pUbDz\nkpOTqVixIr179+aXX36hXr16TJ06lWsd3KJg+3apR/amgACYN089rr31VrjvPv/dIS+rTzn77DP1\nA/Shh3QnEXkZNUrVQj79tHQrEPmTnKzKGWWCbA5ZSb4gz+LievXqMW7cOEJCQnjuuec87mqRkZHB\nxo0bGThwIBs3buS6664jLi7Oo2tanWza875KleCjj+DVV9V/d++uHqufPKk7mW/VqFEjx1/+LCND\n1SHHxckPUTsIClKryaNH604i7EKOozZXzZrqjUdWlu4k+uW5ktyrVy969erFkSNH+M9//sPQoUPZ\ns2cPu3btKtQLVq1alapVq9KgQQMAunTpkuMkOTY2Nvu/o6KiiIqKKtTr+dK5c2py9vvvasCe//Xz\nz6puVnjXXXepRvL79sGyZTBjBvTpAwsWgFVbByckJJCQkKA7hqPNnaveOEn7RfsYPFi1oUpMhH8a\nK4l82rt3Lz169OCvv/7C5XLRv39/nnrqKd2xvErqkc0VGKg2Nx84oNpl+rN8n7j3448/8sknn7B0\n6VLCwsI8OkP+rrvuYubMmdSuXZvY2FhOnz7NpEmTLoSyYb2UYUC/fpCaqlZAkpPVu9ukJNWY+8MP\n5dALHZYvV0dsbtig6hytzo73Plg3d3q6mmz95z+qZl3Yx1tvqZpIK1cQWfG+P3jwIAcPHiQyMpK0\ntDTq1avH0qVLL9lLZMXcnnjmGahWTR0wJczRpAlMmgRNm+pOYi7Ta5KHDh3KkiVLCAkJ4cEHH2T0\n6NGUKVPGo5DTp0/n4Ycf5uzZs4SGhjJnzhyPrmcF48fDpk3w9dfqXVijRroTCYB27dQRxAkJqr2U\n8C/TpsEdd8gE2Y4efRSmTIFVq6BlS91p7KNSpUpUqlQJgMDAQOrWrcuff/7p0YZ7q0tKAhs8bLaV\n0FD15+q0SXJB5TlJDg0NZd26dSQnJ3PmzJnsXfJ33XVXoV80IiKCnxx0wPqCBTBzJnz/vTTBt5qA\nALW68OqrMkn2N0eOqL/3777TnUQURvHiavFh2DBYv16NZVEwKSkpJCYm0sjhqzZyJLX5QkJk8x7k\nY5IcEBBAy5Yt2bdvH5GRkfzwww/ccccdrF692hf5LC8hQU3CVq+GypV1pxE5eeQRVQKzdSuEhelO\nI3xl4kTo0kWVWwh7uv9+mDxZbcLt2lV3GntJS0ujS5cuTJ06lUAbrN789ZfqUlSYKpCkJLXZTJgn\nJATefLNwC39ly6onQU6QZ03yrbfeyk8//cQdd9zBpk2b2L59OyNGjGDJkiXeC2WTeqnNm6FVK9UH\nuUUL3WnE1YwdC3/8oVb8rcwu9/7lrJZ7zx614WvzZqhSRXca4YlVq+Dxx9WbXKu1drTafX/euXPn\naN++PXfffTfPPPPMFb/vcrkYM2ZM9v+3wub4mTNVHXp0dMG/tmJFVVYnzHPggOpVXpgOF2+9pTbQ\nly1rfq6Cunxz/EsvvVSgMZvnJLl+/fps2LAhexW5ZMmShIWFsXXr1kKHzjOURf/hudj776sV5Lfe\nkhUOOzh8GG66CbZtU50OrMoO935OrJa7d2+1K9vDw0GFRbRpAx07qsNgrMRq9z2AYRj07NmT8uXL\nM2XKlBw/x4q5R45Um9tHjdKdRHjK7VZveurV053kSgW99/Os8qpWrRrHjh2jY8eOREdH06FDB7/u\nu5qeDn37woQJqsRCJsj2UKGCOkjizTd1JxHetnkzrFghK0tOEhenngalpelOYn3r1q1jwYIFrFmz\nBrfbjdvttsUhQ9LGzTmcdBhJvlvAgVq2PnHiBG3btqV48eLeC2XBd7mgTs67/36IiIB33pFNenaz\na5fqdJCSAtddpztNzqx67+fFSrljYlQ3hByeMgsbe/hhqFPHWoeMWOm+Lwgr5m7QQC1iOHyPoV8Y\nOhTKlYPhw3UnuVJB7/0CTZJ9xYoD+PffVd/AiRPVSrIdeu6KK3XurLpcmHTKuumseO/nh1Vyf/MN\n9Oyp3tCWKKE7jTBTUpJq5bdtm6pBtQKr3PcFZcXc5crBzp3qqZ+wt3ffVWcTzJihO8mVTC+3EMrS\npaq0ol8/mSDb2ZAhqvdqZqbuJMJshqHahY0dKxNkJwoJUSVTUmfuPMeOqePjy5fXnUSYISREval1\nApkk51N8vNo8IuytSRNVauGgNt3iH599BqdPq4mUcKZRo1Rfeqf8ABZKUpKqY5UFKGdwUk2yTJLz\nIS1NNbOXwyicoUULdTKicI6MDBgxQm3wkkMnnCsoCJ5+2lp1ycJzSUlyGIiTVKumWsidPas7iefk\nx0k+JCRA/fpQqpTuJMIMzZqpv1PhHHPnqsN85GmP8w0erDoLbdyoO4kwi3S2cJZixaBqVXU2gd3J\nJDkfvvwS2rbVnUKY5a671FHFGRm6kwgzpKdDbKxaRZbHtc4XGKhWkkeM0J1EmEVWkp3HKXXJMknO\nB6lHdpby5aFGDVmJcopp01Rrv4YNdScRvvLoo+oH8P/+pzuJMMPu3TJJdpqQEGfUJcskOQ+7d6ua\n5IgI3UmEmaTkwhmOHoXXXoPx43UnEb5UrJjqcjF8eOGOzRXWcn7jnnCO0FBZSfYLX34JrVvLY1yn\niYqSSbITTJwIXbpA7dq6kwhfu/9+9b+LFunNITxz9iz8+SdUr647iTCTrCT7CalHdqa77oJ166Qu\n2c727IHZs+HFF3UnEToEBMCkSTByJJw7pzuNKKw9e+CGG9TTAeEcspLsB86eVauN0dG6kwizVaig\nVi4SE3UnEYU1ZgwMGKC6Wgj/1LKl+mFsxZO9RP5IPbIznV9JttjBjgUmk+Sr+O47uPlmOSbTqaKi\npF+yXW3eDCtWwPPP604idIuLU6cspqXpTiIKQ+qRnal0aShZEg4d0p3EM9omyZmZmbjdbmJiYnRF\nyJN0tXA22bxnXyNHqhZgpUvrTiJ0c7vVAUGvv647iSgMWUl2LifUJWubJE+dOpWwsDBcFt4RJ/XI\nznbXXfDtt5CZqTuJKIi1a9VK8oABupMIqxg7FqZOhb/+0p1EFJSsJDuXE+qStUyS9+3bx4oVK+jX\nrx+GRQtWDh6ElBRo1Eh3EuEtQUFqw8imTbqTiPwyDBg6VLX/KlFCdxphFSEh8Mgj6r4Q9iIryc4l\nK8mF9OyzzzJ58mQCAqxbEv3VV2pTSNGiupMIb5JWcPby2Wdw+jQ89JDuJMJqXngBPvjA/itX/sQw\n5LQ9J3PCqXs+nwIuX76coKAg3G43CVeZncTGxmb/d1RUFFFRUV7PdjGpR/YPUVHw/vswZIie109I\nSLjqOBAXZGSoOuQpU1T7LyEuFhQETz+tjqz+4APdaUR+HD4MxYtDmTK6kwhvCA2FefN0p/CMy/Bx\nvcPIkSOZP38+RYsW5cyZM5w4cYLOnTvz/vvvXwjlcvm8DMMwYN8++P57+OEH1X/111+lwbnTpaZC\nnTrqH+siRXSn0XPvm8EXuWfOhA8/hFWr5HAfkbO0NLjpJtX5xO32/uvJePXMDz/AoEHw00+6kwhv\n2LMH7rgD9u/XneSCgt77Pp8kX+zrr7/m1Vdf5fPPP7/k474ewKNHq0nxuXPqL/SOO9Ru6YYNfRZB\naBQWBgsWwO23605inR9el6tRowbXX389RYoUoVixYqxfv/6S3/d27vR0darekiXQoIHXXkY4wNtv\nq7KcL7/0/mtZdbzmxSq5P/wQli2Djz7SnUR4Q2YmXHcdHDsG11yjO41S0Htfe8Wt7u4Wa9fC3Lmq\nLrVWLVmh8kfNmql+yVaYJFuVy+UiISGBcuXKaXn9adOgSROZIIu8PfqoKsn53/+gVSvdacTVyKY9\nZytSBG68EZKT1WKUHWmt7GvWrBnLli3T9vqZmaqGbdIk9YhOJsj+STbv5Y+ulacjR+C116Rzgcif\nYsVg/HgYPhyysnSnEVcj7d+cz+5t4Px6+8ucOXDttdCtm+4kQqeWLeHHH+GNN3I/QvPUKRg8GFau\n9G02q3C5XLRq1Yr69eszw8dnAE+cCF26qHILIfKjSxe16PHpp7qTiKuRlWTns3sbOO3lFrocPw6j\nRsF//ysryP6uQgW1gaRTJ7WBZMYM9ebpvJ9/Vi3HAgNhxw6IjtaXVZd169ZRuXJlDh06RHR0NHXq\n1KFp06Zef909e9Sb2d9+8/pLCQcJCFDHVT/2mBrXxYvrTiRyIivJzmf3lWS/nSSPHQvt20O9erqT\nCCuoUQPWrYP+/eFf/4L//Ed1NnnlFVXfOH063HOPOnzkyBEoX153Yt+qXLkyABUrVqRTp06sX7/+\nikmyN9o2jhkDAwfCPy8vRL61bKl+QM+cqe4hM0jLRvOcPq26Ct1wg+4kwptCQlRHIrvS2t0iN97e\nebt9O9x5J2zZAsHBXnsZYUOGoTaJTZigfsAWLw7z50O1aur3H3hAdT557DHvvL5Vdp1fLD09nczM\nTEqVKsWpU6do3bo1Y8aMoXXr1tmf443cmzerjVe//w7XX2/qpYWfSEyEdu3UPRQYaP71rThe88MK\nubdtg44d1dM54Vy//QZdu8LWrbqTKAW99/2yJnnwYHUogUyQxeVcLrWZ89NPVYnFqlUXJsig6tcX\nLtSXT4fU1FSaNm1KZGQkjRo1on379pdMkL1l5Ej1SybIorDcbvWm9vXXdScRl5N6ZP9Qs6bqbmHX\nTbR+t5K8YgU8+6xapZI6NVFQ//d/6tH/5s3eeUxohRWewjA79zffQM+e6qlPiRKmXVb4oaQk1Tpw\n2zZ1Kp+ZZLwW3rRpahX5rbe0xhA+UKmS2ttjhdIaWUm+isxMGDYMJk+WCbIonBIl1CPCjz/WncS5\nDEON03HjZIIsPBcSAo884l8tBPv06UNwcDDh4eG6o+Rq927ZtOcvQkPt2+HCrybJCxdCqVIQE6M7\nibAzfyy58KWlS9WmHmnNKMwyapQ63c2uP6gLqnfv3sTHx+uOcVVJSVJu4S9CQuzb4cJvJslnz6qd\n8hMmSMs34ZnmzWHvXrUZSJgrI0PtF4iLU228hDBDxYpqr8Ho0bqT+EbTpk0pW7as7hhXJSvJ/sPO\nK8l+0wJu1iz1F2VCVyrh54oWhfvvh48+8p8fur4ydy5UqQJt2uhOIpzm2WfVgTSJiWpDn/CcYaiW\nmIX5uuRktalLOF9ICCxbplr+FVTx4no3b/vFJDk9XdWjffaZ7iTCKbp1g3791GNceTJhjvR0iI1V\nParlz1SYLTBQvakdNgy++kp3Gv3M6Gs+f77qLV+Y9nrh4d5pyyesx+2G55+HOnUK/rUnT8LBg1DY\nByOe9jb3i+4Wr7wC69fDokWmXVL4OcNQ746XLoWICPOua4Vd54VhRu64ONi4ET75xKRQQlzm3DkI\nC4N//1v14PaUlcdrSkoKMTExbN68+YrfMyv3iBFqovvCCx5fSogc3X47vPce1K9vzvWku8Vljh9X\n3SzGjtWdRDiJywUPPigb+Mxy5Ai89pp/dSAQvlesGIwfD8OH27dvq5VIXbHwNt31zI6fJL/6qjp+\num5d3UmE03TrpuqSLbqQZCsTJ0KXLqpmVAhv6tJFvcn99FPdSbynW7duNGnShJ07d1KtWjXmzJnj\nldeRDhXC23R3xnB0uUVqqnq0tnEj3HijCcGEuIhhqLq6f/8bmjY155pWfnx7NZ7k/uMP9Ujtt9/U\nQS1CeNvq1aqWdutWz3rm++N4vVjZsrBrF5Qvb0IoIXLw3nuqXHbmTHOuJ+UWF3n5ZejeXSbIwjtc\nLujVC7y0SOM3xoyBgQNlgix8p0ULqFXLvB+8/ujYMVWyUq6c7iTCyfxyJXnv3r306NGDv/76C5fL\nRf/+/XnqqacuhDLhXe727Wp1b/t2eZcrvCc1Ve3Y3bNHHVTjKX9bmdq8WW2g+v13vW1+hP/ZtAnu\nvlvde4XtsuBv4/ViGzbAo4+qlnpCeEtSkjqb4I8/zLmeLVaSixUrxpQpU9iyZQs//PADb731Ftu2\nbTP1NYYPVy1HZIIsvCk4WPXelo4MhTNihPolE2Tha5GRakX59dd1J7GnpCTZtCe8r3p11QLu7Fk9\nr69lklypUiUiIyMBCAwMpG7duvz555+mXX/tWvXu9qLFaSG8pk8fmD1bdwr7+fpr2LIFBgzQnUT4\nq7FjYepU+Osv3UnsZ/du2bQnvK9oUahaFVJS9Ly+9prklJQUEhMTadSokSnXMwx47jl1/HTJkqZc\nUoiruvtutaqyfbvuJPZhGOpQh5dfhhIldKcR/iokBB55RFqEFoasJAtfCQ3VV5esdZKclpZGly5d\nmDp1KoEmHb3zySeQkaHacwnhC0WLQo8esoGvIJYsgTNn4OGHdScR/m7UKNXvXGcvVjuSlWThKyEh\n+santmOpz507R+fOnXnkkUfo2LHjFb9fmCMz/+//VH3jrFkQoH2NXPiT3r3V5oJx49SBBfnl6ZGZ\ndpSRASNHwhtvyDgV+lWsCE8/rY6s/vBD3WnsQ1aSha/oXEnW0t3CMAx69uxJ+fLlmTJlypWhCrnz\n9vXXVf/L5cvNSClEwfzrX2rDaExM4a/hD7vlZ8xQK3erVqk2ekLolpamDrJZvlz17M4vfxivOTl7\nVnXzSUsr2KKAEIWxeDHMnw9Ll3p+LVt0t1i3bh0LFixgzZo1uN1u3G438fHxHl3zyBGIi4NJk0wK\nKUQB9emjnmKI3KWnQ2ysGqcyQRZWERioVpKHD9edxB7++ENtppIJsvAFv1tJzkth3uU+/rgasNOn\neymUEHk4eRKqVVMb+CpVKtw1nL4yNXGi6jwjLfOE1Zw7p05o/fe/Ve/u/HD6eM1NfDy89hqsXGli\nKCFyceIEVKmifsZ6urhii5Vks/38s1qGf/ll3UmEPytVCu67DxYs0J3Emo4cUT9Yx4/XnUSIKxUr\nproiDR+uTpITuZN6ZOFL118P11yjp1Wj7SfJWVnwxBPqH7eyZXWnEf6uTx911nxamu4k1jNhAnTt\nCjfdpDuJEDnr0kVtJv30U91JrE06Wwhf09XhwvaT5Hnz1P/26qU1hhCA2rwXFQVt2sDff+tOYx17\n9sDcufDii7qTCJE7l0vVy7/wgr4TvuwgKUkmycK3QkL01CXbepJ87Jhq+fbmm9JKSliDywXvvKOO\nvI2OVveoUJPjgQMLX6sthK80bw61aqkuLCJnUm4hfE3X5j1bTy3HjIF774X69XUnEeKCgAD1xu3O\nO6FlSzh8WHcivTZvhi++gOef151EiPyJi1M9z0+e1J3EegxDyi2E70m5RQH98gt89JGqcxTCalwu\ntUmtbVto0QJSU3Un0mfECHV4yPXX604iRP5ERqo3uK+/rjuJ9Rw6BCVLQunSupMIfyIryQVgGDBo\nELz0EpQvrzuNEDlzuVQnh06doH171WLK33z9NWzZolo0CmEnY8fCtGn+/QY3J7KKLHSQleQCWLxY\nbYrq3193EiGuzuVSh2eUKwevvKI7jW8ZBgwbph5blyihO40QBVOzJnTvru5fcYHUIwsdbrgBjh5V\nB1L5ku0myf/3fzB0qHoMVqSI7jRC5M3lUpuA3ngDfvtNdxrfWbIEzpyBbt10JxGicF54QR2hrmMF\ny6pkJVnoEBAANWpAcrKPX9e3L+e5adPg1ltVvZgQdlG9uqqf79ULMjJ0p/G+jAxVixwXJ51nhH1V\nrAjPPKOOrBaKrCQLXXTUJdvqx9dff6kelpMn604iRMH166fKLvzh/p09Wz0ea9NGdxIhPPPss5CQ\nABs36k5iDbKSLHTRUZdsq0lybCw8/DDcfLPuJEIUnMsFM2eqUiEnl12kp6tNtZMmqe9ZCDu77jq1\nkjx8uO4k1iAryUIXHSvJRX37coW3ZQssWgTbt+tOIkThVa+uOl707g3ffw9FbTMC82/qVGjSBBo0\n0J1ECHP066dKiDIz/XsvzOnTcOQIVKmiO4nwRyEhsHKlb1/TNivJQ4aoTRTlyulOIoRnHn0UypSB\nd9/VncR8R46o/tDSv1w4SbFiqu2oP0+QQW2auvFG+XMQeug4mtoW61hffKEG58CBupMI4TmXCz74\nAEqV0p3EfBMmQNeucNNNupMIIcy2e7eUWgh9QkIgJQWysny3Idzyk+Q//oC+fWHePPVuXggnCArS\nncB8f/wBc+eq0ighhPMkJcmmPaHPtdeqp7B//glVq/rmNbWUW8THx1OnTh1uuukmJk2alOvnnTwJ\nMTGqL3J0tA8DCiEukZ8x++KL8MQTUKmSj8MJIS6R35+xBSUryUK30FDfdrjw+SQ5MzOTJ598kvj4\neLZu3crChQvZtm1bDp8HDz0EjRvD00+bmyEhIcHcCzro+nbO7oTrW1F+x2x8PDz3nPmvb/e/U7m+\nvrKpMH4AAAeKSURBVOvLeM19vBZGfleS7XzPePv6ds5uhev7ui7Z55Pk9evXU6tWLWrUqEGxYsV4\n8MEH+eyzz674vOHDIS0N3nrL/DZSuv+SrXx9O2d3wvWtKL9j9oUX4PrrzX99u/+dyvX1XV/Ga+7j\ntTDyu5Js53vG29e3c3YrXN/xK8n79++nWrVq2f+/atWq7N+//4rPW7oUFi+WOmQhdMvvmH3sMV+m\nEkLkJL/jtaCystSmqZo1Pb6UEIXm65Vkn2/cc+VzWXj5cmn3JoQV5HfMlijh5SBCiDzld7zGxBTs\nuufOqU1T111XiFBCmKRWLfjqq/zdv889B82aefiCho99//33Rps2bbL//4QJE4y4uLhLPic0NNQA\n5Jf88rtfoaGhvh6SeZIxK7/kV86/ZLzKL/llr18FHbMuwzAMfCgjI4Obb76ZVatWUaVKFRo2bMjC\nhQupW7euL2MIIfJJxqwQ9iHjVQjz+LzcomjRorz55pu0adOGzMxM+vbtK4NXCAuTMSuEfch4FcI8\nPl9JFkIIIYQQwuq0HCZyNd5qgn5ejRo1uO2223C73TRs2NCja/Xp04fg4GDCw8OzP3b06FGio6Op\nXbs2rVu35vjx46ZePzY2lqpVq+J2u3G73cTHxxf6+nv37qV58+bccsst3HrrrUybNs3U7yG365vx\nPZw5c4ZGjRoRGRlJWFgYI0aMMDV7btc3888fVE9Tt9tNzD+7EMy8f3zBTuMV7D1m7TxewRlj1u7j\nFew1Zu08XsHeY9YJ4xVMGLMe7xIwUUZGhhEaGmokJycbZ8+eNSIiIoytW7ea+ho1atQwjhw5Ysq1\nvvnmG2Pjxo3Grbfemv2x559/3pg0aZJhGIYRFxdnDBs2zNTrx8bGGq+99lrhQ1/kwIEDRmJiomEY\nhnHy5Emjdu3axtatW037HnK7vlnfw6lTpwzDMIxz584ZjRo1MtauXWvqn39O1zfzz98wDOO1114z\nHnroISMmJsYwDHPvH2+z23g1DHuPWbuPV8Ow/5i183g1DPuNWTuPV8Ow/5i1+3g1DM/HrKVWkr3Z\nBP1ihkkVJk2bNqVs2bKXfGzZsmX07NkTgJ49e7J06VJTrw/m5a9UqRKRkZEABAYGUrduXfbv32/a\n95Db9cGc7+Haa68F4OzZs2RmZlK2bFlT//xzuj6Y9+e/b98+VqxYQb9+/bKvaWZ+b7PbeAV7j1m7\nj1ew95i1+3gF+41ZO49XsP+YtfN4BXPGrKUmyd5qgn4xl8tFq1atqF+/PjNmzDD12gCpqakEBwcD\nEBwcTGpqqumvMX36dCIiIujbt69pj/dSUlJITEykUaNGXvkezl+/cePGgDnfQ1ZWFpGRkQQHB2c/\ncjIze07XNys7wLPPPsvkyZMJCLgwDH1x/5jFCeMV7Dlm7Thewd5j1u7jFZwxZu04XsGeY9bO4xXM\nGbOWmiTntwm6J9atW0diYiJffPEFb731FmvXrvXaa7lcLtO/pwEDBpCcnMymTZuoXLkyQ4YM8fia\naWlpdO7cmalTp1KqVKlLfs+M7yEtLY0uXbowdepUAgMDTfseAgIC2LRpE/v27eObb75hzZo1pma/\n/PoJCQmmZV++fDlBQUG43e5c3zV74/4xk9PGK9hjzNp1vIJ9x6wTxis4b8zaYbyCfcesXccrmDdm\nLTVJvuGGG9i7d2/2/9+7dy9Vq1Y19TUqV64MQMWKFenUqRPr16839frBwcEcPHgQgAMHDhAUFGTq\n9YOCgrL/Yvv16+dx/nPnztG5c2e6d+9Ox44dAXO/h/PXf+SRR7Kvb/b3ULp0ae655x5+/vlnr/z5\nn7/+hg0bTMv+3XffsWzZMmrWrEm3bt1YvXo13bt39/r9YyYnjFew15h1wngF+41ZJ4xXcMaYtdN4\nBWeMWbuNVzBvzFpqkly/fn1+//13UlJSOHv2LB9//DEdOnQw7frp6emcPHkSgFOnTvHVV19dsqvV\nDB06dGDevHkAzJs3L/umNcuBAwey/3vJkiUe5TcMg759+xIWFsYzzzyT/XGzvofcrm/G93D48OHs\nxzCnT59m5cqVuN1u07Lndv3zg8uT7AATJkxg7969JCcn89FHH9GiRQvmz5/v9fvHTE4Yr2CfMWvn\n8Qr2HrNOGK/gjDFrl/EK9h6zdh6vYOKYNW0LoUlWrFhh1K5d2wgNDTUmTJhg6rWTkpKMiIgIIyIi\nwrjllls8vv6DDz5oVK5c2ShWrJhRtWpVY/bs2caRI0eMli1bGjfddJMRHR1tHDt2zLTrz5o1y+je\nvbsRHh5u3Hbbbca9995rHDx4sNDXX7t2reFyuYyIiAgjMjLSiIyMNL744gvTvoecrr9ixQpTvodf\nf/3VcLvdRkREhBEeHm688sorhmEYpmXP7fpm/vmfl5CQkL3z1sz7xxfsNF4Nw95j1s7j1TCcM2bt\nPF4Nw15j1s7j1TDsPWadMl4Nw7MxK4eJCCGEEEIIcRlLlVsIIYQQQghhBTJJFkIIIYQQ4jIySRZC\nCCGEEOIyMkkWQgghhBDiMjJJFkIIIYQQ4jIySRZCCCGEEOIyMkkWQgghhBDiMjJJFkIIIYQQ4jL/\nD8Se36QdbJ39AAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 31 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The first two lines re-load our libraries as `np` and `plt`,\n", + "which are the aliases most Python programmers use.\n", + "The call to `loadtxt` reads our data,\n", + "and the rest of the program tells the plotting library\n", + "how large we want the figure to be,\n", + "that we're creating three sub-plots,\n", + "what to draw for each one,\n", + "and that we want a tight layout.\n", + "(Perversely,\n", + "if we leave out that call to `plt.tight_layout()`,\n", + "the graphs will actually be squeezed together more closely.)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Modify the program to display the three plots on top of one another instead of side by side." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "keypoints" + ] + }, + "source": [ + "#### Key Points\n", + "\n", + "* Import a library into a program using `import libraryname`.\n", + "* Use the `numpy` library to work with arrays in Python.\n", + "* Use `variable = value` to assign a value to a variable in order to record it in memory.\n", + "* Variables are created on demand whenever a value is assigned to them.\n", + "* Use `print something` to display the value of `something`.\n", + "* The expression `array.shape` gives the shape of an array.\n", + "* Use `array[x, y]` to select a single element from an array.\n", + "* Array indices start at 0, not 1.\n", + "* Use `low:high` to specify a slice that includes the indices from `low` to `high-1`.\n", + "* All the indexing and slicing that works on arrays also works on strings.\n", + "* Use `# some kind of explanation` to add comments to programs.\n", + "* Use `array.mean()`, `array.max()`, and `array.min()` to calculate simple statistics.\n", + "* Use `array.mean(axis=0)` or `array.mean(axis=1)` to calculate statistics across the specified axis.\n", + "* Use the `pyplot` library from `matplotlib` for creating simple visualizations." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "#### Next Steps\n", + "\n", + "Our work so far has convinced us that something's wrong with our first data file.\n", + "We would like to check the other 11 the same way,\n", + "but typing in the same commands repeatedly is tedious and error-prone.\n", + "Since computers don't get bored (that we know of),\n", + "we should create a way to do a complete analysis with a single command,\n", + "and then figure out how to repeat that step once for each file.\n", + "These operations are the subjects of the next two lessons." + ] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/novice/python/02-func.ipynb b/novice/python/02-func.ipynb new file mode 100644 index 0000000..ba59f15 --- /dev/null +++ b/novice/python/02-func.ipynb @@ -0,0 +1,1691 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 2, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Creating Functions" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "If we only had one data set to analyze,\n", + "it would probably be faster to load the file into a spreadsheet\n", + "and use that to plot some simple statistics.\n", + "But we have twelve files to check,\n", + "and may have more in future.\n", + "In this lesson,\n", + "we'll learn how to write a function\n", + "so that we can repeat several operations with a single command." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "objectives" + ] + }, + "source": [ + "#### Objectives\n", + "\n", + "* Define a function that takes parameters.\n", + "* Return a value from a function.\n", + "* Test and debug a function.\n", + "* Explain what a call stack is, and trace changes to the call stack as functions are called.\n", + "* Set default values for function parameters.\n", + "* Explain why we should divide programs into small, single-purpose functions." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Defining a Function" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Let's start by defining a function `fahr_to_kelvin` that converts temperatures from Fahrenheit to Kelvin:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def fahr_to_kelvin(temp):\n", + " return ((temp - 32) * (5/9)) + 273.15" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The definition opens with the word `def`,\n", + "which is followed by the name of the function\n", + "and a parenthesized list of parameter names.\n", + "The [body](../../gloss.html#function-body) of the function—the\n", + "statements that are executed when it runs—is indented below the definition line,\n", + "typically by four spaces.\n", + "\n", + "When we call the function,\n", + "the values we pass to it are assigned to those variables\n", + "so that we can use them inside the function.\n", + "Inside the function,\n", + "we use a [return statement](../../gloss.html#return-statement) to send a result back to whoever asked for it.\n", + "\n", + "Let's try running our function.\n", + "Calling our own function is no different from calling any other function:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'freezing point of water:', fahr_to_kelvin(32)\n", + "print 'boiling point of water:', fahr_to_kelvin(212)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "freezing point of water: 273.15\n", + "boiling point of water: 273.15\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We've successfully called the function that we defined,\n", + "and we have access to the value that we returned.\n", + "Unfortunately, the value returned doesn't look right.\n", + "What went wrong?" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Debugging a Function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Debugging* is when we fix a piece of code\n", + "that we know is working incorrectly.\n", + "In this case, we know that `fahr_to_kelvin`\n", + "is giving us the wrong answer,\n", + "so let's find out why.\n", + "\n", + "For big pieces of code,\n", + "there are tools called *debuggers* that aid in this process.\n", + "\n", + "We just have a short function,\n", + "so we'll debug by choosing some parameter value,\n", + "breaking our function into small parts,\n", + "and printing out the value of each part." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# We'll use temp = 212, the boiling point of water, which was incorrect\n", + "print \"212 - 32:\", 212 - 32" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "212 - 32: 180\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print \"(212 - 32) * (5/9):\", (212 - 32) * (5/9)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(212 - 32) * (5/9): 0\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Aha! The problem comes when we multiply by `5/9`.\n", + "This is because `5/9` is actually 0." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "5/9" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 5, + "text": [ + "0" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Computers store numbers in one of two ways:\n", + "as [integers](../../gloss.html#integer)\n", + "or as [floating-point numbers](../../gloss.html#float) (or floats).\n", + "The first are the numbers we usually count with;\n", + "the second have fractional parts.\n", + "Addition, subtraction and multiplication work on both as we'd expect,\n", + "but division works differently.\n", + "If we divide one integer by another,\n", + "we get the quotient without the remainder:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print '10/3 is:', 10/3" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10/3 is: 3\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "If either part of the division is a float,\n", + "on the other hand,\n", + "the computer creates a floating-point answer:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print '10.0/3 is:', 10.0/3" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10.0/3 is: 3.33333333333\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The computer does this for historical reasons:\n", + "integer operations were much faster on early machines,\n", + "and this behavior is actually useful in a lot of situations.\n", + "It's still confusing,\n", + "though,\n", + "so Python 3 produces a floating-point answer when dividing integers if it needs to.\n", + "We're still using Python 2.7 in this class,\n", + "though,\n", + "so if we want `5/9` to give us the right answer,\n", + "we have to write it as `5.0/9`, `5/9.0`, or some other variation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's fix our `fahr_to_kelvin` function with this new knowledge." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def fahr_to_kelvin(temp):\n", + " return ((temp - 32) * (5.0/9.0)) + 273.15\n", + "\n", + "print 'freezing point of water:', fahr_to_kelvin(32)\n", + "print 'boiling point of water:', fahr_to_kelvin(212)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "freezing point of water: 273.15\n", + "boiling point of water: 373.15\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "It works!" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Composing Functions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we've seen how to turn Fahrenheit into Kelvin,\n", + "it's easy to turn Kelvin into Celsius:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def kelvin_to_celsius(temp):\n", + " return temp - 273.15\n", + "\n", + "print 'absolute zero in Celsius:', kelvin_to_celsius(0.0)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "absolute zero in Celsius: -273.15\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "What about converting Fahrenheit to Celsius?\n", + "We could write out the formula,\n", + "but we don't need to.\n", + "Instead,\n", + "we can [compose](../../gloss.html#function-composition) the two functions we have already created:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def fahr_to_celsius(temp):\n", + " temp_k = fahr_to_kelvin(temp)\n", + " result = kelvin_to_celsius(temp_k)\n", + " return result\n", + "\n", + "print 'freezing point of water in Celsius:', fahr_to_celsius(32.0)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "freezing point of water in Celsius: 0.0\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This is our first taste of how larger programs are built:\n", + "we define basic operations,\n", + "then combine them in ever-large chunks to get the effect we want.\n", + "Real-life functions will usually be larger than the ones shown here—typically half a dozen to a few dozen lines—but\n", + "they shouldn't ever be much longer than that,\n", + "or the next person who reads it won't be able to understand what's going on." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. \"Adding\" two strings produces their concatention:\n", + " `'a' + 'b'` is `'ab'`.\n", + " Write a function called `fence` that takes two parameters called `original` and `wrapper`\n", + " and returns a new string that has the wrapper character at the beginning and end of the original:\n", + "\n", + " ~~~python\n", + " print fence('name', '*')\n", + " *name*\n", + " ~~~\n", + "\n", + "1. If the variable `s` refers to a string,\n", + " then `s[0]` is the string's first character\n", + " and `s[-1]` is its last.\n", + " Write a function called `outer`\n", + " that returns a string made up of just the first and last characters of its input:\n", + "\n", + " ~~~python\n", + " print outer('helium')\n", + " hm\n", + " ~~~" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "The Call Stack" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Let's take a closer look at what happens when we call `fahr_to_celsius(32.0)`.\n", + "To make things clearer,\n", + "we'll start by putting the initial value 32.0 in a variable\n", + "and store the final result in one as well:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "original = 32.0\n", + "final = fahr_to_celsius(original)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The diagram below shows what memory looks like after the first line has been executed:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Call" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "When we call `fahr_to_celsius`,\n", + "Python *doesn't* create the variable `temp` right away.\n", + "Instead,\n", + "it creates something called a [stack frame](../../gloss.html#stack-frame)\n", + "to keep track of the variables defined by `fahr_to_kelvin`.\n", + "Initially,\n", + "this stack frame only holds the value of `temp`:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Call" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "When we call `fahr_to_kelvin` inside `fahr_to_celsius`,\n", + "Python creates another stack frame to hold `fahr_to_kelvin`'s variables:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Call" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "It does this because there are now two variables in play called `temp`:\n", + "the parameter to `fahr_to_celsius`,\n", + "and the parameter to `fahr_to_kelvin`.\n", + "Having two variables with the same name in the same part of the program would be ambiguous,\n", + "so Python (and every other modern programming language) creates a new stack frame for each function call\n", + "to keep that function's variables separate from those defined by other functions.\n", + "\n", + "When the call to `fahr_to_kelvin` returns a value,\n", + "Python throws away `fahr_to_kelvin`'s stack frame\n", + "and creates a new variable in the stack frame for `fahr_to_celsius` to hold the temperature in Kelvin:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Call" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "It then calls `kelvin_to_celsius`,\n", + "which means it creates a stack frame to hold that function's variables:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Call" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Once again,\n", + "Python throws away that stack frame when `kelvin_to_celsius` is done\n", + "and creates the variable `result` in the stack frame for `fahr_to_celsius`:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Call" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Finally,\n", + "when `fahr_to_celsius` is done,\n", + "Python throws away *its* stack frame\n", + "and puts its result in a new variable called `final`\n", + "that lives in the stack frame we started with:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Call" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This final stack frame is always there;\n", + "it holds the variables we defined outside the functions in our code.\n", + "What it *doesn't* hold is the variables that were in the various stack frames.\n", + "If we try to get the value of `temp` after our functions have finished running,\n", + "Python tells us that there's no such thing:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'final value of temp after all function calls:', temp" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'temp' is not defined", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0;34m'final value of temp after all function calls:'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtemp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'temp' is not defined" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "final value of temp after all function calls:" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Why go to all this trouble?\n", + "Well,\n", + "here's a function called `span` that calculates the difference between\n", + "the mininum and maximum values in an array:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy\n", + "\n", + "def span(a):\n", + " diff = a.max() - a.min()\n", + " return diff\n", + "\n", + "data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n", + "print 'span of data', span(data)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " span of data 20.0\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Notice that `span` assigns a value to a variable called `diff`.\n", + "We might very well use a variable with the same name to hold data:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "diff = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n", + "print 'span of data:', span(diff)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "span of data: 20.0\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We don't expect `diff` to have the value 20.0 after this function call,\n", + "so the name `diff` cannot refer to the same thing inside `span` as it does in the main body of our program.\n", + "And yes,\n", + "we could probably choose a different name than `diff` in our main program in this case,\n", + "but we don't want to have to read every line of NumPy to see what variable names its functions use\n", + "before calling any of those functions,\n", + "just in case they change the values of our variables." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The big idea here is [encapsulation](../../gloss.html#encapsulation),\n", + "and it's the key to writing correct, comprehensible programs.\n", + "A function's job is to turn several operations into one\n", + "so that we can think about a single function call\n", + "instead of a dozen or a hundred statements\n", + "each time we want to do something.\n", + "That only works if functions don't interfere with each other;\n", + "if they do,\n", + "we have to pay attention to the details once again,\n", + "which quickly overloads our short-term memory." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. We previously wrote functions called `fence` and `outer`.\n", + " Draw a diagram showing how the call stack changes when we run the following:\n", + " ~~~python\n", + " print outer(fence('carbon', '+'))\n", + " ~~~" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Testing and Documenting" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Once we start putting things in functions so that we can re-use them,\n", + "we need to start testing that those functions are working correctly.\n", + "To see how to do this,\n", + "let's write a function to center a dataset around a particular value:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def center(data, desired):\n", + " return (data - data.mean()) + desired" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We could test this on our actual data,\n", + "but since we don't know what the values ought to be,\n", + "it will be hard to tell if the result was correct.\n", + "Instead,\n", + "let's use NumPy to create a matrix of 0's\n", + "and then center that around 3:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "z = numpy.zeros((2,2))\n", + "print center(z, 3)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[[ 3. 3.]\n", + " [ 3. 3.]]\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "That looks right,\n", + "so let's try `center` on our real data:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n", + "print center(data, 0)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[[-6.14875 -6.14875 -5.14875 ..., -3.14875 -6.14875 -6.14875]\n", + " [-6.14875 -5.14875 -4.14875 ..., -5.14875 -6.14875 -5.14875]\n", + " [-6.14875 -5.14875 -5.14875 ..., -4.14875 -5.14875 -5.14875]\n", + " ..., \n", + " [-6.14875 -5.14875 -5.14875 ..., -5.14875 -5.14875 -5.14875]\n", + " [-6.14875 -6.14875 -6.14875 ..., -6.14875 -4.14875 -6.14875]\n", + " [-6.14875 -6.14875 -5.14875 ..., -5.14875 -5.14875 -6.14875]]\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "It's hard to tell from the default output whether the result is correct,\n", + "but there are a few simple tests that will reassure us:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'original min, mean, and max are:', data.min(), data.mean(), data.max()\n", + "centered = center(data, 0)\n", + "print 'min, mean, and and max of centered data are:', centered.min(), centered.mean(), centered.max()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "original min, mean, and max are: 0.0 6.14875 20.0\n", + "min, mean, and and max of centered data are: -6.14875 -3.49054118942e-15 13.85125\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "That seems almost right:\n", + "the original mean was about 6.1,\n", + "so the lower bound from zero is how about -6.1.\n", + "The mean of the centered data isn't quite zero—we'll explore why not in the challenges—but it's pretty close.\n", + "We can even go further and check that the standard deviation hasn't changed:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'std dev before and after:', data.std(), centered.std()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "std dev before and after: 4.61383319712 4.61383319712\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Those values look the same,\n", + "but we probably wouldn't notice if they were different in the sixth decimal place.\n", + "Let's do this instead:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'difference in standard deviations before and after:', data.std() - centered.std()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "difference in standard deviations before and after: -3.5527136788e-15\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Again,\n", + "the difference is very small.\n", + "It's still possible that our function is wrong,\n", + "but it seems unlikely enough that we should probably get back to doing our analysis.\n", + "We have one more task first, though:\n", + "we should write some [documentation](../../gloss.html#documentation) for our function\n", + "to remind ourselves later what it's for and how to use it.\n", + "\n", + "The usual way to put documentation in software is to add [comments](../../gloss.html#comment) like this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# center(data, desired): return a new array containing the original data centered around the desired value.\n", + "def center(data, desired):\n", + " return (data - data.mean()) + desired" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 21 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "There's a better way, though.\n", + "If the first thing in a function is a string that isn't assigned to a variable,\n", + "that string is attached to the function as its documentation:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def center(data, desired):\n", + " '''Return a new array containing the original data centered around the desired value.'''\n", + " return (data - data.mean()) + desired" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This is better because we can now ask Python's built-in help system to show us the documentation for the function:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "help(center)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Help on function center in module __main__:\n", + "\n", + "center(data, desired)\n", + " Return a new array containing the original data centered around the desired value.\n", + "\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "A string like this is called a [docstring](../../gloss.html#docstring).\n", + "We don't need to use triple quotes when we write one,\n", + "but if we do,\n", + "we can break the string across multiple lines:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def center(data, desired):\n", + " '''Return a new array containing the original data centered around the desired value.\n", + " Example: center([1, 2, 3], 0) => [-1, 0, 1]'''\n", + " return (data - data.mean()) + desired\n", + "\n", + "help(center)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Help on function center in module __main__:\n", + "\n", + "center(data, desired)\n", + " Return a new array containing the original data centered around the desired value.\n", + " Example: center([1, 2, 3], 0) => [-1, 0, 1]\n", + "\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Write a function called `analyze` that takes a filename as a parameter\n", + " and displays the three graphs produced in the [previous lesson](01-numpy.ipynb),\n", + " i.e.,\n", + " `analyze('inflammation-01.csv')` should produce the graphs already shown,\n", + " while `analyze('inflammation-02.csv')` should produce corresponding graphs for the second data set.\n", + " Be sure to give your function a docstring.\n", + "\n", + "2. Write a function `rescale` that takes an array as input\n", + " and returns a corresponding array of values scaled to lie in the range 0.0 to 1.0.\n", + " (If $L$ and $H$ are the lowest and highest values in the original array,\n", + " then the replacement for a value $v$ should be $(v-L) / (H-L)$.)\n", + " Be sure to give the function a docstring.\n", + "\n", + "3. Run the commands `help(numpy.arange)` and `help(numpy.linspace)`\n", + " to see how to use these functions to generate regularly-spaced values,\n", + " then use those values to test your `rescale` function." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Defining Defaults" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We have passed parameters to functions in two ways:\n", + "directly, as in `span(data)`,\n", + "and by name, as in `numpy.loadtxt(fname='something.csv', delimiter=',')`.\n", + "In fact,\n", + "we can pass the filename to `loadtxt` without the `fname=`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "numpy.loadtxt('inflammation-01.csv', delimiter=',')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 25, + "text": [ + "array([[ 0., 0., 1., ..., 3., 0., 0.],\n", + " [ 0., 1., 2., ..., 1., 0., 1.],\n", + " [ 0., 1., 1., ..., 2., 1., 1.],\n", + " ..., \n", + " [ 0., 1., 1., ..., 1., 1., 1.],\n", + " [ 0., 0., 0., ..., 0., 2., 0.],\n", + " [ 0., 0., 1., ..., 1., 1., 0.]])" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "but we still need to say `delimiter=`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "numpy.loadtxt('inflammation-01.csv', ',')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "ename": "TypeError", + "evalue": "data type \",\" not understood", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloadtxt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'inflammation-01.csv'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m','\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/Users/gwilson/anaconda/lib/python2.7/site-packages/numpy/lib/npyio.pyc\u001b[0m in \u001b[0;36mloadtxt\u001b[0;34m(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)\u001b[0m\n\u001b[1;32m 775\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 776\u001b[0m \u001b[0;31m# Make sure we're dealing with a proper dtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 777\u001b[0;31m \u001b[0mdtype\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 778\u001b[0m \u001b[0mdefconv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_getconv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 779\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: data type \",\" not understood" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "To understand what's going on,\n", + "and make our own functions easier to use,\n", + "let's re-define our `center` function like this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def center(data, desired=0.0):\n", + " '''Return a new array containing the original data centered around the desired value (0 by default).\n", + " Example: center([1, 2, 3], 0) => [-1, 0, 1]'''\n", + " return (data - data.mean()) + desired" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 27 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The key change is that the second parameter is now written `desired=0.0` instead of just `desired`.\n", + "If we call the function with two arguments,\n", + "it works as it did before:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "test_data = numpy.zeros((2, 2))\n", + "print center(test_data, 3)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[[ 3. 3.]\n", + " [ 3. 3.]]\n" + ] + } + ], + "prompt_number": 28 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "But we can also now call it with just one parameter,\n", + "in which case `desired` is automatically assigned the [default value](../../gloss.html#default-parameter-value) of 0.0:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "more_data = 5 + numpy.zeros((2, 2))\n", + "print 'data before centering:', more_data\n", + "print 'centered data:', center(more_data)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "data before centering: [[ 5. 5.]\n", + " [ 5. 5.]]\n", + "centered data: [[ 0. 0.]\n", + " [ 0. 0.]]\n" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This is handy:\n", + "if we usually want a function to work one way,\n", + "but occasionally need it to do something else,\n", + "we can allow people to pass a parameter when they need to\n", + "but provide a default to make the normal case easier.\n", + "The example below shows how Python matches values to parameters:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def display(a=1, b=2, c=3):\n", + " print 'a:', a, 'b:', b, 'c:', c\n", + "\n", + "print 'no parameters:'\n", + "display()\n", + "print 'one parameter:'\n", + "display(55)\n", + "print 'two parameters:'\n", + "display(55, 66)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "no parameters:\n", + "a: 1 b: 2 c: 3\n", + "one parameter:\n", + "a: 55 b: 2 c: 3\n", + "two parameters:\n", + "a: 55 b: 66 c: 3\n" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "As this example shows,\n", + "parameters are matched up from left to right,\n", + "and any that haven't been given a value explicitly get their default value.\n", + "We can override this behavior by naming the value as we pass it in:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'only setting the value of c'\n", + "display(c=77)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "only setting the value of c\n", + "a: 1 b: 2 c: 77\n" + ] + } + ], + "prompt_number": 31 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "With that in hand,\n", + "let's look at the help for `numpy.loadtxt`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "help(numpy.loadtxt)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Help on function loadtxt in module numpy.lib.npyio:\n", + "\n", + "loadtxt(fname, dtype=, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)\n", + " Load data from a text file.\n", + " \n", + " Each row in the text file must have the same number of values.\n", + " \n", + " Parameters\n", + " ----------\n", + " fname : file or str\n", + " File, filename, or generator to read. If the filename extension is\n", + " ``.gz`` or ``.bz2``, the file is first decompressed. Note that\n", + " generators should return byte strings for Python 3k.\n", + " dtype : data-type, optional\n", + " Data-type of the resulting array; default: float. If this is a\n", + " record data-type, the resulting array will be 1-dimensional, and\n", + " each row will be interpreted as an element of the array. In this\n", + " case, the number of columns used must match the number of fields in\n", + " the data-type.\n", + " comments : str, optional\n", + " The character used to indicate the start of a comment;\n", + " default: '#'.\n", + " delimiter : str, optional\n", + " The string used to separate values. By default, this is any\n", + " whitespace.\n", + " converters : dict, optional\n", + " A dictionary mapping column number to a function that will convert\n", + " that column to a float. E.g., if column 0 is a date string:\n", + " ``converters = {0: datestr2num}``. Converters can also be used to\n", + " provide a default value for missing data (but see also `genfromtxt`):\n", + " ``converters = {3: lambda s: float(s.strip() or 0)}``. Default: None.\n", + " skiprows : int, optional\n", + " Skip the first `skiprows` lines; default: 0.\n", + " usecols : sequence, optional\n", + " Which columns to read, with 0 being the first. For example,\n", + " ``usecols = (1,4,5)`` will extract the 2nd, 5th and 6th columns.\n", + " The default, None, results in all columns being read.\n", + " unpack : bool, optional\n", + " If True, the returned array is transposed, so that arguments may be\n", + " unpacked using ``x, y, z = loadtxt(...)``. When used with a record\n", + " data-type, arrays are returned for each field. Default is False.\n", + " ndmin : int, optional\n", + " The returned array will have at least `ndmin` dimensions.\n", + " Otherwise mono-dimensional axes will be squeezed.\n", + " Legal values: 0 (default), 1 or 2.\n", + " .. versionadded:: 1.6.0\n", + " \n", + " Returns\n", + " -------\n", + " out : ndarray\n", + " Data read from the text file.\n", + " \n", + " See Also\n", + " --------\n", + " load, fromstring, fromregex\n", + " genfromtxt : Load data with missing values handled as specified.\n", + " scipy.io.loadmat : reads MATLAB data files\n", + " \n", + " Notes\n", + " -----\n", + " This function aims to be a fast reader for simply formatted files. The\n", + " `genfromtxt` function provides more sophisticated handling of, e.g.,\n", + " lines with missing values.\n", + " \n", + " Examples\n", + " --------\n", + " >>> from StringIO import StringIO # StringIO behaves like a file object\n", + " >>> c = StringIO(\"0 1\\n2 3\")\n", + " >>> np.loadtxt(c)\n", + " array([[ 0., 1.],\n", + " [ 2., 3.]])\n", + " \n", + " >>> d = StringIO(\"M 21 72\\nF 35 58\")\n", + " >>> np.loadtxt(d, dtype={'names': ('gender', 'age', 'weight'),\n", + " ... 'formats': ('S1', 'i4', 'f4')})\n", + " array([('M', 21, 72.0), ('F', 35, 58.0)],\n", + " dtype=[('gender', '|S1'), ('age', '>> c = StringIO(\"1,0,2\\n3,0,4\")\n", + " >>> x, y = np.loadtxt(c, delimiter=',', usecols=(0, 2), unpack=True)\n", + " >>> x\n", + " array([ 1., 3.])\n", + " >>> y\n", + " array([ 2., 4.])\n", + "\n" + ] + } + ], + "prompt_number": 32 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "There's a lot of information here,\n", + "but the most important part is the first couple of lines:\n", + "\n", + "~~~python\n", + "loadtxt(fname, dtype=, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None,\n", + " unpack=False, ndmin=0)\n", + "~~~\n", + "\n", + "This tells us that `loadtxt` has one parameter called `fname` that doesn't have a default value,\n", + "and eight others that do.\n", + "If we call the function like this:\n", + "\n", + "~~~python\n", + "numpy.loadtxt('inflammation-01.csv', ',')\n", + "~~~\n", + "\n", + "then the filename is assigned to `fname` (which is what we want),\n", + "but the delimiter string `','` is assigned to `dtype` rather than `delimiter`,\n", + "because `dtype` is the second parameter in the list.\n", + "That's why we don't have to provide `fname=` for the filename,\n", + "but *do* have to provide `delimiter=` for the second parameter." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Rewrite the `normalize` function so that it scales data to lie between 0.0 and 1.0 by default,\n", + " but will allow the caller to specify lower and upper bounds if they want.\n", + " Compare your implementation to your neighbor's:\n", + " do the two functions always behave the same way?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "keypoints" + ] + }, + "source": [ + "#### Key Points\n", + "\n", + "* Define a function using `def name(...params...)`.\n", + "* The body of a function must be indented.\n", + "* Call a function using `name(...values...)`.\n", + "* Numbers are stored as integers or floating-point numbers.\n", + "* Integer division produces the whole part of the answer (not the fractional part).\n", + "* Each time a function is called, a new stack frame is created on the [call stack](../../gloss.html#call-stack) to hold its parameters and local variables.\n", + "* Python looks for variables in the current stack frame before looking for them at the top level.\n", + "* Use `help(thing)` to view help for something.\n", + "* Put docstrings in functions to provide help for that function.\n", + "* Specify default values for parameters when defining a function using `name=value` in the parameter list.\n", + "* Parameters can be passed by matching based on name, by position, or by omitting them (in which case the default value is used)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "#### Next Steps\n", + "\n", + "We now have a function called `analyze` to visualize a single data set.\n", + "We could use it to explore all 12 of our current data sets like this:\n", + "\n", + "~~~python\n", + "analyze('inflammation-01.csv')\n", + "analyze('inflammation-02.csv')\n", + "...\n", + "analyze('inflammation-12.csv')\n", + "~~~\n", + "\n", + "but the chances of us typing all 12 filenames correctly aren't great,\n", + "and we'll be even worse off if we get another hundred files.\n", + "What we need is a way to tell Python to do something once for each file,\n", + "and that will be the subject of the next lesson." + ] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/novice/python/03-loop.ipynb b/novice/python/03-loop.ipynb new file mode 100644 index 0000000..86cbf69 --- /dev/null +++ b/novice/python/03-loop.ipynb @@ -0,0 +1,910 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 2, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Analyzing Multiple Data Sets" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We have created a function called `analyze` that creates graphs of the minimum, average, and maximum daily inflammation rates\n", + "for a single data set:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "from matplotlib import pyplot as plt\n", + "\n", + "def analyze(filename):\n", + " data = np.loadtxt(fname=filename, delimiter=',')\n", + " \n", + " plt.figure(figsize=(10.0, 3.0))\n", + " \n", + " plt.subplot(1, 3, 1)\n", + " plt.ylabel('average')\n", + " plt.plot(data.mean(0))\n", + " \n", + " plt.subplot(1, 3, 2)\n", + " plt.ylabel('max')\n", + " plt.plot(data.max(0))\n", + " \n", + " plt.subplot(1, 3, 3)\n", + " plt.ylabel('min')\n", + " plt.plot(data.min(0))\n", + " \n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + "analyze('inflammation-01.csv')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nD8Se36QdbJ39AAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can use it to analyze other data sets one by one:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "analyze('inflammation-02.csv')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "but we have a dozen data sets right now and more on the way.\n", + "We want to create plots for all our data sets with a single statement.\n", + "To do that,\n", + "we'll have to teach the computer how to repeat things." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "objectives" + ] + }, + "source": [ + "#### Objectives\n", + "\n", + "* Explain what a for loop does.\n", + "* Correctly write for loops to repeat simple calculations.\n", + "* Trace changes to a loop variable as the loop runs.\n", + "* Trace changes to other variables as they are updated by a for loop.\n", + "* Explain what a list is.\n", + "* Create and index lists of simple values.\n", + "* Use a library function to get a list of filenames that match a simple wildcard pattern.\n", + "* Use a for loop to process multiple files." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "For Loops" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Suppose we want to print each character in the word \"lead\" on a line of its own.\n", + "One way is to use four `print` statements:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def print_characters(element):\n", + " print element[0]\n", + " print element[1]\n", + " print element[2]\n", + " print element[3]\n", + "\n", + "print_characters('lead')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "l\n", + "e\n", + "a\n", + "d\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "but that's a bad approach for two reasons:\n", + "\n", + "1. It doesn't scale:\n", + " if we want to print the characters in a string that's hundreds of letters long,\n", + " we'd be better off just typing them in.\n", + "\n", + "1. It's fragile:\n", + " if we give it a longer string,\n", + " it only prints part of the data,\n", + " and if we give it a shorter one,\n", + " it produces an error because we're asking for characters that don't exist." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print_characters('tin')" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "ename": "IndexError", + "evalue": "string index out of range", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mprint_characters\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'tin'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mprint_characters\u001b[0;34m(element)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0melement\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0melement\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0melement\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mprint_characters\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'lead'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mIndexError\u001b[0m: string index out of range" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "t\n", + "i\n", + "n\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a better approach:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def print_characters(element):\n", + " for char in element:\n", + " print char\n", + "\n", + "print_characters('lead')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This is shorter---certainly shorter than something that prints every character in a hundred-letter string---and\n", + "more robust as well:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print_characters('oxygen')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The improved version of `print_characters` uses a [for loop](../../gloss.html#for-loop)\n", + "to repeat an operation---in this case, printing---once for each thing in a collection.\n", + "The general form of a loop is:\n", + "\n", + "
\n",
+      "for variable in collection:\n",
+      "    do things with variable\n",
+      "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can call the [loop variable](../../gloss.html#loop-variable) anything we like,\n", + "but there must be a colon at the end of the line starting the loop,\n", + "and we must indent the body of the loop.\n", + "\n", + "Here's another loop that repeatedly updates a variable:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "length = 0\n", + "for vowel in 'aeiou':\n", + " length = length + 1\n", + "print 'There are', length, 'vowels'" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "It's worth tracing the execution of this little program step by step.\n", + "Since there are five characters in `'aeiou'`,\n", + "the statement on line 3 will be executed five times.\n", + "The first time around,\n", + "`length` is zero (the value assigned to it on line 1)\n", + "and `vowel` is `'a'`.\n", + "The statement adds 1 to the old value of `length`,\n", + "producing 1,\n", + "and updates `length` to refer to that new value.\n", + "The next time around,\n", + "`vowel` is `'e'` and `length` is 1,\n", + "so `length` is updated to be 2.\n", + "After three more updates,\n", + "`length` is 5;\n", + "since there is nothing left in `'aeiou'` for Python to process,\n", + "the loop finishes\n", + "and the `print` statement on line 4 tells us our final answer.\n", + "\n", + "Note that a loop variable is just a variable that's being used to record progress in a loop.\n", + "It still exists after the loop is over,\n", + "and we can re-use variables previously defined as loop variables as well:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "letter = 'z'\n", + "for letter in 'abc':\n", + " print letter\n", + "print 'after the loop, letter is', letter" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Note also that finding the length of a string is such a common operation\n", + "that Python actually has a built-in function to do it called `len`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print len('aeiou')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "`len` is much faster than any function we could write ourselves,\n", + "and much easier to read than a two-line loop;\n", + "it will also give us the length of many other things that we haven't met yet,\n", + "so we should always use it when we can." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Python has a built-in function called `range` that creates a list of numbers:\n", + " `range(3)` produces `[0, 1, 2]`, `range(2, 5)` produces `[2, 3, 4]`, and `range(2, 10, 3)` produces `[2, 5, 8]`.\n", + " Using `range`,\n", + " write a function that prints the $N$ natural numbers:\n", + " ~~~python\n", + " print_N(3)\n", + " 1\n", + " 2\n", + " 3\n", + " ~~~\n", + "\n", + "1. Exponentiation is built into Python:\n", + " ~~~python\n", + " print 2**4\n", + " 16\n", + " ~~~\n", + " It also has a function called `pow` that calculates the same value.\n", + " Write a function called `expo` that uses a loop to calculate the same result.\n", + "\n", + "1. Python's strings have methods, just like NumPy's arrays.\n", + " One of these is called `reverse`:\n", + " ~~~python\n", + " print 'Newton'.reverse()\n", + " notweN\n", + " ~~~\n", + " Write a function called `rev` that does the same thing:\n", + " ~~~python\n", + " print rev('Newton')\n", + " notweN\n", + " ~~~\n", + " As always, be sure to include a docstring." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Lists" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Just as a `for` loop is a way to do operations many times,\n", + "a list is a way to store many values.\n", + "Unlike NumPy arrays,\n", + "there are built into the language.\n", + "We create a list by putting values inside square brackets:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "odds = [1, 3, 5, 7]\n", + "print 'odds are:', odds" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We select individual elements from lists by indexing them:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'first and last:', odds[0], odds[-1]" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "and if we loop over a list,\n", + "the loop variable is assigned elements one at a time:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for number in odds:\n", + " print number" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "There is one important difference between lists and strings:\n", + "we can change the values in a list,\n", + "but we cannot change the characters in a string.\n", + "For example:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "names = ['Newton', 'Darwing', 'Turing'] # typo in Darwin's name\n", + "print 'names is originally:', names\n", + "names[1] = 'Darwin' # correct the name\n", + "print 'final value of names:', names" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "works, but:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "name = 'Bell'\n", + "name[0] = 'b'" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "does not.\n", + "\n", + "> #### Ch-Ch-Ch-Changes\n", + ">\n", + "> Data that can be changed is called [mutable](../../gloss.html#mutable),\n", + "> while data that cannot be is called [immutable](../../gloss.html#immutable).\n", + "> Like strings,\n", + "> numbers are immutable:\n", + "> there's no way to make the number 0 have the value 1 or vice versa\n", + "> (at least, not in Python—there actually *are* languages that will let people do this,\n", + "> with predictably confusing results).\n", + "> Lists and arrays,\n", + "> on the other hand,\n", + "> are mutable:\n", + "> both can be modified after they have been created.\n", + ">\n", + "> Programs that modify data in place can be harder to understand than ones that don't\n", + "> because readers may have to mentally sum up many lines of code\n", + "> in order to figure out what the value of something actually is.\n", + "> On the other hand,\n", + "> programs that modify data in place instead of creating copies that are almost identical to the original\n", + "> every time they want to make a small change\n", + "> are much more efficient.\n", + "\n", + "There are many ways to change the contents of in lists besides assigning to elements:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "odds.append(11)\n", + "print 'odds after adding a value:', odds" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "del odds[0]\n", + "print 'odds after removing the first element:', odds" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "odds.reverse()\n", + "print 'odds after reversing:', odds" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Write a function called `total` that calculates the sum of the values in a list.\n", + " (Python has a built-in function called `sum` that does this for you.\n", + " Please don't use it for this exercise.)" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Processing Multiple Files" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We now have almost everything we need to process all our data files.\n", + "The only thing that's missing is a library with a rather unpleasant name:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import glob" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The `glob` library contains a single function, also called `glob`,\n", + "that finds files whose names match a pattern.\n", + "We provide those patterns as strings:\n", + "the character `*` matches zero or more characters,\n", + "while `?` matches any one character.\n", + "We can use this to get the names of all the IPython Notebooks we have created so far:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print glob.glob('*.ipynb')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "['01-numpy.ipynb', '02-func.ipynb', '03-loop.ipynb', '04-cond.ipynb', '05-defensive.ipynb', '06-cmdline.ipynb', 'spatial-intro.ipynb']\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "or to get the names of all our CSV data files:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print glob.glob('*.csv')" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "['inflammation-01.csv', 'inflammation-02.csv', 'inflammation-03.csv', 'inflammation-04.csv', 'inflammation-05.csv', 'inflammation-06.csv', 'inflammation-07.csv', 'inflammation-08.csv', 'inflammation-09.csv', 'inflammation-10.csv', 'inflammation-11.csv', 'inflammation-12.csv', 'small-01.csv', 'small-02.csv', 'small-03.csv', 'swc_bc_coords.csv']\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "As these examples show,\n", + "`glob.glob`'s result is a list of strings,\n", + "which means we can loop over it\n", + "to do something with each filename in turn.\n", + "In our case,\n", + "the \"something\" we want is our `analyze` function.\n", + "Let's test it by analyzing the first three files in the list:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "filenames = glob.glob('*.csv')\n", + "filenames = filenames[0:3]\n", + "for f in filenames:\n", + " print f\n", + " analyze(f)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "inflammation-01.csv\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nD8Se36QdbJ39AAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "inflammation-02.csv\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "inflammation-03.csv\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n+/7774327dtn//ekSZOM+Pj4y76ndu3aBiAf8hFwH7Vr1/b3kCyQjFn5kI/cP2S8yod82OujsGPW\n7+KFEP4AAAZUSURBVIeJpKenc9NNN7Fy5UqqVatGs2bN+Oijj6hXr54/YwghPCRjVgj7kPEqhHn8\nXm5RvHhx3njjDdq3b09GRgZ9+vSRwSuEhcmYFcI+ZLwKYR5LHksthBBCCCGETloOE8mPr5qgZ6lZ\nsyaNGjXC7XbTrFkzr67Vu3dvQkNDCQ8Pz/7c8ePHiY6Opm7durRr146TJ0+aev24uDiqV6+O2+3G\n7XazfPnyIl8/JSWFVq1a0aBBAxo2bMj06dNN/Rnyur4ZP8P58+eJiooiMjKS+vXrM3LkSFOz53V9\nM//+QfU0dbvdxPy1C8HM+8cf7DRewd5j1s7jFZwxZu0+XsFeY9bO4xXsPWadMF7BhDHr9S4BE6Wn\npxu1a9c2kpKSjAsXLhgRERHG9u3bTX2MmjVrGseOHTPlWt9++62xceNGo2HDhtmfGzp0qDF58mTD\nMAwjPj7eGD58uKnXj4uLM1555ZWih77EwYMHjU2bNhmGYRhnzpwx6tata2zfvt20nyGv65v1M5w9\ne9YwDMO4ePGiERUVZaxdu9bUv//crm/m379hGMYrr7xidOvWzYiJiTEMw9z7x9fsNl4Nw95j1u7j\n1TDsP2btPF4Nw35j1s7j1TDsP2btPl4Nw/sxa6mVZF82Qb+UYVKFSYsWLShfvvxln1u8eDE9e/YE\noGfPnixcuNDU64N5+atUqUJkZCQAISEh1KtXjwMHDpj2M+R1fTDnZyhdujQAFy5cICMjg/Lly5v6\n95/b9cG8v//9+/ezdOlS+vbtm31NM/P7mt3GK9h7zNp9vIK9x6zdxyvYb8zaebyC/cesnccrmDNm\nLTVJ9lUT9Eu5XC7atm1LkyZNmDFjhqnXBjh8+DChoaEAhIaGcvjwYdMf4/XXXyciIoI+ffqY9vZe\ncnIymzZtIioqyic/Q9b1b731VsCcnyEzM5PIyEhCQ0Oz33IyM3tu1zcrO8Bzzz3Hyy+/TFDQ38PQ\nH/ePWZwwXsGeY9aO4xXsPWbtPl7BGWPWjuMV7Dlm7TxewZwxa6lJsqdN0L2xbt06Nm3axLJly3jz\nzTdZu3atzx7L5XKZ/jP179+fpKQkNm/eTNWqVRkyZIjX10xNTaVz585MmzaNMmXKXPY1M36G1NRU\nunTpwrRp0wgJCTHtZwgKCmLz5s3s37+fb7/9ltWrV5uaPef1ExISTMu+ZMkSKleujNvtzvNVsy/u\nHzM5bbyCPcasXccr2HfMOmG8gvPGrB3GK9h3zNp1vIJ5Y9ZSk+TrrruOlJSU7P9OSUmhevXqpj5G\n1apVAahUqRKdOnVi/fr1pl4/NDSUQ4cOAXDw4EEqV65s6vUrV66c/T+2b9++Xue/ePEinTt3pnv3\n7nTs2BEw92fIuv6jjz6afX2zf4ayZctyzz338PPPP/vk7z/r+hs2bDAt+3//+18WL15MrVq16Nq1\nK6tWraJ79+4+v3/M5ITxCvYas04Yr2C/MeuE8QrOGLN2Gq/gjDFrt/EK5o1ZS02SmzRpwu+//05y\ncjIXLlzgk08+oUOHDqZdPy0tjTNnzgBw9uxZvv7668t2tZqhQ4cOzJ49G4DZs2dn37RmOXjwYPa/\nL1iwwKv8hmHQp08f6tevz7PPPpv9ebN+hryub8bPcPTo0ey3Yc6dO8eKFStwu92mZc/r+lmDy5vs\nAJMmTSIlJYWkpCQ+/vhjWrduzZw5c3x+/5jJCeMV7DNm7Txewd5j1gnjFZwxZu0yXsHeY9bO4xVM\nHLOmbSE0ydKlS426desatWvXNiZNmmTqtffs2WNEREQYERERRoMGDby+/sMPP2xUrVrVCA4ONqpX\nr27MmjXLOHbsmNGmTRvjxhtvNKKjo40TJ06Ydv2ZM2ca3bt3N8LDw41GjRoZ9913n3Ho0KEiX3/t\n2rWGy+UyIiIijMjISCMyMtJYtmyZaT9DbtdfunSpKT/Dli1bDLfbbURERBjh4eHGSy+9ZBiGYVr2\nvK5v5t9/loSEhOydt2beP/5gp/FqGPYes3Yer4bhnDFr5/FqGPYas3Yer4Zh7zHrlPFqGN6NWTlM\nRAghhBBCiBwsVW4hhBBCCCGEFcgkWQghhBBCiBxkkiyEEEIIIUQOMkkWQgghhBAiB5kkCyGEEEII\nkYNMkoUQQgghhMhBJslCCCGEEELkIJNkIYQQQgghcvh/t4g/4A54K1sAAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Sure enough,\n", + "the maxima of these data sets show exactly the same ramp as the first,\n", + "and their minima show the same staircase structure." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Write a function called `analyze_all` that takes a filename pattern as its sole argument\n", + " and runs `analyze` for each file whose name matches the pattern." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "#### Key Points\n", + "\n", + "* Use `for variable in collection` to process the elements of a collection one at a time.\n", + "* The body of a for loop must be indented.\n", + "* Use `len(thing)` to determine the length of something that contains other values.\n", + "* `[value1, value2, value3, ...]` creates a list.\n", + "* Lists are indexed and sliced in the same way as strings and arrays.\n", + "* Lists are mutable (i.e., their values can be changed in place).\n", + "* Strings are immutable (i.e., the characters in them cannot be changed).\n", + "* Use `glob.glob(pattern)` to create a list of files whose names match a pattern.\n", + "* Use `*` in a pattern to match zero or more characters, and `?` to match any single character." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "#### Next Steps\n", + "\n", + "We have now solved our original problem:\n", + "we can analyze any number of data files with a single command.\n", + "More importantly,\n", + "we have met two of the most important ideas in programming:\n", + "\n", + "1. Use functions to make code easier to re-use and easier to understand.\n", + "1. Use lists and arrays to store related values, and loops to repeat operations on them.\n", + "\n", + "We have one more big idea to introduce,\n", + "and then we will be able to go back and create a heat map\n", + "like the one we initially used to display our first data set." + ] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/novice/python/04-cond.ipynb b/novice/python/04-cond.ipynb new file mode 100644 index 0000000..c247d96 --- /dev/null +++ b/novice/python/04-cond.ipynb @@ -0,0 +1,1413 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 2, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Making Choices" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Our previous lessons have shown us how to manipulate data,\n", + "define our own functions,\n", + "and repeat things.\n", + "However,\n", + "the programs we have written so far always do the same things,\n", + "regardless of what data they're given.\n", + "We want programs to make choices based on the values they are manipulating.\n", + "To help us see what decisions they're making,\n", + "we'll start by looking at how computers manipulate images." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "objectives" + ] + }, + "source": [ + "#### Objectives\n", + "\n", + "* Create a simple \"image\" made out of colored blocks.\n", + "* Explain how the RGB model represents colors.\n", + "* Explain the similarities and differences between tuples and lists.\n", + "* Write conditional statements including `if`, `elif`, and `else` branches.\n", + "* Correctly evaluate expressions containing `and` and `or`.\n", + "* Correctly write and interpret code containing nested loops and conditionals.\n", + "* Explain the advantages of putting frequently-modified code in a function." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Image Grids" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Let's start by creating some simple heat maps of our own\n", + "using a library called `ipythonblocks`.\n", + "The first step is to create our own \"image\":" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from ipythonblocks import ImageGrid" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unlike the `import` statements we have seen earlier,\n", + "this one doesn't load the entire `ipythonblocks` library.\n", + "Instead,\n", + "it just loads `ImageGrid` from that library,\n", + "since that's the only thing we need (for now).\n", + "\n", + "Once we have `ImageGrid` loaded,\n", + "we can use it to create a very simple grid of colored cells:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "grid = ImageGrid(5, 3)\n", + "grid.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Just like a NumPy array,\n", + "an `ImageGrid` has some properties that hold information about it:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'grid width:', grid.width\n", + "print 'grid height:', grid.height\n", + "print 'grid lines on:', grid.lines_on" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "grid width: 5\n", + "grid height: 3\n", + "grid lines on: True\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The obvious thing to do with a grid like this is color in its cells,\n", + "but in order to do that,\n", + "we need to know how computers represent color.\n", + "The most common schemes are [RGB](../../gloss.html#rgb),\n", + "which is short for \"red, green, blue\".\n", + "RGB is an [additive color model](../../gloss.html#additive-color-model):\n", + "every shade is some combination of red, green, and blue intensities.\n", + "We can think of these three values as being the axes in a cube:\n", + "\n", + "\"RGB\n", + "\n", + "An RGB color is an example of a multi-part value:\n", + "like a Cartesian coordinate,\n", + "it is one thing with several parts.\n", + "We can represent such a value in Python using a [tuple](../../gloss.html#tuple),\n", + "which we write using parentheses instead of the square brackets used for a list:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "position = (12.3, 45.6)\n", + "print 'position is:', position\n", + "color = (10, 20, 30)\n", + "print 'color is:', color" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "position is: (12.3, 45.6)\n", + "color is: (10, 20, 30)\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can select elements from tuples using indexing,\n", + "just as we do with lists and arrays:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'first element of color is:', color[0]" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "first element of color is: 10\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Unlike lists and arrays,\n", + "though,\n", + "tuples cannot be changed after they are created—in technical terms,\n", + "they are [immutable](../../gloss.html#immutable):" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "color[0] = 40\n", + "print 'first element of color after change:', color[0]" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mcolor\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m40\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0;34m'first element of color after change:'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "If a tuple represents an RGB color,\n", + "its red, green, and blue components can take on values between 0 and 255.\n", + "The upper bound may seem odd,\n", + "but it's the largest number that can be represented in an 8-bit byte\n", + "(i.e., 28-1).\n", + "This makes it easy for computers to manipulate colors,\n", + "while providing fine enough gradations to fool most human eyes,\n", + "most of the time.\n", + "\n", + "Let's see what a few RGB colors actually look like:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "row = ImageGrid(8, 1)\n", + "row[0, 0] = (0, 0, 0) # no color => black\n", + "row[1, 0] = (255, 255, 255) # all colors => white\n", + "row[2, 0] = (255, 0, 0) # all red\n", + "row[3, 0] = (0, 255, 0) # all green\n", + "row[4, 0] = (0, 0, 255) # all blue\n", + "row[5, 0] = (255, 255, 0) # red and green\n", + "row[6, 0] = (255, 0, 255) # red and blue\n", + "row[7, 0] = (0, 255, 255) # green and blue\n", + "row.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Simple color values like `(0,255,0)` are easy enough to decipher with a bit of practice,\n", + "but what color is `(214,90,127)`?\n", + "To help us,\n", + "`ipythonblocks` provides a function called `show_color`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from ipythonblocks import show_color\n", + "show_color(214, 90, 127)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "It also provides a table of standard colors:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from ipythonblocks import colors\n", + "c = ImageGrid(3, 2)\n", + "c[0, 0] = colors['Fuchsia']\n", + "c[0, 1] = colors['Salmon']\n", + "c[1, 0] = colors['Orchid']\n", + "c[1, 1] = colors['Lavender']\n", + "c[2, 0] = colors['LimeGreen']\n", + "c[2, 1] = colors['HotPink']\n", + "c.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Fill in the `____` in the code below to create a bar that changes color from dark blue to black.\n", + "\n", + " ~~~python\n", + " bar = ImageGrid(10, 1)\n", + " for x in range(10):\n", + " bar[x, 0] = (0, 0, ____)\n", + " bar.show()\n", + " ~~~\n", + "\n", + "2. Why do computers use red, green, and blue as their primary colors?" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Conditionals" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The other thing we need in order to create a heat map of our own\n", + "is a way to pick a color based on a data value.\n", + "The tool Python gives us for doing this is called a [conditional statement](../../gloss.html#conditional-statement),\n", + "and looks like this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "num = 37\n", + "if num > 100:\n", + " print 'greater'\n", + "else:\n", + " print 'not greater'\n", + "print 'done'" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "not greater\n", + "done\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The second line of this code uses the keyword `if` to tell Python that we want to make a choice.\n", + "If the test that follows it is true,\n", + "the body of the `if`\n", + "(i.e., the lines indented underneath it) are executed.\n", + "If the test is false,\n", + "the body of the `else` is executed instead.\n", + "Only one or the other is ever executed:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Executing" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Conditional statements don't have to include an `else`.\n", + "If there isn't one,\n", + "Python simply does nothing if the test is false:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "num = 53\n", + "print 'before conditional...'\n", + "if num > 100:\n", + " print '53 is greater than 100'\n", + "print '...after conditional'" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "before conditional...\n", + "...after conditional\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can also chain several tests together using `elif`,\n", + "which is short for \"else if\".\n", + "This makes it simple to write a function that returns the sign of a number:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def sign(num):\n", + " if num > 0:\n", + " return 1\n", + " elif num == 0:\n", + " return 0\n", + " else:\n", + " return -1\n", + "\n", + "print 'sign of -3:', sign(-3)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "sign of -3: -1\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "One important thing to notice the code above is that we use a double equals sign `==` to test for equality\n", + "rather than a single equals sign\n", + "because the latter is used to mean assignment.\n", + "This convention was inherited from C,\n", + "and while many other programming languages work the same way,\n", + "it does take a bit of getting used to...\n", + "\n", + "We can also combine tests using `and` and `or`.\n", + "`and` is only true if both parts are true:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "if (1 > 0) and (-1 > 0):\n", + " print 'both parts are true'\n", + "else:\n", + " print 'one part is not true'" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "one part is not true\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "while `or` is true if either part is true:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "if (1 < 0) or ('left' < 'right'):\n", + " print 'at least one test is true'" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "at least one test is true\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "In this case,\n", + "\"either\" means \"either or both\", not \"either one or the other but not both\"." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. `True` and `False` aren't the only values in Python that are true and false.\n", + " In fact, *any* value can be used in an `if` or `elif`.\n", + " After reading and running the code below,\n", + " explain what the rule is for which values are considered true and which are considered false.\n", + " (Note that if the body of a conditional is a single statement, we can write it on the same line as the `if`.)\n", + " \n", + " ~~~python\n", + " if '': print 'empty string is true'\n", + " if 'word': print 'word is true'\n", + " if []: print 'empty list is true'\n", + " if [1, 2, 3]: print 'non-empty list is true'\n", + " if 0: print 'zero is true'\n", + " if 1: print 'one is true'\n", + " ~~~\n", + "\n", + "2. Write a function called `near` that returns `True` if its first parameter is within 10% of its second\n", + " and `False` otherwise.\n", + " Compare your implementation with your partner's:\n", + " do you return the same answer for all possible pairs of numbers?" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Nesting" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Another thing to realize is that `if` statements can be combined with loops\n", + "just as easily as they can be combined with functions.\n", + "For example,\n", + "if we want to sum the positive numbers in a list,\n", + "we can write this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "numbers = [-5, 3, 2, -1, 9, 6]\n", + "total = 0\n", + "for n in numbers:\n", + " if n >= 0:\n", + " total = total + n\n", + "print 'sum of positive values:', total" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "sum of positive values: 20\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We could equally well calculate the positive and negative sums in a single loop:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "pos_total = 0\n", + "neg_total = 0\n", + "for n in numbers:\n", + " if n >= 0:\n", + " pos_total = pos_total + n\n", + " else:\n", + " neg_total = neg_total + n\n", + "print 'negative and positive sums are:', neg_total, pos_total" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "negative and positive sums are: -6 20\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can even put one loop inside another:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for consonant in 'bcd':\n", + " for vowel in 'ae':\n", + " print consonant + vowel" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "ba\n", + "be\n", + "ca\n", + "ce\n", + "da\n", + "de\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "As the diagram below shows,\n", + "the [inner loop](../../gloss.html#inner-loop) runs from start to finish\n", + "each time the [outer loop](../../gloss.html#outer-loop) runs once:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Execution" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can combine nesting and conditionals to create patterns in an image:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "square = ImageGrid(5, 5)\n", + "for x in range(square.width):\n", + " for y in range(square.height):\n", + " if x < y:\n", + " square[x, y] = colors['Fuchsia']\n", + " elif x == y:\n", + " square[x, y] = colors['Olive']\n", + " else:\n", + " square[x, y] = colors['SlateGray']\n", + "square.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This is our first hand-made data visualization:\n", + "the colors show where `x` is less than, equal to, or greater than `y`." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Will changing the nesting of the loops in the code above—i.e.,\n", + " wrapping the Y-axis loop around the X-axis loop—change the final image?\n", + " Why or why not?\n", + "\n", + "2. Python (and most other languages in the C family) provides [in-place operators](../../gloss.html#in-place-operator)\n", + " that work like this:\n", + " \n", + " ~~~python\n", + " x = 1 # original value\n", + " x += 1 # add one to x, assigning result back to x\n", + " x *= 3 # multiply x by 3\n", + " print x\n", + " 6\n", + " ~~~\n", + " \n", + " Rewrite the code that sums the positive and negative numbers in a list\n", + " using in-place operators.\n", + " Do you think the result is more or less readable than the original?" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Creating a Heat Map" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The last step is to turn our data into something we can see.\n", + "As in previous lessons,\n", + "the first step is to get the data into memory:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy as np\n", + "data = np.loadtxt(fname='inflammation-01.csv', delimiter=',')\n", + "print 'data shape:', data.shape" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "data shape: (60, 40)\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The second is to create an image grid that is the same size as the data:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "width, height = data.shape\n", + "heatmap = ImageGrid(width, height)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 25 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "(The first line of the code above takes advantage of a neat trick:\n", + "we can unpack the values in a tuple by assigning it to\n", + "as many variables as it has entries.)\n", + "\n", + "The third step is to decide *how* we are going to color the cells in the heat map.\n", + "To keep things simple,\n", + "we will use red, green, and blue as our colors,\n", + "and compare data values to the data set's mean.\n", + "Here's the code:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for x in range(width):\n", + " for y in range(height):\n", + " if data[x, y] < data.mean():\n", + " heatmap[x, y] = colors['Red']\n", + " elif data[x, y] == data.mean():\n", + " heatmap[x, y] = colors['Green']\n", + " else:\n", + " heatmap[x, y] = colors['Blue']\n", + "heatmap.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This may be what we asked for,\n", + "but both the image and the code are hideous:\n", + "\n", + "1. It's too large for us to view the whole thing at once on a small laptop screen.\n", + "2. Our first heatmap had time along the X axis; this seems to have time along the Y axis.\n", + "3. Red against blue is pretty hard on the eyes.\n", + "4. The heatmap only shows two colors because none of the (integer) measurements has exactly the same value as the (fractional) mean.\n", + "5. We are calculating the mean of `data` either once or twice each time we go through the loop. That means that on a 40×60 data set, we are performing the same calculation 2400 times.\n", + "\n", + "Here's how we can improve it:\n", + "\n", + "1. We can give `ImageGrid` an optional parameter `block_size` to set the size of each block.\n", + "2. We can transpose our data before creating the grid.\n", + "3. We can pick better colors (I'm personally fond of orchid, fuchsia, and hot pink).\n", + "4. Instead of checking if values are exactly equal to the mean, we can see if they are close to it.\n", + "5. We can calculate the mean once, before we start our loops, and use that value over and over.\n", + "\n", + "Our modified code looks like this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "flipped = data.transpose()\n", + "width, height = flipped.shape\n", + "heatmap = ImageGrid(width, height, block_size=5)\n", + "center = flipped.mean()\n", + "for x in range(width):\n", + " for y in range(height):\n", + " if flipped[x, y] < (0.8 * center):\n", + " heatmap[x, y] = colors['Orchid']\n", + " elif flipped[x, y] > (1.2 * center):\n", + " heatmap[x, y] = colors['HotPink']\n", + " else:\n", + " heatmap[x, y] = colors['Fuchsia']\n", + "heatmap.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 27 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "That's a bit better—but now the contrast between the colors isn't great enough.\n", + "And there still aren't very many fuchsia cells:\n", + "we may want to widen the band around the mean that gets that color.\n", + "\n", + "We could rewrite our loop a third time,\n", + "but the right thing to do is to put our code in a function\n", + "so that we can experiment with bands and colors more easily." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def make_heatmap(values, low_color, mid_color, high_color, low_band, high_band, block_size):\n", + " '''Make a 3-colored heatmap from a 2D array of data.'''\n", + " width, height = values.shape\n", + " result = ImageGrid(width, height, block_size=block_size)\n", + " center = values.mean()\n", + " for x in range(width):\n", + " for y in range(height):\n", + " if values[x, y] < low_band * center:\n", + " result[x, y] = low_color\n", + " elif values[x, y] > high_band * center:\n", + " result[x, y] = high_color\n", + " else:\n", + " result[x, y] = mid_color\n", + " return result" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 28 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "To test this function,\n", + "we'll run it with the settings we just used:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "h = make_heatmap(flipped, colors['Orchid'], colors['Fuchsia'], colors['HotPink'], 0.8, 1.2, 5)\n", + "h.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "That seems right,\n", + "so let's widen the band and use more dramatic colors:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "h = make_heatmap(flipped, colors['Gray'], colors['YellowGreen'], colors['SpringGreen'], 0.5, 1.5, 5)\n", + "h.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We'll probably want to experiment a bit more before publishing,\n", + "but writing a function has made experimenting easy.\n", + "We can make it even easier by re-defining our function one more time\n", + "to give the parameters default values.\n", + "While we're at it,\n", + "let's put the low and high bands at the front,\n", + "since they're more likely to change than our color choices:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def make_heatmap(values,\n", + " low_band=0.5, high_band=1.5,\n", + " low_color=colors['Gray'], mid_color=colors['YellowGreen'], high_color=colors['SpringGreen'],\n", + " block_size=5):\n", + " '''Make a 3-colored heatmap from a 2D array of data.\n", + " Default color scheme is gray to green.'''\n", + " width, height = values.shape\n", + " result = ImageGrid(width, height, block_size=block_size)\n", + " center = values.mean()\n", + " for x in range(width):\n", + " for y in range(height):\n", + " if values[x, y] < low_band * center:\n", + " result[x, y] = low_color\n", + " elif values[x, y] > high_band * center:\n", + " result[x, y] = high_color\n", + " else:\n", + " result[x, y] = mid_color\n", + " return result" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 31 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Once default values are added,\n", + "the function's first line is too long to fit comfortably on our screen.\n", + "Rather than breaking it wherever it hits the right edge of the screen,\n", + "we have divided the parameters into logical groups to make it more readable.\n", + "\n", + "Again,\n", + "our first test is to re-run it with the same values as before\n", + "(which we give it in a different order,\n", + "since we've changed the order of parameters):" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "h = make_heatmap(flipped, 0.5, 1.5, colors['Gray'], colors['YellowGreen'], colors['SpringGreen'], 5)\n", + "h.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 32 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can now leave out everything except the data being visualized,\n", + "or provide the data and the bands\n", + "and re-use the default colors and block size:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "h = make_heatmap(flipped, 0.4, 1.6)\n", + "h.show()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "html": [ + "
" + ], + "metadata": {}, + "output_type": "display_data", + "text": [ + "" + ] + } + ], + "prompt_number": 33 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can now explore our data with just a few keystrokes,\n", + "which means we can concentrate on our science\n", + "and not on our programming." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Why did we transpose our data outside our heat map function?\n", + " Why not have the function perform the transpose?\n", + "\n", + "2. Why does the heat map function return the grid rather than displaying it immediately?\n", + " Do you think this is a good or bad design choice?\n", + "\n", + "3. Explain what the overall effect of this code is:\n", + " ~~~\n", + " temp = left\n", + " left = right\n", + " right = temp\n", + " ~~~\n", + " Compare it to:\n", + " ~~~\n", + " left, right = right, left\n", + " ~~~\n", + " Do they always do the same thing?\n", + " Which do you find easier to read?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "keypoints" + ] + }, + "source": [ + "#### Key Points\n", + "\n", + "* Use the `ImageGrid` class from the `ipythonblocks` library to create simple \"images\" made of colored blocks.\n", + "* Specify colors use (red, green, blue) triples, each component of which is an integer in the range 0..255.\n", + "* Use `if condition` to start a conditional statement, `elif condition` to provide additional tests, and `else` to provide a default.\n", + "* The bodies of the branches of conditional statements must be indented.\n", + "* Use `==` to test for equality.\n", + "* `X and Y` is only true if both X and Y are true.\n", + "* `X or Y` is true if either X or Y, or both, are true.\n", + "* Zero, the empty string, and the empty list are considered false; all other numbers, strings, and lists are considered true.\n", + "* Nest loops to operate on multi-dimensional data.\n", + "* Put code whose parameters change frequently in a function, then call it with different parameter values to customize its behavior." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "#### Next Steps\n", + "\n", + "Our final heatmap function is 17 lines long,\n", + "which means that if there's a 95% chance of each line being correct,\n", + "the odds of the whole function being right are only 41%.\n", + "Before we go any further,\n", + "we need to learn how to test whether our code is doing what we want it to do,\n", + "and that will be the subject of the next lesson." + ] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/novice/python/05-defensive.ipynb b/novice/python/05-defensive.ipynb new file mode 100644 index 0000000..7327ee5 --- /dev/null +++ b/novice/python/05-defensive.ipynb @@ -0,0 +1,963 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 2, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Defensive Programming" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Our previous lessons have introduced the basic tools of programming:\n", + "variables and lists,\n", + "file I/O,\n", + "loops,\n", + "conditionals,\n", + "and functions.\n", + "What they *haven't* done is show us how to tell\n", + "whether a program is getting the right answer,\n", + "and how to tell if it's *still* getting the right answer\n", + "as we make changes to it.\n", + "\n", + "To achieve that,\n", + "we need to:\n", + "\n", + "* write programs that check their own operation,\n", + "* write and run tests for widely-used functions, and\n", + "* make sure we know what \"correct\" actually means.\n", + "\n", + "The good news is,\n", + "doing these things will speed up our programming,\n", + "not slow it down.\n", + "As in real carpentry—the kind done with lumber—the time saved\n", + "by measuring carefully before cutting a piece of wood\n", + "is much greater than the time that measuring takes." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "#### Objectives\n", + "\n", + "* Explain what an assertion is.\n", + "* Add assertions to programs that correctly check the program's state.\n", + "* Correctly add precondition and postcondition assertions to functions.\n", + "* Explain what test-driven development is, and use it when creating new functions.\n", + "* Explain why variables should be initialized using actual data values rather than arbitrary constants.\n", + "* Debug code containing an error systematically." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Assertions" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The first step toward getting the right answers from our programs\n", + "is to assume that mistakes *will* happen\n", + "and to guard against them.\n", + "This is called [defensive programming](../../gloss.html#defensive-programming),\n", + "and the most common way to do it is to add [assertions](../../gloss.html#assertion) to our code\n", + "so that it checks itself as it runs.\n", + "An assertion is simply a statement that something must be true at a certain point in a program.\n", + "When Python sees one,\n", + "it checks that the assertion's condition.\n", + "If it's true,\n", + "Python does nothing,\n", + "but if it's false,\n", + "Python halts the program immediately\n", + "and prints the error message provided.\n", + "For example,\n", + "this piece of code halts as soon as the loop encounters a value that isn't positive:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "numbers = [1.5, 2.3, 0.7, -0.001, 4.4]\n", + "total = 0.0\n", + "for n in numbers:\n", + " assert n >= 0.0, 'Data should only contain positive values'\n", + " total += n\n", + "print 'total is:', total" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "Data should only contain positive values", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mtotal\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnumbers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Data should only contain positive values'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0mtotal\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0;34m'total is:'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtotal\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: Data should only contain positive values" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Programs like the Firefox browser are full of assertions:\n", + "10-20% of the code they contain\n", + "are there to check that the other 80-90% are working correctly.\n", + "Broadly speaking,\n", + "assertions fall into three categories:\n", + "\n", + "- A [precondition](../../gloss.html#precondition) is something that must be true\n", + " at the start of a function in order for it to work correctly.\n", + "- A [postcondition](../../gloss.html#postcondition) is something that\n", + " the function guarantees is true when it finishes.\n", + "- An [invariant](../../gloss.html#invariant) is something that is always true\n", + " at a particular point inside a piece of code.\n", + "\n", + "For example,\n", + "suppose we are representing rectangles using a tuple of four coordinates `(x0, y0, x1, y1)`.\n", + "In order to do some calculations,\n", + "we need to normalize the rectangle so that it is at the origin\n", + "and 1.0 units long on its longest axis.\n", + "This function does that,\n", + "but checks that its input is correctly formatted and that its result makes sense:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def normalize_rectangle(rect):\n", + " '''Normalizes a rectangle so that it is at the origin and 1.0 units long on its longest axis.'''\n", + " assert len(rect) == 4, 'Rectangles must contain 4 coordinates'\n", + " x0, y0, x1, y1 = rect\n", + " assert x0 < x1, 'Invalid X coordinates'\n", + " assert y0 < y1, 'Invalid Y coordinates'\n", + "\n", + " dx = x1 - x0\n", + " dy = y1 - y0\n", + " if dx > dy:\n", + " scaled = float(dx) / dy\n", + " upper_x, upper_y = 1.0, scaled\n", + " else:\n", + " scaled = float(dx) / dy\n", + " upper_x, upper_y = scaled, 1.0\n", + "\n", + " assert 0 < upper_x <= 1.0, 'Calculated upper X coordinate invalid'\n", + " assert 0 < upper_y <= 1.0, 'Calculated upper Y coordinate invalid'\n", + "\n", + " return (0, 0, upper_x, upper_y)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The preconditions on lines 2, 4, and 5 catch invalid inputs:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print normalize_rectangle( (0.0, 1.0, 2.0) ) # missing the fourth coordinate" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "Rectangles must contain 4 coordinates", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mnormalize_rectangle\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m)\u001b[0m \u001b[0;31m# missing the fourth coordinate\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mnormalize_rectangle\u001b[0;34m(rect)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mnormalize_rectangle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrect\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m'''Normalizes a rectangle so that it is at the origin and 1.0 units long on its longest axis.'''\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrect\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Rectangles must contain 4 coordinates'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mx0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrect\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mx0\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mx1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Invalid X coordinates'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: Rectangles must contain 4 coordinates" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print normalize_rectangle( (4.0, 2.0, 1.0, 5.0) ) # X axis inverted" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "Invalid X coordinates", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mnormalize_rectangle\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m4.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m5.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m)\u001b[0m \u001b[0;31m# X axis inverted\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mnormalize_rectangle\u001b[0;34m(rect)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrect\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Rectangles must contain 4 coordinates'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mx0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrect\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mx0\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mx1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Invalid X coordinates'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0my0\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0my1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Invalid Y coordinates'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: Invalid X coordinates" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The post-conditions help us catch bugs by telling us when our calculations cannot have been correct.\n", + "For example,\n", + "if we normalize a rectangle that is taller than it is wide everything seems OK:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print normalize_rectangle( (0.0, 0.0, 1.0, 5.0) )" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(0, 0, 0.2, 1.0)\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "but if we normalize one that's wider than it is tall,\n", + "the assertion is triggered:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print normalize_rectangle( (0.0, 0.0, 5.0, 1.0) )" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "Calculated upper Y coordinate invalid", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mnormalize_rectangle\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m5.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mnormalize_rectangle\u001b[0;34m(rect)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mupper_x\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Calculated upper X coordinate invalid'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mupper_y\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Calculated upper Y coordinate invalid'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mupper_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mupper_y\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: Calculated upper Y coordinate invalid" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Re-reading our function,\n", + "we realize that line 10 should divide `dy` by `dx` rather than `dx` by `dy`.\n", + "(You can display line numbers by typing Ctrl-M, then L.)\n", + "If we had left out the assertion at the end of the function,\n", + "we would have created and returned something that had the right shape as a valid answer,\n", + "but wasn't.\n", + "Detecting and debugging that would almost certainly have taken more time in the long run\n", + "than writing the assertion.\n", + "\n", + "But assertions aren't just about catching errors:\n", + "they also help people understand programs.\n", + "Each assertion gives the person reading the program\n", + "a chance to check (consciously or otherwise)\n", + "that their understanding matches what the code is doing.\n", + "\n", + "Most good programmers follow two rules when adding assertions to their code.\n", + "The first is, \"[fail early, fail often](../../rules.html#fail-early-fail-often)\".\n", + "The greater the distance between when and where an error occurs and when it's noticed,\n", + "the harder the error will be to debug,\n", + "so good code catches mistakes as early as possible.\n", + "\n", + "The second rule is, \"[turn bugs into assertions or tests](../../rules.html#turn-bugs-into-assertions-or-tests)\".\n", + "If you made a mistake in a piece of code,\n", + "the odds are good that you have made other mistakes nearby,\n", + "or will make the same mistake (or a related one)\n", + "the next time you change it.\n", + "Writing assertions to check that you haven't [regressed](../../gloss.html#regression)\n", + "(i.e., haven't re-introduced an old problem)\n", + "can save a lot of time in the long run,\n", + "and helps to warn people who are reading the code\n", + "(including your future self)\n", + "that this bit is tricky." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Suppose you are writing a function called `average` that calculates the average of the numbers in a list.\n", + " What pre-conditions and post-conditions would you write for it?\n", + " Compare your answer to your neighbor's:\n", + " can you think of a function that will past your tests but not hers or vice versa?\n", + "\n", + "2. Explain in words what the assertions in this code check,\n", + " and for each one,\n", + " give an example of input that will make that assertion fail.\n", + " \n", + " ~~~\n", + " def running(values):\n", + " assert len(values) > 0\n", + " result = [values[0]]\n", + " for v in values[1:]:\n", + " assert result[-1] >= 0\n", + " result.append(result[-1] + v)\n", + " assert result[-1] >= result[0]\n", + " return result\n", + " ~~~" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Test-Driven Development" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "An assertion checks that something is true at a particular point in the program.\n", + "The next step is to check the overall behavior of a piece of code,\n", + "i.e.,\n", + "to make sure that it produces the right output when it's given a particular input.\n", + "For example,\n", + "suppose we need to find where two or more time series overlap.\n", + "The range of each time series is represented as a pair of numbers,\n", + "which are the time the interval started and ended.\n", + "The output is the largest range that they all include:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "\"Overlapping" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Most novice programmers would solve this problem like this:\n", + "\n", + "1. Write a function `range_overlap`.\n", + "2. Call it interactively on two or three different inputs.\n", + "3. If it produces the wrong answer, fix the function and re-run that test.\n", + "\n", + "This clearly works—after all, thousands of scientists are doing it right now—but\n", + "there's a better way:\n", + "\n", + "1. Write a short function for each test.\n", + "2. Write a `range_overlap` function that should pass those tests.\n", + "3. If `range_overlap` produces any wrong answers, fix it and re-run the test functions.\n", + "\n", + "Writing the tests *before* writing the function they exercise\n", + "is called [test-driven development](../../gloss.html#test-driven-development) (TDD).\n", + "Its advocates believe it produces better code faster because:\n", + "\n", + "1. If people write tests after writing the thing to be tested,\n", + " they are subject to confirmation bias,\n", + " i.e.,\n", + " they subconsciously write tests to show that their code is correct,\n", + " rather than to find errors.\n", + "2. Writing tests helps programmers figure out what the function is actually supposed to do.\n", + "\n", + "Here are three test functions for `range_overlap`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "assert range_overlap([ (0.0, 1.0) ]) == (0.0, 1.0)\n", + "assert range_overlap([ (0.0, 1.0), (0.0, 2.0) ]) == (0.0, 1.0)\n", + "assert range_overlap([ (0.0, 1.0), (0.0, 2.0), (-1.0, 1.0) ]) == (0.0, 1.0)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The error is actually reassuring:\n", + "we haven't written `range_overlap` yet,\n", + "so if the tests passed,\n", + "it would be a sign that someone else had\n", + "and that we were accidentally using their function.\n", + "\n", + "And as a bonus of writing these tests,\n", + "we've implicitly defined what our input and output look like:\n", + "we expect a list of pairs as input,\n", + "and produce a single pair as output.\n", + "\n", + "Something important is missing, though.\n", + "We don't have any tests for the case where the ranges don't overlap at all:\n", + "\n", + "~~~\n", + "assert range_overlap([ (0.0, 1.0), (5.0, 6.0) ]) == ???\n", + "~~~\n", + "\n", + "What should `range_overlap` do in this case:\n", + "fail with an error message,\n", + "produce a special value like `(0.0, 0.0)` to signal that there's no overlap,\n", + "or something else?\n", + "Any actual implementation of the function will do one of these things;\n", + "writing the tests first helps us figure out which is best\n", + "*before* we're emotionally invested in whatever we happened to write\n", + "before we realized there was an issue.\n", + "\n", + "And what about this case?\n", + "\n", + "~~~\n", + "assert range_overlap([ (0.0, 1.0), (1.0, 2.0) ]) == ???\n", + "~~~\n", + "\n", + "Do two segments that touch at their endpoints overlap or not?\n", + "Mathematicians usually say \"yes\",\n", + "but engineers usually say \"no\".\n", + "The best answer is \"whatever is most useful in the rest of our program\",\n", + "but again,\n", + "any actual implementation of `range_overlap` is going to do *something*,\n", + "and whatever it is ought to be consistent with what it does when there's no overlap at all.\n", + "\n", + "Since we're planning to use the range this function returns\n", + "as the X axis in a time series chart,\n", + "we decide that:\n", + "\n", + "1. every overlap has to have non-zero width, and\n", + "2. we will return the special value `None` when there's no overlap.\n", + "\n", + "`None` is built into Python,\n", + "and means \"nothing here\".\n", + "(Other languages often call the equivalent value `null` or `nil`).\n", + "With that decision made,\n", + "we can finish writing our last two tests:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "assert range_overlap([ (0.0, 1.0), (5.0, 6.0) ]) == None\n", + "assert range_overlap([ (0.0, 1.0), (1.0, 2.0) ]) == None" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mrange_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m5.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mrange_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: " + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Again,\n", + "we get an error because we haven't written our function,\n", + "but we're now ready to do so:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def range_overlap(ranges):\n", + " '''Return common overlap among a set of [low, high] ranges.'''\n", + " lowest = 0.0\n", + " highest = 1.0\n", + " for (low, high) in ranges:\n", + " lowest = max(lowest, low)\n", + " highest = min(highest, high)\n", + " return (lowest, highest)" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "(Take a moment to think about why we use `max` to raise `lowest`\n", + "and `min` to lower `highest`.)\n", + "We'd now like to re-run our tests,\n", + "but they're scattered across three different cells.\n", + "To make running them easier,\n", + "let's put them all in a function:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def test_range_overlap():\n", + " assert range_overlap([ (0.0, 1.0) ]) == (0.0, 1.0)\n", + " assert range_overlap([ (0.0, 1.0), (0.0, 2.0) ]) == (0.0, 1.0)\n", + " assert range_overlap([ (0.0, 1.0), (0.0, 2.0), (-1.0, 1.0) ]) == (0.0, 1.0)\n", + " assert range_overlap([ (0.0, 1.0), (5.0, 6.0) ]) == None\n", + " assert range_overlap([ (0.0, 1.0), (1.0, 2.0) ]) == None" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "We can now test `range_overlap` with a single function call:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "test_range_overlap()" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "", + "output_type": "pyerr", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtest_range_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mtest_range_overlap\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mrange_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mrange_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mrange_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m5.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mrange_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: " + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The first of the tests that was supposed to produce `None` fails,\n", + "so we know there's something wrong with our function.\n", + "What we *don't* know,\n", + "though,\n", + "is whether the last of our five tests passed or failed,\n", + "because Python halted the program as soon as it spotted the first error.\n", + "Still,\n", + "some information is better than none,\n", + "and if we trace the behavior of the function with that input,\n", + "we realize that we're initializing `lowest` and `highest` to 0.0 and 1.0 respectively,\n", + "regardless of the input values.\n", + "This violates another important rule of programming:\n", + "\"[always initialize from data](../../rules.html#always-initialize-from-data)\".\n", + "We'll leave it as an exercise to fix `range_overlap`." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Fix `range_overlap`. Re-run `test_range_overlap` after each change you make." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Debugging" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Once testing has uncovered problems,\n", + "the next step is to fix them.\n", + "Many novices do this by making more-or-less random changes to their code\n", + "until it seems to produce the right answer,\n", + "but that's very inefficient\n", + "(and the result is usually only correct for the one case they're testing).\n", + "The more experienced a programmer is,\n", + "the more systematically they debug,\n", + "and most follow some variation on the rules explained below.\n", + "\n", + "#### Know What It's Supposed to Do\n", + "\n", + "The first step in debugging something is to\n", + "[know what it's supposed to do](../../rules.html#know-what-its-supposed-to-do).\n", + "\"My program doesn't work\" isn't good enough:\n", + "in order to diagnose and fix problems,\n", + "we need to be able to tell correct output from incorrect.\n", + "If we can write a test case for the failing case—i.e.,\n", + "if we can assert that with *these* inputs,\n", + "the function should produce *that* result—\n", + "then we're ready to start debugging.\n", + "If we can't,\n", + "then we need to figure out how we're going to know when we've fixed things.\n", + "\n", + "But writing test cases for scientific software is frequently harder than\n", + "writing test cases for commercial applications,\n", + "because if we knew what the output of the scientific code was supposed to be,\n", + "we wouldn't be running the software:\n", + "we'd be writing up our results and moving on to the next program.\n", + "In practice,\n", + "scientists tend to do the following:\n", + "\n", + "1. *Test with simplified data.*\n", + " Before doing statistics on a real data set,\n", + " we should try calculating statistics for a single record,\n", + " for two identical records,\n", + " for two records whose values are one step apart,\n", + " or for some other case where we can calculate the right answer by hand.\n", + "\n", + "2. *Test a simplified case.*\n", + " If our program is supposed to simulate\n", + " magnetic eddies in rapidly-rotating blobs of supercooled helium,\n", + " our first test should be a blob of helium that isn't rotating,\n", + " and isn't being subjected to any external electromagnetic fields.\n", + " Similarly,\n", + " if we're looking at the effects of climate change on speciation,\n", + " our first test should hold temperature, precipitation, and other factors constant.\n", + "\n", + "3. *Compare to an oracle.*\n", + " A [test oracle](../../gloss.html#test-oracle) is something—experimental data,\n", + " an older program whose results are trusted,\n", + " or even a human expert—against which we can compare the results of our new program.\n", + " If we have a test oracle,\n", + " we should store its output for particular cases\n", + " so that we can compare it with our new results as often as we like\n", + " without re-running that program.\n", + "\n", + "4. *Check conservation laws.*\n", + " Mass, energy, and other quantitites are conserved in physical systems,\n", + " so they should be in programs as well.\n", + " Similarly,\n", + " if we are analyzing patient data,\n", + " the number of records should either stay the same or decrease\n", + " as we move from one analysis to the next\n", + " (since we might throw away outliers or records with missing values).\n", + " If \"new\" patients start appearing out of nowhere as we move through our pipeline,\n", + " it's probably a sign that something is wrong.\n", + "\n", + "5. *Visualize.*\n", + " Data analysts frequently use simple visualizations to check both\n", + " the science they're doing\n", + " and the correctness of their code\n", + " (just as we did in the [opening lesson](01-numpy.html) of this tutorial).\n", + " This should only be used for debugging as a last resort,\n", + " though,\n", + " since it's very hard to compare two visualizations automatically.\n", + "\n", + "#### Make It Fail Every Time\n", + "\n", + "We can only debug something when it fails,\n", + "so the second step is always to find a test case that\n", + "[makes it fail every time](../../rules.html#make-it-fail-every-time).\n", + "The \"every time\" part is important because\n", + "few things are more frustrating than debugging an intermittent problem:\n", + "if we have to call a function a dozen times to get a single failure,\n", + "the odds are good that we'll scroll past the failure when it actually occurs.\n", + "\n", + "As part of this,\n", + "it's always important to check that our code is \"plugged in\",\n", + "i.e.,\n", + "that we're actually exercising the problem that we think we are.\n", + "Every programmer has spent hours chasing a bug,\n", + "only to realize that they were actually calling their code on the wrong data set\n", + "or with the wrong configuration parameters,\n", + "or are using the wrong version of the software entirely.\n", + "Mistakes like these are particularly likely to happen when we're tired,\n", + "frustrated,\n", + "and up against a deadline,\n", + "which is one of the reasons late-night (or overnight) coding sessions\n", + "are almost never worthwhile.\n", + "\n", + "#### Make It Fail Fast\n", + "\n", + "If it takes 20 minutes for the bug to surface,\n", + "we can only do three experiments an hour.\n", + "That doesn't must mean we'll get less data in more time:\n", + "we're also more likely to be distracted by other things as we wait for our program to fail,\n", + "which means the time we *are* spending on the problem is less focused.\n", + "It's therefore critical to [make it fail fast](../../rules.html#make-it-fail-fast).\n", + "\n", + "As well as making the program fail fast in time,\n", + "we want to make it fail fast in space,\n", + "i.e.,\n", + "we want to localize the failure to the smallest possible region of code:\n", + "\n", + "1. The smaller the gap between cause and effect,\n", + " the easier the connection is to find.\n", + " Many programmers therefore use a divide and conquer strategy to find bugs,\n", + " i.e.,\n", + " if the output of a function is wrong,\n", + " they check whether things are OK in the middle,\n", + " then concentrate on either the first or second half,\n", + " and so on.\n", + "\n", + "2. N things can interact in N2/2 different ways,\n", + " so every line of code that *isn't* run as part of a test\n", + " means more than one thing we don't need to worry about.\n", + "\n", + "#### Change One Thing at a Time, For a Reason\n", + "\n", + "Replacing random chunks of code is unlikely to do much good.\n", + "(After all,\n", + "if you got it wrong the first time,\n", + "you'll probably get it wrong the second and third as well.)\n", + "Good programmers therefore\n", + "[change one thing at a time, for a reason](../../rules.html#change-one-thing-at-a-time)\n", + "They are either trying to gather more information\n", + "(\"is the bug still there if we change the order of the loops?\")\n", + "or test a fix\n", + "(\"can we make the bug go away by sorting our data before processing it?\").\n", + " \n", + "Every time we make a change,\n", + "however small,\n", + "we should re-run our tests immediately,\n", + "because the more things we change at once,\n", + "the harder it is to know what's responsible for what\n", + "(those N2 interactions again).\n", + "And we should re-run *all* of our tests:\n", + "more than half of fixes made to code introduce (or re-introduce) bugs,\n", + "so re-running all of our tests tells us whether we have [regressed](../../gloss.html#regression).\n", + "\n", + "#### Keep Track of What You've Done\n", + "\n", + "Good scientists keep track of what they've done\n", + "so that they can reproduce their work,\n", + "and so that they don't waste time repeating the same experiments\n", + "or running ones whose results won't be interesting.\n", + "Similarly,\n", + "debugging works best when we\n", + "[keep track of what we've done](../../rules.html#keep-track-of-what-youve-done)\n", + "and how well it worked.\n", + "If we find ourselves asking,\n", + "\"Did left followed by right with an odd number of lines cause the crash?\n", + "Or was it right followed by left?\n", + "Or was I using an even number of lines?\"\n", + "then it's time to step away from the computer,\n", + "take a deep breath,\n", + "and start working more systematically.\n", + " \n", + "Records are particularly useful when the time comes to ask for help.\n", + "People are more likely to listen to us\n", + "when we can explain clearly what we did,\n", + "and we're better able to give them the information they need to be useful.\n", + "\n", + "> #### Version Control Revisited\n", + ">\n", + "> Version control is often used to reset software to a known state during debugging,\n", + "> and to explore recent changes to code that might be responsible for bugs.\n", + "> In particular,\n", + "> most version control systems have a `blame` command\n", + "> that will show who last changed particular lines of code...\n", + "\n", + "#### Be Humble\n", + "\n", + "And speaking of help:\n", + "if we can't find a bug in 10 minutes,\n", + "we should [be humble](../../rules.html#be-humble) and ask for help.\n", + "Just explaining the problem aloud is often useful,\n", + "since hearing what we're thinking helps us spot inconsistencies and hidden assumptions.\n", + "\n", + "Asking for help also helps alleviate confirmation bias.\n", + "If we have just spent an hour writing a complicated program,\n", + "we want it to work,\n", + "so we're likely to keep telling ourselves why it should,\n", + "rather than searching for the reason it doesn't.\n", + "People who aren't emotionally invested in the code can be more objective,\n", + "which is why they're often able to spot the simple mistakes we have overlooked.\n", + "\n", + "Part of being humble is learning from our mistakes.\n", + "Programmers tend to get the same things wrong over and over:\n", + "either they don't understand the language and libraries they're working with,\n", + "or their model of how things work is wrong.\n", + "In either case,\n", + "taking note of why the error occurred\n", + "and checking for it next time\n", + "quickly turns into not making the mistake at all.\n", + "\n", + "And that is what makes us most productive in the long run.\n", + "As the saying goes,\n", + "\"[A week of hard work can sometimes save you an hour of thought](../../rules.html#week-hard-work-hour-thought).\"\n", + "If we train ourselves to avoid making some kinds of mistakes,\n", + "to break our code into modular, testable chunks,\n", + "and to turn every assumption (or mistake) into an assertion,\n", + "it will actually take us *less* time to produce working programs,\n", + "not more." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "keypoints" + ] + }, + "source": [ + "#### Key Points\n", + "\n", + "* Program defensively, i.e., assume that errors are going to arise, and write code to detect them when they do.\n", + "* Put assertions in programs to check their state as they run, and to help readers understand how those programs are supposed to work.\n", + "* Use preconditions to check that the inputs to a function are safe to use.\n", + "* Use postconditions to check that the output from a function is safe to use.\n", + "* Write tests before writing code in order to help determine exactly what that code is supposed to do.\n", + "* Know what code is supposed to do *before* trying to debug it.\n", + "* Make it fail every time.\n", + "* Make it fail fast.\n", + "* Change one thing at a time, and for a reason.\n", + "* Keep track of what you've done.\n", + "* Be humble." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "#### Next Steps\n", + "\n", + "We have now seen the basics of building and testing Python code in the IPython Notebook.\n", + "The last thing we need to learn is how to build command-line programs\n", + "that we can use in pipelines and shell scripts,\n", + "so that we can integrate our tools with other people's work.\n", + "This will be the subject of our next and final lesson." + ] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/novice/python/06-cmdline.ipynb b/novice/python/06-cmdline.ipynb new file mode 100644 index 0000000..981ce92 --- /dev/null +++ b/novice/python/06-cmdline.ipynb @@ -0,0 +1,1275 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 2, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Command-Line Programs" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The IPython Notebook and other interactive tools are great for prototyping code and exploring data,\n", + "but sooner or later we will want to use our program in a pipeline\n", + "or run it in a shell script to process thousands of data files.\n", + "In order to do that,\n", + "we need to make our programs work like other Unix command-line tools.\n", + "For example,\n", + "we may want a program that reads a data set\n", + "and prints the average inflammation per patient:\n", + "\n", + "~~~\n", + "$ python readings.py --mean inflammation-01.csv\n", + "5.45\n", + "5.425\n", + "6.1\n", + "...\n", + "6.4\n", + "7.05\n", + "5.9\n", + "~~~\n", + "\n", + "but we might also want to look at the minimum of the first four lines\n", + "\n", + "~~~\n", + "$ head -4 inflammation-01.csv | python readings.py --min\n", + "~~~\n", + "\n", + "or the maximum inflammations in several files one after another:\n", + "\n", + "~~~\n", + "$ python readings.py --max inflammation-*.csv\n", + "~~~\n", + "\n", + "Our overall requirements are:\n", + "\n", + "1. If no filename is given on the command line, read data from [standard input](../../gloss.html#standard-input).\n", + "2. If one or more filenames are given, read data from them and report statistics for each file separately.\n", + "3. Use the `--min`, `--mean`, or `--max` flag to determine what statistic to print.\n", + "\n", + "To make this work,\n", + "we need to know how to handle command-line arguments in a program,\n", + "and how to get at standard input.\n", + "We'll tackle these questions in turn below." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "objectives" + ] + }, + "source": [ + "#### Objectives\n", + "\n", + "* Use the values of command-line arguments in a program.\n", + "* Handle flags and files separately in a command-line program.\n", + "* Read data from standard input in a program so that it can be used in a pipeline." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Command-Line Arguments" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Using the text editor of your choice,\n", + "save the following in a text file:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!cat sys-version.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "import sys\r\n", + "print 'version is', sys.version\r\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The first line imports a library called `sys`,\n", + "which is short for \"system\".\n", + "It defines values such as `sys.version`,\n", + "which describes which version of Python we are running.\n", + "We can run this script from within the IPython Notebook like this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%run sys-version.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "version is 2.7.5 |Anaconda 1.8.0 (x86_64)| (default, Oct 24 2013, 07:02:20) \n", + "[GCC 4.0.1 (Apple Inc. build 5493)]\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "or like this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!ipython sys-version.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "version is 2.7.5 |Anaconda 1.8.0 (x86_64)| (default, Oct 24 2013, 07:02:20) \r\n", + "[GCC 4.0.1 (Apple Inc. build 5493)]\r\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The first method, `%run`,\n", + "uses a special command in the IPython Notebook to run a program in a `.py` file.\n", + "The second method is more general:\n", + "the exclamation mark `!` tells the Notebook to run a shell command,\n", + "and it just so happens that the command we run is `ipython` with the name of the script." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Here's another script that does something more interesting:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!cat argv-list.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "import sys\r\n", + "print 'sys.argv is', sys.argv\r\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The strange name `argv` stands for \"argument values\".\n", + "Whenever Python runs a program,\n", + "it takes all of the values given on the command line\n", + "and puts them in the list `sys.argv`\n", + "so that the program can determine what they were.\n", + "If we run this program with no arguments:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!ipython argv-list.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "sys.argv is ['/Users/gwilson/s/bc/python/novice/argv-list.py']\r\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "the only thing in the list is the full path to our script,\n", + "which is always `sys.argv[0]`.\n", + "If we run it with a few arguments, however:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!ipython argv-list.py first second third" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "sys.argv is ['/Users/gwilson/s/bc/python/novice/argv-list.py', 'first', 'second', 'third']\r\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "then Python adds each of those arguments to that magic list." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "With this in hand,\n", + "let's build a version of `readings.py` that always prints the per-patient mean of a single data file.\n", + "The first step is to write a function that outlines our implementation,\n", + "and a placeholder for the function that does the actual work.\n", + "By convention this function is usually called `main`,\n", + "though we can call it whatever we want:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!cat readings-01.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "import sys\r\n", + "import numpy as np\r\n", + "\r\n", + "def main():\r\n", + " script = sys.argv[0]\r\n", + " filename = sys.argv[1]\r\n", + " data = np.loadtxt(filename, delimiter=',')\r\n", + " for m in data.mean(axis=1):\r\n", + " print m\r\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This function gets the name of the script from `sys.argv[0]`,\n", + "because that's where it's always put,\n", + "and the name of the file to process from `sys.argv[1]`.\n", + "Here's a simple test:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%run readings-01.py inflammation-01.csv" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "There is no output because we have defined a function,\n", + "but haven't actually called it.\n", + "Let's add a call to `main`:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!cat readings-02.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "import sys\r\n", + "import numpy as np\r\n", + "\r\n", + "def main():\r\n", + " script = sys.argv[0]\r\n", + " filename = sys.argv[1]\r\n", + " data = np.loadtxt(filename, delimiter=',')\r\n", + " for m in data.mean(axis=1):\r\n", + " print m\r\n", + "\r\n", + "main()\r\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "and run that:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%run readings-02.py inflammation-01.csv" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "5.45\n", + "5.425\n", + "6.1\n", + "5.9\n", + "5.55\n", + "6.225\n", + "5.975\n", + "6.65\n", + "6.625\n", + "6.525\n", + "6.775\n", + "5.8\n", + "6.225\n", + "5.75\n", + "5.225\n", + "6.3\n", + "6.55\n", + "5.7\n", + "5.85\n", + "6.55\n", + "5.775\n", + "5.825\n", + "6.175\n", + "6.1\n", + "5.8\n", + "6.425\n", + "6.05\n", + "6.025\n", + "6.175\n", + "6.55\n", + "6.175\n", + "6.35\n", + "6.725\n", + "6.125\n", + "7.075\n", + "5.725\n", + "5.925\n", + "6.15\n", + "6.075\n", + "5.75\n", + "5.975\n", + "5.725\n", + "6.3\n", + "5.9\n", + "6.75\n", + "5.925\n", + "7.225\n", + "6.15\n", + "5.95\n", + "6.275\n", + "5.7\n", + "6.1\n", + "6.825\n", + "5.975\n", + "6.725\n", + "5.7\n", + "6.25\n", + "6.4\n", + "7.05\n", + "5.9\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> #### The Right Way to Do It\n", + ">\n", + "> If our programs can take complex parameters or multiple filenames,\n", + "> we shouldn't handle `sys.argv` directly.\n", + "> Instead,\n", + "> we should use Python's `argparse` library,\n", + "> which handles common cases in a systematic way,\n", + "> and also makes it easy for us to provide sensible error messages for our users." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Write a command-line program that does addition and subtraction:\n", + " ~~~\n", + " python arith.py 1 + 2\n", + " 3\n", + " python arith.py 3 - 4\n", + " -1\n", + " ~~~\n", + "\n", + " What goes wrong if you try to add multiplication using '*' to the program?\n", + "\n", + "2. Using the `glob` module introduced [03-loop.ipynb](earlier),\n", + " write a simple version of `ls` that shows files in the current directory with a particular suffix:\n", + " ~~~\n", + " python my_ls.py py\n", + " left.py\n", + " right.py\n", + " zero.py\n", + " ~~~" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Handling Multiple Files" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The next step is to teach our program how to handle multiple files.\n", + "Since 60 lines of output per file is a lot to page through,\n", + "we'll start by creating three smaller files,\n", + "each of which has three days of data for two patients:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!ls small-*.csv" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "small-01.csv small-02.csv small-03.csv\r\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!cat small-01.csv" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0,0,1\r\n", + "0,1,2\r\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%run readings-02.py small-01.csv" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.333333333333\n", + "1.0\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Using small data files as input also allows us to check our results more easily:\n", + "here,\n", + "for example,\n", + "we can see that our program is calculating the mean correctly for each line,\n", + "whereas we were really taking it on faith before.\n", + "This is yet another rule of programming:\n", + "\"[test the simple things first](../../rules.html#test-simple-first)\".\n", + "\n", + "We want our program to process each file separately,\n", + "so we need a looop that executes once for each filename.\n", + "If we specify the files on the command line,\n", + "the filenames will be in `sys.argv`,\n", + "but we need to be careful:\n", + "`sys.argv[0]` will always be the name of our script,\n", + "rather than the name of a file.\n", + "We also need to handle an unknown number of filenames,\n", + "since our program could be run for any number of files.\n", + "\n", + "The solution to both problems is to loop over the contents of `sys.argv[1:]`.\n", + "The '1' tells Python to start the slice at location 1,\n", + "so the program's name isn't included;\n", + "since we've left off the upper bound,\n", + "the slice runs to the end of the list,\n", + "and includes all the filenames.\n", + "Here's our changed program:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!cat readings-03.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "import sys\r\n", + "import numpy as np\r\n", + "\r\n", + "def main():\r\n", + " script = sys.argv[0]\r\n", + " for filename in sys.argv[1:]:\r\n", + " data = np.loadtxt(filename, delimiter=',')\r\n", + " for m in data.mean(axis=1):\r\n", + " print m\r\n", + "\r\n", + "main()\r\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "and here it is in action:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%run readings-03.py small-01.csv small-02.csv" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.333333333333\n", + "1.0\n", + "13.6666666667\n", + "11.0\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Note:\n", + "at this point,\n", + "we have created three versions of our script called `readings-01.py`,\n", + "`readings-02.py`, and `readings-03.py`.\n", + "We wouldn't do this in real life:\n", + "instead,\n", + "we would have one file called `readings.py` that we committed to version control\n", + "every time we got an enhancement working.\n", + "For teaching,\n", + "though,\n", + "we need all the successive versions side by side." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Write a program called `check.py` that takes the names of one or more inflammation data files as arguments\n", + " and checks that all the files have the same number of rows and columns.\n", + " What is the best way to test your program?" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Handling Command-Line Flags" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The next step is to teach our program to pay attention to the `--min`, `--mean`, and `--max` flags.\n", + "These always appear before the names of the files,\n", + "so we could just do this:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!cat readings-04.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "import sys\r\n", + "import numpy as np\r\n", + "\r\n", + "def main():\r\n", + " script = sys.argv[0]\r\n", + " action = sys.argv[1]\r\n", + " filenames = sys.argv[2:]\r\n", + "\r\n", + " for f in filenames:\r\n", + " data = np.loadtxt(f, delimiter=',')\r\n", + "\r\n", + " if action == '--min':\r\n", + " values = data.min(axis=1)\r\n", + " elif action == '--mean':\r\n", + " values = data.mean(axis=1)\r\n", + " elif action == '--max':\r\n", + " values = data.max(axis=1)\r\n", + "\r\n", + " for m in values:\r\n", + " print m\r\n", + "\r\n", + "main()\r\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This works:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%run readings-04.py --max small-01.csv" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1.0\n", + "2.0\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "but there are seveal things wrong with it:\n", + "\n", + "1. `main` is too large to read comfortably.\n", + "\n", + "2. If `action` isn't one of the three recognized flags,\n", + " the program loads each file but does nothing with it\n", + " (because none of the branches in the conditional match).\n", + " [Silent failures](../../gloss.html#silent-failure) like this\n", + " are always hard to debug.\n", + "\n", + "This version pulls the processing of each file out of the loop into a function of its own.\n", + "It also checks that `action` is one of the allowed flags\n", + "before doing any processing,\n", + "so that the program fails fast:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!cat readings-05.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "import sys\r\n", + "import numpy as np\r\n", + "\r\n", + "def main():\r\n", + " script = sys.argv[0]\r\n", + " action = sys.argv[1]\r\n", + " filenames = sys.argv[2:]\r\n", + " assert action in ['--min', '--mean', '--max'], \\\r\n", + " 'Action is not one of --min, --mean, or --max: ' + action\r\n", + " for f in filenames:\r\n", + " process(f, action)\r\n", + "\r\n", + "def process(filename, action):\r\n", + " data = np.loadtxt(filename, delimiter=',')\r\n", + "\r\n", + " if action == '--min':\r\n", + " values = data.min(axis=1)\r\n", + " elif action == '--mean':\r\n", + " values = data.mean(axis=1)\r\n", + " elif action == '--max':\r\n", + " values = data.max(axis=1)\r\n", + "\r\n", + " for m in values:\r\n", + " print m\r\n", + "\r\n", + "main()\r\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This is four lines longer than its predecessor,\n", + "but broken into more digestible chunks of 8 and 12 lines." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Python has a module named [argparse](http://docs.python.org/dev/library/argparse.html)\n", + "that helps handle complex command-line flags. We will not cover this module in this lesson\n", + "but you can go to Tshepang Lekhonkhobe's [Argparse tutorial](http://docs.python.org/dev/howto/argparse.html)\n", + "that is part of Python's Official Documentation." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Rewrite this program so that it uses `-n`, `-m`, and `-x` instead of `--min`, `--mean`, and `--max` respectively.\n", + " Is the code easier to read?\n", + " Is the program easier to understand?\n", + "\n", + "2. Separately,\n", + " modify the program so that if no parameters are given\n", + " (i.e., no action is specified and no filenames are given),\n", + " it prints a message explaining how it should be used.\n", + "\n", + "3. Separately,\n", + " modify the program so that if no action is given\n", + " it displays the means of the data." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "cell_tags": [] + }, + "source": [ + "Handling Standard Input" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "The next thing our program has to do is read data from standard input if no filenames are given\n", + "so that we can put it in a pipeline,\n", + "redirect input to it,\n", + "and so on.\n", + "Let's experiment in another script:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!cat count-stdin.py" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "import sys\r\n", + "\r\n", + "count = 0\r\n", + "for line in sys.stdin:\r\n", + " count += 1\r\n", + "\r\n", + "print count, 'lines in standard input'\r\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "This little program reads lines from a special \"file\" called `sys.stdin`,\n", + "which is automatically connected to the program's standard input.\n", + "We don't have to open it—Python and the operating system\n", + "take care of that when the program starts up—\n", + "but we can do almost anything with it that we could do to a regular file.\n", + "Let's try running it as if it were a regular command-line program:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!ipython count-stdin.py < small-01.csv" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2 lines in standard input\r\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "What if we run it using `%run`?" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%run count-stdin.py < fractal_1.txt" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 lines in standard input\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "As you can see,\n", + "`%run` doesn't understand file redirection:\n", + "that's a shell thing.\n", + "\n", + "A common mistake is to try to run something that reads from standard input like this:\n", + "\n", + "~~~\n", + "!ipython count_stdin.py fractal_1.txt\n", + "~~~\n", + "\n", + "i.e., to forget the `<` character that redirect the file to standard input.\n", + "In this case,\n", + "there's nothing in standard input,\n", + "so the program waits at the start of the loop for someone to type something on the keyboard.\n", + "Since there's no way for us to do this,\n", + "our program is stuck,\n", + "and we have to halt it using the `Interrupt` option from the `Kernel` menu in the Notebook.\n", + "\n", + "We now need to rewrite the program so that it loads data from `sys.stdin` if no filenames are provided.\n", + "Luckily,\n", + "`numpy.loadtxt` can handle either a filename or an open file as its first parameter,\n", + "so we don't actually need to change `process`.\n", + "That leaves `main`:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "~~~\n", + "def main():\n", + " script = sys.argv[0]\n", + " action = sys.argv[1]\n", + " filenames = sys.argv[2:]\n", + " assert action in ['--min', '--mean', '--max'], \\\n", + " 'Action is not one of --min, --mean, or --max: ' + action\n", + " if len(filenames) == 0:\n", + " process(sys.stdin, action)\n", + " else:\n", + " for f in filenames:\n", + " process(f, action)\n", + "~~~" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Let's try it out\n", + "(we'll see in a moment why we send the output through `head`):" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!ipython readings-06.py --mean < small-01.csv | head -10" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[TerminalIPythonApp] CRITICAL | Bad config encountered during initialization:\r\n", + "[TerminalIPythonApp] CRITICAL | Unrecognized flag: '--mean'\r\n", + "=========\r\n", + " IPython\r\n", + "=========\r\n", + "\r\n", + "Tools for Interactive Computing in Python\r\n", + "=========================================\r\n", + "\r\n", + " A Python shell with automatic history (input and output), dynamic object\r\n", + " introspection, easier configuration, command completion, access to the\r\n", + " system shell and more. IPython can also be embedded in running programs.\r\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "Whoops:\n", + "why are we getting IPython's help rather than the line-by-line average of our data?\n", + "The answer is that IPython has a hard time telling\n", + "which command-line arguments are meant for it,\n", + "and which are meant for the program it's running.\n", + "To make our meaning clear,\n", + "we have to use `--` (a double dash)\n", + "to separate the two:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "!ipython readings-06.py -- --mean < small-01.csv" + ], + "language": "python", + "metadata": { + "cell_tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.333333333333\r\n", + "1.0\r\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [] + }, + "source": [ + "That's better.\n", + "In fact,\n", + "that's done:\n", + "the program now does everything we set out to do." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "challenges" + ] + }, + "source": [ + "#### Challenges\n", + "\n", + "1. Write a program called `line-count.py` that works like the Unix `wc` command:\n", + " * If no filenames are given, it reports the number of lines in standard input.\n", + " * If one or more filenames are given, it reports the number of lines in each, followed by the total number of lines." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "cell_tags": [ + "keypoints" + ] + }, + "source": [ + "#### Key Points\n", + "\n", + "* The `sys` library connects a Python program to the system it is running on.\n", + "* The list `sys.argv` contains the command-line arguments that a program was run with.\n", + "* Avoid silent failures.\n", + "* The \"file\" `sys.stdin` connects to a program's standard input.\n", + "* The \"file\" `sys.stdout` connects to a program's standard output." + ] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/novice/python/README.txt b/novice/python/README.txt new file mode 100644 index 0000000..b43514d --- /dev/null +++ b/novice/python/README.txt @@ -0,0 +1,9 @@ +# Resources + +* `inflammation-*.csv`: data files used in notebooks. +* `readings-*.py`: successive versions of command-line script. +* `small-*.csv`: small data files used to test command-line script. +* `argv-list.py`: example command-line script. +* `count-stdin.py`: example command-line script. +* `sys-version.py`: example command-line script. +* `img/*`: images used in notebooks diff --git a/novice/python/argv-list.py b/novice/python/argv-list.py new file mode 100644 index 0000000..26fe990 --- /dev/null +++ b/novice/python/argv-list.py @@ -0,0 +1,2 @@ +import sys +print 'sys.argv is', sys.argv diff --git a/novice/python/count-stdin.py b/novice/python/count-stdin.py new file mode 100644 index 0000000..994a9ad --- /dev/null +++ b/novice/python/count-stdin.py @@ -0,0 +1,7 @@ +import sys + +count = 0 +for line in sys.stdin: + count += 1 + +print count, 'lines in standard input' diff --git a/novice/python/gen-inflammation.py b/novice/python/gen-inflammation.py new file mode 100644 index 0000000..05be9d9 --- /dev/null +++ b/novice/python/gen-inflammation.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python + +'''Generate pseudo-random patient inflammation data for use in Python lessons.''' + +import sys +import random + +n_patients = 60 +n_days = 40 +n_range = 20 + +middle = n_days / 2 + +for p in range(n_patients): + vals = [] + for d in range(n_days): + upper = max(n_range - abs(d - middle), 0) + vals.append(random.randint(upper/4, upper)) + print ','.join([str(v) for v in vals]) diff --git a/novice/python/img/ave-inflammation-over-time.png b/novice/python/img/ave-inflammation-over-time.png new file mode 100644 index 0000000000000000000000000000000000000000..1e45780f28fa53822d56f51b2cfd7b1b7a511b54 GIT binary patch literal 9673 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 aA+B9}^(GOu6$PBd0;wqhkw?Me?SB9sY~gYM literal 0 HcmV?d00001 diff --git a/novice/python/img/color-cube.png b/novice/python/img/color-cube.png new file mode 100644 index 0000000000000000000000000000000000000000..b74a64b93b7fe42da34d396299731239d55862d8 GIT binary patch literal 28840 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 T%N(fGAegMAl0?0jNyz^JLVIx1 literal 0 HcmV?d00001 diff --git a/novice/python/img/combined-inflammation-2.png b/novice/python/img/combined-inflammation-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c361b27994520898d323d3c6f83818705229ba04 GIT binary patch literal 18161 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 w(EfX70eD-F=-=}az{6brf1miWbc^=?nQd0tk^ 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 literal 0 HcmV?d00001 diff --git a/novice/python/img/initial-heat-map.png b/novice/python/img/initial-heat-map.png new file mode 100644 index 0000000000000000000000000000000000000000..4d60b345ea8d3db6a3863bee1b789c089f9cfc6f GIT binary patch literal 71446 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�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 z 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 UkPvT#GXMYp07*qoM6N<$f(>$B&Hw-a literal 0 HcmV?d00001 diff --git a/novice/python/img/loop-inflammation-01.png b/novice/python/img/loop-inflammation-01.png new file mode 100644 index 0000000000000000000000000000000000000000..ef46dae4fea13cda3fb12866b6a8ccf04d0d3a51 GIT binary patch literal 18273 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 literal 0 HcmV?d00001 diff --git a/novice/python/img/loop-inflammation-02.png b/novice/python/img/loop-inflammation-02.png new file mode 100644 index 0000000000000000000000000000000000000000..c361b27994520898d323d3c6f83818705229ba04 GIT binary patch literal 18161 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 literal 0 HcmV?d00001 diff --git a/novice/python/img/python-call-stack-01.odg b/novice/python/img/python-call-stack-01.odg new file mode 100644 index 0000000000000000000000000000000000000000..3e9c062ba5274d13b3f5233d7d4582e7cb80daa6 GIT binary patch literal 9101 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 literal 0 HcmV?d00001 diff --git a/novice/python/img/python-call-stack-01.svg b/novice/python/img/python-call-stack-01.svg new file mode 100644 index 0000000..83d9268 --- /dev/null +++ b/novice/python/img/python-call-stack-01.svg @@ -0,0 +1,929 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + original + + + + + + + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Variables + + + + + + Values + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-call-stack-02.odg b/novice/python/img/python-call-stack-02.odg new file mode 100644 index 0000000000000000000000000000000000000000..0817b9830b18ba4840a5ef8038147932d634ca87 GIT binary patch literal 9770 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 +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fahr_to_celsius + + + + + + + + + + + + + original + + + + + + + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Variables + + + + + + Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + temp + + + + + + + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-call-stack-03.odg b/novice/python/img/python-call-stack-03.odg new file mode 100644 index 0000000000000000000000000000000000000000..ae8f6ce9707a9238c4f04d8dd9fe97e0f9d2db23 GIT binary patch literal 9976 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 literal 0 HcmV?d00001 diff --git a/novice/python/img/python-call-stack-03.svg b/novice/python/img/python-call-stack-03.svg new file mode 100644 index 0000000..822a7ba --- /dev/null +++ b/novice/python/img/python-call-stack-03.svg @@ -0,0 +1,1791 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fahr_to_celsius + + + + + + + + + + + + + original + + + + + + + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Variables + + + + + + Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + temp + + + + + + + + + + + + fahr_to_kelvin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + temp + + + + + + + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-call-stack-04.odg b/novice/python/img/python-call-stack-04.odg new file mode 100644 index 0000000000000000000000000000000000000000..d46199b892cf897e1ec6f8bbf0b80f5b0ea20944 GIT binary patch literal 9904 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 literal 0 HcmV?d00001 diff --git a/novice/python/img/python-call-stack-04.svg b/novice/python/img/python-call-stack-04.svg new file mode 100644 index 0000000..8a26a8a --- /dev/null +++ b/novice/python/img/python-call-stack-04.svg @@ -0,0 +1,1431 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fahr_to_celsius + + + + + + + + + + + + + original + + + + + + + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Variables + + + + + + Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + temp + + + + + + + + + + + + + temp_k + + + + + + + 273.15 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-call-stack-05.odg b/novice/python/img/python-call-stack-05.odg new file mode 100644 index 0000000000000000000000000000000000000000..2fbcf86dd76806252e4acd8faee38d9277b92a7d GIT binary patch literal 10118 zcmeHtWmFv7wk|Hg2`<5ddvFczEKsF#Ypp%88Ind0_!NSp%&B_JfWNl*x zQu~7t1qI~~!h4SYwm%3hTmftz4))=i${$lW@V=evQcf{X@Rz}&O&F-YbjVT8nbT?a z$#!g#snQ$rH5Qdns8x^4y0M(=^?I`YF|X=yuJHv#dr_9^OhnBP4HEJ0ZudYy?xy2N zvSeG|<&(s51LCSb0ok!k!53FXd>2V_sY7_U}(SkJmffJfto>6)U? z4KD*g)C?fB1xcyLTUeKrs5P-ym+(QuaLJy-$M{RD6J_8F349wL37pm6LZA5DJ@YO0 z>b1SVw2}Vyhs}^G7LzI!j)*}Qqrs{;Xnp8o-i6v-8E8Sx6r<*s`mfMH@AXUTKx;>l z?hVhN_G0c1e?HU}**hkryL8?TAbYPVnVlP4EJv7pw`TXd4e< z^YHeqqgOVN*a*RMl&v`7=K}g4KER=DwwEDi@_~Ymw%_igM+YT<*4W`^%Sj%C1fCJI^^e!SezK5wkL8Ss_y`zx6{ggrGRJq2nVRKxMi zCH`gVRaDsaXm3Mq@bh=W$>7sF1=gViEW12&efk={`E6TU(cC=Uk^|H;^`xxA(<}qy zhHH2=MP!s4%_k+_VPRl65MW^bdD7AErypeD>T2U?1$vnHS^Zhi5-+yzzH!vyNrpG2 zc*B|r9A9AIdx7Wy@sj!mR4-VbFJm-aRM+S9s4*@kk7e6aRgNQ->^IL1c1zCC*u=iS z-`PM6%s zhfI5X9%BkS9szJ}IcN9ExnGwl98M6flZXa*qrpmZ6Ya8E$!t|w-frPWxFNX!pID%E z5;J`Kp?Sl1KpZ-}ph}V#Ufz80Rov=W>u{TpFs~*~6IEU-L)cFjrK-jx%8|8BRtWrJ zEsBWX#zavG68H+S)PXE(FE?Z!0ppTuu!G^@h_R$v1YcstffA`ctgE=Xph=oSa|fyu(&3eF?oehO9pAQInOEzGWUlAMky@;H_S;FF9)_yLlkS z*y49SA^pCNn!x?6Bk?T*=X~Oe8|l2oT`2+CjM9kZdScjN91J*kAGL*siV~-w=col6 zJ$7N0(RE>${bnB8e6UcZW@&4d=k6*$(4RPuGQ=*#(8$0?N@9PkmgDm`W3?VJW#P~e z%)|b?E6BShIOUGv{n3^lL!+7(%!@Eige)g{x{GbX51W+dz7^t+l%`@J6 zhxOyhBwEI~>u#;;foZ2#&Z{6^#6tYbey`aJv`n?wPG<}3n)W--^KXJ;dn7AM?D0&qiU`lC^^J3yE#Pk4q5-Mn7K5@QpMHvifzXEfl&MDI=1 zg$8}-#F4yz_0v$YhA-8b3KXvPZx%P5BRMaBTqL|eJFt^bi<8F{i|2PX8+{i>Sv&Rk zB|3CxSZS|4`RLQTbk@>T)wQ}PqsId7Yv^PG00qSY1?A$i9oP`sgs}xd8W!vOn{Z zSi)eIqsvaJ4B^wknli9_w)DRG>I=&i+UiR65vN$LohmY+D zDK&Dr)Rqut*60NsIX|!ieXb;U3o|$jQTQ+wR!c)BwN~}YwSyZrn<=R~{roMu2r*N4UR-f`|4 zOuH;s<9PS$=2w@q%OAoS(W>)Q+3^{8Cd)fmSZaELp3^c=Jw;`c(>uDAdUEW05xpRT z8!H!8wHh*hs1)~J${ij$j2w>CdEo)-9GVo#qH7wBk@{XT;=JG@0bOLxbbsbZ;9hH)t%jWqx zk2!F^a6n$Fs}SSP_;GO!S;dFuMzpyJsY&Az#!zV5Zl484wre|5($_hSyOGVupC_N) z7G0(-JyKT|5iESt^vo8UUXQ|B32Q>BMd}=U1f^XPkA+7nVQmX{A;x-j^RYj@LCPSu zNr(6&a|%B@bK=*|SYj1=*|(dRkpycVT=>;{T_YJ_^nhSwUTMS(?Z=TzNVW>lDr z&-f$8Zz11XxgeAsL4+B>sumBJj{JD9|+Bt$|Z&^TM>`qF(vST!UhY9nHL2nA% zh*(SwX)bBtb<10aX7_%fk5da4i8(J$5p0R!Kn3Ndp7oHS@s{Rb+@sHhs% z!$Ppd_<@oo$uTQ(HN`pA8o9EH&1MZIEN~p8j|aZ!Ak1N z4T>m?E|9laX+P6f>ATf->m#dGM%q0guiq$|^4fYz6U04u>5BlPVvyDd=m`M`& zH7L@ZGth6fK|b&rjk@AZ3<@HlWM}0yU&z3lg(aeXu@F_fLtl94uxQa72o!}8*h{q2_dnpzh$w?~~S1z*V2KV)(iux;# zg5o!3ZT@N>@?`&)WEj?88yT!Lz~`nbnD<{ZR~Y-r&jiq{4+aC2%U=RbD;ujTE0CH? z$X8Ut5eG?K2S_of%Ltx3k+fZCd^9y-y%ztlG^6j|=7iUe+{;sf+C~a)Ie|oxNHzN+ z;YQ%I-EfKqak=yHv#j+uHG$ZnqYDtjm--ETqdE9nhNC%b^iU#Q_B{%iju^=Dr}??= zE<8~;E)1(y=SMXJL>6i$h^b-K6<{mpjr~Z|Tf~l-;kgf#O_{4K9rQ82aBWF#064tO zy-oga{1)r+?(e^7ypH%XSYqB5sOJb6+}^lmjNt9Us$SqXD#?-kz&dM`FWpm4@G__k zn_>P4tI-q`Aorf>l5*rCK}igEEQA|m$(AUzrF&5caOOtyKQ1uOdc=8$2F@AIW9#o{ z^j9MFFkF9%8aJm5M^YIC*EOEMmfW20!x|GsL{Fsd*z3^7pfKiP9Q+Yqtl!q^Ru~>M zZj)LoKgG;(HDXw2sQJ>XypfRbR_T`aYo*M9A+%DIK%YX9rv%CW^2Sa?d7xD2Fg4DI z>nSt{A<(i8&xn`;oU}`FCO|r12AXRYsan9Yib(dXwX%0vVt}>PHhgjBhMs z9ruk!WkMDgSf7r(n$=&_i%YFLV8Q;TQ&m9IA77l-r^8r(U}WCC8TK9QBn&Tz&tDdw zAeL4mxhc|TeBifcieEd9v7-KNFC6J8MR#Mt{v9TQ@;vj&`JEmO-08dG^jh$>H@+i$2yl*A_@C$B%l#vfp8?L# z1Ve>PN-_F<=<~1<-3K^Y)@}}_jsP2b5WDNoCYzI^Rfw93EXE^}NB5^-$jeD--2b-2 zz`(+wz}>g3#L@_1U=W7orJieffOlsc9H+$b#0Ryunv>(`h3uHAsA91?8ZCC3)~{{p z6e8bTwR4)?-CmvVqq+J3Z(u!mqp6=Vn*MDkE59{fYTQ6iw9FvS*{dGSmHA#kK?9wJ z(Ug>awdmr)J}EXWZHNqQ{_5)LW9h~5dVh-;GIMX#$c<7fz*1rB^z`(o6bJ+wc;gZj zDR14~9r3VFx6pD#R`CqS3VzJFTebyA-R#S2lj^68tm4#yU!;)LP$URzJ8Z-=^4zM; z9!!G^s*rXb>~nx-oibZGKbN{V82RQ1H3I z92n%8@s?C6a-^~WZK*>|MN?DNJ(&{H0|na|-Obvbdb(X5Q3$Hm4kO5?&VnAf5rvKwZatL{FV&o^;=RfQbN zc5>t7a&$CzNLeb_u5#lPIZr1uLdsX^`k@@t$utl<-xPzn)MiO&)Cfi&slPVQ#PCx$ zQyjAW3!uqYMB6g@bPf8vg0MnP%oC+R!aN;GGE;?Afl3k+c6khs-u8?B9z%Vm}O zvFbJB?PIUoDu{C}`I3;0bmc@^XDuNsZ+n5)jjCh4FCShLbYp+hnJnT`knpd=hpo=5}fxdGel3EaA58uD1$n^#Yg$-mt0u~Xc>8Wha!YasOCPUwPp0(r1L-H-6TWZ`wz%ej3GnLlWp{X=CN)@<(zO#Kmso0I;$Eu}j#vIslwN?EefV`3=|! z=;Y>fpU!prU*cSWKzk>EqlNwd5(jbxxVnK%0WSXrNA|mZx&WA%0;?@$jz@(cC5JaBAEI2e|;I7J;vdK61_i0bQOo+O0x` zrWf&<(XrEH7S%IHCW>fazL+Y(a~-xEnU%J7m4x0)`v{7Qi7x-I+=RRBr7TIOlT?yd zpJNc&O$t;$ZcKE2w6K*O!L-()R8h(HP?Eo0?Ni`quZk$2-(SCK1Amz~g%F--$_Nl01;Crb#>6B^;R9@UY#Q+ca& zG(1@v96QCvY9yl#4zJ?wn&F9)=AY9d$Pnd|6egaSuRO*HK1%;6MzI@eVK$EYjXWPt zCUnr2$yXA8$<3uT7^ z92YwKVcA)gNOQ0>&jpAv>K8<~wVyUpj5w`w7^<}!h-V%?C)7Edj*L2BA;%>4pDJr- zLHE*o4t@u}2oE0jq4c;*9qmF&zyN?uQMf8Zd8D~EKc6ol^t&ObZa0{abVxNV@y1D4 zbW2uZJrciuVIqTon&UE61$w8V#L$Dd55IoQ9`R|CdR|JX_CRuvv?aQLEEbJIkQ48Qo9^q`^kYqa@M!ARPE>@Y|GM(Na*K!Got71 z$QL0KFw!^~xR20uR8to4dE!$A7adW@##bYveM1+|kw(=Q zXtAx_ktpSMD8!vs+Y59B_O#j23KW(Fs$=p_pXzE290AjtR=X$Zzop+uaK{!lMIeRF zM>u2NqK5dPHekv=_kfW(@gq|IoT*npYYdC$tLG#TpDA3ThAzpU01t}*+b14RA$G!w zx`^N8<12&8;`u!H{b%7=GOP7Wo|7y;lAy@X0JZ2b10%HQfrh6TIq|hr*FPYt&!X}* zuK8syer((Gof zAfbqb<%QebNb5hOsV*rEjKnYa{%UCkxU3iS#E(9dTCc`92zKVA+4cEu3X7>uVUrVH z4BlcDN^@|knoNU6)HWq{6jATSdBF;;pxk!`H3k)b-d1?3(Dl+l4ibQ@0O30w3f4B9 zghyapqL9bonY@(GGgy%1i5}&RAUVjz(yg7D5r(rJ4k+5Y8rLnM=}=<%F=pdm`D1L_ zGmeBnOsm|rlTAf6r8wEj6R#n1Rry!@MRzynV#Q51goE}feO+>ndDh6WuS$U@c^F4I}0~d(}N>isC7&PY`XJ`>~+}?Sj<~)r%2+#IRO8M1*H4b!@!a)if4DH%@?p7R-3TLdG@V(^ zZsoFd4W0ZO8?Um71OINT1i&pc|0DLP3CMpVqCiu@y-4KKNXwVgC=;G}(Cq$dzEni# zTCgd3t1E)zl$5^nXA>`#VL1)#G!Ff?ke7TTF3IO7vZ9UZLiLXHtp?+%*gRuJeO#Z_ z0%Sq7ni@8lx-fW}BH5xf=RCF0Q`-+6WGY3xWG0|Vx1rBlo0T&$I}P2&nd6yd10h41 zcDA~x%HPq@^HK>%doF7p$pu@UGq9)IJHD*J=l*1>NTK86C!Gx27mC2>HKZ)1V#QC# zzxA2?a==Q^8@*DM{6=y6k;ouMX5GAV<9VRujP~sDT&~(MNV=##$05BEE^V4G*{ksF zSQN9ENO4Bhrf&ws)vE@Q{mrf{uR@Kg4^J5%r-2Ua*6B$}7xnZ;c}m<@9E7rxnRMo$ z<=f4xWv2SN+j{UFd%fQ*^SO6?tPshQ+}IPBU9I&VQj|~a`XMT|QU@lQm#Y<|1)oP= zLLBGEUnpzy)f>@aJnC{JpU@hoS)?>nY%U#%Oi-keBw+H?+<4|e*rH8!{cgC;gIxpF zW9QY6wdqCQW3mw))V;$qB`d5<1{B_u@k(Sfuwk*wYa_51JbiooK>2sep!U67_ONJq ze|3hf#Z8)?#{=WmY&TT=-aug)%ZNdfXY%>UnAv-b4Fa$Btx1w4&%>L$3*R|T4#QB9 zfrUNTGKpm@+Kifw`>|4W1@zBEoCbt|3!I1!z?4W#*!phN(*7K?^G?1H*wX;&yt1Ak zq{SELR$uc>yfcqb79NLt_()`b(kwy#tm3o+Yq00tV9I&z(Z*=AGK@c76k)8Ja@sbP z9eUS4{QXVpZpUB*y3A{S#g$}IEaZWw2*SgIhv7exQQyRi8fz?w`}86hDKQ>6QZ+0i z&h66k1k3p-wWf}cDeby{O&=lJ(zke{8J{66%6@7*M!5nzp|&C)P94gdLJFUyMy+Z~ zr0xnT=Lp9AW_nj5Cs1s|0(9S=oif~z4>$WPe!xTcTI2YD*RDba3BXpI%M%Wjc|sY6 zkT$|%=w8l=@3Exi0y5J;iPIMK%&~#v=oIqIuwmHGJ}a9{B<7F_qmM~QeoDYXmsVZI zQTQ&qHAY_=J8=}Bv&CbIA7G2Gu_Rw?T0ZlRIRF{<;b0rni_$j%a5b%ok|Dy7m%-Nd zcpu|>WAxwKyfy3*hBzdSbwD<}RE&VhRjm3D`hBBoDhPe)GbQR1*zC+<_sU-BwCXWz z2XxISdPmcf1lhi>X^O4%B@Ec5V#>F(*d(xK_IVrP%yWYW#uP6LgVvkLN8aXmEm*TO{$D1NLn3zOGnUt2!IJT3Hj6jZ`gjy_}alyS;meFHK`m7mrY3VEUDQ#+Sc~6!GsP zMP+HN=dAK7GVBfjM;l8E&>ydxiZz=YTPV@%&zY(B-WKPf((M9<8a`dY$bj)s(cv_C ze8q4f4!ID`tW!&~t9mPu;hp|I9s1xd5Bo`GUjY86v(%;xi}aw6m*KnaDea8UL};TE zJ~4q3OKf^vq&Bs=B&)P1fCB`O*5G^(1X3vm)3}I%>}Tcx{%!cI^Dk?R;`d zkU_9YX$HPVL}(+dzy^JQ3*VndU)|<0{mu`TM0U3$ssg8Hf}Edag5Wj26?p_DEGU^W zmBJ~DYrT(I6q9;pN$HOe};-v1%op8k}3XPOcT3+9h3|*Dv;3V zPSrQamgiG$K5jSFDG<}63X_&3pfKO$4K`=(@hy#0%zFP(^H2b@+JSpt^DqbhFsQI_ zcrgE5JM$3O|FWNzG(S;4C*#jm6n|)f|AwgFx9+QN{wSCEJL=DG5FaWmewoa@rucKc z#ov*CPR%{MVfo3c?e-!^N*8Yc< z{p*PT0>i*OsM%k(@Efu}Yuo>nhlt>RcIwYs_dn%P`wh>ZweLUkJgDDa7W^9?r@v_7 ze`b1+lE19^H%z~@@qfzl<2Nk7wDP}Lem?0B*ZwJZAJpa`JkPDS=~L$FD3o+>OXJk&+g#Clm4<*s( +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fahr_to_celsius + + + + + + + + + + + + + original + + + + + + + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Variables + + + + + + Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + temp + + + + + + + + + + + + + temp_k + + + + + + + 273.15 + + + + + + + + + + + + kelvin_to_celsius + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + temp + + + + + + + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-call-stack-06.odg b/novice/python/img/python-call-stack-06.odg new file mode 100644 index 0000000000000000000000000000000000000000..290cb37c88c3e452083419003d0dd86f3e78c56a GIT binary patch literal 10039 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 +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fahr_to_celsius + + + + + + + + + + + + + original + + + + + + + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Variables + + + + + + Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + temp + + + + + + + + + + + + + temp_k + + + + + + + 273.15 + + + + + + + + + + + + + result + + + + + + + 0.0 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-call-stack-07.odg b/novice/python/img/python-call-stack-07.odg new file mode 100644 index 0000000000000000000000000000000000000000..5f0e0b61c433ffafd61ac2ee16ca9b9f61cccdab GIT binary patch literal 9217 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 yubqDy&mGH8CH +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + original + + + + + + + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Variables + + + + + + Values + + + + + + + 0.0 + + + + + + + + + + + + + final + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-flowchart-conditional.odg b/novice/python/img/python-flowchart-conditional.odg new file mode 100644 index 0000000000000000000000000000000000000000..cd4af0c5b6d55611e2fb051f07ea61cdeffb8931 GIT binary patch literal 9373 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 YS5@SZ?y|lB0M^}$`!2()N^yVoUsQMUCjbBd literal 0 HcmV?d00001 diff --git a/novice/python/img/python-flowchart-conditional.svg b/novice/python/img/python-flowchart-conditional.svg new file mode 100644 index 0000000..1939363 --- /dev/null +++ b/novice/python/img/python-flowchart-conditional.svg @@ -0,0 +1,373 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + num > 100 + + + + + + + + + + + + + print 'greater' + + + + + + + print 'not greater' + + + + + + + print 'done' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-flowchart-nested-loops.odg b/novice/python/img/python-flowchart-nested-loops.odg new file mode 100644 index 0000000000000000000000000000000000000000..01faec6176f2ee18cde8c9cab2b8f105c8266e84 GIT binary patch literal 9936 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 Zzlp1=3h)Sz_hCJ}xF7P^Aykjw{tMYK^3ebQ literal 0 HcmV?d00001 diff --git a/novice/python/img/python-flowchart-nested-loops.svg b/novice/python/img/python-flowchart-nested-loops.svg new file mode 100644 index 0000000..6832fda --- /dev/null +++ b/novice/python/img/python-flowchart-nested-loops.svg @@ -0,0 +1,1724 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + consonant ϵ 'bcd' + + + + + + + vowel ϵ 'ae' + + + + + + + print consonant + vowel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-operations-across-axes.odg b/novice/python/img/python-operations-across-axes.odg new file mode 100644 index 0000000000000000000000000000000000000000..a2af6e9c248b66aea21ac894e219c2a4ea2a1928 GIT binary patch literal 9310 zcmeHtWn5HU`|eOmNeR;35+g9ckV!T|*-vB}j{OOEZ8V-QAK>0)j|)N=O{= zIUb+zdC&X*c0QbYetWOIXV!JCd#|gU0f2hT0I_r=_6`;R0C2nA zdGTZCs8Wm;4kGJJUDy zp#yEIho^sOx7|45(XIl-R(Og2d^lonXYR+95KKjACQ$J*ldAx7wm}G;MYlwNmw-URYEQwj$p5P zgzkeQT8Zv{B6CPs<2(rsI?WxwHk;Gij%A*nn=$KZa_|O;R#a1% z9*}*7ZVqr6ka46U zrsq%?L!56RcrivAz?2PzEELx~^o_DbuLs_F@0{O6A$pLIJG44zw=oI2O0G62TB1BU z^XQ}yX%(NyJ*TlkQtFQdqe(|0j|59~rKdGFr<6y2F1Z*by}V!3&bRaozg#OS7nhrn zkC0f2)`0ag78JIm{2CrIcBL$5dRBV}Cd8XQ%EhFSl|ZFKaB6vZIuT!b z1yGi|i%Q~Do7IE>06anl+??OuM86wz%$w17GIe%_+L}Avj{BUJw$la=&hy>U9=G#h zVH~Pzii8$oQPFm?nBgaip63i(C?9*YBI$znc3IF~JGL-HgbAdsP$y1}o)o)ic>4Db zl~N0MAW$&as*zoJm&oFhE<>}scJ zokm;tvIPaYm_7zZ>Ym(#WFiE8J1g4~Tdnf(*BX*%PW{O&1l&dAokk7~U?EA4q6yM) z$?+y#U^ue$J&9NXFy)t(GzBfnv)I9dEV#Pej#LM4=7*s1R`>#A<)>$`<7T6 z(+PDiOj@?X0Pj4OHfRE27krNIShn!8ocFVdQds2|8b&?OZEP!E3w?&ZXO{)aD4F}w zZ`lXw*b=$yw-G(BB^=c7dyYfm4d}dAiE-|`#uYG$ivvXd+4n^gsh{*rY9D` z_xlC$+OsIFLzv$Tmn>9<8-JVw?H6T;=rf#8y-26xq?)y2!4<uyKQSyXH#Vn*vdrdj1aE3^@X{JO&NGay);*jPlyj){;TTk} zW17HJ*6qs*Tb$`)#A6>UslYK>uPmzd5w4syA>KeO=<$(ALO377X#mO|d*^#@F_B*} zniB0%)c4qHbSw^D5pm(ruaMp^YF-01q%y5C9gRCQ@X{LaXNefJV585*PY~=pViFE;V8}?6sX+~=UmHYAZ>23E3B>bq?63ehqAubRu1ng(QNp#tP$Xqn z@oB1bySsFxzL#X~s%)D?h%F?szI5=|*Q$AR)m(+Sx?F{69>K%SZA};w6~*k`xRP{s zjWAE^Nqv-7qI-g-hv{DWac4N!pi=bOp;W*}1V0pyuf*?daTBK|R?GgjKDfKuad0HQ zYLOenJBx3fNUj@Amo*~C1iu!?q;!*YkCIx64Nms=gHQItslEM>-}t~QJa90QYaes! zZ;0b+3(Me4ibuC=JkU^E_m2n%3JPIyN>V<)!nZ~ri+9wDW_2*dkCsthW*|0~yx_$zi^cF43?6-6l8J;VjO z6&7Jf(zQ??Mdq{nx(Ke7-qxpF%Jt;k2LY(EEHA!pHJm1`&rpzerELxk2fPX5$6bzdQZsa@g}Io_gX(4MB`#Ju zJw7T#G>)yc(eV?;afMW@2^Es{hovA_^MsN_K!WDt+B4?kxdW;&jr%fmguYhVJB4NfBl zX%J#kK+_A%X51&8rU_7%I85 z8y6_zFE|hh>@-3t$s;0rFuZiVH?CUhF-?hGVN3V#EQ8t~c=!N!?_A)c@IPM1B#NL8 zn@ZDpL%z&KI=C^&OIrAB-Wz&-?>2I3>-z)(PyhfS+W!WHKv7N2+?X&eJaBgdV zu>Hz|({#d&%;ph$Y{keE!>WZZMBkYuw`}Z zE1a;va_LB*;%|DDLB(6A%7pjYP+qU_T0H-JJNN2b{Is@ zkwy>FTdu)Tl*d4rf1pX|r7mN)O~7J?@6cwB(#Me=;wCAl15)Qw^~~)m)T)^>Yy9x0 z9LlyQdBh!8$EFS1eOwOVDZU>x;T@jC9%Y%7S5dkjWUeUdcibTUVk>jXB>U9S3K+;_ zUQ(}DDz#}ZKHYYlH&#%TO=1r}?jz`rRmZCbw>v)CIj5bsadu)=*7t%;2B^Ug_{;?T%eH-0m=Ill0%EZlOM?_<%KBTDvDEmjO4uG-Ta*fnPlllmU>?_~ z3Q0bL6X%_Aj6NB16=`oB;#@kWi4otsf5%Tdq>@uf(dBZp{nEIhgYOgb>-ab15PQE+ zaxOu}XLdl}osbL(ly!1+$ce%FBVtTOV#<2V_*k^`w>drU$C%}1Nyky- zV%`=47@et8MK~SO(DZ!XY1gZ|8YrG1s^*->%g4sl5;~Kdrm?`B`TdmVY;>$MPbOkZ zLbDIVB&a^eCg3uQCUPcMdRS~TA)6~CjeMotyc5OG7o6`uF43Q8IQKb2vuS-YRYwIR zbK*JM&(5)$30`T)OV?#~TDrm%P!@_&iAVmXs~Vst6I@@1P>lR0npD7&@QW+&xNVkj z@rEnf`GlhEd+7p!+1K|B)JX~Xf{PkpLEGOa#@G% zd9gwY9=J^&XMk-%^Tq~6WalL`!4O`tu0$N1lW~i?pPIMpp=l(T|c_F#L7&oU*KHg&sh$j^wM(>8QpGLe4irOpxTcH zAIcS2CpK?g`}EAHT=T`IYOF(4F8-RV$(walEm_SbQPYZ{0vygjN?cPgL6;gPT9G7F zd_if_-Xh-Bf6_C4@bOnoc!=icn<%xW4J_Pxz?4%o(?E-K~7OslWoLSo4az zEV<;3N@gmLiW01%nqwhYX3V4&mW9vt6bU#%ie`XT_2BhPhK3jsrseG6J9^}L<;4yI zR&5(&B8zu~qZj4g=V{Ad8OZbXnyGWddCstO2}v^te=WS45zAGpOY#b&@M^}di_D$& z`-D!A7f_Blu$TMbr0d+dC0d+^NFF9Xgj#CcgmV13S|Jc~;}ot(a`-gP(D13~G}h(J zxG}xsQtj5n)nVlP@y9U5FtmrH#P-BV{^G0tG6ZgOa1g$5+qv89ic=CdGQ4KsN*SY+ zJm(pZmHgYCf{|10PPs{W{Z_F(UbhAM&`ed#aWY%!8o{8p_Z-OM8xoxOsnMC6uS_hw zc!FN2I7eeD40b8IMPKNoMy6wY7@IUVW~v(&6cVBpi%-n+-nGULzt#@s22Ha!>4-_k4heuGJ4eC1%eI@y19r=oCYZbOVGSS+^ArpWa10)8>4`-C$3 zekc-FFi<4~TL4mRe||d6kLzPeNBpVJRcTK`Ba8oFV&`R&cIAo%ACzQ)j+1yj&qlR< zocd`UH&};tncjPm_0fki1MM7kyX5A);XreD^#!Gd^Y@9IhGCpv6X15O@(xa~h9895 zps5;zgT7vg>K8$Yay+<>40`=`H#4GbyU{Mfiv2S^QiDg}mUpBEU~o%5sR0Pw z;=tRozW`vI12Ed%A!-srJKvV@8b@4<>|$t<6{Ks)_zwUeA{jjNs7OQdS|fV3f6q^3 z-H^aUHn`wLmZI0l!fBhL*O!IU3!bLNhmNydyiagzgMnKeyie}klp8lCT5Yi1Y>1sN zx+C^{_WgMPipgd9k{SY3dO341U6Rl_3*(L?p-UFVT}eV%)+@bWcGE{I9Bv~rZms>5 zgG@D}Oh=R^VGNTVD)~u_s7FcDeXl}VO3^FkYMknzEtB&N;u7AOmIfXN+XBc>!x}Wj zIo_sdTZq*xkMqWl7S?vMl0I;utr2(_l!p>$_A1^UB*evXMXFgqv4paK-}?`c0L4GScFZo3aZ4Kmed3-W-`fP9p>Wkh*2WMbz9gYT@|M7=TDS60DiW2L|0(s0QF-_Mk znGIrW7O5to$svB%wC4x(>~MQo-6gR0{;pYIc0y?O%WwwR{-gcF4_?suxU{;C8lks? z=|c|)hlso56(v)BQeH(SWLI%Sdq_h(Q8yz9VmLQa`p{*FVTz`I;E7=rpO7ZQ_=Dpl zzqKdc)_y5tnVcS<(c9)z92Kjws-`a8m+$nDg|1VL?$}CQ=pu|Cd;80Rxn}vpw}Y8E z(UTofWN0qLNV7&y8Zrl>LV5Uv1~ zQx58Qbq>uL5Brsb~Mjl%x^v0WiI#|WA;bjq+{RgjP zs_HZ90u8(|u^+uInHv19r7|;{;i8CP2sGxnk2@3hk&7LF@`F(dq@#-d_!8M^Q+c|& z!{g?ZhY_}_QS24c+`}v(f9u{Bv&4#01H9n7vpBpZ1fW-WP#=^3HXr;seyzJnKRsIv z5<{=;*wGa-O4nlafjE@w@fDa1i@@jf3x|Rkb^<|wS#=OsbvW@LB1w$3tJTGBfAfd% z{r0(e;bA5kgwH`BCe;*&_Y1+ugj{PW1lsfs+_G^t%nzl@J}8I2V#BTibw8Vf&P;sn z%T#;iH8r&ZshvyyDkWU?et7#x;_5Uy$FbhEXZX3bc_v0eRlSt6^=dZ_2d(8D&<9*b zMs-03y6+xV9Vx5Y{hxME4lj)qrw1Jchu&vbaDXk24r1sbESRh*1{|7(d`{hkFx7z( z&F=xWGud!??*U0Me=vXYc*++|;o0u2(TP|$jN>s7eUgzsQEO8O!a%(Ob=tR9z^#v6(m&`fg1zG-DTcbLYRq=7> zv!kE&)#ka{IIIfp5{@IqBHvpCZ6n<~BEta5Ur;g4pQgr`R7_?FJi&{N9vQ}%<0|At zxXK7-dG#fQ^D_W19J}sO=uALZLSCiGZ%t!Mz=w9SmWC?f-Y z=Zh1+!)0^19{IBQC*s9b4HG<@B(BG4g;k^V*lk*xn_DbqTxULpgT?#N9O!ya3_hVJ zT+2|}-SadX(($Z%_f$YU?xP>i7_Lp3l@AxZ9{XW-5Lna{Vl%}x{(#zG@5{s#M{GCU zBg?ss_laCjUOOO?Hn@4U5?_Y;?V|-IT+JEP>SgvQ^GMRkko1OcN+3wn)XlZOl}{>K zOI1=8?Nce^>WKR zDNCN)MNs*C1cv*QhpB#cobmJ)SN*S)L@`mtVxC*G3GR8c{b7#7xb=7T{%u&RgYM^zp1k_yS(nf z#cAyj2zU7Y1-R>65;lA#X*}gGnKKzIN%C41NHXFhOe(bln{ZdC`p<3mb+D_%q?0>MFs z>A3DM`DZ6?a)S--1x}3BxMOp<`AB;w5%C*pbha&Tc-Ho@yBGTTf5#+Sim*5*a&*!0 z-@C%m(z!=1wSO^3UC}@zn(P`fykUu2d$?RLZsE-x@L(4&J$duXq2kx06-!jMd1%VF zl9$8Z!^R@KxnHXL6hE26(_rMWT3djXSs)s>L(Lh<)bn0$psH|BFut@c;?HrONkWnx zXO*MmP`@OfxzekWU3$qH!89%+FSRhSAuY##$9fRT77YsM4vVXwg4>32CLMp25^hrw zsI{fA~5AzN_)HPvN&(9J`L+8Q-m{+8E`#=SsIV4 zTGcYHdnYzZ7E2h8Jdl;t7%jQacFoR|qOPaLwwcFCMV&PF7VcJF16zg+_`VAFn(9R$ zkU>gW;edEqs*1aqgQ>wAU$DH_-YTYxR^~=*7Cj~K$RZKH)VFUr2@soo`gG-Uma?vs z1ibc~dq@^xsF?Ia>iCoOp18+CIhncO=b8D=PPO^j>XQZv&`i-3_N0e24Rk3_d)%o| zqGO*&a}KBPks;PHBY~VyjOh;=F-mN8d=@6f(K1Vba0AdS(F{ ztD|L3OB)@&8xql~Q_KA@d)A=$Gpg@|qur7B?uWbih+2!}X<-|sEaW5U?07dDaa?$G z7FaCJ5KIn4%&R9JkN0KEUYDvidnGS-k6;i>dw^$pwENw_z7y07i5TRiouz55<}<5S zBxF65LjHuRBwN6aT{r*B%j|%cOOX+^uSZ4Vo3EZjIMr(VPP16WrgsF#eRM^8kly9? zzK)>@6|^fBK{q|f?s%DX?2(B}@78;zA7i9t$!d2I-aNwV0dZt~fcpG6JS~^~|C3y)-wLXQeQ_%&dVMK>`EZ@nlp2ac`%_VyERv8H5o< zGAePyh*;Uuz-7bzf!Up}%V|)L4noP>-9CXc`_ZBM+3>x%=QX2lxKFeMnOW3Z&6X|c zdQiH^AWJgt)LCWfg6cd-0X<uDArLxPNNsjZo&>A{ib z;oGjsUCbaMx|sNkhfWD4(0)hp^{1RNS&mV3&~+q(RhWw}ozJ)a#PuXLWb0{L)wxp- z<4pELhX&Zm^e28M{wn!dq*@_?wXi}c<}fG03vMkH=zYemQ`Q6^?0~w^9>mX4CK-$b zX@I*0$1lhmJuF33c%tSdt#o&S0{ZEAx+d7zML$1G;RQQ2Hh7krL-8I}?)k$w*T_a< z#}pfR?aYch81%;~Yh+*NlP@DTTkBrQ@J_3d8^>ZYXE;o{dsBR zcIo(+N!&<*KQAQz9r@=h((Tg8FY~$kmxYv{z@KvQ?@6X#zzD2=PdWXaXL=|63l1-|+ldvi>{It!Vva z1;633|BHnEccxnf_{+ZjhUu52{cl-_Z*Kp;3*%oB_YanzclvGHKXvM@$o*wXzhU_o z$@`z~r@vlc?r%tc3EscD_UBl6D|vs}> +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + average across axis 0 + + + + + + average across axis 1 + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-overlapping-ranges.odg b/novice/python/img/python-overlapping-ranges.odg new file mode 100644 index 0000000000000000000000000000000000000000..659be251fa4f0cbb85ce29c7bcf098c3db7781be GIT binary patch literal 9239 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 +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -3.0 + + + + + + + + + + + + + + + + + + + + + 5.0 + + + + + + 0.0 + + + + + + + + + + + + + + + + + + + + + 4.5 + + + + + + -1.5 + + + + + + + + + + + + + + + + + + + + + 2.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.0 + + + + + + + + + + + 2.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-sticky-note-variables-01.odg b/novice/python/img/python-sticky-note-variables-01.odg new file mode 100644 index 0000000000000000000000000000000000000000..0c38a19a350f0688e67b91cc0d4ee44e4d3ce725 GIT binary patch literal 8772 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 +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 57.5 + + + + + + + weight_kg + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-sticky-note-variables-02.odg b/novice/python/img/python-sticky-note-variables-02.odg new file mode 100644 index 0000000000000000000000000000000000000000..89c45fe41baf1c2a04c95ccf40133ee946f4843f GIT binary patch literal 8873 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 +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 57.5 + + + + + + + weight_kg + + + + + + + 126.5 + + + + + + + weight_lb + + + + + + + + \ No newline at end of file diff --git a/novice/python/img/python-sticky-note-variables-03.odg b/novice/python/img/python-sticky-note-variables-03.odg new file mode 100644 index 0000000000000000000000000000000000000000..30e0a9d63585d2545c17f5697214dc3e4d1d0041 GIT binary patch literal 8869 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 PLN|Xc(7#FI0s#LH&i$I< literal 0 HcmV?d00001 diff --git a/novice/python/img/python-sticky-note-variables-03.svg b/novice/python/img/python-sticky-note-variables-03.svg new file mode 100644 index 0000000..d063956 --- /dev/null +++ b/novice/python/img/python-sticky-note-variables-03.svg @@ -0,0 +1,288 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100.0 + + + + + + + weight_kg + + + + + + + 126.5 + + + + + + + weight_lb + + + + + + + + \ No newline at end of file diff --git a/novice/python/index.md b/novice/python/index.md new file mode 100644 index 0000000..26a36ac --- /dev/null +++ b/novice/python/index.md @@ -0,0 +1,34 @@ +--- +layout: lesson +root: ../.. +title: Programming with Python +level: novice +--- +The best way to learn how to program is to do something useful, +so this introduction to Python is built around a common scientific task: +data analysis. + +Our real goal isn't to teach you Python, +but to teach you the basic concepts that all programming depends on. +We use Python in our lessons because: + +1. we have to use *something* for examples; +2. it's free, well-documented, and runs almost everywhere; +3. it has a large (and growing) user base among scientists; and +4. experience shows that it's easier for novices to pick up than most other languages. + +But the two most important things are +to use whatever language your colleagues are using, +so that you can share you work with them easily, +and to use that language *well*. + +

diff --git a/novice/python/inflammation-01.csv b/novice/python/inflammation-01.csv new file mode 100644 index 0000000..07a2e60 --- /dev/null +++ b/novice/python/inflammation-01.csv @@ -0,0 +1,60 @@ +0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4,2,3,0,0 +0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5,1,1,0,1 +0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3,2,2,1,1 +0,0,2,0,4,2,2,1,6,7,10,7,9,13,8,8,15,10,10,7,17,4,4,7,6,15,6,4,9,11,3,5,6,3,3,4,2,3,2,1 +0,1,1,3,3,1,3,5,2,4,4,7,6,5,3,10,8,10,6,17,9,14,9,7,13,9,12,6,7,7,9,6,3,2,2,4,2,0,1,1 +0,0,1,2,2,4,2,1,6,4,7,6,6,9,9,15,4,16,18,12,12,5,18,9,5,3,10,3,12,7,8,4,7,3,5,4,4,3,2,1 +0,0,2,2,4,2,2,5,5,8,6,5,11,9,4,13,5,12,10,6,9,17,15,8,9,3,13,7,8,2,8,8,4,2,3,5,4,1,1,1 +0,0,1,2,3,1,2,3,5,3,7,8,8,5,10,9,15,11,18,19,20,8,5,13,15,10,6,10,6,7,4,9,3,5,2,5,3,2,2,1 +0,0,0,3,1,5,6,5,5,8,2,4,11,12,10,11,9,10,17,11,6,16,12,6,8,14,6,13,10,11,4,6,4,7,6,3,2,1,0,0 +0,1,1,2,1,3,5,3,5,8,6,8,12,5,13,6,13,8,16,8,18,15,16,14,12,7,3,8,9,11,2,5,4,5,1,4,1,2,0,0 +0,1,0,0,4,3,3,5,5,4,5,8,7,10,13,3,7,13,15,18,8,15,15,16,11,14,12,4,10,10,4,3,4,5,5,3,3,2,2,1 +0,1,0,0,3,4,2,7,8,5,2,8,11,5,5,8,14,11,6,11,9,16,18,6,12,5,4,3,5,7,8,3,5,4,5,5,4,0,1,1 +0,0,2,1,4,3,6,4,6,7,9,9,3,11,6,12,4,17,13,15,13,12,8,7,4,7,12,9,5,6,5,4,7,3,5,4,2,3,0,1 +0,0,0,0,1,3,1,6,6,5,5,6,3,6,13,3,10,13,9,16,15,9,11,4,6,4,11,11,12,3,5,8,7,4,6,4,1,3,0,0 +0,1,2,1,1,1,4,1,5,2,3,3,10,7,13,5,7,17,6,9,12,13,10,4,12,4,6,7,6,10,8,2,5,1,3,4,2,0,2,0 +0,1,1,0,1,2,4,3,6,4,7,5,5,7,5,10,7,8,18,17,9,8,12,11,11,11,14,6,11,2,10,9,5,6,5,3,4,2,2,0 +0,0,0,0,2,3,6,5,7,4,3,2,10,7,9,11,12,5,12,9,13,19,14,17,5,13,8,11,5,10,9,8,7,5,3,1,4,0,2,1 +0,0,0,1,2,1,4,3,6,7,4,2,12,6,12,4,14,7,8,14,13,19,6,9,12,6,4,13,6,7,2,3,6,5,4,2,3,0,1,0 +0,0,2,1,2,5,4,2,7,8,4,7,11,9,8,11,15,17,11,12,7,12,7,6,7,4,13,5,7,6,6,9,2,1,1,2,2,0,1,0 +0,1,2,0,1,4,3,2,2,7,3,3,12,13,11,13,6,5,9,16,9,19,16,11,8,9,14,12,11,9,6,6,6,1,1,2,4,3,1,1 +0,1,1,3,1,4,4,1,8,2,2,3,12,12,10,15,13,6,5,5,18,19,9,6,11,12,7,6,3,6,3,2,4,3,1,5,4,2,2,0 +0,0,2,3,2,3,2,6,3,8,7,4,6,6,9,5,12,12,8,5,12,10,16,7,14,12,5,4,6,9,8,5,6,6,1,4,3,0,2,0 +0,0,0,3,4,5,1,7,7,8,2,5,12,4,10,14,5,5,17,13,16,15,13,6,12,9,10,3,3,7,4,4,8,2,6,5,1,0,1,0 +0,1,1,1,1,3,3,2,6,3,9,7,8,8,4,13,7,14,11,15,14,13,5,13,7,14,9,10,5,11,5,3,5,1,1,4,4,1,2,0 +0,1,1,1,2,3,5,3,6,3,7,10,3,8,12,4,12,9,15,5,17,16,5,10,10,15,7,5,3,11,5,5,6,1,1,1,1,0,2,1 +0,0,2,1,3,3,2,7,4,4,3,8,12,9,12,9,5,16,8,17,7,11,14,7,13,11,7,12,12,7,8,5,7,2,2,4,1,1,1,0 +0,0,1,2,4,2,2,3,5,7,10,5,5,12,3,13,4,13,7,15,9,12,18,14,16,12,3,11,3,2,7,4,8,2,2,1,3,0,1,1 +0,0,1,1,1,5,1,5,2,2,4,10,4,8,14,6,15,6,12,15,15,13,7,17,4,5,11,4,8,7,9,4,5,3,2,5,4,3,2,1 +0,0,2,2,3,4,6,3,7,6,4,5,8,4,7,7,6,11,12,19,20,18,9,5,4,7,14,8,4,3,7,7,8,3,5,4,1,3,1,0 +0,0,0,1,4,4,6,3,8,6,4,10,12,3,3,6,8,7,17,16,14,15,17,4,14,13,4,4,12,11,6,9,5,5,2,5,2,1,0,1 +0,1,1,0,3,2,4,6,8,6,2,3,11,3,14,14,12,8,8,16,13,7,6,9,15,7,6,4,10,8,10,4,2,6,5,5,2,3,2,1 +0,0,2,3,3,4,5,3,6,7,10,5,10,13,14,3,8,10,9,9,19,15,15,6,8,8,11,5,5,7,3,6,6,4,5,2,2,3,0,0 +0,1,2,2,2,3,6,6,6,7,6,3,11,12,13,15,15,10,14,11,11,8,6,12,10,5,12,7,7,11,5,8,5,2,5,5,2,0,2,1 +0,0,2,1,3,5,6,7,5,8,9,3,12,10,12,4,12,9,13,10,10,6,10,11,4,15,13,7,3,4,2,9,7,2,4,2,1,2,1,1 +0,0,1,2,4,1,5,5,2,3,4,8,8,12,5,15,9,17,7,19,14,18,12,17,14,4,13,13,8,11,5,6,6,2,3,5,2,1,1,1 +0,0,0,3,1,3,6,4,3,4,8,3,4,8,3,11,5,7,10,5,15,9,16,17,16,3,8,9,8,3,3,9,5,1,6,5,4,2,2,0 +0,1,2,2,2,5,5,1,4,6,3,6,5,9,6,7,4,7,16,7,16,13,9,16,12,6,7,9,10,3,6,4,5,4,6,3,4,3,2,1 +0,1,1,2,3,1,5,1,2,2,5,7,6,6,5,10,6,7,17,13,15,16,17,14,4,4,10,10,10,11,9,9,5,4,4,2,1,0,1,0 +0,1,0,3,2,4,1,1,5,9,10,7,12,10,9,15,12,13,13,6,19,9,10,6,13,5,13,6,7,2,5,5,2,1,1,1,1,3,0,1 +0,1,1,3,1,1,5,5,3,7,2,2,3,12,4,6,8,15,16,16,15,4,14,5,13,10,7,10,6,3,2,3,6,3,3,5,4,3,2,1 +0,0,0,2,2,1,3,4,5,5,6,5,5,12,13,5,7,5,11,15,18,7,9,10,14,12,11,9,10,3,2,9,6,2,2,5,3,0,0,1 +0,0,1,3,3,1,2,1,8,9,2,8,10,3,8,6,10,13,11,17,19,6,4,11,6,12,7,5,5,4,4,8,2,6,6,4,2,2,0,0 +0,1,1,3,4,5,2,1,3,7,9,6,10,5,8,15,11,12,15,6,12,16,6,4,14,3,12,9,6,11,5,8,5,5,6,1,2,1,2,0 +0,0,1,3,1,4,3,6,7,8,5,7,11,3,6,11,6,10,6,19,18,14,6,10,7,9,8,5,8,3,10,2,5,1,5,4,2,1,0,1 +0,1,1,3,3,4,4,6,3,4,9,9,7,6,8,15,12,15,6,11,6,18,5,14,15,12,9,8,3,6,10,6,8,7,2,5,4,3,1,1 +0,1,2,2,4,3,1,4,8,9,5,10,10,3,4,6,7,11,16,6,14,9,11,10,10,7,10,8,8,4,5,8,4,4,5,2,4,1,1,0 +0,0,2,3,4,5,4,6,2,9,7,4,9,10,8,11,16,12,15,17,19,10,18,13,15,11,8,4,7,11,6,7,6,5,1,3,1,0,0,0 +0,1,1,3,1,4,6,2,8,2,10,3,11,9,13,15,5,15,6,10,10,5,14,15,12,7,4,5,11,4,6,9,5,6,1,1,2,1,2,1 +0,0,1,3,2,5,1,2,7,6,6,3,12,9,4,14,4,6,12,9,12,7,11,7,16,8,13,6,7,6,10,7,6,3,1,5,4,3,0,0 +0,0,1,2,3,4,5,7,5,4,10,5,12,12,5,4,7,9,18,16,16,10,15,15,10,4,3,7,5,9,4,6,2,4,1,4,2,2,2,1 +0,1,2,1,1,3,5,3,6,3,10,10,11,10,13,10,13,6,6,14,5,4,5,5,9,4,12,7,7,4,7,9,3,3,6,3,4,1,2,0 +0,1,2,2,3,5,2,4,5,6,8,3,5,4,3,15,15,12,16,7,20,15,12,8,9,6,12,5,8,3,8,5,4,1,3,2,1,3,1,0 +0,0,0,2,4,4,5,3,3,3,10,4,4,4,14,11,15,13,10,14,11,17,9,11,11,7,10,12,10,10,10,8,7,5,2,2,4,1,2,1 +0,0,2,1,1,4,4,7,2,9,4,10,12,7,6,6,11,12,9,15,15,6,6,13,5,12,9,6,4,7,7,6,5,4,1,4,2,2,2,1 +0,1,2,1,1,4,5,4,4,5,9,7,10,3,13,13,8,9,17,16,16,15,12,13,5,12,10,9,11,9,4,5,5,2,2,5,1,0,0,1 +0,0,1,3,2,3,6,4,5,7,2,4,11,11,3,8,8,16,5,13,16,5,8,8,6,9,10,10,9,3,3,5,3,5,4,5,3,3,0,1 +0,1,1,2,2,5,1,7,4,2,5,5,4,6,6,4,16,11,14,16,14,14,8,17,4,14,13,7,6,3,7,7,5,6,3,4,2,2,1,1 +0,1,1,1,4,1,6,4,6,3,6,5,6,4,14,13,13,9,12,19,9,10,15,10,9,10,10,7,5,6,8,6,6,4,3,5,2,1,1,1 +0,0,0,1,4,5,6,3,8,7,9,10,8,6,5,12,15,5,10,5,8,13,18,17,14,9,13,4,10,11,10,8,8,6,5,5,2,0,2,0 +0,0,1,0,3,2,5,4,8,2,9,3,3,10,12,9,14,11,13,8,6,18,11,9,13,11,8,5,5,2,8,5,3,5,4,1,3,1,1,0 diff --git a/novice/python/inflammation-02.csv b/novice/python/inflammation-02.csv new file mode 100644 index 0000000..e30a9b2 --- /dev/null +++ b/novice/python/inflammation-02.csv @@ -0,0 +1,60 @@ +0,0,0,1,3,4,6,5,2,7,7,8,6,11,5,6,10,4,5,9,15,15,14,13,14,12,10,9,8,8,6,6,6,6,5,4,2,1,1,0 +0,0,2,2,4,2,1,7,5,7,3,6,10,5,5,14,14,9,11,10,5,5,5,15,6,6,10,13,6,8,3,5,7,7,3,2,2,0,2,1 +0,1,2,3,2,1,4,1,8,7,4,5,10,3,11,5,11,8,18,4,17,9,5,6,15,14,11,5,6,4,7,2,5,6,4,5,4,0,2,1 +0,0,0,0,1,2,4,7,3,5,8,7,5,13,10,7,11,8,18,6,13,4,10,13,5,5,4,3,8,9,2,3,2,3,5,3,1,3,1,1 +0,1,0,2,1,2,3,6,5,2,9,3,5,12,9,5,8,11,9,4,19,19,15,9,6,12,9,3,6,2,9,9,8,5,3,5,3,0,2,1 +0,0,1,3,4,4,2,2,6,3,2,9,4,11,12,8,6,8,8,7,18,11,13,13,10,5,7,11,3,6,9,6,4,5,1,4,1,0,0,0 +0,1,0,3,2,3,2,2,4,6,4,11,11,8,3,9,11,7,12,16,10,5,17,8,11,15,6,8,11,10,6,9,4,3,3,3,1,3,1,1 +0,1,2,1,4,1,2,7,2,2,8,9,5,6,12,12,6,14,6,5,12,11,11,5,10,7,6,6,10,2,4,5,8,3,5,3,3,0,0,1 +0,0,1,2,2,1,4,2,7,4,10,6,4,3,6,5,8,13,8,8,12,4,13,4,13,4,14,5,12,10,6,3,2,1,5,3,4,3,2,0 +0,1,1,1,4,2,1,3,5,3,2,3,11,3,4,5,14,4,5,8,18,18,13,5,11,4,13,12,11,4,10,9,3,3,6,3,2,0,2,0 +0,1,0,0,2,3,5,2,5,8,4,7,7,8,5,5,8,15,14,4,10,12,8,14,11,14,5,13,4,6,8,3,6,5,5,2,4,2,2,1 +0,1,2,3,2,5,6,4,2,4,6,9,6,9,6,6,14,11,6,18,6,13,18,7,15,13,3,12,8,8,5,2,5,7,4,2,2,3,2,0 +0,0,0,1,4,1,4,1,7,7,8,7,7,4,9,3,8,17,17,9,13,19,5,10,8,7,5,3,7,4,6,5,4,1,5,2,1,0,0,0 +0,0,2,1,1,4,5,7,8,5,5,3,6,9,7,8,10,10,13,19,18,15,4,11,6,4,8,11,7,5,4,3,7,3,5,4,4,0,1,0 +0,1,0,3,4,3,3,7,6,8,4,11,6,10,10,7,12,9,11,17,10,16,17,4,5,8,4,8,10,8,5,5,4,7,4,2,3,1,0,1 +0,0,0,3,1,3,5,1,6,5,3,4,8,11,11,3,4,12,14,17,7,9,4,8,8,15,3,12,9,10,6,6,3,3,2,5,4,3,1,0 +0,1,0,0,4,5,5,6,8,9,2,11,4,13,5,15,13,5,13,7,7,5,12,4,12,10,7,4,4,10,10,7,8,2,4,3,4,0,1,1 +0,0,2,0,2,3,2,4,4,3,10,5,8,9,8,12,15,10,9,4,17,5,13,12,15,5,8,10,9,5,3,9,4,2,6,4,2,0,1,1 +0,0,2,1,3,4,3,2,7,3,5,7,9,8,6,3,7,12,13,15,20,7,5,17,13,5,5,13,8,6,8,4,5,1,1,5,3,2,1,1 +0,0,0,3,4,2,2,5,2,8,6,10,7,13,7,11,10,6,12,14,8,7,9,12,11,5,5,13,7,7,4,9,4,7,2,1,2,3,0,1 +0,1,1,2,4,1,6,3,8,8,8,9,8,7,12,9,5,7,9,11,8,7,11,6,8,13,14,5,3,7,10,6,8,6,5,4,4,2,0,0 +0,0,2,3,3,1,5,3,3,6,8,4,12,8,12,11,14,9,5,7,11,13,13,4,13,12,14,6,7,5,3,4,3,1,1,3,4,3,2,1 +0,1,2,3,2,4,1,3,6,2,10,11,7,3,9,6,11,15,4,19,16,9,18,4,6,12,6,5,9,6,9,5,2,4,6,2,1,3,2,1 +0,1,0,3,4,5,6,5,4,3,3,9,9,13,10,12,14,7,15,16,15,7,15,6,9,7,10,9,4,8,2,6,8,2,6,4,1,3,0,1 +0,1,0,1,4,2,2,7,7,8,7,11,9,5,5,6,14,7,6,14,8,17,5,13,8,6,13,13,10,10,4,2,2,7,6,3,4,1,1,1 +0,0,2,2,2,4,3,7,6,9,10,10,3,5,14,14,9,15,16,17,15,10,4,14,12,6,8,12,4,3,6,4,8,3,2,5,1,1,2,1 +0,1,0,2,3,5,3,6,3,7,6,5,11,7,14,9,7,8,6,4,12,5,12,6,5,6,3,7,3,8,7,7,4,7,5,3,2,2,2,0 +0,1,1,0,2,3,4,1,3,8,8,8,7,6,6,11,13,9,9,9,10,14,8,5,13,4,5,3,3,2,9,2,2,6,5,2,1,1,1,1 +0,0,2,3,4,5,2,3,8,6,6,5,10,8,7,15,14,6,6,6,8,7,12,10,7,12,5,8,12,11,4,5,5,6,6,2,2,2,0,0 +0,0,1,1,3,2,4,3,4,8,4,3,4,13,11,14,6,6,15,16,10,19,10,15,14,13,7,9,4,2,6,8,2,1,1,5,4,2,1,1 +0,1,0,2,2,2,3,1,4,9,9,2,5,6,13,7,13,8,17,15,7,13,11,13,9,5,7,13,10,5,9,3,8,4,6,1,2,3,1,1 +0,0,1,1,1,3,5,4,2,2,6,10,9,9,5,5,5,11,18,18,6,14,12,8,15,5,4,4,11,4,5,7,3,4,6,3,2,1,2,1 +0,1,0,2,2,5,2,3,2,9,4,2,12,11,6,4,9,11,4,18,19,5,4,6,7,7,10,13,9,2,8,4,3,5,4,2,3,0,0,1 +0,1,1,3,2,5,2,5,2,2,9,5,10,11,14,14,15,8,4,13,6,13,11,13,9,5,10,12,8,8,2,2,2,2,6,5,3,1,1,0 +0,1,1,2,2,3,2,7,7,8,7,9,4,5,3,9,8,8,11,19,5,16,13,7,16,12,8,7,11,8,3,4,6,1,1,1,4,3,1,0 +0,1,1,2,4,4,4,4,4,5,5,11,3,5,6,13,8,14,5,14,9,6,9,15,9,6,4,7,4,6,7,2,4,4,4,3,1,2,0,1 +0,0,2,1,1,1,4,7,3,2,9,7,11,4,5,4,16,16,9,4,16,5,16,17,4,9,6,4,10,11,9,9,6,4,6,1,1,0,2,1 +0,0,1,1,3,1,4,4,4,7,9,2,3,11,5,10,12,8,6,6,16,13,10,6,7,10,9,7,4,6,5,7,4,3,6,3,1,2,1,1 +0,0,1,0,3,3,1,7,4,8,8,2,12,5,12,15,4,12,12,13,20,8,14,5,14,15,6,5,4,4,6,9,5,1,2,1,4,2,0,0 +0,1,0,1,4,2,2,5,4,7,3,11,3,12,11,6,4,15,15,16,8,4,16,15,8,7,12,10,5,5,9,5,8,1,3,4,4,2,0,0 +0,0,1,2,3,5,4,6,7,7,2,8,9,6,4,9,7,14,6,11,17,16,13,12,16,12,6,5,8,3,8,5,3,1,4,3,1,2,0,1 +0,1,2,3,1,3,5,2,2,4,5,9,12,4,7,13,15,4,15,12,15,18,5,16,4,15,8,9,4,9,2,2,6,1,2,3,3,2,1,0 +0,1,1,1,2,2,6,3,5,2,10,4,7,13,3,5,14,10,9,16,18,11,15,5,9,14,8,4,3,3,2,8,4,1,4,1,1,1,2,1 +0,1,1,2,1,1,5,3,5,4,9,8,11,3,5,15,6,6,8,19,8,15,18,10,12,10,10,6,9,3,10,9,7,6,3,3,1,2,0,0 +0,1,2,0,2,1,4,1,5,7,3,2,5,6,6,9,4,17,11,10,16,12,17,13,10,7,13,6,8,9,8,3,8,2,6,1,1,3,2,0 +0,0,1,2,3,2,3,5,3,9,8,4,3,9,8,14,6,15,13,4,17,8,9,17,9,5,6,8,10,6,3,7,4,4,3,1,1,0,2,0 +0,1,1,0,1,1,2,7,8,6,4,4,9,3,10,14,14,11,6,8,18,5,13,10,4,5,3,12,9,7,8,8,2,4,3,4,3,2,1,1 +0,0,0,1,1,1,4,2,5,4,10,9,7,9,3,15,12,6,14,17,16,18,5,8,10,12,10,11,11,8,10,9,8,5,1,3,4,3,0,1 +0,0,0,2,4,4,1,2,7,4,7,7,10,7,14,9,6,17,8,8,8,9,6,15,15,12,10,9,11,6,4,7,7,2,4,1,4,1,1,1 +0,1,1,1,1,1,1,3,3,4,10,2,6,7,12,8,6,5,11,19,8,10,6,9,15,7,13,7,10,3,3,8,2,2,1,3,2,0,2,1 +0,1,1,2,2,4,5,3,4,6,2,3,10,3,7,15,10,8,12,7,13,12,9,7,8,4,9,8,12,10,6,2,4,3,4,3,3,1,0,0 +0,0,0,1,3,2,6,5,6,6,7,8,3,13,5,12,4,12,10,18,13,7,7,4,15,13,5,8,10,3,7,6,3,4,5,5,2,1,1,0 +0,0,1,0,2,2,3,3,4,8,5,2,8,7,9,7,9,4,7,4,6,11,10,10,8,14,4,5,3,10,6,5,8,3,6,2,3,3,2,0 +0,0,2,2,2,1,6,4,4,2,2,3,7,4,8,15,8,12,17,10,17,8,13,13,8,7,3,9,6,2,3,4,8,2,1,1,2,1,2,0 +0,0,0,1,4,2,1,4,8,7,7,10,12,5,4,4,12,7,18,9,16,19,11,7,14,8,11,11,10,9,9,8,4,7,6,5,2,2,1,1 +0,0,2,2,4,2,3,6,4,5,4,2,5,4,11,13,4,10,16,16,6,16,7,14,5,7,11,10,12,10,8,6,4,1,2,2,4,1,2,0 +0,1,0,2,2,1,6,2,2,2,9,5,9,12,5,12,10,13,9,4,17,14,5,10,12,3,13,4,9,8,8,6,7,4,4,5,4,0,2,0 +0,0,2,0,4,3,5,5,6,9,4,5,4,3,10,3,7,11,12,10,19,16,17,14,16,9,12,5,10,11,6,7,7,3,3,1,1,0,2,0 +0,0,0,3,3,1,5,7,7,7,6,8,7,6,10,14,6,12,5,15,20,18,14,17,14,11,13,10,9,5,5,5,5,7,1,5,3,2,2,0 +0,1,2,0,4,5,6,6,2,5,10,10,3,7,13,9,5,16,6,18,15,10,13,11,12,15,10,12,3,8,8,7,5,6,2,5,2,3,2,0 diff --git a/novice/python/inflammation-03.csv b/novice/python/inflammation-03.csv new file mode 100644 index 0000000..4120c89 --- /dev/null +++ b/novice/python/inflammation-03.csv @@ -0,0 +1,60 @@ +0,1,0,3,3,4,2,7,6,5,3,7,6,5,12,6,14,14,14,6,8,14,16,11,12,14,13,13,5,3,8,8,5,6,1,3,2,1,2,1 +0,0,0,2,1,1,4,3,3,2,4,2,11,5,14,15,13,13,8,17,13,18,17,16,9,14,10,11,7,9,6,7,5,2,5,1,2,0,0,0 +0,1,2,2,4,4,4,3,4,8,9,8,5,9,6,10,13,7,18,18,13,11,11,16,10,15,7,5,12,2,3,8,8,2,5,3,4,2,2,0 +0,0,2,1,3,3,1,1,8,3,9,10,7,7,12,12,9,13,8,5,7,16,11,4,8,3,4,8,11,7,6,3,8,3,2,3,1,1,2,0 +0,0,2,3,1,2,5,3,4,4,3,2,8,9,11,5,4,7,4,9,10,15,18,17,6,9,12,5,7,4,7,8,4,3,2,3,2,0,0,1 +0,0,2,0,4,5,5,2,3,6,5,2,10,9,11,7,8,6,15,6,18,12,10,9,4,6,4,11,4,9,2,4,7,7,6,1,1,3,0,0 +0,1,1,2,4,4,4,5,3,9,2,8,4,12,10,7,4,5,11,5,11,19,6,16,6,3,3,7,4,3,5,8,2,4,6,4,1,1,0,1 +0,1,1,2,2,2,3,1,6,5,3,8,8,6,11,11,7,14,4,8,7,13,18,6,16,8,7,11,10,9,2,8,7,5,6,1,4,0,0,1 +0,0,0,2,1,3,5,4,2,4,7,2,5,6,10,15,8,13,6,4,13,18,4,5,16,11,6,3,6,10,4,5,6,5,5,4,4,2,0,0 +0,1,0,3,3,4,4,6,4,6,8,6,5,7,14,5,13,10,8,6,12,17,5,13,15,8,8,13,4,3,4,5,7,6,4,5,4,2,1,1 +0,0,2,0,2,5,5,5,3,7,7,6,9,6,14,15,11,15,7,12,14,13,4,7,4,7,4,6,12,9,8,6,8,1,1,1,2,2,0,0 +0,1,2,3,1,2,3,6,3,8,8,7,8,13,11,7,14,15,6,8,9,15,17,7,7,3,8,4,12,2,4,8,3,5,2,2,3,1,1,0 +0,1,0,3,1,4,3,2,4,5,7,5,8,11,4,9,6,10,5,6,17,7,14,11,9,5,11,3,5,8,7,3,7,1,5,2,4,0,2,0 +0,1,2,2,4,4,6,6,5,3,5,8,11,10,13,4,5,10,10,5,20,17,7,16,12,7,14,9,6,5,8,6,7,5,5,2,3,2,2,1 +0,0,0,2,2,2,2,7,6,6,8,4,6,3,4,8,4,8,11,9,14,15,15,5,10,6,12,9,9,4,9,6,5,7,6,3,4,2,0,1 +0,1,2,0,3,1,1,3,6,2,4,2,3,13,13,3,9,6,13,6,12,12,18,16,13,13,11,11,9,7,5,5,2,3,1,1,2,3,1,0 +0,0,2,0,3,3,2,3,3,6,9,2,12,7,12,15,16,17,7,5,11,7,16,16,15,10,11,10,10,11,5,8,5,5,4,5,4,0,2,0 +0,0,1,0,3,4,4,7,2,4,5,11,5,12,7,6,7,13,4,7,9,5,4,14,14,6,4,3,10,9,9,2,3,6,1,4,4,0,0,0 +0,1,2,1,1,1,2,7,8,5,7,8,8,11,6,15,16,4,16,13,9,10,13,17,7,6,12,10,12,6,2,3,6,2,2,4,3,0,2,1 +0,1,2,3,2,5,1,4,5,5,10,2,4,12,7,14,16,9,17,8,8,18,11,16,4,11,8,12,7,5,5,7,2,3,5,1,1,1,0,0 +0,1,0,3,4,1,2,1,2,4,8,11,6,5,6,14,14,10,17,9,17,4,17,8,7,7,3,11,3,6,10,9,4,1,2,4,4,3,2,1 +0,1,2,3,3,3,2,2,8,5,4,4,10,13,10,4,13,4,9,10,13,11,7,4,6,4,6,12,3,2,5,8,2,1,1,2,4,2,1,1 +0,0,0,2,4,1,5,5,3,2,6,11,5,3,13,10,16,8,17,17,18,9,17,11,12,10,4,10,4,6,2,5,2,3,4,2,3,1,1,1 +0,0,1,3,1,5,2,2,5,5,8,8,6,12,7,9,7,13,16,17,6,16,4,16,8,8,14,13,9,5,7,6,6,7,5,2,4,1,2,0 +0,1,1,0,4,5,3,7,3,6,9,11,3,11,12,11,13,16,13,9,5,11,15,16,10,13,6,6,11,2,4,5,7,5,4,2,3,0,2,1 +0,1,2,1,2,2,3,2,7,4,7,8,5,12,13,13,8,16,10,12,17,17,14,14,11,12,10,13,12,3,6,4,7,2,5,2,2,0,0,1 +0,0,1,2,2,5,2,2,6,6,8,7,10,3,4,4,16,17,17,5,14,11,4,17,15,9,8,11,7,5,6,8,8,2,5,3,1,1,0,1 +0,1,1,0,4,5,1,3,8,3,10,9,5,12,9,14,12,11,15,8,5,14,12,15,14,5,9,13,11,11,8,4,6,2,6,5,3,1,2,1 +0,1,2,3,3,4,3,7,6,6,6,9,9,9,7,10,12,5,14,17,10,9,13,8,13,14,14,11,9,7,2,8,7,4,4,4,1,2,0,1 +0,1,2,0,3,3,4,1,5,5,3,4,9,10,4,7,5,5,10,5,18,5,15,17,4,9,4,5,9,9,10,4,3,5,3,2,1,1,0,0 +0,0,0,1,3,1,1,7,6,6,8,2,12,4,9,10,6,10,14,4,16,5,14,8,16,14,11,13,4,5,9,7,6,5,1,1,4,3,2,1 +0,1,2,0,1,3,6,5,7,4,2,5,6,6,6,3,4,9,10,7,10,9,18,4,4,4,6,13,9,6,10,2,4,3,6,3,1,0,0,1 +0,0,0,1,2,2,4,1,3,9,2,10,3,10,8,7,14,4,13,7,11,18,4,16,5,5,6,9,9,3,5,2,7,3,5,4,3,2,2,0 +0,1,1,0,1,2,6,2,4,2,2,2,10,4,3,15,5,13,4,19,6,10,14,12,12,9,14,11,5,9,2,6,2,3,5,2,1,2,1,0 +0,0,1,0,2,3,1,7,7,4,3,6,8,11,7,15,6,12,11,12,17,19,8,10,16,3,14,10,4,6,2,9,5,3,2,4,3,0,1,1 +0,1,0,1,4,3,5,1,3,6,10,4,6,10,4,4,8,17,8,16,16,8,18,10,12,6,13,8,12,2,7,8,6,4,4,1,4,0,2,1 +0,0,2,3,3,1,2,3,5,2,9,3,9,10,6,12,14,10,9,9,14,18,4,5,10,13,8,4,8,10,7,2,3,1,3,3,4,0,1,0 +0,1,0,2,1,4,6,4,8,5,7,11,9,10,13,4,13,11,11,6,15,12,12,14,8,3,4,9,12,3,4,9,6,6,1,4,2,1,2,0 +0,1,1,2,3,2,5,2,6,7,8,3,5,3,13,8,9,10,17,18,10,7,7,16,9,5,5,11,12,8,2,9,5,5,5,3,2,2,1,0 +0,1,2,0,1,4,1,4,2,6,5,10,9,5,11,8,11,5,9,9,17,9,18,5,10,11,8,3,12,10,10,3,2,2,3,3,3,0,0,1 +0,0,1,2,1,3,3,6,6,8,5,10,12,4,9,13,13,15,8,7,15,9,6,8,13,8,3,13,7,11,9,8,4,3,4,5,2,3,1,1 +0,1,1,2,1,5,6,3,7,9,7,5,6,8,6,5,4,8,10,4,7,14,14,15,7,3,11,3,7,6,5,2,4,1,5,1,1,1,1,1 +0,1,0,2,3,4,4,6,8,7,6,11,4,3,11,13,16,7,10,17,8,8,6,4,12,5,8,9,9,5,6,2,6,2,3,4,1,0,2,1 +0,0,2,3,4,3,2,3,4,3,4,6,12,11,14,8,10,4,12,5,9,7,5,10,13,12,12,5,7,4,3,9,7,1,4,4,4,1,0,1 +0,1,0,3,3,2,6,2,6,4,10,6,4,10,9,13,12,9,17,11,8,7,6,11,13,3,3,12,9,8,10,8,7,7,1,3,3,2,0,1 +0,1,1,2,2,5,3,5,8,6,10,4,3,9,9,11,10,11,5,19,17,5,10,7,16,12,3,11,9,10,8,4,2,7,3,3,1,3,0,1 +0,1,0,0,3,3,5,7,6,4,7,10,4,8,4,5,6,7,14,9,11,13,7,10,10,12,10,3,12,7,6,5,6,7,2,1,2,2,0,1 +0,0,2,3,2,3,4,6,5,8,6,9,4,7,8,8,6,11,10,12,15,7,12,15,8,11,13,6,6,11,2,7,8,7,6,1,3,3,1,0 +0,0,0,3,2,2,1,2,7,3,3,9,9,12,12,14,15,11,12,13,14,14,10,14,13,5,3,7,10,2,6,5,3,5,4,5,3,2,1,1 +0,1,0,1,3,4,3,4,4,9,10,5,6,3,3,14,12,4,6,17,18,18,6,15,16,13,11,8,11,5,10,7,5,1,1,1,2,1,0,0 +0,1,0,0,2,3,3,4,8,7,6,3,11,3,6,3,8,13,9,11,9,9,15,6,16,7,7,4,7,3,4,7,7,5,5,2,4,3,0,1 +0,0,0,3,4,3,1,5,7,4,5,7,10,8,9,11,10,4,4,6,9,13,11,4,4,11,8,5,10,5,9,2,2,4,6,5,3,2,2,1 +0,1,2,1,2,3,5,5,8,4,3,8,9,11,13,8,9,15,17,11,20,16,16,7,13,12,10,8,3,3,2,2,5,6,6,4,3,0,2,0 +0,0,0,3,4,2,6,2,8,5,6,2,7,6,14,10,5,10,9,6,5,4,6,16,5,3,13,11,9,9,9,3,6,6,2,2,1,3,2,1 +0,0,0,0,4,1,5,5,3,5,5,9,12,11,4,12,16,4,10,16,9,16,9,17,4,7,14,9,3,7,3,7,8,7,4,4,2,2,2,1 +0,0,2,1,1,3,4,5,4,6,10,6,4,10,3,14,14,14,11,18,19,14,11,4,4,12,5,5,5,9,4,2,2,3,5,2,1,2,0,0 +0,1,1,3,3,1,4,6,7,3,7,4,11,5,6,15,9,16,8,13,10,16,15,9,9,11,7,12,11,2,2,4,4,5,1,5,1,0,0,0 +0,0,1,2,4,5,5,3,5,8,7,6,9,7,9,11,7,5,7,4,11,11,13,5,16,8,7,6,7,9,9,5,7,1,1,2,3,0,2,1 +0,1,0,2,3,4,5,1,6,3,3,9,3,3,6,7,10,13,6,8,19,14,18,12,5,13,11,11,8,10,6,6,8,2,5,2,4,2,2,1 +0,1,0,3,2,3,3,1,5,5,5,7,5,8,10,12,16,13,4,6,9,17,5,9,4,14,8,3,10,6,6,5,2,6,6,2,1,0,1,1 diff --git a/novice/python/inflammation-04.csv b/novice/python/inflammation-04.csv new file mode 100644 index 0000000..219ae81 --- /dev/null +++ b/novice/python/inflammation-04.csv @@ -0,0 +1,60 @@ +0,1,2,2,4,4,2,5,2,4,8,4,10,7,3,13,10,11,7,7,9,17,7,6,12,13,12,6,5,4,8,6,7,3,5,1,1,0,1,0 +0,1,1,1,2,1,4,1,4,9,3,10,10,4,7,10,5,15,17,9,6,12,10,11,9,15,7,11,11,9,3,4,8,3,6,2,3,0,1,0 +0,0,1,2,4,1,2,3,6,8,5,6,4,3,8,12,7,4,14,11,15,17,13,4,11,13,10,9,5,6,4,9,4,3,4,2,4,2,1,0 +0,0,2,1,1,2,4,1,5,8,3,2,6,10,6,5,11,9,15,9,5,9,17,13,9,12,5,4,6,3,5,8,8,7,4,2,2,3,2,0 +0,1,2,3,4,2,2,5,5,5,2,9,11,11,5,15,15,16,15,17,18,18,8,12,5,10,12,11,8,2,7,7,4,2,1,5,1,2,0,0 +0,1,0,0,2,2,1,5,6,8,9,7,11,6,4,14,15,11,13,11,18,9,5,16,6,11,10,10,10,2,5,8,7,2,6,4,2,2,2,0 +0,0,0,2,4,5,1,1,5,2,10,6,12,5,12,6,13,15,11,12,19,14,15,17,13,9,14,4,12,8,6,4,7,6,6,4,1,2,0,0 +0,0,1,2,2,2,2,4,2,5,6,6,10,12,8,15,11,14,15,15,20,9,7,9,10,7,9,12,11,2,8,6,2,2,3,5,1,1,2,1 +0,0,1,3,2,5,5,5,7,4,4,3,5,7,9,13,4,13,16,11,13,10,16,13,12,9,6,10,12,6,7,8,8,1,2,3,2,0,0,1 +0,1,0,3,3,4,1,7,7,8,8,10,5,6,11,5,16,5,16,19,9,7,12,15,5,3,7,8,9,8,6,2,2,7,6,3,1,1,1,0 +0,0,0,1,4,1,6,6,2,8,7,10,4,8,11,9,5,4,11,18,7,19,4,5,8,9,5,12,4,11,8,5,3,2,2,5,4,0,1,0 +0,1,2,2,1,2,4,5,5,8,2,10,8,7,12,4,14,14,9,15,20,5,14,12,11,6,12,12,6,9,9,6,5,4,6,4,2,3,1,1 +0,1,0,1,1,3,1,5,5,6,5,11,5,12,14,12,8,16,5,7,15,12,12,10,5,9,14,13,10,6,2,5,4,3,1,5,2,1,0,0 +0,1,0,2,3,5,4,4,5,9,4,8,9,11,12,5,8,4,16,5,14,15,14,12,11,9,3,8,8,6,9,3,7,2,6,1,2,2,2,0 +0,1,2,3,2,4,6,3,7,3,10,2,5,13,10,11,10,17,7,9,7,17,17,13,15,7,9,6,10,10,5,9,8,5,1,4,2,2,0,0 +0,0,0,3,4,2,4,6,4,5,4,3,12,9,3,8,9,8,12,17,20,11,4,9,12,9,3,12,7,8,7,2,2,5,2,5,3,3,0,0 +0,0,0,3,2,5,4,7,3,9,2,2,6,3,3,15,5,7,14,19,11,13,6,16,5,6,8,13,6,2,8,4,3,5,4,5,2,3,0,1 +0,1,0,2,3,3,4,7,7,9,2,3,9,3,6,14,6,4,11,7,17,7,16,11,6,13,7,7,11,2,10,2,8,5,2,4,2,1,1,1 +0,1,1,3,2,1,1,1,8,2,8,10,3,10,9,7,16,17,8,19,18,6,5,7,8,14,14,10,12,5,7,7,2,2,6,3,4,2,2,0 +0,1,1,1,2,2,2,7,5,4,8,3,4,6,4,12,9,11,12,14,6,6,18,12,9,9,11,8,4,3,3,8,3,1,1,2,1,1,1,1 +0,1,1,3,2,2,6,2,7,2,4,5,11,10,13,5,8,6,13,14,19,8,13,4,15,8,12,10,12,8,5,9,2,6,2,4,1,2,1,0 +0,0,1,2,2,5,2,5,8,7,5,2,11,5,14,10,6,14,11,6,18,6,14,9,14,5,6,3,6,11,7,7,4,1,4,1,2,1,2,0 +0,1,1,2,2,3,6,4,6,7,10,10,12,12,6,15,5,15,10,19,7,15,16,10,7,14,12,6,7,2,3,9,8,5,6,4,1,2,1,0 +0,1,0,3,2,3,5,2,2,7,3,6,7,9,12,12,15,15,15,13,14,8,17,12,15,4,9,13,12,4,6,3,5,7,2,5,1,1,0,0 +0,0,0,1,2,4,1,4,2,2,6,4,10,8,5,14,6,11,10,10,17,10,14,16,8,13,3,4,7,3,5,7,2,3,5,5,1,0,2,1 +0,0,0,1,3,4,4,5,6,6,8,7,11,7,9,6,15,7,12,10,16,16,15,11,4,5,14,8,5,9,8,2,6,5,5,1,3,2,0,1 +0,1,0,3,4,2,5,3,2,7,10,2,5,8,4,8,14,15,15,8,15,6,17,14,12,5,12,8,9,9,2,5,4,5,2,5,4,2,1,1 +0,1,0,1,4,3,1,6,4,6,2,6,10,12,6,15,9,7,10,8,15,5,8,16,8,4,7,12,11,4,4,7,6,7,3,4,3,2,2,0 +0,1,2,1,1,2,1,7,2,3,4,6,8,12,3,11,9,11,15,16,17,4,17,5,8,6,3,5,10,11,4,6,4,2,1,4,1,3,0,1 +0,0,1,3,4,5,3,5,5,8,7,6,8,5,14,15,14,9,8,16,20,19,5,6,8,9,5,12,9,2,9,6,6,3,5,5,4,0,0,0 +0,0,0,2,3,2,4,2,6,8,5,10,3,6,12,9,10,4,7,6,15,19,5,7,10,15,6,12,12,10,2,8,6,3,5,4,2,0,1,0 +0,1,0,2,2,4,4,2,8,4,6,7,11,5,4,7,13,11,12,5,9,18,15,4,11,6,11,6,9,4,4,5,6,6,6,5,3,1,2,1 +0,0,0,2,3,2,5,2,5,9,3,4,9,10,10,9,5,12,10,16,12,6,15,9,6,3,8,13,7,8,2,5,4,3,5,4,1,2,2,1 +0,0,0,3,3,2,6,1,8,3,3,5,12,6,8,13,4,14,9,6,14,10,15,13,15,11,12,8,4,4,10,3,4,7,1,2,4,2,2,0 +0,0,1,1,3,4,1,6,5,5,10,9,6,5,11,14,7,14,6,10,11,15,11,10,16,7,4,3,11,7,5,3,3,2,2,3,3,2,0,0 +0,0,1,0,2,3,5,3,5,6,5,3,5,6,6,9,11,10,11,19,19,19,14,5,7,13,5,8,5,6,8,2,8,1,6,3,1,1,1,1 +0,0,1,2,3,2,4,6,8,4,3,7,10,4,5,7,8,6,14,15,6,4,9,17,6,6,8,5,7,8,6,9,3,7,4,1,3,0,0,1 +0,1,1,1,4,4,4,5,2,2,4,7,4,12,11,11,15,13,7,11,10,6,8,4,5,11,13,4,7,11,7,3,8,5,2,1,1,3,0,1 +0,1,1,1,1,2,5,6,5,7,6,3,8,11,13,8,14,14,8,12,8,5,15,13,13,15,10,9,3,4,6,4,7,1,4,4,3,3,2,1 +0,1,0,1,1,4,2,4,3,3,3,8,7,4,10,13,10,6,17,16,20,7,12,16,6,6,11,12,7,4,2,7,7,1,4,4,1,1,1,0 +0,1,2,0,1,2,6,5,8,6,7,6,11,6,7,12,9,7,16,7,10,12,14,9,15,11,5,3,6,9,9,3,5,2,3,5,3,3,1,0 +0,0,1,0,4,4,1,7,4,5,6,9,11,6,3,7,10,15,11,17,19,15,8,14,16,14,14,8,3,2,9,6,5,1,3,5,2,0,1,1 +0,1,0,3,4,5,5,2,8,2,2,4,6,5,6,13,7,9,7,6,8,10,13,4,4,6,14,8,10,3,9,6,7,6,2,1,2,3,1,0 +0,1,1,0,3,3,2,4,2,6,4,3,11,11,6,3,10,10,18,13,14,8,12,8,8,13,6,7,6,5,9,7,8,3,6,5,4,3,2,0 +0,0,1,2,4,3,4,4,4,8,6,8,5,11,13,4,16,11,11,7,6,18,13,9,10,10,5,9,10,4,2,5,8,5,3,5,4,1,1,1 +0,0,0,2,1,2,3,2,6,2,10,2,12,7,8,15,16,8,16,13,11,14,14,16,15,14,7,5,3,4,2,2,2,1,2,2,1,0,2,1 +0,0,1,0,3,4,5,6,5,8,3,4,10,5,3,10,9,15,4,13,5,17,9,4,15,6,6,3,3,3,10,7,7,7,1,1,4,0,0,1 +0,0,0,3,4,5,1,5,4,5,5,5,4,12,14,6,10,14,11,19,12,11,8,16,14,6,13,8,8,9,3,9,3,1,2,5,3,1,2,1 +0,0,2,2,3,2,2,1,7,3,3,8,12,3,12,5,12,11,5,12,10,8,17,16,16,12,5,7,3,2,3,6,8,3,1,5,2,1,1,0 +0,1,2,1,4,5,1,6,2,3,10,7,11,6,11,5,6,4,17,5,5,5,16,6,10,12,11,5,10,11,9,2,2,5,1,2,4,3,0,1 +0,1,2,2,4,2,3,2,4,3,2,3,3,8,8,11,4,6,9,11,14,9,14,14,15,15,10,6,7,2,9,9,6,1,2,2,3,1,0,0 +0,0,2,2,2,1,5,4,7,7,2,9,12,6,7,15,10,4,12,4,20,7,18,16,9,15,4,11,4,10,4,8,5,2,3,1,4,0,0,1 +0,1,0,3,2,4,1,5,8,5,5,10,9,12,10,4,4,14,16,4,20,14,10,15,6,6,6,8,7,5,7,5,5,1,6,5,4,3,1,1 +0,0,0,2,2,3,4,1,8,5,6,5,8,12,14,6,4,10,18,10,10,11,7,15,6,14,11,10,9,2,2,9,3,6,6,2,4,2,2,0 +0,0,2,3,2,4,2,3,2,6,2,10,10,7,4,13,14,11,17,16,6,8,4,16,12,15,6,11,12,5,10,3,6,4,6,3,2,2,1,0 +0,0,0,3,2,1,5,3,4,3,6,5,5,9,13,11,6,6,7,11,8,17,11,16,14,8,13,7,9,9,7,3,2,2,1,2,2,1,0,0 +0,0,1,3,3,3,3,3,5,4,4,9,9,13,4,11,14,5,13,10,11,18,11,8,11,6,8,5,5,2,4,2,6,1,1,5,2,2,1,0 +0,0,1,2,3,5,4,7,3,3,7,7,3,3,8,4,16,9,9,9,5,4,12,6,4,15,3,11,4,4,3,5,4,6,5,2,4,0,1,0 +0,0,2,3,2,1,4,7,8,4,4,11,12,6,9,13,10,11,13,4,17,16,12,5,4,11,11,5,12,2,10,2,4,3,4,2,4,2,0,1 +0,0,2,2,1,1,4,4,5,2,8,10,4,9,13,5,11,5,10,5,9,15,18,14,11,11,7,6,11,10,4,8,2,7,2,2,2,1,0,1 diff --git a/novice/python/inflammation-05.csv b/novice/python/inflammation-05.csv new file mode 100644 index 0000000..25ef868 --- /dev/null +++ b/novice/python/inflammation-05.csv @@ -0,0 +1,60 @@ +0,1,0,2,4,4,5,1,2,5,5,8,10,12,10,9,15,9,7,9,10,7,5,8,9,6,7,5,11,9,3,8,6,7,5,1,3,0,2,1 +0,0,2,1,1,4,4,6,2,4,4,4,7,12,11,15,10,9,12,15,7,17,14,12,6,12,5,11,3,9,7,8,8,3,3,3,1,1,0,1 +0,1,0,0,1,2,2,3,4,8,5,2,7,13,14,13,15,16,15,13,18,4,10,11,6,3,14,4,4,6,10,8,6,2,6,2,3,0,0,1 +0,1,0,2,1,3,6,1,3,4,10,2,8,11,11,12,14,12,15,15,20,11,12,7,4,15,9,11,9,5,10,7,5,2,3,1,4,2,0,0 +0,0,2,2,3,3,5,1,4,2,9,7,5,7,11,10,14,6,9,7,18,15,15,5,6,14,5,5,11,9,8,9,8,1,6,4,2,1,2,1 +0,0,0,2,3,4,4,5,3,2,9,8,8,12,11,6,15,8,17,14,20,7,8,10,4,11,9,6,7,7,2,3,5,6,3,4,3,3,0,0 +0,1,1,1,3,1,6,4,5,5,2,6,9,13,13,11,10,6,15,16,14,16,14,10,5,9,8,4,9,4,5,9,7,5,6,1,2,1,2,1 +0,0,2,3,1,4,6,6,4,5,3,5,10,8,6,8,4,14,7,17,7,5,17,8,10,10,10,3,11,3,9,6,6,7,2,1,3,1,2,1 +0,0,2,1,4,4,4,7,5,5,10,8,6,12,14,12,6,6,16,5,6,15,10,5,15,13,13,7,3,11,9,3,7,4,5,4,1,2,1,1 +0,1,2,1,2,3,6,1,2,6,10,7,12,6,3,4,4,16,16,18,9,7,10,10,16,12,11,6,3,10,6,8,5,3,4,1,4,2,1,1 +0,0,1,3,2,1,1,4,4,5,10,9,6,5,12,13,4,16,11,19,11,15,13,13,9,7,12,5,3,7,8,8,6,2,5,5,3,3,2,1 +0,0,1,0,1,3,1,3,4,7,7,8,8,6,7,5,10,12,6,15,15,8,12,8,14,5,5,7,9,4,9,2,3,4,5,3,4,2,2,1 +0,1,0,0,2,1,5,1,8,3,7,2,5,13,9,9,10,12,9,5,12,7,5,8,16,5,6,5,4,4,2,2,4,1,3,5,2,1,0,0 +0,1,1,2,1,4,2,3,3,9,2,7,6,7,6,3,13,11,13,15,14,15,8,15,14,13,8,9,10,8,5,9,7,4,6,2,4,3,1,0 +0,1,1,3,2,4,2,7,3,8,5,9,10,7,9,4,4,5,4,10,13,4,9,9,12,8,7,5,3,4,5,9,6,1,4,1,2,0,0,1 +0,0,2,2,4,5,6,2,5,3,5,5,11,6,8,8,6,6,10,17,19,9,11,8,7,11,4,5,12,6,3,8,7,5,2,5,1,3,0,0 +0,1,0,2,4,3,6,7,7,9,2,7,9,5,12,7,8,5,15,12,13,16,18,5,13,15,4,8,3,4,7,8,6,1,5,4,2,1,2,0 +0,1,1,3,4,5,4,3,4,9,10,5,11,10,7,6,10,7,15,18,14,17,15,16,13,14,6,4,6,8,9,6,5,2,4,5,4,1,2,0 +0,0,2,1,3,4,3,6,8,5,6,2,10,11,11,10,5,15,9,18,10,15,11,15,8,15,7,13,7,5,4,3,8,6,5,1,1,0,0,1 +0,1,1,0,2,1,4,4,4,5,10,11,12,10,7,10,7,16,16,8,14,18,8,16,7,13,14,12,9,2,10,9,7,7,2,2,3,2,0,0 +0,1,0,1,1,2,4,1,4,5,5,7,3,12,10,9,5,5,17,4,8,12,5,11,11,4,13,7,6,4,6,8,7,3,6,5,2,1,1,1 +0,0,2,2,2,4,1,4,7,5,8,11,12,5,3,4,6,6,17,17,16,7,4,17,16,4,11,3,11,4,4,2,2,5,3,3,2,1,0,0 +0,1,0,1,4,2,6,3,7,6,9,8,4,9,10,7,7,6,6,5,5,13,17,4,11,15,13,3,10,5,10,4,4,2,4,4,2,2,0,0 +0,0,2,3,2,4,6,4,3,5,6,5,10,10,8,9,15,16,17,14,5,18,17,6,7,6,7,11,7,10,3,2,5,2,2,3,4,3,1,1 +0,0,1,0,1,1,3,1,4,7,8,10,11,11,8,13,9,7,12,14,16,10,10,15,9,4,9,10,3,10,10,9,8,5,2,2,3,3,1,0 +0,0,1,1,4,5,3,4,8,2,10,6,6,5,9,3,16,16,18,10,16,19,11,8,15,3,11,3,6,3,3,5,5,2,1,4,3,1,2,0 +0,0,2,2,3,5,4,5,5,7,4,2,4,12,11,6,7,17,18,4,10,5,8,15,16,10,7,12,6,4,4,8,2,3,4,3,4,1,2,1 +0,0,0,3,2,1,2,7,4,7,10,11,12,3,13,5,6,14,10,16,13,10,11,8,11,13,11,8,12,8,6,3,2,6,5,1,2,1,2,0 +0,1,1,2,4,1,5,7,6,5,4,3,11,10,4,10,9,6,16,12,5,4,4,10,9,5,14,5,6,4,2,4,7,6,3,4,4,2,2,1 +0,0,2,0,3,3,3,7,2,4,3,8,6,13,5,9,7,12,13,18,8,13,6,6,15,3,10,7,10,7,5,5,3,6,4,5,3,1,0,1 +0,0,1,2,4,1,5,7,6,5,4,3,12,12,13,5,15,8,12,5,12,4,7,6,5,9,3,3,7,3,7,7,2,4,4,2,3,3,0,0 +0,0,0,0,1,2,6,3,4,2,2,10,3,9,6,10,6,11,11,19,12,15,14,10,15,9,11,7,3,3,8,7,7,7,5,1,3,0,1,1 +0,0,2,2,1,1,5,6,6,7,5,7,12,5,7,5,15,11,7,13,15,19,14,13,15,4,11,5,6,7,2,4,7,5,5,5,3,1,1,0 +0,0,0,2,1,4,5,3,3,2,7,7,5,4,9,6,16,8,13,12,16,17,5,15,13,6,8,13,12,6,3,7,7,2,2,2,2,1,2,0 +0,1,2,1,4,5,5,1,7,6,5,10,9,4,4,5,16,4,5,4,6,9,11,4,4,5,4,8,10,7,6,7,8,1,6,2,4,1,2,1 +0,1,2,3,4,2,2,1,3,2,9,2,8,9,8,13,5,11,13,8,20,7,6,15,4,7,14,4,8,9,7,6,3,3,5,5,4,2,0,1 +0,0,2,0,4,4,6,3,4,8,4,8,10,13,6,10,10,15,6,13,10,6,16,6,5,3,10,6,9,3,6,7,4,6,1,4,3,2,2,1 +0,0,0,2,3,3,3,3,6,7,5,6,10,8,13,5,14,9,11,6,10,17,7,10,15,3,4,10,12,11,7,7,4,5,6,4,1,1,0,0 +0,1,2,0,3,1,4,7,8,2,5,4,7,11,11,14,12,17,10,11,5,18,14,14,9,7,5,8,9,7,9,8,2,7,3,1,2,1,2,1 +0,0,0,2,1,4,2,1,7,5,9,8,8,6,9,3,11,9,17,6,10,11,17,16,16,10,13,13,6,10,6,9,2,2,2,1,2,0,0,0 +0,0,1,2,4,4,3,5,3,3,2,6,9,13,6,13,6,4,15,6,15,11,6,14,6,7,13,4,3,11,4,4,8,4,1,3,2,1,0,0 +0,0,2,2,4,5,5,1,5,2,9,6,6,7,14,15,11,17,13,19,18,18,16,4,7,15,6,5,6,8,2,4,6,7,5,5,2,2,2,0 +0,0,2,1,2,3,6,5,8,5,3,8,11,4,6,5,15,17,9,7,16,9,18,6,9,13,12,10,6,10,2,7,6,5,3,4,2,0,1,1 +0,0,0,2,1,5,4,2,5,6,7,6,6,9,3,15,9,11,14,14,14,10,5,10,11,11,12,10,6,4,8,7,4,5,2,2,3,3,1,1 +0,0,0,1,1,1,6,3,3,4,7,7,9,7,14,3,7,8,12,7,6,7,7,6,8,14,4,6,8,10,4,3,3,5,6,5,2,3,1,0 +0,0,2,2,4,3,4,2,8,6,2,8,12,9,5,10,11,16,16,14,9,15,7,17,13,11,10,10,3,4,3,6,5,7,3,3,2,2,0,0 +0,0,2,0,3,1,4,4,4,4,9,11,4,9,12,15,4,13,9,13,11,17,5,15,8,6,8,3,12,8,7,3,2,7,3,3,4,0,0,1 +0,0,0,1,1,3,1,5,4,8,8,5,9,3,14,15,7,11,10,17,20,8,13,10,9,7,6,8,3,2,4,4,3,3,1,1,4,0,0,1 +0,1,0,1,4,5,3,7,2,3,9,7,3,11,3,12,6,16,16,13,12,8,14,17,9,13,8,8,9,4,2,8,5,6,1,5,3,2,0,1 +0,0,0,1,4,1,5,6,4,9,3,5,7,9,11,15,10,9,8,18,18,19,12,4,6,4,11,11,5,11,10,3,8,5,4,1,4,2,0,1 +0,1,1,0,3,4,1,7,7,4,2,8,7,12,14,8,6,8,12,15,18,8,12,17,14,4,12,7,10,8,5,2,8,4,2,4,2,0,1,0 +0,1,1,2,2,4,5,2,7,9,7,6,10,9,9,4,16,4,11,12,6,10,16,12,7,11,14,8,12,7,6,7,8,1,4,4,1,0,2,0 +0,0,1,3,3,1,3,3,3,2,6,9,6,3,13,15,7,16,17,15,10,16,4,17,8,13,4,10,12,3,5,7,6,6,4,3,4,0,1,0 +0,0,0,3,2,3,2,5,8,8,7,4,8,6,8,4,8,4,4,4,9,19,8,9,7,8,10,12,4,11,8,9,6,6,6,3,3,1,1,0 +0,0,1,2,3,5,6,4,8,4,10,7,3,6,12,6,6,15,9,19,7,15,16,11,9,9,9,6,8,2,7,7,4,5,6,4,4,0,1,1 +0,0,1,0,1,3,5,5,5,3,4,9,10,5,6,5,13,9,4,6,5,16,5,11,5,12,10,5,7,10,6,9,6,3,4,5,3,2,0,0 +0,1,1,1,2,2,4,1,2,8,9,8,5,11,3,12,4,7,6,7,5,5,11,12,7,12,5,8,6,10,6,7,4,2,1,4,2,1,0,1 +0,0,2,1,3,5,6,2,3,8,6,6,3,3,11,5,4,14,10,11,5,15,10,15,13,12,13,10,3,2,2,5,7,6,1,5,4,0,1,1 +0,1,2,3,4,5,1,2,2,6,7,2,4,8,8,14,14,9,13,13,9,8,10,17,14,15,13,13,9,4,2,6,6,3,2,5,4,1,2,1 +0,0,1,0,3,4,4,3,3,9,3,2,8,11,8,7,9,15,7,19,16,15,6,16,5,13,9,11,5,3,6,9,5,3,3,2,4,1,0,1 diff --git a/novice/python/inflammation-06.csv b/novice/python/inflammation-06.csv new file mode 100644 index 0000000..9f33528 --- /dev/null +++ b/novice/python/inflammation-06.csv @@ -0,0 +1,60 @@ +0,0,2,0,3,4,5,7,6,7,8,4,4,6,9,5,10,12,16,8,19,17,16,16,12,12,12,9,8,4,2,8,3,5,6,3,2,2,0,0 +0,1,0,2,2,4,2,4,2,8,7,8,5,6,12,3,13,14,18,4,10,17,14,11,9,15,3,10,3,8,10,7,6,3,6,1,1,3,0,0 +0,0,1,0,2,2,2,5,5,7,7,6,8,5,7,13,14,11,15,16,6,14,11,10,9,5,4,7,8,7,4,7,2,1,5,2,3,2,0,1 +0,0,0,2,4,2,2,2,4,4,5,8,5,9,8,13,8,9,11,15,7,8,18,14,16,3,6,7,9,6,8,7,2,3,2,2,1,2,0,1 +0,1,2,1,3,2,5,7,3,8,3,6,5,5,3,15,16,6,15,6,18,13,4,10,5,5,12,3,7,7,3,3,4,6,6,1,1,0,2,0 +0,0,1,2,3,1,1,7,8,2,2,6,8,12,12,14,6,5,18,12,13,6,17,8,14,3,4,7,7,4,5,7,4,5,2,2,4,0,2,1 +0,1,0,0,4,3,1,3,8,6,9,3,10,6,3,14,7,15,18,6,7,4,10,5,9,12,4,6,8,5,10,9,4,7,1,5,1,3,1,0 +0,1,0,3,2,1,4,6,5,6,3,9,11,13,11,15,16,13,18,7,9,6,15,10,16,5,7,10,9,9,3,4,7,2,4,2,4,0,2,1 +0,0,1,3,1,4,6,5,5,8,7,8,4,13,6,14,16,16,11,8,16,11,8,8,16,8,6,4,11,5,6,8,7,3,5,4,2,3,0,1 +0,0,0,2,3,3,5,2,3,3,4,2,8,10,5,13,7,4,15,9,11,5,12,4,11,7,4,6,6,3,4,3,8,2,1,5,4,1,2,0 +0,1,2,3,3,5,5,3,2,6,10,9,6,6,10,3,11,4,7,7,20,5,9,8,9,4,6,4,6,8,8,2,5,1,2,1,3,2,2,0 +0,1,1,3,1,1,4,3,5,4,3,6,9,13,10,10,12,14,14,12,5,14,10,9,10,10,11,4,10,6,4,9,2,6,4,2,2,3,2,0 +0,0,1,1,2,3,3,4,7,7,7,9,9,13,12,8,10,15,18,9,11,7,5,13,13,9,4,10,4,8,6,5,7,1,6,2,4,3,2,1 +0,1,0,3,1,3,1,2,3,8,5,5,4,4,6,5,10,7,7,19,15,5,11,6,11,11,7,8,5,8,6,4,6,6,4,1,1,2,1,1 +0,1,1,2,4,3,4,1,6,7,6,2,10,12,9,8,8,14,18,15,16,15,16,9,10,12,14,12,8,5,4,5,2,7,5,1,4,3,1,0 +0,0,2,1,4,1,5,4,5,6,10,11,3,5,13,11,4,8,13,11,6,10,12,5,16,4,9,5,3,4,7,4,6,7,5,2,3,2,2,0 +0,1,2,1,4,4,4,3,2,9,7,2,9,3,11,12,14,8,18,9,8,13,4,12,14,3,10,12,8,8,10,8,6,2,6,3,1,1,2,0 +0,0,1,2,3,4,6,7,2,3,6,5,12,13,4,12,8,14,13,18,7,18,9,9,15,7,12,11,4,7,10,7,2,3,2,5,4,0,1,0 +0,1,1,1,1,3,1,4,8,3,3,10,6,10,9,5,11,10,6,9,19,4,18,7,10,15,3,3,10,9,10,3,6,1,1,2,3,2,1,0 +0,1,0,3,4,5,5,3,6,2,8,4,10,8,12,12,11,4,18,6,19,5,7,14,14,5,8,4,10,6,3,8,7,1,6,5,3,2,0,1 +0,1,0,1,4,1,1,5,5,3,4,3,11,6,11,11,6,12,13,10,16,5,15,15,12,5,13,5,8,6,9,7,3,3,3,1,4,2,1,1 +0,0,2,1,4,2,1,4,4,5,6,11,7,10,8,7,16,11,16,11,9,7,6,17,9,3,4,6,9,11,7,5,8,6,4,2,1,3,2,1 +0,0,0,0,2,5,5,1,6,2,8,3,8,13,10,7,7,6,4,9,7,8,17,15,8,14,4,12,5,3,9,7,7,6,3,5,2,3,0,1 +0,0,0,1,4,4,3,7,8,8,10,11,10,11,7,4,13,8,12,13,12,17,7,16,7,8,4,10,5,7,9,2,7,7,3,1,3,1,0,0 +0,0,1,2,1,5,4,7,2,4,9,10,4,4,10,11,5,8,11,6,8,17,5,15,12,11,8,8,5,5,3,5,4,5,1,4,4,1,1,0 +0,0,2,2,1,4,6,5,8,5,6,9,7,7,10,5,14,7,7,13,6,11,7,11,8,12,10,5,4,5,10,5,3,1,1,2,1,3,2,1 +0,0,2,0,3,1,4,3,7,8,3,11,3,10,9,9,7,5,7,10,9,7,6,7,7,4,11,6,5,7,3,5,3,4,2,2,2,1,1,0 +0,0,2,3,3,3,1,5,3,2,4,11,9,11,14,5,11,14,6,18,14,7,10,13,10,15,13,10,12,5,3,5,6,3,5,2,3,2,0,0 +0,0,2,1,2,3,5,5,6,7,5,4,12,9,5,14,6,14,7,4,7,17,9,9,12,14,6,13,4,3,6,9,8,7,3,1,1,2,1,1 +0,0,0,3,2,3,1,4,8,8,2,2,8,3,5,8,7,4,16,11,18,12,8,9,7,10,12,8,8,7,9,8,5,2,1,5,4,2,1,0 +0,0,0,0,3,4,6,6,8,5,2,9,8,8,11,8,10,12,8,13,9,5,5,17,13,9,3,5,11,4,4,2,4,5,5,2,4,1,1,0 +0,1,2,2,2,1,5,7,2,6,10,4,7,8,4,9,5,15,12,11,13,9,7,16,6,7,13,4,3,6,5,3,3,5,2,3,4,1,0,1 +0,0,1,3,1,5,1,7,5,5,2,7,6,11,10,8,13,16,6,7,11,4,11,14,13,7,6,4,3,10,4,8,2,7,4,4,2,1,1,0 +0,1,1,3,3,1,3,6,2,8,5,6,12,4,4,13,15,17,12,11,6,11,4,7,11,8,13,6,4,9,8,6,2,1,6,1,1,1,2,0 +0,1,0,0,3,3,4,6,2,8,4,9,6,4,8,14,15,16,7,18,6,8,13,7,6,7,9,6,4,7,10,3,7,7,6,4,1,1,1,0 +0,1,1,0,2,5,6,3,8,2,9,9,4,4,9,9,13,14,10,17,10,19,11,12,5,13,7,5,6,5,3,4,4,1,5,2,3,1,1,1 +0,1,1,2,2,1,2,2,8,4,8,10,10,13,7,9,12,5,10,10,17,14,9,12,7,15,11,9,4,11,7,2,5,6,6,4,2,0,1,1 +0,1,1,2,4,1,6,6,7,9,6,2,3,7,14,3,12,14,17,9,17,5,7,15,11,4,8,11,8,7,8,3,6,3,6,2,2,0,2,0 +0,0,0,2,4,5,6,1,6,8,5,9,12,9,12,9,15,4,14,4,18,13,11,8,12,14,11,10,3,7,10,6,2,3,6,4,1,2,2,0 +0,0,0,3,4,5,6,5,5,9,6,3,9,12,14,13,16,14,18,9,6,15,7,10,6,5,7,7,10,11,10,2,6,6,2,2,1,3,1,1 +0,0,1,1,1,5,4,3,5,9,8,10,9,13,5,4,14,7,10,14,20,7,7,12,14,8,12,5,7,8,10,5,7,4,2,4,4,2,0,0 +0,0,1,0,1,2,1,4,6,6,10,5,6,13,4,9,7,10,5,10,18,14,16,10,7,8,11,8,3,2,3,9,4,7,3,2,2,0,2,0 +0,1,1,2,1,1,3,7,2,8,10,10,7,9,10,5,13,4,12,17,5,5,16,16,15,9,7,3,10,10,2,9,3,4,1,4,1,0,0,0 +0,1,0,3,1,3,6,1,2,5,2,11,6,10,8,5,6,8,17,14,16,4,15,13,16,5,5,8,10,7,5,6,6,6,5,2,4,0,0,0 +0,0,2,0,4,5,6,5,6,4,3,6,11,6,11,13,13,4,5,4,9,15,7,5,5,7,12,5,8,3,3,6,4,5,5,2,3,3,0,0 +0,1,2,2,4,1,4,2,6,8,8,3,8,13,6,8,16,11,18,16,11,11,12,6,9,6,12,4,11,6,10,4,5,3,4,5,2,0,1,0 +0,1,0,3,2,4,2,6,5,7,4,3,8,4,8,3,7,7,11,13,7,7,10,17,5,4,6,7,6,3,8,8,8,2,5,3,2,1,2,0 +0,0,0,0,2,1,5,3,3,7,8,9,5,7,8,4,11,9,12,18,6,7,11,16,10,3,6,6,12,5,3,4,2,4,4,5,2,2,1,1 +0,0,1,2,4,3,6,5,4,6,8,7,9,9,13,11,14,7,5,11,9,14,16,11,12,13,7,3,7,10,3,6,4,2,4,4,3,1,1,1 +0,0,2,3,1,2,4,2,3,3,3,10,5,13,7,9,15,13,6,17,14,4,12,10,12,8,13,11,10,3,7,4,2,7,5,5,3,1,0,0 +0,1,0,0,2,1,2,3,3,7,2,9,9,6,12,14,15,13,18,17,14,10,8,14,4,6,3,8,3,11,9,4,2,6,5,3,1,3,0,0 +0,0,1,2,2,2,6,2,3,2,4,8,10,7,6,11,6,17,4,17,12,15,17,11,4,9,9,13,3,7,5,2,5,4,6,2,2,0,1,0 +0,0,2,3,4,2,6,3,4,3,4,7,10,11,11,14,16,6,6,17,7,12,17,7,9,7,10,4,3,8,9,9,6,6,6,4,1,0,1,1 +0,0,1,2,1,5,4,3,8,2,10,11,9,7,8,4,15,7,13,9,12,9,15,13,9,11,11,4,9,5,5,7,3,6,6,2,3,1,1,0 +0,1,1,0,3,2,2,7,2,5,7,9,12,4,5,9,16,11,9,15,18,5,10,13,7,11,3,13,6,11,2,8,7,7,4,4,3,2,0,1 +0,1,0,1,2,2,4,3,6,5,2,4,10,3,8,7,11,10,9,12,11,16,12,14,9,3,10,12,5,2,5,8,7,6,4,1,4,3,2,1 +0,1,0,3,3,1,3,2,3,2,10,5,6,4,3,11,8,7,14,12,7,14,8,9,14,14,3,11,8,9,5,3,6,3,1,3,3,2,2,0 +0,0,2,2,4,3,1,3,4,4,7,3,10,9,11,8,5,8,14,16,16,18,9,12,14,3,9,11,7,8,2,3,7,4,3,4,3,2,2,0 +0,1,0,2,4,1,4,3,6,8,7,7,6,7,6,14,9,7,4,18,13,14,18,4,7,6,10,9,12,10,10,9,6,5,2,3,2,1,0,1 +0,0,1,1,4,3,5,1,3,6,6,6,12,5,7,12,16,14,10,10,9,10,9,8,9,9,6,12,12,2,5,4,8,5,6,5,1,3,2,0 diff --git a/novice/python/inflammation-07.csv b/novice/python/inflammation-07.csv new file mode 100644 index 0000000..2e1fd15 --- /dev/null +++ b/novice/python/inflammation-07.csv @@ -0,0 +1,60 @@ +0,1,0,2,2,5,6,2,4,7,2,2,11,5,6,4,4,7,18,17,9,5,7,15,10,4,10,3,3,2,3,4,3,7,3,3,4,1,1,1 +0,1,0,2,3,4,1,5,3,9,2,5,8,10,10,14,15,16,7,9,10,14,6,9,4,6,6,12,7,3,9,5,6,7,3,2,1,0,0,1 +0,0,1,2,3,4,6,7,6,4,5,9,6,13,5,12,8,10,7,6,7,12,8,13,6,9,14,6,12,2,9,9,3,3,2,2,1,1,1,0 +0,1,2,2,1,1,3,4,7,4,2,7,12,6,9,10,12,8,11,15,5,16,18,10,16,8,7,8,5,4,6,8,4,4,5,2,1,2,2,1 +0,0,2,1,2,5,3,5,6,4,4,2,9,3,10,15,5,17,16,6,6,16,7,6,13,8,4,5,3,10,2,2,8,5,3,3,2,1,0,0 +0,0,1,0,2,5,1,1,7,5,3,10,8,10,7,6,10,11,8,17,8,17,7,7,7,14,8,9,4,5,8,3,7,3,3,5,4,2,2,0 +0,1,0,3,1,1,1,1,6,5,7,3,4,4,9,10,12,8,5,19,14,15,11,5,4,13,7,10,3,5,5,5,8,5,1,3,4,1,0,0 +0,0,1,0,1,2,1,1,6,7,10,10,6,13,11,6,6,11,5,5,14,18,14,14,5,3,12,5,7,8,4,5,7,1,3,4,4,2,2,0 +0,0,2,1,1,4,6,5,5,6,2,2,6,4,10,6,5,15,12,5,12,14,9,16,8,10,9,7,4,10,5,5,7,3,1,3,2,2,1,0 +0,0,2,2,1,1,6,4,6,3,10,6,12,5,5,10,8,6,10,14,15,17,17,4,15,12,7,3,11,6,8,4,4,1,5,4,1,3,1,1 +0,1,2,0,2,2,4,7,4,4,4,3,6,3,9,8,13,12,8,5,6,12,14,5,10,6,7,10,11,7,6,4,8,3,4,5,4,1,1,0 +0,0,2,0,4,2,2,5,3,6,6,7,9,4,3,13,16,10,16,5,12,7,12,5,5,12,4,12,4,9,6,4,6,5,4,3,1,3,0,1 +0,1,0,3,1,5,1,5,7,4,10,4,7,12,11,8,13,17,5,15,18,12,5,17,13,3,8,4,12,2,7,3,8,7,5,4,4,3,0,1 +0,0,1,2,2,4,5,3,6,8,4,11,8,4,4,4,6,17,5,10,15,15,7,13,16,12,4,9,8,4,4,5,4,6,5,2,4,1,0,0 +0,0,0,3,1,4,6,5,4,3,5,9,9,9,8,5,5,5,17,10,19,10,8,9,11,4,9,7,3,8,4,6,3,6,4,4,1,3,2,1 +0,1,1,1,2,2,1,7,2,5,9,5,8,3,7,3,5,7,10,10,13,8,4,5,8,12,7,8,12,2,9,4,4,1,5,3,2,3,1,0 +0,0,1,3,4,5,5,1,3,3,8,2,5,3,8,14,15,5,6,8,16,15,7,12,11,11,7,4,12,7,4,8,8,1,6,2,1,1,2,1 +0,1,1,1,1,4,2,4,4,4,6,8,11,13,12,3,9,11,14,17,12,16,8,13,7,15,14,9,10,7,7,3,2,2,1,3,3,1,0,1 +0,0,1,3,4,1,6,3,4,3,7,3,9,5,12,7,8,11,17,17,13,7,7,5,14,5,11,4,7,2,9,4,7,1,3,4,1,1,1,0 +0,0,1,3,3,2,5,3,6,4,5,8,12,4,12,13,7,5,16,12,20,4,16,7,5,3,10,11,5,10,10,7,2,7,4,5,2,3,2,0 +0,0,1,0,2,2,2,1,4,8,10,4,12,9,6,9,5,13,15,12,20,12,12,11,15,10,4,7,4,7,6,2,5,7,5,5,1,0,2,0 +0,0,1,0,1,2,4,4,3,2,2,5,10,5,10,4,10,16,9,14,5,16,11,13,5,3,9,13,7,6,3,7,2,7,1,1,4,1,1,1 +0,1,1,1,3,3,4,3,2,8,10,9,4,13,4,15,10,12,4,15,7,9,16,16,7,8,8,10,5,9,4,3,4,5,6,2,1,1,0,1 +0,1,0,2,2,4,1,4,5,8,10,5,8,13,10,4,5,7,16,18,20,10,13,12,15,12,12,13,9,9,10,3,3,3,6,4,2,3,1,0 +0,0,1,1,4,5,2,1,2,8,10,7,4,5,11,11,7,7,17,6,14,5,17,8,9,15,9,12,12,5,8,6,6,3,1,1,2,3,1,1 +0,1,1,0,3,1,4,5,4,2,10,4,10,12,5,7,13,9,18,5,8,19,13,8,7,14,4,13,3,11,3,7,3,2,1,1,2,3,2,1 +0,1,2,2,4,2,3,6,4,2,5,7,10,8,5,11,8,16,14,19,11,5,10,10,4,9,9,11,7,9,5,9,3,7,2,4,3,2,1,1 +0,0,1,1,3,4,3,3,4,6,4,5,3,12,11,14,14,9,13,7,19,5,14,16,16,11,10,10,9,3,6,3,4,5,6,1,3,0,0,1 +0,0,0,1,2,4,6,7,7,2,3,5,9,10,8,3,9,13,9,13,17,10,13,14,11,13,13,12,3,3,7,8,7,4,3,3,1,0,0,0 +0,0,2,2,3,5,6,3,7,8,8,11,4,6,6,3,13,5,10,11,14,19,14,12,7,10,14,10,7,4,4,5,2,5,4,1,4,1,2,1 +0,0,2,1,1,2,1,2,8,8,8,5,5,5,11,3,16,6,9,13,15,8,15,5,15,6,7,7,11,2,2,6,3,1,6,5,3,2,1,0 +0,1,1,3,2,5,3,3,4,6,7,2,7,6,14,6,15,13,7,5,5,12,10,7,6,15,14,12,4,6,3,8,7,5,2,4,4,3,1,0 +0,1,1,3,1,5,1,7,8,6,8,8,7,7,7,10,6,17,9,10,15,12,11,13,4,8,11,9,11,5,7,5,4,1,3,4,3,0,2,1 +0,1,0,1,3,3,2,2,4,8,8,4,5,6,6,10,14,5,6,13,12,16,15,12,7,6,4,7,10,7,7,7,3,6,5,3,3,2,0,0 +0,1,1,1,1,1,5,6,4,6,8,9,12,10,7,15,16,14,13,15,15,7,13,11,7,7,11,13,7,3,10,3,3,1,6,2,2,1,1,1 +0,1,2,2,4,4,5,1,2,3,10,3,12,10,11,7,10,8,4,11,14,19,16,14,8,7,14,5,5,4,3,6,4,4,2,3,3,3,1,1 +0,0,1,1,4,1,4,7,6,7,2,6,7,6,12,13,9,9,16,6,16,4,14,6,14,14,9,11,6,11,5,3,4,5,3,3,3,0,1,1 +0,1,0,3,4,2,5,7,5,2,3,10,12,8,7,7,10,10,5,18,13,18,16,13,9,12,12,6,12,6,5,2,7,7,5,1,4,1,1,0 +0,1,1,2,3,2,1,3,8,5,10,7,9,7,6,7,5,4,14,4,14,18,11,13,6,13,6,13,4,11,7,8,2,2,1,5,4,1,2,1 +0,1,1,2,3,2,5,1,3,3,10,10,7,12,4,11,13,9,10,12,13,6,11,11,6,7,11,11,12,3,5,7,3,5,2,3,4,0,0,1 +0,1,2,2,1,5,6,1,4,4,5,4,8,10,4,4,13,16,6,11,13,18,4,15,15,4,5,4,8,3,6,6,2,1,1,1,4,3,2,0 +0,1,1,3,3,3,2,1,2,9,2,2,6,9,10,3,5,16,9,6,18,16,12,8,11,15,7,11,4,8,8,4,8,3,2,1,3,2,2,1 +0,0,1,0,4,1,2,5,7,8,6,4,10,6,5,3,16,16,4,12,14,10,17,10,13,12,10,10,8,2,4,3,5,7,5,3,4,2,1,0 +0,1,0,3,3,1,4,5,5,7,7,8,4,7,13,12,16,7,4,8,5,9,10,17,16,7,9,13,4,6,8,6,5,5,2,3,2,3,0,0 +0,0,2,3,3,2,3,7,7,7,2,8,11,7,10,6,12,5,6,7,14,14,5,4,13,4,9,6,3,10,4,2,3,7,1,1,3,3,0,1 +0,1,1,3,3,4,3,2,6,2,3,5,6,10,6,6,7,6,12,19,19,8,5,14,12,6,4,8,11,6,2,4,4,2,5,2,4,1,0,0 +0,1,1,0,2,3,4,4,6,7,7,9,11,3,10,15,5,9,9,9,20,17,12,6,9,11,3,5,12,11,6,7,4,6,1,1,1,2,1,0 +0,1,2,3,4,3,2,1,4,7,3,10,6,10,4,3,15,12,15,6,11,14,8,4,12,6,4,12,11,7,9,8,6,2,1,2,4,3,1,0 +0,1,2,0,1,2,3,7,5,5,4,9,8,4,4,14,6,8,17,15,5,19,8,6,15,5,12,9,8,7,5,5,7,7,2,2,4,1,0,1 +0,0,1,1,4,5,1,3,5,2,9,10,7,11,5,12,14,15,12,15,16,11,4,6,16,6,12,12,4,2,10,4,8,4,2,5,4,3,2,1 +0,1,0,1,3,5,1,7,4,5,4,7,7,6,13,13,10,14,5,9,16,4,7,9,14,12,5,6,9,11,4,6,5,6,2,3,1,0,0,0 +0,0,0,0,4,3,4,7,3,8,3,6,9,3,3,9,15,6,11,8,20,8,15,10,12,4,14,5,4,9,4,9,5,7,3,4,1,1,1,0 +0,1,1,1,2,2,6,1,2,3,7,3,3,7,5,13,12,6,5,7,7,6,17,11,4,10,12,7,11,7,8,6,5,4,1,4,3,3,2,1 +0,1,1,0,3,4,5,5,8,7,8,6,5,12,4,8,7,8,13,7,6,17,8,4,8,15,3,7,5,11,5,8,6,2,4,4,2,3,0,0 +0,1,2,3,1,3,1,1,5,4,2,9,12,8,7,6,16,15,9,15,16,18,4,12,16,3,12,12,12,10,7,5,2,5,5,3,4,2,2,1 +0,1,2,0,2,3,1,1,2,4,9,6,6,13,7,3,6,13,14,17,12,6,11,14,12,5,13,5,8,11,4,2,6,7,6,4,4,3,2,0 +0,0,0,0,2,5,4,3,3,6,8,8,9,9,10,11,16,5,8,13,11,6,5,12,14,8,4,3,6,6,5,7,7,4,2,4,3,2,2,1 +0,1,2,2,4,2,3,2,4,4,8,8,6,4,3,8,9,12,16,19,5,5,10,11,16,15,11,8,5,6,6,4,4,6,6,4,3,3,2,1 +0,1,0,2,3,4,4,4,4,7,2,6,5,9,14,8,13,12,13,10,7,18,15,17,14,15,3,11,6,3,10,4,3,3,2,1,3,1,0,0 +0,0,0,0,1,3,3,6,2,5,7,7,10,6,12,4,9,15,13,14,15,7,13,16,16,14,9,4,12,11,6,8,6,3,5,3,1,3,0,1 diff --git a/novice/python/inflammation-08.csv b/novice/python/inflammation-08.csv new file mode 100644 index 0000000..3b8396a --- /dev/null +++ b/novice/python/inflammation-08.csv @@ -0,0 +1,60 @@ +0,0,2,1,3,3,1,5,4,9,3,3,4,13,10,4,11,7,16,8,19,4,4,6,11,12,14,8,8,8,3,4,4,7,1,3,2,3,1,0 +0,0,0,3,3,5,4,7,3,7,3,10,5,7,3,7,10,11,7,15,15,9,11,15,16,9,10,4,10,10,3,2,3,5,6,5,3,3,1,1 +0,0,1,2,2,3,5,1,3,8,7,7,12,3,12,4,10,14,17,8,15,6,18,10,8,15,13,4,5,2,6,2,8,7,2,4,2,2,1,0 +0,0,1,2,1,2,1,1,7,7,6,8,7,13,3,15,9,13,17,13,20,17,18,17,8,3,10,13,5,9,4,7,8,3,6,2,2,0,0,1 +0,1,1,1,2,5,5,7,8,9,3,7,12,9,14,11,15,17,6,16,13,18,14,11,7,8,5,5,4,4,4,8,4,2,4,4,1,2,2,1 +0,0,0,3,2,1,3,3,5,9,6,3,3,12,5,14,8,9,12,13,15,13,7,17,5,4,6,3,6,3,9,3,5,2,2,1,1,0,2,0 +0,1,1,0,1,2,1,6,7,2,3,7,11,7,4,4,16,6,12,9,10,17,15,6,14,7,11,10,10,4,9,9,6,2,1,1,4,2,0,0 +0,0,1,3,4,4,4,3,3,7,3,5,8,4,14,5,11,5,17,12,20,14,17,6,10,14,6,10,10,6,2,6,5,3,3,4,1,3,0,0 +0,1,2,3,2,2,2,7,4,5,8,8,12,11,5,7,5,9,14,18,11,14,8,8,13,8,8,12,9,5,2,7,4,5,5,1,3,1,0,1 +0,1,2,3,3,2,6,2,8,7,4,2,11,9,10,5,11,8,16,15,8,11,9,5,7,6,8,9,7,8,6,7,7,7,2,3,4,1,2,1 +0,0,0,0,4,1,2,1,2,2,2,7,12,5,14,5,9,12,5,9,9,11,18,14,6,8,4,4,6,6,6,7,7,5,1,5,4,1,0,1 +0,0,1,1,1,4,5,4,2,3,3,5,7,7,6,15,7,12,13,11,19,19,10,9,5,13,3,3,5,9,2,4,7,7,1,3,2,0,0,0 +0,0,0,1,2,1,1,3,7,8,2,4,6,8,7,8,7,12,15,15,11,4,5,15,5,4,10,10,12,2,10,3,5,6,4,4,1,3,1,0 +0,1,0,3,1,5,2,7,3,7,2,7,12,9,4,13,14,13,5,19,18,7,14,8,15,13,14,7,4,2,5,2,6,3,3,2,1,1,2,0 +0,0,1,2,3,2,5,2,5,9,2,3,10,3,6,9,16,17,15,4,6,5,12,12,5,9,14,9,6,8,2,8,5,7,4,4,4,1,1,0 +0,0,1,0,3,3,4,7,7,5,10,6,5,5,14,7,15,13,16,14,6,10,12,10,13,3,12,11,3,11,6,2,3,3,3,5,3,2,2,0 +0,1,0,2,3,5,2,3,8,6,7,4,6,10,9,13,13,17,7,4,5,18,7,14,11,10,6,9,12,9,8,2,7,2,1,5,1,1,1,1 +0,0,1,2,1,3,1,3,3,8,3,8,6,7,6,5,5,5,5,17,10,5,8,6,10,3,4,3,11,9,2,2,7,4,2,4,3,2,0,1 +0,1,0,0,4,3,6,3,8,9,7,10,11,13,7,7,5,6,14,15,11,11,7,17,7,6,3,8,6,11,4,9,2,6,2,1,2,3,2,0 +0,1,2,2,3,5,1,6,3,6,8,10,10,5,12,11,11,14,5,12,14,8,7,5,12,11,3,7,8,4,10,2,7,1,3,1,1,1,1,0 +0,0,1,1,2,1,1,4,4,6,6,5,11,6,8,9,10,11,14,4,14,17,17,15,9,6,14,7,7,10,9,3,8,3,5,2,3,3,2,0 +0,1,0,1,3,1,2,6,7,7,8,3,7,8,11,7,5,9,12,17,8,7,7,4,6,7,4,10,4,5,10,6,2,3,6,5,3,3,2,1 +0,1,2,0,3,4,6,4,3,3,9,8,11,3,11,13,13,9,12,12,5,10,11,13,10,6,12,8,9,9,6,6,8,7,2,1,1,1,1,1 +0,1,1,0,4,1,3,7,5,7,4,5,4,10,13,7,16,9,15,18,11,4,6,8,16,6,12,10,3,6,7,7,7,6,4,1,1,1,1,1 +0,1,0,2,3,1,5,2,7,5,2,2,4,7,12,6,14,15,14,10,6,11,16,16,8,8,11,9,7,6,2,2,7,6,4,4,1,0,0,1 +0,0,2,3,3,3,4,7,2,2,2,11,3,9,9,12,12,13,12,11,15,5,14,15,16,9,4,7,5,3,3,2,6,6,1,4,2,2,0,0 +0,0,1,0,4,4,3,4,7,7,9,8,6,7,6,15,5,5,8,4,6,9,16,16,16,11,11,13,10,5,5,7,5,7,3,2,2,3,0,1 +0,0,2,0,1,2,1,7,4,8,2,2,8,9,4,13,14,14,11,7,9,17,14,13,8,9,6,6,11,6,2,3,6,6,4,4,2,3,0,1 +0,1,0,1,1,4,5,7,5,7,4,3,9,10,13,10,6,13,6,12,20,18,13,14,9,9,10,11,4,3,8,9,7,4,6,3,2,1,2,1 +0,0,0,0,2,3,3,5,8,4,2,3,4,9,10,11,13,12,16,17,6,9,14,15,10,4,8,13,11,3,10,2,8,2,1,5,2,1,0,1 +0,0,2,0,3,4,2,6,6,5,4,7,11,9,9,4,11,9,9,17,17,5,10,10,5,15,3,4,5,4,5,4,6,4,6,5,1,0,1,0 +0,0,2,2,2,2,2,7,6,7,8,4,4,12,14,11,5,13,10,15,12,18,4,4,6,7,12,12,11,2,9,3,8,6,1,2,4,3,2,1 +0,1,2,2,2,2,3,1,4,2,9,11,12,13,11,11,5,7,14,13,15,9,18,15,15,13,8,6,6,3,8,3,3,5,3,3,1,0,0,1 +0,1,1,1,4,2,1,6,2,5,9,4,6,6,3,11,6,16,5,10,5,19,6,15,11,13,6,8,11,8,6,2,8,5,1,5,4,0,2,0 +0,1,2,0,4,5,2,1,5,4,7,8,8,10,12,8,5,13,7,12,6,18,7,4,15,13,12,7,5,3,7,6,2,4,1,1,4,1,1,1 +0,1,2,1,3,4,4,3,5,2,8,5,3,3,6,11,14,12,8,14,19,10,7,17,13,15,10,5,7,6,8,4,7,2,5,5,2,2,2,1 +0,0,1,3,2,1,5,7,8,2,9,5,10,7,5,14,14,14,15,13,6,8,5,16,7,4,14,7,4,10,5,4,3,6,1,4,2,3,2,0 +0,1,1,3,3,5,5,3,3,9,9,4,12,9,14,8,16,14,13,4,19,17,7,4,6,5,9,6,3,7,7,4,4,7,2,5,3,0,2,1 +0,0,2,1,1,2,3,2,5,9,4,5,5,10,7,3,13,6,15,10,18,4,4,13,14,7,11,12,7,9,7,4,2,6,5,3,3,3,0,0 +0,0,2,1,2,4,2,1,2,7,7,4,8,9,5,8,12,17,10,14,20,16,16,10,9,7,12,4,10,8,9,5,8,1,3,1,1,2,0,1 +0,1,0,1,1,2,2,7,5,5,2,2,10,12,11,12,9,8,11,18,17,9,9,9,8,4,8,9,10,10,10,8,6,4,3,1,3,2,2,0 +0,0,2,3,2,1,2,7,8,6,6,10,8,9,7,11,9,10,14,14,16,16,11,12,11,7,6,12,7,7,8,9,2,7,5,3,2,2,0,0 +0,1,2,3,4,3,1,4,6,6,4,6,12,13,5,10,13,7,6,18,16,11,8,7,7,7,12,6,9,3,2,7,2,6,1,2,3,0,1,0 +0,1,0,3,1,3,5,4,8,8,10,9,6,9,9,7,14,10,11,8,13,12,13,8,13,3,5,12,3,3,9,6,3,4,3,5,4,2,2,1 +0,1,2,2,4,2,4,7,2,7,3,10,6,4,14,15,5,9,9,10,10,9,15,9,8,12,10,9,6,3,4,3,5,7,4,4,1,1,1,0 +0,1,1,3,4,4,6,3,3,2,10,10,7,4,5,3,9,14,10,7,9,16,6,12,6,15,12,5,8,10,4,4,7,6,2,1,2,2,1,0 +0,0,0,3,2,4,5,2,3,7,5,5,4,10,14,10,6,8,17,13,10,8,17,11,6,13,8,12,3,6,3,5,8,6,1,2,1,2,1,0 +0,1,1,0,1,5,1,6,3,7,8,6,9,3,14,7,13,15,8,18,17,9,13,13,6,4,8,7,10,7,2,4,5,5,1,4,4,2,1,0 +0,1,1,3,1,3,5,2,6,5,7,6,10,10,3,11,14,4,12,10,10,18,9,17,16,11,10,8,11,9,8,9,2,6,5,4,1,0,0,0 +0,0,0,3,3,4,1,7,2,9,4,3,8,9,6,6,12,13,17,17,10,14,7,15,13,15,4,12,12,6,5,3,3,7,4,3,2,2,2,1 +0,1,2,0,1,5,3,5,6,7,8,11,3,10,10,10,14,10,12,4,9,18,13,14,9,14,11,8,7,8,6,4,5,1,6,3,3,2,1,1 +0,1,2,1,2,3,5,1,3,6,5,6,10,11,12,12,9,16,14,9,19,16,17,4,14,5,5,3,3,9,2,2,7,6,1,2,3,0,1,0 +0,0,0,0,2,5,1,3,3,3,3,2,3,10,6,14,16,7,4,15,18,18,11,15,6,9,5,7,9,3,8,6,5,3,1,5,1,0,1,1 +0,1,0,0,4,5,3,7,3,5,9,11,7,6,3,5,13,12,17,8,12,12,14,17,4,6,5,12,4,6,6,9,7,4,1,3,2,1,1,0 +0,0,1,0,3,3,4,3,3,3,5,2,6,4,8,8,6,12,4,4,9,9,5,13,12,15,13,8,11,8,8,9,7,5,3,4,1,3,0,1 +0,1,1,1,1,1,5,1,6,7,5,10,9,8,5,13,6,14,5,14,6,14,9,10,15,7,7,7,6,6,8,9,6,6,6,1,4,3,0,1 +0,1,0,0,4,4,5,2,8,8,9,2,12,4,8,9,9,15,15,11,13,10,12,13,7,8,4,11,9,10,6,9,5,4,2,5,1,0,2,0 +0,0,1,1,3,5,2,3,7,5,2,7,12,9,4,8,8,8,17,15,18,5,18,11,7,10,10,6,9,10,4,2,4,5,1,2,3,3,0,1 +0,0,0,0,2,3,6,6,8,8,10,8,11,5,5,11,9,10,4,19,15,18,17,5,13,5,3,9,8,9,2,2,7,1,5,2,2,0,2,0 +0,1,1,0,4,3,6,5,7,9,3,2,3,13,14,13,7,10,11,11,14,15,10,14,6,14,13,13,8,6,4,9,8,7,5,5,2,2,2,0 diff --git a/novice/python/inflammation-09.csv b/novice/python/inflammation-09.csv new file mode 100644 index 0000000..279e026 --- /dev/null +++ b/novice/python/inflammation-09.csv @@ -0,0 +1,60 @@ +0,0,0,2,4,5,5,4,4,6,8,2,3,8,7,13,8,14,17,6,5,15,14,13,8,6,9,9,11,10,3,5,3,1,5,4,4,3,2,1 +0,1,0,1,3,1,5,3,8,5,8,7,11,4,14,13,9,6,15,12,6,5,11,11,14,5,6,6,5,5,8,5,5,4,5,2,2,3,2,1 +0,1,2,2,4,1,4,2,7,5,10,6,12,3,9,9,9,5,6,12,14,19,9,6,7,6,14,3,11,2,2,4,3,7,4,5,3,0,2,1 +0,1,1,2,2,1,5,3,5,6,3,7,9,8,11,9,4,16,4,17,13,12,8,4,9,13,5,6,8,10,3,8,2,4,6,2,2,3,0,1 +0,1,2,3,3,5,3,4,4,6,8,7,10,11,6,13,4,6,5,6,10,10,17,6,9,14,13,5,3,9,9,3,7,1,6,1,3,0,1,1 +0,1,0,2,4,2,4,5,5,6,4,4,5,4,10,10,10,11,11,4,18,11,14,14,12,5,13,4,7,11,10,4,2,5,6,1,2,3,0,1 +0,0,0,3,2,4,3,1,6,4,2,6,7,8,10,6,16,10,15,5,16,18,16,4,9,13,7,11,6,7,7,6,5,6,5,4,2,1,2,1 +0,0,1,2,1,1,2,1,8,8,10,7,8,7,6,14,11,9,4,8,6,9,18,6,7,12,4,6,8,3,3,8,2,1,3,1,3,3,0,0 +0,0,2,1,3,1,2,7,2,8,7,7,9,13,5,10,9,10,5,16,7,4,8,6,10,13,11,5,8,4,3,3,5,5,4,5,3,3,1,0 +0,1,1,2,3,5,1,4,5,6,4,6,9,13,11,7,5,8,9,12,8,6,4,14,14,14,14,11,4,8,6,7,3,1,1,5,1,3,1,0 +0,1,0,3,1,2,4,4,6,3,8,9,4,10,10,3,12,17,18,15,13,19,10,8,8,5,12,10,11,4,7,3,7,6,3,5,1,3,2,0 +0,1,0,1,1,3,1,5,8,3,5,5,12,6,6,10,14,11,7,18,19,16,5,15,4,15,4,7,10,11,2,3,4,1,5,2,1,0,1,0 +0,1,0,1,4,2,2,2,2,7,4,4,7,3,6,6,15,10,17,17,20,7,6,16,4,7,9,13,3,11,5,5,7,2,5,3,1,3,1,0 +0,1,0,3,1,1,2,7,6,5,8,2,11,4,3,10,8,9,18,6,20,11,14,9,9,10,4,6,3,10,7,7,4,7,2,5,3,1,2,0 +0,1,0,3,4,3,1,4,3,7,3,6,7,3,11,3,6,7,14,12,18,12,13,9,11,13,13,7,8,4,10,6,7,2,6,2,1,3,0,1 +0,0,0,0,4,1,3,7,5,6,2,6,9,6,3,5,13,14,16,18,9,13,4,4,16,9,11,6,12,2,8,4,4,3,6,3,3,2,2,0 +0,0,0,1,4,4,1,2,8,7,4,9,10,12,11,13,9,10,12,16,7,14,16,17,15,10,12,11,10,5,10,4,7,5,3,1,3,3,0,1 +0,1,1,0,1,5,6,6,2,9,10,7,5,11,9,15,8,11,4,8,15,19,4,13,5,9,11,3,9,10,10,2,7,1,3,1,3,2,1,0 +0,0,2,3,4,3,3,6,6,2,6,11,11,10,10,6,9,5,9,17,7,8,9,13,11,9,10,8,5,7,3,4,6,2,4,2,3,1,1,0 +0,1,2,3,2,3,3,3,5,9,6,9,10,9,14,10,6,4,16,14,6,8,12,7,15,14,7,8,3,10,2,6,2,4,2,1,2,3,2,0 +0,1,2,1,1,4,4,1,5,2,9,4,9,11,9,3,5,13,13,6,16,10,12,16,10,3,10,8,4,7,5,9,5,5,1,5,3,2,2,1 +0,0,0,1,4,4,6,2,4,8,8,4,5,6,14,12,7,5,8,14,5,7,8,17,15,6,5,9,8,8,8,5,2,3,4,1,4,0,1,1 +0,1,1,3,2,2,6,4,5,9,7,8,4,13,3,11,7,7,17,8,12,11,9,6,13,14,11,13,10,3,5,4,7,6,3,4,1,3,1,1 +0,0,2,2,3,4,5,1,7,6,5,6,6,8,10,4,16,15,5,7,6,9,14,11,14,8,6,10,5,11,8,4,5,3,2,1,4,3,1,1 +0,1,1,1,2,2,1,3,5,6,5,6,7,5,8,12,9,5,4,7,12,13,7,14,15,9,3,11,7,9,4,6,2,1,6,1,3,3,2,1 +0,1,0,0,4,5,3,5,5,8,8,5,9,7,8,5,4,4,18,14,16,13,12,7,7,12,12,9,10,6,10,3,2,1,4,3,3,0,2,0 +0,1,0,3,3,5,1,2,3,5,5,5,5,9,11,8,5,6,15,13,9,14,13,6,6,4,6,13,9,6,9,4,6,2,4,3,3,2,0,1 +0,0,0,3,4,5,5,2,3,2,4,7,4,5,4,13,12,14,12,12,11,8,17,17,5,3,7,4,9,2,4,7,7,7,6,1,1,1,2,0 +0,1,0,0,1,5,5,6,3,3,8,9,9,6,7,14,14,9,18,6,12,13,10,12,16,5,10,13,9,7,9,2,6,7,5,3,2,1,1,1 +0,0,2,3,3,2,6,2,5,8,5,10,5,8,9,3,4,13,17,5,7,6,5,10,6,12,7,10,4,11,5,9,5,1,3,2,2,1,0,0 +0,0,1,3,1,5,4,2,4,8,3,7,3,13,6,11,16,16,17,13,13,11,7,17,16,7,4,12,9,10,10,9,5,7,3,2,3,2,1,1 +0,1,1,1,1,2,3,4,8,5,6,8,6,13,7,14,7,12,15,10,5,7,6,6,13,11,10,4,6,11,2,4,2,7,5,5,1,1,0,0 +0,0,2,2,3,2,3,1,8,9,6,6,10,12,6,9,7,12,11,17,15,18,15,13,15,3,11,9,8,10,2,2,3,7,2,2,4,2,2,0 +0,1,0,2,2,3,5,3,3,5,5,4,12,5,10,4,6,10,10,6,13,9,13,12,13,12,11,8,9,9,8,9,5,3,2,2,1,0,0,1 +0,1,1,3,1,5,4,4,6,6,10,10,8,4,4,11,15,6,6,7,10,15,11,17,6,13,7,9,11,6,10,2,3,2,2,5,1,1,0,1 +0,0,0,3,3,2,2,7,7,9,2,8,4,3,7,12,5,5,4,18,19,9,15,13,11,14,9,7,10,6,7,5,8,7,5,1,1,0,2,0 +0,0,2,1,1,5,5,1,7,9,3,9,5,6,8,8,12,4,12,14,18,5,7,11,16,14,12,11,8,5,3,9,2,4,6,4,4,1,2,0 +0,1,0,2,1,2,5,5,2,2,3,11,5,5,6,3,6,9,10,7,14,8,7,7,14,14,5,10,5,8,9,9,6,5,1,1,3,3,1,0 +0,1,1,2,3,4,1,5,6,7,4,2,11,11,11,8,13,4,11,16,12,18,18,11,9,5,3,7,7,11,7,5,4,5,3,1,2,2,1,1 +0,1,2,2,4,2,2,4,4,7,9,8,12,3,6,7,14,9,7,13,9,11,10,12,10,4,4,11,5,7,8,4,6,1,4,5,3,0,1,1 +0,1,2,3,4,1,2,7,5,3,8,7,6,12,6,13,14,11,16,8,8,9,5,15,4,11,10,3,9,7,9,3,7,1,4,5,4,0,1,0 +0,0,1,1,1,5,5,5,8,7,10,10,11,3,3,7,16,8,9,18,13,5,18,4,16,13,5,7,9,4,5,9,6,2,2,3,3,1,0,1 +0,1,1,0,1,3,1,5,5,8,9,6,8,12,13,10,10,11,9,13,14,11,12,15,8,4,11,4,8,8,8,6,6,4,2,5,4,0,1,1 +0,0,0,0,4,4,6,7,7,8,4,5,7,3,14,9,5,15,13,12,20,16,14,15,6,13,6,13,5,4,5,3,2,5,2,4,4,0,0,0 +0,1,0,3,1,3,2,5,5,5,6,2,5,7,9,13,6,17,16,4,15,5,11,13,6,15,9,8,9,9,5,7,5,6,5,4,2,0,2,0 +0,0,1,3,3,3,2,5,3,4,2,11,4,7,11,3,12,4,10,17,6,17,9,7,12,8,8,6,10,5,4,3,3,1,2,4,1,0,2,1 +0,1,1,0,2,3,3,3,6,5,4,11,4,4,9,7,9,16,6,13,10,9,6,13,5,7,12,8,11,7,9,5,6,7,5,1,4,2,2,0 +0,0,1,0,4,2,2,2,3,9,2,9,3,3,9,12,16,9,13,5,15,16,13,5,15,9,11,11,11,7,10,7,6,6,1,2,2,2,0,0 +0,1,2,3,2,1,5,6,5,6,10,5,5,12,6,5,11,15,17,12,11,5,18,9,6,10,5,11,9,6,5,8,8,4,4,2,4,3,2,0 +0,1,0,0,2,1,1,1,4,9,10,5,7,3,5,9,12,17,7,10,9,9,18,13,5,7,3,7,7,8,6,8,6,2,1,3,3,2,0,1 +0,0,0,0,1,1,5,5,8,4,9,2,12,3,4,4,5,5,13,15,17,12,5,17,5,5,11,6,4,8,3,9,3,1,2,2,3,3,2,0 +0,1,2,1,4,1,6,6,3,3,4,9,8,10,9,7,16,7,5,4,20,18,7,6,7,6,11,7,11,9,3,9,5,3,5,5,3,1,2,1 +0,0,0,2,3,1,2,6,3,6,10,11,6,13,5,9,11,8,13,16,20,8,13,5,13,6,6,8,5,3,2,5,3,6,5,4,2,3,2,1 +0,1,1,1,2,2,5,5,5,9,6,4,6,12,4,5,11,17,5,19,10,6,8,7,10,13,14,4,8,2,7,3,2,5,4,5,4,3,0,0 +0,0,0,3,1,1,6,3,4,8,10,10,6,12,13,9,6,10,18,8,8,4,4,15,6,7,14,11,5,2,8,3,3,6,4,1,3,1,1,1 +0,0,1,0,4,1,2,4,7,2,6,7,7,7,13,7,11,7,8,8,5,11,10,12,14,10,6,9,11,8,4,2,8,7,4,2,3,0,0,0 +0,0,2,0,4,3,5,7,5,7,3,8,6,3,11,11,6,9,6,10,5,14,17,17,10,8,3,12,11,10,10,2,8,3,1,1,2,1,2,1 +0,1,2,0,4,3,6,5,2,9,7,2,8,11,9,9,8,14,17,8,15,13,4,4,8,11,13,3,12,2,7,5,3,7,4,1,3,2,0,1 +0,0,0,2,3,2,3,6,3,7,7,3,12,5,7,12,12,15,9,18,11,13,5,15,8,11,3,11,12,11,2,2,2,5,2,3,3,1,1,0 +0,1,2,0,4,2,2,7,5,5,9,8,4,9,7,7,9,12,10,6,18,14,14,10,6,8,4,5,5,10,5,9,7,1,1,4,2,0,0,1 diff --git a/novice/python/inflammation-10.csv b/novice/python/inflammation-10.csv new file mode 100644 index 0000000..cfb7423 --- /dev/null +++ b/novice/python/inflammation-10.csv @@ -0,0 +1,60 @@ +0,1,0,0,3,2,3,6,7,5,10,9,10,9,5,15,12,14,13,9,15,17,4,4,4,8,5,4,7,10,3,4,4,1,1,3,1,3,0,0 +0,1,1,3,2,3,4,3,8,3,4,7,10,5,6,6,8,16,14,5,10,11,7,11,14,13,6,6,3,4,5,3,5,2,1,3,4,0,1,0 +0,1,0,3,1,1,3,5,6,2,2,8,11,9,14,4,13,6,16,15,8,7,6,17,15,14,14,10,10,10,4,4,6,7,4,5,1,0,0,1 +0,0,2,3,3,1,5,6,8,9,6,9,4,13,5,7,15,4,12,8,8,8,15,10,12,14,3,13,12,2,10,4,6,3,3,4,3,0,1,0 +0,0,2,0,1,4,1,3,4,7,8,9,9,11,7,4,13,14,11,16,11,13,10,6,12,11,11,5,11,10,7,4,4,5,1,5,4,3,1,0 +0,1,0,0,1,5,2,3,5,2,10,9,3,12,14,6,13,8,4,9,19,5,11,5,15,15,10,6,4,9,9,7,7,3,5,5,2,0,0,0 +0,1,1,3,3,1,2,5,7,4,10,7,12,3,3,12,10,6,18,5,9,7,11,14,9,5,10,8,9,9,6,7,6,1,6,1,2,0,2,1 +0,0,1,2,4,2,6,6,2,3,10,3,12,7,14,9,15,11,8,17,9,8,7,8,15,3,9,7,10,7,9,4,6,7,5,1,2,1,2,0 +0,0,0,2,3,2,5,6,4,4,6,10,9,6,8,5,11,10,10,8,11,11,13,6,4,7,9,5,8,8,3,2,2,2,4,5,1,2,1,0 +0,0,1,0,2,5,6,2,6,9,6,5,8,3,10,11,8,8,6,7,6,13,9,12,10,4,4,8,11,11,5,8,6,2,5,2,2,3,0,1 +0,0,0,1,4,4,1,7,5,3,3,2,4,5,6,13,9,10,4,19,5,9,16,16,5,10,4,7,8,4,6,2,5,4,5,1,2,3,2,0 +0,0,1,1,4,4,4,4,6,3,3,7,11,12,8,6,9,13,9,13,15,8,16,16,9,4,7,5,4,9,8,2,3,3,1,4,3,2,0,1 +0,1,2,2,1,3,2,3,4,5,10,2,4,6,11,10,13,9,15,18,14,6,12,9,16,9,10,11,5,7,3,3,8,3,4,5,4,1,0,0 +0,0,0,2,4,3,4,2,7,7,8,5,12,5,13,5,11,8,18,13,20,19,10,6,15,15,8,6,7,6,9,3,7,3,5,2,1,1,1,1 +0,0,1,0,3,2,1,4,7,9,4,5,7,13,12,15,13,14,12,7,19,10,7,14,13,13,14,11,11,4,6,8,6,7,6,3,4,2,2,1 +0,0,0,0,2,2,3,1,5,4,4,11,8,5,10,15,16,7,5,10,7,16,14,12,7,10,11,6,11,4,5,4,4,3,1,1,3,2,1,1 +0,1,2,3,4,5,5,7,2,7,5,10,4,13,5,10,6,5,8,11,18,9,13,9,8,14,11,7,6,6,10,9,6,3,6,3,3,3,0,1 +0,1,2,0,2,5,2,3,7,6,8,6,11,11,13,6,12,7,4,12,6,4,8,5,16,11,13,12,7,3,9,7,8,4,4,2,1,3,2,0 +0,1,0,3,4,2,4,4,3,3,10,7,8,7,11,10,12,10,17,7,10,17,12,9,16,11,10,4,6,4,9,2,2,6,1,2,2,0,2,0 +0,1,1,1,1,3,4,3,8,6,4,8,11,3,6,13,9,6,18,9,11,5,12,14,10,4,10,3,12,2,3,7,3,6,6,5,3,2,1,1 +0,1,0,3,2,3,4,5,8,2,2,4,9,10,12,15,12,8,16,5,7,15,12,14,14,12,5,7,11,4,8,2,6,2,1,5,2,2,1,1 +0,1,2,1,4,4,1,2,5,6,10,7,3,10,13,15,7,17,13,4,17,19,16,7,14,12,8,6,3,2,9,7,3,2,4,2,1,2,2,0 +0,0,1,1,1,5,4,5,6,7,8,10,4,8,5,14,13,6,15,17,16,13,5,16,8,14,4,7,7,6,7,2,8,2,6,1,2,2,2,1 +0,1,2,1,1,2,1,5,2,6,2,8,3,3,5,7,10,7,10,15,7,11,10,16,10,8,7,9,9,6,7,5,3,4,5,3,4,3,2,0 +0,0,2,1,3,3,3,6,7,4,3,6,3,6,4,8,5,10,5,6,20,10,18,4,13,12,8,11,4,6,8,5,2,3,5,4,1,0,0,0 +0,1,0,0,1,2,5,7,6,3,8,7,6,3,8,6,14,8,11,17,19,6,18,17,12,10,8,11,12,4,10,2,4,5,6,4,1,2,0,1 +0,1,0,2,2,1,4,3,5,5,3,10,6,6,6,13,6,14,10,8,12,4,10,11,9,4,7,5,4,5,3,3,5,7,2,2,2,2,2,0 +0,1,2,1,3,3,6,2,7,4,6,9,8,5,4,13,4,12,13,5,10,5,10,9,6,14,8,9,3,5,5,2,7,5,4,3,3,3,1,0 +0,1,2,0,3,4,4,6,8,6,8,9,9,10,11,13,16,5,6,15,10,16,14,11,16,15,10,9,10,10,5,5,8,7,5,3,2,3,1,1 +0,0,1,1,3,5,3,4,3,4,8,3,8,12,13,10,10,6,5,18,17,17,7,7,14,6,3,9,11,2,2,3,2,2,2,3,4,1,1,0 +0,1,1,3,1,1,6,3,3,5,10,7,12,7,14,4,11,17,6,9,17,4,15,15,4,5,8,6,7,7,2,2,5,4,3,1,4,0,2,0 +0,1,2,3,3,4,6,6,8,7,3,5,3,9,9,12,7,15,4,5,16,10,6,11,10,12,5,7,12,10,2,4,7,6,2,4,2,1,0,0 +0,0,1,3,4,4,2,4,8,5,7,6,4,3,3,9,15,8,10,15,6,11,18,8,15,13,4,8,10,10,9,4,4,4,2,5,4,2,1,0 +0,1,2,1,2,1,5,6,5,7,6,7,12,5,7,13,11,13,13,19,14,15,6,10,10,4,10,10,4,5,10,3,4,6,5,1,1,2,1,0 +0,1,0,3,4,4,5,5,8,6,9,7,11,11,8,7,5,12,15,9,11,7,8,12,8,15,9,4,10,8,3,7,3,6,1,5,2,3,1,0 +0,1,1,1,1,4,5,3,3,6,9,7,6,8,4,12,5,4,13,7,13,15,18,4,7,15,6,8,8,8,8,4,6,7,2,3,3,0,0,1 +0,1,0,2,3,3,5,6,5,2,8,11,10,13,3,7,9,16,11,12,8,16,18,11,10,13,10,8,8,10,6,5,3,1,2,3,2,2,1,0 +0,1,0,1,1,2,4,6,5,8,10,9,5,10,9,15,8,6,11,10,8,7,17,7,13,10,9,6,9,9,2,8,7,3,1,3,1,0,2,1 +0,1,2,2,2,5,3,2,2,8,3,11,7,9,5,5,6,16,16,11,17,19,14,8,9,13,12,5,7,9,10,2,2,6,1,5,1,1,1,1 +0,0,1,0,1,1,6,1,6,9,6,4,4,4,4,5,4,15,18,11,7,4,4,17,4,12,13,12,7,4,7,3,7,6,4,4,3,2,2,1 +0,1,2,1,2,2,5,1,3,7,5,8,5,7,9,4,14,8,18,14,9,10,12,11,8,5,13,6,10,6,7,8,4,6,4,3,2,1,1,0 +0,0,1,2,4,5,6,7,4,7,9,2,11,10,14,12,12,7,11,14,13,12,14,17,6,7,3,11,4,8,3,3,3,7,6,4,4,3,2,1 +0,1,2,1,4,5,3,7,3,4,10,5,10,8,11,4,10,4,13,7,12,16,9,17,11,11,11,13,9,3,6,9,7,2,3,3,3,1,1,0 +0,0,0,0,1,3,6,2,4,5,10,2,4,3,5,8,16,16,16,12,18,18,14,8,13,3,3,9,7,3,3,8,8,5,1,5,3,1,2,1 +0,1,0,1,3,3,4,7,3,8,9,7,5,8,3,10,5,7,15,13,5,4,6,6,16,7,3,4,9,11,9,9,4,1,2,4,2,3,2,0 +0,1,1,3,4,3,6,6,2,9,9,11,9,10,13,9,7,5,15,18,8,16,18,13,10,6,4,6,6,10,6,5,8,1,2,4,3,1,0,1 +0,0,2,0,4,1,1,3,3,7,5,2,4,6,6,11,7,4,5,15,19,11,13,8,8,13,6,13,7,4,9,5,2,2,6,2,3,3,2,0 +0,1,0,1,1,2,3,3,7,3,5,7,12,10,8,3,16,5,14,10,10,9,8,15,6,12,4,7,8,10,7,4,4,6,6,1,3,3,1,0 +0,0,0,1,1,4,4,1,6,6,3,3,12,6,13,11,16,12,8,8,8,18,5,14,9,15,7,13,6,9,2,4,3,6,6,3,1,0,0,0 +0,1,1,2,2,4,6,6,8,6,6,6,9,5,9,14,15,7,18,4,8,7,6,11,6,10,3,7,7,10,7,9,5,3,4,2,3,3,1,1 +0,1,0,2,3,4,5,1,2,4,5,2,7,13,9,4,16,12,5,11,8,6,16,6,16,8,8,10,6,8,8,9,4,5,2,1,4,1,0,1 +0,0,2,0,4,2,5,1,2,6,10,3,6,13,4,13,10,10,6,6,13,6,6,8,14,12,13,10,11,8,3,4,8,7,2,3,2,0,1,1 +0,1,2,1,2,3,2,5,7,2,2,2,5,8,7,7,6,17,18,13,7,13,17,12,6,13,5,13,3,2,4,5,7,7,1,1,3,2,1,0 +0,0,2,2,1,3,6,6,4,3,8,5,4,9,13,4,8,15,7,7,6,19,12,16,10,14,3,10,3,9,7,7,7,2,4,3,1,1,2,1 +0,0,0,2,1,4,3,6,7,9,5,7,11,3,7,6,10,5,6,15,10,14,10,5,15,15,7,13,5,5,9,2,7,5,4,3,4,1,1,0 +0,1,1,3,1,2,4,6,5,5,6,8,10,7,8,11,15,17,4,10,10,10,6,5,5,11,6,7,11,6,3,4,8,1,3,4,2,2,1,0 +0,1,1,0,1,1,2,2,4,3,2,11,4,4,13,3,8,7,5,5,18,9,18,17,7,7,7,10,5,10,2,9,3,4,4,3,1,2,0,0 +0,1,1,2,3,5,2,2,7,8,7,5,3,13,3,14,11,14,14,14,14,5,13,15,6,12,6,8,9,8,9,7,4,7,1,2,1,2,0,0 +0,0,2,2,3,1,2,6,3,2,7,8,6,11,4,12,12,11,18,14,6,11,8,16,9,3,7,13,6,3,4,3,3,2,1,1,3,2,2,1 +0,0,2,0,1,2,2,7,3,2,4,4,9,7,6,8,10,5,14,5,16,16,8,6,5,3,5,9,12,6,8,7,3,6,3,1,1,3,2,0 diff --git a/novice/python/inflammation-11.csv b/novice/python/inflammation-11.csv new file mode 100644 index 0000000..a304e01 --- /dev/null +++ b/novice/python/inflammation-11.csv @@ -0,0 +1,60 @@ +0,1,0,3,2,4,1,7,2,3,5,9,6,4,12,10,6,8,17,8,7,6,7,10,13,6,14,3,4,11,9,7,6,4,2,5,1,1,2,0 +0,0,1,0,3,3,1,6,4,3,2,8,7,12,8,11,11,13,4,15,13,4,15,17,12,7,9,8,12,5,10,3,8,7,3,5,4,3,0,1 +0,0,0,1,3,3,3,7,7,3,9,9,9,9,3,12,8,11,14,4,18,9,15,14,4,13,13,5,11,9,5,5,4,7,2,5,4,0,2,1 +0,1,1,3,4,4,2,5,4,3,7,2,10,4,6,11,16,8,8,10,17,4,7,7,13,4,11,9,3,10,6,5,6,4,6,4,4,0,2,1 +0,1,1,2,1,5,1,1,4,6,9,6,4,11,5,8,5,16,9,16,13,5,5,17,8,10,3,13,7,8,8,4,6,1,4,2,2,2,1,1 +0,0,2,0,3,1,2,3,7,5,5,7,7,8,4,10,12,15,18,13,17,10,12,8,16,3,6,4,7,4,6,6,4,1,2,5,2,2,1,1 +0,0,1,1,2,3,3,7,2,9,6,10,8,10,7,7,15,16,16,7,9,6,14,13,16,10,5,12,3,9,9,6,4,6,3,5,3,0,0,1 +0,0,2,1,2,5,5,4,4,7,2,6,7,10,14,4,4,10,10,15,5,18,12,15,4,7,6,5,4,6,7,7,4,7,4,4,4,1,1,1 +0,1,2,1,3,5,3,3,4,3,7,6,3,11,7,8,8,15,10,12,5,10,17,9,16,3,12,4,10,4,10,6,2,3,3,2,2,1,2,0 +0,0,1,3,2,1,3,5,5,4,3,9,4,8,4,13,13,11,11,16,8,13,10,5,4,7,12,4,5,3,7,7,2,5,1,1,3,2,0,1 +0,1,0,3,3,4,4,5,5,9,5,4,10,10,3,14,11,13,16,15,12,16,12,8,12,6,11,8,10,8,9,8,3,7,3,3,4,1,2,0 +0,1,0,2,3,2,2,5,5,2,6,6,11,12,4,12,11,17,11,18,10,12,7,6,4,15,7,8,10,5,10,2,5,7,6,1,4,0,2,0 +0,1,1,1,4,1,4,6,7,7,3,11,12,10,12,13,7,15,6,7,7,4,11,16,16,4,13,4,7,2,4,8,2,1,1,4,1,3,1,1 +0,0,2,3,3,4,4,6,6,5,9,10,10,10,14,11,12,5,5,6,16,14,4,17,10,13,14,12,9,2,10,8,4,7,3,3,3,3,1,1 +0,1,1,0,4,5,6,7,4,3,8,8,3,4,8,8,7,8,14,11,13,8,13,10,8,9,11,12,6,8,5,9,2,4,1,1,3,3,2,0 +0,0,1,2,3,3,2,7,5,3,3,5,10,7,5,8,8,7,9,8,15,7,14,11,10,5,13,8,6,10,3,7,6,1,6,3,2,1,0,0 +0,0,0,2,2,4,4,1,5,4,2,11,7,4,14,15,16,15,7,10,19,9,7,16,11,5,11,10,5,5,6,6,4,7,4,2,4,0,0,0 +0,0,2,2,2,5,1,4,5,4,6,4,10,5,12,15,10,14,13,18,9,17,8,15,6,13,4,8,5,11,2,5,6,7,1,2,4,0,1,1 +0,0,1,3,4,3,5,3,8,5,2,2,11,8,12,10,15,13,16,16,9,12,17,5,15,7,12,10,12,7,7,6,3,5,3,3,3,3,2,1 +0,0,1,1,1,5,6,6,8,7,9,4,9,7,13,15,8,6,15,14,13,9,8,12,11,7,8,10,5,3,3,5,2,1,3,3,1,3,0,1 +0,1,0,1,2,5,2,4,7,7,8,9,4,13,9,12,11,17,5,16,9,8,8,15,4,15,9,10,11,4,10,8,7,5,5,5,4,0,2,0 +0,0,2,2,3,5,1,6,6,9,2,9,7,12,12,12,6,5,6,13,9,7,14,10,12,8,4,11,4,6,4,7,6,6,3,2,1,1,1,0 +0,1,0,0,3,1,3,6,7,9,3,6,8,9,13,3,7,7,4,12,10,10,5,4,9,10,4,4,6,2,4,9,5,4,6,3,1,3,1,0 +0,1,0,3,2,1,6,6,7,9,4,7,6,12,6,12,13,11,14,17,8,13,18,6,16,12,3,10,5,11,3,2,4,3,4,3,2,3,1,0 +0,0,2,1,3,3,3,6,6,8,2,5,5,9,6,11,14,13,7,7,15,17,5,10,10,9,5,4,12,11,10,7,3,6,5,1,3,2,0,0 +0,1,0,2,3,5,3,1,7,3,4,3,12,11,4,5,5,4,5,18,11,10,5,8,9,3,5,13,10,9,8,3,5,5,4,2,1,0,2,1 +0,1,0,2,4,3,6,3,7,6,2,3,6,5,4,4,9,5,14,4,17,14,9,14,5,12,13,11,4,4,4,3,2,4,4,5,3,2,1,0 +0,0,0,0,3,4,6,2,8,8,8,7,9,10,8,7,15,7,9,5,20,13,16,14,7,12,9,11,8,7,6,6,7,4,3,1,4,0,2,1 +0,0,2,1,2,2,5,4,2,6,8,11,9,7,3,3,13,7,12,17,15,19,13,6,16,11,5,5,8,8,5,9,2,3,2,2,2,1,0,1 +0,0,1,0,4,5,3,5,7,8,8,6,10,13,3,15,16,17,14,8,7,10,11,15,5,7,11,7,12,10,4,4,7,6,2,3,4,0,2,0 +0,1,2,3,2,1,1,3,6,9,7,7,3,13,14,12,10,17,18,11,10,9,9,17,11,5,14,4,10,9,7,2,3,3,3,4,4,2,1,0 +0,0,1,1,1,5,3,6,7,6,2,9,9,13,13,5,5,17,11,15,19,19,6,16,5,8,9,10,9,11,4,5,5,3,2,4,2,0,1,1 +0,1,2,3,1,4,1,7,6,4,3,4,10,13,14,15,10,4,17,10,5,10,8,7,16,13,13,10,4,2,10,6,2,1,2,1,2,1,1,0 +0,1,2,2,2,1,3,3,6,3,10,10,10,5,4,9,9,13,9,8,14,11,16,12,7,10,14,10,10,4,6,2,7,3,4,3,2,2,2,1 +0,1,2,2,3,5,2,2,8,8,4,7,12,6,11,5,5,5,15,18,6,7,12,16,6,7,14,8,7,8,4,2,3,5,4,5,2,1,2,0 +0,1,1,2,2,2,1,4,3,4,10,5,11,9,10,3,5,10,7,9,20,17,12,4,12,6,4,13,6,11,8,4,5,7,5,4,2,1,2,0 +0,0,2,0,2,3,2,2,3,8,6,10,12,6,6,8,7,5,12,13,17,5,12,16,15,8,3,11,5,7,5,7,2,5,4,3,1,1,2,1 +0,1,1,0,2,2,3,2,5,3,8,3,9,5,5,10,9,9,17,13,12,6,17,16,6,4,13,12,7,3,9,8,4,1,5,3,1,0,1,0 +0,1,1,3,4,5,4,3,8,8,7,11,11,10,4,11,10,7,7,9,7,12,5,5,6,11,3,8,3,2,5,7,4,1,6,1,1,0,0,0 +0,1,2,1,1,4,1,7,5,9,3,9,6,9,9,8,11,6,11,6,19,6,10,8,16,14,10,13,4,7,6,8,8,5,2,4,1,2,0,0 +0,0,0,3,2,4,5,5,3,7,7,5,9,12,3,12,15,9,14,4,12,11,13,16,10,12,9,13,10,10,4,8,2,1,3,2,3,0,2,0 +0,0,1,3,1,1,6,3,3,8,4,6,9,5,10,8,15,16,7,7,9,5,8,5,5,10,3,7,10,2,5,6,8,1,4,1,3,3,1,1 +0,1,1,0,2,3,2,2,3,7,7,9,7,10,14,6,4,4,10,11,15,4,8,9,9,3,14,13,3,11,4,3,3,6,4,3,4,2,0,1 +0,1,0,2,1,3,2,4,8,2,5,8,4,11,6,3,5,12,10,14,17,9,8,5,11,14,8,7,9,4,2,3,8,7,5,3,4,3,0,1 +0,0,2,1,4,3,6,7,3,5,10,3,12,9,10,13,13,4,8,10,8,17,17,6,12,5,3,3,4,11,5,5,4,1,2,1,2,1,2,0 +0,0,0,2,4,3,2,5,4,9,6,2,5,9,3,12,4,14,17,12,11,12,15,15,15,11,4,9,8,3,9,9,6,2,6,2,2,0,1,0 +0,0,0,0,1,2,4,7,4,9,3,7,11,6,13,13,12,5,16,16,9,16,8,6,12,14,13,4,5,7,2,7,4,3,2,3,2,1,0,0 +0,1,0,3,2,5,1,2,6,5,9,2,9,10,3,4,12,7,13,12,15,7,18,8,13,8,9,11,3,9,9,6,3,3,2,3,4,2,1,1 +0,1,1,0,2,1,4,3,6,5,10,8,12,7,13,11,8,8,4,5,6,6,6,17,11,3,13,11,8,7,8,9,4,7,1,3,2,2,1,0 +0,1,2,1,2,2,3,3,8,7,5,11,5,10,13,12,6,16,5,17,15,15,16,12,13,13,13,12,8,10,9,3,3,7,5,3,2,2,2,0 +0,0,1,0,4,2,5,7,2,9,6,9,6,8,3,13,15,9,16,8,13,8,5,17,6,13,14,9,5,11,2,6,4,5,2,5,3,1,1,0 +0,0,2,1,2,2,5,4,8,5,10,3,4,12,9,4,11,15,15,6,5,9,15,4,14,12,10,10,6,8,10,7,3,2,3,5,4,0,2,1 +0,0,2,1,4,4,2,5,5,5,7,9,4,10,13,11,15,12,10,15,8,4,6,7,14,6,10,10,7,11,7,5,7,4,3,2,2,3,1,1 +0,0,1,2,2,3,4,5,5,6,3,4,5,5,11,3,7,14,6,8,8,19,4,8,10,9,8,4,10,8,10,4,8,6,2,2,3,0,2,1 +0,0,0,3,2,4,6,5,6,7,4,6,4,11,12,13,8,13,8,16,11,5,7,5,8,11,7,13,5,9,10,9,2,2,2,3,1,1,0,0 +0,1,2,2,2,4,6,6,4,2,4,11,3,6,12,15,4,4,16,9,20,16,13,13,8,8,7,6,5,7,2,9,8,3,5,1,1,0,1,0 +0,0,2,3,4,4,6,3,8,5,10,2,11,6,3,7,12,15,13,8,20,8,12,6,11,13,6,5,9,7,2,7,3,1,1,3,4,2,2,1 +0,0,1,1,4,1,3,6,8,3,8,4,12,9,3,15,10,4,7,18,8,5,17,5,11,10,13,13,5,5,10,8,8,4,5,3,4,3,0,1 +0,0,1,1,4,5,3,1,7,3,7,10,8,9,11,5,11,7,11,13,15,6,15,17,6,10,12,11,11,3,3,9,8,1,3,2,1,3,1,1 +0,0,2,1,1,3,3,6,4,2,3,2,4,13,9,4,16,10,4,18,15,13,14,6,9,8,9,7,12,5,4,2,7,5,5,3,3,0,1,1 diff --git a/novice/python/inflammation-12.csv b/novice/python/inflammation-12.csv new file mode 100644 index 0000000..42c877d --- /dev/null +++ b/novice/python/inflammation-12.csv @@ -0,0 +1,60 @@ +0,0,2,3,3,1,6,6,3,6,10,6,8,5,5,8,16,12,13,5,13,18,11,12,11,9,10,13,9,4,4,7,7,3,1,5,3,1,1,1 +0,1,0,1,1,1,1,1,7,7,4,2,7,8,4,6,16,17,13,5,17,5,17,8,5,10,3,5,5,5,8,9,4,4,3,4,1,3,0,0 +0,1,2,0,4,5,6,2,5,3,8,3,8,11,7,9,7,4,8,11,5,18,4,5,6,6,5,13,7,4,7,9,4,3,5,5,2,2,2,1 +0,0,2,0,3,2,6,7,5,6,8,5,8,11,13,8,5,11,10,11,9,12,17,5,4,15,7,5,11,3,5,8,4,4,5,4,2,0,2,1 +0,1,1,3,3,1,1,3,4,3,6,3,9,6,6,7,5,15,18,4,9,12,9,4,9,4,9,11,10,8,10,2,6,1,6,4,4,2,0,1 +0,1,0,0,4,2,2,4,4,6,5,9,8,3,14,11,5,7,5,14,9,7,15,10,11,5,11,12,4,7,10,6,6,2,6,3,4,0,2,1 +0,1,2,1,3,1,5,3,8,6,3,3,12,13,12,6,15,10,5,4,16,10,12,14,15,10,6,4,8,7,7,4,5,4,3,5,4,0,0,0 +0,1,1,0,4,5,5,2,7,5,3,5,3,8,11,13,15,9,14,19,16,11,10,17,7,8,3,7,8,9,9,5,4,2,4,1,4,3,1,0 +0,0,2,2,3,5,1,4,6,4,7,7,3,13,7,3,7,6,18,18,10,12,17,8,7,15,13,13,11,4,9,9,8,1,3,1,4,2,1,1 +0,0,1,2,4,5,1,7,7,7,8,2,8,13,10,10,5,16,17,13,8,6,9,5,11,15,5,6,5,10,2,3,8,4,6,4,2,2,0,1 +0,0,2,3,3,2,3,4,8,7,6,11,5,6,8,8,9,16,7,13,14,11,17,9,9,3,11,8,3,6,4,9,8,3,6,3,4,3,2,0 +0,0,1,3,4,1,3,4,8,2,9,6,3,11,11,6,8,6,17,13,17,12,5,11,4,15,7,4,9,4,8,6,3,4,1,5,4,1,1,0 +0,0,0,0,3,4,5,6,6,9,10,6,7,12,9,6,15,15,9,7,10,14,15,10,5,15,13,12,8,5,7,5,4,2,2,1,2,1,0,0 +0,1,0,0,3,5,2,4,3,2,6,5,9,3,6,13,12,16,10,4,15,10,4,15,13,15,4,3,11,2,8,4,5,2,5,1,3,0,0,1 +0,0,2,3,2,2,6,5,2,2,9,2,6,12,14,12,6,6,17,4,8,10,8,10,6,12,13,11,8,5,10,8,7,1,5,2,1,2,1,1 +0,0,0,0,3,2,2,3,7,9,4,9,4,10,6,14,6,10,6,10,12,13,5,6,12,14,9,8,11,3,10,2,5,6,3,5,3,3,1,0 +0,1,1,2,4,2,6,4,8,9,8,6,5,9,12,8,9,6,11,8,6,18,4,16,11,14,9,10,3,10,9,6,6,1,5,2,4,1,1,0 +0,0,0,1,3,3,3,6,7,8,10,8,11,10,10,10,5,6,5,9,15,11,5,17,6,13,5,11,11,3,3,3,6,1,3,2,1,2,2,1 +0,0,1,0,1,5,3,1,8,3,8,5,3,6,7,14,14,5,7,17,13,14,11,6,14,11,10,13,8,6,3,8,3,5,2,3,4,3,0,0 +0,1,1,1,1,4,3,6,4,4,6,8,6,13,10,12,5,15,17,8,15,16,5,10,4,12,12,13,10,4,7,7,2,4,2,2,4,3,2,0 +0,1,1,3,4,3,3,4,7,2,3,10,4,8,10,6,14,5,9,5,14,5,4,17,11,11,7,7,12,8,10,6,6,2,3,1,2,1,2,1 +0,1,2,0,2,4,3,1,7,2,10,2,11,7,3,13,7,11,9,14,10,7,14,4,5,10,8,12,8,6,10,9,2,4,4,5,3,0,1,0 +0,1,0,1,2,4,3,6,5,5,8,11,6,5,11,5,15,7,11,15,17,5,16,5,11,7,11,4,12,7,8,3,8,5,3,1,1,3,0,0 +0,1,2,0,4,5,6,1,5,2,4,4,8,9,7,12,8,12,9,7,5,6,14,10,14,13,10,8,4,9,8,4,3,5,5,3,4,1,0,0 +0,1,1,1,4,3,1,3,6,5,6,2,5,10,8,11,4,8,4,15,20,19,11,4,10,7,8,10,6,6,3,3,6,1,4,3,3,0,2,1 +0,1,2,1,3,1,4,1,4,6,7,2,11,13,6,12,13,14,12,18,18,7,12,6,14,15,3,11,6,5,7,4,6,1,2,4,3,2,2,1 +0,1,1,1,4,2,6,3,7,7,7,2,6,11,3,6,10,15,10,16,6,17,16,7,8,3,10,7,3,8,6,3,7,2,5,5,2,1,1,1 +0,0,2,2,4,5,4,7,6,8,4,8,3,3,3,13,5,16,5,19,16,16,7,13,16,11,7,12,7,11,5,9,5,7,2,4,3,1,0,0 +0,0,2,3,3,5,1,6,3,8,6,6,4,10,5,11,6,8,11,12,12,7,18,8,13,9,4,7,6,6,2,5,4,3,3,1,2,0,1,0 +0,1,1,2,3,1,1,5,5,8,6,11,8,11,13,13,16,16,5,6,18,12,6,9,13,10,12,11,8,5,6,9,2,7,3,5,2,2,1,0 +0,0,1,2,3,1,3,2,2,9,9,10,11,5,5,3,7,16,8,11,9,15,4,12,4,5,9,9,3,3,10,3,7,6,1,3,2,1,0,1 +0,1,1,2,2,3,2,5,4,7,9,10,9,12,14,15,6,7,11,8,17,17,18,9,16,12,7,9,9,8,4,9,8,6,1,5,1,2,1,1 +0,0,1,2,2,2,5,3,4,5,6,10,11,11,12,9,14,10,15,9,14,14,5,15,9,14,13,3,7,10,4,5,5,7,4,3,2,1,1,1 +0,1,1,3,2,1,2,4,6,9,2,6,5,4,10,7,8,12,8,5,19,15,14,16,16,9,13,11,4,4,2,9,8,1,6,5,4,2,2,0 +0,0,0,0,4,5,1,1,7,2,6,9,11,13,4,6,6,4,9,7,17,6,4,16,12,10,5,9,3,2,4,8,8,1,3,5,2,1,2,0 +0,0,2,1,3,1,1,2,6,3,4,3,4,3,7,14,12,6,9,16,10,8,8,7,9,3,7,7,6,3,4,2,7,3,2,3,4,1,1,1 +0,1,0,1,2,2,5,2,5,8,8,7,5,6,13,15,5,6,5,19,6,8,7,12,12,6,10,9,7,3,7,7,3,1,4,2,1,1,0,0 +0,1,0,3,4,5,5,6,6,4,5,9,9,9,4,6,16,14,8,10,10,9,16,10,7,4,5,12,9,8,2,8,6,4,2,1,2,0,2,1 +0,1,0,2,3,2,5,1,7,4,6,3,6,3,9,5,12,5,7,12,6,6,5,17,5,15,12,7,11,6,2,8,3,2,1,3,4,2,2,1 +0,1,2,2,1,5,2,6,3,6,2,2,6,8,9,3,15,5,9,14,8,8,10,5,6,14,14,10,11,11,4,8,2,7,5,5,1,0,1,1 +0,0,0,1,3,3,5,4,3,5,7,3,9,10,13,12,14,13,4,14,17,17,6,4,5,12,3,9,6,6,7,4,5,2,2,2,4,3,1,1 +0,0,0,1,2,4,3,4,8,8,6,7,8,11,3,14,12,14,7,5,5,13,12,14,10,9,8,4,10,5,2,2,3,2,6,5,4,0,2,1 +0,0,0,2,4,4,6,5,2,2,2,7,7,3,12,8,14,11,10,5,16,4,8,10,13,7,8,12,12,4,2,8,4,5,5,2,4,3,2,0 +0,0,0,1,2,3,6,6,2,3,8,2,3,13,14,5,10,5,10,7,16,11,18,7,7,15,11,4,6,4,8,6,8,4,5,2,2,1,1,0 +0,0,0,2,4,3,1,7,4,3,10,8,4,7,14,11,10,13,12,6,13,6,17,11,8,14,9,6,7,7,4,3,5,3,1,4,2,0,1,1 +0,1,0,1,4,5,2,4,5,6,9,9,5,10,11,11,14,4,13,4,19,14,16,13,6,10,3,13,5,2,8,7,3,5,1,1,2,1,2,0 +0,0,2,2,1,1,4,5,3,7,8,10,10,13,5,9,6,7,5,5,10,15,10,17,14,8,12,6,8,7,3,5,5,3,5,4,2,0,2,0 +0,1,0,1,2,3,6,2,6,2,3,11,10,10,5,6,5,7,18,19,14,19,14,15,10,4,13,13,6,10,7,3,7,1,2,3,1,0,1,0 +0,0,0,1,3,1,5,2,5,8,9,2,10,8,5,11,10,17,8,18,7,19,8,13,10,14,8,11,6,5,6,4,3,5,2,3,3,3,1,1 +0,1,2,2,4,5,4,3,2,8,9,4,4,11,6,12,13,17,10,18,13,18,9,7,10,14,11,6,12,9,6,3,4,2,5,1,2,1,0,1 +0,0,2,1,2,4,4,1,8,3,9,6,3,13,9,6,14,15,9,17,14,12,12,4,12,3,11,9,11,10,8,6,8,2,2,3,2,1,1,0 +0,1,1,2,3,5,2,1,6,7,2,9,7,5,7,4,10,6,9,15,11,5,6,7,8,4,10,13,12,5,6,8,4,2,3,1,2,3,2,0 +0,1,0,2,1,1,6,2,8,9,5,11,6,12,11,9,7,16,14,18,8,4,7,5,14,10,4,9,4,2,7,5,4,6,3,4,4,2,0,1 +0,1,0,1,4,2,3,6,4,6,5,3,6,10,7,11,7,13,17,7,18,13,10,14,6,9,4,12,7,5,5,6,8,2,1,1,1,3,0,0 +0,0,0,3,1,1,2,4,7,7,6,11,3,5,8,11,14,12,6,7,13,9,6,5,5,15,6,7,11,9,6,5,6,3,4,3,3,0,1,0 +0,1,0,1,3,3,6,7,2,6,7,11,7,13,11,7,6,4,14,8,8,15,16,8,9,5,7,8,6,9,5,4,7,6,1,5,1,3,0,1 +0,0,1,3,4,1,4,5,7,7,2,3,7,7,6,15,14,8,17,4,20,16,14,4,9,9,4,9,10,7,8,7,6,6,3,4,1,1,2,1 +0,0,2,1,3,5,3,7,2,8,5,4,12,13,7,15,13,16,16,9,18,15,8,4,16,5,13,11,10,5,6,5,2,2,3,2,3,3,2,1 +0,1,0,2,1,5,5,2,6,5,6,7,5,7,13,6,10,8,18,5,7,14,15,7,16,12,8,3,11,11,10,3,3,3,2,2,1,0,0,1 +0,0,0,1,3,3,4,7,8,2,10,11,8,11,3,15,9,4,9,11,11,15,17,11,15,15,14,7,11,4,2,6,7,7,2,5,4,3,0,1 diff --git a/novice/python/readings-01.py b/novice/python/readings-01.py new file mode 100644 index 0000000..f259361 --- /dev/null +++ b/novice/python/readings-01.py @@ -0,0 +1,9 @@ +import sys +import numpy as np + +def main(): + script = sys.argv[0] + filename = sys.argv[1] + data = np.loadtxt(filename, delimiter=',') + for m in data.mean(axis=1): + print m diff --git a/novice/python/readings-02.py b/novice/python/readings-02.py new file mode 100644 index 0000000..ffa9ed2 --- /dev/null +++ b/novice/python/readings-02.py @@ -0,0 +1,11 @@ +import sys +import numpy as np + +def main(): + script = sys.argv[0] + filename = sys.argv[1] + data = np.loadtxt(filename, delimiter=',') + for m in data.mean(axis=1): + print m + +main() diff --git a/novice/python/readings-03.py b/novice/python/readings-03.py new file mode 100644 index 0000000..6ca7a4c --- /dev/null +++ b/novice/python/readings-03.py @@ -0,0 +1,11 @@ +import sys +import numpy as np + +def main(): + script = sys.argv[0] + for filename in sys.argv[1:]: + data = np.loadtxt(filename, delimiter=',') + for m in data.mean(axis=1): + print m + +main() diff --git a/novice/python/readings-04.py b/novice/python/readings-04.py new file mode 100644 index 0000000..404588d --- /dev/null +++ b/novice/python/readings-04.py @@ -0,0 +1,22 @@ +import sys +import numpy as np + +def main(): + script = sys.argv[0] + action = sys.argv[1] + filenames = sys.argv[2:] + + for f in filenames: + data = np.loadtxt(f, delimiter=',') + + if action == '--min': + values = data.min(axis=1) + elif action == '--mean': + values = data.mean(axis=1) + elif action == '--max': + values = data.max(axis=1) + + for m in values: + print m + +main() diff --git a/novice/python/readings-05.py b/novice/python/readings-05.py new file mode 100644 index 0000000..b1bc32c --- /dev/null +++ b/novice/python/readings-05.py @@ -0,0 +1,26 @@ +import sys +import numpy as np + +def main(): + script = sys.argv[0] + action = sys.argv[1] + filenames = sys.argv[2:] + assert action in ['--min', '--mean', '--max'], \ + 'Action is not one of --min, --mean, or --max: ' + action + for f in filenames: + process(f, action) + +def process(filename, action): + data = np.loadtxt(filename, delimiter=',') + + if action == '--min': + values = data.min(axis=1) + elif action == '--mean': + values = data.mean(axis=1) + elif action == '--max': + values = data.max(axis=1) + + for m in values: + print m + +main() diff --git a/novice/python/readings-06.py b/novice/python/readings-06.py new file mode 100644 index 0000000..9ec3687 --- /dev/null +++ b/novice/python/readings-06.py @@ -0,0 +1,29 @@ +import sys +import numpy as np + +def main(): + script = sys.argv[0] + action = sys.argv[1] + filenames = sys.argv[2:] + assert action in ['--min', '--mean', '--max'], \ + 'Action is not one of --min, --mean, or --max: ' + action + if len(filenames) == 0: + process(sys.stdin, action) + else: + for f in filenames: + process(f, action) + +def process(filename, action): + data = np.loadtxt(filename, delimiter=',') + + if action == '--min': + values = data.min(axis=1) + elif action == '--mean': + values = data.mean(axis=1) + elif action == '--max': + values = data.max(axis=1) + + for m in values: + print m + +main() diff --git a/novice/python/rectangle.py b/novice/python/rectangle.py new file mode 100644 index 0000000..7cd2bb7 --- /dev/null +++ b/novice/python/rectangle.py @@ -0,0 +1,3 @@ +def rectangle_area(coords): + x0, y0, x1, y1 = coords + return (x1 - x0) * (x1 - y0) diff --git a/novice/python/small-01.csv b/novice/python/small-01.csv new file mode 100644 index 0000000..4d65327 --- /dev/null +++ b/novice/python/small-01.csv @@ -0,0 +1,2 @@ +0,0,1 +0,1,2 diff --git a/novice/python/small-02.csv b/novice/python/small-02.csv new file mode 100644 index 0000000..8fa62db --- /dev/null +++ b/novice/python/small-02.csv @@ -0,0 +1,2 @@ +9,17,15 +20,8,5 diff --git a/novice/python/small-03.csv b/novice/python/small-03.csv new file mode 100644 index 0000000..ea233a3 --- /dev/null +++ b/novice/python/small-03.csv @@ -0,0 +1,2 @@ +0,2,0 +1,1,0 diff --git a/novice/python/spatial-intro.ipynb b/novice/python/spatial-intro.ipynb new file mode 100644 index 0000000..93b2e5d --- /dev/null +++ b/novice/python/spatial-intro.ipynb @@ -0,0 +1,399 @@ + +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A note to students and instructors\n", + "\n", + "This lesson requires the [Basemap](http://matplotlib.org/basemap) toolkit for Matplotlib. This library is not distributed with Matplotlib directly. If you are using Continuum's Anaconda distribution, you can obtain the library using:\n", + "\n", + " conda install basemap\n", + " \n", + "If you are using Enthought Canopy and have the full version or an academic license, Basemap should already be installed on your system. Otherwise, you will need to follow the [installation instructions](http://matplotlib.org/basemap/users/installing.html) on the Basemap documentation. Using one of the two scientific distributions is preferred in most instances. " + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Visualizing spatial data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Original materials by Joshua Adelman; modified by Randy Olson" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are examining some simple spatial coordinate data, specifically the location of all of the previous Software Carpentry bootcamps. The data set is stored in [comma-separated values](../../gloss.html#csv) (CSV) format. After the header line (marked with a `#`), each row contains the latitude and longitude for each bootcamp, separated by a comma. \n", + "\n", + " # Latitude, Longitude\n", + " 43.661476,-79.395189\n", + " 39.332604,-76.623190\n", + " 45.703255, 13.718013\n", + " 43.661476,-79.395189\n", + " 39.166381,-86.526621\n", + " ...\n", + " \n", + "We want to:\n", + "\n", + "* Load the data into our analysis environment\n", + "* Inspect the data\n", + "* Visualize it in a meaningful context\n", + "\n", + "To do this, we'll begin to delve into working with Python and do a bit of programming." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Objectives\n", + "\n", + "* Explain what a library is, and what libraries are used for.\n", + "* Load a Python library and use the things it contains.\n", + "* Read tabular data from a file into a program.\n", + "* Display simple visualizations of the data" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Loading the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to work with the coordinates stored in the file, we need to [import](../../gloss.html#import) a library called NumPy that is designed to easily handle arrays of data." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy as np" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It's very common to create an [alias](../../gloss.html#alias-library) for a library when importing it\n", + "in order to reduce the amount of typing we have to do. We can now refer to this library in the code as `np` instead of typing out `numpy` each time we want to use it.\n", + "\n", + "We can now ask numpy to read our data file:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "lat, lon = np.loadtxt('swc_bc_coords.csv', delimiter=',', unpack=True)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The expression `np.loadtxt(...)` means,\n", + "\"Run the function `loadtxt` that belongs to the `numpy` library.\"\n", + "This [dotted notation](../../gloss.html#dotted-notation) is used everywhere in Python\n", + "to refer to the parts of larger things.\n", + "\n", + "`np.loadtxt` has three [parameters](../../gloss.html#parameter):\n", + "the name of the file we want to read,\n", + "and the [delimiter](../../gloss.html#delimiter) that separates values on a line.\n", + "These both need to be character strings (or [strings](../../gloss.html#string) for short),\n", + "so we put them in quotes.\n", + "Finally, passing the `unpack` paramter the boolean value, `True` tells `np.loadtxt` to take the first and second column of data and [assign](../../gloss.html#assignment) them to the [variables](../../gloss.html#variable) `lat` and `lon`, respectively.\n", + "A variable is just a name for some data.\n", + "Also note that `np.loadtxt` automatically skipped the line with the header information, since it recognizes that \n", + "this line is a [comment](../../gloss.html#comment) and does not contain numerical data.\n", + "\n", + "When we are finished typing and press Shift+Enter,\n", + "the notebook runs our command." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`lat` and `lon` now contain our data, which we can inspect by just executing a cell with the name of a variable:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "lat" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 3, + "text": [ + "array([ 43.661476, 39.332604, 45.703255, 43.661476, 39.166381,\n", + " 36.802151, 37.808381, 41.790113, 41.744949, 51.559882,\n", + " 42.727288, 54.980095, 53.523454, 49.261715, 39.32758 ,\n", + " 48.831673, 42.359133, 43.47013 , 44.632261, 43.783551,\n", + " 53.948193, 59.939959, 40.808078, 40.428267, 37.875928,\n", + " 49.261715, 37.8695 , 54.980095, 34.141411, 38.831513,\n", + " 51.757137, 43.261328, 38.648056, 32.89533 , 34.227425,\n", + " 21.300662, 55.945328, 30.283599, 49.261715, 41.790113,\n", + " 45.417417, 43.469128, 49.261715, 48.264934, 43.647118,\n", + " 48.53698 , 40.808078, 37.228384, 49.261715, -33.773636,\n", + " -37.825328, 47.655965, 37.875928, 38.031441, 33.900058,\n", + " 41.744949, 22.3101 , 32.236358, 51.524789, -33.929492,\n", + " 53.467102, 37.8695 , 53.478349, 48.82629 , 39.291389,\n", + " 43.07718 , 52.33399 , 54.32707 , 39.07141 , 37.42949 ,\n", + " 37.875928, 43.64712 , 51.759865, 38.54926 , 36.00803 ,\n", + " 50.060833, 36.00283 , 40.03131 , 42.388889, 53.52345 ,\n", + " 50.937716, 42.35076 , 41.789722, 49.276765, 32.887151,\n", + " 41.790113, 42.3625 , 30.283599, -43.523333, 35.20859 ,\n", + " 59.939959, 30.538978, 39.166381, 51.377743, 37.228384,\n", + " 41.7408 , 41.70522 , 47.655 , 40.443322, 44.968657,\n", + " 38.958455, 32.30192 , 43.07718 , 41.66293 , 51.457971,\n", + " 43.468889, 42.724085, -34.919159, 49.261111, -37.9083 ,\n", + " 34.052778, 41.526667])" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizing the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The array is a type of container defined by numpy to hold values. We will discuss how to manipulate arrays in more detail in another lesson.\n", + "For now let's just make a simple plot of the data. For this, we will use another library called `matplotlib`. First, let's tell the IPython Notebook that we want our plots displayed inline, rather than in a separate viewing window:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%matplotlib inline" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `%` at the start of the line signals that this is a command for the notebook,\n", + "rather than a statement in Python.\n", + "Next,\n", + "we will import the `pyplot` module from `matplotlib` and use one of the commands it defines to make plot a point for each latitude, longitude pair of data." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from matplotlib import pyplot\n", + "pyplot.plot(lon, lat, 'o')" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 5, + "text": [ + "[]" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nivx/oRVlsekb2EUAAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Exercise 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the dots with a different color according to the continent they would be on." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "While matplotlib provides a simple facility for visualizing numerical data in a variety of ways, we will use a supplementary toolkit called *Basemap* that enhances matplotlib to specifically deal with spatial data. We need to import this library and can do so using: " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from mpl_toolkits.basemap import Basemap" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's create a Basemap object that will allow us to project the coordinates onto map. For this example we are going to use a [Robinson Projection](http://en.wikipedia.org/wiki/Robinson_projection)." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "basemap_graph = Basemap(projection='robin', lat_0=0.0, lon_0=0.0)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The parameters `lat_0` and `lon_0` define the center of the map. Now let's add some features to our map using methods defined by the `bm` object. We will also use the object itself to get the coordinates of the bootcamps in the projection given our original longitudes and latitudes. We will also tell pyplot to make the figure 12 inches by 12 inches to make it more legible." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "pyplot.figure(figsize=(12,12))\n", + "basemap_graph.drawcoastlines()\n", + "basemap_graph.drawcountries()\n", + "basemap_graph.fillcontinents()\n", + "basemap_graph.drawmeridians(np.arange(-180,180,20))\n", + "basemap_graph.drawparallels(np.arange(-90,90,20))\n", + "\n", + "x, y = basemap_graph(lon, lat)\n", + "basemap_graph.plot(x, y, 'o', markersize=4, color='red')" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 8, + "text": [ + "[]" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nOzvz2Wef4erqysiRI3nx4oX6s759+6qnoYUQXL58GX19fbp16/bex+TPEEKwfv16pk6dWukuX69f\nv8bKykrtETp79iwrVqwot8yECRPo37//Gw8IFeF9PatCCLy8vAgODmbdunXq8djY2PDixQsSEhII\nCQl567q6urp069YNbW1tLl26BJQaFPv373/vcWdkZODp6cmWLVskNxROnz6tNral1s7OzqZz584E\nBQVVqFtTWloau3fvJigoiJCQENLT0zEzMyMnJweVSoWFhQXu7u6cPHkSHR0dcnJysLCwqPS4/f39\nuXbtGsOHD6dOnTqSaELpQ55KpaJHjx78+uuvGBgYSNbtrbCwED09PTp06ICfnx9BQUGSdbTKyclh\n1qxZhISEEB8fj6enJ2PGjJGss5yG/2w0xqoGzp07h6+vL/v27cPDw4NRo0YxdepUSbyoUOr96NSp\nE56envzwww/Y2dlJdsNKSkrC3NycHj164Ofnh7W1tWTjFkIQHh5OUlISDx48YNmyZRXSKfM0CiFo\n0KABLi4uNG3aFAcHB+RyOZ06dcLU1FRd71ClUr1zH5ycnFi9ejX+/v4UFRWpvXh/pGvXruTk5FC/\nfn0uX75Mfn7+G8u4u7tz7949Tpw4QUpKCmlpaWRlZfH69WuKioqQyWSkpaURHx/PgAEDGDJkSDlv\nyuLFi5k8ebKk2elllMXj9e7dW/J4tlevXjF69GgUCgWTJ0/mq6++wsHBQTL99/WsqlQqunbtSkBA\ngPo9Q0NDGjduTFhYGADNmzdHT0+P58+fl/N6m5iYYG5ujkwmY+DAgQwfPpw+ffpUqK2oSqXCy8uL\nUaNGSfYb+j1hYWGsWrUKb29vybVzcnI4efIktWrVeu/M+4iICBYuXMijR49ITEykefPm1K9fHx0d\nHWxsbHj+/DkBAQE0atSIW7du0bFjR1xdXcnNzaVGjRoMHz6cHj16VLit6XfffUe7du2oVasWLVq0\nkOzaqFQqyczMpH///ly7do3c3Fxq164tibYQgpSUFL755huWLVtGQEAA48aNk0RbpVJx+PBhvL29\n8fPzY/To0QwfPpyRI0dKoq/hPxONsfo/ihCCdevW4evrS2hoKMOHD6900f4/cubMGYQQZGRk0KFD\nB0mSpsrIzs4mMzOTtWvXMmbMGLp37y6px+b169fo6Ogwbtw4zp8/Xykv7bJly1i5cqX6/507d0ZL\n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\n06aN0FB19+7dfMGqSCRCLpdjaWkJwNGqVXmcmIgc8FRTo8v06Yg8PXn58iXr168nIiICHx8fdHV1\n8ff3p9nVq1h/ClDFUinuEycyYsQIDAwMhM7qr7kxGRkZfVUYPS/DKJFI8gWN6enpJeZTJiUlMWbM\nmBI5MTVr1oyrV6+We3d0YVBXV2fXrl2YmppSs2ZN9PT0yqQ0/zlX+HM0atSI6dOnc+TIEaKioujQ\noQPjx4/n5MmT5U4xKwwmJibFmudTU1PZv38/KioqdOzYkZUrV343LW3y5MnY2tqioaHBkiVLhP21\na9cOyNU99vPzE/oGJk+eXKpspEgkKpBsaNq0qWDIAbmUEA0NDVRUVBg4cCBXr1797oVz27ZtefTo\nEQMHDiQ8PJylS5eSlpbGuXPn6NChA02bNiUxMZFq1aqVanFUWlhaWgq2w8D/6YD1/7TO6vHjx1m8\neDEODg4VHqhCbpnwr7/+wtbWtsID1eTkZN68eVNkE0VJ4O/vz5YtW4S/i9P1+v79e8GR51sQi8Ws\nuXqVD+vX82H9+jLhqz558oS///6bLl26ULduXbKysti5cyeamppoa2t/176LQr9+/ZBKpezfv5+o\nqCi8vb05c+YMQUFBFZpZhdwb7NcaZLKzs8v1+A0aNCi38/wtREZGCnq2pUFeRtbQ0JDhw4fj6+vL\nzp07cXFxoUqVKty7d48mTZrQtWtXFBUV6QCYAVoZGVTduZNGjx+z5eNHqjx/TlJSkqBJnJOTQ9Zn\nWqZisZiYmJh8NJtvoW3btvj4+Hx1m9q1axMXF5fvubt379KtWzfh729xauVyOc2bN8fOzk74t2nT\nJh4/fvzV92loaJSbvmhxsHDhQtTV1VFVVaVjx47l0vjzOcRiMdOmTSMlJYWLFy9y9OjRAue+IiCV\nSomPj+fPP//kyZMnRW6XmprK5s2bAbCysmLz5s1l1hS2ZMkSevXqxe+//16AhqOkpES7du2YPn06\nkydPZu/evfkCzO+Ft7e3YISSmprK48ePiYuLE2gEqamp332MevXqcf/+fTIyMli8eDE1a9Zk//79\ngiLM2rVrBQezisSkSZO4du0amzdvZvXq1d+tW/xvxf/ZzOr06dM5ffo0Xl5eleJLvmzZMmbMmFEp\nnbGQyxm8du1amZR6vby8gNxGkw0bNhTrPXfu3EFVVbXYOnxisbhMOKqQS66vXbu2sNrs168fK1as\n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\n48SJREZGIhaLBbmyvN/rgwcPeP78Oerq6igrKxe7ArVv3z5q1apFdHQ0V69eJSoqis6dO3P//n0A\nxo8fj56eHqNHjxaCUFtbW0aNGoWRkZFQWTh37hza2tqoqamViMM8YMAA4uLiGDFiBA8fPuTEiRN0\n79493xzTqVMnrKysvmnTGR8fz6hRowAE/uydO3fKLGBLSEigX79+QG6wlJGRgfSLBlTI5Y5/+PAh\nX+Z03759zJo1q0THS0xM5Pz580ydOrXEY01MTOT06dMlPub3YOvWrRgZGVG1alU0NTXR1NTE09OT\nkSNHltoCNzMzU0gUfY7AwEBiY2ML/d1nZWXRvXt3IbP5xx9/4OzsTGJiYgH71e+xai4ugoODmT17\nNu7u7pVGnXNycmLGjBnY2dkxduzYShlDSfGfyaympaUxa9YsevToUWmBqkwm4+zZs5w/f75CsjdF\n4dChQzg4OHy3z/G3kNeRPmzYMKpVq5YvS/Tx40eys7MrNVCVyWTo6up+NTv4eaBoaGiISCRCTU2N\nNm3aABTIeunq6uLi4kLz5s25c+cOSUlJQG7GzsLCAhsbG4KDg/H29ubIkSOYmJhgbW0tdJKKxWKO\nHTvGsWPHcHR0RENDg3Pr1tHj6VMk2dlY5eTwktyb8u+//050dDTOzs7MmTNHmLiePHmS7xoPDg5m\n8+bNwmfo0aMHoaGhxMXFERERIWxXnBuAtrY2v/zyyze3Kw0GDhzI7t27KzVYrV69eqHZlfLGzJkz\niYmJISAgIF9m9WtQU1Nj7969bN68mTdv3mBoaMjLly8ZMWIEpqam+TIvMTExDA0NZapMBjIZSrGx\nOAcHs2jRItTU1Hj69CmbNm1CU1OTd+/eoaOjQ3JyMk2bNi2RnJ1UKiUiIoIuXboI7nV37tzh8ePH\nhISEcPPmTbZu3UpcXJzwnk2bNgnX7tSpUzl8+DCJiYlIpVI2btzI/v37i338cePG4evri5eXF3Pm\nzClU9SIpKembc190dDQ//fQTKSkpzJs3DxUVFSIjI79breNzHDp0CMiVTdq1a5eQrc7Tgo2MjKRZ\ns2YoKiry8uVLoau+tKhatSqZmZlkZmaWuIlRQ0MDXV1dZDJZhczZrq6udOrUqYDT1t27d8nIyCh1\nsFrU527atCn37t0rNFiNiooS1CbatWuHg4ODoHDj6OjIrVu32LBhA+3bt0cikZR7xtPY2FiohI0e\n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\nx8dHFL2cnBzWr1/Ptm3bRNEDaSKrwcHBzJ8/X7RWRCkpKWRmZhIYGCiKnl6vJz09HQA3NzfR3kPf\nfPMN9vb2jB492mQ9gJiYGPR6Pd27d8fV1dXk9nNXr16lZcuWxMXFMXr0aDp37mySXlFRES1atODD\nDz9kyZIllJSU4OPj88zFXhqNhsaNG7N06VI+/fRT/vGPf7B06VKTCk1ra2uJi4vDzs6Of/zjH4we\nPRoXFxc+/fRT0acIysg0IJtVmT8NnU5Hamoq8+fPx8HBgbNnz7J3716uXbvGq6+++kxRA41GQ2pq\nKu3atWPVqlWsW7eO9PR0k5rrK5VKsrOzOXfuHEOGDEGpVOLv7//MevBkIktlZSWVlZU4OTnh4+Nj\nUpSkvLycuro6/vnPfxIQEEC3bt1MjmQJgsCUKVNYtmwZ//M//2PywiMIAitWrGDq1KnY2tqKUgF9\n8+ZNXnjhBSwsLESJsgmCYIzeiTVSV+zI6uPHj41RbzGOUxUKBXq9nqKiIjw8PEzWq62tRaFQEBUV\nxdKlS02+j1qtlkePHvH555+zfft2k/UMBgO3bt3i8OHDTJ06FUtLS5NSkwRB4Nq1a9y/fx87Ozvs\n7Ozw8vIy6T5euHCBFi1akJCQwKBBg3BzczPpFOrMmTP07NmThQsXsmTJEoqLi/H29n6mzbwgCJw+\nfZpevXrxzjvv0L9/f4qKilizZg2+vr6i9puWkfktzJcvX778//pOyPx3YG5ujoODg7FXqZ+fH6mp\nqezZs4fc3Fy+/vpr0tLSsLOzIzIyEhsbm9+9jYqKwt3dnYMHD/LWW28RGRmJWq1m586dJCcnG/Nd\n/6heZGQkbdu25dixY4wYMYJdu3bRvHlzQkNDKS4uJi4u7qn1bGxsiI2NxdPTk2PHjuHg4MCcOXOw\ntLTk22+/fSa9hqEKKSkpuLq6EhgYiKurKzt27HgmvYbbwsJCbG1tCQ4Oxt3dna1bt5qkl52djVqt\nZsmSJbi5uT2zTsPt0aNHuXv3Lps2bcLV1dVkva1bt5Kens7evXtxcnIyWS8yMpLc3Fz27t2Lo6Oj\nKHq3bt1i165dODs7i6KXlJRETEwMvXr1EkXvu+++Izk5mQkTJpj8fomIiGDTpk0UFBTwzjvvEBUV\nZZJeeHg4GzdupKysjH79+hEbG0v79u2fWW/t2rUcOnSIvLw8OnbsyJUrV+jatesz6y1evJiUlBSu\nXr2Kra0tDx48oFu3bs/8Of7www9RKBQcP34cOzs7qqurcXFxIS4ujtatWz+13rx587hz5w4JCQnY\n29szd+5c5s+fz9SpU3F2dha97ZuMzG8hR1ZlngsMBgNRUVE0a9YMGxvxR3fKyMjIyDwdbdq0oVev\nXqL2epaReRZksyojIyMjIyMjI/PcIo+NkJGRkZGRkZGReW6RzaqMjIyMjIyMjMxzi2xWZWRkZGRk\nZGRknltksyojIyMjIyMjI/PcIptVGRkZGRkZGRmZ55b/B7JypRYo0ANfAAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The final line of the above code cell mimics matplotlib's built-in `plot` method to plot our projected coordinates onto the map. \n", + "\n", + "With just a handful of lines of code, you see that we can create a rich visualization of our data." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Exercise 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Integrate the coloring scheme from Exercise 1 into the Basemap projection.\n", + "2. Try out a different projection that better shows the boot camp locations in North America. Here is the list of projections in Basemap: http://matplotlib.org/basemap/users/mapsetup.html" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 8 + } + ], + "metadata": {} + } + ] +} diff --git a/novice/python/swc_bc_coords.csv b/novice/python/swc_bc_coords.csv new file mode 100644 index 0000000..c040eaf --- /dev/null +++ b/novice/python/swc_bc_coords.csv @@ -0,0 +1,113 @@ +# Latitude, Longitude + 43.661476,-79.395189 + 39.332604,-76.623190 + 45.703255, 13.718013 + 43.661476,-79.395189 + 39.166381,-86.526621 + 36.802151,-121.788163 + 37.808381,-122.267579 + 41.790113,-87.600732 + 41.744949,-111.804294 + 51.559882, -0.133458 + 42.727288,-84.482106 + 54.980095, -1.614614 + 53.523454,-113.525995 + 49.261715,-123.253430 + 39.327580,-76.620758 + 48.831673, 2.355623 + 42.359133,-71.093201 + 43.470130,-80.535771 + 44.632261,-63.580263 + 43.783551,-79.186397 + 53.948193, -1.052914 + 59.939959, 10.721750 + 40.808078,-73.963568 + 40.428267,-86.914325 + 37.875928,-122.250042 + 49.261715,-123.253430 + 37.869500,-122.258949 + 54.980095, -1.614614 + 34.141411,-118.124900 + 38.831513,-77.308746 + 51.757137, -1.256905 + 43.261328,-79.920248 + 38.648056,-90.305096 + 32.895330,-117.242188 + 34.227425,-77.879179 + 21.300662,-157.819165 + 55.945328, -3.191184 + 30.283599,-97.734428 + 49.261715,-123.253430 + 41.790113,-87.600732 + 45.417417,-73.948928 + 43.469128,-80.539865 + 49.261715,-123.253430 + 48.264934, 11.669121 + 43.647118,-79.394300 + 48.536980, 9.058935 + 40.808078,-73.963568 + 37.228384,-80.423417 + 49.261715,-123.253430 +-33.773636,151.112005 +-37.825328,144.951621 + 47.655965,-122.309377 + 37.875928,-122.250042 + 38.031441,-78.499356 + 33.900058, 35.482727 + 41.744949,-111.804294 + 22.310100, 39.125900 + 32.236358,-110.949540 + 51.524789, -0.133578 +-33.929492, 18.865391 + 53.467102, -2.233958 + 37.869500,-122.258949 + 53.478349, -2.241605 + 48.826290, 2.346420 + 39.291389,-76.625000 + 43.077180,-89.403990 + 52.333990, 4.863050 + 54.327070, 10.182650 + 39.071410,-77.464270 + 37.429490,-122.171860 + 37.875928,-122.250042 + 43.647120,-79.394300 + 51.759865, -1.258648 + 38.549260,-121.767090 + 36.008030,-78.923230 + 50.060833, 19.932778 + 36.002830,-78.938270 + 40.031310,-105.245900 + 42.388889,-72.527778 + 53.523450,-113.526000 + 50.937716, -1.395599 + 42.350760,-71.062740 + 41.789722,-87.599722 + 49.276765,-122.917957 + 32.887151,-117.246212 + 41.790113,-87.600732 + 42.362500,-71.085000 + 30.283599,-97.734428 +-43.523333,172.581944 + 35.208590,-97.445660 + 59.939959, 10.721750 + 30.538978,114.321928 + 39.166381,-86.526621 + 51.377743, -2.326378 + 37.228384,-80.423417 + 41.740800,-111.814160 + 41.705220,-86.235310 + 47.655000,-122.303333 + 40.443322,-79.943583 + 44.968657,-93.274570 + 38.958455,-95.243284 + 32.301920,-90.873352 + 43.077180,-89.403990 + 41.662930,-91.562030 + 51.457971, -2.601474 + 43.468889,-80.540000 + 42.724085,-84.476265 +-34.919159,138.604140 + 49.261111,-123.253056 +-37.908300,145.138000 + 34.052778,-118.255833 + 41.526667,-70.663056 diff --git a/novice/python/sys-version.py b/novice/python/sys-version.py new file mode 100644 index 0000000..f23ef3e --- /dev/null +++ b/novice/python/sys-version.py @@ -0,0 +1,2 @@ +import sys +print 'version is', sys.version -- 2.26.2