{
 "metadata": {
  "name": "Quick Tour"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Quick Tour of the IPython Notebook"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Run code"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%pylab inline"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
        "For more information, type 'help(pylab)'.\n"
       ]
      },
      {
       "javascript": [
        "\n",
        "var bind_remote = function(selector){\n",
        "    var cc = $('<input/>')\n",
        "        .attr('id','azerty')\n",
        "        .fadeTo(0.2,0)\n",
        "        .keydown(\n",
        "        function(event){\n",
        "                if(event.which == IPython.utils.keycodes.LEFT_ARROW){\n",
        "                    console.log('go left');\n",
        "                    IPython.slideshow.prev();\n",
        "                }\n",
        "                else if(event.which == IPython.utils.keycodes.RIGHT_ARROW){\n",
        "                    console.log('go right')\n",
        "                    IPython.slideshow.next();   \n",
        "                }\n",
        "            event.preventDefault();\n",
        "            return false;\n",
        "            })\n",
        "            .focusin(function(){$('#qwerty').button('option','label','Slide Mode Enabled')})\n",
        "            .focusout(function(){$('#qwerty').button('option','label','Enable Slide Mode')})\n",
        "        \n",
        "        var dd = $('<div/>')\n",
        "            .attr('id','qwerty')\n",
        "            .button({label:'slide control'})\n",
        "            .attr('style','float:right')\n",
        "            .click(\n",
        "                function(){\n",
        "                    $('#azerty').focus();\n",
        "                    console.log('...');\n",
        "                })\n",
        "            .keydown(\n",
        "                function(event){\n",
        "                    console.log('event append',event);\n",
        "                event.preventDefault();\n",
        "                return false;\n",
        "                })\n",
        "    var hin = function(){$(selector).fadeTo('slow',1);}\n",
        "    var hout= function(){$(selector).fadeTo('slow',0.3);}        \n",
        "    $(selector)\n",
        "        .append(cc)\n",
        "        .append(dd)\n",
        "        .fadeTo('slow',0.3)\n",
        "    .hover(hin,hout)\n",
        "     \n",
        "}\n",
        "    \n",
        "var show_line = function(cell,line_number){\n",
        "    cell.code_mirror.showLine(cell.code_mirror.getLineHandle(line_number-1))    }\n",
        "\n",
        "    IPython = (function(IPython) {\n",
        "    \n",
        "    var Presentation = function(){\n",
        "          this.ccell = 0;\n",
        "      }\n",
        "\n",
        "      var is_marked_cell = function(cell){\n",
        "          return (cell.code_mirror.getValue().match(/(\\n)?(<!--|#)?====(-->)?(\\n)?/) != null)\n",
        "      }\n",
        "      Presentation.prototype.create_toolbar = function(){\n",
        "            var pt = $('<div/>').attr('id','toolbar_present').addClass('toolbar');\n",
        "            var that = this;\n",
        "            this.avc = $('<div/>').button({label:that.eta()});\n",
        "            pt.append(this.avc);\n",
        "\n",
        "            $('#toolbar').after(pt);\n",
        "            var ptoolbar = new IPython.ToolBar('#toolbar_present');\n",
        "            IPython.ptoolbar = ptoolbar;\n",
        "            ptoolbar.addButtonsGroup([{label:'Stop', icon:'ui-icon-stop', callback:function(){that.stop()}}])\n",
        "            ptoolbar.addButtonsGroup([\n",
        "                     {label:'Prev Slide', icon:'ui-icon-seek-prev', callback:function(){that.prev_group()}},\n",
        "                     {label:'Next Slide', icon:'ui-icon-seek-next', callback:function(){that.next_group()}},\n",
        "                                    ])\n",
        "            ptoolbar.addButtonsGroup([\n",
        "                     {label:'Step Next', icon:'ui-icon-play', callback:function(){that.next()}}\n",
        "                     ])\n",
        "            bind_remote('#toolbar_present');\n",
        "\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.remove_toolbar = function(){\n",
        "          $('#toolbar_present').remove();\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.ngroups = function(){\n",
        "          var cells = IPython.notebook.get_cells();\n",
        "          var cnt =0\n",
        "          for( var i=0; i< cells.length;i++)\n",
        "              if(is_marked_cell(cells[i])) cnt++;\n",
        "          return cnt\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.cgroups = function(){\n",
        "          var cells = IPython.notebook.get_cells();\n",
        "          var cnt =0\n",
        "          for( var i=0; i<= this.ccell ;i++)\n",
        "              if(is_marked_cell(cells[i])) cnt++;\n",
        "          return cnt\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.eta = function(){\n",
        "          return this.cgroups()+'/'+this.ngroups()\n",
        "          }\n",
        "\n",
        "      Presentation.prototype.next_marked_cell_n = function()\n",
        "      {\n",
        "          for(var i=this.ccell+1; i< $('.cell').length; i++)\n",
        "          {\n",
        "              if(is_marked_cell(IPython.notebook.get_cell(i)))\n",
        "                { return i; }\n",
        "          }\n",
        "          return null;\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.prev_marked_cell_n = function()\n",
        "      {\n",
        "          for(var i=this.ccell-1; i> 0; i--)\n",
        "          {\n",
        "              if(is_marked_cell(IPython.notebook.get_cell(i))){\n",
        "                 return i\n",
        "              }\n",
        "          }\n",
        "          return 0;\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.start = function(){\n",
        "          this.restart();\n",
        "          this.resume();\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.restart = function(){\n",
        "          this.ccell = 0;\n",
        "          delete this.avc;\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.resume = function(){\n",
        "          this.create_toolbar();\n",
        "          $('#menubar, #pager_splitter, #pager, #header,#toolbar').addClass('pmode');\n",
        "          $('.cell').fadeOut();\n",
        "          if(this.current_is_marked()){\n",
        "              $('.cell:nth('+this.ccell+')').fadeIn();\n",
        "          } else {\n",
        "              for( var i=this.prev_marked_cell_n() ; i<= this.ccell; i++){\n",
        "                  $('.cell:nth('+i+')').fadeIn();\n",
        "              }\n",
        "          }\n",
        "          var that=this;\n",
        "          if(this.avc != undefined)\n",
        "            $(this.avc).button('option','label',that.eta())\n",
        "          return this;\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.stop = function(){\n",
        "          $('.cell').fadeIn();\n",
        "          $('.pmode').removeClass('pmode');\n",
        "          $('div#notebook').removeClass('pove');\n",
        "          this.remove_toolbar();\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.next = function(){\n",
        "          this.ccell = this.ccell+1;\n",
        "          var that = this;\n",
        "          if(this.ccell >= $('.cell').length ){\n",
        "              this.restart();\n",
        "              this.stop();\n",
        "              return;\n",
        "          }\n",
        "          var nnext = this.ccell;\n",
        "          var ncell = IPython.notebook.get_cell(nnext)\n",
        "\n",
        "          if(is_marked_cell(ncell)){\n",
        "              $('.cell').fadeOut(500);\n",
        "              setTimeout(function(){$('.cell:nth('+nnext+')').fadeIn(500)},600);\n",
        "          } else {\n",
        "              setTimeout(function(){$('.cell:nth('+nnext+')').fadeIn(500)},0);\n",
        "          }\n",
        "          $(this.avc).button('option','label',that.eta())\n",
        "          return this;\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.next_group = function(){\n",
        "          this.ccell = this.next_marked_cell_n();\n",
        "          var that = this;\n",
        "          $('.cell').fadeOut(500);\n",
        "          setTimeout(function(){\n",
        "              $('.cell:nth('+that.ccell+')').fadeIn(500)\n",
        "                  },600);\n",
        "          $(this.avc).button('option','label',that.eta())\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.prev_group = function(){\n",
        "          this.ccell = this.prev_marked_cell_n();\n",
        "          var that = this\n",
        "          $('.cell').fadeOut(500);\n",
        "          setTimeout(function(){$('.cell:nth('+that.ccell+')').fadeIn(500)},600);\n",
        "          $(this.avc).button('option','label',that.eta())\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.is_n_marked = function(n){\n",
        "          return is_marked_cell(IPython.notebook.get_cell(n))\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.current_is_marked = function(n){\n",
        "          return is_marked_cell(IPython.notebook.get_cell(this.ccell));\n",
        "      }\n",
        "\n",
        "      Presentation.prototype.prev = function(){\n",
        "          if(is_marked_cell(IPython.notebook.get_cell(this.ccell))){\n",
        "              var pmcell = this.prev_marked_cell_n();\n",
        "              $('.cell').fadeOut(500);\n",
        "              for( var i=pmcell; i< this.ccell ; i++ ){\n",
        "                  (function(val){\n",
        "                      return function(){\n",
        "                                  setTimeout( function(){\n",
        "                                      $('.cell:nth('+val+')').fadeIn(500)\n",
        "                                      },600);\n",
        "                      }\n",
        "                   })(i)();\n",
        "              }\n",
        "          } else {\n",
        "              $('.cell:nth('+this.ccell+')').fadeOut(500);\n",
        "          }\n",
        "          this.ccell = this.ccell -1;\n",
        "          return this;\n",
        "      }\n",
        "\n",
        "      IPython.Presentation = Presentation;\n",
        "      return IPython;\n",
        "\n",
        "    })(IPython);\n",
        "\n",
        "    $('body').append($('<style/>').text('.pmode{ display: none !important }'));\n",
        "    IPython.slideshow = new IPython.Presentation();\n",
        "\n",
        "    var sid = 'start_pmode'\n",
        "    if(($('#'+sid)).length == 0) {\n",
        "          IPython.toolbar.addButtonsGroup([\n",
        "                  {'label'  :'Start Slideshow',\n",
        "                    'icon'  :'ui-icon-image',\n",
        "                    'callback':function(){IPython.slideshow.resume()},'id':sid},\n",
        "              ])\n",
        "         }\n"
       ],
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript object at 0x7225e90>"
       ]
      }
     ],
     "prompt_number": 38
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x = linspace(0, 3*pi, 500)\n",
      "plot(x, sin(x**2))\n",
      "title('A simple chirp');"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\n"
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Common tasks are made easy\n",
      "Paste external snippets (taken from [the official Python tutorial](http://docs.python.org/tutorial/interpreter.html#interactive-mode))"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      ">>> the_world_is_flat = 1\n",
      ">>> if the_world_is_flat:\n",
      "...     print \"Be careful not to fall off!\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Be careful not to fall off!\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Errors are shown in informative ways:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%run non_existent_file"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stderr",
       "text": [
        "ERROR: File `u'non_existent_file.py'` not found."
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x = 1\n",
      "y = 4\n",
      "z = y/(1-x)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "ename": "ZeroDivisionError",
       "evalue": "integer division or modulo by zero",
       "output_type": "pyerr",
       "traceback": [
        "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m                         Traceback (most recent call last)",
        "\u001b[1;32m<ipython-input-8-dc39888fd1d2>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mz\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
        "\u001b[1;31mZeroDivisionError\u001b[0m: integer division or modulo by zero"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Document your workflows"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "You can *italicize*, **boldface**\n",
      "\n",
      "* build\n",
      "* lists\n",
      "\n",
      "and embed code meant for illustration instead of execution in Python:\n",
      "\n",
      "    def f(x):\n",
      "        \"\"\"a docstring\"\"\"\n",
      "        return x**2\n",
      "\n",
      "or other languages:\n",
      "\n",
      "    if (i=0; i<n; i++) {\n",
      "      printf(\"hello %d\\n\", i);\n",
      "      x += 4;\n",
      "    }"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Courtesy of MathJax, you can include mathematical expressions both inline: \n",
      "$e^{i\\pi} + 1 = 0$  and displayed:\n",
      "\n",
      "$$e^x=\\sum_{i=0}^\\infty \\frac{1}{i!}x^i$$"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Rich displays: include anyting a browser can show"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Images"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from IPython.display import Image\n",
      "Image(filename='figures/logo.png')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "pyout",
       "png": "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\n",
       "prompt_number": 1,
       "text": [
        "<IPython.core.display.Image at 0x107ea26d0>"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from IPython.display import SVG\n",
      "SVG(filename='figures/python-logo.svg')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "pyout",
       "prompt_number": 3,
       "svg": [
        "<svg height=\"115.02pt\" id=\"svg2\" inkscape:version=\"0.43\" sodipodi:docbase=\"/home/sdeibel\" sodipodi:docname=\"logo-python-generic.svg\" sodipodi:version=\"0.32\" version=\"1.0\" width=\"388.84pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:cc=\"http://web.resource.org/cc/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:sodipodi=\"http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "  <metadata id=\"metadata2193\">\n",
        "    <rdf:RDF>\n",
        "      <cc:Work rdf:about=\"\">\n",
        "        <dc:format>image/svg+xml</dc:format>\n",
        "        <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n",
        "      </cc:Work>\n",
        "    </rdf:RDF>\n",
        "  </metadata>\n",
        "  <sodipodi:namedview bordercolor=\"#666666\" borderopacity=\"1.0\" id=\"base\" inkscape:current-layer=\"svg2\" inkscape:cx=\"243.02499\" inkscape:cy=\"71.887497\" inkscape:pageopacity=\"0.0\" inkscape:pageshadow=\"2\" inkscape:window-height=\"543\" inkscape:window-width=\"791\" inkscape:window-x=\"0\" inkscape:window-y=\"0\" inkscape:zoom=\"1.4340089\" pagecolor=\"#ffffff\"/>\n",
        "  <defs id=\"defs4\">\n",
        "    <linearGradient id=\"linearGradient2795\">\n",
        "      <stop id=\"stop2797\" offset=\"0\" style=\"stop-color:#b8b8b8;stop-opacity:0.49803922\"/>\n",
        "      <stop id=\"stop2799\" offset=\"1\" style=\"stop-color:#7f7f7f;stop-opacity:0\"/>\n",
        "    </linearGradient>\n",
        "    <linearGradient id=\"linearGradient2787\">\n",
        "      <stop id=\"stop2789\" offset=\"0\" style=\"stop-color:#7f7f7f;stop-opacity:0.5\"/>\n",
        "      <stop id=\"stop2791\" offset=\"1\" style=\"stop-color:#7f7f7f;stop-opacity:0\"/>\n",
        "    </linearGradient>\n",
        "    <linearGradient id=\"linearGradient3676\">\n",
        "      <stop id=\"stop3678\" offset=\"0\" style=\"stop-color:#b2b2b2;stop-opacity:0.5\"/>\n",
        "      <stop id=\"stop3680\" offset=\"1\" style=\"stop-color:#b3b3b3;stop-opacity:0\"/>\n",
        "    </linearGradient>\n",
        "    <linearGradient id=\"linearGradient3236\">\n",
        "      <stop id=\"stop3244\" offset=\"0\" style=\"stop-color:#f4f4f4;stop-opacity:1\"/>\n",
        "      <stop id=\"stop3240\" offset=\"1\" style=\"stop-color:#ffffff;stop-opacity:1\"/>\n",
        "    </linearGradient>\n",
        "    <linearGradient id=\"linearGradient4671\">\n",
        "      <stop id=\"stop4673\" offset=\"0\" style=\"stop-color:#ffd43b;stop-opacity:1\"/>\n",
        "      <stop id=\"stop4675\" offset=\"1\" style=\"stop-color:#ffe873;stop-opacity:1\"/>\n",
        "    </linearGradient>\n",
        "    <linearGradient id=\"linearGradient4689\">\n",
        "      <stop id=\"stop4691\" offset=\"0\" style=\"stop-color:#5a9fd4;stop-opacity:1\"/>\n",
        "      <stop id=\"stop4693\" offset=\"1\" style=\"stop-color:#306998;stop-opacity:1\"/>\n",
        "    </linearGradient>\n",
        "    <linearGradient gradientTransform=\"translate(100.2702,99.61116)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient2987\" x1=\"224.23996\" x2=\"-65.308502\" xlink:href=\"#linearGradient4671\" y1=\"144.75717\" y2=\"144.75717\"/>\n",
        "    <linearGradient gradientTransform=\"translate(100.2702,99.61116)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient2990\" x1=\"172.94208\" x2=\"26.670298\" xlink:href=\"#linearGradient4689\" y1=\"77.475983\" y2=\"76.313133\"/>\n",
        "    <linearGradient gradientTransform=\"translate(100.2702,99.61116)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient2587\" x1=\"172.94208\" x2=\"26.670298\" xlink:href=\"#linearGradient4689\" y1=\"77.475983\" y2=\"76.313133\"/>\n",
        "    <linearGradient gradientTransform=\"translate(100.2702,99.61116)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient2589\" x1=\"224.23996\" x2=\"-65.308502\" xlink:href=\"#linearGradient4671\" y1=\"144.75717\" y2=\"144.75717\"/>\n",
        "    <linearGradient gradientTransform=\"translate(100.2702,99.61116)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient2248\" x1=\"172.94208\" x2=\"26.670298\" xlink:href=\"#linearGradient4689\" y1=\"77.475983\" y2=\"76.313133\"/>\n",
        "    <linearGradient gradientTransform=\"translate(100.2702,99.61116)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient2250\" x1=\"224.23996\" x2=\"-65.308502\" xlink:href=\"#linearGradient4671\" y1=\"144.75717\" y2=\"144.75717\"/>\n",
        "    <linearGradient gradientTransform=\"matrix(0.562541,0,0,0.567972,-11.5974,-7.60954)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient2255\" x1=\"224.23996\" x2=\"-65.308502\" xlink:href=\"#linearGradient4671\" y1=\"144.75717\" y2=\"144.75717\"/>\n",
        "    <linearGradient gradientTransform=\"matrix(0.562541,0,0,0.567972,-11.5974,-7.60954)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient2258\" x1=\"172.94208\" x2=\"26.670298\" xlink:href=\"#linearGradient4689\" y1=\"76.176224\" y2=\"76.313133\"/>\n",
        "    <radialGradient cx=\"61.518883\" cy=\"132.28575\" fx=\"61.518883\" fy=\"132.28575\" gradientTransform=\"matrix(1,0,0,0.177966,0,108.7434)\" gradientUnits=\"userSpaceOnUse\" id=\"radialGradient2801\" r=\"29.036913\" xlink:href=\"#linearGradient2795\"/>\n",
        "    <linearGradient gradientTransform=\"matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient1475\" x1=\"150.96111\" x2=\"112.03144\" xlink:href=\"#linearGradient4671\" y1=\"192.35176\" y2=\"137.27299\"/>\n",
        "    <linearGradient gradientTransform=\"matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)\" gradientUnits=\"userSpaceOnUse\" id=\"linearGradient1478\" x1=\"26.648937\" x2=\"135.66525\" xlink:href=\"#linearGradient4689\" y1=\"20.603781\" y2=\"114.39767\"/>\n",
        "    <radialGradient cx=\"61.518883\" cy=\"132.28575\" fx=\"61.518883\" fy=\"132.28575\" gradientTransform=\"matrix(2.382716e-8,-0.296405,1.43676,4.683673e-7,-128.544,150.5202)\" gradientUnits=\"userSpaceOnUse\" id=\"radialGradient1480\" r=\"29.036913\" xlink:href=\"#linearGradient2795\"/>\n",
        "  </defs>\n",
        "  <g id=\"g2303\">\n",
        "    <path d=\"M 184.61344,61.929363 C 184.61344,47.367213 180.46118,39.891193 172.15666,39.481813 C 168.85239,39.325863 165.62611,39.852203 162.48754,41.070593 C 159.98254,41.967323 158.2963,42.854313 157.40931,43.751043 L 157.40931,78.509163 C 162.72147,81.842673 167.43907,83.392453 171.55234,83.148783 C 180.25649,82.573703 184.61344,75.507063 184.61344,61.929363 z M 194.85763,62.533683 C 194.85763,69.931723 193.12265,76.072393 189.63319,80.955683 C 185.7441,86.482283 180.35396,89.328433 173.46277,89.484393 C 168.26757,89.650093 162.91642,88.022323 157.40931,84.610843 L 157.40931,116.20116 L 148.50047,113.02361 L 148.50047,42.903043 C 149.96253,41.109583 151.84372,39.569543 154.12454,38.263433 C 159.42696,35.173603 165.86978,33.584823 173.45302,33.506853 L 173.57973,33.633563 C 180.50991,33.545833 185.85132,36.391993 189.60395,42.162263 C 193.10315,47.454933 194.85763,54.238913 194.85763,62.533683 z \" id=\"path46\" style=\"fill:#646464;fill-opacity:1\"/>\n",
        "    <path d=\"M 249.30487,83.265743 C 249.30487,93.188283 248.31067,100.05998 246.32227,103.88084 C 244.32411,107.7017 240.52275,110.75254 234.90842,113.02361 C 230.35653,114.81707 225.43425,115.79178 220.15133,115.95748 L 218.67952,110.34316 C 224.05016,109.61213 227.83204,108.88109 230.02513,108.15006 C 234.34309,106.688 237.30621,104.44617 238.93397,101.44406 C 240.24008,98.997543 240.88339,94.328693 240.88339,87.418003 L 240.88339,85.098203 C 234.79146,87.866373 228.40711,89.240713 221.73036,89.240713 C 217.34417,89.240713 213.47457,87.866373 210.14107,85.098203 C 206.39818,82.086343 204.52674,78.265483 204.52674,73.635623 L 204.52674,36.557693 L 213.43558,33.506853 L 213.43558,70.828453 C 213.43558,74.815013 214.7222,77.885353 217.29543,80.039463 C 219.86866,82.193563 223.20217,83.226753 227.2862,83.148783 C 231.37023,83.061053 235.74667,81.482023 240.39603,78.392203 L 240.39603,34.851953 L 249.30487,34.851953 L 249.30487,83.265743 z \" id=\"path48\" style=\"fill:#646464;fill-opacity:1\"/>\n",
        "    <path d=\"M 284.08249,88.997033 C 283.02006,89.084753 282.04535,89.123743 281.14862,89.123743 C 276.10937,89.123743 272.18129,87.924853 269.37413,85.517323 C 266.57671,83.109793 265.17314,79.786033 265.17314,75.546053 L 265.17314,40.456523 L 259.07146,40.456523 L 259.07146,34.851953 L 265.17314,34.851953 L 265.17314,19.968143 L 274.07223,16.800333 L 274.07223,34.851953 L 284.08249,34.851953 L 284.08249,40.456523 L 274.07223,40.456523 L 274.07223,75.302373 C 274.07223,78.645623 274.96896,81.014163 276.76243,82.398253 C 278.30247,83.538663 280.74899,84.191723 284.08249,84.357423 L 284.08249,88.997033 z \" id=\"path50\" style=\"fill:#646464;fill-opacity:1\"/>\n",
        "    <path d=\"M 338.02288,88.266003 L 329.11404,88.266003 L 329.11404,53.878273 C 329.11404,50.379063 328.29528,47.367213 326.66753,44.852463 C 324.78634,42.006313 322.17411,40.583233 318.82112,40.583233 C 314.73708,40.583233 309.6296,42.737343 303.4987,47.045563 L 303.4987,88.266003 L 294.58985,88.266003 L 294.58985,6.0687929 L 303.4987,3.2616329 L 303.4987,40.700203 C 309.191,36.557693 315.40963,34.481563 322.16436,34.481563 C 326.88196,34.481563 330.70282,36.070333 333.62694,39.238143 C 336.56082,42.405943 338.02288,46.353513 338.02288,51.071103 L 338.02288,88.266003 L 338.02288,88.266003 z \" id=\"path52\" style=\"fill:#646464;fill-opacity:1\"/>\n",
        "    <path d=\"M 385.37424,60.525783 C 385.37424,54.930953 384.31182,50.310833 382.19669,46.655673 C 379.68195,42.201253 375.77337,39.852203 370.49044,39.608523 C 360.72386,40.173863 355.85032,47.172273 355.85032,60.584263 C 355.85032,66.734683 356.86401,71.871393 358.91089,75.994413 C 361.52312,81.248093 365.44145,83.840823 370.66589,83.753103 C 380.47146,83.675123 385.37424,75.935933 385.37424,60.525783 z M 395.13109,60.584263 C 395.13109,68.547643 393.09395,75.175663 389.02941,80.468333 C 384.5555,86.394563 378.37584,89.367423 370.49044,89.367423 C 362.67328,89.367423 356.58135,86.394563 352.18541,80.468333 C 348.19885,75.175663 346.21044,68.547643 346.21044,60.584263 C 346.21044,53.098503 348.36455,46.801883 352.67276,41.674913 C 357.22466,36.236033 363.20937,33.506853 370.6074,33.506853 C 378.00545,33.506853 384.02914,36.236033 388.66877,41.674913 C 392.97697,46.801883 395.13109,53.098503 395.13109,60.584263 z \" id=\"path54\" style=\"fill:#646464;fill-opacity:1\"/>\n",
        "    <path d=\"M 446.20583,88.266003 L 437.29699,88.266003 L 437.29699,51.928853 C 437.29699,47.942293 436.0981,44.832973 433.70032,42.591133 C 431.30253,40.359053 428.10549,39.277123 424.11893,39.364853 C 419.8887,39.442833 415.86314,40.826913 412.04229,43.507363 L 412.04229,88.266003 L 403.13345,88.266003 L 403.13345,42.405943 C 408.26042,38.672813 412.97801,36.236033 417.28621,35.095623 C 421.35076,34.033193 424.93769,33.506853 428.02752,33.506853 C 430.14264,33.506853 432.13104,33.711543 434.00248,34.120913 C 437.50169,34.929923 440.34783,36.430973 442.54093,38.633823 C 444.98744,41.070593 446.20583,43.994723 446.20583,47.415943 L 446.20583,88.266003 z \" id=\"path56\" style=\"fill:#646464;fill-opacity:1\"/>\n",
        "    <path d=\"M 60.510156,6.3979729 C 55.926503,6.4192712 51.549217,6.8101906 47.697656,7.4917229 C 36.35144,9.4962267 34.291407,13.691825 34.291406,21.429223 L 34.291406,31.647973 L 61.103906,31.647973 L 61.103906,35.054223 L 34.291406,35.054223 L 24.228906,35.054223 C 16.436447,35.054223 9.6131468,39.73794 7.4789058,48.647973 C 5.0170858,58.860939 4.9078907,65.233996 7.4789058,75.897973 C 9.3848341,83.835825 13.936449,89.491721 21.728906,89.491723 L 30.947656,89.491723 L 30.947656,77.241723 C 30.947656,68.391821 38.6048,60.585475 47.697656,60.585473 L 74.478906,60.585473 C 81.933857,60.585473 87.885159,54.447309 87.885156,46.960473 L 87.885156,21.429223 C 87.885156,14.162884 81.755176,8.7044455 74.478906,7.4917229 C 69.872919,6.7249976 65.093809,6.3766746 60.510156,6.3979729 z M 46.010156,14.616723 C 48.779703,14.616723 51.041406,16.915369 51.041406,19.741723 C 51.041404,22.558059 48.779703,24.835473 46.010156,24.835473 C 43.23068,24.835472 40.978906,22.558058 40.978906,19.741723 C 40.978905,16.91537 43.23068,14.616723 46.010156,14.616723 z \" id=\"path1948\" style=\"fill:url(#linearGradient1478);fill-opacity:1\"/>\n",
        "    <path d=\"M 91.228906,35.054223 L 91.228906,46.960473 C 91.228906,56.191228 83.403011,63.960472 74.478906,63.960473 L 47.697656,63.960473 C 40.361823,63.960473 34.291407,70.238956 34.291406,77.585473 L 34.291406,103.11672 C 34.291406,110.38306 40.609994,114.65704 47.697656,116.74172 C 56.184987,119.23733 64.323893,119.68835 74.478906,116.74172 C 81.229061,114.78733 87.885159,110.85411 87.885156,103.11672 L 87.885156,92.897973 L 61.103906,92.897973 L 61.103906,89.491723 L 87.885156,89.491723 L 101.29141,89.491723 C 109.08387,89.491723 111.98766,84.056315 114.69765,75.897973 C 117.49698,67.499087 117.37787,59.422197 114.69765,48.647973 C 112.77187,40.890532 109.09378,35.054223 101.29141,35.054223 L 91.228906,35.054223 z M 76.166406,99.710473 C 78.945884,99.710476 81.197656,101.98789 81.197656,104.80422 C 81.197654,107.63057 78.945881,109.92922 76.166406,109.92922 C 73.396856,109.92922 71.135156,107.63057 71.135156,104.80422 C 71.135158,101.98789 73.396853,99.710473 76.166406,99.710473 z \" id=\"path1950\" style=\"fill:url(#linearGradient1475);fill-opacity:1\"/>\n",
        "    <path d=\"M 463.5544,26.909383 L 465.11635,26.909383 L 465.11635,17.113143 L 468.81648,17.113143 L 468.81648,15.945483 L 459.85427,15.945483 L 459.85427,17.113143 L 463.5544,17.113143 L 463.5544,26.909383 M 470.20142,26.909383 L 471.53589,26.909383 L 471.53589,17.962353 L 474.4323,26.908259 L 475.91799,26.908259 L 478.93615,17.992683 L 478.93615,26.909383 L 480.39194,26.909383 L 480.39194,15.945483 L 478.46605,15.945483 L 475.16774,25.33834 L 472.35477,15.945483 L 470.20142,15.945483 L 470.20142,26.909383\" id=\"text3004\" style=\"font-size:15.16445827px;font-style:normal;font-weight:normal;line-height:125%;fill:#646464;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans\"/>\n",
        "    <path d=\"M 110.46717 132.28575 A 48.948284 8.6066771 0 1 1  12.570599,132.28575 A 48.948284 8.6066771 0 1 1  110.46717 132.28575 z\" id=\"path1894\" style=\"opacity:0.44382019;fill:url(#radialGradient1480);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:20;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\" transform=\"matrix(0.73406,0,0,0.809524,16.24958,27.00935)\"/>\n",
        "  </g>\n",
        "</svg>"
       ],
       "text": [
        "<IPython.core.display.SVG at 0x10818b1d0>"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Video"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "And more exotic objects can also be displayed, as long as their representation supports \n",
      "the IPython display protocol.\n",
      "\n",
      "For example, videos hosted externally on YouTube are easy to load (and writing a similar wrapper for other\n",
      "hosted content is trivial):"
     ]
    },
    {
     "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('1j_HxD4iLn8')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "\n",
        "            <iframe\n",
        "                width=\"400\"\n",
        "                height=\"300\"\n",
        "                src=\"http://www.youtube.com/embed/1j_HxD4iLn8\"\n",
        "                frameborder=\"0\"\n",
        "                allowfullscreen\n",
        "            ></iframe>\n",
        "        "
       ],
       "output_type": "pyout",
       "prompt_number": 4,
       "text": [
        "<IPython.lib.display.YouTubeVideo at 0x36d0d50>"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Embed entire websites"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from IPython.display import HTML\n",
      "HTML('<iframe src=http://en.mobile.wikipedia.org/?useformat=mobile '\n",
      "'width=650 height=350>')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<iframe src=http://en.mobile.wikipedia.org/?useformat=mobile width=650 height=350>"
       ],
       "output_type": "pyout",
       "prompt_number": 25,
       "text": [
        "<IPython.core.display.HTML object at 0x6a9fb10>"
       ]
      }
     ],
     "prompt_number": 25
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Load remote code"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Use ``%load`` with any local or remote url, such as [the always useful Matplotlib Gallery!](http://matplotlib.sourceforge.net/gallery.html)"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%load http://matplotlib.sourceforge.net/mpl_examples/api/hinton_demo.py"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 39
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#Initial idea from David Warde-Farley on the SciPy Cookbook\n",
      "import numpy as np\n",
      "import matplotlib.pyplot as plt\n",
      "from matplotlib.patches import Rectangle\n",
      "from matplotlib.ticker import NullLocator\n",
      "#from matplotlib.collections import RegularPolyCollection\n",
      "#from matplotlib.colors import BoundaryNorm, ListedColormap\n",
      "\n",
      "def hinton(W, maxWeight=None, ax=None):\n",
      "    \"\"\"\n",
      "    Draws a Hinton diagram for visualizing a weight matrix.\n",
      "    \"\"\"\n",
      "    if not ax:\n",
      "        fig = plt.figure()\n",
      "        ax = fig.add_subplot(1, 1, 1)\n",
      "\n",
      "    if not maxWeight:\n",
      "        maxWeight = 2**np.ceil(np.log(np.abs(W).max())/np.log(2))\n",
      "\n",
      "    ax.patch.set_facecolor('gray')\n",
      "    ax.set_aspect('equal', 'box')\n",
      "    ax.xaxis.set_major_locator(NullLocator())\n",
      "    ax.yaxis.set_major_locator(NullLocator())\n",
      "\n",
      "    for (x,y),w in np.ndenumerate(W):\n",
      "        if w > 0: color = 'white'\n",
      "        else:     color = 'black'\n",
      "        size = np.sqrt(np.abs(w))\n",
      "        rect = Rectangle([x - size / 2, y - size / 2], size, size,\n",
      "            facecolor=color, edgecolor=color)\n",
      "        ax.add_patch(rect)\n",
      "    ax.autoscale_view()\n",
      "\n",
      "    # Reverse the yaxis limits\n",
      "    ax.set_ylim(*ax.get_ylim()[::-1])\n",
      "\n",
      "## Potential way using polygon collections that just has an issue with\n",
      "## easily getting the squares scaled by the data.\n",
      "\n",
      "#    height,width = W.shape\n",
      "#    x = np.arange(width)\n",
      "#    y = np.arange(height)\n",
      "#    X,Y = np.meshgrid(x, y)\n",
      "#    xy = np.array([X.flatten(),Y.flatten()]).T\n",
      "#    scaled_data = W.flatten() / maxWeight\n",
      "#    cmap = ListedColormap(['black', 'white'])\n",
      "#    norm = BoundaryNorm([-1., 0., 1.], cmap.N)\n",
      "\n",
      "#    rect_col = RegularPolyCollection(4, rotation=np.pi/4,\n",
      "#        sizes=np.abs(scaled_data) * 72 / ax.figure.get_dpi(), offsets=xy,\n",
      "#        transOffset=ax.transData, norm=norm, cmap=cmap, edgecolor='none')\n",
      "#    ax.add_collection(rect_col)\n",
      "#    rect_col.set_array(scaled_data)\n",
      "#    ax.autoscale_view()\n",
      "\n",
      "if __name__ == '__main__':\n",
      "    hinton(np.random.rand(20, 20) - 0.5)\n",
      "    plt.title('Hinton Example')\n",
      "    plt.show()\n",
      "\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\nRK5CYII=\n"
      }
     ],
     "prompt_number": 40
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "LaTeX rendering and SymPy support"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Objects can have a LaTeX representation, rendered thanks to MathJax:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from IPython.display import Latex\n",
      "Latex(r\"\"\"\\begin{eqnarray}\n",
      "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \n",
      "\\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n",
      "\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n",
      "\\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \n",
      "\\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n",
      "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0 \n",
      "\\end{eqnarray}\"\"\")"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "latex": [
        "\\begin{eqnarray}\n",
        "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \n",
        "\\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n",
        "\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n",
        "\\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \n",
        "\\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n",
        "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0 \n",
        "\\end{eqnarray}"
       ],
       "output_type": "pyout",
       "prompt_number": 41,
       "text": [
        "<IPython.core.display.Latex object at 0x6b6e110>"
       ]
      }
     ],
     "prompt_number": 41
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%load_ext sympyprinting\n",
      "from __future__ import division\n",
      "from sympy import *\n",
      "x, y = symbols(\"x y\")"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "eq = ((x+y)**2 * (x+1)); eq"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "latex": [
        "$$\\left(x + 1\\right) \\left(x + y\\right)^{2}$$"
       ],
       "output_type": "pyout",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAHQAAAAbCAYAAACtOKuoAAAABHNCSVQICAgIfAhkiAAAA+lJREFU\naIHt2VuMXVMcx/HPFB3tVDGhhKQmbcQUbV2CtHVJJur+oCF9cXso8eDBQzuJB4IgaRQPivDkuFQ9\nkHghkUikWsUDDy5N3QcPKq1bSBn3h//ZOfvs2Xtmn2P2nGHONzmZs9b677XWf//X+a3/WkOX/xU9\nnZ5Al7Y4CytxKFbhLrzW0Rl1aZt52Jgqr8V+HNuZ6XT5tyzDX1hcL8/H3yKwXf6D9AjJTbbLk0RA\nTx3voSEcXO28WmYu3s2p78UlUzyX6cRTuD8pzMoxGEI/fp2qGZXgDGzD0py2UbF/zMSgrsPX2FBk\nMA9bK57EMhxY0nYJXkQNbwppKeI5HD5Oe9Wq04pfZZhIeS4TASX8GsgzurNuWCW1osFLPDdeQC/F\nHQVtQ7iyjTFboaY9v8bjBvlBPU8E8+j653KsyOtgFw6Y5EllqakmoAdht7Fn66lQHaoJKGOVZxF+\nEu8i/ZlPs0QsFXr8Z6bD03FtvX4A1+NGHCb2rtvx6eT60Ba/Yw9Oxnup+mFsybHvpF8DWC+CswXP\npNpuwhqcXy8/jps11OczHFJmkKvxaKZuER7WSJ5q+EjcUqwS56H1JZ1IqKnmF0o4f02mLk91Ou3X\nI5gtApXN3N/Cs6lykfLkks5yj8SPmfYNuEU4CH34HjvxJR4QjkwXvhN7SkKR6nTSr7OxA7/hIrGQ\nEvpwmsjoE9LKMyHpgPbij0z7JqHXCSvwSv37V+LFfFtmoCliVLNPy/Fxjl0n/foEzwtZv0DzdrBS\nbIPZe9nPcUqZztN76D4szOko4YT6JF4t0zGeEC80y0KcKVZolnV4u2T/efRrXvF5qkNn/dpT/7sW\nP+OllN05Ig67Ms9nlaeQdEBHcPE4tkP1ye5M1S1WnDhcV1BfExv8SIn5tcoCkTQk5KlOlk75daFY\nRKOpunOx3dhcIas8haSNXheH44Q5uFfjdma12MD3p54dLjPIFHIi3kiV9xl72TBd/DoOH6bKveKO\nNu/fYP34pkyn6YD+gg+EBBEH2mFx+TuI4zWvpluF/EwVyS3P3IL2QbwjkoiEERyVsZsufn0hApWw\nUfi4Lcc2qzylWY7N9e9HiGPAJrGi+4Sjj9VtVrczgNbS+wV4Ge9rHKD3Cqm6KmO7WVwVppljbFI0\nHfwiFtMOPFSfx3b8IF9ad4vjS1vcI6SrKmom/0ZlCe4uaHtBQ3WqpKZ9v2aJZOnJnLZBzRcPLdMj\nZKeqi+wHlczYSjIbtyk+eKdVp0pa8Wur5guFNSIxyyoM+coz46ladVplr8YiO0bsj9kthPGVZ0ZT\nteq0yhUiCboPT4vsNstEytOlS5cuXbp0mUT+AUnR4eM/KSdDAAAAAElFTkSuQmCC\n",
       "prompt_number": 11,
       "text": [
        "\n",
        "               2\n",
        "(x + 1)\u22c5(x + y) "
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "expand(eq)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "latex": [
        "$$x^{3} + 2 x^{2} y + x^{2} + x y^{2} + 2 x y + y^{2}$$"
       ],
       "output_type": "pyout",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAQ0AAAAbCAYAAABm6to6AAAABHNCSVQICAgIfAhkiAAABP5JREFU\neJztnFuIV0Ucxz+7SFtpGQW1uJTrpQw0w0u26XYh8kWCksyHAiOMQgwKrKduDxotXR8qIbpN96AL\nEaUSkdpLGBVUEBiVFD3YBaIIKSPr4Xf+dDz+d3d+czlzTv/5gOyZmXN+8/v+ZpwzM2d2IZPJZBT0\nOT53ATATGAAuAgzwbhiXknAusByYDqwANgPvJ/XIj6wn40OUeP8MXFNcXwkcAI7zNZqIacBYKb0W\n0TOUxh1vsp6MD9HivQCYWlyvAf6ivYPGQuAQMKdIHw/8gwSrjWQ9GR9qifeLwG0hDdZMHzId6yzV\n5iNBWpTMIz+ynowPUeO9GLgFeBw4NoRBBcuA14HtwOfAk4Sbrj4HPBDIVhPIevyJ2d+aTpR4Xw98\njKyF6mAx8A5wQpGehmzS/AgMe9peD9yL+wZx08h6/InZ35pOsHiPAD8As4r0mcj0ZY2HzYXAFMt7\n3wbmVvIWFT687OHDpUiQAI6mng6h0a0lpJ6YftqSSk+s/haSGO0T9P/DUuA95HMrwCrgIEcGVoNR\nOPU78B1wciX/F+SrjgsXIgEaLP5dDpznaEuDIc7gFFqPIe1bNaWeGP0tNIaw7TNhvF1Gp4+Ap4Ab\nkV3WUWRU+srXU0v2AWfw39ebDn/i9gVnNvAWRy6vpjvYagJZT1hC97emM2m8q4PGEmAd8Dcycl0H\n3ICs54aAu4CvgedLzzwU0mMLRpDG2l/KmwGcAuyq3GurR9P4w8AmJLgvIF+POmwEVgOXKOxpiKEn\nBrZ+DmMXy5R6YvS3YdL1IZu6reM9G3gU6C/SBvgSORm2AplVbPJ0eDwMftOrMaShlpfyYunZChwF\n3AR8Vinbg26da7DX3Zb20fgZMpYaDGn7W2jdBns9QeveyuEjzCuFEYBTgfuBkzQGFRjcG3Eusu7c\nUsmPoWcUuKq43g68Wiqbihxy26CwZ9A1dhvax9bP0LHUYEjX32LoNtjpCV73rEr6e+BujQEPDG6N\nOAB8CDzYpSyGnsGiziHkTbO6VLYS2VGfr7BnsNfdlvax9TN0LDUY0vW3GLoNdnqC1F3e09hXup5X\nGN5p4YiGZ4Czu+SfhhygOdilbD1yDqRKH/A0sAO4s0t5DD2dde1a5G2zrVR2PrKb/kWX50Lobkv7\n2PrpGksNTexvPrp99USN+QZkd7h80nPOOPeGwKAf+bcAd1Ty1o1zb2g9O4A3Knm7kFODGgxub7w2\ntA/Y+RkqlhoM6ftbSN0GnR6vujubNscgJ7/OKtIrkU2SA6X7blU4FZtrkY2lzZX80eJnbD0zgb2l\n9AByXj/Wr2u3pX1c/Kw7li7E6G8pdXvV3VmerEJEfYJshpwO/Fq673ZkatQELgbuQ0bL8qffKcia\nDOLr+RY4sZQeQ07N7fawORFtaR8XP+uOpZZY/S2lbq+6O4PGbmSKswQ5az+C7AY/hqyT3gQ+COKu\nP68h372v7lLW2dGOredm4AngEeRtshTpJJ962JyItrSPi591x1JLrP6WUnfTY26Fob2//NOPbDA9\n6/CsoR26DfX46RNLDYZmxd1Xt8Fdj7ru/slvqYXfgD9SO2HJSxx+KOYyZKp3j4OttuiO5WfIWGpI\nHffQujV6UsW8p/kJeLi4ngF8Q/epa2ZyejWWKXV71/1/+TsLdXIFcA6yHzSINMCeCZ/IjEevxjKl\n7l6NeSaTyWQymUwmk8lkMpke518QvOZokU+z1gAAAABJRU5ErkJggg==\n",
       "prompt_number": 12,
       "text": [
        "\n",
        " 3      2      2      2            2\n",
        "x  + 2\u22c5x \u22c5y + x  + x\u22c5y  + 2\u22c5x\u22c5y + y "
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "(1/cos(x)).series(x, 0, 6)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "latex": [
        "$$1 + \\frac{1}{2} x^{2} + \\frac{5}{24} x^{4} + \\operatorname{\\mathcal{O}}\\left(x^{6}\\right)$$"
       ],
       "output_type": "pyout",
       "png": "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\nNfEf/bCaiZS/zxYAAAAASUVORK5CYII=\n",
       "prompt_number": 13,
       "text": [
        "\n",
        "     2      4          \n",
        "    x    5\u22c5x           \n",
        "1 + \u2500\u2500 + \u2500\u2500\u2500\u2500 + O(x**6)\n",
        "    2     24           "
       ]
      }
     ],
     "prompt_number": 13
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Use other tools seamlessly: talk to R (or Octave)"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "%load_ext rmagic "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 18
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "A simple dataset plotted in Python"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import numpy as np\n",
      "import pylab\n",
      "X = np.array([0,1,2,3,4])\n",
      "Y = np.array([3,5,4,6,7])\n",
      "pylab.scatter(X, Y);"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\nKyutYcOG2T2lSzQ0NFhVVVWWZVlWY2OjNXTo0Lj672dZltXc3GxZlmVdvnzZys3NtXbv3m3zouj6\ny1/+Ys2YMcMqKiqye0rUpaWlWT/88ENEx0blR70zMjI0dOjQaJzKCBUVFbrrrruUlpamxMRETZs2\nTRs3brR7VtTk5eXplltusXtGl+kO79/v2bOnJCkQCCgYDCo5OdnmRdFz/Phxbd26VXPmzInbNyFE\nel38WxxXceLECaWmpl75/ZAhQ3TixAkbF+F6xev799va2pSdna2BAwdq7Nixcrvddk+Kmvnz52vF\nihVKSIjPPDkcDuXn5ysnJ0dr164NeWzYt9n9v4KCAp06dep3ny8pKYm750S8tzs+NDU1aerUqVq1\napWSkpLsnhNVCQkJqq6u1vnz51VYWCifzyev12v3rE7bsmWLBgwYII/HE7c/6l1WVqbBgwfrzJkz\nKigoUEZGhvLy8q56bMSB3rFjR9QGmi4lJUX19fVXfl9fX68hQ4bYuAgdFe79+/GiT58+mjhxovbt\n2xcXgd67d682bdqkrVu3qqWlRRcuXNCsWbO0fv16u6dFzeDBgyVJ/fv31+TJk1VRUXHNQEf9zxDx\n8MwoJydHR48eVV1dnQKBgD788EM99thjds9ChCzL0rPPPiu326158+bZPSfqzp49q3PnzkmSLl68\nqB07dsjj8di8KjpKSkpUX1+v2tpabdiwQePGjYurOPv9fjU2NkqSmpubtX379pDvpopKoD/77DOl\npqaqvLxcEydO1IQJE6JxWtu4XC6tWbNGhYWFcrvdeuKJJ5SZmWn3rKiZPn26Ro8erSNHjig1NVXr\n1q2ze1JUlZWV6b333tPOnTvl8Xjk8Xi0bds2u2dFTUNDg8aNG6fs7Gzl5uaqqKhI48ePt3tWl4i3\nx42nT59WXl7elf92jz76qB566KFrHh/Rv8UBAIi9+PxrUgCIAwQaAAxFoAHAUAQaAAxFoAHAUAQa\nAAz1vw0tF27Rt+wZAAAAAElFTkSuQmCC\n"
      }
     ],
     "prompt_number": 26
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Use R to do a linear fit"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%%R -i X,Y -o XYcoef\n",
      "XYlm = lm(Y~X)\n",
      "XYcoef = coef(XYlm)\n",
      "print(summary(XYlm))\n",
      "par(mfrow=c(2,2))\n",
      "plot(XYlm)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "text": [
        "\n",
        "Call:\n",
        "lm(formula = Y ~ X)\n",
        "\n",
        "Residuals:\n",
        "   1    2    3    4    5 \n",
        "-0.2  0.9 -1.0  0.1  0.2 \n",
        "\n",
        "Coefficients:\n",
        "            Estimate Std. Error t value Pr(>|t|)  \n",
        "(Intercept)   3.2000     0.6164   5.191   0.0139 *\n",
        "X             0.9000     0.2517   3.576   0.0374 *\n",
        "---\n",
        "Signif. codes:  0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1 \n",
        "\n",
        "Residual standard error: 0.7958 on 3 degrees of freedom\n",
        "Multiple R-squared:  0.81,\tAdjusted R-squared: 0.7467 \n",
        "F-statistic: 12.79 on 1 and 3 DF,  p-value: 0.03739 \n",
        "\n"
       ]
      },
      {
       "output_type": "display_data",
       "png": "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\nl5WVdXFx+e233/YfOiR19KhUZaXdDz9cvXoVl97gizlz5owYMaKoqCgiIiI1NXXjxo04FwfqXgSU\noA0MDLjul5OTMzExab7n/fv3Ojo6AglKmF69enXy5MnCwsKjR49KSUlVVVXB/v0gJfXpjz9YLJaw\noxMRnp6eU6dOVVNT09HRSUxMXLRoEc4NjboXIQ8VYLPZkyZNar4nNze3J4wbXbNmTVxc3IoVK3x8\nfHR0dFasWPHtt9/W1dX9/PPP165dE3Z0IoLBYJBdzwBgZGRkZGQk3HgQ6ixKEvShQ4da7/Tw8KCi\nrm4qJCRk1qxZDx8+dHFxCQsLu3jx4q+//iopKRkeHq6uri7s6BBCtEBJglZSUlq9erWvr6+YmBgV\n5YsASUlJV1dXZWVl8sljPT29Fo8IIxoiCKK8vFxRUZGBj+AjgaAkQS9btuzSpUtr167FBwjb4ujo\niANyu4s1a9YEBATEx8fPmzePyWQymcygoCAzMzNhx4VEH1UJ9C98UhmJiidPngDA9u3bQ0NDjY2N\n8/LyXFxc7t27x0NR9fX1UVFR1dXV48aNU1NTaz6YZ+LEiXyOG3V/lI+Dxq5nJBqkpaXJGQu0tLQa\nGxt5KKG2ttbOzi46OjojI8Pe3j45OZkczOPp6Xnjxg1+x4tEAeUJOicnh+oqEKJUenq6k5NTRkYG\nOWb/4MGDWlpaPJQTHh4+ZcqUvXv3uru7BwUF+fr6rlmz5vXr187OznZ2dvyOGokCyvuImy96j1B3\nVFRUlJmZmZqaqqysDAASEhInTpzgrRzOGH8dHZ2ioqLmg3mmTJnCz6CRSKA8Qbu6ulJdBUKUEhMT\nMzAw4DxsxZldurMmTpy4du1aOzs7BQWFffv2TZ8+vcVgHoRawFEWCHWarq5uVlZWZ19laGjo6enp\n4uJSV1fn4OCwcuVKBoOBg3lQOzBBI9Rpbc0tU1FR0WLloIyMDA0NDc6PNjY2NjY21AaHRAgdE3Rc\nXJxc8/WfOiY9PT0rK6sr67+VlJSoqKjw/PLi4mJVVVWeX15VVSUmJtat4x8yZIimpmZnX5iYmMh5\nILu7aGtumfLy8vT09OZ7yIlWQkNDO1X+P//8U1paSuljBF18u7+o6+35i6g+hZqaGl1d3RZrmH0R\nf9szgyAIfpXFFzk5OTdv3uThhdevX//w4UOfPn14q7e6uvrZs2cWFha8vRwA/vzzT1tbW55f/vr1\n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\n"
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "And now we have the *python* variable `XYcoef`:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "XYcoef"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "pyout",
       "prompt_number": 33,
       "text": [
        "[ 3.2  0.9]"
       ]
      }
     ],
     "prompt_number": 33
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "<!--====-->\n",
      "Seamless Cython"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%load_ext cythonmagic"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 27
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def f(x):\n",
      "    return x**2-x\n",
      "\n",
      "def integrate_f(a, b, N):\n",
      "    s = 0; dx = (b-a)/N\n",
      "    for i in range(N):\n",
      "        s += f(a+i*dx)\n",
      "    return s * dx"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 33
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%%cython\n",
      "cdef double fcy(double x) except? -2:\n",
      "    return x**2-x\n",
      "\n",
      "def integrate_fcy(double a, double b, int N):\n",
      "    cdef int i\n",
      "    cdef double s, dx\n",
      "    s = 0; dx = (b-a)/N\n",
      "    for i in range(N):\n",
      "        s += fcy(a+i*dx)\n",
      "    return s * dx"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 36
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%timeit integrate_f(0, 1, 100)\n",
      "%timeit integrate_fcy(0, 1, 100)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10000 loops, best of 3: 68.1 us per loop\n",
        "1000000 loops, best of 3: 896 ns per loop"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n"
       ]
      }
     ],
     "prompt_number": 37
    }
   ],
   "metadata": {}
  }
 ]
}