{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Basic Programming in Python:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Up to now, most of our effort has been spent on using specialized packages like NumPy and Pandas, but at some point, you will need to do something those packages don't make particularly easy. Even when doing simple things, you will need to speak some basic Python. \n", "\n", "Today, we're going to cover the basics of data types in Python and use simple programming structures to repeat an analysis on multiple data sets. Lastly, we will learn about refactoring our code to make it easier to read and more reusable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To illustrate these features, we'll be examining data from a comparative study of cognitive ability between macaques and lemurs [link](https://www.researchgate.net/publication/257075016_Lemurs_and_macaques_show_similar_numerical_sensitivity). Data are available [here](http://www.duke.edu/~jmp33/dibs/primates.tar.gz). We will assume that these data live in a directory ```data/primates``` inside the working directory." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 1: The Python data Model:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Quick review:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We've already worked with a few types of data in Python:\n", "\n", "- Pandas data frames are like spreadsheets\n", " - they have named rows and columns\n", " - they can contain data of different types\n", " - they have lots of high-level methods for aggregating, analyzing, and plotting data\n", "- NumPy arrays are for efficiently storing lots of data of the same type\n", " - can be more than 2d (remember the MRI image)\n", " - all data must be of the same type\n", " - can use advanced indexing/slicing methods to get subset of data\n", " - fast numerical computations\n", "- lists are for general ordered collections\n", " - a list of objects of any type\n", " - can add or delete elements\n", " - elements are ordered starting from 0\n", " - use the square bracket (```[ ]```) notation both to make a list and retrieve elements\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Other data types:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In addition to these, there are lots of other types of variables in Python. In fact, you can even define your own!\n", "\n", "One of the key features of Python, is that lots of different types of variables behave similarly. So learning a few key types of commands will carry us a long way." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tuples" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example, let's take a look at **tuples**, which look a lot like lists without the square brackets:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['a', 'b', 'c', 'd', 'e']\n", "('a', 'b', 'c', 'd', 'e')\n" ] } ], "source": [ "mylist = ['a', 'b', 'c', 'd', 'e']\n", "mytup = 'a', 'b', 'c', 'd', 'e'\n", "\n", "print(mylist)\n", "print(mytup)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see that tuples are printed with parentheses, which are not required, but make the syntax easier to read. In fact, we will often define tuples this way:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1, 2, 3)\n", "('a',)\n" ] } ], "source": [ "another_tup = (1, 2, 3)\n", "one_element_tuple = 'a',\n", "\n", "print(another_tup)\n", "print(one_element_tuple)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lists and tuples behave a lot alike:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "5\n" ] } ], "source": [ "print(len(mylist))\n", "print(len(mytup))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b\n", "b\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(mylist[1])\n", "print(mytup[1])\n", "\n", "mylist[1] == mytup[1]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['c', 'd', 'e']\n", "('c', 'd', 'e')\n" ] } ], "source": [ "print(mylist[2:])\n", "print(mytup[2:])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But there is one important way in which tuples and lists differ: **tuples are immutable**. This means that you cannot add to, delete from, or change a tuple. Once created, its contents cannot be altered." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['a', 'b', 'c', 'd', 'egg']\n" ] }, { "ename": "TypeError", "evalue": "'tuple' object does not support item assignment", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\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[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmylist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mmytup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'egg'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmytup\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" ] } ], "source": [ "mylist[-1] = 'egg'\n", "print(mylist)\n", "\n", "mytup[-1] = 'egg'\n", "print(mytup)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Among other things, this means that tuples cannot be sorted or reversed, though using the ```+``` operator still works, since it creates a new tuple:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['a', 'b', 'c', 'd', 'egg', 'f', 'g', 'h']\n" ] }, { "ename": "TypeError", "evalue": "can only concatenate tuple (not \"list\") to tuple", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\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[1;32m 1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmylist\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'f'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'g'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'h'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmytup\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'f'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'g'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'h'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: can only concatenate tuple (not \"list\") to tuple" ] } ], "source": [ "print(mylist + ['f', 'g', 'h'])\n", "print(mytup + ['f', 'g', 'h'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, we can't add lists and tuples! Python wouldn't know what we wanted the result to be. But since lists and tuples are so similar, we can convert them to one another using their *constructors*:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['a', 'b', 'c', 'd', 'e']\n", "('a', 'b', 'c', 'd', 'egg')\n", "('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')\n" ] } ], "source": [ "print(list(mytup))\n", "print(tuple(mylist))\n", "\n", "print(mytup + tuple(['f', 'g', 'h']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This will often be handy when we have some type of data that are a *sequence* (an ordered collection that we can iterate over (more on that below))." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Strings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Believe it or not, strings are also sequences in Python. They are a lot like both lists and tuples:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "like a sir\n" ] } ], "source": [ "mystr = 'like a sir'\n", "print(mystr)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a sir\n", "['l', 'i', 'k', 'e', ' ', 'a', ' ', 's', 'i', 'r']\n" ] } ], "source": [ "print(mystr[5:])\n", "print(list(mystr))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In fact, we can think of a string as just like a list or tuple with some special functions attached that are particularly useful for strings:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LIKE A SIR\n", "Like a sir\n", "['like', 'a', 'sir']\n" ] } ], "source": [ "print(mystr.upper())\n", "print(mystr.capitalize())\n", "print(mystr.split(' ')) # that is, split the string on the spaces" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But strings, like tuples, are immutable." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "ename": "TypeError", "evalue": "'str' object does not support item assignment", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\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[0mmystr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'n'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: 'str' object does not support item assignment" ] } ], "source": [ "mystr[-1] = 'n'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Even so, operations like reversing and sorting are supported (they just return a new string, leaving the old alone):" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ris a ekil\n", "[' ', ' ', 'a', 'e', 'i', 'i', 'k', 'l', 'r', 's']\n", " aeiiklrs\n" ] } ], "source": [ "print(mystr[::-1])\n", "print(sorted(mystr))\n", "print(''.join(sorted(mystr)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Digression*: If the ```join``` syntax looks funky to you, you're not alone. We might like to write\n", "\n", "```python\n", "print(sorted(mystr).join(''))\n", "```\n", "\n", "meaning we want to join the elements of the list with no space in between, but remember that we called \n", "\n", "```python\n", "mystr.split(' ')\n", "```\n", "\n", "and since ```split``` a thing we do to strings, ```join``` must be a thing we do to strings, not lists. As a result, the pattern for merging a list of strings is to call ```join``` on the string we want *in between* the elements of the list:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "trick-or-treaters\n" ] } ], "source": [ "print('-'.join(['trick', 'or', 'treaters']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Go figure." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dictionaries" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are times when we might want to store a collection of variables together, but there is no natural ordering for the variables. For instance, a row in a data frame might be converted to a list, but it would be more helpful to have the column name associated with each variable than to get the entries in any particular order. We would much prefer to get the value by the column name than by an index.\n", "\n", "This concept of storing not just values (as in a list or tuple), but as key-value *pairs* is realized by the Python dictionary variable type. Dictionaries in Python are the basis for objects, and so they are very efficient. As opposed to lists, **dicts** use curly braces:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'b': 7, 'a': 5}\n" ] } ], "source": [ "mydict = {'a': 5, 'b': 7}\n", "print(mydict)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unlike lists or tuples, we get elements from a dictionary by providing a *key*, which returns the corresponding *value*:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "7\n" ] } ], "source": [ "print(mydict['a'])\n", "print(mydict['b'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Like lists, we can add to dictionaries. A dictionary key can be any object that cannot change (technically it must be \"hashable\"), and its corresponding value can be anything:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{(1, 2): 10, 'b': 7, 101: ['a', 0.1, [4, 5, 7]], 'a': 5}\n", "4\n" ] } ], "source": [ "# we can add a key, value pair \n", "mydict[101] = ['a', 0.1, [4, 5, 7]]\n", "mydict[(1, 2)] = 10\n", "print(mydict)\n", "print(len(mydict))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And because dicts are key, value pairs, we can make dicts from a tuple or list of 2-tuples:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'last': 'foo', 'b': 1, 'a': 0}\n" ] } ], "source": [ "print(dict([('a', 0), ('b', 1), ('last', 'foo')]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### However:\n", "- **Dicts are not ordered**\n", "- as a result, dicts can't be sliced, and we can't get an element by index\n", "- we can iterate over a dict (see below), but there are no guarantees about which keys come first or last" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Containers and Iteration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Among the most important commonalities that lists, strings, tuples, and dicts all have (and share with data frames and numpy arrays) are *containment* and *iteration*. This is one of the best examples of how very different data types in Python can behave very similarly, lessening our need to learn unique syntax for every type of data. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Containment\n", "In Python, we can check whether an element is in a collection with the ```in``` keyword:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('a', 'b', 'c', 'd', 'e')\n", "['a', 'b', 'c', 'd', 'egg']\n", "like a sir\n", "{(1, 2): 10, 'b': 7, 101: ['a', 0.1, [4, 5, 7]], 'a': 5}\n" ] } ], "source": [ "print(mytup)\n", "print(mylist)\n", "print(mystr)\n", "print(mydict)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "True\n", "True\n", "True\n", "True\n", "True\n" ] } ], "source": [ "print('b' in mytup)\n", "print('egg' in mylist)\n", "print('sir' in mystr)\n", "print('ik' in mystr)\n", "print(101 in mydict)\n", "print('a' in mydict)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that for dicts, containment checks for *keys* not values. That is, we can find out whether an entry is in the dictionary, but not its value." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Iteration\n", "\n", "In many cases, we want to perform some logic for every element in a collection. To do so, we need a way of stepping through that collection, looking at one element at a time. In Python, this is done with the ```for``` keyword:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n", "c\n", "d\n", "egg\n" ] } ], "source": [ "for elem in mylist: # note: this line must end in a colon\n", " print(elem) # this line must be indented" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "l-letter\n", "i-letter\n", "k-letter\n", "e-letter\n", " -letter\n", "a-letter\n", " -letter\n", "s-letter\n", "i-letter\n", "r-letter\n" ] } ], "source": [ "for char in mystr: # char is the variable name we give to each element as we step through\n", " print(char + '-letter')" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n", "--------\n", "7\n", "--------\n", "['a', 0.1, [4, 5, 7]]\n", "--------\n", "5\n", "--------\n", "4\n" ] } ], "source": [ "for key in mydict: # note: iterating over a dict gives us keys\n", " print(mydict[key]) # every indented line gets repeated\n", " print('--------')\n", "print(len(mydict)) # this line is not indented, so doesn't get repeated" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Almost every data structure in Python can be iterated over, and the ability to do this will allow us to repeat a block of code for each element of a collection. This ability to build code that works for a single element of a collection and easily repeat it is part of the essence of programming." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using Logic:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's pretty typical that we might want to decide whether or not to run a block of code based on some logical condition. The most basic conditional in Python is the ```if``` statement:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c\n" ] } ], "source": [ "if len(mylist) > 2:\n", " print(mylist[2])" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "variable is a tuple\n" ] } ], "source": [ "testvar = mytup\n", "\n", "if isinstance(testvar, list):\n", " print(\"variable is a list\")\n", "elif isinstance(testvar, tuple):\n", " print(\"variable is a tuple\")\n", "else:\n", " print(\"variable is neither list nor tuple\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can combine conditions with logical operations:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['it', 'was', 'the', 'best', 'of', 'times,', 'it', 'was', 'the', 'worst', 'of', 'times']\n", "IT\n", "OF\n", "TIMES,\n", "IT\n", "WORST\n", "OF\n", "TIMES\n" ] } ], "source": [ "vowels = 'aeiou'\n", "sentence = 'it was the best of times, it was the worst of times'.split(' ')\n", "print(sentence)\n", "\n", "for word in sentence:\n", " firstletter = word[0]\n", " if firstletter in vowels or (len(word) > 4):\n", " print(word.upper())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Handling multiple data sets:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Normally, we could just use the `%ls` magic to get the list of files in a given directory:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Black.csv Macaque.csv trained_Macaque.csv\r\n", "Catta.csv Mongoose.csv\r\n" ] } ], "source": [ "%ls data/primates" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But if we want to eventually moved over to pure Python, we need to use the `os` library, which gives us operating system commands." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data/primates\n" ] } ], "source": [ "import os\n", "pathparts = ('data', 'primates')\n", "\n", "# this command will work on both Windows and Mac/Unix\n", "# the * expands the tuple, so it's as if we'd written os.path.join('data', 'primates')\n", "fullpath = os.path.join(*pathparts)\n", "\n", "print(fullpath)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Black.csv', 'Catta.csv', 'Macaque.csv', 'Mongoose.csv', 'trained_Macaque.csv']\n" ] } ], "source": [ "datfiles = os.listdir(fullpath)\n", "print(datfiles)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our first order of business is to figure out our analysis from a single dataset:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SubSpeciesDateBlock (approx 72 trials)TrialNumANumBAccuracyRTSurface Area
0hopkinsBlack9/3/081.017801.317equal
1hopkinsBlack9/3/081.024910.583equal
2hopkinsBlack9/3/081.033910.700equal
3hopkinsBlack9/3/081.041811.717congruent
4hopkinsBlack9/3/081.057900.800equal
\n", "
" ], "text/plain": [ " Sub Species Date Block (approx 72 trials) Trial NumA NumB \\\n", "0 hopkins Black 9/3/08 1.0 1 7 8 \n", "1 hopkins Black 9/3/08 1.0 2 4 9 \n", "2 hopkins Black 9/3/08 1.0 3 3 9 \n", "3 hopkins Black 9/3/08 1.0 4 1 8 \n", "4 hopkins Black 9/3/08 1.0 5 7 9 \n", "\n", " Accuracy RT Surface Area \n", "0 0 1.317 equal \n", "1 1 0.583 equal \n", "2 1 0.700 equal \n", "3 1 1.717 congruent \n", "4 0 0.800 equal " ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fname = os.path.join(fullpath, datfiles[0])\n", "\n", "import pandas as pd\n", "# df is short for dataframe\n", "# in code with a lot of dataframes, we would choose a more descriptive name\n", "df = pd.read_csv(fname, index_col=0) # index_col=0 says the first column of the file is row names\n", "\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can find out some interesting things:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array(['hopkins', 'quinn', 'redford', 'tarantino'], dtype=object)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Sub'].unique()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(array(['Black'], dtype=object),\n", " array(['9/3/08', '9/4/08', '9/8/08', '9/9/08', '9/10/08', '9/11/08',\n", " '9/12/08', '9/16/08', '9/17/08', '9/18/08', '9/19/08', '9/22/08',\n", " '9/23/08', '9/30/08', '10/1/08', '9/7/10', '9/8/10', '9/9/10',\n", " '9/10/10', '9/13/10', '9/14/10', '9/15/10', '9/16/10', '9/20/10',\n", " '9/22/10', '9/23/10', '9/24/10', '9/27/10', '9/28/10', '9/29/10',\n", " '1/5/10', '1/6/10', '1/7/10', '1/8/10', '1/11/10', '1/12/10',\n", " '1/13/10', '1/14/10', '1/15/10', '1/19/10', '1/20/10', '1/22/10',\n", " '1/23/10', '1/25/10', '1/26/10', '10/2/08', '10/3/08', '10/8/08'], dtype=object))" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Species'].unique(), df['Date'].unique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Groupby: Split-Apply-Combine:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's pretty typical in a dataset like this that we want to do some analysis for each subset of the data, however that subset is defined. Pandas makes this very easy:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AccuracyRT
Sub
hopkins0.7008032.023438
quinn0.7490741.345008
redford0.5972221.260423
tarantino0.7250961.687411
\n", "
" ], "text/plain": [ " Accuracy RT\n", "Sub \n", "hopkins 0.700803 2.023438\n", "quinn 0.749074 1.345008\n", "redford 0.597222 1.260423\n", "tarantino 0.725096 1.687411" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('Sub')[['Accuracy', 'RT']].mean()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AccuracyRT
SubSurface Area
hopkinscongruent0.7008031.988470
equal0.7008032.058406
quinncongruent0.7574071.280183
equal0.7407411.409833
redfordcongruent0.6092591.235722
equal0.5851851.285124
tarantinocongruent0.7279691.757307
equal0.7222221.617515
\n", "
" ], "text/plain": [ " Accuracy RT\n", "Sub Surface Area \n", "hopkins congruent 0.700803 1.988470\n", " equal 0.700803 2.058406\n", "quinn congruent 0.757407 1.280183\n", " equal 0.740741 1.409833\n", "redford congruent 0.609259 1.235722\n", " equal 0.585185 1.285124\n", "tarantino congruent 0.727969 1.757307\n", " equal 0.722222 1.617515" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(['Sub', 'Surface Area'])[['Accuracy', 'RT']].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Groupby has much more sophisticated behavior than this (if you want to group by something other than a specific set of columns, you can supply your own criterion), which you can read about [here](http://pandas.pydata.org/pandas-docs/dev/groupby.html).\n", "\n", "In addition, we can plot things like reaction time distributions:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "df[['Sub', 'RT']].boxplot(by='Sub');" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df['RT'].hist(by=df['Sub'], bins=100);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas plotting is sort of lame if we want to plot on the same axis. It's best for quick and dirty plots; if we want to do better, we need to dive more into Matplotlib or Seaborn.\n", "\n", "But we can plot all on the same axis if we simply tell Pandas which axis to plot into.\n", "\n", "So here's our strategy:\n", "- create an axis object to plot into (`gca` = get current axis)\n", "- split the RT portion of the dataframe into groups using `groubpy`\n", "- iterate over these groups (the iterator gives us a name and a dataframe for each group\n", "- call plot on each dataframe, passing the name as the label and the axis we want to reuse" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nOQFEuJEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = plt.figure().gca()\n", "\n", "for name, grp in df.groupby('Sub'):\n", " grp['RT'].plot(kind='density', ax=ax, label=name.capitalize());\n", "\n", "plt.legend(); # draw plot legend\n", "\n", "# adjust x limits of plot\n", "plt.xlim(-1, 10); " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So we've seen that we can do some neat things with this individual dataset. In fact, we'd like to do these analyses and *aggregate* across all datasets.\n", "\n", "Here's the plan:\n", " - load each datset in turn\n", " - get the average RT and Accuracy for each animal, store it in a dataframe\n", " - plot the RT curve for each animal\n", " - load the next dataset, repeat" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple datasets: pulling it together:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try to combine the above code into a single chunk of code. We'll iterate over data files and simply repeat the same code each time. (Note how we made a good decision in encoding the file name in a variable we can change instead of hard coding it.)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AccuracyRT
Sub
hopkins0.7008032.023438
quinn0.7490741.345008
redford0.5972221.260423
tarantino0.7250961.687411
agathon0.7250003.105548
\n", "
" ], "text/plain": [ " Accuracy RT\n", "Sub \n", "hopkins 0.700803 2.023438\n", "quinn 0.749074 1.345008\n", "redford 0.597222 1.260423\n", "tarantino 0.725096 1.687411\n", "agathon 0.725000 3.105548" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nXfTfulU8cujQr75HYcKEadjQwMfks7KyxNKlS0+Je+edd+rH5Ddu3Chat24toqKixLhx48SYMWPq\nx+SvuOIKcdttt9WXW7x4sUhLSxNVVVWnjMkLIURdXZ249dZbRaNGjUR0dLTo1KmT+PTTT0/53X79\n+omsrKzzebln5FzP+HcX71/q/ps/sq1b+4uiojfqjzdt2iSy+jQSiXNmn7Pc9u3bRXx8vMjPzz8l\n3hf0icmrJ4v45+PF+LnjxfbS7WJZVZVou2GD0I+p9Pjdu8UbJ02+E7ouRJs2ovjdb8XEiULExeni\nuuteF9nNuovOIzoL6XFJDP1wqNh7dO8pv3Xo0CGRlJQkvvvuu9Pq5/cLsXixEP37C9G4sRDTpgmR\nW+UTKWvWiGVVVb/2NoUJE6YB09BF/o/ExIkTT5nU91txrmfcYLvra2pW4vUeJDl5AgCbN29m8ODB\n9O/WGnvw9DWQxwkGg1x//fU899xzpKen18cvz1tO++ntWVWwilUTVvHOX96hbVJb3i4tZUJycv3G\nC50jI9l00v7yRysk3om7h703TCE1FQ4ckHjttS689p+DRFbbaF7SnMPVh+n1di8mfDmBUldovCgr\nK4uPP/6Ya6+99pQ1ngAmEwwaBN9+C7Nnw/LlcGELM5d/357rduyl4gxrPMOECRMmzPkjLy+PuXPn\ncsMNN/zeVTmFBinyQggOH36YzMzHkGUju3btYvDgwUyfPh2ltpoo+eyXPWXKFOLj45k4cSIAQS3I\ng989yJjZY3iu33MsuGYBLeJbAFCnqsyvqOC6kyblXRAZycZjIv/559C2LexqP4beCbt5cuQ2YmIg\nMrIzWVljmDatCS2qWnCg6ADvDX2PRFsi7V5vx/SN09GFzsUXX8zDDz/M8OHDcZ00a/9kunSBOXNg\n2TI4tMJO4OZODP+k8Lj1HSZMmDBhzjOPPvoo7dq14/777ycjI+P3rs6pnK2J/0dz/IruosrKb8UP\nPzQXmhYURUVFIj09Xbz//vsivyZfTLqmm7j4qwVnLLdz585Tuulzq3JF17e6ikEfDBJlrrLT8r9Z\nVCRG7NhxSpxbVYV1+Qpx5WhNNG8uxLp1xxKef16IkSPr8wWDtWLNmjRx9Ogy0eXWLiL679HC5XKJ\n7aXbRY+ZPUT3Gd3FjrIdQtd1MXHiRHHFFVfUjw2dDV0X4sOPNWFM9Ituo1zi6NFffMvChAnTQCHc\n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\n8fyJgryIiPisuLg4goODCQ0NJSoqismTJ3PixIlLLsffno8/Q0FeRER8ljGG7OxsysrK2Lp1K5s3\nb+Z3v/tdk57Dl6f0VZAXERGfdiYIR0VFMWzYMHbu3ElZWRlTp04lOjoal8vFb37zG89xbrebJ554\ngg4dOtC1a1eys7PrlJeYmMivf/1rbr/9dtq0acPBgwc5cuQII0eOpH379iQkJPDKK69c8etsDM14\nJyIifiE/P59Vq1aRmprKpEmT6NixIwcOHKCiooLk5GQ6d+7MtGnTeOmll1i1ahXbt28nODiYUaNG\nnVPW0qVLWb16NQkJCbjdbpKSkujZsydFRUXs2rWLu+66i65duzJo0KArf6GXQKvQiYhIg1ryKnTx\n8fGUlJQQEBBAWFgYycnJzJw5k4SEBI4fP05QUBAAy5Yt4+WXX+a9994jKSmJMWPG8NBDDwGwdu1a\nhg4dyqlTp3A4HCQmJnLHHXcwb948AA4fPkx8fDzHjx8nODgYgDlz5lBUVMTixYu9ct1na2gVOrXk\nRUTksjTVmLXG/o7IysoiMTHRs//ZZ59x6tQpoqKiasu1WGvp3LkzAIWFhbhcLs/xsbGx55R5dnph\nYSFOp9MT4M/k2bJlS+MqfAUpyIuIyGXxdiP/+70MLpeL1q1bU1JSUu+o+aioKPLz8z37eXl55xxz\ndr7o6GhKS0v55ptvaNOmDQCHDh2iU6dOTXUJzUYD70RExK907NiRIUOG8Pjjj1NeXo61lgMHDrB+\n/XoARo8ezcKFCykoKODYsWM8++yzDZYXExNDv379mD17NpWVlezYsYNFixbx4IMPXonLuSwK8iIi\n4rPO93z7a6+9RlVVFTfeeCNOp5P77ruPoqIiAKZNm8bdd99Nr169uPXWW0lNTb1gmZmZmRw8eJDo\n6GhSU1N55pln6twiaKk08E5ERBrUkgfeScMD79SSFxER8VMK8iIiIn5KQV5ERMRPKciLiIj4KQV5\nERERP6UgLyIi4qcU5EVERPyUgryIiIifUpAXERG5BImJiS1i9bmLoSAvIiI+bePGjfTv35927doR\nERHBgAEDfGKFuCtBq9CJiIjPKi8vJyUlhfT0dO677z6qqqrYsGGDZx35q51a8iIi4rNyc3MxxjB6\n9GiMMQQFBXHnnXfSo0cPDhw4QFJSEhEREVx33XWMHz+esrIyT974+HgWLFhAr169CA8PZ+zYsVRV\n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\nUCMvK6wAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# make an empty piece to hold each dataframe\n", "df_pieces = []\n", "\n", "ax = plt.figure().gca() # make a figure and get its current axis object\n", "\n", "# iterate over datfiles\n", "for f in datfiles:\n", " fname = os.path.join(fullpath, f)\n", " \n", " df = pd.read_csv(fname, index_col=0)\n", "\n", " mean_data = df.groupby('Sub')[['Accuracy', 'RT']].mean()\n", " \n", " df_pieces.append(mean_data)\n", " \n", " for name, grp in df.groupby('Sub'):\n", " grp['RT'].plot(kind='density', ax=ax, label=name.capitalize());\n", " \n", "plt.xlim(0, 6)\n", "\n", "plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.);\n", "\n", "combined_data = pd.concat(df_pieces)\n", "\n", "combined_data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we basically just copied over the code from before. (For the slick arguments to `legend` that put the box outside and to the right, see example [here](http://matplotlib.org/users/legend_guide.html)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Building code that lasts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above chunk of code is pretty nifty. It works, it produces good output, it's something we can back and run in six months to produce that figure.\n", "\n", "But how well will you understand that code in six months. What if you need to change it? What if we'd like to reuse the code elsewhere. Typically, researchers use a few approaches:\n", "- generate plots interactively when needed; don't bother with a script\n", "- modify this script as needed to produce new output\n", "- cut and paste from this script when you need to do something similar\n", "\n", "The first of these is a terrible idea. The others less so, but they have disadvantages:\n", "- if you modify this script, you need to remember what you modified and where so that you can produce the original figure again\n", "- if you cut and paste, and you later improve the code or find a bug, you need to remember all the places you cut and pasted, correct the code, and re-run\n", "- if you cut and paste, your code will contain lots of repetition; it will be harder to see how what you're doing differs across scripts\n", " \n", "The strategy that good coders use to surmount these difficulties is *code reuse*. There are lots of ways to reuse code, but the oldest and arguably best is to modularize our code by writing functions. Modular code is built up from smaller subunits. Originally, these units were scripts, but over time, the preferred method is to create functions. Functions are like scripts in that they are named sections of code, but they have a few advantages over scripts, as we will see." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modularization: strategy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For scientists, the path to modularization generally takes this form:\n", "- start by exploring data interactively in the console or a notebook\n", "- tidy up the code in a notebook that illustrates a particular analysis\n", "- when you start to see chunks of code that do a single (non-obvious) task, collect those chunks into functions\n", "- rewrite the analysis to call the functions\n", "- remove the functions from the notebook and put them into modules that can be imported\n", "\n", "The emphasis here is first on deciding what we want to do (exploring analyses), getting it working (illustrating in a notebook), and only lastly on making our code cleaner and more reusable. The same goes for making our code faster, which comes as a last step. As you become a better programmer, you will develop the ability to think about reuse and speed from the early stages, but even very good coders can be bad guessers at how best to design things early on." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Making functions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Functions are named blocks of code with inputs and a single output (though we can get around this restriction). To define a function, we can use the `def` keyword:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "8\n", "-6\n", "-14\n" ] } ], "source": [ "def myfunc(x):\n", " print(x + 1)\n", " return 2 * x\n", "\n", "print(myfunc(4))\n", "y = myfunc(-7)\n", "print(y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, `def` says we are about to define a function. This keyword is followed by the name of the function and a list of its *arguments* in parentheses. Python has several neat features in the way arguments are defined, including the ability to take arguments by name, to leave the number of arguments unspecified, and to give default values to certain arguments. \n", "\n", "Finally, the `return` keyword specifies the output of the function. Note that, like `for`, the line defining the function ends in a colon and the entire function body is indented." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0\n", "8.0\n" ] } ], "source": [ "def anotherfunc(x, y=2): # y has the default value 2\n", " z = x ** y # x to the power y\n", " return z / 2.0\n", "\n", "print(anotherfunc(4, 0.5)) # here we specify both x and y\n", "print(anotherfunc(4)) # here we specify only x, so y = 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Very important:\n", "\n", "Functions are like *black boxes*. The information that gets passed into them is bound to the input variable name, but this variable only exists while the function is running. This is a tricky topic that goes under the name of *variable scoping*, but the following examples illustrate that you have to be careful about what information is and isn't being passed into a function." ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x = foo\n", "Help on function reverser in module __main__:\n", "\n", "reverser(x, appender='')\n", " This is a docstring. It tells us what the function does. \n", " This function reverses its input and appends its second argument to the end.\n", "\n", "None\n", "x = bar\n", "rab\n", "x = elephant\n", "tnahpele monkey\n", "x = foo\n" ] } ], "source": [ "x = 'foo'\n", "print('x = ' + x)\n", "\n", "def reverser(x, appender=''): # appending an empty string seems like a sensible default\n", " \"\"\"\n", " This is a docstring. It tells us what the function does. \n", " This function reverses its input and appends its second argument to the end.\n", " \"\"\"\n", " print('x = ' + x)\n", " return x[::-1] + appender\n", "\n", "print(help(reverser))\n", "\n", "print(reverser('bar'))\n", "print(reverser('elephant', ' monkey'))\n", "\n", "print('x = ' + x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the value of `x` inside the function had nothing to do with the value of `x` outside the function. Within the function, `x` took on the value of whatever we passed in as the first argument of reverser. When the function returned, x was restored to its original value.\n", "\n", "This may seem confusing, but we actually want this behavior. The fact that variables defined within the function live and die inside the function means that we can use functions without worrying that they will overwrite variables we ourselves define. Imagine if you used a function that had an argument `x` or defined a variable `data`. You may well have these variables running around in your own code, and scoping makes sure that you don't need to worry about someone else's function overwriting them.\n", "\n", "Functions take inputs, perform their work, and return outputs. You don't have to know what they are doing under the hood, and your own functions should play nice in the same way." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What makes a good function?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some things to consider:\n", "- functions do *one thing*\n", "- functions give us the chance to replace confusing behavior with clearly named behavior\n", "- functions allow us to obey the DRY principle (don't repeat yourself)\n", "- functions can call other functions\n", "\n", "So how about we rewrite some parts of the above code?" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def get_data_files(pathparts):\n", " \"\"\"\n", " This function takes an iterable of path parts (directories), \n", " finds all files in that directory, and returns a list of those files.\n", " \"\"\"\n", " \n", " import os\n", " \n", " # here, we call tuple so that \n", " fullpath = os.path.join(*pathparts)\n", "\n", " datfiles = os.listdir(fullpath)\n", " \n", " # now add the fullpath to each of these file names so\n", " # we output a list of absolute paths\n", " \n", " output_list = [os.path.join(fullpath, f) for f in datfiles] # whoa!\n", " \n", " return output_list" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['data/primates/Black.csv', 'data/primates/Catta.csv', 'data/primates/Macaque.csv', 'data/primates/Mongoose.csv', 'data/primates/trained_Macaque.csv']\n", "['data/primates/Black.csv', 'data/primates/Catta.csv', 'data/primates/Macaque.csv', 'data/primates/Mongoose.csv', 'data/primates/trained_Macaque.csv']\n" ] } ], "source": [ "print(get_data_files(pathparts)) # should work as before\n", "\n", "print(get_data_files(list(pathparts))) # even works if the input is a list" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that Python is smart enough to use a list, since the `*` operator will convert any iterable object (one that can be stepped through) with a tuple and then unpack as normal.\n", "\n", "Also, we used a fancy trick inside called a [list comprehension](https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions) that makes it easy to do some operations where we would normally have to iterate (i.e., use a `for` loop).\n", "\n", "And we can define a couple of other functions:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def extract_data(df):\n", " \"\"\"\n", " Calculate the mean RT and Accuracy per subject for the dataframe df. \n", " Return result as a data frame.\n", " \"\"\"\n", " \n", " groupvar = 'Sub'\n", " colvars = ['Accuracy', 'RT']\n", " \n", " return df.groupby(groupvar)[colvars].mean()" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def plot_RT_dist(df, ax):\n", " \"\"\"\n", " Given a file name and axis object, plot the RT distribution for \n", " each animal in the file into the axis object.\n", " \"\"\"\n", " \n", " groupvar = 'Sub'\n", " colvar = 'RT'\n", " \n", " for name, grp in df.groupby(groupvar):\n", " grp[colvar].plot(kind='density', ax=ax, label=name.capitalize());\n", " \n", " return ax" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def do_all_analysis(files):\n", " \"\"\"\n", " This function plots the reaction time density for each subject in each file\n", " contained in the iterable files. It also calculates the mean accuracy and \n", " reaction time for each subject and returns these in a data frame.\n", " Files should be full file paths.\n", " \"\"\"\n", " import matplotlib.pyplot as plt\n", " import pandas as pd\n", " \n", " df_pieces = []\n", " ax = plt.figure().gca()\n", " \n", " for f in files:\n", " # read in data\n", " df = pd.read_csv(f, index_col=0)\n", " \n", " # process summary data from df\n", " summary_data = extract_data(df)\n", " df_pieces.append(summary_data)\n", " \n", " # plot Reaction Time distribution\n", " plot_RT_dist(df, ax)\n", " \n", " # add legend to figure\n", " plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.);\n", " \n", " # get figure corresponding to axis\n", " fig = ax.get_figure() \n", " \n", " # concatenate all extracted dataframe pieces into one\n", " combined_data = pd.concat(df_pieces)\n", " \n", " # now return a tuple with the combined data frame and the figure object\n", " return combined_data, fig " ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AccuracyRT
Sub
hopkins0.7008032.023438
quinn0.7490741.345008
redford0.5972221.260423
tarantino0.7250961.687411
agathon0.7250003.105548
berisades0.7277780.798131
capnlee0.6641930.826445
licinius0.7046301.454208
broome0.7516220.825900
huxley0.7388892.045129
solly0.7333331.271243
yerkes0.6369050.770189
eduardo0.7668543.534282
felipe0.5935191.147807
pedro0.7631091.454616
sancho0.6611111.890181
feinstein0.9101850.843286
mikulski0.8462960.583694
schroeder0.7268520.978447
\n", "
" ], "text/plain": [ " Accuracy RT\n", "Sub \n", "hopkins 0.700803 2.023438\n", "quinn 0.749074 1.345008\n", "redford 0.597222 1.260423\n", "tarantino 0.725096 1.687411\n", "agathon 0.725000 3.105548\n", "berisades 0.727778 0.798131\n", "capnlee 0.664193 0.826445\n", "licinius 0.704630 1.454208\n", "broome 0.751622 0.825900\n", "huxley 0.738889 2.045129\n", "solly 0.733333 1.271243\n", "yerkes 0.636905 0.770189\n", "eduardo 0.766854 3.534282\n", "felipe 0.593519 1.147807\n", "pedro 0.763109 1.454616\n", "sancho 0.661111 1.890181\n", "feinstein 0.910185 0.843286\n", "mikulski 0.846296 0.583694\n", "schroeder 0.726852 0.978447" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nXfTfulU8cujQr75HYcKEadjQwMfks7KyxNKlS0+Je+edd+rH5Ddu3Chat24toqKixLhx48SYMWPq\nx+SvuOIKcdttt9WXW7x4sUhLSxNVVVWnjMkLIURdXZ249dZbRaNGjUR0dLTo1KmT+PTTT0/53X79\n+omsrKzzebln5FzP+HcX71/q/ps/sq1b+4uiojfqjzdt2iSy+jQSiXNmn7Pc9u3bRXx8vMjPzz8l\n3hf0icmrJ4v45+PF+LnjxfbS7WJZVZVou2GD0I+p9Pjdu8UbJ02+E7ouRJs2ovjdb8XEiULExeni\nuuteF9nNuovOIzoL6XFJDP1wqNh7dO8pv3Xo0CGRlJQkvvvuu9Pq5/cLsXixEP37C9G4sRDTpgmR\nW+UTKWvWiGVVVb/2NoUJE6YB09BF/o/ExIkTT5nU91txrmfcYLvra2pW4vUeJDl5AgCbN29m8ODB\n9O/WGnvw9DWQxwkGg1x//fU899xzpKen18cvz1tO++ntWVWwilUTVvHOX96hbVJb3i4tZUJycv3G\nC50jI9l00v7yRysk3om7h703TCE1FQ4ckHjttS689p+DRFbbaF7SnMPVh+n1di8mfDmBUldovCgr\nK4uPP/6Ya6+99pQ1ngAmEwwaBN9+C7Nnw/LlcGELM5d/357rduyl4gxrPMOECRMmzPkjLy+PuXPn\ncsMNN/zeVTmFBinyQggOH36YzMzHkGUju3btYvDgwUyfPh2ltpoo+eyXPWXKFOLj45k4cSIAQS3I\ng989yJjZY3iu33MsuGYBLeJbAFCnqsyvqOC6kyblXRAZycZjIv/559C2LexqP4beCbt5cuQ2YmIg\nMrIzWVljmDatCS2qWnCg6ADvDX2PRFsi7V5vx/SN09GFzsUXX8zDDz/M8OHDcZ00a/9kunSBOXNg\n2TI4tMJO4OZODP+k8Lj1HSZMmDBhzjOPPvoo7dq14/777ycjI+P3rs6pnK2J/0dz/IruosrKb8UP\nPzQXmhYURUVFIj09Xbz//vsivyZfTLqmm7j4qwVnLLdz585Tuulzq3JF17e6ikEfDBJlrrLT8r9Z\nVCRG7NhxSpxbVYV1+Qpx5WhNNG8uxLp1xxKef16IkSPr8wWDtWLNmjRx9Ogy0eXWLiL679HC5XKJ\n7aXbRY+ZPUT3Gd3FjrIdQtd1MXHiRHHFFVfUjw2dDV0X4sOPNWFM9Ituo1zi6NFffMvChAnTQCHc\n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\n8fyJgryIiPisuLg4goODCQ0NJSoqismTJ3PixIlLLsffno8/Q0FeRER8ljGG7OxsysrK2Lp1K5s3\nb+Z3v/tdk57Dl6f0VZAXERGfdiYIR0VFMWzYMHbu3ElZWRlTp04lOjoal8vFb37zG89xbrebJ554\ngg4dOtC1a1eys7PrlJeYmMivf/1rbr/9dtq0acPBgwc5cuQII0eOpH379iQkJPDKK69c8etsDM14\nJyIifiE/P59Vq1aRmprKpEmT6NixIwcOHKCiooLk5GQ6d+7MtGnTeOmll1i1ahXbt28nODiYUaNG\nnVPW0qVLWb16NQkJCbjdbpKSkujZsydFRUXs2rWLu+66i65duzJo0KArf6GXQKvQiYhIg1ryKnTx\n8fGUlJQQEBBAWFgYycnJzJw5k4SEBI4fP05QUBAAy5Yt4+WXX+a9994jKSmJMWPG8NBDDwGwdu1a\nhg4dyqlTp3A4HCQmJnLHHXcwb948AA4fPkx8fDzHjx8nODgYgDlz5lBUVMTixYu9ct1na2gVOrXk\nRUTksjTVmLXG/o7IysoiMTHRs//ZZ59x6tQpoqKiasu1WGvp3LkzAIWFhbhcLs/xsbGx55R5dnph\nYSFOp9MT4M/k2bJlS+MqfAUpyIuIyGXxdiP/+70MLpeL1q1bU1JSUu+o+aioKPLz8z37eXl55xxz\ndr7o6GhKS0v55ptvaNOmDQCHDh2iU6dOTXUJzUYD70RExK907NiRIUOG8Pjjj1NeXo61lgMHDrB+\n/XoARo8ezcKFCykoKODYsWM8++yzDZYXExNDv379mD17NpWVlezYsYNFixbx4IMPXonLuSwK8iIi\n4rPO93z7a6+9RlVVFTfeeCNOp5P77ruPoqIiAKZNm8bdd99Nr169uPXWW0lNTb1gmZmZmRw8eJDo\n6GhSU1N55pln6twiaKk08E5ERBrUkgfeScMD79SSFxER8VMK8iIiIn5KQV5ERMRPKciLiIj4KQV5\nERERP6UgLyIi4qcU5EVERPyUgryIiIifUpAXERG5BImJiS1i9bmLoSAvIiI+bePGjfTv35927doR\nERHBgAEDfGKFuCtBq9CJiIjPKi8vJyUlhfT0dO677z6qqqrYsGGDZx35q51a8iIi4rNyc3MxxjB6\n9GiMMQQFBXHnnXfSo0cPDhw4QFJSEhEREVx33XWMHz+esrIyT974+HgWLFhAr169CA8PZ+zYsVRV\n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\nUCMvK6wAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "flist = get_data_files(pathparts)\n", "\n", "summary_data, fig = do_all_analysis(flist)\n", "\n", "plt.xlim(0, 6);\n", "\n", "summary_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Writing your own modules:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In `lemurs.py`, I've extracted this code into its own standalone module. That is, I've excerpted the functions into their own file. There are at least three ways we can use this separate code file:\n", "\n", "1. Because the file has a line\n", "\n", " ~~~python\n", " if __name__ == '__main__':\n", " ~~~\n", " \n", " the code will check to see if it is being run as a standalone module from the command line. In that case, the special variable `__name__` has the value `'__main__'`, and the code following the colon will execute. In that case, we can simply type\n", " \n", " ~~~\n", " python lemurs.py\n", " ~~~\n", " \n", " at the command line to load the module and run all the code that follows the `if` statement above.\n", "\n", "1. Similarly, we can use the `%run` magic function in the IPython notebook:\n", "\n", " ~~~\n", " %run lemurs\n", " ~~~\n", " \n", " This will have the same effect, except we will be able to carry on at the end of the code with all the variables still intact. This is great if we want to pull part of our analysis into a separate file but try out new ideas in the notebook from the place the code left off.\n", " \n", "1. Finally, if we just want to make use of some function in the module we can do\n", " \n", " ~~~python\n", " import lemurs\n", " ~~~\n", " \n", " which loads all of the definitions from the module into memory where we can call them. This is *exactly* what we did in importing pandas or numpy, but this time with our own code!" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nXfTfulU8cujQr75HYcKEadjQwMfks7KyxNKlS0+Je+edd+rH5Ddu3Chat24toqKixLhx48SYMWPq\nx+SvuOIKcdttt9WXW7x4sUhLSxNVVVWnjMkLIURdXZ249dZbRaNGjUR0dLTo1KmT+PTTT0/53X79\n+omsrKzzebln5FzP+HcX71/q/ps/sq1b+4uiojfqjzdt2iSy+jQSiXNmn7Pc9u3bRXx8vMjPzz8l\n3hf0icmrJ4v45+PF+LnjxfbS7WJZVZVou2GD0I+p9Pjdu8UbJ02+E7ouRJs2ovjdb8XEiULExeni\nuuteF9nNuovOIzoL6XFJDP1wqNh7dO8pv3Xo0CGRlJQkvvvuu9Pq5/cLsXixEP37C9G4sRDTpgmR\nW+UTKWvWiGVVVb/2NoUJE6YB09BF/o/ExIkTT5nU91txrmfcYLvra2pW4vUeJDl5AgCbN29m8ODB\n9O/WGnvw9DWQxwkGg1x//fU899xzpKen18cvz1tO++ntWVWwilUTVvHOX96hbVJb3i4tZUJycv3G\nC50jI9l00v7yRysk3om7h703TCE1FQ4ckHjttS689p+DRFbbaF7SnMPVh+n1di8mfDmBUldovCgr\nK4uPP/6Ya6+99pQ1ngAmEwwaBN9+C7Nnw/LlcGELM5d/357rduyl4gxrPMOECRMmzPkjLy+PuXPn\ncsMNN/zeVTmFBinyQggOH36YzMzHkGUju3btYvDgwUyfPh2ltpoo+eyXPWXKFOLj45k4cSIAQS3I\ng989yJjZY3iu33MsuGYBLeJbAFCnqsyvqOC6kyblXRAZycZjIv/559C2LexqP4beCbt5cuQ2YmIg\nMrIzWVljmDatCS2qWnCg6ADvDX2PRFsi7V5vx/SN09GFzsUXX8zDDz/M8OHDcZ00a/9kunSBOXNg\n2TI4tMJO4OZODP+k8Lj1HSZMmDBhzjOPPvoo7dq14/777ycjI+P3rs6pnK2J/0dz/IruosrKb8UP\nPzQXmhYURUVFIj09Xbz//vsivyZfTLqmm7j4qwVnLLdz585Tuulzq3JF17e6ikEfDBJlrrLT8r9Z\nVCRG7NhxSpxbVYV1+Qpx5WhNNG8uxLp1xxKef16IkSPr8wWDtWLNmjRx9Ogy0eXWLiL679HC5XKJ\n7aXbRY+ZPUT3Gd3FjrIdQtd1MXHiRHHFFVfUjw2dDV0X4sOPNWFM9Ituo1zi6NFffMvChAnTQCHc\n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\n8fyJgryIiPisuLg4goODCQ0NJSoqismTJ3PixIlLLsffno8/Q0FeRER8ljGG7OxsysrK2Lp1K5s3\nb+Z3v/tdk57Dl6f0VZAXERGfdiYIR0VFMWzYMHbu3ElZWRlTp04lOjoal8vFb37zG89xbrebJ554\ngg4dOtC1a1eys7PrlJeYmMivf/1rbr/9dtq0acPBgwc5cuQII0eOpH379iQkJPDKK69c8etsDM14\nJyIifiE/P59Vq1aRmprKpEmT6NixIwcOHKCiooLk5GQ6d+7MtGnTeOmll1i1ahXbt28nODiYUaNG\nnVPW0qVLWb16NQkJCbjdbpKSkujZsydFRUXs2rWLu+66i65duzJo0KArf6GXQKvQiYhIg1ryKnTx\n8fGUlJQQEBBAWFgYycnJzJw5k4SEBI4fP05QUBAAy5Yt4+WXX+a9994jKSmJMWPG8NBDDwGwdu1a\nhg4dyqlTp3A4HCQmJnLHHXcwb948AA4fPkx8fDzHjx8nODgYgDlz5lBUVMTixYu9ct1na2gVOrXk\nRUTksjTVmLXG/o7IysoiMTHRs//ZZ59x6tQpoqKiasu1WGvp3LkzAIWFhbhcLs/xsbGx55R5dnph\nYSFOp9MT4M/k2bJlS+MqfAUpyIuIyGXxdiP/+70MLpeL1q1bU1JSUu+o+aioKPLz8z37eXl55xxz\ndr7o6GhKS0v55ptvaNOmDQCHDh2iU6dOTXUJzUYD70RExK907NiRIUOG8Pjjj1NeXo61lgMHDrB+\n/XoARo8ezcKFCykoKODYsWM8++yzDZYXExNDv379mD17NpWVlezYsYNFixbx4IMPXonLuSwK8iIi\n4rPO93z7a6+9RlVVFTfeeCNOp5P77ruPoqIiAKZNm8bdd99Nr169uPXWW0lNTb1gmZmZmRw8eJDo\n6GhSU1N55pln6twiaKk08E5ERBrUkgfeScMD79SSFxER8VMK8iIiIn5KQV5ERMRPKciLiIj4KQV5\nERERP6UgLyIi4qcU5EVERPyUgryIiIifUpAXERG5BImJiS1i9bmLoSAvIiI+bePGjfTv35927doR\nERHBgAEDfGKFuCtBq9CJiIjPKi8vJyUlhfT0dO677z6qqqrYsGGDZx35q51a8iIi4rNyc3MxxjB6\n9GiMMQQFBXHnnXfSo0cPDhw4QFJSEhEREVx33XWMHz+esrIyT974+HgWLFhAr169CA8PZ+zYsVRV\nVXnSs7Ky6N27N2FhYXTr1o01a9Z40r744gtuv/12QkNDGTp0KKWlpZ60d955hx49euB0Ohk8eDB7\n9uy5Mh9GPRTkRUTEZyUkJNCqVSsmTZrE6tWr+frrrz1p1lrmzJlDUVERu3fv5vDhw8ybN69O/hUr\nVrBmzRoOHjzI9u3befXVVwH49NNPmThxIgsWLOD48eOsX7+euLg4T77MzEwyMjIoLi6msrKStLQ0\noOZHx7hx41i4cCHFxcUMGzaMlJQUTp8+3dwfRb0U5EVExGeFhISwceNGHA4HDz30ENdddx0jR46k\nuLiYLl26kJSUREBAAO3bt+fxxx8nJyenTv7p06cTGRlJu3btSElJYdu2bQAsXryYqVOnMnjwYACi\noqJISEjw5Js8eTJdunQhKCiI0aNHe/K9+eabJCcnM3jwYFq1asUTTzzByZMn+eijj67QJ1KX7smL\niMhlMU/Vv6b7pbK/bdxytjfccINntHtubi4PPPAAM2bM4Pnnn+exxx5j48aNVFRUUF1djdPprJM3\nMjLS8zo4OJgjR44AkJ+fz4gRI857zo4dO9bJV1FRAUBhYSGxsbGeNGMMLpeLgoKCRl3b5VKQFxGR\ny9LY4NwcEhISmDRpEunp6cyZM4dWrVrx+eefExYWRlZWFj//+c8vqhyXy8X+/fsv+fzR0dHs3Lmz\nznv5+fl06tTpkstqCuquFxERn7V3716ee+45T0s5Pz+fzMxMbrvtNioqKmjbti0hISEUFBTwpz/9\n6aLLnTp1KkuWLOGDDz7AWkthYSG5ubkXzDd69Giys7P54IMPOH36NGlpabRu3Zp+/fo1+hovh4K8\niIj4rJCQED755BP69OlDSEgI/fr1o2fPnixYsIC5c+eyZcsWz/321NTUOnmNOf9thh/96EcsWbKE\nGTNmEBYWxqBBg8jLy7tgvoSEBJYuXcrPfvYzOnToQHZ2NitXriQgwDsd58baltPNIiIiLY8xxipW\ntFzGGKy19f7yUEteRETETynIi4iI+CkFeRERET+lIC8iIuKnFORFRET8lIK8iIiIn1KQFxER8VMK\n8iIiIn5KQV5ERK4qw4cP569//esVPefGjRvp3r37FT0naMY7ERG5gJY8411cXBxHjx4lICAAay3G\nGHJzc+usEtccMjIyeOWVV9iwYUOznudiaMY7ERHxS8YYsrOzKSsro7y8nLKysmYP8IDnB0VLpyAv\nIiI+rb5ehk2bNtG/f3/Cw8Pp3bs3OTk5nrTExETP+vMZGRkMGDCAmTNn4nQ66dKlC6tXr/Yc++qr\nr9KlSxdCQ0Pp0qULmZmZ7Nmzh0ceeYSPP/6YkJAQzxr1VVVVPPHEE8TGxhIVFcWjjz5KZWUlADk5\nObhcLk+58fHxLFiwgF69ehEeHs7YsWOpqqpq8s9GQV5ERPxKYWEhycnJzJ07l2PHjpGWlkZqaiol\nJSX1Hv/pp5/SvXt3SkpKmDlzJlOnTgXgxIkTTJ8+nXfffZeysjI++ugjbrrpJn7wgx/w4osvcttt\nt1FeXk5paSkATz75JPv27WPHjh3s27ePgoICnn76ac95vt/yX7FiBWvWrOHgwYNs376dV199tck/\nCwV5ERHxaffeey9OpxOn08moUaNYunQpI0aM4O677wYgKSmJW2+9lVWrVtWbPzY2lilTpmCMYeLE\niRw5coSjR48C0KpVK/7973/z7bffEhkZ2eDguZdffpnnn3+esLAw2rRpw6xZs8jMzDzv8dOnTycy\nMtKzFO62bdsu41Oon4K8iIhcHmOaZmukrKwsSktLKS0t5e233yYvL48333zTE/jDw8P58MMPKSoq\nqjf/2ffwr732WgAqKioIDg5m+fLl/OUvfyEqKoqUlBT27t1bbxnFxcWcOHGCW265xXPeYcOGnbf3\nACAyMtLzOjg4mIqKisZcfoO8s4q9iIj4Dy+PvP/+PXmXy8WECRNIT0+/7LLvuusu7rrrLiorK/nV\nr37FQw89RE5Ozjld7xEREQQHB/P5558TFRV12edtKmrJi4iIXxk/fjwrV65kzZo1uN1uvv32W3Jy\ncigsLLykco4ePco777zDiRMnCAwMpG3btjgcNWEzMjKSw4cPc+rUKaDmfvu0adOYMWMGxcXFABQU\nFLBmzZqmvbhLpCAvIiI+q77H2GJiYsjKymL+/Pl06NCB2NhY0tLScLvd581TX5lut5vnnnuOTp06\nERERwfr16/nLX/4CwODBg/nhD39Ix44due666wD4wx/+QNeuXenbty/t2rVjyJAh5ObmXnS9m4Mm\nwxERkQa15MlwRJPhiIiIXJUU5EVERPyUgryIiIifUpAXERHxUwryIiIifkpBXkRExE8pyIuIiPgp\nBXkRERE/pSAvIiJ+7ZFHHuH3v/89cO667pdi8uTJzJ0794LHxcfH8/7779eb1qNHD9avX9+o8zeG\nFqgRERGfFRcXR1FREYWFhTidTs/7vXv3Zvv27XzxxReeqWjPuFJTytZn586dV/R8asmLiIjPMsYQ\nHx9fZ932nTt3cvLkSa8G85ZCQV5ERHzagw8+SEZGhmc/IyODiRMnevYb6mZfuHAhPXr0oLCwkIyM\nDAYMGFAn3eFwcODAgXPylZSUkJKSQnh4OO3bt+eOO+6ot/zdu3dz/fXXs3z5cqDhrvzmoCAvIiI+\nrW/fvpSXl7N3717cbjfLly9n/PjxF8z39NNP89prr7F+/Xqio6OBc7vyz9cbsGDBAlwuFyUlJRw9\nepT58+efc8zWrVsZOnQof/7znxkzZkwjruzyKciLiIjPO9OaX7t2Ld27dyc6OprzrZzndrv5n//5\nH/7v//6PdevW1bmX/33nKyMwMJAjR45w8OBBWrVqRf/+/eukr1+/npEjR7J06VKGDRvW+Au7TBp4\nJyIil8WsW9ck5dhBgxqdd/z48QwcOJCDBw8yYcKEmnqdpxX+9ddf8/LLL7N8+XLatm3bqPPNnDmT\nefPmMWTIEIwxTJs2jSeffNKTnp6ezh133HFO9/+VpiAvIiKX5XKCc1Pp3Lkz8fHx/POf/2Tx4sUN\nHut0Olm6dCn33Xcff//73+nXrx8Abdq04cSJE57jioqKzltG27ZtSUtLIy0tjV27dpGYmMiPf/xj\nEhMTAXjxxRd59tln+cUvfsFzzz3XBFfYOOquFxERv7B48WLef/99rr32WuD8Xe0AAwcO5PXXXyc1\nNZXPPvsMgF69evH555+zY8cOKisreeqpp87bG5Cdnc3+/fsBCAkJISAggFatWnnSQ0JCWL16NevX\nr2f27NlNdYmXTEFeRER81tlBOD4+nptvvrnetPrceeedLFq0iHvuuYdt27bRrVs35s6dS1JSEgkJ\nCQ12tf/nP//hzjvvJCQkhP79+/PTn/6UgQMH1jlvaGgoa9euZfXq1fz2t7+9qDo1NdPQLx0RERFj\njFWsaLmMMVhr6/31oJa8iIiIn1KQFxER8VMK8iIiIn5KQV5ERMRPKciLiIj4KQV5ERERP6UgLyIi\n4qcU5EVERPyUgryIiFx1rvS67merb9365qIgLyIiPm3jxo3079+fdu3aERERwYABA9iyZYu3q9Wg\nKzW9rVahExERn1VeXk5KSgrp6encd999VFVVsWHDBoKCgprsHNXV1XUWn/Emt9uNw3Hx7XO15EVE\nxGfl5uZijGH06NEYYwgKCuLOO++kR48eALz88svceOONhIaG0qNHD7Zt2+bJ+69//YtevXoRHh7O\n2LFjqaqqAiAnJweXy8Uf//hHoqKimDJliqesbt26ERERwb333suRI0c8Ze3Zs4chQ4bQvn17unfv\nzooVKzxppaWl3HPPPYSFhdG3b1/P6nUXk3fy5Mk8+uijjBgxgpCQENatW3dpH5C1Vps2bdq0aTvv\nVhMqWqaysjIbERFhJ06caP/5z3/aY8eOedLefPNNGxMTY7ds2WKttXb//v320KFD1lpr4+LibJ8+\nfWxRUZE9duyY7d69u01PT7fWWrtu3TobEBBgZ8+ebauqquy3335r33vvPRsREWG3bdtmq6qq7M9/\n/nM7cOBAa62133zzjXW5XDYjI8O63W67bds2GxERYXfv3m2ttXbMmDF2zJgx9uTJk3bnzp22U6dO\ndsCAAReVd9KkSbZdu3b2448/ttZaW1lZec5nUPv91P/dnS9BmzZt2rRps7ZlB3lrrd2zZ4+dPHmy\ndblcNiAgwI4cOdJ++eWX9u6777YLFy6sN09cXJx94403PPu//OUv7SOPPGKtrQnyQUFBtqqqypM+\ndepU++STT3r2Kyoq7DXXXGPz8vLs8uXLPQH/jIcfftg+/fTTtrq62gYGBtrc3FxP2pw5czxBvqG8\n1tYE+YkTJzZ4/Q0Fed2TFxGRy7LOrGuScgbZQY3Kd8MNN7B48WKgpvt+/PjxzJgxg8OHD9OlS5fz\n5ouMjPS8Dg4OrtP93qFDBwIDAz37hYWF3HLLLZ79Nm3a4HQ6KSgoIC8vj02bNuF0OoGaxnN1dTUT\nJkyguLiY06dPExMT48kbGxvLhg0bABrMe4bL5WrU5wIaeCciIpepscG5OSQkJDBx4kTS09NxuVzs\n27evUeV8f/R7dHQ0eXl5nv1vvvmGkpISOnXqhMvlYtCgQbz77rvnlON2uwkMDCQ/P5+EhAQADh06\n5ElvKO/56nIpNPBORER81t69e3nuuecoKCgAID8/n8zMTG677Tb+67/+iwULFrB161YA9u/fT35+\nfqPOM3bsWJYsWcKOHTuorKxkzpw59O3bl86dO5OcnExubi5Lly7l9OnTnDp1is2bN7N3714cDgej\nRo1i3rx5nDx5kl27dpGRkeEpt6G8TUFBXkREfFZISAiffPIJffr0ISQkhH79+tGzZ08WLFhAamoq\nv/rVrxg3bhyhoaH85Cc/obS0FLj01nFSUhLPPPMMo0aNolOnThw8eJBly5YB0LZtW9asWcOyZcuI\njo4mOjqaWbNmUVlZCcALL7xAeXm5Z6T+mdH6F5P3cpmae/YiIiL1M8ZYxYqWyxiDtbbeXy1qyYuI\niPgpBXkRERE/pSAvIiLipxTkRURE/JSCvIiIiJ9SkBcREfFTCvIiIiJ+StPaiohIg1q3bv2lMSby\nwkeKN7Ru3frL86VpMhwRERE/pe56ERERP6UgLyIi4qcU5EVERPyUgryIiIifUpAXERHxU/8fN1nS\nUCMvK6wAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%run lemurs" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['__builtins__',\n", " '__cached__',\n", " '__doc__',\n", " '__file__',\n", " '__loader__',\n", " '__name__',\n", " '__package__',\n", " '__spec__',\n", " 'do_all_analysis',\n", " 'extract_data',\n", " 'get_data_files',\n", " 'os',\n", " 'pd',\n", " 'plot_RT_dist',\n", " 'plt']" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import lemurs\n", "\n", "dir(lemurs)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['data/primates/Black.csv',\n", " 'data/primates/Catta.csv',\n", " 'data/primates/Macaque.csv',\n", " 'data/primates/Mongoose.csv',\n", " 'data/primates/trained_Macaque.csv']" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lemurs.get_data_files(pathparts)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }