{ "metadata": { "name": "", "signature": "sha256:4cb605562bcdd567b18957aafefe76f5e4c328d982880f3478d41422164d1891" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# IPython: an environment for interactive computing\n", "\n", "During this course we'll be doing nearly everything using the IPython notebook. For that reason, we'll start with a quick intro to the IPython environment and platform." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "## What is IPython?\n", "\n", "- Short for **I**nteractive **Python**\n", "- IPython is a platform for you to *interact* with your code and data\n", "- The *notebook*: a system for *literate computing*\n", " * The combination of narrative, code and results\n", " * Weave your scientific narratives together with your computational process\n", "- Tools for easy parallel computing\n", " * Interact with *many* processes" ] }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "IPython at the terminal" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "The basic IPython client: at the terminal, simply type `ipython`:\n", "\n", " $ ipython\n", " Python 2.7.4 (default, Apr 19 2013, 18:28:01) \n", " Type \"copyright\", \"credits\" or \"license\" for more information.\n", " \n", " IPython 1.0.0 -- An enhanced Interactive Python.\n", " ? -> Introduction and overview of IPython's features.\n", " %quickref -> Quick reference.\n", " help -> Python's own help system.\n", " object? -> Details about 'object', use 'object??' for extra details.\n", " \n", " In [1]: print \"hello world\"\n", " hello world\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Some tutorial help/resources :\n", "\n", " - The [IPython website](http://ipython.org)\n", " - The [IPython book](` to view the object\u2019s attributes. Besides Python objects and keywords, tab completion also works on file and directory names." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# type tab after the '.' below:\n", "collections." ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "" ] }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The interactive workflow: input, output, history" ] }, { "cell_type": "code", "collapsed": false, "input": [ "2+10" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "12" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "_+10" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "22" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Output control\n", "\n", "You can suppress the storage and rendering of output if you append `;` to the last cell (this comes in handy when plotting with matplotlib, for example):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "10+20;" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "_" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "22" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Output history\n", "\n", "The output is stored in `_N` and `Out[N]` variables:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "_10 == Out[10]" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "True" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "Out" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "{8: 22, 10: 22, 11: True, 7: 12}" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "And the last three have shorthands for convenience:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print('last output :', _)\n", "print('second to last :', __)\n", "print('third to last :', ___)" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "last output : True\n", "second to last : 22\n", "third to last : 22\n" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## The input history is also available" ] }, { "cell_type": "code", "collapsed": false, "input": [ "In[11]" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "'_10 == Out[10]'" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "_i" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "'In[11]'" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "_ii" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "'In[11]'" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "print('last input :', _i)\n", "print('second to last :', _ii)\n", "print('third to last :', _iii)" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "last input : _ii\n", "second to last : _i\n", "third to last : In[11]\n" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "%history" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "print(\"Hello\")\n", "?\n", "import collections\n", "collections.namedtuple?\n", "collections.Counter??\n", "*int*?\n", "%quickref\n", "2+10\n", "_+10\n", "10+20;\n", "_\n", "_10 == Out[10]\n", "Out\n", "print('last output :', _)\n", "print('second to last :', __)\n", "print('third to last :', ___)\n", "In[11]\n", "_i\n", "_ii\n", "print('last input :', _i)\n", "print('second to last :', _ii)\n", "print('third to last :', _iii)\n", "%history\n" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Accessing the underlying operating system\n", "\n", "**Note:** the commands below work on Linux or Macs, but may behave differently on Windows, as the underlying OS is different. IPython's ability to access the OS is still the same, it's just the syntax that varies per OS." ] }, { "cell_type": "code", "collapsed": false, "input": [ "!pwd" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/Users/jakevdp/Opensource/OsloWorkshop2014/notebooks\r\n" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "files = !ls\n", "print(\"My current directory's files:\")\n", "print(files)" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "My current directory's files:\n", "['01.1_IPythonIntro.ipynb', '01.2_NumpyPandas.ipynb', '01.3_PandasBreakout.ipynb', '01.4_MatplotlibSeaborn.ipynb', '01.5_VisualizationBreakout.ipynb', '02.1_ModelFitting.ipynb', '02.2_ModelFittingBreakout.ipynb', '02.3_ScikitLearnIntro.ipynb', '02.4_MachineLearningBreakout.ipynb', '03.1-Classification-SVMs.ipynb', '03.2-Regression-Forests.ipynb', '03.3-Validation.ipynb', '03.4-Validation-Breakout.ipynb', '04.1-Dimensionality-PCA.ipynb', '04.2-Clustering-KMeans.ipynb', '04.3-Density-GMM.ipynb', '05.4-Unsupervised-Breakout.ipynb', 'BabyNames.ipynb', 'ExploreData.ipynb', 'FaceRecognition.ipynb', 'Index.ipynb', 'TextMining.ipynb', 'Untitled0.ipynb', '__pycache__', 'data', 'fig_code', 'images', 'solutions', 'tmp.ipynb']\n" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "!echo $files" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[01.1_IPythonIntro.ipynb, 01.2_NumpyPandas.ipynb, 01.3_PandasBreakout.ipynb, 01.4_MatplotlibSeaborn.ipynb, 01.5_VisualizationBreakout.ipynb, 02.1_ModelFitting.ipynb, 02.2_ModelFittingBreakout.ipynb, 02.3_ScikitLearnIntro.ipynb, 02.4_MachineLearningBreakout.ipynb, 03.1-Classification-SVMs.ipynb, 03.2-Regression-Forests.ipynb, 03.3-Validation.ipynb, 03.4-Validation-Breakout.ipynb, 04.1-Dimensionality-PCA.ipynb, 04.2-Clustering-KMeans.ipynb, 04.3-Density-GMM.ipynb, 05.4-Unsupervised-Breakout.ipynb, BabyNames.ipynb, ExploreData.ipynb, FaceRecognition.ipynb, Index.ipynb, TextMining.ipynb, Untitled0.ipynb, __pycache__, data, fig_code, images, solutions, tmp.ipynb]\r\n" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "!echo {files[0].upper()}" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "01.1_IPYTHONINTRO.IPYNB\r\n" ] } ], "prompt_number": 22 }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Beyond Python: magic functions" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "The IPyhton 'magic' functions are a set of commands, invoked by prepending one or two `%` signs to their name, that live in a namespace separate from your normal Python variables and provide a more command-like interface. They take flags with `--` and arguments without quotes, parentheses or commas. The motivation behind this system is two-fold:\n", " \n", "- To provide an orthogonal namespace for controlling IPython itself and exposing other system-oriented functionality.\n", "\n", "- To expose a calling mode that requires minimal verbosity and typing while working interactively. Thus the inspiration taken from the classic Unix shell style for commands." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%magic" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Line vs cell magics:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit range(10)" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000000 loops, best of 3: 246 ns per loop\n" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "%%timeit\n", "range(10)\n", "range(100)" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000000 loops, best of 3: 502 ns per loop\n" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Line magics can be used even inside code blocks:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "for i in range(5):\n", " size = i*100\n", " print('size:',size, end=' ')\n", " %timeit range(size)" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "size: 0 10000000 loops, best of 3: 155 ns per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "size: 100 1000000 loops, best of 3: 250 ns per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "size: 200 1000000 loops, best of 3: 251 ns per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "size: 300 1000000 loops, best of 3: 279 ns per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "size: 400 1000000 loops, best of 3: 279 ns per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Magics can do anything they want with their input, so it doesn't have to be valid Python:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%bash\n", "echo \"My shell is:\" $SHELL\n", "echo \"User:\" $USER" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "My shell is: /bin/bash\n", "User: jakevdp\n" ] } ], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Another interesting cell magic: create any file you want locally from the notebook:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%file test.txt\n", "This is a test file!\n", "It can contain anything I want...\n", "\n", "more..." ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Writing test.txt\n" ] } ], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "!cat test.txt" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "This is a test file!\r\n", "It can contain anything I want...\r\n", "\r\n", "more..." ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Let's see what other magics are currently defined in the system:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%lsmagic" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "json": [ "{\"line\": {\"load_ext\": \"ExtensionMagics\", \"pylab\": \"PylabMagics\", \"pycat\": \"OSMagics\", \"cd\": \"OSMagics\", \"logstart\": \"LoggingMagics\", \"profile\": \"BasicMagics\", \"mkdir\": \"Other\", \"autocall\": \"AutoMagics\", \"dirs\": \"OSMagics\", \"cp\": \"Other\", \"who_ls\": \"NamespaceMagics\", \"recall\": \"HistoryMagics\", \"lsmagic\": \"BasicMagics\", \"alias\": \"OSMagics\", \"sx\": \"OSMagics\", \"unload_ext\": \"ExtensionMagics\", \"pinfo\": \"NamespaceMagics\", \"edit\": \"KernelMagics\", \"logoff\": \"LoggingMagics\", \"rmdir\": \"Other\", \"more\": \"KernelMagics\", \"magic\": \"BasicMagics\", \"reset_selective\": \"NamespaceMagics\", \"store\": \"StoreMagics\", \"psearch\": \"NamespaceMagics\", \"mv\": \"Other\", \"history\": \"HistoryMagics\", \"alias_magic\": \"BasicMagics\", \"pprint\": \"BasicMagics\", \"psource\": \"NamespaceMagics\", \"xdel\": \"NamespaceMagics\", \"matplotlib\": \"PylabMagics\", \"macro\": \"ExecutionMagics\", \"killbgscripts\": \"ScriptMagics\", \"pdoc\": \"NamespaceMagics\", \"debug\": \"ExecutionMagics\", \"man\": \"KernelMagics\", \"install_ext\": \"ExtensionMagics\", \"rerun\": \"HistoryMagics\", \"ll\": \"Other\", \"quickref\": \"BasicMagics\", \"popd\": \"OSMagics\", \"lk\": \"Other\", \"run\": \"ExecutionMagics\", \"lf\": \"Other\", \"whos\": \"NamespaceMagics\", \"logstate\": \"LoggingMagics\", \"xmode\": \"BasicMagics\", \"bookmark\": \"OSMagics\", \"lx\": \"Other\", \"sc\": \"OSMagics\", \"loadpy\": \"CodeMagics\", \"ls\": \"Other\", \"doctest_mode\": \"KernelMagics\", \"qtconsole\": \"KernelMagics\", \"tb\": \"ExecutionMagics\", \"rep\": \"Other\", \"ed\": \"Other\", \"ldir\": \"Other\", \"logon\": \"LoggingMagics\", \"connect_info\": \"KernelMagics\", \"clear\": \"KernelMagics\", \"install_default_config\": \"DeprecatedMagics\", \"logstop\": \"LoggingMagics\", \"colors\": \"BasicMagics\", \"autosave\": \"KernelMagics\", \"hist\": \"Other\", \"unalias\": \"OSMagics\", \"load\": \"CodeMagics\", \"gui\": \"BasicMagics\", \"cat\": \"Other\", \"pdb\": \"ExecutionMagics\", \"pastebin\": \"CodeMagics\", \"precision\": \"BasicMagics\", \"pfile\": \"NamespaceMagics\", \"save\": \"CodeMagics\", \"system\": \"OSMagics\", \"time\": \"ExecutionMagics\", \"config\": \"ConfigMagics\", \"pwd\": \"OSMagics\", \"page\": \"BasicMagics\", \"who\": \"NamespaceMagics\", \"pdef\": \"NamespaceMagics\", \"less\": \"KernelMagics\", \"timeit\": \"ExecutionMagics\", \"reset\": \"NamespaceMagics\", \"automagic\": \"AutoMagics\", \"prun\": \"ExecutionMagics\", \"pinfo2\": \"NamespaceMagics\", \"dhist\": \"OSMagics\", \"env\": \"OSMagics\", \"rm\": \"Other\", \"notebook\": \"BasicMagics\", \"rehashx\": \"OSMagics\", \"reload_ext\": \"ExtensionMagics\", \"install_profiles\": \"DeprecatedMagics\", \"pushd\": \"OSMagics\"}, \"cell\": {\"time\": \"ExecutionMagics\", \"javascript\": \"DisplayMagics\", \"system\": \"OSMagics\", \"perl\": \"Other\", \"SVG\": \"Other\", \"debug\": \"ExecutionMagics\", \"script\": \"ScriptMagics\", \"bash\": \"Other\", \"python3\": \"Other\", \"python\": \"Other\", \"sx\": \"OSMagics\", \"capture\": \"ExecutionMagics\", \"pypy\": \"Other\", \"prun\": \"ExecutionMagics\", \"sh\": \"Other\", \"latex\": \"DisplayMagics\", \"!\": \"OSMagics\", \"html\": \"DisplayMagics\", \"svg\": \"DisplayMagics\", \"python2\": \"Other\", \"file\": \"Other\", \"ruby\": \"Other\", \"timeit\": \"ExecutionMagics\", \"HTML\": \"Other\", \"writefile\": \"OSMagics\"}}" ], "metadata": {}, "output_type": "pyout", "prompt_number": 30, "text": [ "Available line magics:\n", "%alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode\n", "\n", "Available cell magics:\n", "%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%latex %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile\n", "\n", "Automagic is ON, % prefix IS NOT needed for line magics." ] } ], "prompt_number": 30 }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Running normal Python code: execution and errors" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Not only can you input normal Python code, you can even paste straight from a Python or IPython shell session:" ] }, { "cell_type": "code", "collapsed": false, "input": [ ">>> # Fibonacci series:\n", "... # the sum of two elements defines the next\n", "... a, b = 0, 1\n", ">>> while b < 10:\n", "... print(b)\n", "... a, b = b, a+b" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1\n", "1\n", "2\n", "3\n", "5\n", "8\n" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "In [1]: for i in range(5):\n", " ...: print(i)\n", " ...: " ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "prompt_number": 32 }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Plotting in the notebook" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "This imports numpy as `np` and matplotlib's plotting routines as `plt`, plus setting lots of other stuff for you to work interactivel very easily:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.pyplot import gcf" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "prompt_number": 42 }, { "cell_type": "code", "collapsed": false, "input": [ "x = np.linspace(0, 2*np.pi, 300)\n", "y = np.sin(x**2)\n", "plt.plot(x, y)\n", "plt.title(\"A little chirp\")\n", "f = gcf() # let's keep the figure object around for later..." ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\njNDiW76d9L59ujvG9hm1O3bod7UtLWbHcQUv9B4guqNXKn9C38jRB7twZrEqNqCe0Ke5B0+torDN\nnT379dNtneVOO2jn7GNYqSodfZHdPHih95Q47jh46qnw13d06AU+bW325mSaRo5++XI4/PD05lON\nesXYjg4YPz6deYweffA8envtv6uojG9s7dZZ6ehtrg9wAS/0HgBmz9b5dL3tact5/nkd9+SJwNHX\n6i5yYV/94CDzyjn29up/nwkT0plHtehm82bdSmsz3khL6L2j9zQl/fppV79oUbjrFy2Cd77T7pxM\nM2yY3k651vmxK1Zk7+hbW/XhF5VFyY0bdU6d1nbQ1Ry9zXw+IE2hLzc1RW6tBC/0njLmzoUnngh3\n7VNP5U/oof7++65suVwtp1+9GiZOTG8Oo0frPL68MJrGyVttbQe2ddoS+sp3LDbbRl3AC73nLU44\nAf7853DXLloE73iH3fnYoN7RiS44etC1hMqicUdHerENwCGH6HcW5a43C0dvS4Ari83B9tRFxQu9\n5y3mzYNHH62+a2E5a9fC3r1akPJGLUevlBsZPcDUqXoPoXLSdvRwsBimIfSV/ftr19oR4MqFaV7o\nPU3D6NH6o1Gb5Z//DMcfn20bYlxqnZG7apXOaE33a8fhiCPg9dcP/N7q1ek6eqgu9Lb7+MeP1+9e\nAmzd4IYPhz179Gli4IXe02S0t8PChfWvefBBfV0emTmzenTz4ovubOdQzdF3dKTv6CsLsuvWafG3\nSWVsZUvoRQ68kXmh9zQV7e3wxz/Wv2bhwvwK/RFHaCHZs+fA77u0ncPUqQc7+lWr0nf0hx9+4DyW\nLdM/P5tMmnTgWgebkVX5mgUv9J6m4swztWMP3tJWsnmz7k457rh052WK1lYd31Ru9+Cao1++fH/H\nS7AKedasdOdRGXOlccjMxIl6vUBPj/5Yt87eIjHv6D1Ny8iRum3y/vurP37//bpo279/uvMyyfHH\nH9xG6pLQDxqke/6DYuHatfrnbbsQWkl54XrbNn38nu2VuYccon8H163TIjxypP6eDYI21h079J46\nfsGUp6m48EK4887qj/361/CBD6Q7H9NUrhfYvVsL2uzZ2c2pkhkz4OWX9ecvvJDNKuTA0SulY5tp\n08zvOVONIKe33WkUOPrAzeexuSAssf/ZROSDIvKSiPSISM038iJytogsFpGlIvL1uON50uOii+A3\n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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Working with Notebooks\n", "### Directory Layout" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* IPython Notebooks are just files (`.ipynb`) on your file system\n", "* The Notebook server is aware of Notebooks in the directory (and in subdirectories) of the location where it is started.\n", "* If you cd to a Notebook directory and type:\n", "\n", " ipython notebook\n", "\n", " you will see the Notebooks in that directory in the dashboard" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "###Notebook Files\n", "* Are just that - files (`.ipynb`) on your file system\n", "* Contain JSON data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.nbformat import current\n", "with open('01.1_IPythonIntro.ipynb') as f:\n", " nb = current.read(f, 'json')" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "prompt_number": 44 }, { "cell_type": "code", "collapsed": false, "input": [ "nb.worksheets[0].cells[0:5]" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 45, "text": [ "[{'metadata': {'slideshow': {'slide_type': 'slide'}},\n", " 'cell_type': 'markdown',\n", " 'source': \"# IPython: an environment for interactive computing\\n\\nDuring this course we'll be doing nearly everything using the IPython notebook. For that reason, we'll start with a quick intro to the IPython environment and platform.\"},\n", " {'metadata': {'slideshow': {'slide_type': 'fragment'}},\n", " 'cell_type': 'markdown',\n", " 'source': '## What is IPython?\\n\\n- Short for **I**nteractive **Python**\\n- IPython is a platform for you to *interact* with your code and data\\n- The *notebook*: a system for *literate computing*\\n * The combination of narrative, code and results\\n * Weave your scientific narratives together with your computational process\\n- Tools for easy parallel computing\\n * Interact with *many* processes'},\n", " {'level': 1,\n", " 'cell_type': 'heading',\n", " 'metadata': {'slideshow': {'slide_type': 'slide'}},\n", " 'source': 'IPython at the terminal'},\n", " {'metadata': {'slideshow': {'slide_type': 'fragment'}},\n", " 'cell_type': 'markdown',\n", " 'source': 'The basic IPython client: at the terminal, simply type `ipython`:\\n\\n $ ipython\\n Python 2.7.4 (default, Apr 19 2013, 18:28:01) \\n Type \"copyright\", \"credits\" or \"license\" for more information.\\n \\n IPython 1.0.0 -- An enhanced Interactive Python.\\n ? -> Introduction and overview of IPython\\'s features.\\n %quickref -> Quick reference.\\n help -> Python\\'s own help system.\\n object? -> Details about \\'object\\', use \\'object??\\' for extra details.\\n \\n In [1]: print \"hello world\"\\n hello world\\n'},\n", " {'metadata': {'slideshow': {'slide_type': 'slide'}},\n", " 'cell_type': 'markdown',\n", " 'source': '# Some tutorial help/resources :\\n\\n - The [IPython website](http://ipython.org)\\n - The [IPython book](