{ "metadata": { "celltoolbar": "Slideshow", "name": "", "signature": "sha256:b3beb2219c012d5612597208ce2db5dee19115a84479d099d6a3c23da0b35ae5" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "#apply styles to notebook (rather than doing it locally \n", "# via the profile custom.css file)\n", "from IPython.core.display import HTML\n", "css_file = 'media/style.css'\n", "HTML(open(css_file, \"r\").read())" ], "language": "python", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "html": [ "/* Adapted from https://github.com/ketch/teaching-numerics-with-notebooks */\n", "" ], "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#Intro to IPython Notebook\n", "\n", "
\n", "![](media/npp.png)\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## What We'll Cover\n", "* IPython Notebook: what is it?\n", "* Problems. We have them.\n", "* Getting up and running\n", "* Next steps/beyond basics\n", "\n", "## What We Can't\n", "* Technical Architecture\n", "* Specific installation problems\n", "* Advanced topics in detail" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#First Things First" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "##iPython\n", "\n", "![](media/no.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# IPython Notebook: What is It?\n", "\n", "IPython notebook is part of [IPython](http://en.wikipedia.org/wiki/IPython \"Wikipedia: IPython\"), an interactive computing architecture.\n", "\n", "The [IPython Notebook](http://ipython.org/notebook.html \"IPython Notebook\") is a web-based interactive computational environment where you can combine code execution, text, mathematics, plots and rich media into a single document.\n", "\n", "![](media/ipython.png)\n", "\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#some Python code\n", "range(0,20)" ], "language": "python", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Markdown and LaTeX support\n", "\n", "![](media/latex.png)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import YouTubeVideo\n", "# a talk about IPython at Sage Days at U. Washington, Seattle.\n", "# Video credit: William Stein.\n", "YouTubeVideo('QTXyXuqfBLA')" ], "language": "python", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "%matplotlib inline\n", "x = np.linspace(0, 3*np.pi, 500)\n", "plt.plot(x, np.sin(x**2))\n", "plt.title('chirp chirp');" ], "language": "python", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#Examples\n", "\n", "[Federal Contracts Notebook](http://nbviewer.ipython.org/github/bsweger/nerdsummit/blob/master/FederalContracts.ipynb) \n", "[Bokeh Visualization Documentation](http://nbviewer.ipython.org/github/ContinuumIO/bokeh-notebooks/blob/master/index.ipynb 'Bokeh Notebook') \n", "[Notebook-powered blog](http://www.damian.oquanta.info/) \n", "[These slides](http://nbviewer.ipython.org/github/bsweger/nerdsummit/blob/master/NERDSPresentation.ipynb)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# How Does it Help?\n", "\n", "![](media/science-cat.jpg \"Science Cat\") " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Show Your Work\n", "\n", "[The Ferguson Area is Even More Segregated Than You Probably Guessed](http://www.buzzfeed.com/jsvine/the-ferguson-area-is-even-more-segregated-than-you-thought#2n9wwff \"The Ferguson Area is Even More Segregated Than You Probably Guessed\"), Buzzfeed, 8/20/14\n", "\n", "![](media/ferguson.png \"The Ferguson Area is Even More Segregated Than You Probably Guessed\")\n", "\n", "[IPython Notebook](https://github.com/BuzzFeedNews/2014-08-st-louis-county-segregation/blob/master/notebooks/segregation-analysis.ipynb)\n", "\n", "[NBViewer](http://nbviewer.ipython.org/github/BuzzFeedNews/2014-08-st-louis-county-segregation/blob/master/notebooks/segregation-analysis.ipynb)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Show Your Work\n", "\n", "[Warming Ocean Threatens Sea Life](http://www.scientificamerican.com/article/warming-ocean-threatens-sea-life/ \"Warming Ocean Threatens Sea Life\"), _Scientific American_\n", "\n", "![](media/scientific-american.png)\n", "\n", "[IPython notebook](https://github.com/robertodealmeida/notebooks/blob/master/scientific_american/Scientific%20American%20graph.ipynb)\n", "\n", "[NBViewer](http://nbviewer.ipython.org/github/robertodealmeida/notebooks/blob/master/scientific_american/Scientific%20American%20graph.ipynb)\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#Sharing Without Scaring \n", "\n", "\n", "![](media/lebowski-wighnayba.gif \"Big Lebowski\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#Learning\n", "\n", "[Teaching with IPython Notebook](http://nbviewer.ipython.org/gist/jiffyclub/5165431 \"Teaching with the IPython Notebook\") " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Getting Started\n", "## Anaconda Distribution\n", "\n", "Linux, Mac, Windows downloads: [https://store.continuum.io/cshop/anaconda/](https://store.continuum.io/cshop/anaconda/)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "1. Install\n", "2. Open Anaconda Launcher\n", " * Windows: Start Menu\n", " * Mac: Launcher.app in ~/anaconda\n", "3. Install IPython Notebook\n", "4. Launch IPython Notebook. This should start up the notebook server and open the notebook dashboard in your browser.\n", "\n", "![](media/anaconda-launcher.png \"Anaconda Launcher\")\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Getting Started\n", "## Existing Python Environment\n", "\n", "IPython supports Python 2.7 or 3.3 and newer." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "1. Install IPython and it's main optional dependencies (many of these are needed to run the Notebook):\n", " pip install ipython[all]\n", "2. If you get an error installing ipython[notebook], install dependencies separately:\n", " * pip install jinja2\n", " * pip install sphinx\n", " * pip install pyzmq\n", " * pip install pygments\n", " * pip install tornado\n", " * pip install ipython\n", "3. [Start](http://ipython.org/ipython-doc/2/notebook/notebook.html#starting-the-notebook-server \"IPython: Starting the Notebook Server\") the notebook server. This should start up the server and open the notebook dashboard in your browser.\n", " * ipython notebook\n", "4. Alternately, to start a notebook server from a VM, make sure you're forwarding port 8888 start up the server:\n", " * ipython notebook --ip=0.0.0.0\n", " * on the host machine's browser: http://localhost:8888\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# What's Happening?\n", "\n", "* Dashboard shows notebooks in the current directory\n", "* Each open notebook is connected to a single Python kernal\n", "* Notebooks are a series of cells (code cells, Markdown, etc.)\n", "\n", "![](media/dashboard-notebooks-list.png \"IPython Dashboard\")\n", "[More information](http://ipython.org/ipython-doc/stable/notebook/notebook.html#introduction \"IPython Notebook Introduction\")\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#Behind the Scenes\n", "\n", "* Notebooks are JSON files\n", "* Sharing notebooks\n", "* IPython goodness works\n", " * [system aliases](http://ipython.org/ipython-doc/dev/interactive/shell.html \"IPython as a system shell\")\n", " * tab completion\n", " * exploring your objects\n", " * [magics](http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Cell%20Magics.ipynb \"The cell magics in IPython\")\n", "* Good [overview of interactive IPython goodness](http://ipython.org/ipython-doc/2/interactive/tutorial.html \"Using IPython for interactive work\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#Resources and Digging Deeper\n", "\n", "[Running Code in the IPython Notebook](http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%201%20-%20Running%20Code.ipynb \"Running Code in the IPython Notebok\") \n", "[Configuring IPython ](http://ipython.org/ipython-doc/dev/config/intro.html \"Introduction to IPython configuration\") \n", "[Styling IPython Notebooks](http://nbviewer.ipython.org/github/ketch/teaching-numerics-with-notebooks/blob/master/Styling_notebooks.ipynb \"Adding style to the notebook\") \n", "Extensions (wait until 3.0) \n", "[Interactive widgets ](http://nbviewer.ipython.org/github/ipython/ipython/blob/2.x/examples/Interactive%20Widgets/Index.ipynb \"Interactive Widgets\") \n", "[NBViewer browser extensions](http://jiffyclub.github.io/open-in-nbviewer/ \"Open in nbviewer\") \n", "[Converting IPython notebook to a Reveal.js-powered slideshow](http://www.damian.oquanta.info/posts/make-your-slides-with-ipython.html \"Make your slides with IPython\") \n", "[IPython Notebook Security](http://ipython.org/ipython-doc/dev/notebook/security.html \"Security in IPython Noteboks\") \n", "[R Markdown](http://rmarkdown.rstudio.com/ \"R Markdown\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#What's Next\n", "\n", "[Roadmap](http://localhost:8888/notebooks/NERDSPresentation.ipynb# \"IPython Roadmap\") slates IPython 3.0 for fall 2014:\n", "\n", "* Continue developing interactive widgets \n", "* Further development of non-Python kernels \n", "* Multi-user notebooks\n", "* [Jupyter](https://speakerdeck.com/fperez/project-jupyter \"Project Jupyter\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#Questions?\n", "\n", "Becky Sweger \n", "bsweger@gmail.com \n", "@bendystraw\n" ] } ], "metadata": {} } ] }