diff --git a/examples/Builtin Extensions/Index.ipynb b/examples/Builtin Extensions/Index.ipynb index 606b801..7d50ce2 100644 --- a/examples/Builtin Extensions/Index.ipynb +++ b/examples/Builtin Extensions/Index.ipynb @@ -1,65 +1,57 @@ { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Back to the main [Index](../Index.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Builtin Extensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython extensions allow custom magic commands to be shipped as standalone libraries. IPython includes a few extensions that define magic commands for working with code in other languages.\n", + "\n", + "
\n", + "We are in the process of moving these builtin extensions to their parent projects (Cython, oct2py and rpy2). Once this happens this documentation will move as well.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tutorials" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* [Cython Magics](Cython Magics.ipynb): magics for compiling and running Cython code in a cell\n", + "* [Octave Magic](Octave Magic.ipynb): magics for running Octave code in a cell\n", + "* [R Magics](R Magics.ipynb): magics for running R code in a cell" + ] + } + ], "metadata": { - "name": "", "signature": "sha256:a89ddd606f68e27067a5e2301a4d19a3c149131f4f07be4483a65979e26bebe0" }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Back to the main [Index](../Index.ipynb)" - ] - }, - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Builtin Extensions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython extensions allow custom magic commands to be shipped as standalone libraries. IPython includes a few extensions that define magic commands for working with code in other languages.\n", - "\n", - "
\n", - "We are in the process of moving these builtin extensions to their parent projects (Cython, oct2py and rpy2). Once this happens this documentation will move as well.\n", - "
" - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Tutorials" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* [Cython Magics](Cython Magics.ipynb): magics for compiling and running Cython code in a cell\n", - "* [Octave Magic](Octave Magic.ipynb): magics for running Octave code in a cell\n", - "* [R Magics](R Magics.ipynb): magics for running R code in a cell" - ] - } - ], - "metadata": {} - } - ] + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/Builtin Extensions/Octave Magic.ipynb b/examples/Builtin Extensions/Octave Magic.ipynb index ff642e5..576c541 100644 --- a/examples/Builtin Extensions/Octave Magic.ipynb +++ b/examples/Builtin Extensions/Octave Magic.ipynb @@ -1,371 +1,1956 @@ { - "metadata": { - "name": "Octave Magic" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Using Octave Inside IPython" - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Installation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `octavemagic` extension provides the ability to interact with Octave. It depends on the `oct2py` package,\n", - "which may be installed using `easy_install`.\n", - "\n", - "To enable the extension, load it as follows:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%load_ext octavemagic" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 18 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Overview" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Loading the extension enables three magic functions: `%octave`, `%octave_push`, and `%octave_pull`.\n", - "\n", - "The first is for executing one or more lines of Octave, while the latter allow moving variables between the Octave and Python workspace.\n", - "Here you see an example of how to execute a single line of Octave, and how to transfer the generated value back to Python:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "x = %octave [1 2; 3 4];\n", - "x" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 19, - "text": [ - "array([[ 1., 2.],\n", - " [ 3., 4.]])" - ] - } - ], - "prompt_number": 19 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "a = [1, 2, 3]\n", - "\n", - "%octave_push a\n", - "%octave a = a * 2;\n", - "%octave_pull a\n", - "a" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 20, - "text": [ - "array([[2, 4, 6]])" - ] - } - ], - "prompt_number": 20 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When using the cell magic, `%%octave` (note the double `%`), multiple lines of Octave can be executed together. Unlike\n", - "with the single cell magic, no value is returned, so we use the `-i` and `-o` flags to specify input and output variables." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%octave -i x -o y\n", - "y = x + 3;" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 21 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "y" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 22, - "text": [ - "array([[ 4., 5.],\n", - " [ 6., 7.]])" - ] - } - ], - "prompt_number": 22 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Plotting" - ] - }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using Octave Inside IPython" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `octavemagic` extension provides the ability to interact with Octave. It depends on the `oct2py` package,\n", + "which may be installed using `easy_install`.\n", + "\n", + "To enable the extension, load it as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%load_ext octavemagic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Overview" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Loading the extension enables three magic functions: `%octave`, `%octave_push`, and `%octave_pull`.\n", + "\n", + "The first is for executing one or more lines of Octave, while the latter allow moving variables between the Octave and Python workspace.\n", + "Here you see an example of how to execute a single line of Octave, and how to transfer the generated value back to Python:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/plain": [ + "array([[ 1., 2.],\n", + " [ 3., 4.]])" + ] + }, + "execution_count": 19, "metadata": {}, - "source": [ - "Plot output is automatically captured and displayed, and using the `-f` flag you may choose its format (currently, `png` and `svg` are supported)." - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "x = %octave [1 2; 3 4];\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%octave -f svg\n", - "\n", - "p = [12 -2.5 -8 -0.1 8];\n", - "x = 0:0.01:1;\n", - "\n", - "polyout(p, 'x')\n", - "plot(x, polyval(p, x));" - ], - "language": "python", + "data": { + "text/plain": [ + "array([[2, 4, 6]])" + ] + }, + "execution_count": 20, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "text": [ - "12*x^4 - 2.5*x^3 - 8*x^2 - 0.1*x^1 + 8" - ] - }, - { - "output_type": "display_data", - "svg": [ - "\n", - "\n", - "Produced by GNUPLOT 4.4 patchlevel 0 \n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\t6\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t6.5\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t7\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t7.5\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t8\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t8.5\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t9\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t9.5\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t0\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t0.2\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t0.4\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t0.6\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t0.8\n", - "\t\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\t1\n", - "\t\t\n", - "\t\n", - "\t\n", - "\n", - "\t\n", - "\n", - "\t\n", - "\n", - "\t\n", - "\n", - "\n", - "" - ] - } - ], - "prompt_number": 23 - }, + "output_type": "execute_result" + } + ], + "source": [ + "a = [1, 2, 3]\n", + "\n", + "%octave_push a\n", + "%octave a = a * 2;\n", + "%octave_pull a\n", + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When using the cell magic, `%%octave` (note the double `%`), multiple lines of Octave can be executed together. Unlike\n", + "with the single cell magic, no value is returned, so we use the `-i` and `-o` flags to specify input and output variables." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%%octave -i x -o y\n", + "y = x + 3;" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/plain": [ + "array([[ 4., 5.],\n", + " [ 6., 7.]])" + ] + }, + "execution_count": 22, "metadata": {}, - "source": [ - "The plot size is adjusted using the `-s` flag:" - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot output is automatically captured and displayed, and using the `-f` flag you may choose its format (currently, `png` and `svg` are supported)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%octave -s 500,500\n", - "\n", - "# butterworth filter, order 2, cutoff pi/2 radians\n", - "b = [0.292893218813452 0.585786437626905 0.292893218813452];\n", - "a = [1 0 0.171572875253810];\n", - "freqz(b, a, 32);" - ], - "language": "python", + "data": { + "text/plain": [ + "12*x^4 - 2.5*x^3 - 8*x^2 - 0.1*x^1 + 8" + ] + }, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "png": "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\n" - } - ], - "prompt_number": 24 + "output_type": "display_data" }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%octave -s 600,200 -f png\n", - "\n", - "subplot(121);\n", - "[x, y] = meshgrid(0:0.1:3);\n", - "r = sin(x - 0.5).^2 + cos(y - 0.5).^2;\n", - "surf(x, y, r);\n", - "\n", - "subplot(122);\n", - "sombrero()" - ], - "language": "python", + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Produced by GNUPLOT 4.4 patchlevel 0 \n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\t6\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t6.5\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t7\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t7.5\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t8\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t8.5\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t9\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t9.5\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t0\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t0.2\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t0.4\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t0.6\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t0.8\n", + "\t\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\t1\n", + "\t\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "" + ] + }, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAADGCAIAAACB92mRAAAJNmlDQ1BkZWZhdWx0X3JnYi5pY2MA\nAHiclZFnUJSHFobP933bCwvssnRYepMqZQHpvUmvogJL7yxLEbEhYgQiiog0RZCggAGjUiRWRLEQ\nFBSxoFkkCCgxGEVUUPLDOxPn3vHHfX49884755yZA0ARBQBARQFSUgV8Pxd7TkhoGAe+IZKXmW7n\n4+MJ3+X9KCAAAPdWfb/zXSjRMZk8AFgGgHxeOl8AgOQCgGaOIF0AgBwFAFZUUroAADkLACx+SGgY\nAHIDAFhxX30cAFhRX30eAFj8AD8HABQHQKLFfeNR3/h/9gIAKNvxBQmxMbkc/7RYQU4kP4aT6edi\nz3FzcOD48NNiE5Jjvjn4/yp/B0FMrgAAwCEtfRM/IS5ewPmfoUYGhobw7y/e+gICAAh78L//AwDf\n9NIaAbgLANi+f7OoaoDuXQBSj//NVI8CMAoBuu7wsvjZXzMcAAAeKMAAFkiDAqiAJuiCEZiBJdiC\nE7iDNwRAKGwAHsRDCvAhB/JhBxRBCeyDg1AD9dAELdAOp6EbzsMVuA634S6MwhMQwhS8gnl4D0sI\nghAROsJEpBFFRA3RQYwQLmKNOCGeiB8SikQgcUgqkoXkIzuREqQcqUEakBbkF+QccgW5iQwjj5AJ\nZBb5G/mEYigNZaHyqDqqj3JRO9QDDUDXo3FoBpqHFqJ70Sq0ET2JdqFX0NvoKCpEX6ELGGBUjI0p\nYboYF3PAvLEwLBbjY1uxYqwSa8TasV5sALuHCbE57COOgGPiODhdnCXOFReI4+EycFtxpbga3Alc\nF64fdw83gZvHfcHT8XJ4HbwF3g0fgo/D5+CL8JX4Znwn/hp+FD+Ff08gENgEDYIZwZUQSkgkbCaU\nEg4TOgiXCcOEScICkUiUJuoQrYjexEiigFhErCaeJF4ijhCniB9IVJIiyYjkTAojpZIKSJWkVtJF\n0ghpmrREFiWrkS3I3uRo8iZyGbmJ3Eu+Q54iL1HEKBoUK0oAJZGyg1JFaadco4xT3lKpVGWqOdWX\nmkDdTq2inqLeoE5QP9LEado0B1o4LYu2l3acdpn2iPaWTqer023pYXQBfS+9hX6V/oz+QYQpoifi\nJhItsk2kVqRLZETkNYPMUGPYMTYw8hiVjDOMO4w5UbKouqiDaKToVtFa0XOiY6ILYkwxQzFvsRSx\nUrFWsZtiM+JEcXVxJ/Fo8ULxY+JXxSeZGFOF6cDkMXcym5jXmFMsAkuD5cZKZJWwfmYNseYlxCWM\nJYIkciVqJS5ICNkYW53txk5ml7FPsx+wP0nKS9pJxkjukWyXHJFclJKVspWKkSqW6pAalfokzZF2\nkk6S3i/dLf1UBiejLeMrkyNzROaazJwsS9ZSlidbLHta9rEcKqct5ye3We6Y3KDcgryCvIt8uny1\n/FX5OQW2gq1CokKFwkWFWUWmorVigmKF4iXFlxwJjh0nmVPF6efMK8kpuSplKTUoDSktKWsoByoX\nKHcoP1WhqHBVYlUqVPpU5lUVVb1U81XbVB+rkdW4avFqh9QG1BbVNdSD1Xerd6vPaEhpuGnkabRp\njGvSNW00MzQbNe9rEbS4Wklah7XuaqPaJtrx2rXad3RQHVOdBJ3DOsOr8KvMV6Wualw1pkvTtdPN\n1m3TndBj63nqFeh1673WV9UP09+vP6D/xcDEINmgyeCJobihu2GBYa/h30baRjyjWqP7q+mrnVdv\nW92z+o2xjnGM8RHjhyZMEy+T3SZ9Jp9NzUz5pu2ms2aqZhFmdWZjXBbXh1vKvWGON7c332Z+3vyj\nhamFwOK0xV+WupZJlq2WM2s01sSsaVozaaVsFWnVYCW05lhHWB+1Ftoo2UTaNNo8t1WxjbZttp22\n07JLtDtp99rewJ5v32m/6GDhsMXhsiPm6OJY7DjkJO4U6FTj9MxZ2TnOuc153sXEZbPLZVe8q4fr\nftcxN3k3nluL27y7mfsW934Pmoe/R43Hc09tT75nrxfq5e51wGt8rdra1LXd3uDt5n3A+6mPhk+G\nz6++BF8f31rfF36Gfvl+A/5M/43+rf7vA+wDygKeBGoGZgX2BTGCwoNaghaDHYPLg4Uh+iFbQm6H\nyoQmhPaEEcOCwprDFtY5rTu4bircJLwo/MF6jfW5629ukNmQvOHCRsbGyI1nIvARwRGtEcuR3pGN\nkQtRblF1UfM8B94h3qto2+iK6NkYq5jymOlYq9jy2Jk4q7gDcbPxNvGV8XMJDgk1CW8SXRPrExeT\nvJOOJ60kByd3pJBSIlLOpYqnJqX2pymk5aYNp+ukF6ULMywyDmbM8z34zZlI5vrMHgFLkC4YzNLM\n2pU1kW2dXZv9ISco50yuWG5q7uAm7U17Nk3nOef9tBm3mbe5L18pf0f+xBa7LQ1bka1RW/u2qWwr\n3Da13WX7iR2UHUk7fiswKCgveLczeGdvoXzh9sLJXS672opEivhFY7std9f/gPsh4YehPav3VO/5\nUhxdfKvEoKSyZLmUV3rrR8Mfq35c2Ru7d6jMtOzIPsK+1H0P9tvsP1EuVp5XPnnA60BXBaeiuOLd\nwY0Hb1YaV9YfohzKOiSs8qzqqVat3le9XBNfM1prX9tRJ1e3p27xcPThkSO2R9rr5etL6j8dTTj6\nsMGloatRvbHyGOFY9rEXTUFNAz9xf2pplmkuaf58PPW48ITfif4Ws5aWVrnWsja0Latt9mT4ybs/\nO/7c067b3tDB7ig5BaeyTr38JeKXB6c9Tved4Z5pP6t2tq6T2VnchXRt6prvju8W9oT2DJ9zP9fX\na9nb+aver8fPK52vvSBxoewi5WLhxZVLeZcWLqdfnrsSd2Wyb2Pfk6shV+/3+/YPXfO4duO68/Wr\nA3YDl25Y3Th/0+LmuVvcW923TW93DZoMdv5m8lvnkOlQ1x2zOz13ze/2Dq8ZvjhiM3LlnuO96/fd\n7t8eXTs6/CDwwcOx8DHhw+iHM4+SH715nP146cn2cfx48VPRp5XP5J41/q71e4fQVHhhwnFi8Ln/\n8yeTvMlXf2T+sTxV+IL+onJacbplxmjm/Kzz7N2X615OvUp/tTRX9KfYn3WvNV+f/cv2r8H5kPmp\nN/w3K3+XvpV+e/yd8bu+BZ+FZ+9T3i8tFn+Q/nDiI/fjwKfgT9NLOcvE5arPWp97v3h8GV9JWVn5\nBy6ikLxSF1/9AAAACXBIWXMAABcSAAAXEgFnn9JSAAAAHXRFWHRTb2Z0d2FyZQBHUEwgR2hvc3Rz\nY3JpcHQgOS4wNfOvXY8AACAASURBVHic7J13XFPX+8c/J4s9LkNAUTCi4kajxS1qUNyrUFfrDrgV\nR1Dbap2k7oqD1Pmto0KdtWpN3LY/B6lbrC0R3IpyHeyR8/vj4pW6KhAI2LxfvvqiJzcn545zP+c5\n53meQyilMGPGjBkzZv6rCEzdADNmzJgxY8aUmIXQjBkzZsz8pzELoRkzZsyY+U9jFkIzZsyYMfOf\nxiyEZsyYMWPmP41ZCM2YMWPGzH8asxCaMWPGjJn/NGYhNGPGjBkz/2nMQmjGjBkzZv7TmIXQjBkz\nZsz8pzELoRkzZsyY+U9jFkIzZsyYMfOfxiyEZoqIXq/fvXu3qVthxkzZgmXZ3bt3syxr6oaYKQQi\nUzfATHmCZdmtW7f+/fffe/fulUgk9+/fd3Z27tev39y5c03dNDNmTMnu3bt//fXXc+fOPXz4MC8v\nr2LFitWrV583b55UKjV108z8O2aL0My/o9PpBg4c2LJly8DAwJ9++qlNmzYJCQnx8fFNmjSJi4vT\n6XReXl4RERHmUbCZ/xR6vf7LL78MCAho3LjxypUrK1eurNFobt++XadOnbi4OA8Pj7Zt24aGhur1\nelO31My/YBZCM2+HZVm1Wt20aVMvLy+VSlWhQoX//e9/cXFxR48e7dmzJ38YwzAHDhy4cOHCs2fP\nvL29zXJo5qMnNja2U6dOFStWDA0Nff78+axZs+Li4jQazfTp0xmG4Q9bsmRJUlKSTCZr0aJF//79\ndTqdCdts5v0Q88a8Zgqi1Wq1Wu2mTZtcXV07d+7cvHnz7t27v+vgwMBAjUZTsEStVs+ZM8fX1zc6\nOto8KWTmo0Gn02m12nXr1qWmpn7xxRe+vr6DBw9+18Fv9gutVjtr1qy7d+9+//33crm8xJtrppCY\nhdAM9Ho9p38nT55s27Ztr1695HJ5wbHtu3izw3PMnz9/3bp1/v7+U6dO9fPzK4EmmzFT4rAsy/WL\nX3/9tWLFioMHD5bL5R8yvHtXv9i8efOmTZsyMjLCwsIGDhxYAk02U0TMQvjfZeXKlbzbS/fu3UNC\nQmQyWaFqeFeH5+tfuXJl3bp1FQqFeRRsprxw7Nix7du3c24vLVu2HDZsWGGf3vf3iwsXLkyZMkWv\n1yuVSoVCUez2mjECZiH8b6HT6ZYuXZqYmHj//v0qVaoMGjToPTM8/8r7OzyHVqsdNWqUlZXV4sWL\nzXJopmyi1+vXr19/6tSp27dve3p6duzYceTIkR8yKfJWPqRf6PX6cePGnT59ev78+WY5NDnm8ImP\nH5ZlY2Nj169fn56e7uvr6+npOXv27FJbwJPL5Tdu3NDpdGq1esiQIZMmTZowYULp/LQZM+8nNjZ2\n69at165dq1KlSq1atWbNmhUQEFA6Py2VSvft28eyrEqlcnFx6dat25IlS4osvWaKidki/GjR6XSx\nsbG820vdunWNvizxISPfgly4cGH58uUnTpwwhx6aMRWc28vWrVuTk5O/+OKLypUr9+/f37gKVNh+\nwbLs9OnTDx069Mknn6xatcosh6WP2SL8qHjN7SUgIODatWtlp1/5+flt2LBBr9ePHj26fv36AwYM\n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\n" - } - ], - "prompt_number": 25 - }, + "output_type": "display_data" + } + ], + "source": [ + "%%octave -f svg\n", + "\n", + "p = [12 -2.5 -8 -0.1 8];\n", + "x = 0:0.01:1;\n", + "\n", + "polyout(p, 'x')\n", + "plot(x, polyval(p, x));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot size is adjusted using the `-s` flag:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, + "data": { + "image/png": [ + "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\n" + ] + }, "metadata": {}, - "source": [ - "Future work" - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "%%octave -s 500,500\n", + "\n", + "# butterworth filter, order 2, cutoff pi/2 radians\n", + "b = [0.292893218813452 0.585786437626905 0.292893218813452];\n", + "a = [1 0 0.171572875253810];\n", + "freqz(b, a, 32);" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "image/png": [ + "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\n", + "53meQyilMGPGjBkzZv6rCEzdADNmzJgxY8aUmIXQjBkzZsz8pzELoRkzZsyY+U9jFkIzZsyYMfOf\n", + "xiyEZsyYMWPmP41ZCM2YMWPGzH8asxCaMWPGjJn/NGYhNGPGjBkz/2nMQmjGjBkzZv7TmIXQjBkz\n", + "Zsz8pzELoRkzZsyY+U9jFkIzZsyYMfOfxiyEZoqIXq/fvXu3qVthxkzZgmXZ3bt3syxr6oaYKQQi\n", + "UzfATHmCZdmtW7f+/fffe/fulUgk9+/fd3Z27tev39y5c03dNDNmTMnu3bt//fXXc+fOPXz4MC8v\n", + "r2LFitWrV583b55UKjV108z8O2aL0My/o9PpBg4c2LJly8DAwJ9++qlNmzYJCQnx8fFNmjSJi4vT\n", + "6XReXl4RERHmUbCZ/xR6vf7LL78MCAho3LjxypUrK1eurNFobt++XadOnbi4OA8Pj7Zt24aGhur1\n", + "elO31My/YBZCM2+HZVm1Wt20aVMvLy+VSlWhQoX//e9/cXFxR48e7dmzJ38YwzAHDhy4cOHCs2fP\n", + "vL29zXJo5qMnNja2U6dOFStWDA0Nff78+axZs+Li4jQazfTp0xmG4Q9bsmRJUlKSTCZr0aJF//79\n", + "dTqdCdts5v0Q88a8Zgqi1Wq1Wu2mTZtcXV07d+7cvHnz7t27v+vgwMBAjUZTsEStVs+ZM8fX1zc6\n", + "Oto8KWTmo0Gn02m12nXr1qWmpn7xxRe+vr6DBw9+18Fv9gutVjtr1qy7d+9+//33crm8xJtrppCY\n", + "hdAM9Ho9p38nT55s27Ztr1695HJ5wbHtu3izw3PMnz9/3bp1/v7+U6dO9fPzK4EmmzFT4rAsy/WL\n", + "X3/9tWLFioMHD5bL5R8yvHtXv9i8efOmTZsyMjLCwsIGDhxYAk02U0TMQvjfZeXKlbzbS/fu3UNC\n", + "QmQyWaFqeFeH5+tfuXJl3bp1FQqFeRRsprxw7Nix7du3c24vLVu2HDZsWGGf3vf3iwsXLkyZMkWv\n", + "1yuVSoVCUez2mjECZiH8b6HT6ZYuXZqYmHj//v0qVaoMGjToPTM8/8r7OzyHVqsdNWqUlZXV4sWL\n", + "zXJopmyi1+vXr19/6tSp27dve3p6duzYceTIkR8yKfJWPqRf6PX6cePGnT59ev78+WY5NDnm8ImP\n", + "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\n" + ] + }, "metadata": {}, - "source": [ - "After the next release of `oct2py`, we'll add the ability to interrupt/kill the current Octave session without restarting the Python kernel." - ] + "output_type": "display_data" } ], - "metadata": {} + "source": [ + "%%octave -s 600,200 -f png\n", + "\n", + "subplot(121);\n", + "[x, y] = meshgrid(0:0.1:3);\n", + "r = sin(x - 0.5).^2 + cos(y - 0.5).^2;\n", + "surf(x, y, r);\n", + "\n", + "subplot(122);\n", + "sombrero()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Future work" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After the next release of `oct2py`, we'll add the ability to interrupt/kill the current Octave session without restarting the Python kernel." + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/Builtin Extensions/R Magics.ipynb b/examples/Builtin Extensions/R Magics.ipynb index 2fd1a4a..b94c53d 100644 --- a/examples/Builtin Extensions/R Magics.ipynb +++ b/examples/Builtin Extensions/R Magics.ipynb @@ -1,930 +1,2196 @@ { - "metadata": { - "name": "" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Using R Within the IPython Notebok" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using the `rmagic` extension, users can run R code from within the IPython Notebook. This example Notebook demonstrates this capability. " - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matplotlib inline" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Line magics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython has an `rmagic` extension that contains a some magic functions for working with R via rpy2. This extension can be loaded using the `%load_ext` magic as follows:" - ] - }, - { - "cell_type": "code", - "collapsed": true, - "input": [ - "%load_ext rmagic " - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A typical use case one imagines is having some numpy arrays, wanting to compute some statistics of interest on these\n", - " arrays and return the result back to python. Let's suppose we just want to fit a simple linear model to a scatterplot." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "X = np.array([0,1,2,3,4])\n", - "Y = np.array([3,5,4,6,7])\n", - "plt.scatter(X, Y)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 3, - "text": [ - "" - ] - }, - { - "metadata": {}, - "output_type": "display_data", - "png": "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\nH7s1AAAAAElFTkSuQmCC\n", - "text": [ - "" - ] - } - ], - "prompt_number": 3 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can accomplish this by first pushing variables to R, fitting a model and returning the results. The line magic %Rpush copies its arguments to variables of the same name in rpy2. The %R line magic evaluates the string in rpy2 and returns the results. In this case, the coefficients of a linear model." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%Rpush X Y\n", - "%R lm(Y~X)$coef" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 3, - "text": [ - "array([ 3.2, 0.9])" - ] - } - ], - "prompt_number": 3 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can check that this is correct fairly easily:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "Xr = X - X.mean(); Yr = Y - Y.mean()\n", - "slope = (Xr*Yr).sum() / (Xr**2).sum()\n", - "intercept = Y.mean() - X.mean() * slope\n", - "(intercept, slope)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 4, - "text": [ - "(3.2000000000000002, 0.90000000000000002)" - ] - } - ], - "prompt_number": 4 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It is also possible to return more than one value with %R." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%R resid(lm(Y~X)); coef(lm(X~Y))\n" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 5, - "text": [ - "array([-2.5, 0.9])" - ] - } - ], - "prompt_number": 5 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "One can also easily capture the results of %R into python objects. Like R, the return value of this multiline expression (multiline in the sense that it is separated by ';') is the final value, which is \n", - "the *coef(lm(X~Y))*. To pull other variables from R, there is one more magic." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There are two more line magics, %Rpull and %Rget. Both are useful after some R code has been executed and there are variables\n", - "in the rpy2 namespace that one would like to retrieve. The main difference is that one\n", - " returns the value (%Rget), while the other pulls it to self.shell.user_ns (%Rpull). Imagine we've stored the results\n", - "of some calculation in the variable \"a\" in rpy2's namespace. By using the %R magic, we can obtain these results and\n", - "store them in b. We can also pull them directly to user_ns with %Rpull. They are both views on the same data." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "b = %R a=resid(lm(Y~X))\n", - "%Rpull a\n", - "print(a)\n", - "assert id(b.data) == id(a.data)\n", - "%R -o a" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "[-0.2 0.9 -1. 0.1 0.2]\n" - ] - } - ], - "prompt_number": 6 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "%Rpull is equivalent to calling %R with just -o\n" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%R d=resid(lm(Y~X)); e=coef(lm(Y~X))\n", - "%R -o d -o e\n", - "%Rpull e\n", - "print(d)\n", - "print(e)\n", - "import numpy as np\n", - "np.testing.assert_almost_equal(d, a)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "[-0.2 0.9 -1. 0.1 0.2]\n", - "[ 3.2 0.9]\n" - ] - } - ], - "prompt_number": 7 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "On the other hand %Rpush is equivalent to calling %R with just -i and no trailing code." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "A = np.arange(20)\n", - "%R -i A\n", - "%R mean(A)\n" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 8, - "text": [ - "array([ 9.5])" - ] - } - ], - "prompt_number": 8 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The magic %Rget retrieves one variable from R." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%Rget A" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 9, - "text": [ - "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n", - " 17, 18, 19], dtype=int32)" - ] - } - ], - "prompt_number": 9 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Plotting and capturing output" - ] - }, + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using R Within the IPython Notebok" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the `rmagic` extension, users can run R code from within the IPython Notebook. This example Notebook demonstrates this capability. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Line magics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython has an `rmagic` extension that contains a some magic functions for working with R via rpy2. This extension can be loaded using the `%load_ext` magic as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%load_ext rmagic " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A typical use case one imagines is having some numpy arrays, wanting to compute some statistics of interest on these\n", + " arrays and return the result back to python. Let's suppose we just want to fit a simple linear model to a scatterplot." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, "metadata": {}, - "source": [ - "R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files, as with `%matplotlib inline`. As a call to %R may produce a return value (see above) we must ask what happens to a magic like the one below. The R code specifies that something is published to the notebook. If anything is published to the notebook, that call to %R returns None." - ] + "output_type": "execute_result" }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "from __future__ import print_function\n", - "v1 = %R plot(X,Y); print(summary(lm(Y~X))); vv=mean(X)*mean(Y)\n", - "print('v1 is:', v1)\n", - "v2 = %R mean(X)*mean(Y)\n", - "print('v2 is:', v2)" - ], - "language": "python", + "data": { + "image/png": [ + "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\n", + "H7s1AAAAAElFTkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, "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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\nUpK06OAUzDPgiIjOnTvHggULYtWqVTFjxoz41re+FevWrYshQ4bEQw899B9/vmvXrtG1a9f9nnv5\n5Zdj/fr1h3oyAEkGDBgQEyZMiEceeSSaNGkS8+bNi5tvvvmgnrhlKqgA/9spp5wSU6dOjalTp8aO\nHTti06ZN2ZMAKDBlZWWxYcOGOOOMM6Jr167RvHnzeO+996JFixbZ02qlIAI8YcKE6Nix437PNWvW\nLJo1a1bHiwD4NBg5cmSMHDkye8Z/pSACPHDgwOwJAFCnCuZNWABQnwgwACQQYABIIMAAkECAASCB\nAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABI\nIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgA\nEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEG\ngAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECA\nASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJGmUPOJCdO3dG\nw4YNo6SkJHsKwEGprq6OGTNmxC9/+cs44ogj4rrrroszzzwzexYFpiCeAa9bty4GDx4cy5Ytiw0b\nNsTQoUOjXbt2cdRRR8WQIUNi9+7d2RMBam3w4MGxYMGCmDx5cowZMya+//3vx4svvpg9iwJTEAG+\n9dZb4/jjj4/Pf/7zcd9990VVVVWsXLky3nzzzdi+fXtMmjSpVteprq6Oqqqq/X5VV1dHTU3NYf6X\nAPXd66+/Hu+++248+eST0alTp+jevXvMmDEj7rvvvuxpFJiCuAX92muvxapVq+KII46IZ555JubN\nmxelpaURETFp0qQYMWJEra4zc+bMmDNnzn7PrV69Ok488cRDNRlgvyorK6N3794fO9ahQ4eorq5O\nWkShKogAd+3aNWbNmhXXXHNN9OzZM+bPnx+jR4+OiIgXXnghunTpUqvrDB06NIYOHbrfc2PHjo31\n69cfss0A+9O1a9e49957Y9OmTXHsscdGRMSiRYviww8/TF5GoSmIAE+bNi2+/vWvx8MPPxydO3eO\nG2+8MR555JH4zGc+E9u2bYvXXnsteyJArZxwwgkxdOjQaN26dcyePTu2bt0azz77bDz55JPZ0ygw\nBRHgk08+Od56661YsGBBrF69Oo4//vg4+uijo0uXLtG3b99o1KggZgLUSv/+/WP58uWxaNGiaNKk\nSZSXl+97Ngz/VjBla9CgQVx00UVx0UUXZU8B+J917949unfvnj2DAlYQ74IGgPpGgAEggQADQAIB\nBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\ngAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\nEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\nCQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\nQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASPCJ\nAN90002xffv2jC3UY5WVlfHyyy/HwoUL46OPPsqeA3DYfSLA69ati9NOOy0WLVqUsWefDRs2RFVV\nVeoG6sbatWvj0ksvjddffz0qKiqiZcuWsX79+uxZAIfVJwL8+OOPxx133BFlZWUxYcKE2L1792Ef\nMXjw4Fi1alVERKxevTr69u0bHTt2jHbt2sWoUaNiz549h30DOT766KM47bTT4rvf/W5873vfiylT\npsTMmTNjwoQJsXfv3ux5AIdNo/0dHDhwYHz1q1+NG2+8Mc4666y4/PLL95079dRT49JLLz2kI1au\nXBk7duyIiIgpU6bEKaecErNnz46NGzfGuHHjYsqUKXHrrbf+x+s899xzsWDBgv2eW7RoURx77LGH\ndDf/uz//+c9x1VVXRe/evfcdGzRoUDz33HPx/vvvR8eOHRPXARw++w1wRESDBg2ipKQk1q9fHytX\nrtx3vHnz5od10EsvvRRr1qyJFi1axDHHHBOTJ0+OcePG1SrAPXr0iJNOOmm/5yorK/dFnsLRuHHj\nqKys/Nix6urqWLt2bTRp0iRpFcDht98Al5eXx/XXXx9f/vKXY8WKFdGmTZvDPmTJkiXRvn37OOec\nc2LTpk3RokWLiIhYsWJFnH766bW6Rtu2baNt27b7Pde6dWuvKRegLl26xMknnxy33357TJgwIaqq\nquIrX/lK9OzZM1q3bp09D+Cw+USAr7jiiqioqIj7778/vvnNb9bJiKuuuiqef/75mDRpUmzdujUa\nN24c5eXlcdttt8W0adOioqKiTnaQY9KkSXH99dfHxRdfHE2bNo0hQ4bE8OHDs2cBHFafCHCrVq3i\nj3/84wGfSR4O48ePj/Hjx0dExN///vfYtm1bRET06dMnbrzxxsN+25tcDRs2jGnTpmXPAKhTnwjw\ngw8+mLFjnw4dOkSHDh0iIuKcc85J3QIAh4vfhAUACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIB\nBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\ngAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\nEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\nCQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\nQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEBRvgnTt3xrZt27JnQFFZtmxZ\nDBw4MPr06RNlZWWxadOm7ElQbxVsgOfOnRvjxo3LngFF469//WvccMMNMX78+Hj22Wdj6NChcfnl\nl8fmzZuzp0G91Ch7QEREly5dYuPGjR87tnv37qiqqoq5c+dG//79Y+bMmf/xOlu2bInKysr9ntu6\ndWvs2bPnkOyFT6O77ror7rjjjjjzzDMjIuJrX/tavPPOO/HYY4/F6NGjk9dB/VMQAZ45c2YMGTIk\nBg0aFFdffXVERMybNy+WLl0aP/jBD6JZs2a1uk5FRUXMnz9/v+d+85vfRNu2bQ/ZZvi0+fDDD6Nd\nu3YfO1ZaWhqrV69OWgT1W0EE+Pzzz49ly5bFqFGjYty4cfHAAw9E69ato3nz5nHCCSfU+jplZWVR\nVla233Njx46N9evXH6rJ8KnTo0eP+OEPfxgzZsyIiH/dZfrOd74Tc+fOTV4G9VNBBDgiomXLljFr\n1qx44okn4oILLogePXpEw4YNs2dB0Rg2bFjMnz8/evfuHf37948FCxbExIkTo1evXtnToF4qmAD/\n2+WXXx7nnXdejBw5Mrp37549B4pGw4YN47nnnouKiorYvHlzTJw4Mc4444zsWVBvFVyAI/71utTz\nzz+fPQOK0oUXXpg9AYgC/hgSABQzAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaA\nBAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIAB\nIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBg\nAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkE\nGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0AC\nAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIEGj7AGF7qWXXor3338/jjvuuOjTp0/2HACKRME+\nA967d29s27YtdcPVV18dTz31VJSUlMRdd90Vl112WVRXV6duAqA4FESA9+zZE1OmTIkhQ4bEG2+8\nEXPmzIm2bdvGUUcdFZdeemns2rWrzjeVl5fHW2+9FQ899FAMGjQofvGLX0TLli3jpz/9aZ1vAaD4\nFMQt6JtuuinefvvtOOOMM+KKK66IRo0axdy5c6O0tDTGjh0b8+bNiyuuuOI/Xmf27Nnx9NNP7/fc\nm2++GaWlpbXetHz58rjnnns+dmz48OHx+OOP1/oaAHAgBRHg+fPnx7Jly6Jly5bRpEmT+OCDD+LL\nX/5yRERMnjw5Jk6cWKsAX3bZZXHJJZfs99yTTz4ZO3bsqPWmli1bxurVq+P888/fd+z3v/99tGzZ\nstbXAIADKYgAn3TSSbFq1ao4++yz45prrom//e1v+86tWLEiOnfuXKvrNG7cOBo3brzfcy1btoy9\ne/fWetOwYcOirKws2rVrF2effXYsWrQoRowYEZWVlbW+BgAcSEEEeNy4cdGvX7/48Y9/HP369Yv2\n7dtHRMQtt9wSjzzySCxcuLDON7Vp0ybmzZsXN910U8yaNSvatGkT69ati1atWtX5FgCKT0EE+KKL\n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\nrkJggg==\n" - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "v1 is: [ 10.]\n", - "v2 is: [ 10.]\n" - ] - } - ], - "prompt_number": 10 - }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "X = np.array([0,1,2,3,4])\n", + "Y = np.array([3,5,4,6,7])\n", + "plt.scatter(X, Y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can accomplish this by first pushing variables to R, fitting a model and returning the results. The line magic %Rpush copies its arguments to variables of the same name in rpy2. The %R line magic evaluates the string in rpy2 and returns the results. In this case, the coefficients of a linear model." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, + "data": { + "text/plain": [ + "array([ 3.2, 0.9])" + ] + }, + "execution_count": 3, "metadata": {}, - "source": [ - "What value is returned from %R?" - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "%Rpush X Y\n", + "%R lm(Y~X)$coef" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can check that this is correct fairly easily:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/plain": [ + "(3.2000000000000002, 0.90000000000000002)" + ] + }, + "execution_count": 4, "metadata": {}, - "source": [ - "Some calls have no particularly interesting return value, the magic %R will not return anything in this case. The return value in rpy2 is actually NULL so %R returns None." - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "Xr = X - X.mean(); Yr = Y - Y.mean()\n", + "slope = (Xr*Yr).sum() / (Xr**2).sum()\n", + "intercept = Y.mean() - X.mean() * slope\n", + "(intercept, slope)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is also possible to return more than one value with %R." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "v = %R plot(X,Y)\n", - "assert v == None" - ], - "language": "python", + "data": { + "text/plain": [ + "array([-2.5, 0.9])" + ] + }, + "execution_count": 5, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "png": "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\nUpK06OAUzDPgiIjOnTvHggULYtWqVTFjxoz41re+FevWrYshQ4bEQw899B9/vmvXrtG1a9f9nnv5\n5Zdj/fr1h3oyAEkGDBgQEyZMiEceeSSaNGkS8+bNi5tvvvmgnrhlKqgA/9spp5wSU6dOjalTp8aO\nHTti06ZN2ZMAKDBlZWWxYcOGOOOMM6Jr167RvHnzeO+996JFixbZ02qlIAI8YcKE6Nix437PNWvW\nLJo1a1bHiwD4NBg5cmSMHDkye8Z/pSACPHDgwOwJAFCnCuZNWABQnwgwACQQYABIIMAAkECAASCB\nAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABI\nIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgA\nEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEG\ngAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECA\nASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJGmUPOJCdO3dG\nw4YNo6SkJHsKwEGprq6OGTNmxC9/+cs44ogj4rrrroszzzwzexYFpiCeAa9bty4GDx4cy5Ytiw0b\nNsTQoUOjXbt2cdRRR8WQIUNi9+7d2RMBam3w4MGxYMGCmDx5cowZMya+//3vx4svvpg9iwJTEAG+\n9dZb4/jjj4/Pf/7zcd9990VVVVWsXLky3nzzzdi+fXtMmjSpVteprq6Oqqqq/X5VV1dHTU3NYf6X\nAPXd66+/Hu+++248+eST0alTp+jevXvMmDEj7rvvvuxpFJiCuAX92muvxapVq+KII46IZ555JubN\nmxelpaURETFp0qQYMWJEra4zc+bMmDNnzn7PrV69Ok488cRDNRlgvyorK6N3794fO9ahQ4eorq5O\nWkShKogAd+3aNWbNmhXXXHNN9OzZM+bPnx+jR4+OiIgXXnghunTpUqvrDB06NIYOHbrfc2PHjo31\n69cfss0A+9O1a9e49957Y9OmTXHsscdGRMSiRYviww8/TF5GoSmIAE+bNi2+/vWvx8MPPxydO3eO\nG2+8MR555JH4zGc+E9u2bYvXXnsteyJArZxwwgkxdOjQaN26dcyePTu2bt0azz77bDz55JPZ0ygw\nBRHgk08+Od56661YsGBBrF69Oo4//vg4+uijo0uXLtG3b99o1KggZgLUSv/+/WP58uWxaNGiaNKk\nSZSXl+97Ngz/VjBla9CgQVx00UVx0UUXZU8B+J917949unfvnj2DAlYQ74IGgPpGgAEggQADQAIB\nBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\ngAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\nEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\nCQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\nQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASPCJ\nAN90002xffv2jC3UY5WVlfHyyy/HwoUL46OPPsqeA3DYfSLA69ati9NOOy0WLVqUsWefDRs2RFVV\nVeoG6sbatWvj0ksvjddffz0qKiqiZcuWsX79+uxZAIfVJwL8+OOPxx133BFlZWUxYcKE2L1792Ef\nMXjw4Fi1alVERKxevTr69u0bHTt2jHbt2sWoUaNiz549h30DOT766KM47bTT4rvf/W5873vfiylT\npsTMmTNjwoQJsXfv3ux5AIdNo/0dHDhwYHz1q1+NG2+8Mc4666y4/PLL95079dRT49JLLz2kI1au\nXBk7duyIiIgpU6bEKaecErNnz46NGzfGuHHjYsqUKXHrrbf+x+s899xzsWDBgv2eW7RoURx77LGH\ndDf/uz//+c9x1VVXRe/evfcdGzRoUDz33HPx/vvvR8eOHRPXARw++w1wRESDBg2ipKQk1q9fHytX\nrtx3vHnz5od10EsvvRRr1qyJFi1axDHHHBOTJ0+OcePG1SrAPXr0iJNOOmm/5yorK/dFnsLRuHHj\nqKys/Nix6urqWLt2bTRp0iRpFcDht98Al5eXx/XXXx9f/vKXY8WKFdGmTZvDPmTJkiXRvn37OOec\nc2LTpk3RokWLiIhYsWJFnH766bW6Rtu2baNt27b7Pde6dWuvKRegLl26xMknnxy33357TJgwIaqq\nquIrX/lK9OzZM1q3bp09D+Cw+USAr7jiiqioqIj7778/vvnNb9bJiKuuuiqef/75mDRpUmzdujUa\nN24c5eXlcdttt8W0adOioqKiTnaQY9KkSXH99dfHxRdfHE2bNo0hQ4bE8OHDs2cBHFafCHCrVq3i\nj3/84wGfSR4O48ePj/Hjx0dExN///vfYtm1bRET06dMnbrzxxsN+25tcDRs2jGnTpmXPAKhTnwjw\ngw8+mLFjnw4dOkSHDh0iIuKcc85J3QIAh4vfhAUACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIB\nBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\ngAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\nEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\nCQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\nQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEBRvgnTt3xrZt27JnQFFZtmxZ\nDBw4MPr06RNlZWWxadOm7ElQbxVsgOfOnRvjxo3LngFF469//WvccMMNMX78+Hj22Wdj6NChcfnl\nl8fmzZuzp0G91Ch7QEREly5dYuPGjR87tnv37qiqqoq5c+dG//79Y+bMmf/xOlu2bInKysr9ntu6\ndWvs2bPnkOyFT6O77ror7rjjjjjzzDMjIuJrX/tavPPOO/HYY4/F6NGjk9dB/VMQAZ45c2YMGTIk\nBg0aFFdffXVERMybNy+WLl0aP/jBD6JZs2a1uk5FRUXMnz9/v+d+85vfRNu2bQ/ZZvi0+fDDD6Nd\nu3YfO1ZaWhqrV69OWgT1W0EE+Pzzz49ly5bFqFGjYty4cfHAAw9E69ato3nz5nHCCSfU+jplZWVR\nVla233Njx46N9evXH6rJ8KnTo0eP+OEPfxgzZsyIiH/dZfrOd74Tc+fOTV4G9VNBBDgiomXLljFr\n1qx44okn4oILLogePXpEw4YNs2dB0Rg2bFjMnz8/evfuHf37948FCxbExIkTo1evXtnToF4qmAD/\n2+WXXx7nnXdejBw5Mrp37549B4pGw4YN47nnnouKiorYvHlzTJw4Mc4444zsWVBvFVyAI/71utTz\nzz+fPQOK0oUXXpg9AYgC/hgSABQzAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaA\nBAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIAB\nIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBg\nAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkE\nGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0AC\nAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIEGj7AGF7qWXXor3338/jjvuuOjTp0/2HACKRME+\nA967d29s27YtdcPVV18dTz31VJSUlMRdd90Vl112WVRXV6duAqA4FESA9+zZE1OmTIkhQ4bEG2+8\nEXPmzIm2bdvGUUcdFZdeemns2rWrzjeVl5fHW2+9FQ899FAMGjQofvGLX0TLli3jpz/9aZ1vAaD4\nFMQt6JtuuinefvvtOOOMM+KKK66IRo0axdy5c6O0tDTGjh0b8+bNiyuuuOI/Xmf27Nnx9NNP7/fc\nm2++GaWlpbXetHz58rjnnns+dmz48OHx+OOP1/oaAHAgBRHg+fPnx7Jly6Jly5bRpEmT+OCDD+LL\nX/5yRERMnjw5Jk6cWKsAX3bZZXHJJZfs99yTTz4ZO3bsqPWmli1bxurVq+P888/fd+z3v/99tGzZ\nstbXAIADKYgAn3TSSbFq1ao4++yz45prrom//e1v+86tWLEiOnfuXKvrNG7cOBo3brzfcy1btoy9\ne/fWetOwYcOirKws2rVrF2effXYsWrQoRowYEZWVlbW+BgAcSEEEeNy4cdGvX7/48Y9/HP369Yv2\n7dtHRMQtt9wSjzzySCxcuLDON7Vp0ybmzZsXN910U8yaNSvatGkT69ati1atWtX5FgCKT0EE+KKL\n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\nrkJggg==\n" - } - ], - "prompt_number": 11 - }, + "output_type": "execute_result" + } + ], + "source": [ + "%R resid(lm(Y~X)); coef(lm(X~Y))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One can also easily capture the results of %R into python objects. Like R, the return value of this multiline expression (multiline in the sense that it is separated by ';') is the final value, which is \n", + "the *coef(lm(X~Y))*. To pull other variables from R, there is one more magic." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two more line magics, %Rpull and %Rget. Both are useful after some R code has been executed and there are variables\n", + "in the rpy2 namespace that one would like to retrieve. The main difference is that one\n", + " returns the value (%Rget), while the other pulls it to self.shell.user_ns (%Rpull). Imagine we've stored the results\n", + "of some calculation in the variable \"a\" in rpy2's namespace. By using the %R magic, we can obtain these results and\n", + "store them in b. We can also pull them directly to user_ns with %Rpull. They are both views on the same data." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Also, if the return value of a call to %R (in line mode) has just been printed to the console, then its value is also not returned." + "name": "stdout", + "output_type": "stream", + "text": [ + "[-0.2 0.9 -1. 0.1 0.2]\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "v = %R print(X)\n", - "assert v == None" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "text": [ - "[1] 0 1 2 3 4\n" - ] - } - ], - "prompt_number": 12 - }, + } + ], + "source": [ + "b = %R a=resid(lm(Y~X))\n", + "%Rpull a\n", + "print(a)\n", + "assert id(b.data) == id(a.data)\n", + "%R -o a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "%Rpull is equivalent to calling %R with just -o\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "But, if the last value did not print anything to console, the value is returned:\n" + "name": "stdout", + "output_type": "stream", + "text": [ + "[-0.2 0.9 -1. 0.1 0.2]\n", + "[ 3.2 0.9]\n" ] - }, + } + ], + "source": [ + "%R d=resid(lm(Y~X)); e=coef(lm(Y~X))\n", + "%R -o d -o e\n", + "%Rpull e\n", + "print(d)\n", + "print(e)\n", + "import numpy as np\n", + "np.testing.assert_almost_equal(d, a)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On the other hand %Rpush is equivalent to calling %R with just -i and no trailing code." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "v = %R print(summary(X)); X\n", - "print('v:', v)" - ], - "language": "python", + "data": { + "text/plain": [ + "array([ 9.5])" + ] + }, + "execution_count": 8, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "text": [ - " Min. 1st Qu. Median Mean 3rd Qu. Max. \n", - " 0 1 2 2 3 4 \n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "v: [0 1 2 3 4]\n" - ] - } - ], - "prompt_number": 13 - }, + "output_type": "execute_result" + } + ], + "source": [ + "A = np.arange(20)\n", + "%R -i A\n", + "%R mean(A)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The magic %Rget retrieves one variable from R." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/plain": [ + "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n", + " 17, 18, 19], dtype=int32)" + ] + }, + "execution_count": 9, "metadata": {}, - "source": [ - "The return value can be suppressed by a trailing ';' or an -n argument.\n" - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "%Rget A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting and capturing output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files, as with `%matplotlib inline`. As a call to %R may produce a return value (see above) we must ask what happens to a magic like the one below. The R code specifies that something is published to the notebook. If anything is published to the notebook, that call to %R returns None." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": true, - "input": [ - "%R -n X" - ], - "language": "python", + "data": { + "text/plain": [ + "\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" + ] + }, "metadata": {}, - "outputs": [], - "prompt_number": 14 + "output_type": "display_data" }, { - "cell_type": "code", - "collapsed": true, - "input": [ - "%R X; " - ], - "language": "python", + "data": { + "image/png": [ + "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\n", + "2sSIESP+16kAFIBly5bFjBkz9n1/yimnxJAhQ+JXv/pVnHDCCYnLaqcgngFHRAwbNiwWL14cP//5\n", + "z6O0tDRGjBgRixcvjm3bttX6Gu3atYtu3brt96thw4axYcOGw/gvAKAuNW/ePHbu3PmxY5WVlVFS\n", + "UpK06OAUzDPgiIjOnTvHggULYtWqVTFjxoz41re+FevWrYshQ4bEQw899B9/vmvXrtG1a9f9nnv5\n", + "5Zdj/fr1h3oyAEkGDBgQEyZMiEceeSSaNGkS8+bNi5tvvvmgnrhlKqgA/9spp5wSU6dOjalTp8aO\n", + "HTti06ZN2ZMAKDBlZWWxYcOGOOOMM6Jr167RvHnzeO+996JFixbZ02qlIAI8YcKE6Nix437PNWvW\n", + "LJo1a1bHiwD4NBg5cmSMHDkye8Z/pSACPHDgwOwJAFCnCuZNWABQnwgwACQQYABIIMAAkECAASCB\n", + "AANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABI\n", + "IMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgA\n", + "EggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEG\n", + "gAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECA\n", + "ASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJGmUPOJCdO3dG\n", + "w4YNo6SkJHsKwEGprq6OGTNmxC9/+cs44ogj4rrrroszzzwzexYFpiCeAa9bty4GDx4cy5Ytiw0b\n", + "NsTQoUOjXbt2cdRRR8WQIUNi9+7d2RMBam3w4MGxYMGCmDx5cowZMya+//3vx4svvpg9iwJTEAG+\n", + "9dZb4/jjj4/Pf/7zcd9990VVVVWsXLky3nzzzdi+fXtMmjSpVteprq6Oqqqq/X5VV1dHTU3NYf6X\n", + "APXd66+/Hu+++248+eST0alTp+jevXvMmDEj7rvvvuxpFJiCuAX92muvxapVq+KII46IZ555JubN\n", + "mxelpaURETFp0qQYMWJEra4zc+bMmDNnzn7PrV69Ok488cRDNRlgvyorK6N3794fO9ahQ4eorq5O\n", + "WkShKogAd+3aNWbNmhXXXHNN9OzZM+bPnx+jR4+OiIgXXnghunTpUqvrDB06NIYOHbrfc2PHjo31\n", + "69cfss0A+9O1a9e49957Y9OmTXHsscdGRMSiRYviww8/TF5GoSmIAE+bNi2+/vWvx8MPPxydO3eO\n", + "G2+8MR555JH4zGc+E9u2bYvXXnsteyJArZxwwgkxdOjQaN26dcyePTu2bt0azz77bDz55JPZ0ygw\n", + "BRHgk08+Od56661YsGBBrF69Oo4//vg4+uijo0uXLtG3b99o1KggZgLUSv/+/WP58uWxaNGiaNKk\n", + "SZSXl+97Ngz/VjBla9CgQVx00UVx0UUXZU8B+J917949unfvnj2DAlYQ74IGgPpGgAEggQADQAIB\n", + "BoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\n", + "gAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\n", + "EGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\n", + "CQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\n", + "QAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASPCJ\n", + "AN90002xffv2jC3UY5WVlfHyyy/HwoUL46OPPsqeA3DYfSLA69ati9NOOy0WLVqUsWefDRs2RFVV\n", + "VeoG6sbatWvj0ksvjddffz0qKiqiZcuWsX79+uxZAIfVJwL8+OOPxx133BFlZWUxYcKE2L1792Ef\n", + "MXjw4Fi1alVERKxevTr69u0bHTt2jHbt2sWoUaNiz549h30DOT766KM47bTT4rvf/W5873vfiylT\n", + "psTMmTNjwoQJsXfv3ux5AIdNo/0dHDhwYHz1q1+NG2+8Mc4666y4/PLL95079dRT49JLLz2kI1au\n", + "XBk7duyIiIgpU6bEKaecErNnz46NGzfGuHHjYsqUKXHrrbf+x+s899xzsWDBgv2eW7RoURx77LGH\n", + "dDf/uz//+c9x1VVXRe/evfcdGzRoUDz33HPx/vvvR8eOHRPXARw++w1wRESDBg2ipKQk1q9fHytX\n", + "rtx3vHnz5od10EsvvRRr1qyJFi1axDHHHBOTJ0+OcePG1SrAPXr0iJNOOmm/5yorK/dFnsLRuHHj\n", + "qKys/Nix6urqWLt2bTRp0iRpFcDht98Al5eXx/XXXx9f/vKXY8WKFdGmTZvDPmTJkiXRvn37OOec\n", + "c2LTpk3RokWLiIhYsWJFnH766bW6Rtu2baNt27b7Pde6dWuvKRegLl26xMknnxy33357TJgwIaqq\n", + "quIrX/lK9OzZM1q3bp09D+Cw+USAr7jiiqioqIj7778/vvnNb9bJiKuuuiqef/75mDRpUmzdujUa\n", + "N24c5eXlcdttt8W0adOioqKiTnaQY9KkSXH99dfHxRdfHE2bNo0hQ4bE8OHDs2cBHFafCHCrVq3i\n", + "j3/84wGfSR4O48ePj/Hjx0dExN///vfYtm1bRET06dMnbrzxxsN+25tcDRs2jGnTpmXPAKhTnwjw\n", + "gw8+mLFjnw4dOkSHDh0iIuKcc85J3QIAh4vfhAUACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIB\n", + "BoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\n", + "gAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\n", + "EGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\n", + "CQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\n", + "QAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEBRvgnTt3xrZt27JnQFFZtmxZ\n", + "DBw4MPr06RNlZWWxadOm7ElQbxVsgOfOnRvjxo3LngFF469//WvccMMNMX78+Hj22Wdj6NChcfnl\n", + "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\n", + "rkJggg==\n" + ] + }, "metadata": {}, - "outputs": [], - "prompt_number": 15 + "output_type": "display_data" }, { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Cell level magic" + "name": "stdout", + "output_type": "stream", + "text": [ + "v1 is: [ 10.]\n", + "v2 is: [ 10.]\n" ] - }, + } + ], + "source": [ + "from __future__ import print_function\n", + "v1 = %R plot(X,Y); print(summary(lm(Y~X))); vv=mean(X)*mean(Y)\n", + "print('v1 is:', v1)\n", + "v2 = %R mean(X)*mean(Y)\n", + "print('v2 is:', v2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## What value is returned from %R?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some calls have no particularly interesting return value, the magic %R will not return anything in this case. The return value in rpy2 is actually NULL so %R returns None." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "image/png": [ + "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\n", + "2sSIESP+16kAFIBly5bFjBkz9n1/yimnxJAhQ+JXv/pVnHDCCYnLaqcgngFHRAwbNiwWL14cP//5\n", + "z6O0tDRGjBgRixcvjm3bttX6Gu3atYtu3brt96thw4axYcOGw/gvAKAuNW/ePHbu3PmxY5WVlVFS\n", + "UpK06OAUzDPgiIjOnTvHggULYtWqVTFjxoz41re+FevWrYshQ4bEQw899B9/vmvXrtG1a9f9nnv5\n", + "5Zdj/fr1h3oyAEkGDBgQEyZMiEceeSSaNGkS8+bNi5tvvvmgnrhlKqgA/9spp5wSU6dOjalTp8aO\n", + "HTti06ZN2ZMAKDBlZWWxYcOGOOOMM6Jr167RvHnzeO+996JFixbZ02qlIAI8YcKE6Nix437PNWvW\n", + "LJo1a1bHiwD4NBg5cmSMHDkye8Z/pSACPHDgwOwJAFCnCuZNWABQnwgwACQQYABIIMAAkECAASCB\n", + "AANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABI\n", + "IMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgA\n", + "EggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEG\n", + "gAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECA\n", + "ASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJGmUPOJCdO3dG\n", + "w4YNo6SkJHsKwEGprq6OGTNmxC9/+cs44ogj4rrrroszzzwzexYFpiCeAa9bty4GDx4cy5Ytiw0b\n", + "NsTQoUOjXbt2cdRRR8WQIUNi9+7d2RMBam3w4MGxYMGCmDx5cowZMya+//3vx4svvpg9iwJTEAG+\n", + "9dZb4/jjj4/Pf/7zcd9990VVVVWsXLky3nzzzdi+fXtMmjSpVteprq6Oqqqq/X5VV1dHTU3NYf6X\n", + "APXd66+/Hu+++248+eST0alTp+jevXvMmDEj7rvvvuxpFJiCuAX92muvxapVq+KII46IZ555JubN\n", + "mxelpaURETFp0qQYMWJEra4zc+bMmDNnzn7PrV69Ok488cRDNRlgvyorK6N3794fO9ahQ4eorq5O\n", + "WkShKogAd+3aNWbNmhXXXHNN9OzZM+bPnx+jR4+OiIgXXnghunTpUqvrDB06NIYOHbrfc2PHjo31\n", + "69cfss0A+9O1a9e49957Y9OmTXHsscdGRMSiRYviww8/TF5GoSmIAE+bNi2+/vWvx8MPPxydO3eO\n", + "G2+8MR555JH4zGc+E9u2bYvXXnsteyJArZxwwgkxdOjQaN26dcyePTu2bt0azz77bDz55JPZ0ygw\n", + "BRHgk08+Od56661YsGBBrF69Oo4//vg4+uijo0uXLtG3b99o1KggZgLUSv/+/WP58uWxaNGiaNKk\n", + "SZSXl+97Ngz/VjBla9CgQVx00UVx0UUXZU8B+J917949unfvnj2DAlYQ74IGgPpGgAEggQADQAIB\n", + "BoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\n", + "gAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\n", + "EGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\n", + "CQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\n", + "QAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASPCJ\n", + "AN90002xffv2jC3UY5WVlfHyyy/HwoUL46OPPsqeA3DYfSLA69ati9NOOy0WLVqUsWefDRs2RFVV\n", + "VeoG6sbatWvj0ksvjddffz0qKiqiZcuWsX79+uxZAIfVJwL8+OOPxx133BFlZWUxYcKE2L1792Ef\n", + "MXjw4Fi1alVERKxevTr69u0bHTt2jHbt2sWoUaNiz549h30DOT766KM47bTT4rvf/W5873vfiylT\n", + "psTMmTNjwoQJsXfv3ux5AIdNo/0dHDhwYHz1q1+NG2+8Mc4666y4/PLL95079dRT49JLLz2kI1au\n", + "XBk7duyIiIgpU6bEKaecErNnz46NGzfGuHHjYsqUKXHrrbf+x+s899xzsWDBgv2eW7RoURx77LGH\n", + "dDf/uz//+c9x1VVXRe/evfcdGzRoUDz33HPx/vvvR8eOHRPXARw++w1wRESDBg2ipKQk1q9fHytX\n", + "rtx3vHnz5od10EsvvRRr1qyJFi1axDHHHBOTJ0+OcePG1SrAPXr0iJNOOmm/5yorK/dFnsLRuHHj\n", + "qKys/Nix6urqWLt2bTRp0iRpFcDht98Al5eXx/XXXx9f/vKXY8WKFdGmTZvDPmTJkiXRvn37OOec\n", + "c2LTpk3RokWLiIhYsWJFnH766bW6Rtu2baNt27b7Pde6dWuvKRegLl26xMknnxy33357TJgwIaqq\n", + "quIrX/lK9OzZM1q3bp09D+Cw+USAr7jiiqioqIj7778/vvnNb9bJiKuuuiqef/75mDRpUmzdujUa\n", + "N24c5eXlcdttt8W0adOioqKiTnaQY9KkSXH99dfHxRdfHE2bNo0hQ4bE8OHDs2cBHFafCHCrVq3i\n", + "j3/84wGfSR4O48ePj/Hjx0dExN///vfYtm1bRET06dMnbrzxxsN+25tcDRs2jGnTpmXPAKhTnwjw\n", + "gw8+mLFjnw4dOkSHDh0iIuKcc85J3QIAh4vfhAUACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIB\n", + "BoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBA\n", + "gAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAk\n", + "EGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwA\n", + "CQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\n", + "QAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAEBRvgnTt3xrZt27JnQFFZtmxZ\n", + "DBw4MPr06RNlZWWxadOm7ElQbxVsgOfOnRvjxo3LngFF469//WvccMMNMX78+Hj22Wdj6NChcfnl\n", + "l8fmzZuzp0G91Ch7QEREly5dYuPGjR87tnv37qiqqoq5c+dG//79Y+bMmf/xOlu2bInKysr9ntu6\n", + "dWvs2bPnkOyFT6O77ror7rjjjjjzzDMjIuJrX/tavPPOO/HYY4/F6NGjk9dB/VMQAZ45c2YMGTIk\n", + "Bg0aFFdffXVERMybNy+WLl0aP/jBD6JZs2a1uk5FRUXMnz9/v+d+85vfRNu2bQ/ZZvi0+fDDD6Nd\n", + "u3YfO1ZaWhqrV69OWgT1W0EE+Pzzz49ly5bFqFGjYty4cfHAAw9E69ato3nz5nHCCSfU+jplZWVR\n", + "Vla233Njx46N9evXH6rJ8KnTo0eP+OEPfxgzZsyIiH/dZfrOd74Tc+fOTV4G9VNBBDgiomXLljFr\n", + "1qx44okn4oILLogePXpEw4YNs2dB0Rg2bFjMnz8/evfuHf37948FCxbExIkTo1evXtnToF4qmAD/\n", + "2+WXXx7nnXdejBw5Mrp37549B4pGw4YN47nnnouKiorYvHlzTJw4Mc4444zsWVBvFVyAI/71utTz\n", + "zz+fPQOK0oUXXpg9AYgC/hgSABQzAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaA\n", + "BAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIAB\n", + "IIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBg\n", + "AEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkE\n", + "GAASCDAAJBBgAEggwACQQIABIIEAA0ACAQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIIEAA0AC\n", + "AQaABAIMAAkEGAASCDAAJBBgAEggwACQQIABIEGj7AGF7qWXXor3338/jjvuuOjTp0/2HACKRME+\n", + "A967d29s27YtdcPVV18dTz31VJSUlMRdd90Vl112WVRXV6duAqA4FESA9+zZE1OmTIkhQ4bEG2+8\n", + "EXPmzIm2bdvGUUcdFZdeemns2rWrzjeVl5fHW2+9FQ899FAMGjQofvGLX0TLli3jpz/9aZ1vAaD4\n", + "FMQt6JtuuinefvvtOOOMM+KKK66IRo0axdy5c6O0tDTGjh0b8+bNiyuuuOI/Xmf27Nnx9NNP7/fc\n", + "m2++GaWlpbXetHz58rjnnns+dmz48OHx+OOP1/oaAHAgBRHg+fPnx7Jly6Jly5bRpEmT+OCDD+LL\n", + "X/5yRERMnjw5Jk6cWKsAX3bZZXHJJZfs99yTTz4ZO3bsqPWmli1bxurVq+P888/fd+z3v/99tGzZ\n", + "stbXAIADKYgAn3TSSbFq1ao4++yz45prrom//e1v+86tWLEiOnfuXKvrNG7cOBo3brzfcy1btoy9\n", + "e/fWetOwYcOirKws2rVrF2effXYsWrQoRowYEZWVlbW+BgAcSEEEeNy4cdGvX7/48Y9/HP369Yv2\n", + "7dtHRMQtt9wSjzzySCxcuLDON7Vp0ybmzZsXN910U8yaNSvatGkT69ati1atWtX5FgCKT0EE+KKL\n", + "LorVq1d/4hbxJZdcEhMnToymTZum7DrmmGPi4YcfTnlsAIpbQQQ44l+3iP//11fPPffcpDUAcHgV\n", + "xMeQAKC+EWAASCDAAJBAgAEggQADQAIBBoAEAgwACRrU1NTUZI+oC8uXL4++ffvG6aefftA/+8or\n", + "rxzwV1xy6OzevTsaNGgQJSUl2VOK3o4dO6JZs2bZM4rezp07o6SkJBo2bJg9paj9O2PnnXfeQf/s\n", + "2rVrY8GCBdGhQ4dDPes/qjcB/l/07NkzXn311ewZRW/atGnRtm3bKCsry55S9Pyfrhs333xz9OvX\n", + "L84555zsKUXtgw8+iNGjR3/q/lqdW9AAkECAASCBAANAAgEGgAQCDAAJBBgAEvgYUi384x//iOOO\n", + "Oy57RtHbtm1bNGzY0OdT64D/03Vj8+bN0axZszjyyCOzpxS16urq2LhxY7Rp0yZ7ykERYABI4BY0\n", + "ACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBJiCsmfPnuwJAHVCgP8Pr776apx//vnRqVOnGDBg\n", + "QGzZsiV7UlErLy+Pc889N3tGUSsvL49evXpF9+7dY9CgQfH2229nTypKa9asiQEDBkS3bt3i7LPP\n", + "jtdffz17UtG79tprY/jw4dkzDooAH8DGjRvjyiuvjOnTp8eaNWuiU6dOMX78+OxZRWnLli0xatSo\n", + "uOGGG8IvZjt81q9fH2PHjo3y8vL4wx/+EBdeeGGMGTMme1ZRGjp0aFx22WWxYsWKmDx5cpSVlWVP\n", + "KmovvvhizJ07N3vGQRPgA1i2bFmceuqpcdppp0VJSUmMHj06nn766exZRamioiKaNm0ajz76aPaU\n", + "olZdXR1PPPFEtG3bNiIiunfvHkuWLEleVZzmzZsXAwcOjIiIqqqqqKqqSl5UvDZt2hSTJ0+O0aNH\n", + "Z085aAJ8AOvWrfvYL6tv27ZtbN26NXbt2pW4qjiVlZXFXXfdFU2aNMmeUtTat28fF1xwwb7vH3zw\n", + "wejbt2/iouJ17LHHRoMGDWLMmDFx7bXXxv333589qWiNHDkybrvttmjevHn2lIMmwAewadOmj/1V\n", + "nn/H4Z///GfWJDhkZsyYEc8//3xMnTo1e0rR2rVrV7Rp0yZKS0tjzpw5sXv37uxJRednP/tZNGnS\n", + "JHr37p095b8iwAfQunXr2LZt277vt2/fHo0bN46jjz46cRX87x544IGYOHFiLFy4MEpLS7PnFK0j\n", + "jzwybrnllli8eHG88sorsXjx4uxJRWXTpk0xZsyY6NWrV7zwwgvx9ttvx3vvvRdLly7NnlZrAnwA\n", + "paWl8e677+77/t13342OHTvmDYJD4NFHH43bbrstFi5cGKeeemr2nKK0c+fOmDBhwr6Xqxo1ahRd\n", + "u3aNP/3pT8nLiktlZWV07tw5HnjggbjjjjuioqIili9fHrNnz86eVmsCfAC9evWKtWvXRkVFReza\n", + "tSvuvvvu+MY3vpE9C/5rf/nLX+K6666LOXPmRPv27WPz5s2xefPm7FlFp3HjxvG73/0uZs6cGRH/\n", + "ekPnb3/72/jSl76UvKy4nHzyybFkyZJ9X6NGjYp+/frF9OnTs6fVWqPsAYXqyCOPjPvvvz/69+8f\n", + "rVq1iq5du8a0adOyZ8F/bfr06bFjx47o2bPnx47v2LEjmjZtmjOqSE2ZMiXGjRsX99xzT7Rq1Spm\n", + "zZoVn/vc57JnUWAa1Pjg5f+pqqoqtm/f7rVf4KBt3bo1WrVqlT2DAiXAAJDAa8AAkECAASCBAANA\n", + "AgEGgAQCDAAJBBgAEggwACQQYABIIMAAkECAASCBAANAAgEGgAQCDAAJBBgAEggwACQQYABIIMAA\n", + "kECAASCBAEM9sHPnzvjCF74Qt9xyy8eOf/vb344rr7wyaRXUb42yBwCHX+PGjaO8vDx69OgRZ511\n", + "VgwYMCDuvPPOWLp0aSxbtix7HtRLAgz1RLdu3eLOO++MYcOGRUlJSUyaNCmWLFkSLVq0yJ4G9VKD\n", + "mpqamuwRQN25+OKL4+WXX47p06fHtddemz0H6i2vAUM907lz59i7d2+0bt06ewrUawIM9cirr74a\n", + "s2bNittvvz2uu+662LJlS/YkqLfcgoZ64sMPP4xu3brFzTffHMOGDYuePXtGp06d4ic/+Un2NKiX\n", + "BBjqieHDh8c777wTCxYsiAYNGsSaNWuie/fu8cwzz0SfPn2y50G9I8BQD7z00ktRVlYWK1asiBNP\n", + "PHHf8TvvvDN+9KMfxcqVK70bGuqYAANAAm/CAoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQAD\n", + "QAIBBoAEAgwACQQYABIIMAAkEGAASCDAAJBAgAEggQADQAIBBoAE/w+5mUYqDkF0XgAAAABJRU5E\n", + "rkJggg==\n" + ] + }, "metadata": {}, - "source": [ - "Often, we will want to do more than a simple linear regression model. There may be several lines of R code that we want to \n", - "use before returning to python. This is the cell-level magic.\n", - "\n", - "\n", - "For the cell level magic, inputs can be passed via the -i or --inputs argument in the line. These variables are copied \n", - "from the shell namespace to R's namespace using rpy2.robjects.r.assign. It would be nice not to have to copy these into R: rnumpy ( http://bitbucket.org/njs/rnumpy/wiki/API ) has done some work to limit or at least make transparent the number of copies of an array. This seems like a natural thing to try to build on. Arrays can be output from R via the -o or --outputs argument in the line. All other arguments are sent to R's png function, which is the graphics device used to create the plots.\n", - "\n", - "We can redo the above calculations in one ipython cell. We might also want to add some output such as a summary\n", - " from R or perhaps the standard plotting diagnostics of the lm." - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "v = %R plot(X,Y)\n", + "assert v == None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Also, if the return value of a call to %R (in line mode) has just been printed to the console, then its value is also not returned." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "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", + "data": { + "text/plain": [ + "[1] 0 1 2 3 4\n" + ] + }, "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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\n" - } - ], - "prompt_number": 16 - }, + "output_type": "display_data" + } + ], + "source": [ + "v = %R print(X)\n", + "assert v == None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But, if the last value did not print anything to console, the value is returned:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, + "data": { + "text/plain": [ + " Min. 1st Qu. Median Mean 3rd Qu. Max. \n", + " 0 1 2 2 3 4 \n" + ] + }, "metadata": {}, - "source": [ - "Passing data back and forth" - ] + "output_type": "display_data" }, { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Currently, data is passed through RMagics.pyconverter when going from python to R and RMagics.Rconverter when \n", - "going from R to python. These currently default to numpy.ndarray. Future work will involve writing better converters, most likely involving integration with http://pandas.sourceforge.net.\n", - "\n", - "Passing ndarrays into R seems to require a copy, though once an object is returned to python, this object is NOT copied, and it is possible to change its values.\n" + "name": "stdout", + "output_type": "stream", + "text": [ + "v: [0 1 2 3 4]\n" ] - }, - { - "cell_type": "code", - "collapsed": true, - "input": [ - "seq1 = np.arange(10)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 17 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%R -i seq1 -o seq2\n", - "seq2 = rep(seq1, 2)\n", - "print(seq2)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "text": [ - " [1] 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9\n" - ] - } - ], - "prompt_number": 18 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "seq2[::2] = 0\n", - "seq2" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 19, - "text": [ - "array([0, 1, 0, 3, 0, 5, 0, 7, 0, 9, 0, 1, 0, 3, 0, 5, 0, 7, 0, 9], dtype=int32)" - ] - } - ], - "prompt_number": 19 - }, + } + ], + "source": [ + "v = %R print(summary(X)); X\n", + "print('v:', v)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The return value can be suppressed by a trailing ';' or an -n argument.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%R -n X" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%R X; " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cell level magic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Often, we will want to do more than a simple linear regression model. There may be several lines of R code that we want to \n", + "use before returning to python. This is the cell-level magic.\n", + "\n", + "\n", + "For the cell level magic, inputs can be passed via the -i or --inputs argument in the line. These variables are copied \n", + "from the shell namespace to R's namespace using rpy2.robjects.r.assign. It would be nice not to have to copy these into R: rnumpy ( http://bitbucket.org/njs/rnumpy/wiki/API ) has done some work to limit or at least make transparent the number of copies of an array. This seems like a natural thing to try to build on. Arrays can be output from R via the -o or --outputs argument in the line. All other arguments are sent to R's png function, which is the graphics device used to create the plots.\n", + "\n", + "We can redo the above calculations in one ipython cell. We might also want to add some output such as a summary\n", + " from R or perhaps the standard plotting diagnostics of the lm." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%R\n", - "print(seq2)" - ], - "language": "python", + "data": { + "text/plain": [ + "\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" + ] + }, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "text": [ - " [1] 0 1 0 3 0 5 0 7 0 9 0 1 0 3 0 5 0 7 0 9\n" - ] - } - ], - "prompt_number": 20 + "output_type": "display_data" }, { - "cell_type": "markdown", + "data": { + "image/png": [ + "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\n", + "FSvEzz//bNAyIyIixFtvvWXQMoUwzuf/+uuvxdatWw1erpR5x44dE1OnTjV6PUOGDBF///23UetI\n", + "SEgQXbp0MWodQhjn+NXHGMfef504cUJMmTLF6PW8++674ubNm0avJy052gb8YiAOe3t7QkJCCA4O\n", + "xsbGRg7EIUmSJBU4eWYgDkmSJEnKT3L3gJySJEmSlE/JBCxJkiRJJmA2e/bs2aYOIrewsbHBwcGB\n", + "YsWKGaxMMzMzypQpg6Ojo8HKBChZsiQ1a9Y0aJny89tQuXJl7Avw9Gi5RaFChShfvjzly5c3aj32\n", + "9vZUq1YNS0tLo9WhKAqlSpUyercWYxy/+hjj2PsvS0tLypcvb5Bubq/z4vs31aAvOTodoSRJkiRJ\n", + "GvIWtCRJkiSZgEzAkiRJkmQCMgFLkiRJkgnIBCxJkiRJJiATsCRJkiSZgEzAkiRJkmQCBToBP3r0\n", + "iJSUFL3rkpOTiY+P1/4ztaSkJB49eqR3XWJiojbOxMTEHI7spfT2mVqt1lmvfmXOU1OIiopKc3/l\n", + "tu8/v4uKinrtnOBqtdogUxNGRESQXs/L+9mc5ef58+c8e/YszfVCCIPM3pbePnv27Fm251TO6H7P\n", + "7j573Wcx5Hkjve//decEozDZNBAmlJycLNzd3cVbb70lGjZsKE6ePJlqm1GjRgknJyfRqFEj0ahR\n", + "IxETE2OCSF/68MMPxciRI/Wuq1u3rjbOgQMH5nBkL6W3z7Zs2SIqVqyoXX/48GETRSrE8OHDRc+e\n", + "PUXr1q3F5s2bU63Pbd9/fvbOO++Irl27CkdHRxEQEJBq/cmTJ0W9evVEhw4dhIeHh1Cr1ZmuIzo6\n", + "WjRv3lx0795d1K9fP83Z11avXi26deuW6fJfWLlypWjVqpWoW7eu+PLLL1Ot37Ztm2jfvr3w8PAQ\n", + "7u7uIj4+Pkv1pLfPpk+fLtzd3UXLli3FqlWrslRHRvf79u3bRa1atbJUhxDpfxZDnDcy8v2nd04w\n", + "hgKZgI8ePSrmz58vhBBiz549YsCAAam2admypXj06FFOh6bX3r17Rf369fUm4NjYWNGgQQMTRJVa\n", + "evtsypQpBp/uMSsOHDig/c6fPn2qd9q73PT952e///67GDZsmBBCiNDQUNG6detU27Rq1Uo7ZaCn\n", + "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\n" + ] + }, "metadata": {}, - "source": [ - "Once the array data has been passed to R, modifring its contents does not modify R's copy of the data." - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "%%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)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Passing data back and forth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Currently, data is passed through RMagics.pyconverter when going from python to R and RMagics.Rconverter when \n", + "going from R to python. These currently default to numpy.ndarray. Future work will involve writing better converters, most likely involving integration with http://pandas.sourceforge.net.\n", + "\n", + "Passing ndarrays into R seems to require a copy, though once an object is returned to python, this object is NOT copied, and it is possible to change its values.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "seq1 = np.arange(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "seq1[0] = 200\n", - "%R print(seq1)" - ], - "language": "python", + "data": { + "text/plain": [ + " [1] 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9\n" + ] + }, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "text": [ - " [1] 0 1 2 3 4 5 6 7 8 9\n" - ] - } - ], - "prompt_number": 21 - }, + "output_type": "display_data" + } + ], + "source": [ + "%%R -i seq1 -o seq2\n", + "seq2 = rep(seq1, 2)\n", + "print(seq2)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/plain": [ + "array([0, 1, 0, 3, 0, 5, 0, 7, 0, 9, 0, 1, 0, 3, 0, 5, 0, 7, 0, 9], dtype=int32)" + ] + }, + "execution_count": 19, "metadata": {}, - "source": [ - "But, if we pass data as both input and output, then the value of \"data\" in user_ns will be overwritten and the\n", - "new array will be a view of the data in R's copy." - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "seq2[::2] = 0\n", + "seq2" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "print(seq1)\n", - "%R -i seq1 -o seq1\n", - "print(seq1)\n", - "seq1[0] = 200\n", - "%R print(seq1)\n", - "seq1_view = %R seq1\n", - "assert(id(seq1_view.data) == id(seq1.data))" - ], - "language": "python", + "data": { + "text/plain": [ + " [1] 0 1 0 3 0 5 0 7 0 9 0 1 0 3 0 5 0 7 0 9\n" + ] + }, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "[200 1 2 3 4 5 6 7 8 9]\n", - "[200 1 2 3 4 5 6 7 8 9]\n" - ] - }, - { - "output_type": "display_data", - "text": [ - " [1] 200 1 2 3 4 5 6 7 8 9\n" - ] - } - ], - "prompt_number": 22 - }, + "output_type": "display_data" + } + ], + "source": [ + "%%R\n", + "print(seq2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once the array data has been passed to R, modifring its contents does not modify R's copy of the data." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, + "data": { + "text/plain": [ + " [1] 0 1 2 3 4 5 6 7 8 9\n" + ] + }, "metadata": {}, - "source": [ - "Exception handling\n" - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "seq1[0] = 200\n", + "%R print(seq1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But, if we pass data as both input and output, then the value of \"data\" in user_ns will be overwritten and the\n", + "new array will be a view of the data in R's copy." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Exceptions are handled by passing back rpy2's exception and the line that triggered it." + "name": "stdout", + "output_type": "stream", + "text": [ + "[200 1 2 3 4 5 6 7 8 9]\n", + "[200 1 2 3 4 5 6 7 8 9]\n" ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "try:\n", - " %R -n nosuchvar\n", - "except Exception as e:\n", - " print(e)\n", - " pass" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "parsing and evaluating line \"nosuchvar\".\n", - "R error message: \"Error in eval(expr, envir, enclos) : object 'nosuchvar' not found\n", - "\"\n", - " R stdout:\"Error in eval(expr, envir, enclos) : object 'nosuchvar' not found\n", - "\"\n", - "\n" - ] - } - ], - "prompt_number": 23 - }, - { - "cell_type": "heading", - "level": 2, + "data": { + "text/plain": [ + " [1] 200 1 2 3 4 5 6 7 8 9\n" + ] + }, "metadata": {}, - "source": [ - "Structured arrays and data frames\n" - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "print(seq1)\n", + "%R -i seq1 -o seq1\n", + "print(seq1)\n", + "seq1[0] = 200\n", + "%R print(seq1)\n", + "seq1_view = %R seq1\n", + "assert(id(seq1_view.data) == id(seq1.data))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exception handling" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exceptions are handled by passing back rpy2's exception and the line that triggered it." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In R, data frames play an important role as they allow array-like objects of mixed type with column names (and row names). In bumpy, the closest analogy is a structured array with named fields. In future work, it would be nice to use pandas to return full-fledged DataFrames from rpy2. In the mean time, structured arrays can be passed back and forth with the -d flag to %R, %Rpull, and %Rget" + "name": "stdout", + "output_type": "stream", + "text": [ + "parsing and evaluating line \"nosuchvar\".\n", + "R error message: \"Error in eval(expr, envir, enclos) : object 'nosuchvar' not found\n", + "\"\n", + " R stdout:\"Error in eval(expr, envir, enclos) : object 'nosuchvar' not found\n", + "\"\n", + "\n" ] - }, - { - "cell_type": "code", - "collapsed": true, - "input": [ - "datapy= np.array([(1, 2.9, 'a'), (2, 3.5, 'b'), (3, 2.1, 'c')],\n", - " dtype=[('x', '" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Back to the main [Index](../Index.ipynb)" - ] - }, - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Customization" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython has rich APIs for customization. Many behaviors of the different IPython applications can be configured using command line arguments or configuration files. IPython's core syntax and command line features can also be customized through input filters, custom magic commands, etc." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Tutorials" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Coming soon." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Examples" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Coming soon." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Non-notebook examples" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This directory also contains examples that are regular Python (`.py`) files." - ] - }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Back to the main [Index](../Index.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Customization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython has rich APIs for customization. Many behaviors of the different IPython applications can be configured using command line arguments or configuration files. IPython's core syntax and command line features can also be customized through input filters, custom magic commands, etc." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tutorials" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Coming soon." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Coming soon." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Non-notebook examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This directory also contains examples that are regular Python (`.py`) files." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%run ../utils/list_pyfiles.ipy" - ], - "language": "python", + "data": { + "text/html": [ + "appconfig.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Customization/appconfig.py" + ] + }, "metadata": {}, - "outputs": [ - { - "html": [ - "appconfig.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Customization/appconfig.py" - ] - } - ], - "prompt_number": 1 + "output_type": "display_data" } ], - "metadata": {} + "source": [ + "%run ../utils/list_pyfiles.ipy" + ] } - ] + ], + "metadata": { + "signature": "sha256:de8cb1aff3da9097ba3fc7afab4327fc589f2bb1c154feeeb5ed97c87e37486f" + }, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/Embedding/Index.ipynb b/examples/Embedding/Index.ipynb index 9682176..e5ecb6a 100644 --- a/examples/Embedding/Index.ipynb +++ b/examples/Embedding/Index.ipynb @@ -1,188 +1,194 @@ { - "metadata": { - "name": "", - "signature": "sha256:627cdf03b8de558c9344f9d1e8f0beeb2448e37e492d676e6db7b07d33251a2b" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Back to the main [Index](../Index.ipynb)" - ] - }, - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Embedding IPython Into Other Applications" - ] - }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Back to the main [Index](../Index.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Embedding IPython Into Other Applications" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The architecture of IPython is built with reusable components. These components include:\n", + "\n", + "* The configuration system for processing command line arguments and configuration files\n", + "* The IPython `InteractiveShell` object that provides the core interactive features across the entire code base\n", + "* The IPython kernel, which provides the capabilities of the `InteractiveShell` object over a ZeroMQ/JSON based message protocol to various frontends\n", + "* The IPython frontends (Notebook, Qt Console, Console, Terminal)\n", + "\n", + "These components can be embedded into other applications." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tutorials" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Coming soon." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Coming soon." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Non-notebook examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This directory also contains examples that are regular Python (`.py`) files." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/html": [ + "embed_class_long.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/embed_class_long.py" + ] + }, "metadata": {}, - "source": [ - "The architecture of IPython is built with reusable components. These components include:\n", - "\n", - "* The configuration system for processing command line arguments and configuration files\n", - "* The IPython `InteractiveShell` object that provides the core interactive features across the entire code base\n", - "* The IPython kernel, which provides the capabilities of the `InteractiveShell` object over a ZeroMQ/JSON based message protocol to various frontends\n", - "* The IPython frontends (Notebook, Qt Console, Console, Terminal)\n", - "\n", - "These components can be embedded into other applications." - ] + "output_type": "display_data" }, { - "cell_type": "heading", - "level": 2, + "data": { + "text/html": [ + "embed_class_short.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/embed_class_short.py" + ] + }, "metadata": {}, - "source": [ - "Tutorials" - ] + "output_type": "display_data" }, { - "cell_type": "markdown", + "data": { + "text/html": [ + "embed_function.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/embed_function.py" + ] + }, "metadata": {}, - "source": [ - "Coming soon." - ] + "output_type": "display_data" }, { - "cell_type": "heading", - "level": 2, + "data": { + "text/html": [ + "inprocess_qtconsole.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/inprocess_qtconsole.py" + ] + }, "metadata": {}, - "source": [ - "Examples" - ] + "output_type": "display_data" }, { - "cell_type": "markdown", + "data": { + "text/html": [ + "inprocess_terminal.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/inprocess_terminal.py" + ] + }, "metadata": {}, - "source": [ - "Coming soon." - ] + "output_type": "display_data" }, { - "cell_type": "heading", - "level": 2, + "data": { + "text/html": [ + "internal_ipkernel.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/internal_ipkernel.py" + ] + }, "metadata": {}, - "source": [ - "Non-notebook examples" - ] + "output_type": "display_data" }, { - "cell_type": "markdown", + "data": { + "text/html": [ + "ipkernel_qtapp.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/ipkernel_qtapp.py" + ] + }, "metadata": {}, - "source": [ - "This directory also contains examples that are regular Python (`.py`) files." - ] + "output_type": "display_data" }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "%run ../utils/list_pyfiles.ipy" - ], - "language": "python", + "data": { + "text/html": [ + "ipkernel_wxapp.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/ipkernel_wxapp.py" + ] + }, "metadata": {}, - "outputs": [ - { - "html": [ - "embed_class_long.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/embed_class_long.py" - ] - }, - { - "html": [ - "embed_class_short.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/embed_class_short.py" - ] - }, - { - "html": [ - "embed_function.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/embed_function.py" - ] - }, - { - "html": [ - "inprocess_qtconsole.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/inprocess_qtconsole.py" - ] - }, - { - "html": [ - "inprocess_terminal.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/inprocess_terminal.py" - ] - }, - { - "html": [ - "internal_ipkernel.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/internal_ipkernel.py" - ] - }, - { - "html": [ - "ipkernel_qtapp.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/ipkernel_qtapp.py" - ] - }, - { - "html": [ - "ipkernel_wxapp.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/ipkernel_wxapp.py" - ] - } - ], - "prompt_number": 1 + "output_type": "display_data" } ], - "metadata": {} + "source": [ + "%run ../utils/list_pyfiles.ipy" + ] } - ] + ], + "metadata": { + "signature": "sha256:627cdf03b8de558c9344f9d1e8f0beeb2448e37e492d676e6db7b07d33251a2b" + }, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Animations Using clear_output.ipynb b/examples/IPython Kernel/Animations Using clear_output.ipynb index c799dfb..8b59c77 100644 --- a/examples/IPython Kernel/Animations Using clear_output.ipynb +++ b/examples/IPython Kernel/Animations Using clear_output.ipynb @@ -1,194 +1,1341 @@ { - "metadata": { - "name": "" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Simple animations Using clear_output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Sometimes you want to clear the output area in the middle of a calculation. This can be useful for doing simple animations. In terminals, there is the carriage-return (`'\\r'`) for overwriting a single line, but the notebook frontend can clear the whole output area, not just a single line.\n", - "\n", - "To clear output in the Notebook you can use the `clear_output()` function. If you are clearing the output every frame of an animation, calling `clear_output()` will create noticeable flickering. You can use `clear_output(wait=True)` to add the *clear_output* call to a queue. When data becomes available to replace the existing output, the *clear_output* will be called immediately before the new data is added. This avoids the flickering by not rendering the cleared output to the screen." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Simple example" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we show our progress iterating through a list:" - ] - }, - { - "cell_type": "code", - "collapsed": true, - "input": [ - "import sys\n", - "import time" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import display, clear_output\n", - "for i in range(10):\n", - " time.sleep(0.25)\n", - " clear_output(wait=True)\n", - " print(i)\n", - " sys.stdout.flush()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "9\n" - ] - } - ], - "prompt_number": 2 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "AsyncResult.wait_interactive" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The AsyncResult object has a special `wait_interactive()` method, which prints its progress interactively,\n", - "so you can watch as your parallel computation completes.\n", - "\n", - "**This example assumes you have an IPython cluster running, which you can start from the [cluster panel](/#clusters)**" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython import parallel\n", - "rc = parallel.Client()\n", - "view = rc.load_balanced_view()\n", - "\n", - "amr = view.map_async(time.sleep, [0.5]*100)\n", - "\n", - "amr.wait_interactive()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - " 100/100 tasks finished after 6 s" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n", - "done\n" - ] - } - ], - "prompt_number": 3 - }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simple animations Using clear_output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sometimes you want to clear the output area in the middle of a calculation. This can be useful for doing simple animations. In terminals, there is the carriage-return (`'\\r'`) for overwriting a single line, but the notebook frontend can clear the whole output area, not just a single line.\n", + "\n", + "To clear output in the Notebook you can use the `clear_output()` function. If you are clearing the output every frame of an animation, calling `clear_output()` will create noticeable flickering. You can use `clear_output(wait=True)` to add the *clear_output* call to a queue. When data becomes available to replace the existing output, the *clear_output* will be called immediately before the new data is added. This avoids the flickering by not rendering the cleared output to the screen." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simple example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we show our progress iterating through a list:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import sys\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Matplotlib example" + "name": "stdout", + "output_type": "stream", + "text": [ + "9\n" ] - }, + } + ], + "source": [ + "from IPython.display import display, clear_output\n", + "for i in range(10):\n", + " time.sleep(0.25)\n", + " clear_output(wait=True)\n", + " print(i)\n", + " sys.stdout.flush()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## AsyncResult.wait_interactive" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The AsyncResult object has a special `wait_interactive()` method, which prints its progress interactively,\n", + "so you can watch as your parallel computation completes.\n", + "\n", + "**This example assumes you have an IPython cluster running, which you can start from the [cluster panel](/#clusters)**" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also use `clear_output()` to clear figures and plots." + "name": "stdout", + "output_type": "stream", + "text": [ + " 100/100 tasks finished after 6 s\n", + "done\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 4 - }, + } + ], + "source": [ + "from IPython import parallel\n", + "rc = parallel.Client()\n", + "view = rc.load_balanced_view()\n", + "\n", + "amr = view.map_async(time.sleep, [0.5]*100)\n", + "\n", + "amr.wait_interactive()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Matplotlib example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also use `clear_output()` to clear figures and plots." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "from scipy.special import jn\n", - "x = np.linspace(0,5)\n", - "f, ax = plt.subplots()\n", - "ax.set_title(\"Bessel functions\")\n", - "\n", - "for n in range(1,10):\n", - " time.sleep(1)\n", - " ax.plot(x, jn(x,n))\n", - " clear_output(wait=True)\n", - " display(f)\n", - "\n", - "# close the figure at the end, so we don't get a duplicate\n", - "# of the last plot\n", - "plt.close()" - ], - "language": "python", + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAloAAAGKCAYAAADUje9YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4U+fZx/GvJMt774H3wOABmG32CitANmkzmzRpk6ZN\n", + "SdpmJzTrzWpmm9WRBVklhB32DBsMBoyx8cA23lOesiyd8/5hcEKBBIxtedyf69J1dKxxbksY/fSc\n", + "Z2hUVVURQgghhBAdTmvtAoQQQggheisJWkIIIYQQnUSClhBCCCFEJ5GgJYQQQgjRSSRoCSGEEEJ0\n", + "EglaQgghhBCdRIKWEKJH+Pjjj/nVr371k/epqanh2muvxcXFhZdffrmLKhNCiIuToCWEYOHChWi1\n", + "2raLj48PM2fOZNeuXdYurY1Go/nZ+/ztb3/D09OTsrIyFixY0AVVXZjJZCIuLo4jR45YrQYhRPcg\n", + "QUsIgUaj4dZbb0VRFBRF4cSJE8TFxTF9+nQyMzOtXd4lS01NZf78+Tg4OGBra2u1OmxtbUlLSyMx\n", + "MdFqNQghugcJWkIIVFXlx4tEeHl58dprrxEYGMjKlSutWNnlqaurw97evsuPO3HiRLZv397lxxVC\n", + "dH8StIQQF2U2m3F3d7d2GZfFGquKaTQaqxxXCNH9SdASQpynoqKCRx99FFtbW+bPn3/ObWvXrmXw\n", + "4MHY29sTGRnJe++9d87tn3zyCTExMTg6OpKcnExqaioAFouFP/3pT/j7++Pi4sL8+fOpqqpqe1xJ\n", + "SQk333wzrq6ueHh4cOedd1JZWXlJ9X788cdotVq2bdvGpEmT0Ol0QGtL07Zt286578KFC9s61be0\n", + "tKDVatm9ezdXX301zs7OxMbGsnTp0nMeYzabefHFFwkPD8fe3p5hw4axYcOG846r1Wr59NNPAQgL\n", + "CyM/P7/tOQwGA/fffz++vr44Ojoyfvx49u7d23b7pdbyyiuvEBoaipOTE9OnTycvL++SXiMhhHVI\n", + "0BJCALB48eK2zvC+vr4sWrSIV199FWdn57b7LFmyhEceeYR33nmHmpoaVq9ezdKlS3nppZcAOHr0\n", + "KAsWLOCLL76gsrKSMWPG8PnnnwPw/vvvs337dg4ePEhOTg61tbVtp9sMBgNjx45l/PjxnDp1ipyc\n", + "HOLi4pg0aRJms/lna7/zzjtRFIUJEyawdetWLBYL0NrS9L+d6H+8r9frAbjnnnt44IEHKC8v55ln\n", + "nuH222+nrKys7X633nora9as4ZtvvqGmpobHHnuMF198kdtuu+2c4yqKwu23337ecZqbm0lOTsZk\n", + "MrF3716Kior49a9/zcyZM1m+fPnP1lJeXg7A6tWree+999iwYQPFxcX4+vqyatWqn319hBBWpAoh\n", + "+rxnnnlGve2229r2q6ur1S+//FL18PBQP/nkE1VVVdVisaj9+vVTc3Nzz3lsQUGB6ubmpqqqqi5f\n", + "vlyNiIhQTSbTecd46KGH1FtuueWCx3/00UfVZ5555ryfT506Vf3mm29UVVXVjz76SL3zzjt/8veY\n", + "OHGiunXr1nP2t23bds59Fi5ceM7zaDQa9d133z3nPqNHj1ZXrVqlqqqq7ty5U3V3d1crKysv+biq\n", + "qqphYWFqXl6eqqqq+tprr6mjR48+73EffPCBGhMTc8m1vP322+q4ceMuWocQovuRFi0hBHBu3yZ3\n", + "d3fmz5/P448/3tZalZOTQ2FhIREREedMBRESEkJdXR2FhYVMmTIFHx8fIiIiuO+++1i6dCmKogBw\n", + "9913s2HDBoYMGcKjjz56ztQRO3bs4Nlnnz3nebVaLZs3byY9Pf2yfo9LmQbif40bN+6c/YiIiLbT\n", + "mjt37mT06NF4enq2+7hbt25l7ty55/38mmuu4eTJk20tVher5ewp1BtvvJHi4mJiYmJYsGAB69ev\n", + "/+lfTAhhdRK0hBAXNWDAAHJzc4HWIKHVajEYDG3TQJy9WCwWgoKCcHJyYteuXXzyySd4eHiwYMEC\n", + "brjhBgAGDhxITk4OTz75JFVVVcycOZO3334bAK1WyzvvvHPB533iiSfajn+5NBrNeaceGxoazruf\n", + "o6PjOft6vb4teLbnuBeq41L9VC3+/v6kpaXxxhtvoKoqt956Kw899NAV1yeE6DwStIQQFw0CBw8e\n", + "JDY2FmhtWQkKCmrrc3VWfX09OTk5bfuKojB58mRefPFF9uzZw7Jly6iqqkJRFBwdHbn++uv58MMP\n", + "ef/99/nnP/8JwIQJE857XqCtI317eXh4nNdZ/Pvvv7+k4HM23IwZM4Y9e/ac03H/f2k0mrZ+YRcy\n", + "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\n", + "FHu5DJWdFJVcin1FqZRLK/XgpjEILNidSJneyMy+gSZzY7BxPRmphaz/LYqQDo25p3/zajvaC4KI\n", + "TmtAq74ivgxoNHq0agM67Y0vI9qbHNNpDej1RuRyGQqlDDs7GXZKGXZ28hv2ywWbnZ0MO4UM+dVS\n", + "ip3dNftyKXKF7N9jdlJkclml/kaTC63o6Gi2bdvGyy+/DMDSpUvp0aMH7dqVrw7Kzs7mq6++Ytas\n", + "WUgkElatWoWHhwf33XffTdurLaFVdCaG4+Om0e6Ld/G+r+vV4yczs3hx8xZWjB6Fv1vl4kbpC4vZ\n", + "3/MRwn5diGuHVqYy2eIo0Rp4ZUMsfZt5MLbD3UW5NgoG3l/5LB0CuzO625M1ZKHlckVsDXqgLcEm\n", + "FFuiTof6wzeRBYegfOQZk/VjDoxqLaeen4lRo6Xj9/PMFq9OFEUWHznKnqRkfhwxDA/7qqXpsmZE\n", + "UURrECjVC5TpjJTpjZTpBMr0Rkp1RsquPV6xrTEIaPQCaoOxohSuljqDgEIuxb5CjCnlUpSyilIu\n", + "QSmXIhHhTFYpLkoZXZq6YK+QXa1nJ5OgkElRyCTY3aJUVNSzk0mwk0qQy6TIJFjl1GltcuZ4Knu3\n", + "XGTA6LY0b2MZWQ1EQUSvN6LXlb90OsPV7Zvt6/VGDBX1DXrh6r5Bb0SvFzBcW0dvxGAQkEolyOXl\n", + "wkwulyKXy5Bd2bYrF2iB7aWm9dGKioq6roO+ffty6NChq0Lr5MmT9OrV6+qXuF+/fnz33Xe3FFq1\n", + "QUlMIpGPvkrrD1+7TmQBhPo05IWITkzZso3fHxiFg92dn5QvLfwe74E96pXIAnBSypk/KJip62Pw\n", + "cLCjf/Pqx035a/832MlVjOx669HOukRjPzfufzyM1ctMJ7ZEQUDz9YdI3b1QjHuqxts3NzJ7JaHf\n", + "z+P8Wx9z9MGX6LR8EQqv2p1uFkWRjw8d4VBqKj+NGIZ7PRJZUC5OVHYyVHYyPB3uflRRqBBuGoOA\n", + "Wi+gNVS8jAJag0h6kZbfTmbS0tuBsMZO6IwiWqN4dfpTL4jorpRGAb1BRC8I6Izlx3XGin2DiEEQ\n", + "0QsieqOAKIL8ivCSSiq2ywWZXHr9S3btvkyCXHL9Mdk1pUxCeSmVIL1aD2SSK+clSCUgvcW2TCKp\n", + "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\n", + "msn/AbPOyGwnPY5DAAAAAElFTkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAGKCAYAAADUje9YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4U+fZx/GvJMt774H3wOABmG32CitANmkzmzRpk6ZN\nSdpmJzTrzWpmm9WRBVklhB32DBsMBoyx8cA23lOesiyd8/5hcEKBBIxtedyf69J1dKxxbksY/fSc\nZ2hUVVURQgghhBAdTmvtAoQQQggheisJWkIIIYQQnUSClhBCCCFEJ5GgJYQQQgjRSSRoCSGEEEJ0\nEglaQgghhBCdRIKWEKJH+Pjjj/nVr371k/epqanh2muvxcXFhZdffrmLKhNCiIuToCWEYOHChWi1\n2raLj48PM2fOZNeuXdYurY1Go/nZ+/ztb3/D09OTsrIyFixY0AVVXZjJZCIuLo4jR45YrQYhRPcg\nQUsIgUaj4dZbb0VRFBRF4cSJE8TFxTF9+nQyMzOtXd4lS01NZf78+Tg4OGBra2u1OmxtbUlLSyMx\nMdFqNQghugcJWkIIVFXlx4tEeHl58dprrxEYGMjKlSutWNnlqaurw97evsuPO3HiRLZv397lxxVC\ndH8StIQQF2U2m3F3d7d2GZfFGquKaTQaqxxXCNH9SdASQpynoqKCRx99FFtbW+bPn3/ObWvXrmXw\n4MHY29sTGRnJe++9d87tn3zyCTExMTg6OpKcnExqaioAFouFP/3pT/j7++Pi4sL8+fOpqqpqe1xJ\nSQk333wzrq6ueHh4cOedd1JZWXlJ9X788cdotVq2bdvGpEmT0Ol0QGtL07Zt286578KFC9s61be0\ntKDVatm9ezdXX301zs7OxMbGsnTp0nMeYzabefHFFwkPD8fe3p5hw4axYcOG846r1Wr59NNPAQgL\nCyM/P7/tOQwGA/fffz++vr44Ojoyfvx49u7d23b7pdbyyiuvEBoaipOTE9OnTycvL++SXiMhhHVI\n0BJCALB48eK2zvC+vr4sWrSIV199FWdn57b7LFmyhEceeYR33nmHmpoaVq9ezdKlS3nppZcAOHr0\nKAsWLOCLL76gsrKSMWPG8PnnnwPw/vvvs337dg4ePEhOTg61tbVtp9sMBgNjx45l/PjxnDp1ipyc\nHOLi4pg0aRJms/lna7/zzjtRFIUJEyawdetWLBYL0NrS9L+d6H+8r9frAbjnnnt44IEHKC8v55ln\nnuH222+nrKys7X633nora9as4ZtvvqGmpobHHnuMF198kdtuu+2c4yqKwu23337ecZqbm0lOTsZk\nMrF3716Kior49a9/zcyZM1m+fPnP1lJeXg7A6tWree+999iwYQPFxcX4+vqyatWqn319hBBWpAoh\n+rxnnnlGve2229r2q6ur1S+//FL18PBQP/nkE1VVVdVisaj9+vVTc3Nzz3lsQUGB6ubmpqqqqi5f\nvlyNiIhQTSbTecd46KGH1FtuueWCx3/00UfVZ5555ryfT506Vf3mm29UVVXVjz76SL3zzjt/8veY\nOHGiunXr1nP2t23bds59Fi5ceM7zaDQa9d133z3nPqNHj1ZXrVqlqqqq7ty5U3V3d1crKysv+biq\nqqphYWFqXl6eqqqq+tprr6mjR48+73EffPCBGhMTc8m1vP322+q4ceMuWocQovuRFi0hBHBu3yZ3\nd3fmz5/P448/3tZalZOTQ2FhIREREedMBRESEkJdXR2FhYVMmTIFHx8fIiIiuO+++1i6dCmKogBw\n9913s2HDBoYMGcKjjz56ztQRO3bs4Nlnnz3nebVaLZs3byY9Pf2yfo9LmQbif40bN+6c/YiIiLbT\nmjt37mT06NF4enq2+7hbt25l7ty55/38mmuu4eTJk20tVher5ewp1BtvvJHi4mJiYmJYsGAB69ev\n/+lfTAhhdRK0hBAXNWDAAHJzc4HWIKHVajEYDG3TQJy9WCwWgoKCcHJyYteuXXzyySd4eHiwYMEC\nbrjhBgAGDhxITk4OTz75JFVVVcycOZO3334bAK1WyzvvvHPB533iiSfajn+5NBrNeaceGxoazruf\no6PjOft6vb4teLbnuBeq41L9VC3+/v6kpaXxxhtvoKoqt956Kw899NAV1yeE6DwStIQQFw0CBw8e\nJDY2FmhtWQkKCmrrc3VWfX09OTk5bfuKojB58mRefPFF9uzZw7Jly6iqqkJRFBwdHbn++uv58MMP\nef/99/nnP/8JwIQJE857XqCtI317eXh4nNdZ/Pvvv7+k4HM23IwZM4Y9e/ac03H/f2k0mrZ+YRcy\nceLEC06TsXz5cmJiYvDx8fnZes7SarXMnj2bN998k+XLl7e9hkKI7kmClhDivKkJysvL+eCDD3j5\n5Zd56qmngNYw8dZbb/GXv/yFRYsWUVtby/Hjx5k7dy6vvPIKAIsWLWL06NHk5OTQ2NjIl19+iZ+f\n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\nTmtAq74ivgxoNHq0agM67Y0vI9qbHNNpDej1RuRyGQqlDDs7GXZKGXZ28hv2ywWbnZ0MO4UM+dVS\nip3dNftyKXKF7N9jdlJkclml/kaTC63o6Gi2bdvGyy+/DMDSpUvp0aMH7dqVrw7Kzs7mq6++Ytas\nWUgkElatWoWHhwf33XffTdurLaFVdCaG4+Om0e6Ld/G+r+vV4yczs3hx8xZWjB6Fv1vl4kbpC4vZ\n3/MRwn5diGuHVqYy2eIo0Rp4ZUMsfZt5MLbD3UW5NgoG3l/5LB0CuzO625M1ZKHlckVsDXqgLcEm\nFFuiTof6wzeRBYegfOQZk/VjDoxqLaeen4lRo6Xj9/PMFq9OFEUWHznKnqRkfhwxDA/7qqXpsmZE\nUURrECjVC5TpjJTpjZTpBMr0Rkp1RsquPV6xrTEIaPQCaoOxohSuljqDgEIuxb5CjCnlUpSyilIu\nQSmXIhHhTFYpLkoZXZq6YK+QXa1nJ5OgkElRyCTY3aJUVNSzk0mwk0qQy6TIJFjl1GltcuZ4Knu3\nXGTA6LY0b2MZWQ1EQUSvN6LXlb90OsPV7Zvt6/VGDBX1DXrh6r5Bb0SvFzBcW0dvxGAQkEolyOXl\nwkwulyKXy5Bd2bYrF2iB7aWm9dGKioq6roO+ffty6NChq0Lr5MmT9OrV6+qXuF+/fnz33Xe3FFq1\nQUlMIpGPvkrrD1+7TmQBhPo05IWITkzZso3fHxiFg92dn5QvLfwe74E96pXIAnBSypk/KJip62Pw\ncLCjf/Pqx035a/832MlVjOx669HOukRjPzfufzyM1ctMJ7ZEQUDz9YdI3b1QjHuqxts3NzJ7JaHf\nz+P8Wx9z9MGX6LR8EQqv2p1uFkWRjw8d4VBqKj+NGIZ7PRJZUC5OVHYyVHYyPB3uflRRqBBuGoOA\nWi+gNVS8jAJag0h6kZbfTmbS0tuBsMZO6IwiWqN4dfpTL4jorpRGAb1BRC8I6Izlx3XGin2DiEEQ\n0QsieqOAKIL8ivCSSiq2ywWZXHr9S3btvkyCXHL9Mdk1pUxCeSmVIL1aD2SSK+clSCUgvcW2TCKp\n2C/34ZNKK8qKc5IrxyWSCrH47760Yrv8WPn/6oqglHCTYxIqjv+7LZFIMBoEdm2IJiX+MuOe6YJn\nA8tZqSyRSq5OK5oCURQRjCIGg1AuyAwCBoMRo768NOgFDAaBgtKUSrVXbSuLi4txdv43RYaLiwuF\n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\nmsn/AbPOyGwnPY5DAAAAAElFTkSuQmCC\n", - "text": [ - "" - ] - } - ], - "prompt_number": 5 + "output_type": "display_data" } ], - "metadata": {} + "source": [ + "from scipy.special import jn\n", + "x = np.linspace(0,5)\n", + "f, ax = plt.subplots()\n", + "ax.set_title(\"Bessel functions\")\n", + "\n", + "for n in range(1,10):\n", + " time.sleep(1)\n", + " ax.plot(x, jn(x,n))\n", + " clear_output(wait=True)\n", + " display(f)\n", + "\n", + "# close the figure at the end, so we don't get a duplicate\n", + "# of the last plot\n", + "plt.close()" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Background Jobs.ipynb b/examples/IPython Kernel/Background Jobs.ipynb index 165f1cd..2d8b7f5 100644 --- a/examples/IPython Kernel/Background Jobs.ipynb +++ b/examples/IPython Kernel/Background Jobs.ipynb @@ -1,406 +1,386 @@ { - "metadata": { - "name": "BackgroundJobs" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Simple interactive bacgkround jobs with IPython\n", - "\n", - "We start by loading the `backgroundjobs` library and defining a few trivial functions to illustrate things with." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.lib import backgroundjobs as bg\n", - "\n", - "import sys\n", - "import time\n", - "\n", - "def sleepfunc(interval=2, *a, **kw):\n", - " args = dict(interval=interval,\n", - " args=a,\n", - " kwargs=kw)\n", - " time.sleep(interval)\n", - " return args\n", - "\n", - "def diefunc(interval=2, *a, **kw):\n", - " time.sleep(interval)\n", - " raise Exception(\"Dead job with interval %s\" % interval)\n", - "\n", - "def printfunc(interval=1, reps=5):\n", - " for n in range(reps):\n", - " time.sleep(interval)\n", - " print 'In the background...', n\n", - " sys.stdout.flush()\n", - " print 'All done!'\n", - " sys.stdout.flush()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can create a job manager (called simply `jobs`) and use it to submit new jobs.\n", - "\n", - "Run the cell below, it will show when the jobs start. Wait a few seconds until you see the 'all done' completion message:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "jobs = bg.BackgroundJobManager()\n", - "\n", - "# Start a few jobs, the first one will have ID # 0\n", - "jobs.new(sleepfunc, 4)\n", - "jobs.new(sleepfunc, kw={'reps':2})\n", - "jobs.new('printfunc(1,3)')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Starting job # 0 in a separate thread.\n", - "Starting job # 2 in a separate thread.\n", - "Starting job # 3 in a separate thread.\n" - ] - }, - { - "output_type": "pyout", - "prompt_number": 10, - "text": [ - "" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "In the background... 0\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "In the background... 1\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "In the background... 2\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "All done!\n" - ] - } - ], - "prompt_number": 10 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can check the status of your jobs at any time:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "jobs.status()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Completed jobs:\n", - "0 : \n", - "2 : \n", - "3 : printfunc(1,3)\n", - "\n" - ] - } - ], - "prompt_number": 11 - }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simple interactive bacgkround jobs with IPython\n", + "\n", + "We start by loading the `backgroundjobs` library and defining a few trivial functions to illustrate things with." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from IPython.lib import backgroundjobs as bg\n", + "\n", + "import sys\n", + "import time\n", + "\n", + "def sleepfunc(interval=2, *a, **kw):\n", + " args = dict(interval=interval,\n", + " args=a,\n", + " kwargs=kw)\n", + " time.sleep(interval)\n", + " return args\n", + "\n", + "def diefunc(interval=2, *a, **kw):\n", + " time.sleep(interval)\n", + " raise Exception(\"Dead job with interval %s\" % interval)\n", + "\n", + "def printfunc(interval=1, reps=5):\n", + " for n in range(reps):\n", + " time.sleep(interval)\n", + " print 'In the background...', n\n", + " sys.stdout.flush()\n", + " print 'All done!'\n", + " sys.stdout.flush()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we can create a job manager (called simply `jobs`) and use it to submit new jobs.\n", + "\n", + "Run the cell below, it will show when the jobs start. Wait a few seconds until you see the 'all done' completion message:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For any completed job, you can get its result easily:" + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting job # 0 in a separate thread.\n", + "Starting job # 2 in a separate thread.\n", + "Starting job # 3 in a separate thread.\n" ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "jobs[0].result" - ], - "language": "python", + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 12, - "text": [ - "{'args': (), 'interval': 4, 'kwargs': {}}" - ] - } - ], - "prompt_number": 12 + "output_type": "execute_result" }, { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Errors and tracebacks" + "name": "stdout", + "output_type": "stream", + "text": [ + "In the background... 0\n", + "In the background... 1\n", + "In the background... 2\n", + "All done!\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The jobs manager tries to help you with debugging:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "# This makes a couple of jobs which will die. Let's keep a reference to\n", - "# them for easier traceback reporting later\n", - "diejob1 = jobs.new(diefunc, 1)\n", - "diejob2 = jobs.new(diefunc, 2)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Starting job # 4 in a separate thread.\n", - "Starting job # 5 in a separate thread.\n" - ] - } - ], - "prompt_number": 13 - }, + } + ], + "source": [ + "jobs = bg.BackgroundJobManager()\n", + "\n", + "# Start a few jobs, the first one will have ID # 0\n", + "jobs.new(sleepfunc, 4)\n", + "jobs.new(sleepfunc, kw={'reps':2})\n", + "jobs.new('printfunc(1,3)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can check the status of your jobs at any time:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can get the traceback of any dead job. Run the line\n", - "below again interactively until it prints a traceback (check the status\n", - "of the job):\n" + "name": "stdout", + "output_type": "stream", + "text": [ + "Completed jobs:\n", + "0 : \n", + "2 : \n", + "3 : printfunc(1,3)\n", + "\n" ] - }, + } + ], + "source": [ + "jobs.status()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For any completed job, you can get its result easily:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "print \"Status of diejob1:\", diejob1.status\n", - "diejob1.traceback() # jobs.traceback(4) would also work here, with the job number" - ], - "language": "python", + "data": { + "text/plain": [ + "{'args': (), 'interval': 4, 'kwargs': {}}" + ] + }, + "execution_count": 12, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Status of diejob1: Dead (Exception), call jobs.traceback() for details\n", - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n", - "\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n", - "\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n", - "\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0m\n", - "\u001b[1;32m\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n", - "\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0;32m 17\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mprintfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreps\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\n", - "\u001b[1;31mException\u001b[0m: Dead job with interval 1\n" - ] - } - ], - "prompt_number": 14 - }, + "output_type": "execute_result" + } + ], + "source": [ + "jobs[0].result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Errors and tracebacks" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The jobs manager tries to help you with debugging:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This will print all tracebacks for all dead jobs:" + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting job # 4 in a separate thread.\n", + "Starting job # 5 in a separate thread.\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "jobs.traceback()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Traceback for: >\n", - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n", - "\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n", - "\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n", - "\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0m\n", - "\u001b[1;32m\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n", - "\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0;32m 17\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mprintfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreps\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\n", - "\u001b[1;31mException\u001b[0m: Dead job with interval 1\n", - "\n", - "Traceback for: >\n", - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n", - "\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n", - "\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n", - "\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0m\n", - "\u001b[1;32m\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n", - "\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0;32m 17\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mprintfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreps\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\n", - "\u001b[1;31mException\u001b[0m: Dead job with interval 2\n", - "\n" - ] - } - ], - "prompt_number": 15 - }, + } + ], + "source": [ + "# This makes a couple of jobs which will die. Let's keep a reference to\n", + "# them for easier traceback reporting later\n", + "diejob1 = jobs.new(diefunc, 1)\n", + "diejob2 = jobs.new(diefunc, 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can get the traceback of any dead job. Run the line\n", + "below again interactively until it prints a traceback (check the status\n", + "of the job):\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The job manager can be flushed of all completed jobs at any time:" + "name": "stdout", + "output_type": "stream", + "text": [ + "Status of diejob1: Dead (Exception), call jobs.traceback() for details\n", + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n", + "\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n", + "\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n", + "\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "\u001b[1;32m\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n", + "\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0;32m 17\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mprintfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreps\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\n", + "\u001b[1;31mException\u001b[0m: Dead job with interval 1\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "jobs.flush()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Flushing 3 Completed jobs.\n", - "Flushing 2 Dead jobs.\n" - ] - } - ], - "prompt_number": 16 - }, + } + ], + "source": [ + "print \"Status of diejob1:\", diejob1.status\n", + "diejob1.traceback() # jobs.traceback(4) would also work here, with the job number" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This will print all tracebacks for all dead jobs:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "After that, the status is simply empty:" + "name": "stdout", + "output_type": "stream", + "text": [ + "Traceback for: >\n", + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n", + "\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n", + "\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n", + "\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "\u001b[1;32m\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n", + "\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0;32m 17\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mprintfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreps\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\n", + "\u001b[1;31mException\u001b[0m: Dead job with interval 1\n", + "\n", + "Traceback for: >\n", + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n", + "\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n", + "\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n", + "\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "\u001b[1;32m\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n", + "\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0;32m 17\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mprintfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreps\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\n", + "\u001b[1;31mException\u001b[0m: Dead job with interval 2\n", + "\n" ] - }, - { - "cell_type": "code", - "collapsed": true, - "input": [ - "jobs.status()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 17 - }, + } + ], + "source": [ + "jobs.traceback()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The job manager can be flushed of all completed jobs at any time:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Jobs have a `.join` method that lets you wait on their thread for completion:" + "name": "stdout", + "output_type": "stream", + "text": [ + "Flushing 3 Completed jobs.\n", + "Flushing 2 Dead jobs.\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "j = jobs.new(sleepfunc, 2)\n", - "j.join?" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Starting job # 0 in a separate thread.\n" - ] - } - ], - "prompt_number": 18 - }, + } + ], + "source": [ + "jobs.flush()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After that, the status is simply empty:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "jobs.status()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jobs have a `.join` method that lets you wait on their thread for completion:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exercise\n", - "\n", - "1. Start a new job that calls `sleepfunc` with a 5-second wait\n", - "2. Print a short message that indicates you are waiting (note: you'll need to flush stdout to see that print output appear).\n", - "3. Wait on the job and then print its result." + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting job # 0 in a separate thread.\n" ] } ], - "metadata": {} + "source": [ + "j = jobs.new(sleepfunc, 2)\n", + "j.join?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise\n", + "\n", + "1. Start a new job that calls `sleepfunc` with a 5-second wait\n", + "2. Print a short message that indicates you are waiting (note: you'll need to flush stdout to see that print output appear).\n", + "3. Wait on the job and then print its result." + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Beyond Plain Python.ipynb b/examples/IPython Kernel/Beyond Plain Python.ipynb index de7126c..da3e5e0 100644 --- a/examples/IPython Kernel/Beyond Plain Python.ipynb +++ b/examples/IPython Kernel/Beyond Plain Python.ipynb @@ -1,1613 +1,1807 @@ { - "metadata": { - "name": "", - "signature": "sha256:31071a05d0ecd75ed72fe3f0de0ad447a6f85cffe382c26efa5e68db1fee54ee" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "IPython: beyond plain Python" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When executing code in IPython, all valid Python syntax works as-is, but IPython provides a number of features designed to make the interactive experience more fluid and efficient." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "First things first: running code, getting help" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the notebook, to run a cell of code, hit `Shift-Enter`. This executes the cell and puts the cursor in the next cell below, or makes a new one if you are at the end. Alternately, you can use:\n", - " \n", - "- `Alt-Enter` to force the creation of a new cell unconditionally (useful when inserting new content in the middle of an existing notebook).\n", - "- `Control-Enter` executes the cell and keeps the cursor in the same cell, useful for quick experimentation of snippets that you don't need to keep permanently." + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# IPython: beyond plain Python" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When executing code in IPython, all valid Python syntax works as-is, but IPython provides a number of features designed to make the interactive experience more fluid and efficient." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## First things first: running code, getting help" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the notebook, to run a cell of code, hit `Shift-Enter`. This executes the cell and puts the cursor in the next cell below, or makes a new one if you are at the end. Alternately, you can use:\n", + " \n", + "- `Alt-Enter` to force the creation of a new cell unconditionally (useful when inserting new content in the middle of an existing notebook).\n", + "- `Control-Enter` executes the cell and keeps the cursor in the same cell, useful for quick experimentation of snippets that you don't need to keep permanently." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hi\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print \"Hi\"" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Hi\n" - ] - } - ], - "prompt_number": 1 - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } + } + ], + "source": [ + "print \"Hi\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Getting help:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Typing `object_name?` will print all sorts of details about any object, including docstrings, function definition lines (for call arguments) and constructor details for classes." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import collections\n", + "collections.namedtuple?" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "collections.Counter??" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "*int*?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "An IPython quick reference card:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%quickref" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Tab completion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tab completion, especially for attributes, is a convenient way to explore the structure of any object you\u2019re dealing with. Simply type `object_name.` to view the object\u2019s attributes. Besides Python objects and keywords, tab completion also works on file and directory names." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "collections." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## The interactive workflow: input, output, history" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "12" + ] }, - "source": [ - "Getting help:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "?" - ], - "language": "python", + "execution_count": 7, "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } + "output_type": "execute_result" + } + ], + "source": [ + "2+10" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "22" + ] }, - "source": [ - "Typing `object_name?` will print all sorts of details about any object, including docstrings, function definition lines (for call arguments) and constructor details for classes." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import collections\n", - "collections.namedtuple?" - ], - "language": "python", + "execution_count": 8, "metadata": {}, - "outputs": [], - "prompt_number": 3 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "collections.Counter??" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 4 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "*int*?" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 5 - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } + "output_type": "execute_result" + } + ], + "source": [ + "_+10" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "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", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "10+20;" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "22" + ] }, - "source": [ - "An IPython quick reference card:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%quickref" - ], - "language": "python", + "execution_count": 10, "metadata": {}, - "outputs": [], - "prompt_number": 6 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": { - "slideshow": { - "slide_type": "slide" - } + "output_type": "execute_result" + } + ], + "source": [ + "_" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The output is stored in `_N` and `Out[N]` variables:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] }, - "source": [ - "Tab completion" - ] - }, - { - "cell_type": "markdown", + "execution_count": 11, "metadata": {}, - "source": [ - "Tab completion, especially for attributes, is a convenient way to explore the structure of any object you\u2019re dealing with. Simply type `object_name.` to view the object\u2019s attributes. Besides Python objects and keywords, tab completion also works on file and directory names." + "output_type": "execute_result" + } + ], + "source": [ + "_10 == Out[10]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "And the last three have shorthands for convenience:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "last output: True\n", + "next one : 22\n", + "and next : 22\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "collections." - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 8 - }, + } + ], + "source": [ + "print 'last output:', _\n", + "print 'next one :', __\n", + "print 'and next :', ___" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, - "metadata": { - "slideshow": { - "slide_type": "slide" - } + "data": { + "text/plain": [ + "u'_10 == Out[10]'" + ] }, - "source": [ - "The interactive workflow: input, output, history" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "2+10" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 7, - "text": [ - "12" - ] - } - ], - "prompt_number": 7 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "_+10" - ], - "language": "python", + "execution_count": 13, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 8, - "text": [ - "22" - ] - } - ], - "prompt_number": 8 - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } + "output_type": "execute_result" + } + ], + "source": [ + "In[11]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "u'In[11]'" + ] }, - "source": [ - "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": {}, - "outputs": [], - "prompt_number": 9 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "_" - ], - "language": "python", + "execution_count": 14, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 10, - "text": [ - "22" - ] - } - ], - "prompt_number": 10 - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } + "output_type": "execute_result" + } + ], + "source": [ + "_i" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "u'In[11]'" + ] }, - "source": [ - "The output is stored in `_N` and `Out[N]` variables:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "_10 == Out[10]" - ], - "language": "python", + "execution_count": 15, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 11, - "text": [ - "True" - ] - } - ], - "prompt_number": 11 - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "And the last three have shorthands for convenience:" + "output_type": "execute_result" + } + ], + "source": [ + "_ii" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "last input: _ii\n", + "next one : _i\n", + "and next : In[11]\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print 'last output:', _\n", - "print 'next one :', __\n", - "print 'and next :', ___" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "last output: True\n", - "next one : 22\n", - "and next : 22\n" - ] - } - ], - "prompt_number": 12 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "In[11]" - ], - "language": "python", - "metadata": { - "slideshow": { - "slide_type": "-" - } - }, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 13, - "text": [ - "u'_10 == Out[10]'" - ] - } - ], - "prompt_number": 13 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "_i" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 14, - "text": [ - "u'In[11]'" - ] - } - ], - "prompt_number": 14 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "_ii" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 15, - "text": [ - "u'In[11]'" - ] - } - ], - "prompt_number": 15 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print 'last input:', _i\n", - "print 'next one :', _ii\n", - "print 'and next :', _iii" - ], - "language": "python", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "last input: _ii\n", - "next one : _i\n", - "and next : In[11]\n" - ] - } - ], - "prompt_number": 16 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%history -n 1-5" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - " 1: print \"Hi\"\n", - " 2: ?\n", - " 3:\n", - "import collections\n", - "collections.namedtuple?\n", - " 4: collections.Counter??\n", - " 5: *int*?\n" - ] - } - ], - "prompt_number": 17 - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "**Exercise**\n", - "\n", - "Write the last 10 lines of history to a file named `log.py`." + } + ], + "source": [ + "print 'last input:', _i\n", + "print 'next one :', _ii\n", + "print 'and next :', _iii" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 1: print \"Hi\"\n", + " 2: ?\n", + " 3:\n", + "import collections\n", + "collections.namedtuple?\n", + " 4: collections.Counter??\n", + " 5: *int*?\n" ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "Accessing the underlying operating system" + } + ], + "source": [ + "%history -n 1-5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "**Exercise**\n", + "\n", + "Write the last 10 lines of history to a file named `log.py`." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Accessing the underlying operating system" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/fperez/ipython/tutorial/notebooks\r\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "!pwd" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "/home/fperez/ipython/tutorial/notebooks\r\n" - ] - } - ], - "prompt_number": 18 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "files = !ls\n", - "print \"My current directory's files:\"\n", - "print files" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "My current directory's files:\n", - "['BackgroundJobs.ipynb', 'Custom Display Logic.ipynb', 'Customizing IPython - Condensed.ipynb', 'Customizing IPython - Config.ipynb', 'Customizing IPython - Extensions.ipynb', 'Customizing IPython - Magics.ipynb', 'data', 'figs', 'flare.json', 'Index.ipynb', 'Interactive Widgets.ipynb', 'IPython - beyond plain Python.ipynb', 'kernel-embedding', 'Markdown Cells.ipynb', 'myscript.py', 'nbconvert_arch.png', 'NbConvert from command line.ipynb', 'NbConvert Python library.ipynb', 'Notebook and javascript extension.ipynb', 'Notebook Basics.ipynb', 'Overview of IPython.parallel.ipynb', 'parallel', 'Rich Display System.ipynb', 'Running a Secure Public Notebook.ipynb', 'Running Code.ipynb', 'Sample.ipynb', 'soln', 'Terminal usage.ipynb', 'text_analysis.py', 'Typesetting Math Using MathJax.ipynb']\n" - ] - } - ], - "prompt_number": 19 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "!echo $files" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "[BackgroundJobs.ipynb, Custom Display Logic.ipynb, Customizing IPython - Condensed.ipynb, Customizing IPython - Config.ipynb, Customizing IPython - Extensions.ipynb, Customizing IPython - Magics.ipynb, data, figs, flare.json, Index.ipynb, Interactive Widgets.ipynb, IPython - beyond plain Python.ipynb, kernel-embedding, Markdown Cells.ipynb, myscript.py, nbconvert_arch.png, NbConvert from command line.ipynb, NbConvert Python library.ipynb, Notebook and javascript extension.ipynb, Notebook Basics.ipynb, Overview of IPython.parallel.ipynb, parallel, Rich Display System.ipynb, Running a Secure Public Notebook.ipynb, Running Code.ipynb, Sample.ipynb, soln, Terminal usage.ipynb, text_analysis.py, Typesetting Math Using MathJax.ipynb]\r\n" - ] - } - ], - "prompt_number": 20 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "!echo {files[0].upper()}" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "BACKGROUNDJOBS.IPYNB\r\n" - ] - } - ], - "prompt_number": 21 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that all this is available even in multiline blocks:" + } + ], + "source": [ + "!pwd" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "My current directory's files:\n", + "['BackgroundJobs.ipynb', 'Custom Display Logic.ipynb', 'Customizing IPython - Condensed.ipynb', 'Customizing IPython - Config.ipynb', 'Customizing IPython - Extensions.ipynb', 'Customizing IPython - Magics.ipynb', 'data', 'figs', 'flare.json', 'Index.ipynb', 'Interactive Widgets.ipynb', 'IPython - beyond plain Python.ipynb', 'kernel-embedding', 'Markdown Cells.ipynb', 'myscript.py', 'nbconvert_arch.png', 'NbConvert from command line.ipynb', 'NbConvert Python library.ipynb', 'Notebook and javascript extension.ipynb', 'Notebook Basics.ipynb', 'Overview of IPython.parallel.ipynb', 'parallel', 'Rich Display System.ipynb', 'Running a Secure Public Notebook.ipynb', 'Running Code.ipynb', 'Sample.ipynb', 'soln', 'Terminal usage.ipynb', 'text_analysis.py', 'Typesetting Math Using MathJax.ipynb']\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import os\n", - "for i,f in enumerate(files):\n", - " if f.endswith('ipynb'):\n", - " !echo {\"%02d\" % i} - \"{os.path.splitext(f)[0]}\"\n", - " else:\n", - " print '--'" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "00 - BackgroundJobs\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "01 - Custom Display Logic\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "02 - Customizing IPython - Condensed\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "03 - Customizing IPython - Config\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "04 - Customizing IPython - Extensions\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "05 - Customizing IPython - Magics\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "--\n", - "--\n", - "--\n", - "09 - Index\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "10 - Interactive Widgets\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "11 - IPython - beyond plain Python\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "--\n", - "13 - Markdown Cells\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "--\n", - "--\n", - "16 - NbConvert from command line\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "17 - NbConvert Python library\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "18 - Notebook and javascript extension\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "19 - Notebook Basics\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "20 - Overview of IPython.parallel\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "--\n", - "22 - Rich Display System\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "23 - Running a Secure Public Notebook\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "24 - Running Code\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "25 - Sample\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "--\n", - "27 - Terminal usage\r\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "--\n", - "29 - Typesetting Math Using MathJax\r\n" - ] - } - ], - "prompt_number": 27 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Beyond Python: magic functions" + } + ], + "source": [ + "files = !ls\n", + "print \"My current directory's files:\"\n", + "print files" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[BackgroundJobs.ipynb, Custom Display Logic.ipynb, Customizing IPython - Condensed.ipynb, Customizing IPython - Config.ipynb, Customizing IPython - Extensions.ipynb, Customizing IPython - Magics.ipynb, data, figs, flare.json, Index.ipynb, Interactive Widgets.ipynb, IPython - beyond plain Python.ipynb, kernel-embedding, Markdown Cells.ipynb, myscript.py, nbconvert_arch.png, NbConvert from command line.ipynb, NbConvert Python library.ipynb, Notebook and javascript extension.ipynb, Notebook Basics.ipynb, Overview of IPython.parallel.ipynb, parallel, Rich Display System.ipynb, Running a Secure Public Notebook.ipynb, Running Code.ipynb, Sample.ipynb, soln, Terminal usage.ipynb, text_analysis.py, Typesetting Math Using MathJax.ipynb]\r\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "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." + } + ], + "source": [ + "!echo $files" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BACKGROUNDJOBS.IPYNB\r\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%magic" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 28 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Line vs cell magics:" + } + ], + "source": [ + "!echo {files[0].upper()}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that all this is available even in multiline blocks:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "00 - BackgroundJobs\r\n", + "01 - Custom Display Logic\r\n", + "02 - Customizing IPython - Condensed\r\n", + "03 - Customizing IPython - Config\r\n", + "04 - Customizing IPython - Extensions\r\n", + "05 - Customizing IPython - Magics\r\n", + "--\n", + "--\n", + "--\n", + "09 - Index\r\n", + "10 - Interactive Widgets\r\n", + "11 - IPython - beyond plain Python\r\n", + "--\n", + "13 - Markdown Cells\r\n", + "--\n", + "--\n", + "16 - NbConvert from command line\r\n", + "17 - NbConvert Python library\r\n", + "18 - Notebook and javascript extension\r\n", + "19 - Notebook Basics\r\n", + "20 - Overview of IPython.parallel\r\n", + "--\n", + "22 - Rich Display System\r\n", + "23 - Running a Secure Public Notebook\r\n", + "24 - Running Code\r\n", + "25 - Sample\r\n", + "--\n", + "27 - Terminal usage\r\n", + "--\n", + "29 - Typesetting Math Using MathJax\r\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%timeit range(10)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "10000000 loops, best of 3: 190 ns per loop\n" - ] - } - ], - "prompt_number": 29 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%timeit\n", - "range(10)\n", - "range(100)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "1000000 loops, best of 3: 888 ns per loop\n" - ] - } - ], - "prompt_number": 30 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Line magics can be used even inside code blocks:" + } + ], + "source": [ + "import os\n", + "for i,f in enumerate(files):\n", + " if f.endswith('ipynb'):\n", + " !echo {\"%02d\" % i} - \"{os.path.splitext(f)[0]}\"\n", + " else:\n", + " print '--'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Beyond Python: magic functions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%magic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Line vs cell magics:" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000000 loops, best of 3: 190 ns per loop\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "for i in range(5):\n", - " size = i*100\n", - " print 'size:',size, \n", - " %timeit range(size)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "size: 010000000 loops, best of 3: 129 ns per loop" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n", - " size: 1001000000 loops, best of 3: 649 ns per loop" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n", - " size: 2001000000 loops, best of 3: 1.09 \u00b5s per loop" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n", - " size: 3001000000 loops, best of 3: 1.74 \u00b5s per loop" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n", - " size: 400100000 loops, best of 3: 2.72 \u00b5s per loop" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n", - "\n" - ] - } - ], - "prompt_number": 31 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Magics can do anything they want with their input, so it doesn't have to be valid Python:" + } + ], + "source": [ + "%timeit range(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1000000 loops, best of 3: 888 ns per loop\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%bash\n", - "echo \"My shell is:\" $SHELL\n", - "echo \"My memory status is:\"\n", - "free" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "My shell is: /bin/bash\n", - "My memory status is:\n", - " total used free shared buffers cached\n", - "Mem: 7870888 6389328 1481560 0 662860 2505172\n", - "-/+ buffers/cache: 3221296 4649592\n", - "Swap: 3905532 4852 3900680\n" - ] - } - ], - "prompt_number": 32 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another interesting cell magic: create any file you want locally from the notebook:" + } + ], + "source": [ + "%%timeit\n", + "range(10)\n", + "range(100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Line magics can be used even inside code blocks:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "size: 010000000 loops, best of 3: 129 ns per loop\n", + " size: 1001000000 loops, best of 3: 649 ns per loop\n", + " size: 2001000000 loops, best of 3: 1.09 \u00b5s per loop\n", + " size: 3001000000 loops, best of 3: 1.74 \u00b5s per loop\n", + " size: 400100000 loops, best of 3: 2.72 \u00b5s per loop\n", + "\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%writefile test.txt\n", - "This is a test file!\n", - "It can contain anything I want...\n", - "\n", + } + ], + "source": [ + "for i in range(5):\n", + " size = i*100\n", + " print 'size:',size, \n", + " %timeit range(size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Magics can do anything they want with their input, so it doesn't have to be valid Python:" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "My shell is: /bin/bash\n", + "My memory status is:\n", + " total used free shared buffers cached\n", + "Mem: 7870888 6389328 1481560 0 662860 2505172\n", + "-/+ buffers/cache: 3221296 4649592\n", + "Swap: 3905532 4852 3900680\n" + ] + } + ], + "source": [ + "%%bash\n", + "echo \"My shell is:\" $SHELL\n", + "echo \"My memory status is:\"\n", + "free" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another interesting cell magic: create any file you want locally from the notebook:" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing test.txt\n" + ] + } + ], + "source": [ + "%%writefile test.txt\n", + "This is a test file!\n", + "It can contain anything I want...\n", + "\n", + "And more..." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This is a test file!\r\n", + "It can contain anything I want...\r\n", + "\r\n", "And more..." - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Writing test.txt\n" - ] - } - ], - "prompt_number": 33 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "!cat test.txt" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "This is a test file!\r\n", - "It can contain anything I want...\r\n", - "\r\n", - "And more..." - ] - } - ], - "prompt_number": 34 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's see what other magics are currently defined in the system:" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%lsmagic" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "json": [ - "{\"cell\": {\"prun\": \"ExecutionMagics\", \"file\": \"Other\", \"!\": \"OSMagics\", \"capture\": \"ExecutionMagics\", \"timeit\": \"ExecutionMagics\", \"script\": \"ScriptMagics\", \"pypy\": \"Other\", \"system\": \"OSMagics\", \"perl\": \"Other\", \"HTML\": \"Other\", \"bash\": \"Other\", \"python\": \"Other\", \"SVG\": \"Other\", \"javascript\": \"DisplayMagics\", \"writefile\": \"OSMagics\", \"ruby\": \"Other\", \"python3\": \"Other\", \"python2\": \"Other\", \"latex\": \"DisplayMagics\", \"sx\": \"OSMagics\", \"svg\": \"DisplayMagics\", \"html\": \"DisplayMagics\", \"sh\": \"Other\", \"time\": \"ExecutionMagics\", \"debug\": \"ExecutionMagics\"}, \"line\": {\"psource\": \"NamespaceMagics\", \"logstart\": \"LoggingMagics\", \"popd\": \"OSMagics\", \"loadpy\": \"CodeMagics\", \"install_ext\": \"ExtensionMagics\", \"colors\": \"BasicMagics\", \"who_ls\": \"NamespaceMagics\", \"lf\": \"Other\", \"install_profiles\": \"DeprecatedMagics\", \"clk\": \"Other\", \"ll\": \"Other\", \"pprint\": \"BasicMagics\", \"lk\": \"Other\", \"ls\": \"Other\", \"save\": \"CodeMagics\", \"tb\": \"ExecutionMagics\", \"lx\": \"Other\", \"dl\": \"Other\", \"pylab\": \"PylabMagics\", \"dd\": \"Other\", \"quickref\": \"BasicMagics\", \"dx\": \"Other\", \"d\": \"Other\", \"magic\": \"BasicMagics\", \"dhist\": \"OSMagics\", \"edit\": \"KernelMagics\", \"logstop\": \"LoggingMagics\", \"gui\": \"BasicMagics\", \"alias_magic\": \"BasicMagics\", \"debug\": \"ExecutionMagics\", \"page\": \"BasicMagics\", \"logstate\": \"LoggingMagics\", \"ed\": \"Other\", \"pushd\": \"OSMagics\", \"timeit\": \"ExecutionMagics\", \"rehashx\": \"OSMagics\", \"hist\": \"Other\", \"qtconsole\": \"KernelMagics\", \"rm\": \"Other\", \"dirs\": \"OSMagics\", \"run\": \"ExecutionMagics\", \"reset_selective\": \"NamespaceMagics\", \"rep\": \"Other\", \"pinfo2\": \"NamespaceMagics\", \"matplotlib\": \"PylabMagics\", \"automagic\": \"AutoMagics\", \"doctest_mode\": \"KernelMagics\", \"logoff\": \"LoggingMagics\", \"reload_ext\": \"ExtensionMagics\", \"pdb\": \"ExecutionMagics\", \"load\": \"CodeMagics\", \"lsmagic\": \"BasicMagics\", \"cl\": \"Other\", \"autosave\": \"KernelMagics\", \"cd\": \"OSMagics\", \"pastebin\": \"CodeMagics\", \"prun\": \"ExecutionMagics\", \"cp\": \"Other\", \"autocall\": \"AutoMagics\", \"bookmark\": \"OSMagics\", \"connect_info\": \"KernelMagics\", \"mkdir\": \"Other\", \"system\": \"OSMagics\", \"whos\": \"NamespaceMagics\", \"rmdir\": \"Other\", \"unload_ext\": \"ExtensionMagics\", \"store\": \"StoreMagics\", \"more\": \"KernelMagics\", \"pdef\": \"NamespaceMagics\", \"precision\": \"BasicMagics\", \"pinfo\": \"NamespaceMagics\", \"pwd\": \"OSMagics\", \"psearch\": \"NamespaceMagics\", \"reset\": \"NamespaceMagics\", \"recall\": \"HistoryMagics\", \"xdel\": \"NamespaceMagics\", \"xmode\": \"BasicMagics\", \"cat\": \"Other\", \"mv\": \"Other\", \"rerun\": \"HistoryMagics\", \"logon\": \"LoggingMagics\", \"history\": \"HistoryMagics\", \"pycat\": \"OSMagics\", \"unalias\": \"OSMagics\", \"install_default_config\": \"DeprecatedMagics\", \"env\": \"OSMagics\", \"load_ext\": \"ExtensionMagics\", \"config\": \"ConfigMagics\", \"killbgscripts\": \"ScriptMagics\", \"profile\": \"BasicMagics\", \"pfile\": \"NamespaceMagics\", \"less\": \"KernelMagics\", \"who\": \"NamespaceMagics\", \"notebook\": \"BasicMagics\", \"man\": \"KernelMagics\", \"sx\": \"OSMagics\", \"macro\": \"ExecutionMagics\", \"clear\": \"KernelMagics\", \"alias\": \"OSMagics\", \"time\": \"ExecutionMagics\", \"sc\": \"OSMagics\", \"ldir\": \"Other\", \"pdoc\": \"NamespaceMagics\"}}" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 35, - "text": [ - "Available line magics:\n", - "%alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %cl %clear %clk %colors %config %connect_info %cp %d %dd %debug %dhist %dirs %dl %doctest_mode %dx %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": 35 - }, - { - "cell_type": "heading", - "level": 2, + } + ], + "source": [ + "!cat test.txt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's see what other magics are currently defined in the system:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "application/json": { + "cell": { + "!": "OSMagics", + "HTML": "Other", + "SVG": "Other", + "bash": "Other", + "capture": "ExecutionMagics", + "debug": "ExecutionMagics", + "file": "Other", + "html": "DisplayMagics", + "javascript": "DisplayMagics", + "latex": "DisplayMagics", + "perl": "Other", + "prun": "ExecutionMagics", + "pypy": "Other", + "python": "Other", + "python2": "Other", + "python3": "Other", + "ruby": "Other", + "script": "ScriptMagics", + "sh": "Other", + "svg": "DisplayMagics", + "sx": "OSMagics", + "system": "OSMagics", + "time": "ExecutionMagics", + "timeit": "ExecutionMagics", + "writefile": "OSMagics" + }, + "line": { + "alias": "OSMagics", + "alias_magic": "BasicMagics", + "autocall": "AutoMagics", + "automagic": "AutoMagics", + "autosave": "KernelMagics", + "bookmark": "OSMagics", + "cat": "Other", + "cd": "OSMagics", + "cl": "Other", + "clear": "KernelMagics", + "clk": "Other", + "colors": "BasicMagics", + "config": "ConfigMagics", + "connect_info": "KernelMagics", + "cp": "Other", + "d": "Other", + "dd": "Other", + "debug": "ExecutionMagics", + "dhist": "OSMagics", + "dirs": "OSMagics", + "dl": "Other", + "doctest_mode": "KernelMagics", + "dx": "Other", + "ed": "Other", + "edit": "KernelMagics", + "env": "OSMagics", + "gui": "BasicMagics", + "hist": "Other", + "history": "HistoryMagics", + "install_default_config": "DeprecatedMagics", + "install_ext": "ExtensionMagics", + "install_profiles": "DeprecatedMagics", + "killbgscripts": "ScriptMagics", + "ldir": "Other", + "less": "KernelMagics", + "lf": "Other", + "lk": "Other", + "ll": "Other", + "load": "CodeMagics", + "load_ext": "ExtensionMagics", + "loadpy": "CodeMagics", + "logoff": "LoggingMagics", + "logon": "LoggingMagics", + "logstart": "LoggingMagics", + "logstate": "LoggingMagics", + "logstop": "LoggingMagics", + "ls": "Other", + "lsmagic": "BasicMagics", + "lx": "Other", + "macro": "ExecutionMagics", + "magic": "BasicMagics", + "man": "KernelMagics", + "matplotlib": "PylabMagics", + "mkdir": "Other", + "more": "KernelMagics", + "mv": "Other", + "notebook": "BasicMagics", + "page": "BasicMagics", + "pastebin": "CodeMagics", + "pdb": "ExecutionMagics", + "pdef": "NamespaceMagics", + "pdoc": "NamespaceMagics", + "pfile": "NamespaceMagics", + "pinfo": "NamespaceMagics", + "pinfo2": "NamespaceMagics", + "popd": "OSMagics", + "pprint": "BasicMagics", + "precision": "BasicMagics", + "profile": "BasicMagics", + "prun": "ExecutionMagics", + "psearch": "NamespaceMagics", + "psource": "NamespaceMagics", + "pushd": "OSMagics", + "pwd": "OSMagics", + "pycat": "OSMagics", + "pylab": "PylabMagics", + "qtconsole": "KernelMagics", + "quickref": "BasicMagics", + "recall": "HistoryMagics", + "rehashx": "OSMagics", + "reload_ext": "ExtensionMagics", + "rep": "Other", + "rerun": "HistoryMagics", + "reset": "NamespaceMagics", + "reset_selective": "NamespaceMagics", + "rm": "Other", + "rmdir": "Other", + "run": "ExecutionMagics", + "save": "CodeMagics", + "sc": "OSMagics", + "store": "StoreMagics", + "sx": "OSMagics", + "system": "OSMagics", + "tb": "ExecutionMagics", + "time": "ExecutionMagics", + "timeit": "ExecutionMagics", + "unalias": "OSMagics", + "unload_ext": "ExtensionMagics", + "who": "NamespaceMagics", + "who_ls": "NamespaceMagics", + "whos": "NamespaceMagics", + "xdel": "NamespaceMagics", + "xmode": "BasicMagics" + } + }, + "text/plain": [ + "Available line magics:\n", + "%alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %cl %clear %clk %colors %config %connect_info %cp %d %dd %debug %dhist %dirs %dl %doctest_mode %dx %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." + ] + }, + "execution_count": 35, "metadata": {}, - "source": [ - "Running normal Python code: execution and errors" + "output_type": "execute_result" + } + ], + "source": [ + "%lsmagic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running normal Python code: execution and errors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Not only can you input normal Python code, you can even paste straight from a Python or IPython shell session:" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "1\n", + "2\n", + "3\n", + "5\n", + "8\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Not only can you input normal Python code, you can even paste straight from a Python or IPython shell session:" + } + ], + "source": [ + ">>> # 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" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 1 2 3 4 5 6 7 8 9\n" ] - }, - { - "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": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "1\n", - "1\n", - "2\n", - "3\n", - "5\n", - "8\n" - ] - } - ], - "prompt_number": 36 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "In [1]: for i in range(10):\n", - " ...: print i,\n", - " ...: " - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "0 1 2 3 4 5 6 7 8 9\n" - ] - } - ], - "prompt_number": 37 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And when your code produces errors, you can control how they are displayed with the `%xmode` magic:" + } + ], + "source": [ + "In [1]: for i in range(10):\n", + " ...: print i,\n", + " ...: " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And when your code produces errors, you can control how they are displayed with the `%xmode` magic:" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing mod.py\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%writefile mod.py\n", - "\n", - "def f(x):\n", - " return 1.0/(x-1)\n", - "\n", - "def g(y):\n", - " return f(y+1)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Writing mod.py\n" - ] - } - ], - "prompt_number": 38 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's call the function `g` with an argument that would produce an error:" + } + ], + "source": [ + "%%writefile mod.py\n", + "\n", + "def f(x):\n", + " return 1.0/(x-1)\n", + "\n", + "def g(y):\n", + " return f(y+1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's call the function `g` with an argument that would produce an error:" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mmod\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import mod\n", - "mod.g(0)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "ename": "ZeroDivisionError", - "evalue": "float division 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\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mmod\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" - ] - } - ], - "prompt_number": 39 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%xmode plain\n", - "mod.g(0)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Exception reporting mode: Plain\n" - ] - }, - { - "ename": "ZeroDivisionError", - "evalue": "float division by zero", - "output_type": "pyerr", - "traceback": [ - "Traceback \u001b[1;36m(most recent call last)\u001b[0m:\n", - " File \u001b[0;32m\"\"\u001b[0m, line \u001b[0;32m2\u001b[0m, in \u001b[0;35m\u001b[0m\n mod.g(0)\n", - " File \u001b[0;32m\"mod.py\"\u001b[0m, line \u001b[0;32m6\u001b[0m, in \u001b[0;35mg\u001b[0m\n return f(y+1)\n", - "\u001b[1;36m File \u001b[1;32m\"mod.py\"\u001b[1;36m, line \u001b[1;32m3\u001b[1;36m, in \u001b[1;35mf\u001b[1;36m\u001b[0m\n\u001b[1;33m return 1.0/(x-1)\u001b[0m\n", - "\u001b[1;31mZeroDivisionError\u001b[0m\u001b[1;31m:\u001b[0m float division by zero\n" - ] - } - ], - "prompt_number": 40 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%xmode verbose\n", - "mod.g(0)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Exception reporting mode: Verbose\n" - ] - }, - { - "ename": "ZeroDivisionError", - "evalue": "float division 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\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mu'xmode verbose'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[1;36mglobal\u001b[0m \u001b[0;36mmod.g\u001b[0m \u001b[1;34m= \u001b[0m\n", - "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y=0)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[1;36mglobal\u001b[0m \u001b[0;36mf\u001b[0m \u001b[1;34m= \u001b[0m\u001b[1;34m\n \u001b[0m\u001b[0;36my\u001b[0m \u001b[1;34m= 0\u001b[0m\n", - "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x=1)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[0;36mx\u001b[0m \u001b[1;34m= 1\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" - ] - } - ], - "prompt_number": 41 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The default `%xmode` is \"context\", which shows additional context but not all local variables. Let's restore that one for the rest of our session." + } + ], + "source": [ + "import mod\n", + "mod.g(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exception reporting mode: Plain\n" ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "%xmode context" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Exception reporting mode: Context\n" - ] - } - ], - "prompt_number": 42 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Running code in other languages with special `%%` magics" + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "Traceback \u001b[1;36m(most recent call last)\u001b[0m:\n", + " File \u001b[0;32m\"\"\u001b[0m, line \u001b[0;32m2\u001b[0m, in \u001b[0;35m\u001b[0m\n mod.g(0)\n", + " File \u001b[0;32m\"mod.py\"\u001b[0m, line \u001b[0;32m6\u001b[0m, in \u001b[0;35mg\u001b[0m\n return f(y+1)\n", + "\u001b[1;36m File \u001b[1;32m\"mod.py\"\u001b[1;36m, line \u001b[1;32m3\u001b[1;36m, in \u001b[1;35mf\u001b[1;36m\u001b[0m\n\u001b[1;33m return 1.0/(x-1)\u001b[0m\n", + "\u001b[1;31mZeroDivisionError\u001b[0m\u001b[1;31m:\u001b[0m float division by zero\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%perl\n", - "@months = (\"July\", \"August\", \"September\");\n", - "print $months[0];" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "July" - ] - } - ], - "prompt_number": 43 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%ruby\n", - "name = \"world\"\n", - "puts \"Hello #{name.capitalize}!\"" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Hello World!\n" - ] - } - ], - "prompt_number": 44 - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Exercise" + } + ], + "source": [ + "%xmode plain\n", + "mod.g(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exception reporting mode: Verbose\n" ] }, { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Write a cell that executes in Bash and prints your current working directory as well as the date.\n", - "\n", - "Apologies to Windows users who may not have Bash available, not sure how to obtain the equivalent result with `cmd.exe` or Powershell." + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mu'xmode verbose'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[1;36mglobal\u001b[0m \u001b[0;36mmod.g\u001b[0m \u001b[1;34m= \u001b[0m\n", + "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y=0)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[1;36mglobal\u001b[0m \u001b[0;36mf\u001b[0m \u001b[1;34m= \u001b[0m\u001b[1;34m\n \u001b[0m\u001b[0;36my\u001b[0m \u001b[1;34m= 0\u001b[0m\n", + "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x=1)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[0;36mx\u001b[0m \u001b[1;34m= 1\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%load soln/bash-script" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Raw Input in the notebook" + } + ], + "source": [ + "%xmode verbose\n", + "mod.g(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The default `%xmode` is \"context\", which shows additional context but not all local variables. Let's restore that one for the rest of our session." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exception reporting mode: Context\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since 1.0 the IPython notebook web application support `raw_input` which for example allow us to invoke the `%debug` magic in the notebook:" + } + ], + "source": [ + "%xmode context" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running code in other languages with special `%%` magics" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "July" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "mod.g(0)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "ename": "ZeroDivisionError", - "evalue": "float division 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\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" - ] - } - ], - "prompt_number": 45 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%debug" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "> \u001b[0;32m/Users/bussonniermatthias/ipython-in-depth/notebooks/mod.py\u001b[0m(3)\u001b[0;36mf\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32m 2 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[0;32m----> 3 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "stream": "stdout", - "text": [ - "ipdb> x\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "stream": "stdout", - "text": [ - "ipdb> up\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "> \u001b[0;32m/Users/bussonniermatthias/ipython-in-depth/notebooks/mod.py\u001b[0m(6)\u001b[0;36mg\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32m 4 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[0;32m 5 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[0;32m----> 6 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "stream": "stdout", - "text": [ - "ipdb> y\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "stream": "stdout", - "text": [ - "ipdb> up\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "> \u001b[0;32m\u001b[0m(1)\u001b[0;36m\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32m----> 1 \u001b[0;31m\u001b[0mmod\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "stream": "stdout", - "text": [ - "ipdb> exit\n" - ] - } - ], - "prompt_number": 38 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Don't foget to exit your debugging session. Raw input can of course be use to ask for user input:" + } + ], + "source": [ + "%%perl\n", + "@months = (\"July\", \"August\", \"September\");\n", + "print $months[0];" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello World!\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "enjoy = raw_input('Are you enjoying this tutorial ?')\n", - "print 'enjoy is :', enjoy" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "stream": "stdout", - "text": [ - "Are you enjoying this tutorial ?Yes !\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "enjoy is : Yes !\n" - ] - } - ], - "prompt_number": 39 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Plotting in the notebook" + } + ], + "source": [ + "%%ruby\n", + "name = \"world\"\n", + "puts \"Hello #{name.capitalize}!\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Write a cell that executes in Bash and prints your current working directory as well as the date.\n", + "\n", + "Apologies to Windows users who may not have Bash available, not sure how to obtain the equivalent result with `cmd.exe` or Powershell." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%load soln/bash-script" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Raw Input in the notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since 1.0 the IPython notebook web application support `raw_input` which for example allow us to invoke the `%debug` magic in the notebook:" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This magic configures matplotlib to render its figures inline:" + } + ], + "source": [ + "mod.g(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> \u001b[0;32m/Users/bussonniermatthias/ipython-in-depth/notebooks/mod.py\u001b[0m(3)\u001b[0;36mf\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m 2 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m----> 3 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "ipdb> x\n", + "1\n", + "ipdb> up\n", + "> \u001b[0;32m/Users/bussonniermatthias/ipython-in-depth/notebooks/mod.py\u001b[0m(6)\u001b[0;36mg\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m 4 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 5 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m----> 6 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "ipdb> y\n", + "0\n", + "ipdb> up\n", + "> \u001b[0;32m\u001b[0m(1)\u001b[0;36m\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m----> 1 \u001b[0;31m\u001b[0mmod\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "ipdb> exit\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matplotlib inline" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 46 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 47 - }, - { - "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", - "fig = plt.gcf() # let's keep the figure object around for later..." - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "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\n", - "text": [ - "" - ] - } - ], - "prompt_number": 48 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "The IPython kernel/client model" + } + ], + "source": [ + "%debug" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Don't foget to exit your debugging session. Raw input can of course be use to ask for user input:" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Are you enjoying this tutorial ?Yes !\n", + "enjoy is : Yes !\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%connect_info" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "{\n", - " \"stdin_port\": 50023, \n", - " \"ip\": \"127.0.0.1\", \n", - " \"control_port\": 50024, \n", - " \"hb_port\": 50025, \n", - " \"signature_scheme\": \"hmac-sha256\", \n", - " \"key\": \"b54b8859-d64d-48bb-814a-909f9beb3316\", \n", - " \"shell_port\": 50021, \n", - " \"transport\": \"tcp\", \n", - " \"iopub_port\": 50022\n", - "}\n", - "\n", - "Paste the above JSON into a file, and connect with:\n", - " $> ipython --existing \n", - "or, if you are local, you can connect with just:\n", - " $> ipython --existing kernel-30f00f4a-230c-4e64-bea5-0e5f6a52cb40.json \n", - "or even just:\n", - " $> ipython --existing \n", - "if this is the most recent IPython session you have started.\n" - ] - } - ], - "prompt_number": 43 - }, - { - "cell_type": "markdown", + } + ], + "source": [ + "enjoy = raw_input('Are you enjoying this tutorial ?')\n", + "print 'enjoy is :', enjoy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting in the notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This magic configures matplotlib to render its figures inline:" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, "metadata": {}, - "source": [ - "We can connect automatically a Qt Console to the currently running kernel with the `%qtconsole` magic, or by typing `ipython console --existing ` in any terminal:" + "output_type": "display_data" + } + ], + "source": [ + "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", + "fig = plt.gcf() # let's keep the figure object around for later..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The IPython kernel/client model" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"stdin_port\": 50023, \n", + " \"ip\": \"127.0.0.1\", \n", + " \"control_port\": 50024, \n", + " \"hb_port\": 50025, \n", + " \"signature_scheme\": \"hmac-sha256\", \n", + " \"key\": \"b54b8859-d64d-48bb-814a-909f9beb3316\", \n", + " \"shell_port\": 50021, \n", + " \"transport\": \"tcp\", \n", + " \"iopub_port\": 50022\n", + "}\n", + "\n", + "Paste the above JSON into a file, and connect with:\n", + " $> ipython --existing \n", + "or, if you are local, you can connect with just:\n", + " $> ipython --existing kernel-30f00f4a-230c-4e64-bea5-0e5f6a52cb40.json \n", + "or even just:\n", + " $> ipython --existing \n", + "if this is the most recent IPython session you have started.\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%qtconsole" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 83 } ], - "metadata": {} + "source": [ + "%connect_info" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can connect automatically a Qt Console to the currently running kernel with the `%qtconsole` magic, or by typing `ipython console --existing ` in any terminal:" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%qtconsole" + ] } - ] + ], + "metadata": { + "signature": "sha256:31071a05d0ecd75ed72fe3f0de0ad447a6f85cffe382c26efa5e68db1fee54ee" + }, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Capturing Output.ipynb b/examples/IPython Kernel/Capturing Output.ipynb index 6365a89..2cc7970 100644 --- a/examples/IPython Kernel/Capturing Output.ipynb +++ b/examples/IPython Kernel/Capturing Output.ipynb @@ -1,332 +1,489 @@ { - "metadata": { - "name": "", - "signature": "sha256:df6354daf203e842bc040989d149760382d8ceec769160e4efe8cde9dfcb9107" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Capturing Output With %%capture" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython has a [cell magic](Cell Magics.ipynb), `%%capture`, which captures the stdout/stderr of a cell. With this magic you can discard these streams or store them in a variable." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from __future__ import print_function\n", - "import sys" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 9 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By default, `%%capture` discards these streams. This is a simple way to suppress unwanted output." - ] - }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Capturing Output With %%capture" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython has a [cell magic](Cell Magics.ipynb), `%%capture`, which captures the stdout/stderr of a cell. With this magic you can discard these streams or store them in a variable." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sys" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By default, `%%capture` discards these streams. This is a simple way to suppress unwanted output." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%%capture\n", + "print('hi, stdout')\n", + "print('hi, stderr', file=sys.stderr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you specify a name, then stdout/stderr will be stored in an object in your namespace." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%%capture captured\n", + "print('hi, stdout')\n", + "print('hi, stderr', file=sys.stderr)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%capture\n", - "print('hi, stdout')\n", - "print('hi, stderr', file=sys.stderr)" - ], - "language": "python", + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, "metadata": {}, - "outputs": [], - "prompt_number": 10 - }, + "output_type": "execute_result" + } + ], + "source": [ + "captured" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calling the object writes the output to stdout/stderr as appropriate." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you specify a name, then stdout/stderr will be stored in an object in your namespace." + "name": "stdout", + "output_type": "stream", + "text": [ + "hi, stdout\n" ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%capture captured\n", - "print('hi, stdout')\n", - "print('hi, stderr', file=sys.stderr)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 11 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "captured" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 12, - "text": [ - "" - ] - } - ], - "prompt_number": 12 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calling the object writes the output to stdout/stderr as appropriate." + "name": "stderr", + "output_type": "stream", + "text": [ + "hi, stderr\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "captured()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "hi, stdout\n" - ] - }, - { - "output_type": "stream", - "stream": "stderr", - "text": [ - "hi, stderr\n" - ] - } - ], - "prompt_number": 13 - }, + } + ], + "source": [ + "captured()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "captured.stdout" - ], - "language": "python", + "data": { + "text/plain": [ + "'hi, stdout\\n'" + ] + }, + "execution_count": 14, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 14, - "text": [ - "'hi, stdout\\n'" - ] - } - ], - "prompt_number": 14 - }, + "output_type": "execute_result" + } + ], + "source": [ + "captured.stdout" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "captured.stderr" - ], - "language": "python", + "data": { + "text/plain": [ + "'hi, stderr\\n'" + ] + }, + "execution_count": 15, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 15, - "text": [ - "'hi, stderr\\n'" - ] - } - ], - "prompt_number": 15 - }, + "output_type": "execute_result" + } + ], + "source": [ + "captured.stderr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`%%capture` grabs all output types, not just stdout/stderr, so you can do plots and use IPython's display system inside `%%capture`" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%%capture wontshutup\n", + "\n", + "print(\"setting up X\")\n", + "x = np.linspace(0,5,1000)\n", + "print(\"step 2: constructing y-data\")\n", + "y = np.sin(x)\n", + "print(\"step 3: display info about y\")\n", + "plt.plot(x,y)\n", + "print(\"okay, I'm done now\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`%%capture` grabs all output types, not just stdout/stderr, so you can do plots and use IPython's display system inside `%%capture`" + "name": "stdout", + "output_type": "stream", + "text": [ + "setting up X\n", + "step 2: constructing y-data\n", + "step 3: display info about y\n", + "okay, I'm done now\n" ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matplotlib inline\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 16 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%capture wontshutup\n", - "\n", - "print(\"setting up X\")\n", - "x = np.linspace(0,5,1000)\n", - "print(\"step 2: constructing y-data\")\n", - "y = np.sin(x)\n", - "print(\"step 3: display info about y\")\n", - "plt.plot(x,y)\n", - "print(\"okay, I'm done now\")" - ], - "language": "python", + "data": { + "image/png": [ + "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\n", + "4uLiuPw8ay2tjujz8/Np2LAhK1asIDw8nNatW5Oamhq07Z1Vq1ZRuXJlbr/9djZu3Gg7jjW7du1i\n", + "165dtGjRgl9++YVWrVqxcOHCoP3v4tChQ1SsWJFjx47Rrl07nnvuOdq1a2c7ljUvvPACGzZs4MCB\n", + "AyxevNh2HGvq1q3Lhg0bqF69+nmftTqi14aq0yUkJFCtWjXbMayrWbMmLVq0AKBy5crExsbyfVlu\n", + "Q3SYihUrAnDkyBHy8/OL9BfbrXJyckhLS+OOO+7QabcUvhDmTFYLfUEbqnJzcy0mEqfZsWMHWVlZ\n", + "tGnTxnYUa44fP06LFi0ICwujQ4cONGrUyHYka+6//34mT55MuXLWu87WhYSE0LlzZ+Lj45k+ffo5\n", + "n7X63dKGKjmXX375hZtvvpkpU6ZQuXJl23GsKVeuHJ9//jk5OTl88sknQXsUwpIlS7jsssuIi4vT\n", + "aB5IT08nKyuLpUuX8ve//51Vq1YV+qzVQh8eHk52dvbJj7Ozs4mIiLCYSJzi6NGj3HTTTdx66630\n", + "7NnTdhxHqFKlCt27d2f9+vW2o1ixevVqFi9eTN26denXrx8fffQRt99+u+1Y1tSqVQuAP/3pT9x4\n", + "441kZmYW+qzVQv/HDVVHjhxh7ty5JCUl2YwkDuD1ehk8eDCNGjVi5MiRtuNYtWfPHvbt2wfA4cOH\n", + "+eCDD4iLi7Ocyo6JEyeSnZ3Nt99+y5w5c+jYsSOzZs2yHcuKQ4cOceDAAQAOHjzI8uXLz7laz2qh\n", + "14aq0/VNJLb3AAAAlUlEQVTr14+2bduydetWIiMjmTFjhu1IVqSnpzN79mxWrlxJXFwccXFxLFu2\n", + "zHYsK3bu3EnHjh1p0aIFbdq0oUePHnTq1Ml2LEcI5tZvXl4eCQkJJ/+7uP7667nmmmsKfV4bpkRE\n", + "XE5T1yIiLqdCLyLicir0IiIup0IvIuJyKvQiIi6nQi8i4nIq9CIiLqdCLyLicv8PoaUAhzXYTeQA\n", + "AAAASUVORK5CYII=\n" + ], + "text/plain": [ + "" + ] + }, "metadata": {}, - "outputs": [], - "prompt_number": 17 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "wontshutup()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "setting up X\n", - "step 2: constructing y-data\n", - "step 3: display info about y\n", - "okay, I'm done now\n" - ] - }, - { - "metadata": {}, - "output_type": "display_data", - "png": "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\nEfGbE9cVJiSYYxQ8HliyxByYdvCgafFceaW53aphQ3OoWlFOzNy7F/7v/8xr3TpYs8b8vm1bc2TD\no49CvXolz33OQt+lSxd27dp11j+fOHEiPXr0OO8XDwkJKXkyEREHu+giuPZa80pJgZwcU6AzMuCV\nV8yoPzcXqlUzxyzUqAEXXGA+1+uF/fvNaZp79ph/1qCBebVqZVb8tGwJF17oo7DeUkpMTPRu2LCh\nwD9bs2aNt2vXric/njhxonfSpEkFPluvXj0voJdeeumlVzFe9erVO2+d9knrxltIcyo+Pp5t27ax\nY8cOateuzdy5c0lNTS3w2e1OXL8kIuICJZ6MXbBgAZGRkWRkZNC9e3euu+46AL7//nu6d+8OQGho\nKCkpKXTt2pVGjRrRp08fYmNjfZNcRESKxDFHIIiIiH9Y3xmrDVWnDBo0iLCwMJoGyiEbfpKdnU2H\nDh1o3LgxTZo04aWXXrIdyZpff/2VNm3a0KJFCxo1asQjjzxiO5J1+fn5xMXFFWlBiJtFRUXRrFkz\n4uLiuPw8ay2tjujz8/Np2LAhK1asIDw8nNatW5Oamhq07Z1Vq1ZRuXJlbr/9djZu3Gg7jjW7du1i\n165dtGjRgl9++YVWrVqxcOHCoP3v4tChQ1SsWJFjx47Rrl07nnvuOdq1a2c7ljUvvPACGzZs4MCB\nAyxevNh2HGvq1q3Lhg0bqF69+nmftTqi14aq0yUkJFCtWjXbMayrWbMmLVq0AKBy5crExsbyfVlu\nQ3SYihUrAnDkyBHy8/OL9BfbrXJyckhLS+OOO+7QabcUvhDmTFYLfUEbqnJzcy0mEqfZsWMHWVlZ\ntGnTxnYUa44fP06LFi0ICwujQ4cONGrUyHYka+6//34mT55MuXLWu87WhYSE0LlzZ+Lj45k+ffo5\nn7X63dKGKjmXX375hZtvvpkpU6ZQuXJl23GsKVeuHJ9//jk5OTl88sknQXsUwpIlS7jsssuIi4vT\naB5IT08nKyuLpUuX8ve//51Vq1YV+qzVQh8eHk52dvbJj7Ozs4mIiLCYSJzi6NGj3HTTTdx66630\n7NnTdhxHqFKlCt27d2f9+vW2o1ixevVqFi9eTN26denXrx8fffQRt99+u+1Y1tSqVQuAP/3pT9x4\n441kZmYW+qzVQv/HDVVHjhxh7ty5JCUl2YwkDuD1ehk8eDCNGjVi5MiRtuNYtWfPHvbt2wfA4cOH\n+eCDD4iLi7Ocyo6JEyeSnZ3Nt99+y5w5c+jYsSOzZs2yHcuKQ4cOceDAAQAOHjzI8uXLz7laz2qh\n14aq0/VNJLb3AAAAlUlEQVTr14+2bduydetWIiMjmTFjhu1IVqSnpzN79mxWrlxJXFwccXFxLFu2\nzHYsK3bu3EnHjh1p0aIFbdq0oUePHnTq1Ml2LEcI5tZvXl4eCQkJJ/+7uP7667nmmmsKfV4bpkRE\nXE5T1yIiLqdCLyLicir0IiIup0IvIuJyKvQiIi6nQi8i4nIq9CIiLqdCLyLicv8PoaUAhzXYTeQA\nAAAASUVORK5CYII=\n", - "text": [ - "" - ] - } - ], - "prompt_number": 18 - }, + "output_type": "display_data" + } + ], + "source": [ + "wontshutup()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And you can selectively disable capturing stdout, stderr or rich display, by passing `--no-stdout`, `--no-stderr` and `--no-display`" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And you can selectively disable capturing stdout, stderr or rich display, by passing `--no-stdout`, `--no-stderr` and `--no-display`" + "name": "stderr", + "output_type": "stream", + "text": [ + "hello, stderr\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%capture cap --no-stderr\n", - "print('hi, stdout')\n", - "print(\"hello, stderr\", file=sys.stderr)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stderr", - "text": [ - "hello, stderr\n" - ] - } - ], - "prompt_number": 19 - }, + } + ], + "source": [ + "%%capture cap --no-stderr\n", + "print('hi, stdout')\n", + "print(\"hello, stderr\", file=sys.stderr)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "cap.stdout" - ], - "language": "python", + "data": { + "text/plain": [ + "'hi, stdout\\n'" + ] + }, + "execution_count": 20, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 20, - "text": [ - "'hi, stdout\\n'" - ] - } - ], - "prompt_number": 20 - }, + "output_type": "execute_result" + } + ], + "source": [ + "cap.stdout" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "cap.stderr" - ], - "language": "python", + "data": { + "text/plain": [ + "''" + ] + }, + "execution_count": 21, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 21, - "text": [ - "''" - ] - } - ], - "prompt_number": 21 - }, + "output_type": "execute_result" + } + ], + "source": [ + "cap.stderr" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "cap.outputs" - ], - "language": "python", + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 22, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 22, - "text": [ - "[]" - ] - } - ], - "prompt_number": 22 + "output_type": "execute_result" } ], - "metadata": {} + "source": [ + "cap.outputs" + ] } - ] + ], + "metadata": { + "signature": "sha256:df6354daf203e842bc040989d149760382d8ceec769160e4efe8cde9dfcb9107" + }, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Cell Magics.ipynb b/examples/IPython Kernel/Cell Magics.ipynb index bfa6705..f7dc4a2 100644 --- a/examples/IPython Kernel/Cell Magics.ipynb +++ b/examples/IPython Kernel/Cell Magics.ipynb @@ -1,593 +1,699 @@ { - "metadata": { - "name": "" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Cell Magics in IPython" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython has a system of commands we call 'magics' that provide effectively a mini command language that is orthogonal to the syntax of Python and is extensible by the user with new commands. Magics are meant to be typed interactively, so they use command-line conventions, such as using whitespace for separating arguments, dashes for options and other conventions typical of a command-line environment.\n", - "\n", - "Magics come in two kinds:\n", - "\n", - "* Line magics: these are commands prepended by one `%` character and whose arguments only extend to the end of the current line.\n", - "* Cell magics: these use *two* percent characters as a marker (`%%`), and they receive as argument *both* the current line where they are declared and the whole body of the cell. Note that cell magics can *only* be used as the first line in a cell, and as a general principle they can't be 'stacked' (i.e. you can only use one cell magic per cell). A few of them, because of how they operate, can be stacked, but that is something you will discover on a case by case basis.\n", - "\n", - "The `%lsmagic` magic is used to list all available magics, and it will show both line and cell magics currently defined:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%lsmagic" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "json": [ - "{\"cell\": {\"prun\": \"ExecutionMagics\", \"file\": \"Other\", \"!\": \"OSMagics\", \"capture\": \"ExecutionMagics\", \"timeit\": \"ExecutionMagics\", \"script\": \"ScriptMagics\", \"ruby\": \"Other\", \"system\": \"OSMagics\", \"perl\": \"Other\", \"HTML\": \"Other\", \"bash\": \"Other\", \"python\": \"Other\", \"SVG\": \"Other\", \"javascript\": \"DisplayMagics\", \"writefile\": \"OSMagics\", \"pypy\": \"Other\", \"python3\": \"Other\", \"latex\": \"DisplayMagics\", \"sx\": \"OSMagics\", \"svg\": \"DisplayMagics\", \"html\": \"DisplayMagics\", \"sh\": \"Other\", \"time\": \"ExecutionMagics\", \"debug\": \"ExecutionMagics\"}, \"line\": {\"psource\": \"NamespaceMagics\", \"logstart\": \"LoggingMagics\", \"popd\": \"OSMagics\", \"loadpy\": \"CodeMagics\", \"install_ext\": \"ExtensionMagics\", \"colors\": \"BasicMagics\", \"who_ls\": \"NamespaceMagics\", \"install_profiles\": \"DeprecatedMagics\", \"pprint\": \"BasicMagics\", \"save\": \"CodeMagics\", \"tb\": \"ExecutionMagics\", \"pylab\": \"PylabMagics\", \"killbgscripts\": \"ScriptMagics\", \"quickref\": \"BasicMagics\", \"magic\": \"BasicMagics\", \"dhist\": \"OSMagics\", \"edit\": \"KernelMagics\", \"logstop\": \"LoggingMagics\", \"gui\": \"BasicMagics\", \"alias_magic\": \"BasicMagics\", \"debug\": \"ExecutionMagics\", \"page\": \"BasicMagics\", \"logstate\": \"LoggingMagics\", \"ed\": \"Other\", \"pushd\": \"OSMagics\", \"timeit\": \"ExecutionMagics\", \"rehashx\": \"OSMagics\", \"hist\": \"Other\", \"qtconsole\": \"KernelMagics\", \"dirs\": \"OSMagics\", \"run\": \"ExecutionMagics\", \"reset_selective\": \"NamespaceMagics\", \"pinfo2\": \"NamespaceMagics\", \"matplotlib\": \"PylabMagics\", \"automagic\": \"AutoMagics\", \"doctest_mode\": \"KernelMagics\", \"logoff\": \"LoggingMagics\", \"reload_ext\": \"ExtensionMagics\", \"pdb\": \"ExecutionMagics\", \"load\": \"CodeMagics\", \"lsmagic\": \"BasicMagics\", \"autosave\": \"KernelMagics\", \"cd\": \"OSMagics\", \"pastebin\": \"CodeMagics\", \"prun\": \"ExecutionMagics\", \"autocall\": \"AutoMagics\", \"bookmark\": \"OSMagics\", \"connect_info\": \"KernelMagics\", \"system\": \"OSMagics\", \"whos\": \"NamespaceMagics\", \"toc\": \"TimerMagics\", \"unload_ext\": \"ExtensionMagics\", \"store\": \"StoreMagics\", \"more\": \"KernelMagics\", \"gist\": \"Other\", \"pdef\": \"NamespaceMagics\", \"precision\": \"BasicMagics\", \"pinfo\": \"NamespaceMagics\", \"pwd\": \"OSMagics\", \"psearch\": \"NamespaceMagics\", \"reset\": \"NamespaceMagics\", \"recall\": \"HistoryMagics\", \"xdel\": \"NamespaceMagics\", \"xmode\": \"BasicMagics\", \"rerun\": \"HistoryMagics\", \"logon\": \"LoggingMagics\", \"history\": \"HistoryMagics\", \"pycat\": \"OSMagics\", \"unalias\": \"OSMagics\", \"install_default_config\": \"DeprecatedMagics\", \"env\": \"OSMagics\", \"load_ext\": \"ExtensionMagics\", \"config\": \"ConfigMagics\", \"tic\": \"TimerMagics\", \"profile\": \"BasicMagics\", \"pfile\": \"NamespaceMagics\", \"less\": \"KernelMagics\", \"who\": \"NamespaceMagics\", \"notebook\": \"BasicMagics\", \"man\": \"KernelMagics\", \"sx\": \"OSMagics\", \"macro\": \"ExecutionMagics\", \"clear\": \"KernelMagics\", \"alias\": \"OSMagics\", \"time\": \"ExecutionMagics\", \"sc\": \"OSMagics\", \"rep\": \"Other\", \"pdoc\": \"NamespaceMagics\"}}" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 1, - "text": [ - "Available line magics:\n", - "%alias %alias_magic %autocall %automagic %autosave %bookmark %cd %clear %colors %config %connect_info %debug %dhist %dirs %doctest_mode %ed %edit %env %gist %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %lsmagic %macro %magic %man %matplotlib %more %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 %run %save %sc %store %sx %system %tb %tic %time %timeit %toc %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 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile\n", - "\n", - "Automagic is ON, % prefix IS NOT needed for line magics." - ] - } - ], - "prompt_number": 1 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since in the introductory section we already covered the most frequently used line magics, we will focus here on the cell magics, which offer a great amount of power.\n", - "\n", - "Let's load matplotlib and numpy so we can use numerics/plotting at will later on." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "\n", - "Some simple cell magics" + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cell Magics in IPython" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython has a system of commands we call 'magics' that provide effectively a mini command language that is orthogonal to the syntax of Python and is extensible by the user with new commands. Magics are meant to be typed interactively, so they use command-line conventions, such as using whitespace for separating arguments, dashes for options and other conventions typical of a command-line environment.\n", + "\n", + "Magics come in two kinds:\n", + "\n", + "* Line magics: these are commands prepended by one `%` character and whose arguments only extend to the end of the current line.\n", + "* Cell magics: these use *two* percent characters as a marker (`%%`), and they receive as argument *both* the current line where they are declared and the whole body of the cell. Note that cell magics can *only* be used as the first line in a cell, and as a general principle they can't be 'stacked' (i.e. you can only use one cell magic per cell). A few of them, because of how they operate, can be stacked, but that is something you will discover on a case by case basis.\n", + "\n", + "The `%lsmagic` magic is used to list all available magics, and it will show both line and cell magics currently defined:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "application/json": { + "cell": { + "!": "OSMagics", + "HTML": "Other", + "SVG": "Other", + "bash": "Other", + "capture": "ExecutionMagics", + "debug": "ExecutionMagics", + "file": "Other", + "html": "DisplayMagics", + "javascript": "DisplayMagics", + "latex": "DisplayMagics", + "perl": "Other", + "prun": "ExecutionMagics", + "pypy": "Other", + "python": "Other", + "python3": "Other", + "ruby": "Other", + "script": "ScriptMagics", + "sh": "Other", + "svg": "DisplayMagics", + "sx": "OSMagics", + "system": "OSMagics", + "time": "ExecutionMagics", + "timeit": "ExecutionMagics", + "writefile": "OSMagics" + }, + "line": { + "alias": "OSMagics", + "alias_magic": "BasicMagics", + "autocall": "AutoMagics", + "automagic": "AutoMagics", + "autosave": "KernelMagics", + "bookmark": "OSMagics", + "cd": "OSMagics", + "clear": "KernelMagics", + "colors": "BasicMagics", + "config": "ConfigMagics", + "connect_info": "KernelMagics", + "debug": "ExecutionMagics", + "dhist": "OSMagics", + "dirs": "OSMagics", + "doctest_mode": "KernelMagics", + "ed": "Other", + "edit": "KernelMagics", + "env": "OSMagics", + "gist": "Other", + "gui": "BasicMagics", + "hist": "Other", + "history": "HistoryMagics", + "install_default_config": "DeprecatedMagics", + "install_ext": "ExtensionMagics", + "install_profiles": "DeprecatedMagics", + "killbgscripts": "ScriptMagics", + "less": "KernelMagics", + "load": "CodeMagics", + "load_ext": "ExtensionMagics", + "loadpy": "CodeMagics", + "logoff": "LoggingMagics", + "logon": "LoggingMagics", + "logstart": "LoggingMagics", + "logstate": "LoggingMagics", + "logstop": "LoggingMagics", + "lsmagic": "BasicMagics", + "macro": "ExecutionMagics", + "magic": "BasicMagics", + "man": "KernelMagics", + "matplotlib": "PylabMagics", + "more": "KernelMagics", + "notebook": "BasicMagics", + "page": "BasicMagics", + "pastebin": "CodeMagics", + "pdb": "ExecutionMagics", + "pdef": "NamespaceMagics", + "pdoc": "NamespaceMagics", + "pfile": "NamespaceMagics", + "pinfo": "NamespaceMagics", + "pinfo2": "NamespaceMagics", + "popd": "OSMagics", + "pprint": "BasicMagics", + "precision": "BasicMagics", + "profile": "BasicMagics", + "prun": "ExecutionMagics", + "psearch": "NamespaceMagics", + "psource": "NamespaceMagics", + "pushd": "OSMagics", + "pwd": "OSMagics", + "pycat": "OSMagics", + "pylab": "PylabMagics", + "qtconsole": "KernelMagics", + "quickref": "BasicMagics", + "recall": "HistoryMagics", + "rehashx": "OSMagics", + "reload_ext": "ExtensionMagics", + "rep": "Other", + "rerun": "HistoryMagics", + "reset": "NamespaceMagics", + "reset_selective": "NamespaceMagics", + "run": "ExecutionMagics", + "save": "CodeMagics", + "sc": "OSMagics", + "store": "StoreMagics", + "sx": "OSMagics", + "system": "OSMagics", + "tb": "ExecutionMagics", + "tic": "TimerMagics", + "time": "ExecutionMagics", + "timeit": "ExecutionMagics", + "toc": "TimerMagics", + "unalias": "OSMagics", + "unload_ext": "ExtensionMagics", + "who": "NamespaceMagics", + "who_ls": "NamespaceMagics", + "whos": "NamespaceMagics", + "xdel": "NamespaceMagics", + "xmode": "BasicMagics" + } + }, + "text/plain": [ + "Available line magics:\n", + "%alias %alias_magic %autocall %automagic %autosave %bookmark %cd %clear %colors %config %connect_info %debug %dhist %dirs %doctest_mode %ed %edit %env %gist %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %lsmagic %macro %magic %man %matplotlib %more %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 %run %save %sc %store %sx %system %tb %tic %time %timeit %toc %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 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile\n", + "\n", + "Automagic is ON, % prefix IS NOT needed for line magics." + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%lsmagic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since in the introductory section we already covered the most frequently used line magics, we will focus here on the cell magics, which offer a great amount of power.\n", + "\n", + "Let's load matplotlib and numpy so we can use numerics/plotting at will later on." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Some simple cell magics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Timing the execution of code; the 'timeit' magic exists both in line and cell form:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100 loops, best of 3: 6.05 ms per loop\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Timing the execution of code; the 'timeit' magic exists both in line and cell form:" + } + ], + "source": [ + "%timeit np.linalg.eigvals(np.random.rand(100,100))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100 loops, best of 3: 6.07 ms per loop\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%timeit np.linalg.eigvals(np.random.rand(100,100))" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "100 loops, best of 3: 6.05 ms per loop\n" - ] - } - ], - "prompt_number": 3 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%timeit a = np.random.rand(100, 100)\n", - "np.linalg.eigvals(a)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "100 loops, best of 3: 6.07 ms per loop\n" - ] - } - ], - "prompt_number": 4 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `%%capture` magic can be used to capture the stdout/err of any block of python code, either to discard it (if it's noise to you) or to store it in a variable for later use:" + } + ], + "source": [ + "%%timeit a = np.random.rand(100, 100)\n", + "np.linalg.eigvals(a)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `%%capture` magic can be used to capture the stdout/err of any block of python code, either to discard it (if it's noise to you) or to store it in a variable for later use:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%%capture capt\n", + "from __future__ import print_function\n", + "import sys\n", + "print('Hello stdout')\n", + "print('and stderr', file=sys.stderr)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('Hello stdout\\n', 'and stderr\\n')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "capt.stdout, capt.stderr" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello stdout\n" ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%capture capt\n", - "from __future__ import print_function\n", - "import sys\n", - "print('Hello stdout')\n", - "print('and stderr', file=sys.stderr)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 5 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "capt.stdout, capt.stderr" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 6, - "text": [ - "('Hello stdout\\n', 'and stderr\\n')" - ] - } - ], - "prompt_number": 6 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "capt.show()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Hello stdout\n" - ] - }, - { - "output_type": "stream", - "stream": "stderr", - "text": [ - "and stderr\n" - ] - } - ], - "prompt_number": 7 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `%%writefile` magic is a very useful tool that writes the cell contents as a named file:" + "name": "stderr", + "output_type": "stream", + "text": [ + "and stderr\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%writefile foo.py\n", - "print('Hello world')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Writing foo.py\n" - ] - } - ], - "prompt_number": 8 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%run foo" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Hello world\n" - ] - } - ], - "prompt_number": 9 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "\n", - "Magics for running code under other interpreters" + } + ], + "source": [ + "capt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `%%writefile` magic is a very useful tool that writes the cell contents as a named file:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing foo.py\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython has a `%%script` cell magic, which lets you run a cell in\n", - "a subprocess of any interpreter on your system, such as: bash, ruby, perl, zsh, R, etc.\n", - "\n", - "It can even be a script of your own, which expects input on stdin." + } + ], + "source": [ + "%%writefile foo.py\n", + "print('Hello world')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello world\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To use it, simply pass a path or shell command to the program you want to run on the `%%script` line,\n", - "and the rest of the cell will be run by that script, and stdout/err from the subprocess are captured and displayed." + } + ], + "source": [ + "%run foo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Magics for running code under other interpreters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython has a `%%script` cell magic, which lets you run a cell in\n", + "a subprocess of any interpreter on your system, such as: bash, ruby, perl, zsh, R, etc.\n", + "\n", + "It can even be a script of your own, which expects input on stdin." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To use it, simply pass a path or shell command to the program you want to run on the `%%script` line,\n", + "and the rest of the cell will be run by that script, and stdout/err from the subprocess are captured and displayed." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello from Python 2.7.2 (default, Oct 11 2012, 20:14:37) \n", + "[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)]\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%script python\n", - "import sys\n", - "print 'hello from Python %s' % sys.version" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "hello from Python 2.7.2 (default, Oct 11 2012, 20:14:37) \n", - "[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)]\n" - ] - } - ], - "prompt_number": 10 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%script python3\n", - "import sys\n", - "print('hello from Python: %s' % sys.version)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "hello from Python: 3.3.1 (v3.3.1:d9893d13c628, Apr 6 2013, 11:07:11) \n", - "[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]\n" - ] - } - ], - "prompt_number": 11 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython also creates aliases for a few common interpreters, such as bash, ruby, perl, etc.\n", - "\n", - "These are all equivalent to `%%script `" + } + ], + "source": [ + "%%script python\n", + "import sys\n", + "print 'hello from Python %s' % sys.version" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello from Python: 3.3.1 (v3.3.1:d9893d13c628, Apr 6 2013, 11:07:11) \n", + "[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%ruby\n", - "puts \"Hello from Ruby #{RUBY_VERSION}\"" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Hello from Ruby 1.9.3\n" - ] - } - ], - "prompt_number": 12 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%bash\n", - "echo \"hello from $BASH\"" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "hello from /usr/local/bin/bash\n" - ] - } - ], - "prompt_number": 13 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Exercise: write your own script that numbers input lines" + } + ], + "source": [ + "%%script python3\n", + "import sys\n", + "print('hello from Python: %s' % sys.version)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython also creates aliases for a few common interpreters, such as bash, ruby, perl, etc.\n", + "\n", + "These are all equivalent to `%%script `" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello from Ruby 1.9.3\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Write a file, called `lnum.py`, such that the following cell works as shown (hint: don't forget about the executable bit!): " + } + ], + "source": [ + "%%ruby\n", + "puts \"Hello from Ruby #{RUBY_VERSION}\"" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello from /usr/local/bin/bash\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%script ./lnum.py\n", - "my first line\n", - "my second\n", - "more" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "0: my first line\n", - "1: my second\n", - "2: more\n", - "---- END ----\n" - ] - } - ], - "prompt_number": 29 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Capturing output" + } + ], + "source": [ + "%%bash\n", + "echo \"hello from $BASH\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise: write your own script that numbers input lines" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Write a file, called `lnum.py`, such that the following cell works as shown (hint: don't forget about the executable bit!): " + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0: my first line\n", + "1: my second\n", + "2: more\n", + "---- END ----\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also capture stdout/err from these subprocesses into Python variables, instead of letting them go directly to stdout/err" + } + ], + "source": [ + "%%script ./lnum.py\n", + "my first line\n", + "my second\n", + "more" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Capturing output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also capture stdout/err from these subprocesses into Python variables, instead of letting them go directly to stdout/err" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hi, stdout\n" ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%bash\n", - "echo \"hi, stdout\"\n", - "echo \"hello, stderr\" >&2\n" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "hi, stdout\n" - ] - }, - { - "output_type": "stream", - "stream": "stderr", - "text": [ - "hello, stderr\n" - ] - } - ], - "prompt_number": 30 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%bash --out output --err error\n", - "echo \"hi, stdout\"\n", - "echo \"hello, stderr\" >&2" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 31 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print(error)\n", - "print(output)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "hello, stderr\n", - "\n", - "hi, stdout\n", - "\n" - ] - } - ], - "prompt_number": 32 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Background Scripts" + "name": "stderr", + "output_type": "stream", + "text": [ + "hello, stderr\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These scripts can be run in the background, by adding the `--bg` flag.\n", + } + ], + "source": [ + "%%bash\n", + "echo \"hi, stdout\"\n", + "echo \"hello, stderr\" >&2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%%bash --out output --err error\n", + "echo \"hi, stdout\"\n", + "echo \"hello, stderr\" >&2" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello, stderr\n", "\n", - "When you do this, output is discarded unless you use the `--out/err`\n", - "flags to store output as above." + "hi, stdout\n", + "\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%ruby --bg --out ruby_lines\n", - "for n in 1...10\n", - " sleep 1\n", - " puts \"line #{n}\"\n", - " STDOUT.flush\n", - "end" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Starting job # 0 in a separate thread.\n" - ] - } - ], - "prompt_number": 33 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you do store output of a background thread, these are the stdout/err *pipes*,\n", - "rather than the text of the output." + } + ], + "source": [ + "print(error)\n", + "print(output)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Background Scripts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These scripts can be run in the background, by adding the `--bg` flag.\n", + "\n", + "When you do this, output is discarded unless you use the `--out/err`\n", + "flags to store output as above." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting job # 0 in a separate thread.\n" + ] + } + ], + "source": [ + "%%ruby --bg --out ruby_lines\n", + "for n in 1...10\n", + " sleep 1\n", + " puts \"line #{n}\"\n", + " STDOUT.flush\n", + "end" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you do store output of a background thread, these are the stdout/err *pipes*,\n", + "rather than the text of the output." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "', mode 'rb' at 0x112cd55d0>" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ruby_lines" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "line 1\n", + "line 2\n", + "line 3\n", + "line 4\n", + "line 5\n", + "line 6\n", + "line 7\n", + "line 8\n", + "line 9\n", + "\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ruby_lines" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 34, - "text": [ - "', mode 'rb' at 0x112cd55d0>" - ] - } - ], - "prompt_number": 34 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print(ruby_lines.read())" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "line 1\n", - "line 2\n", - "line 3\n", - "line 4\n", - "line 5\n", - "line 6\n", - "line 7\n", - "line 8\n", - "line 9\n", - "\n" - ] - } - ], - "prompt_number": 35 } ], - "metadata": {} + "source": [ + "print(ruby_lines.read())" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Custom Display Logic.ipynb b/examples/IPython Kernel/Custom Display Logic.ipynb index 2e23ac4..5b32c8b 100644 --- a/examples/IPython Kernel/Custom Display Logic.ipynb +++ b/examples/IPython Kernel/Custom Display Logic.ipynb @@ -1,787 +1,1325 @@ { - "metadata": { - "name": "", - "signature": "sha256:86c779d5798c4a68bda7e71c8ef320cb7ba9d7e3d0f1bc4b828ee65f617a5ae3" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Custom Display Logic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Overview" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As described in the [Rich Output](Rich Output.ipynb) tutorial, the IPython display system can display rich representations of objects in the following formats:\n", + "\n", + "* JavaScript\n", + "* HTML\n", + "* PNG\n", + "* JPEG\n", + "* SVG\n", + "* LaTeX\n", + "* PDF\n", + "\n", + "This Notebook shows how you can add custom display logic to your own classes, so that they can be displayed using these rich representations. There are two ways of accomplishing this:\n", + "\n", + "1. Implementing special display methods such as `_repr_html_` when you define your class.\n", + "2. Registering a display function for a particular existing class.\n", + "\n", + "This Notebook describes and illustrates both approaches." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import the IPython display functions." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from IPython.display import (\n", + " display, display_html, display_png, display_svg\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Parts of this notebook need the matplotlib inline backend:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Special display methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The main idea of the first approach is that you have to implement special display methods when you define your class, one for each representation you want to use. Here is a list of the names of the special methods and the values they must return:\n", + "\n", + "* `_repr_html_`: return raw HTML as a string\n", + "* `_repr_json_`: return raw JSON as a string\n", + "* `_repr_jpeg_`: return raw JPEG data\n", + "* `_repr_png_`: return raw PNG data\n", + "* `_repr_svg_`: return raw SVG data as a string\n", + "* `_repr_latex_`: return LaTeX commands in a string surrounded by \"$\"." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an illustration, we build a class that holds data generated by sampling a Gaussian distribution with given mean and standard deviation. Here is the definition of the `Gaussian` class, which has a custom PNG and LaTeX representation." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from IPython.core.pylabtools import print_figure\n", + "from IPython.display import Image, SVG, Math\n", + "\n", + "class Gaussian(object):\n", + " \"\"\"A simple object holding data sampled from a Gaussian distribution.\n", + " \"\"\"\n", + " def __init__(self, mean=0.0, std=1, size=1000):\n", + " self.data = np.random.normal(mean, std, size)\n", + " self.mean = mean\n", + " self.std = std\n", + " self.size = size\n", + " # For caching plots that may be expensive to compute\n", + " self._png_data = None\n", + " \n", + " def _figure_data(self, format):\n", + " fig, ax = plt.subplots()\n", + " ax.hist(self.data, bins=50)\n", + " ax.set_title(self._repr_latex_())\n", + " ax.set_xlim(-10.0,10.0)\n", + " data = print_figure(fig, format)\n", + " # We MUST close the figure, otherwise IPython's display machinery\n", + " # will pick it up and send it as output, resulting in a double display\n", + " plt.close(fig)\n", + " return data\n", + " \n", + " def _repr_png_(self):\n", + " if self._png_data is None:\n", + " self._png_data = self._figure_data('png')\n", + " return self._png_data\n", + " \n", + " def _repr_latex_(self):\n", + " return r'$\\mathcal{N}(\\mu=%.2g, \\sigma=%.2g),\\ N=%d$' % (self.mean,\n", + " self.std, self.size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create an instance of the Gaussian distribution and return it to display the default representation:" + ] + }, { - "cells": [ + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 1, + "data": { + "image/png": [ + "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\n" + ], + "text/latex": [ + "$\\mathcal{N}(\\mu=2, \\sigma=1),\\ N=1000$" + ], + "text/plain": [ + "<__main__.Gaussian at 0x106e7ae10>" + ] + }, + "execution_count": 4, "metadata": {}, - "source": [ - "Custom Display Logic" - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "x = Gaussian(2.0, 1.0)\n", + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also pass the object to the `display` function to display the default representation:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, + "data": { + "image/png": [ + "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\n" + ], + "text/latex": [ + "$\\mathcal{N}(\\mu=2, \\sigma=1),\\ N=1000$" + ], + "text/plain": [ + "<__main__.Gaussian at 0x106e7ae10>" + ] + }, "metadata": {}, - "source": [ - "Overview" - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "display(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use `display_png` to view the PNG representation:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "image/png": [ + "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\n" + ] + }, "metadata": {}, - "source": [ - "As described in the [Rich Output](Rich Output.ipynb) tutorial, the IPython display system can display rich representations of objects in the following formats:\n", - "\n", - "* JavaScript\n", - "* HTML\n", - "* PNG\n", - "* JPEG\n", - "* SVG\n", - "* LaTeX\n", - "* PDF\n", - "\n", - "This Notebook shows how you can add custom display logic to your own classes, so that they can be displayed using these rich representations. There are two ways of accomplishing this:\n", - "\n", - "1. Implementing special display methods such as `_repr_html_` when you define your class.\n", - "2. Registering a display function for a particular existing class.\n", - "\n", - "This Notebook describes and illustrates both approaches." - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "display_png(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "It is important to note a subtle different between display and display_png. The former computes all representations of the object, and lets the notebook UI decide which to display. The later only computes the PNG representation.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a new Gaussian with different parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "image/png": [ + "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\n", + "TkSuQmCC\n" + ], + "text/latex": [ + "$\\mathcal{N}(\\mu=0, \\sigma=2),\\ N=2000$" + ], + "text/plain": [ + "<__main__.Gaussian at 0x106e9ce90>" + ] + }, + "execution_count": 7, "metadata": {}, - "source": [ - "Import the IPython display functions." - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "x2 = Gaussian(0, 2, 2000)\n", + "x2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can then compare the two Gaussians by displaying their histograms:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import (\n", - " display, display_html, display_png, display_svg\n", - ")" - ], - "language": "python", + "data": { + "image/png": [ + "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\n" + ] + }, "metadata": {}, - "outputs": [], - "prompt_number": 1 + "output_type": "display_data" }, { - "cell_type": "markdown", + "data": { + "image/png": [ + "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\n", + "TkSuQmCC\n" + ] + }, "metadata": {}, - "source": [ - "Parts of this notebook need the matplotlib inline backend:" - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "display_png(x)\n", + "display_png(x2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that like `print`, you can call any of the `display` functions multiple times in a cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding IPython display support to existing objects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you are directly writing your own classes, you can adapt them for display in IPython by following the above approach. But in practice, you often need to work with existing classes that you can't easily modify. We now illustrate how to add rich output capabilities to existing objects. We will use the NumPy polynomials and change their default representation to be a formatted LaTeX expression." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, consider how a NumPy polynomial object renders by default:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ], - "language": "python", + "data": { + "text/plain": [ + "Polynomial([ 1., 2., 3.], [-10., 10.], [-1., 1.])" + ] + }, + "execution_count": 9, "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, + "output_type": "execute_result" + } + ], + "source": [ + "p = np.polynomial.Polynomial([1,2,3], [-10, 10])\n", + "p" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, define a function that pretty-prints a polynomial as a LaTeX string:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def poly_to_latex(p):\n", + " terms = ['%.2g' % p.coef[0]]\n", + " if len(p) > 1:\n", + " term = 'x'\n", + " c = p.coef[1]\n", + " if c!=1:\n", + " term = ('%.2g ' % c) + term\n", + " terms.append(term)\n", + " if len(p) > 2:\n", + " for i in range(2, len(p)):\n", + " term = 'x^%d' % i\n", + " c = p.coef[i]\n", + " if c!=1:\n", + " term = ('%.2g ' % c) + term\n", + " terms.append(term)\n", + " px = '$P(x)=%s$' % '+'.join(terms)\n", + " dom = r', $x \\in [%.2g,\\ %.2g]$' % tuple(p.domain)\n", + " return px+dom" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This produces, on our polynomial ``p``, the following:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, + "data": { + "text/plain": [ + "'$P(x)=1+2 x+3 x^2$, $x \\\\in [-10,\\\\ 10]$'" + ] + }, + "execution_count": 11, "metadata": {}, - "source": [ - "Special display methods" - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "poly_to_latex(p)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can render this string using the `Latex` class:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/latex": [ + "$P(x)=1+2 x+3 x^2$, $x \\in [-10,\\ 10]$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 12, "metadata": {}, - "source": [ - "The main idea of the first approach is that you have to implement special display methods when you define your class, one for each representation you want to use. Here is a list of the names of the special methods and the values they must return:\n", - "\n", - "* `_repr_html_`: return raw HTML as a string\n", - "* `_repr_json_`: return raw JSON as a string\n", - "* `_repr_jpeg_`: return raw JPEG data\n", - "* `_repr_png_`: return raw PNG data\n", - "* `_repr_svg_`: return raw SVG data as a string\n", - "* `_repr_latex_`: return LaTeX commands in a string surrounded by \"$\"." - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import Latex\n", + "Latex(poly_to_latex(p))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However, you can configure IPython to do this automatically by registering the `Polynomial` class and the `plot_to_latex` function with an IPython display formatter. Let's look at the default formatters provided by IPython:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As an illustration, we build a class that holds data generated by sampling a Gaussian distribution with given mean and standard deviation. Here is the definition of the `Gaussian` class, which has a custom PNG and LaTeX representation." + "name": "stdout", + "output_type": "stream", + "text": [ + " text/plain : PlainTextFormatter\n", + " image/jpeg : JPEGFormatter\n", + " text/html : HTMLFormatter\n", + " image/svg+xml : SVGFormatter\n", + " image/png : PNGFormatter\n", + " application/javascript : JavascriptFormatter\n", + " text/markdown : MarkdownFormatter\n", + " text/latex : LatexFormatter\n", + " application/json : JSONFormatter\n", + " application/pdf : PDFFormatter\n" ] - }, + } + ], + "source": [ + "ip = get_ipython()\n", + "for mime, formatter in ip.display_formatter.formatters.items():\n", + " print '%24s : %s' % (mime, formatter.__class__.__name__)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `formatters` attribute is a dictionary keyed by MIME types. To define a custom LaTeX display function, you want a handle on the `text/latex` formatter:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ip = get_ipython()\n", + "latex_f = ip.display_formatter.formatters['text/latex']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The formatter object has a couple of methods for registering custom display functions for existing types." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.core.pylabtools import print_figure\n", - "from IPython.display import Image, SVG, Math\n", + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on method for_type in module IPython.core.formatters:\n", "\n", - "class Gaussian(object):\n", - " \"\"\"A simple object holding data sampled from a Gaussian distribution.\n", - " \"\"\"\n", - " def __init__(self, mean=0.0, std=1, size=1000):\n", - " self.data = np.random.normal(mean, std, size)\n", - " self.mean = mean\n", - " self.std = std\n", - " self.size = size\n", - " # For caching plots that may be expensive to compute\n", - " self._png_data = None\n", - " \n", - " def _figure_data(self, format):\n", - " fig, ax = plt.subplots()\n", - " ax.hist(self.data, bins=50)\n", - " ax.set_title(self._repr_latex_())\n", - " ax.set_xlim(-10.0,10.0)\n", - " data = print_figure(fig, format)\n", - " # We MUST close the figure, otherwise IPython's display machinery\n", - " # will pick it up and send it as output, resulting in a double display\n", - " plt.close(fig)\n", - " return data\n", + "for_type(self, typ, func=None) method of IPython.core.formatters.LatexFormatter instance\n", + " Add a format function for a given type.\n", + " \n", + " Parameters\n", + " -----------\n", + " typ : type or '__module__.__name__' string for a type\n", + " The class of the object that will be formatted using `func`.\n", + " func : callable\n", + " A callable for computing the format data.\n", + " `func` will be called with the object to be formatted,\n", + " and will return the raw data in this formatter's format.\n", + " Subclasses may use a different call signature for the\n", + " `func` argument.\n", " \n", - " def _repr_png_(self):\n", - " if self._png_data is None:\n", - " self._png_data = self._figure_data('png')\n", - " return self._png_data\n", + " If `func` is None or not specified, there will be no change,\n", + " only returning the current value.\n", " \n", - " def _repr_latex_(self):\n", - " return r'$\\mathcal{N}(\\mu=%.2g, \\sigma=%.2g),\\ N=%d$' % (self.mean,\n", - " self.std, self.size)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 3 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create an instance of the Gaussian distribution and return it to display the default representation:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "x = Gaussian(2.0, 1.0)\n", - "x" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "$\\mathcal{N}(\\mu=2, \\sigma=1),\\ N=1000$" - ], - "metadata": {}, - "output_type": "pyout", - "png": "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\n", - "prompt_number": 4, - "text": [ - "<__main__.Gaussian at 0x106e7ae10>" - ] - } - ], - "prompt_number": 4 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also pass the object to the `display` function to display the default representation:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display(x)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "$\\mathcal{N}(\\mu=2, \\sigma=1),\\ N=1000$" - ], - "metadata": {}, - "output_type": "display_data", - "png": "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\n", - "text": [ - "<__main__.Gaussian at 0x106e7ae10>" - ] - } - ], - "prompt_number": 5 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Use `display_png` to view the PNG representation:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display_png(x)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "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\n" - } - ], - "prompt_number": 6 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "It is important to note a subtle different between display and display_png. The former computes all representations of the object, and lets the notebook UI decide which to display. The later only computes the PNG representation.\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create a new Gaussian with different parameters:" + " Returns\n", + " -------\n", + " oldfunc : callable\n", + " The currently registered callable.\n", + " If you are registering a new formatter,\n", + " this will be the previous value (to enable restoring later).\n", + "\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "x2 = Gaussian(0, 2, 2000)\n", - "x2" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "$\\mathcal{N}(\\mu=0, \\sigma=2),\\ N=2000$" - ], - "metadata": {}, - "output_type": "pyout", - "png": "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\nTkSuQmCC\n", - "prompt_number": 7, - "text": [ - "<__main__.Gaussian at 0x106e9ce90>" - ] - } - ], - "prompt_number": 7 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can then compare the two Gaussians by displaying their histograms:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display_png(x)\n", - "display_png(x2)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "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\n" - }, - { - "metadata": {}, - "output_type": "display_data", - "png": "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\nTkSuQmCC\n" - } - ], - "prompt_number": 8 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that like `print`, you can call any of the `display` functions multiple times in a cell." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Adding IPython display support to existing objects" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you are directly writing your own classes, you can adapt them for display in IPython by following the above approach. But in practice, you often need to work with existing classes that you can't easily modify. We now illustrate how to add rich output capabilities to existing objects. We will use the NumPy polynomials and change their default representation to be a formatted LaTeX expression." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, consider how a NumPy polynomial object renders by default:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "p = np.polynomial.Polynomial([1,2,3], [-10, 10])\n", - "p" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 9, - "text": [ - "Polynomial([ 1., 2., 3.], [-10., 10.], [-1., 1.])" - ] - } - ], - "prompt_number": 9 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, define a function that pretty-prints a polynomial as a LaTeX string:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def poly_to_latex(p):\n", - " terms = ['%.2g' % p.coef[0]]\n", - " if len(p) > 1:\n", - " term = 'x'\n", - " c = p.coef[1]\n", - " if c!=1:\n", - " term = ('%.2g ' % c) + term\n", - " terms.append(term)\n", - " if len(p) > 2:\n", - " for i in range(2, len(p)):\n", - " term = 'x^%d' % i\n", - " c = p.coef[i]\n", - " if c!=1:\n", - " term = ('%.2g ' % c) + term\n", - " terms.append(term)\n", - " px = '$P(x)=%s$' % '+'.join(terms)\n", - " dom = r', $x \\in [%.2g,\\ %.2g]$' % tuple(p.domain)\n", - " return px+dom" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 10 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This produces, on our polynomial ``p``, the following:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "poly_to_latex(p)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 11, - "text": [ - "'$P(x)=1+2 x+3 x^2$, $x \\\\in [-10,\\\\ 10]$'" - ] - } - ], - "prompt_number": 11 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can render this string using the `Latex` class:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import Latex\n", - "Latex(poly_to_latex(p))" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "$P(x)=1+2 x+3 x^2$, $x \\in [-10,\\ 10]$" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 12, - "text": [ - "" - ] - } - ], - "prompt_number": 12 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, you can configure IPython to do this automatically by registering the `Polynomial` class and the `plot_to_latex` function with an IPython display formatter. Let's look at the default formatters provided by IPython:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ip = get_ipython()\n", - "for mime, formatter in ip.display_formatter.formatters.items():\n", - " print '%24s : %s' % (mime, formatter.__class__.__name__)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - " text/plain : PlainTextFormatter\n", - " image/jpeg : JPEGFormatter\n", - " text/html : HTMLFormatter\n", - " image/svg+xml : SVGFormatter\n", - " image/png : PNGFormatter\n", - " application/javascript : JavascriptFormatter\n", - " text/markdown : MarkdownFormatter\n", - " text/latex : LatexFormatter\n", - " application/json : JSONFormatter\n", - " application/pdf : PDFFormatter\n" - ] - } - ], - "prompt_number": 13 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `formatters` attribute is a dictionary keyed by MIME types. To define a custom LaTeX display function, you want a handle on the `text/latex` formatter:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ip = get_ipython()\n", - "latex_f = ip.display_formatter.formatters['text/latex']" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 14 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The formatter object has a couple of methods for registering custom display functions for existing types." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "help(latex_f.for_type)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Help on method for_type in module IPython.core.formatters:\n", - "\n", - "for_type(self, typ, func=None) method of IPython.core.formatters.LatexFormatter instance\n", - " Add a format function for a given type.\n", - " \n", - " Parameters\n", - " -----------\n", - " typ : type or '__module__.__name__' string for a type\n", - " The class of the object that will be formatted using `func`.\n", - " func : callable\n", - " A callable for computing the format data.\n", - " `func` will be called with the object to be formatted,\n", - " and will return the raw data in this formatter's format.\n", - " Subclasses may use a different call signature for the\n", - " `func` argument.\n", - " \n", - " If `func` is None or not specified, there will be no change,\n", - " only returning the current value.\n", - " \n", - " Returns\n", - " -------\n", - " oldfunc : callable\n", - " The currently registered callable.\n", - " If you are registering a new formatter,\n", - " this will be the previous value (to enable restoring later).\n", - "\n" - ] - } - ], - "prompt_number": 15 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "help(latex_f.for_type_by_name)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Help on method for_type_by_name in module IPython.core.formatters:\n", - "\n", - "for_type_by_name(self, type_module, type_name, func=None) method of IPython.core.formatters.LatexFormatter instance\n", - " Add a format function for a type specified by the full dotted\n", - " module and name of the type, rather than the type of the object.\n", - " \n", - " Parameters\n", - " ----------\n", - " type_module : str\n", - " The full dotted name of the module the type is defined in, like\n", - " ``numpy``.\n", - " type_name : str\n", - " The name of the type (the class name), like ``dtype``\n", - " func : callable\n", - " A callable for computing the format data.\n", - " `func` will be called with the object to be formatted,\n", - " and will return the raw data in this formatter's format.\n", - " Subclasses may use a different call signature for the\n", - " `func` argument.\n", - " \n", - " If `func` is None or unspecified, there will be no change,\n", - " only returning the current value.\n", - " \n", - " Returns\n", - " -------\n", - " oldfunc : callable\n", - " The currently registered callable.\n", - " If you are registering a new formatter,\n", - " this will be the previous value (to enable restoring later).\n", - "\n" - ] - } - ], - "prompt_number": 16 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this case, we will use `for_type_by_name` to register `poly_to_latex` as the display function for the `Polynomial` type:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "latex_f.for_type_by_name('numpy.polynomial.polynomial',\n", - " 'Polynomial', poly_to_latex)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 18 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once the custom display function has been registered, all NumPy `Polynomial` instances will be represented by their LaTeX form instead:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "p" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "$P(x)=1+2 x+3 x^2$, $x \\in [-10,\\ 10]$" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 19, - "text": [ - "Polynomial([ 1., 2., 3.], [-10., 10.], [-1., 1.])" - ] - } - ], - "prompt_number": 19 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "p2 = np.polynomial.Polynomial([-20, 71, -15, 1])\n", - "p2" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "$P(x)=-20+71 x+-15 x^2+x^3$, $x \\in [-1,\\ 1]$" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 20, - "text": [ - "Polynomial([-20., 71., -15., 1.], [-1., 1.], [-1., 1.])" - ] - } - ], - "prompt_number": 20 - }, + } + ], + "source": [ + "help(latex_f.for_type)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "More complex display with `_ipython_display_`" + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on method for_type_by_name in module IPython.core.formatters:\n", + "\n", + "for_type_by_name(self, type_module, type_name, func=None) method of IPython.core.formatters.LatexFormatter instance\n", + " Add a format function for a type specified by the full dotted\n", + " module and name of the type, rather than the type of the object.\n", + " \n", + " Parameters\n", + " ----------\n", + " type_module : str\n", + " The full dotted name of the module the type is defined in, like\n", + " ``numpy``.\n", + " type_name : str\n", + " The name of the type (the class name), like ``dtype``\n", + " func : callable\n", + " A callable for computing the format data.\n", + " `func` will be called with the object to be formatted,\n", + " and will return the raw data in this formatter's format.\n", + " Subclasses may use a different call signature for the\n", + " `func` argument.\n", + " \n", + " If `func` is None or unspecified, there will be no change,\n", + " only returning the current value.\n", + " \n", + " Returns\n", + " -------\n", + " oldfunc : callable\n", + " The currently registered callable.\n", + " If you are registering a new formatter,\n", + " this will be the previous value (to enable restoring later).\n", + "\n" ] - }, + } + ], + "source": [ + "help(latex_f.for_type_by_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case, we will use `for_type_by_name` to register `poly_to_latex` as the display function for the `Polynomial` type:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "latex_f.for_type_by_name('numpy.polynomial.polynomial',\n", + " 'Polynomial', poly_to_latex)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once the custom display function has been registered, all NumPy `Polynomial` instances will be represented by their LaTeX form instead:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/latex": [ + "$P(x)=1+2 x+3 x^2$, $x \\in [-10,\\ 10]$" + ], + "text/plain": [ + "Polynomial([ 1., 2., 3.], [-10., 10.], [-1., 1.])" + ] + }, + "execution_count": 19, "metadata": {}, - "source": [ - "Rich output special methods and functions can only display one object or MIME type at a time. Sometimes this is not enough if you want to display multiple objects or MIME types at once. An example of this would be to use an HTML representation to put some HTML elements in the DOM and then use a JavaScript representation to add events to those elements.\n", - "\n", - "**IPython 2.0** recognizes another display method, `_ipython_display_`, which allows your objects to take complete control of displaying themselves. If this method is defined, IPython will call it, and make no effort to display the object using the above described `_repr_*_` methods for custom display functions. It's a way for you to say \"Back off, IPython, I can display this myself.\" Most importantly, your `_ipython_display_` method can make multiple calls to the top-level `display` functions to accomplish its goals.\n", - "\n", - "Here is an object that uses `display_html` and `display_javascript` to make a plot using the [Flot](http://www.flotcharts.org/) JavaScript plotting library:" - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "p" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "import json\n", - "import uuid\n", - "from IPython.display import display_javascript, display_html, display\n", - "\n", - "class FlotPlot(object):\n", - " def __init__(self, x, y):\n", - " self.x = x\n", - " self.y = y\n", - " self.uuid = str(uuid.uuid4())\n", - " \n", - " def _ipython_display_(self):\n", - " json_data = json.dumps(zip(self.x, self.y))\n", - " display_html('
'.format(self.uuid),\n", - " raw=True\n", - " )\n", - " display_javascript(\"\"\"\n", - " require([\"//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.min.js\"], function() {\n", - " var line = JSON.parse(\"%s\");\n", - " console.log(line);\n", - " $.plot(\"#%s\", [line]);\n", - " });\n", - " \"\"\" % (json_data, self.uuid), raw=True)\n" - ], - "language": "python", + "data": { + "text/latex": [ + "$P(x)=-20+71 x+-15 x^2+x^3$, $x \\in [-1,\\ 1]$" + ], + "text/plain": [ + "Polynomial([-20., 71., -15., 1.], [-1., 1.], [-1., 1.])" + ] + }, + "execution_count": 20, "metadata": {}, - "outputs": [], - "prompt_number": 21 - }, + "output_type": "execute_result" + } + ], + "source": [ + "p2 = np.polynomial.Polynomial([-20, 71, -15, 1])\n", + "p2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## More complex display with `_ipython_display_`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rich output special methods and functions can only display one object or MIME type at a time. Sometimes this is not enough if you want to display multiple objects or MIME types at once. An example of this would be to use an HTML representation to put some HTML elements in the DOM and then use a JavaScript representation to add events to those elements.\n", + "\n", + "**IPython 2.0** recognizes another display method, `_ipython_display_`, which allows your objects to take complete control of displaying themselves. If this method is defined, IPython will call it, and make no effort to display the object using the above described `_repr_*_` methods for custom display functions. It's a way for you to say \"Back off, IPython, I can display this myself.\" Most importantly, your `_ipython_display_` method can make multiple calls to the top-level `display` functions to accomplish its goals.\n", + "\n", + "Here is an object that uses `display_html` and `display_javascript` to make a plot using the [Flot](http://www.flotcharts.org/) JavaScript plotting library:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import json\n", + "import uuid\n", + "from IPython.display import display_javascript, display_html, display\n", + "\n", + "class FlotPlot(object):\n", + " def __init__(self, x, y):\n", + " self.x = x\n", + " self.y = y\n", + " self.uuid = str(uuid.uuid4())\n", + " \n", + " def _ipython_display_(self):\n", + " json_data = json.dumps(zip(self.x, self.y))\n", + " display_html('
'.format(self.uuid),\n", + " raw=True\n", + " )\n", + " display_javascript(\"\"\"\n", + " require([\"//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.min.js\"], function() {\n", + " var line = JSON.parse(\"%s\");\n", + " console.log(line);\n", + " $.plot(\"#%s\", [line]);\n", + " });\n", + " \"\"\" % (json_data, self.uuid), raw=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "import numpy as np\n", - "x = np.linspace(0,10)\n", - "y = np.sin(x)\n", - "FlotPlot(x, np.sin(x))" - ], - "language": "python", + "data": { + "text/html": [ + "
" + ] + }, "metadata": {}, - "outputs": [ - { - "html": [ - "
" - ], - "metadata": {}, - "output_type": "display_data" - }, - { - "javascript": [ - "\n", - " require([\"//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.min.js\"], function() {\n", - " var line = JSON.parse(\"[[0.0, 0.0], [0.20408163265306123, 0.20266793654820095], [0.40816326530612246, 0.39692414892492234], [0.61224489795918369, 0.57470604121617908], [0.81632653061224492, 0.72863478346935029], [1.0204081632653061, 0.85232156971961837], [1.2244897959183674, 0.94063278511248671], [1.4285714285714286, 0.98990307637212394], [1.6326530612244898, 0.99808748213471832], [1.8367346938775511, 0.96484630898376322], [2.0408163265306123, 0.89155923041100371], [2.2448979591836737, 0.7812680235262639], [2.4489795918367347, 0.63855032022660208], [2.6530612244897958, 0.46932961277720098], [2.8571428571428572, 0.28062939951435684], [3.0612244897959187, 0.080281674842813497], [3.2653061224489797, -0.12339813736217871], [3.4693877551020407, -0.32195631507261868], [3.6734693877551021, -0.50715170948451438], [3.8775510204081636, -0.67129779355193209], [4.0816326530612246, -0.80758169096833643], [4.2857142857142856, -0.91034694431078278], [4.4897959183673475, -0.97532828606704558], [4.6938775510204085, -0.99982866838408957], [4.8979591836734695, -0.98283120392563061], [5.1020408163265305, -0.92504137173820289], [5.3061224489795915, -0.82885773637304272], [5.5102040816326534, -0.69827239556539955], [5.7142857142857144, -0.53870528838615628], [5.9183673469387754, -0.35677924089893803], [6.1224489795918373, -0.16004508604325057], [6.3265306122448983, 0.043331733368683463], [6.5306122448979593, 0.24491007101197931], [6.7346938775510203, 0.43632342647181932], [6.9387755102040813, 0.6096271964908323], [7.1428571428571432, 0.75762841539272019], [7.3469387755102042, 0.87418429881973347], [7.5510204081632653, 0.95445719973875187], [7.7551020408163271, 0.99511539477766364], [7.9591836734693882, 0.99447136726361685], [8.1632653061224492, 0.95255184753146038], [8.3673469387755102, 0.87109670348232071], [8.5714285714285712, 0.75348672743963763], [8.7755102040816322, 0.60460331650615429], [8.979591836734695, 0.43062587038273736], [9.183673469387756, 0.23877531564403087], [9.387755102040817, 0.037014401485062368], [9.591836734693878, -0.16628279384875641], [9.795918367346939, -0.36267842882654883], [10.0, -0.54402111088936989]]\");\n", - " console.log(line);\n", - " $.plot(\"#e75b8189-92cb-4cbb-9996-bb8ad5ff1b4e\", [line]);\n", - " });\n", - " " - ], - "metadata": {}, - "output_type": "display_data" - } - ], - "prompt_number": 22 + "output_type": "display_data" }, { - "cell_type": "code", - "collapsed": false, - "input": [], - "language": "python", + "data": { + "application/javascript": [ + "\n", + " require([\"//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.min.js\"], function() {\n", + " var line = JSON.parse(\"[[0.0, 0.0], [0.20408163265306123, 0.20266793654820095], [0.40816326530612246, 0.39692414892492234], [0.61224489795918369, 0.57470604121617908], [0.81632653061224492, 0.72863478346935029], [1.0204081632653061, 0.85232156971961837], [1.2244897959183674, 0.94063278511248671], [1.4285714285714286, 0.98990307637212394], [1.6326530612244898, 0.99808748213471832], [1.8367346938775511, 0.96484630898376322], [2.0408163265306123, 0.89155923041100371], [2.2448979591836737, 0.7812680235262639], [2.4489795918367347, 0.63855032022660208], [2.6530612244897958, 0.46932961277720098], [2.8571428571428572, 0.28062939951435684], [3.0612244897959187, 0.080281674842813497], [3.2653061224489797, -0.12339813736217871], [3.4693877551020407, -0.32195631507261868], [3.6734693877551021, -0.50715170948451438], [3.8775510204081636, -0.67129779355193209], [4.0816326530612246, -0.80758169096833643], [4.2857142857142856, -0.91034694431078278], [4.4897959183673475, -0.97532828606704558], [4.6938775510204085, -0.99982866838408957], [4.8979591836734695, -0.98283120392563061], [5.1020408163265305, -0.92504137173820289], [5.3061224489795915, -0.82885773637304272], [5.5102040816326534, -0.69827239556539955], [5.7142857142857144, -0.53870528838615628], [5.9183673469387754, -0.35677924089893803], [6.1224489795918373, -0.16004508604325057], [6.3265306122448983, 0.043331733368683463], [6.5306122448979593, 0.24491007101197931], [6.7346938775510203, 0.43632342647181932], [6.9387755102040813, 0.6096271964908323], [7.1428571428571432, 0.75762841539272019], [7.3469387755102042, 0.87418429881973347], [7.5510204081632653, 0.95445719973875187], [7.7551020408163271, 0.99511539477766364], [7.9591836734693882, 0.99447136726361685], [8.1632653061224492, 0.95255184753146038], [8.3673469387755102, 0.87109670348232071], [8.5714285714285712, 0.75348672743963763], [8.7755102040816322, 0.60460331650615429], [8.979591836734695, 0.43062587038273736], [9.183673469387756, 0.23877531564403087], [9.387755102040817, 0.037014401485062368], [9.591836734693878, -0.16628279384875641], [9.795918367346939, -0.36267842882654883], [10.0, -0.54402111088936989]]\");\n", + " console.log(line);\n", + " $.plot(\"#e75b8189-92cb-4cbb-9996-bb8ad5ff1b4e\", [line]);\n", + " });\n", + " " + ] + }, "metadata": {}, - "outputs": [] + "output_type": "display_data" } ], - "metadata": {} + "source": [ + "import numpy as np\n", + "x = np.linspace(0,10)\n", + "y = np.sin(x)\n", + "FlotPlot(x, np.sin(x))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] } - ] + ], + "metadata": { + "signature": "sha256:86c779d5798c4a68bda7e71c8ef320cb7ba9d7e3d0f1bc4b828ee65f617a5ae3" + }, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Index.ipynb b/examples/IPython Kernel/Index.ipynb index 5627e30..9418e0e 100644 --- a/examples/IPython Kernel/Index.ipynb +++ b/examples/IPython Kernel/Index.ipynb @@ -1,172 +1,168 @@ { - "metadata": { - "name": "", - "signature": "sha256:ee769d05a7e195e4b8546ef9a866ef03e59bff2f0fcba499d168c06b516aa79a" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Back to the main [Index](../Index.ipynb)" - ] - }, - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "IPython Kernel" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython provides extensions to the Python programming language that make working interactively convenient and efficient. These extensions are implemented in the IPython Kernel and are available in all of the IPython Frontends (Notebook, Terminal, Console and Qt Console) when running this kernel." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Tutorials" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* [Cell Magics](Cell Magics.ipynb)\n", - "* [Script Magics](Script Magics.ipynb)\n", - "* [Rich Output](Rich Output.ipynb)\n", - "* [Custom Display Logic](Custom Display Logic.ipynb)\n", - "* [Plotting in the Notebook](Plotting in the Notebook.ipynb)\n", - "* [Capturing Output](Capturing Output.ipynb)" - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Examples" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* [Background Jobs](Background Jobs.ipynb)\n", - "* [Trapezoid Rule](Trapezoid Rule.ipynb)\n", - "* [SymPy](SymPy.ipynb)\n", - "* [Raw Input in the Notebook](Raw Input in the Notebook.ipynb)" - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Non-notebook examples" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This directory also contains examples that are regular Python (`.py`) files." - ] - }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Back to the main [Index](../Index.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# IPython Kernel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython provides extensions to the Python programming language that make working interactively convenient and efficient. These extensions are implemented in the IPython Kernel and are available in all of the IPython Frontends (Notebook, Terminal, Console and Qt Console) when running this kernel." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tutorials" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* [Cell Magics](Cell Magics.ipynb)\n", + "* [Script Magics](Script Magics.ipynb)\n", + "* [Rich Output](Rich Output.ipynb)\n", + "* [Custom Display Logic](Custom Display Logic.ipynb)\n", + "* [Plotting in the Notebook](Plotting in the Notebook.ipynb)\n", + "* [Capturing Output](Capturing Output.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* [Background Jobs](Background Jobs.ipynb)\n", + "* [Trapezoid Rule](Trapezoid Rule.ipynb)\n", + "* [SymPy](SymPy.ipynb)\n", + "* [Raw Input in the Notebook](Raw Input in the Notebook.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Non-notebook examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This directory also contains examples that are regular Python (`.py`) files." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%run ../utils/list_pyfiles.ipy" - ], - "language": "python", + "data": { + "text/html": [ + "example-demo.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/IPython Kernel/example-demo.py" + ] + }, "metadata": {}, - "outputs": [ - { - "html": [ - "example-demo.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/IPython Kernel/example-demo.py" - ] - }, - { - "html": [ - "ipython-get-history.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/IPython Kernel/ipython-get-history.py" - ] - } - ], - "prompt_number": 1 + "output_type": "display_data" }, { - "cell_type": "markdown", + "data": { + "text/html": [ + "ipython-get-history.py
" + ], + "text/plain": [ + "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/IPython Kernel/ipython-get-history.py" + ] + }, "metadata": {}, - "source": [ - "There are also a set of examples that show how to integrate IPython with different GUI event loops:" - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "%run ../utils/list_pyfiles.ipy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are also a set of examples that show how to integrate IPython with different GUI event loops:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%run ../utils/list_subdirs.ipy" - ], - "language": "python", + "data": { + "text/html": [ + "gui/
\n", + "  gui-glut.py
\n", + "  gui-gtk.py
\n", + "  gui-gtk3.py
\n", + "  gui-pyglet.py
\n", + "  gui-qt.py
\n", + "  gui-tk.py
\n", + "  gui-wx.py
" + ], + "text/plain": [ + "gui/\n", + " gui-glut.py\n", + " gui-gtk.py\n", + " gui-gtk3.py\n", + " gui-pyglet.py\n", + " gui-qt.py\n", + " gui-tk.py\n", + " gui-wx.py" + ] + }, "metadata": {}, - "outputs": [ - { - "html": [ - "gui/
\n", - "  gui-glut.py
\n", - "  gui-gtk.py
\n", - "  gui-gtk3.py
\n", - "  gui-pyglet.py
\n", - "  gui-qt.py
\n", - "  gui-tk.py
\n", - "  gui-wx.py
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "gui/\n", - " gui-glut.py\n", - " gui-gtk.py\n", - " gui-gtk3.py\n", - " gui-pyglet.py\n", - " gui-qt.py\n", - " gui-tk.py\n", - " gui-wx.py" - ] - } - ], - "prompt_number": 2 + "output_type": "display_data" } ], - "metadata": {} + "source": [ + "%run ../utils/list_subdirs.ipy" + ] } - ] + ], + "metadata": { + "signature": "sha256:ee769d05a7e195e4b8546ef9a866ef03e59bff2f0fcba499d168c06b516aa79a" + }, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Old Custom Display Logic.ipynb b/examples/IPython Kernel/Old Custom Display Logic.ipynb index 051f1e4..b147242 100644 --- a/examples/IPython Kernel/Old Custom Display Logic.ipynb +++ b/examples/IPython Kernel/Old Custom Display Logic.ipynb @@ -1,944 +1,1483 @@ { - "metadata": { - "name": "" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Defining Custom Display Logic for Your Own Objects" - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Overview" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In Python, objects can declare their textual representation using the `__repr__` method. IPython expands on this idea and allows objects to declare other, richer representations including:\n", - "\n", - "* HTML\n", - "* JSON\n", - "* PNG\n", - "* JPEG\n", - "* SVG\n", - "* LaTeX\n", - "\n", - "This Notebook shows how you can add custom display logic to your own classes, so that they can be displayed using these rich representations. There are two ways of accomplishing this:\n", - "\n", - "1. Implementing special display methods such as `_repr_html_`.\n", - "2. Registering a display function for a particular type.\n", - "\n", - "In this Notebook we show how both approaches work." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Before we get started, we will import the various display functions for displaying the different formats we will create." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import display\n", - "from IPython.display import (\n", - " display_html, display_jpeg, display_png,\n", - " display_javascript, display_svg, display_latex\n", - ")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Implementing special display methods" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The main idea of the first approach is that you have to implement special display methods, one for each representation you want to use. Here is a list of the names of the special methods and the values they must return:\n", - "\n", - "* `_repr_html_`: return raw HTML as a string\n", - "* `_repr_json_`: return raw JSON as a string\n", - "* `_repr_jpeg_`: return raw JPEG data\n", - "* `_repr_png_`: return raw PNG data\n", - "* `_repr_svg_`: return raw SVG data as a string\n", - "* `_repr_latex_`: return LaTeX commands in a string surrounded by \"$\"." - ] - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Model Citizen: pandas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A prominent example of a package that has IPython-aware rich representations of its objects is [pandas](http://pandas.pydata.org/).\n", - "\n", - "A pandas DataFrame has a rich HTML table representation,\n", - "using `_repr_html_`.\n" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import io\n", - "import pandas" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%writefile data.csv\n", - "Date,Open,High,Low,Close,Volume,Adj Close\n", - "2012-06-01,569.16,590.00,548.50,584.00,14077000,581.50\n", - "2012-05-01,584.90,596.76,522.18,577.73,18827900,575.26\n", - "2012-04-02,601.83,644.00,555.00,583.98,28759100,581.48\n", - "2012-03-01,548.17,621.45,516.22,599.55,26486000,596.99\n", - "2012-02-01,458.41,547.61,453.98,542.44,22001000,540.12\n", - "2012-01-03,409.40,458.24,409.00,456.48,12949100,454.53\n" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Writing data.csv\n" - ] - } - ], - "prompt_number": 3 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "df = pandas.read_csv(\"data.csv\")\n", - "pandas.set_option('display.notebook_repr_html', False)\n", - "df" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 4, - "text": [ - " Date Open High Low Close Volume Adj Close\n", - "0 2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50\n", - "1 2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26\n", - "2 2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48\n", - "3 2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99\n", - "4 2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12\n", - "5 2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53" - ] - } - ], - "prompt_number": 4 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "rich HTML can be activated via `pandas.set_option`." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "pandas.set_option('display.notebook_repr_html', True)\n", - "df" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "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", - "
DateOpenHighLowCloseVolumeAdj Close
0 2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50
1 2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26
2 2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48
3 2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99
4 2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12
5 2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53
\n", - "
" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 5, - "text": [ - " Date Open High Low Close Volume Adj Close\n", - "0 2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50\n", - "1 2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26\n", - "2 2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48\n", - "3 2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99\n", - "4 2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12\n", - "5 2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53" - ] - } - ], - "prompt_number": 5 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "lines = df._repr_html_().splitlines()\n", - "print \"\\n\".join(lines[:20])" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n" - ] - } - ], - "prompt_number": 6 - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Exercise" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Write a simple `Circle` Python class. Don't even worry about properties such as radius, position, colors, etc. To help you out use the following representations (remember to wrap them in Python strings):\n", - "\n", - "For HTML:\n", - "\n", - " ○\n", - "\n", - "For SVG:\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "For LaTeX (wrap with `$` and use a raw Python string):\n", - "\n", - " \\bigcirc\n", - "\n", - "After you write the class, create an instance and then use `display_html`, `display_svg` and `display_latex` to display those representations.\n", - "\n", - "Tips : you can slightly tweek the representation to know from which `_repr_*_` method it came from. \n", - "For example in my solution the svg representation is blue, and the HTML one show \"`HTML`\" between brackets." - ] - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Solution" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here is my simple `MyCircle` class:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%load soln/mycircle.py" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 8 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now create an instance and use the display methods:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "c = MyCircle()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 11 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display_html(c)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "○ (html)" - ], - "metadata": {}, - "output_type": "display_data" - } - ], - "prompt_number": 12 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display_svg(c)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "svg": [ - "\n", - " \n", - " " - ] - } - ], - "prompt_number": 13 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display_latex(c)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "$\\bigcirc \\LaTeX$" - ], - "metadata": {}, - "output_type": "display_data" - } - ], - "prompt_number": 14 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display_javascript(c)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "javascript": [ - "alert('I am a circle!');" - ], - "metadata": {}, - "output_type": "display_data" - } - ], - "prompt_number": 15 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Adding IPython display support to existing objects" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you are directly writing your own classes, you can adapt them for display in IPython by following the above example. But in practice, we often need to work with existing code we can't modify. We now illustrate how to add these kinds of extended display capabilities to existing objects. To continue with our example above, we will add a PNG representation to our `Circle` class using Matplotlib." - ] - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Model citizen: sympy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[SymPy](http://sympy.org) is another model citizen that defines rich representations of its object.\n", - "Unlike pandas above, sympy registers display formatters via IPython's display formatter API, rather than declaring `_repr_mime_` methods." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from sympy import Rational, pi, exp, I, symbols\n", - "x, y, z = symbols(\"x y z\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 16 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "r = Rational(3,2)*pi + exp(I*x) / (x**2 + y)\n", - "r" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 17, - "text": [ - "3*pi/2 + exp(I*x)/(x**2 + y)" - ] - } - ], - "prompt_number": 17 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "SymPy provides an `init_printing` function that sets up advanced $\\LaTeX$\n", - "representations of its objects." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from sympy.interactive.printing import init_printing\n", - "init_printing()\n", - "r" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "$$\\frac{3}{2} \\pi + \\frac{e^{\\mathbf{\\imath} x}}{x^{2} + y}$$" - ], - "metadata": {}, - "output_type": "pyout", - "png": "iVBORw0KGgoAAAANSUhEUgAAAFAAAAAlCAYAAADV/m7fAAAABHNCSVQICAgIfAhkiAAAA9xJREFU\naIHt2l2IVVUUwPHfzDQ4hc1UFpaVTvoiKNoHaTCmU/lQaERR9mGUZBSkUVEQvcR9CSKIoCgoom5F\nBX2T+RD6EBQVZI1BBoVSFA0JUkNiiX1MD+uc5szkOPfjnHvvyP3DwF4z96y1Zp+91l577Uubuuho\ntgMNYikG8TU+wwosxs9YjTvwWy2Kj8mMV2IeZiTGythem78txwjmYitOxHs4G7vwthonbyL7cHMy\nvga/4/g8FLcAx+FVnIVesXDeRScW1KM4uwIH8V0yHkV3PYpbjFnifzsDt2J3Il+Mg9hTq+LJcuAr\nYnk/VKviJtKJe3AIv2I2Hi3SWJZzcR8O4LGijBbM0yKynsCbOKkZTtyGzzGzAbaWGJ9K6mEh/hC5\nfD1uETmvcC7AXpFkU0dGcXUDbJfRn5Oua7EjJ10VkYbwXyLnDSfyfPyJnY10Jge+FZtCSofYNAqr\nd9PQ2YHnsBn/iEJzrditsvTiGVyBnkl0jmIVPszb2QoYEnnvLvyCY7El8akQqnkzHaLoHMKnuEpU\n9d/jbjwldr6D+Fi8iEooo5ToOaq5CZdl5NfRlYy31KG3LL8c2HCq2f1ezIxPSJ79W1T5p+Tp1HSi\n1vJhPT5JxgvFRE7FC+JQP5G5WCbCfyIbRTnV8oxO8TORnTg/Ga/BN3XYLqsshKfysSk/6QqsZjNJ\nuzZfJHKvWEU9xpcQeTOVj53YJHZeeKRAX8YZrZZ7sc1Y2A6LyVudl1M1sgbviIlbjvMaYTQ7gcvF\nIbwkJmjlJM8sxbMZeQg/qO1l5MkCXJ+M9+DMRhqfiYcz8jrRDzy9AbbL8iljZhjrX76POTnorJgl\novBNm4u9Ikmua4Dtx3FqjvouxAM56quIDhHCaaJeJCbwnEY7Uid9eLDZTsBLCmxCFsgm0UnvVt2m\ntjlPJzaKnWy63djdIC6H9olO9OIqni3l5cRaMYFEadKfl+KcGMAG0S2/EbfjLdF+q4fSJL/vElee\nz4vTEpwsczrKlh6rxP3BVpHUL8VpdTqWJ73i2FjGB7hTtO/3i4qhCK4UTZPsYroIP6YfSMN0Pr70\n/xZ+n5zuTHOgR1QKh0TJNWJ86VUps0X7LZuiVuCjjLxfXKj1JfJuMYEH8GQiT9c7I0QIpWfxviN9\nsEJKR/jbdXgjI+8Sl29o/umhGi4XJ6V+sUEMiVW0oWC7c4zdG/cn8n9XHV2HeaBVGRD16SxxXbBM\n1KmvidCqh0GRVw/HXvFNjW7xAofxcp32jjrur/Bz20St2aZCFuEnkSoG8JWxdhmmVwg3g04xefNw\nifjCwUhTPWrTpk2bFuJflVvSLV1580UAAAAASUVORK5CYII=\n", - "prompt_number": 18, - "text": [ - " \u2148\u22c5x \n", - "3\u22c5\u03c0 \u212f \n", - "\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\n", - " 2 2 \n", - " x + y" - ] - } - ], - "prompt_number": 18 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To add a display method to an existing class, we must use IPython's display formatter API. Here we show all of the available formatters:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ip = get_ipython()\n", - "for mime, formatter in ip.display_formatter.formatters.items():\n", - " print '%24s : %s' % (mime, formatter.__class__.__name__)\n" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - " text/html : HTMLFormatter\n", - " image/jpeg : JPEGFormatter\n", - " image/svg+xml : SVGFormatter\n", - " image/png : PNGFormatter\n", - " application/javascript : JavascriptFormatter\n", - " text/latex : LatexFormatter\n", - " application/json : JSONFormatter\n", - " text/plain : PlainTextFormatter\n" - ] - } - ], - "prompt_number": 6 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's grab the PNG formatter:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "png_f = ip.display_formatter.formatters['image/png']" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 20 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will use the `for_type` method to register our display function." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "png_f.for_type?" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 21 - }, + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Defining Custom Display Logic for Your Own Objects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Overview" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Python, objects can declare their textual representation using the `__repr__` method. IPython expands on this idea and allows objects to declare other, richer representations including:\n", + "\n", + "* HTML\n", + "* JSON\n", + "* PNG\n", + "* JPEG\n", + "* SVG\n", + "* LaTeX\n", + "\n", + "This Notebook shows how you can add custom display logic to your own classes, so that they can be displayed using these rich representations. There are two ways of accomplishing this:\n", + "\n", + "1. Implementing special display methods such as `_repr_html_`.\n", + "2. Registering a display function for a particular type.\n", + "\n", + "In this Notebook we show how both approaches work." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we get started, we will import the various display functions for displaying the different formats we will create." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from IPython.display import display\n", + "from IPython.display import (\n", + " display_html, display_jpeg, display_png,\n", + " display_javascript, display_svg, display_latex\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Implementing special display methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The main idea of the first approach is that you have to implement special display methods, one for each representation you want to use. Here is a list of the names of the special methods and the values they must return:\n", + "\n", + "* `_repr_html_`: return raw HTML as a string\n", + "* `_repr_json_`: return raw JSON as a string\n", + "* `_repr_jpeg_`: return raw JPEG data\n", + "* `_repr_png_`: return raw PNG data\n", + "* `_repr_svg_`: return raw SVG data as a string\n", + "* `_repr_latex_`: return LaTeX commands in a string surrounded by \"$\"." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model Citizen: pandas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A prominent example of a package that has IPython-aware rich representations of its objects is [pandas](http://pandas.pydata.org/).\n", + "\n", + "A pandas DataFrame has a rich HTML table representation,\n", + "using `_repr_html_`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import io\n", + "import pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As the docstring describes, we need to define a function the takes the object as a parameter and returns the raw PNG data." + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing data.csv\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matplotlib inline\n", - "import matplotlib.pyplot as plt" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 22 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "class AnotherCircle(object):\n", - " def __init__(self, radius=1, center=(0,0), color='r'):\n", - " self.radius = radius\n", - " self.center = center\n", - " self.color = color\n", - " \n", - " def __repr__(self):\n", - " return \"<%s Circle with r=%s at %s>\" % (\n", - " self.color,\n", - " self.radius,\n", - " self.center,\n", - " )\n", - " \n", - "c = AnotherCircle()\n", - "c" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 23, - "text": [ - "" - ] - } - ], - "prompt_number": 23 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.core.pylabtools import print_figure\n", - "\n", - "def png_circle(circle):\n", - " \"\"\"Render AnotherCircle to png data using matplotlib\"\"\"\n", - " fig, ax = plt.subplots()\n", - " patch = plt.Circle(circle.center,\n", - " radius=circle.radius,\n", - " fc=circle.color,\n", - " )\n", - " ax.add_patch(patch)\n", - " plt.axis('scaled')\n", - " data = print_figure(fig, 'png')\n", - " # We MUST close the figure, otherwise IPython's display machinery\n", - " # will pick it up and send it as output, resulting in a double display\n", - " plt.close(fig)\n", - " return data" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 24 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "c = AnotherCircle()\n", - "print repr(png_circle(c)[:10])" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "'\\x89PNG\\r\\n\\x1a\\n\\x00\\x00'\n" - ] - } - ], - "prompt_number": 27 - }, + } + ], + "source": [ + "%%writefile data.csv\n", + "Date,Open,High,Low,Close,Volume,Adj Close\n", + "2012-06-01,569.16,590.00,548.50,584.00,14077000,581.50\n", + "2012-05-01,584.90,596.76,522.18,577.73,18827900,575.26\n", + "2012-04-02,601.83,644.00,555.00,583.98,28759100,581.48\n", + "2012-03-01,548.17,621.45,516.22,599.55,26486000,596.99\n", + "2012-02-01,458.41,547.61,453.98,542.44,22001000,540.12\n", + "2012-01-03,409.40,458.24,409.00,456.48,12949100,454.53\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/plain": [ + " Date Open High Low Close Volume Adj Close\n", + "0 2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50\n", + "1 2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26\n", + "2 2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48\n", + "3 2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99\n", + "4 2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12\n", + "5 2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53" + ] + }, + "execution_count": 4, "metadata": {}, - "source": [ - "Now we register the display function for the type:" - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "df = pandas.read_csv(\"data.csv\")\n", + "pandas.set_option('display.notebook_repr_html', False)\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "rich HTML can be activated via `pandas.set_option`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "png_f.for_type(AnotherCircle, png_circle)" - ], - "language": "python", + "data": { + "text/html": [ + "
\n", + "
DateOpenHighLowCloseVolumeAdj Close
0 2012-06-01 569.16 590.00
\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", + "
DateOpenHighLowCloseVolumeAdj Close
0 2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50
1 2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26
2 2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48
3 2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99
4 2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12
5 2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53
\n", + "
" + ], + "text/plain": [ + " Date Open High Low Close Volume Adj Close\n", + "0 2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50\n", + "1 2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26\n", + "2 2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48\n", + "3 2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99\n", + "4 2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12\n", + "5 2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53" + ] + }, + "execution_count": 5, "metadata": {}, - "outputs": [], - "prompt_number": 28 - }, + "output_type": "execute_result" + } + ], + "source": [ + "pandas.set_option('display.notebook_repr_html', True)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now all `Circle` instances have PNG representations!" + "name": "stdout", + "output_type": "stream", + "text": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n" ] - }, + } + ], + "source": [ + "lines = df._repr_html_().splitlines()\n", + "print \"\\n\".join(lines[:20])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Write a simple `Circle` Python class. Don't even worry about properties such as radius, position, colors, etc. To help you out use the following representations (remember to wrap them in Python strings):\n", + "\n", + "For HTML:\n", + "\n", + " ○\n", + "\n", + "For SVG:\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "For LaTeX (wrap with `$` and use a raw Python string):\n", + "\n", + " \\bigcirc\n", + "\n", + "After you write the class, create an instance and then use `display_html`, `display_svg` and `display_latex` to display those representations.\n", + "\n", + "Tips : you can slightly tweek the representation to know from which `_repr_*_` method it came from. \n", + "For example in my solution the svg representation is blue, and the HTML one show \"`HTML`\" between brackets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is my simple `MyCircle` class:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%load soln/mycircle.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now create an instance and use the display methods:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "c = MyCircle()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "c2 = AnotherCircle(radius=2, center=(1,0), color='g')\n", - "c2" - ], - "language": "python", + "data": { + "text/html": [ + "○ (html)" + ] + }, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "png": "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\nTkSuQmCC\n", - "prompt_number": 29, - "text": [ - "" - ] - } - ], - "prompt_number": 29 - }, + "output_type": "display_data" + } + ], + "source": [ + "display_html(c)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "display_png(c2)" - ], - "language": "python", + "data": { + "image/svg+xml": [ + "\n", + " \n", + " " + ] + }, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "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\nTkSuQmCC\n" - } - ], - "prompt_number": 30 - }, + "output_type": "display_data" + } + ], + "source": [ + "display_svg(c)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "heading", - "level": 2, + "data": { + "text/latex": [ + "$\\bigcirc \\LaTeX$" + ] + }, "metadata": {}, - "source": [ - "return the object" - ] - }, + "output_type": "display_data" + } + ], + "source": [ + "display_latex(c)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "# for demonstration purpose, I do the same with a circle that has no _repr_javascript method\n", - "class MyNoJSCircle(MyCircle):\n", - " \n", - " def _repr_javascript_(self):\n", - " return\n", - "\n", - "cNoJS = MyNoJSCircle()" - ], - "language": "python", + "data": { + "application/javascript": [ + "alert('I am a circle!');" + ] + }, "metadata": {}, - "outputs": [] - }, + "output_type": "display_data" + } + ], + "source": [ + "display_javascript(c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding IPython display support to existing objects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you are directly writing your own classes, you can adapt them for display in IPython by following the above example. But in practice, we often need to work with existing code we can't modify. We now illustrate how to add these kinds of extended display capabilities to existing objects. To continue with our example above, we will add a PNG representation to our `Circle` class using Matplotlib." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model citizen: sympy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[SymPy](http://sympy.org) is another model citizen that defines rich representations of its object.\n", + "Unlike pandas above, sympy registers display formatters via IPython's display formatter API, rather than declaring `_repr_mime_` methods." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from sympy import Rational, pi, exp, I, symbols\n", + "x, y, z = symbols(\"x y z\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", + "data": { + "text/plain": [ + "3*pi/2 + exp(I*x)/(x**2 + y)" + ] + }, + "execution_count": 17, "metadata": {}, - "source": [ - "Of course you can now still return the object, and this will use compute all the representations, store them in the notebook and show you the appropriate one." - ] - }, + "output_type": "execute_result" + } + ], + "source": [ + "r = Rational(3,2)*pi + exp(I*x) / (x**2 + y)\n", + "r" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "SymPy provides an `init_printing` function that sets up advanced $\\LaTeX$\n", + "representations of its objects." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "cNoJS" - ], - "language": "python", + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAFAAAAAlCAYAAADV/m7fAAAABHNCSVQICAgIfAhkiAAAA9xJREFU\n", + "aIHt2l2IVVUUwPHfzDQ4hc1UFpaVTvoiKNoHaTCmU/lQaERR9mGUZBSkUVEQvcR9CSKIoCgoom5F\n", + "BX2T+RD6EBQVZI1BBoVSFA0JUkNiiX1MD+uc5szkOPfjnHvvyP3DwF4z96y1Zp+91l577Uubuuho\n", + "tgMNYikG8TU+wwosxs9YjTvwWy2Kj8mMV2IeZiTGythem78txwjmYitOxHs4G7vwthonbyL7cHMy\n", + "vga/4/g8FLcAx+FVnIVesXDeRScW1KM4uwIH8V0yHkV3PYpbjFnifzsDt2J3Il+Mg9hTq+LJcuAr\n", + "Ynk/VKviJtKJe3AIv2I2Hi3SWJZzcR8O4LGijBbM0yKynsCbOKkZTtyGzzGzAbaWGJ9K6mEh/hC5\n", + "fD1uETmvcC7AXpFkU0dGcXUDbJfRn5Oua7EjJ10VkYbwXyLnDSfyfPyJnY10Jge+FZtCSofYNAqr\n", + "d9PQ2YHnsBn/iEJzrditsvTiGVyBnkl0jmIVPszb2QoYEnnvLvyCY7El8akQqnkzHaLoHMKnuEpU\n", + "9d/jbjwldr6D+Fi8iEooo5ToOaq5CZdl5NfRlYy31KG3LL8c2HCq2f1ezIxPSJ79W1T5p+Tp1HSi\n", + "1vJhPT5JxgvFRE7FC+JQP5G5WCbCfyIbRTnV8oxO8TORnTg/Ga/BN3XYLqsshKfysSk/6QqsZjNJ\n", + "uzZfJHKvWEU9xpcQeTOVj53YJHZeeKRAX8YZrZZ7sc1Y2A6LyVudl1M1sgbviIlbjvMaYTQ7gcvF\n", + "IbwkJmjlJM8sxbMZeQg/qO1l5MkCXJ+M9+DMRhqfiYcz8jrRDzy9AbbL8iljZhjrX76POTnorJgl\n", + "ovBNm4u9Ikmua4Dtx3FqjvouxAM56quIDhHCaaJeJCbwnEY7Uid9eLDZTsBLCmxCFsgm0UnvVt2m\n", + "tjlPJzaKnWy63djdIC6H9olO9OIqni3l5cRaMYFEadKfl+KcGMAG0S2/EbfjLdF+q4fSJL/vElee\n", + "z4vTEpwsczrKlh6rxP3BVpHUL8VpdTqWJ73i2FjGB7hTtO/3i4qhCK4UTZPsYroIP6YfSMN0Pr70\n", + "/xZ+n5zuTHOgR1QKh0TJNWJ86VUps0X7LZuiVuCjjLxfXKj1JfJuMYEH8GQiT9c7I0QIpWfxviN9\n", + "sEJKR/jbdXgjI+8Sl29o/umhGi4XJ6V+sUEMiVW0oWC7c4zdG/cn8n9XHV2HeaBVGRD16SxxXbBM\n", + "1KmvidCqh0GRVw/HXvFNjW7xAofxcp32jjrur/Bz20St2aZCFuEnkSoG8JWxdhmmVwg3g04xefNw\n", + "ifjCwUhTPWrTpk2bFuJflVvSLV1580UAAAAASUVORK5CYII=\n" + ], + "text/latex": [ + "$$\\frac{3}{2} \\pi + \\frac{e^{\\mathbf{\\imath} x}}{x^{2} + y}$$" + ], + "text/plain": [ + " \u2148\u22c5x \n", + "3\u22c5\u03c0 \u212f \n", + "\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\n", + " 2 2 \n", + " x + y" + ] + }, + "execution_count": 18, "metadata": {}, - "outputs": [] - }, + "output_type": "execute_result" + } + ], + "source": [ + "from sympy.interactive.printing import init_printing\n", + "init_printing()\n", + "r" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To add a display method to an existing class, we must use IPython's display formatter API. Here we show all of the available formatters:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or just use `display(object)` if you are in a middle of a loop" + "name": "stdout", + "output_type": "stream", + "text": [ + " text/html : HTMLFormatter\n", + " image/jpeg : JPEGFormatter\n", + " image/svg+xml : SVGFormatter\n", + " image/png : PNGFormatter\n", + " application/javascript : JavascriptFormatter\n", + " text/latex : LatexFormatter\n", + " application/json : JSONFormatter\n", + " text/plain : PlainTextFormatter\n" ] - }, + } + ], + "source": [ + "ip = get_ipython()\n", + "for mime, formatter in ip.display_formatter.formatters.items():\n", + " print '%24s : %s' % (mime, formatter.__class__.__name__)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's grab the PNG formatter:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "png_f = ip.display_formatter.formatters['image/png']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will use the `for_type` method to register our display function." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "png_f.for_type?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the docstring describes, we need to define a function the takes the object as a parameter and returns the raw PNG data." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "for i in range(3):\n", - " display(cNoJS)" - ], - "language": "python", + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 23, "metadata": {}, - "outputs": [] - }, + "output_type": "execute_result" + } + ], + "source": [ + "class AnotherCircle(object):\n", + " def __init__(self, radius=1, center=(0,0), color='r'):\n", + " self.radius = radius\n", + " self.center = center\n", + " self.color = color\n", + " \n", + " def __repr__(self):\n", + " return \"<%s Circle with r=%s at %s>\" % (\n", + " self.color,\n", + " self.radius,\n", + " self.center,\n", + " )\n", + " \n", + "c = AnotherCircle()\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from IPython.core.pylabtools import print_figure\n", + "\n", + "def png_circle(circle):\n", + " \"\"\"Render AnotherCircle to png data using matplotlib\"\"\"\n", + " fig, ax = plt.subplots()\n", + " patch = plt.Circle(circle.center,\n", + " radius=circle.radius,\n", + " fc=circle.color,\n", + " )\n", + " ax.add_patch(patch)\n", + " plt.axis('scaled')\n", + " data = print_figure(fig, 'png')\n", + " # We MUST close the figure, otherwise IPython's display machinery\n", + " # will pick it up and send it as output, resulting in a double display\n", + " plt.close(fig)\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Advantage of using `display()` versus `display_*()` is that all representation will be stored in the notebook document and notebook file, they are then availlable for other frontends or post-processing tool like `nbconvert`." + "name": "stdout", + "output_type": "stream", + "text": [ + "'\\x89PNG\\r\\n\\x1a\\n\\x00\\x00'\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's compare `display()` vs `display_html()` for our circle in the Notebook Web-app and we'll see later the difference in nbconvert." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print \"I should see a nice html circle in web-app, but\"\n", - "print \"nothing if the format I'm viewing the notebook in\"\n", - "print \"does not support html\"\n", - "display_html(cNoJS)" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print \"Whatever the format I will see a representation\"\n", - "print \"of my circle\"\n", - "display(cNoJS)" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, + } + ], + "source": [ + "c = AnotherCircle()\n", + "print repr(png_circle(c)[:10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we register the display function for the type:" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "png_f.for_type(AnotherCircle, png_circle)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now all `Circle` instances have PNG representations!" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "print \"Same if I return the object\"\n", - "cNoJS" - ], - "language": "python", + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAY4AAAF8CAYAAADYXlxuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xlc1HXiP/DXDDAgwwwzwyngAQhoItGotR1rB5ZbqXmV\n", + "9e1a92ttaK7Z9NvWyqx2q83VvliQbrrZYamlVLqtdx5pbYUIiniAeAJyODOcg1zz+8PV1UAcmOP9\n", + "mZnX8/Ho8Yjh8/m8X34iXn6u90dmtVqtICIispFcdAAiInIvLA4iIuoWFgcREXULi4OIiLqFxUFE\n", + "RN3C4iAiom7xdcRGFi5ciOLiYvj6+kKtVuOJJ55ATExMh+VKS0uxaNEi1NXVQa1WIz09HVFRUY6I\n", + "QERELiJzxHMcOTk50Ov1kMvl2LZtG7Zt24bXXnutw3KzZs3ClClTkJKSgtzcXKxevRpvvPGGvcMT\n", + "EZELOeRU1bBhwyCXn99UbGwsTCZTh2WqqqpgsViQkpICANDr9aiurobZbHZEBCIichGHX+PYsmUL\n", + "9Hp9h8+NRiNUKtVlnwUHB8NoNDo6AhEROZFDi2PTpk0oKirCQw891Plg8o7Dtba2OjICERE5mUMu\n", + "jgPA2rVr8eOPP2LOnDkICAjo8H2tVtvhtJTZbIZOp+t0e9u2bUN7e7uj4hER0SX8/PwwYsSIHq1r\n", + "d3G0t7fjgw8+QGVlZYfSMJlMkMlk0Gg0CA8Ph1KpRF5eHlJTU5GTkwO1Wo3Q0NArbrezU15StG7d\n", + "OowZM0Z0DJu4U1bA/rxNrU0wNhlRe64WpiYTjE1GVDZW4qj5KIpNxThVdwoVDRUwNok/ZRrkF4QI\n", + "ZQR6K3sjQZuAeG08eit7Q9dLB12ADsH+wdD4a6D2V9s9ljv9HDCrc+Tm5vZ4XbuLo7q6Gps3b0Zk\n", + "ZCRmz5598fPp06dj06ZNAIBp06YBAAwGAxYvXoxly5ZBrVbDYDDYOzwRAKC5rRmVjZWobqxGlaUK\n", + "1Y3V2F+9H3vO7EGRqQjmc9K/CaO+pR715nocNR/FrtJdHb4f4BOA2OBYpISnYGjEUPQO6o3QXqEI\n", + "DwxHWGAYghRBAlKTN7K7OMLDw7Fq1apOvzdgwIDLvo6Ojsaf//xne4ckL3ehJKoaq1DRUIEiUxE2\n", + "n9iMvIo81LfUi47nNE1tTThoPIiDxoNYdei//8/5yn2RpEvCHX3vwHUR16G3sjfLhJzKYdc4iJzB\n", + "z88PjS2NKKsvw+m60yg8W4gNxzZ4fEl0R2t7Kw5UH8CB6gMXP7tQJnf2uxPDew9HH1UfRAVFQder\n", + "82uKRN3B4iDJuVAUpXWlOBh8EAuyFyCvMg9t1jbR0dxGZ2XST90P9yXchxt63wBlrBJGi5FFQj3C\n", + "4nCAxMRE0RFsJtWs5fXlOFF7Avur9mP14dXIrchlUTjYidoTeGfPOxe/jt0Ti/EJ43FT9E3oH9wf\n", + "fVR94OfjJzBh56T6M9sZd8pqD4dMOeIMW7dudZu7qqj7WttacaruFI7XHMf2U9ux8uBKVFmqRMfy\n", + "WgE+ARgVOwoTEicgXhOPvuq+vD7i4XJzc5GWltajdXnEQS5jabXgeM1xFJuKkX0kGxuPbURTW5Po\n", + "WITzF96/Lv4aXxd/DRlk0Efo8ejgRzE4dDDiguOg7aUVHZEkhMVBTtXa3ooTtSdw+OxhfHLgE2w+\n", + "sRntVj7YKWVWWLGnYg/2VOwBAAzUDUR6ajqui7gOcZo4BPoFCk5IorE4yClO155GsbkYXxV9hc8P\n", + "fc4jCzd2yHgIM7+dCRlkuCXmFvxuyO8wKGQQYoNjJXlNhJyPxUEOY24y44jxCLae3Ip/7PuHJJ7G\n", + "JsexworvTn+H705/Bz+5H+4bcB8mD5qMQbpBiFLxvTrehMVBdjtecxz7q/Zj4Z6FyK3o+TQG5D5a\n", + "2luw+shqrD6yGhGBEZg1fBZuib4F8Zp4+Pv6i45HTsbioB5paG5AsbkYW45vQebeTNScqxEdiQSp\n", + "aKzAn3b8CT4yH0xKmoSHr3kYA3UDERrY+Tx05P5YHNQtZxrOoLC6EEvzl2LD8Q2i45CEtFnbsOrQ\n", + "Kqw6tAoJmgQYrjdgaMRQxGniIJPJRMcjB2JxkE1O151GTnkOXvv+NRyvPS46DklckbkIT216CkF+\n", + "QTAMN2BU7CgkaBPgI/cRHY0cgMVBXTpmPobdpbvx+g+vo6KxQnQccjP1LfV49ftX8eaPb2Ja6jSM\n", + "TxyPJG0SFL4K0dHIDiwO6qDd2o5iUzG+PfEt/vrjX1HbXCs6Erm55rZmZOzJwDu57+CxwY/h0cGP\n", + "IkmXxGdC3BSLgy6yWq04YjqCtUVrkbEnA5ZWi+hI5GHare34sOBDfFjwIe4bcB+m66djcMhg9PLr\n", + "JToadQOLgwAAJeYSbDy2Ea//8DoaWxtFxyEvcGGKk4cHPYwnU5/EQN1APlDoJlgcXu503WnsPLUT\n", + "c3bNganJJDoOeaFPD36KlYdW4mn905g8cDKSdEm8C0vi5KIDkBiVDZVYV7wOd39xN57e8jRLg4Rq\n", + "s7Zh4Z6FuGPlHcjMzUSJuUR0JOoCi8PL1DfXY+epnRj/1Xg8/q/HUVpfKjoS0UVNbU2Yu3su7lh5\n", + "B5YfWI4z9WdER6JO8FSVl7BarSg8W4h3ct7BF0e+EB2HqEu1zbX4w9Y/IEmXhPm3zUdqeCqUCqXo\n", + "WPQfPOLwAqV1pViybwnuXHUnS4PcymHjYYzJHoPZO2fj0NlDkOh757wOi8OD1TXXYfvJ7RibPRZ/\n", + "2vEnTm1Obmt54XKMXDUSHxV8hPL6ctFxvB6Lw0MVVhfi2W+fxYSvJuBYzTHRcYjs1tjaiGe3PYtx\n", + "X47D7tO70djC28ZFYXF4GKPFiFUHV+Guz+/CmiNrRMchcrgiUxHGZI/BG/9+A8drjouO45VYHB6k\n", + "sLoQT216Cumb0/kQH3m89/a+hzFrxmDnqZ08+nAxFocHuPQoY8uJLaLjELlMaX0pxn05jkcfLsbi\n", + "cHM8yiDi0YersTjcVM25Gqw5vIZHGUT/ceHo468//hWnak+JjuPRWBxu6HjNccz5bg6e2PgEjzKI\n", + "fiEzNxOT105GfmU+n/twEhaHG2lrb0POmRxM+GoClhcuFx2HSLIOGQ/h7i/uxpoja1BzrkZ0HI/D\n", + "4nATxiYjPi38FPesvocXAYls0NTWhCc3PomXd73M/2ccjMXhBkrMJXhu23N45ttn0NreKjoOkVv5\n", + "5MAnmPDVBOScyUFbe5voOB6BxSFh7dZ2/Fz+M8auGYuvir4SHYfIbR2vOY57V9+LVYdWoaaJp67s\n", + "xeKQqIbmBnxd9DVGrxmNsoYy0XGI3F5Lewue3vI03vrxLc53ZSeHTKteW1uLF198Ec8//zxiYmI6\n", + "XSYrKwv5+flQKv87NbLBYLji8t6ssrESH+z7APN+mic6CpHHWZy/GAVnC/D27W9jgHaA6Dhuye7i\n", + "WLt2LdatW4f6+voul5PJZJg4cSJGjRpl75Ae7XjNcbz03Uv4V8m/REch8li7Tu/CuOxx+Ojej6CP\n", + "0PNVtd1k96mqsWPHYsmSJdDpdFddlvdUd21/1X7c/9X9LA0iFyhrKMOYNWOwvmQ9LK0W0XHcikuv\n", + "cWRnZ2PmzJl45ZVXUFBQ4MqhJa2lrQXbTm7D6DWjcbTmqOg4RF6jqa0Jj3zzCJbkL8FZy1nRcdyG\n", + "y14dO3XqVCgUCgBAQUEBFixYgKysLAQGBroqgiQ1tjTim5JvkL4pHe3WdtFxiLzSK7tfwTHzMfzx\n", + "V39Eb2Vv0XEkz2VHHBdKAwCSk5Oh0WhQWVnpquElqaapBh8XfIzfb/w9S4NIsI8OfATDtwbOc2UD\n", + "hxbHpdcwTCYTzGbzxa9zc3PR3n7+l2NhYSEsFguioqIcObxbqW6sxsLchXjhuxdERyGi/9hwbAP+\n", + "d/3/4qiJp4y7Yvepqg0bNmDHjh0wm83IyMhAXFwcpk+fjhUrVgAApk2bBgDYvn07li5dCoVCAZVK\n", + "BYPBcNlRiDcpry/H6z+8js8OfiY6ChH9Qk5FDh5c+yA+Hv0xBoUMEh1HkmRWid7qtHXrVuj1etEx\n", + "HO5k7UkYthmw9cRW0VGIqAthvcKwcuxKXBdxnegoTpGbm4u0tLQercsnx13oqOkofvuv37I0iNxA\n", + "laUK92Xfh+9Lv+ejBL/A4nCRYlMxHvnmEeRV5omOQkQ2qm+px6SvJmF36W6WxyVYHC5QZCzCw/98\n", + "GIeNh0VHIaJuamprwv1f34+dp3fy7sf/YHE4WZGxCP+z7n9QZCoSHYWIeuhc2zlMXjsZO07t4JEH\n", + "WBxOdaE0+DQ4kftrbmvGQ+sews7TO72+PFgcTlJsKsaj/3qUpUHkQZrbmvHg2gex6/Qury4PFocT\n", + "lJhL8Pg3j+OI8YjoKETkYBdOW/1Q9oPoKMKwOBzsZO1JpG9Kx0HjQdFRiMhJmtqa8NC6h5BX4Z13\n", + "SbI4HOhM/Rm8uPNF/HzmZ9FRiMjJ6prrMHntZBw8631/SWRxOMhZy1nM+2kevin5RnQUInKRKksV\n", + "HvvnY143txWLwwFqz9ViSf4SfFjwoegoRORiR2uOIn1TOk7WnhQdxWVYHHZqam3C6sOr+X5wIi+W\n", + "U5GDP+34E8obykVHcQkWhx3a2tuw4dgGPLf9OdFRiEiwDcc2YN6/53nFmwRZHHb4sfxHPLnxSdEx\n", + "iEgiPjrwET4t/NTj32HO4uihg2cP4tFvHkVre6voKEQkIa/sfgXbTmzz6AcEWRw9cKr2FJ7a+BRM\n", + "TSbRUYhIgqZumIq9FXtFx3AaFkc3nbWcxes/vI791ftFRyEiiWpqa8Jj3zyGYlOx6ChOweLohqbW\n", + "Jqw4uAKfH/5cdBQikriyhjI8u+1ZlNd73p1WLI5u2H5yO17e9bLoGETkJnad3oV397yLmqYa0VEc\n", + "isVho/zKfPzvhv8VHYOI3Mzi/MX4Z8k/0dbeJjqKw7A4bHCy9iSe3PCkx99iR0TO8ey3z2Jvpedc\n", + "LGdxXEVdcx0yczNRZOYb/IioZ1raW/DkxidxvOa46CgOweK4im9PfIul+5aKjkFEbu54zXG8/fPb\n", + "qDnn/tc7WBxd2F+1H9M3Txcdg4g8xPLC5dh0fJPbPxzI4riC0rpSzNg8A42tjaKjEJEH+cOWPyC/\n", + "Kl90DLuwODrR0NyAJflLsK96n+goRORhzrWdQ/qmdJyqPSU6So+xODrxQ9kPeCf3HdExiMhDHTYe\n", + "xt/z/47GFvc8o8Hi+IViUzHSN6eLjkFEHu69ve8h50yO6Bg9wuK4RH1zPd7d865XzKdPROKlb0p3\n", + "y1t0WRyX+KH0B3xS+InoGETkJcobyrEkf4nbnbJicfzHUdNRTNsyTXQMIvIyi/IWud0pKxYHzj8d\n", + "/s6ed3iKioiEcLdTViwO8BQVEYnlbqesvL44SswlmL6FT4cTkViL8hYhtyJXdAybOKQ4amtrMWPG\n", + "DJw+ffqKy5SWluKll17CzJkzMWfOHJSVlTliaLs0tzbjs8LPeIqKiCTB8K0BZfXifzdejd3FsXbt\n", + "WhgMBlRXV3e53Pz58/HAAw9g4cKFGD9+PDIzM+0d2m4F1QXI2JMhOgYREQCgyFyEjcc2Sn4uK7uL\n", + "Y+zYsViyZAl0Ot0Vl6mqqoLFYkFKSgoAQK/Xo7q6Gmaz2d7he+ys5Szm7p6Ldmu7sAxERL8057s5\n", + "OGQ8JDpGl1xyjcNoNEKlUl32WXBwMIxGoyuG79Tu0t3YXbpb2PhERJ1pbG1EVm4WGpobREe5Ipdd\n", + "HJfLOw7V2trqquEvU2IugWGbQcjYRERX89nBzyT9xkCXFIdWq+1wWspsNnd5estZWtpasPLgSl4Q\n", + "JyJJM2wzoLy+XHSMTjm0OC69oGMymS6WRXh4OJRKJfLy8gAAOTk5UKvVCA0NdeTwNimoLsDbOW+7\n", + "fFwiou4oMhVhy/EtomN0ytfeDWzYsAE7duyA2WxGRkYG4uLiMH36dKxYsQIAMG3a+Wk8DAYDFi9e\n", + "jGXLlkGtVsNgcP2porrmOmTkZPCCOBG5hTm75uCm6JsQr40XHeUyMqtE7/vaunUr9Hq9Q7f5Q+kP\n", + "uHfNvQ7dJhGRM829aS5mDJ0BucyxVxZyc3ORlpbWo3W95slxU5MJf/nhL6JjEBF1y1s/voXDZw+L\n", + "jnEZrymOvRV78UPZD6JjEBF1S1NbE1YeWomWthbRUS7yiuKoaKjAS9+9JDoGEVGPvLf3PRw8e1B0\n", + "jIu8ojh+LP9R8k9iEhFdSZu1De/nvw9Li0V0FABeUByn607jhZ0viI5BRGSXzw5+hgNnD4iOAcAL\n", + "iuPfZf92i9kmiYiu5t0970piKhKPLo7y+nK8uvtV0TGIiBxi3dF1OGwUf4eVRxfH3oq9KK0vFR2D\n", + "iMhhPj7wMc61nhOawWOLo7qxms9tEJHHWV64HEdMR4Rm8Nji2Fe1j3dSEZHHabe2Y82RNWhtFzO7\n", + "OOChxWFuMmPeT/NExyAicorFeYtRZCoSNr5HFkfh2UL8VP6T6BhERE7R3NaMDSUbhL1i1uOKo6G5\n", + "AVm5WaJjEBE51ds5b+Oo+aiQsT2uOIpMRVh/bL3oGERETtXQ0oCcMzlCxva44th8fLPoCERELrHg\n", + "pwWoaqxy+bgeVRzHa44jc2+m6BhERC5xtOYoDp11/d2jHlUc+yr3oa65TnQMIiKXWV643OUPBHpM\n", + "cZiaTMjYkyE6BhGRS2UfyUaxudilY3pMcRw2HkZeZZ7oGERELtVmbcOu07tcOqZHFEdreyuyj2SL\n", + "jkFEJMT/5fwfTteddtl4HlEcx8zH8PGBj0XHICISorKx0qUXyT2iOArPFqK5rVl0DCIiYVYeWonm\n", + "Vtf8HnT74mhsacQH+z8QHYOISKh1xetwrPaYS8Zy++I4aj7q8gtDRERS09Le4rLTVW5fHHkVebBC\n", + "zERfRERSsnTfUtQ31zt9HLcuDqPFiPf2vic6BhGRJOwu3Y1jNc4/XeXWxVFiLsFhk/j37xIRScXe\n", + "ir1OH8Oti2NXKa9tEBFd6r2978FoMTp1DLctjoqGCizJXyI6BhGRpBwxHUFJTYlTx3Db4jhZexLl\n", + "DeWiYxARSc6B6gNO3b7bFse+qn2iIxARSdLHBR+j7pzzZgp3y+KoPVfLKUaIiK5gb+VenKo75bTt\n", + "u2VxnKw9if1V+0XHICKSrCJTkdO27ZbF4cwdQkTkCdYcWeO0uavcrjia25rxxeEvRMcgIpK0zcc3\n", + "O+10la8jNlJaWopFixahrq4OarUa6enpiIqK6rBcVlYW8vPzoVQqL35mMBgQExNj81inak/h25Pf\n", + "OiI2EZHHOtd2DidqTyBeG+/wbTukOObPn48pU6YgJSUFubm5yMzMxBtvvNFhOZlMhokTJ2LUqFE9\n", + "Hut47XFOoU5EZIOdp3fijn53OHy7dp+qqqqqgsViQUpKCgBAr9ejuroaZrO50+WtVvsmJHTF4/RE\n", + "RJ7g66KvcdZy1uHbtfuIw2g0QqVSXfZZcHAwjEYjNBpNh+Wzs7Oxfv16aLVaTJo0CcnJyTaPVXOu\n", + "Bl8e+dLeyEREXuFE7QmU15cjpFeIQ7frkFNVcnnHA5fW1tYOn02dOhUKhQIAUFBQgAULFiArKwuB\n", + "gYE2jVNeX46DxoP2hSUi8iKn604jOcz2v6Dbwu5TVVqttsNpKbPZDJ1O12HZC6UBAMnJydBoNKis\n", + "rLR5LFe+jJ2IyBN8X/q9w7dpd3GEh4dDqVQiLy8PAJCTkwO1Wo3Q0FCYTKbLSiU3Nxft7e0AgMLC\n", + "Qlgslk7vvrqS3Ipce+MSEXmVr4u/xtlGx17ncMipKoPBgMWLF2PZsmVQq9UwGAwAgBUrVgAApk2b\n", + "BgDYvn07li5dCoVCAZVKBYPBcNlRSFdqmmrwZRGvbxARdcepulMoayhDSKDjrnPIrPbe5uQkW7du\n", + "hV6vv/j1wbMHcfOnNwtMRETknj4d/Snujrv7ss9yc3ORlpbWo+25zZPjpXWloiMQEbmlH0p/cOj2\n", + "3KY4SszOfTEJEZGn2npiK+qaHTfNulsUR2tbKzaf2Cw6BhGRWzpiOoKqxiqHbc8tiqOysRI5Z3JE\n", + "xyAicktt1jZUNFY4bHtuURxVlirUnKsRHYOIyG1VNtj+zNzVuEVxVDY67g9MROSNfj7zs8O25RbF\n", + "ccx8THQEIiK3tu3kNoddIJd8cbS2tWLLiS2iYxARubUjRsddIJd8cVRZqnhhnIjITm3WNoed9pd8\n", + "cZiaTDCf6/zdHkREZDtHvZtD8sVhbDKKjkBE5BFK6x0zA4fki8PUZBIdgYjII+SUO+a0v+SLg+/g\n", + "ICJyjP3V+x3yTJzki4MXxomIHONYzTHUNHl4cZibzNhftV90DCIij9Dc1gzTOftP/0u6OGrO1eBE\n", + "7QnRMYiIPIYjrhtLujjM58xoaW8RHYOIyGN4fHFwYkMiIsc6WXfS7m1Iujgc+eIRIiICjpqO2r0N\n", + "SRdHfUu96AhERB7lqPkoWtta7dqGpIujrK5MdAQiIo9S3lCO2uZau7Yh6eI4arb/kIqIiP6roqEC\n", + "ja2Ndm1D0sVRbCoWHYGIyKNYWi1obPHg4jjTeEZ0BCIij2Pv9WNJF0dFg+Nerk5EROc1NDfYtb6k\n", + "i+Nc2znREYiIPE5DiwcXBxEROZ69fylncRAReZnmtma71mdxEBF5maa2JrvWZ3EQEXkZc5PZrvVZ\n", + "HEREXsbYZLRrfRYHEZGXsXdqdRYHEZGXOWs5a9f6LA4iIi9ztsm+4vB1RIjS0lIsWrQIdXV1UKvV\n", + "SE9PR1RUVI+XIyIi5znXKoHnOObPn48HHngACxcuxPjx45GZmWnXckRE5Dzt1na71re7OKqqqmCx\n", + "WJCSkgIA0Ov1qK6uhtls7tFyRETkXG3WNrvWt7s4jEYjVCrVZZ8FBwfDaDT2aDkiInIu4UccACCX\n", + "d9xMa2vHVxPauhwRETmPFVa71re7OLRabYfTTWazGTqdrkfLERGRc8ll9v3qt7s4wsPDoVQqkZeX\n", + "BwDIycmBWq1GaGgoTCbTxbLoajkiInIde4vDIbfjGgwGLF68GMuWLYNarYbBYAAArFixAgAwbdq0\n", + "LpcjIiLXkdt5zCCzWq32nexykq1bt2LkrpGiYxAReRx9hB7zEuYhLS2tR+vzyXEiIi+j9FPatT6L\n", + "g4jIy4QEhNi1PouDiMjLhPRicRARUTfoAux7DILFQUTkZYIDgu1an8VBRORlgv1ZHERE1A0BPgF2\n", + "rc/iICLyMn4+fnatz+IgIvIyHn3EoVKorr4QERF1S5AiyK71JV0cEYERoiMQEXkcj35yPCqI7yMn\n", + "InI0jz7iSNQmio5ARORR1Ao1evn2smsbki6OOE2c6AhERB6ld1Bvzz5VFRYYJjoCEZFHiQqKglqh\n", + "tmsbki4Oe8/DERHR5RK0CZDJZHZtQ9rF4cfiICJypHhNvN3bkHRxaAO0oiMQEXmUSGWk3duQdHEE\n", + "+wfbfRGHiIj+y94p1QGJF4c2QMs7q4iIHMgRZ3IkXRyBfoHQh+tFxyAi8ggqhcruKdUBiRcHAKRG\n", + "pIqOQETkEeI18Z5/xAEA4YHhoiMQEXkEfYQegX6Bdm9H8sXhiAs5REQEpIY75gwOi4OIyEs4ajYO\n", + "yReHNkCL6KBo0TGIiNye1xRHaGAoboq+SXQMIiK3FugbiLBeXlIcAHBrn1tFRyAicmspYSnec8QB\n", + "gKeqiIjsNLL/SAT42veu8QvcojgilHyFLBGRPQaFDHLYttyiOEJ7hfKog4jIDo78C7h7FAcvkBMR\n", + "9ZgjL4wDblIcAC+QExH1lCMvjANuVBx9VH1ERyAickuj4kY57MI4APjas3JpaSkWLVqEuro6qNVq\n", + "pKenIyoqqtNls7KykJ+fD6Xyv+/XMBgMiImJsWmsaFU0/OR+aGlvsScyEZHXGRI6xKHbs6s45s+f\n", + "jylTpiAlJQW5ubnIzMzEG2+80emyMpkMEydOxKhRo3o0VlRQFIZHDsf3Zd/bE5mIyKvIZXLEqGz7\n", + "C7rN2+zpilVVVbBYLEhJSQEA6PV6VFdXw2w2X3Edq9Xa0+EQ4BuAcYnjerw+EZE3Sg5NRlRQ52eC\n", + "eqrHRxxGoxEqleqyz4KDg2E0GqHRaDpdJzs7G+vXr4dWq8WkSZOQnJzcrTEH6gb2NC4RkVeamDgR\n", + "QYogh26zy+LIyMhASUlJh89DQkLw0EMPQS7veMDS2tra6bamTp0KhUIBACgoKMCCBQuQlZWFwEDb\n", + "54aPCoqCwkeB5rZmm9chIvJmyWHd+wu6LbosjmeeeeaK36usrOxwWspsNkOn63wa9AulAQDJycnQ\n", + "aDSorKxE//79bQ4bFRSF6yOvx67SXTavQ0TkreQyOWKCHHt9A7DjGkd4eDiUSiXy8vIAADk5OVCr\n", + "1QgNDQUAmEymy4olNzcX7e3tAIDCwkJYLJYr3oF1JQG+ARifOL6nkYmIvMq1Ydc6/PoGYOddVQaD\n", + "AYsXL8ayZcugVqthMBgufm/FihUAgGnTpgEAtm/fjqVLl0KhUEClUsFgMFx2FGKrRF2iPZGJiLzG\n", + "xKSJUCqUV1+wm+wqjujoaPz5z3/u9HsXCuOCZ5991p6hLuqn7odg/2DUnKtxyPaIiDyVo14V+0tu\n", + "8+T4BdFB0ZiYOFF0DCIiSdMF6NBP3c8p23a74pDJZBgV27OHCImIvMX9SfcjWuWcWcXdrjgAIDY4\n", + "Fn5yP9ExiIgka2T/kU7btlsWRx91H9ze93bRMYiIJEnho0D/4P5O275bFoe/jz/uT7pfdAwiIkka\n", + "2W8k+gQ5b0ZxtywOgLflEhFdyf1J90Ph2/3HHWzltsXRV90XKWEpomMQEUmKDDIkaBOcOobbFkew\n", + "fzCevPZJ0TGIiCTltr63OfX6BuDGxQGcf7hFBpnoGEREkjEleQoC/WyfPLYn3Lo4+gf3xx197xAd\n", + "g4hIEvx9/JEUkuT0cdy6OAL9AvF48uOiYxARScL4hPGIVcc6fRy3Lg4AGBgyEP4+/qJjEBEJNylp\n", + "Enx97JqC0CZuXxz9g/tjUuIk0TGIiIQK9g/GAO0Al4zl9sXhK/fFhKQJomMQEQk1JXkK+qr7umQs\n", + "ty8OAEjQJCCkV4joGEREwtwVe5fLxvKI4ohRx2DW0FmiYxARCTEkdAgSta6bTcMjigMARvQZAbnM\n", + "Y/44RESFVaFVAAAXf0lEQVQ2mzVsFnS9dC4bz2N+0w7QDsDYAWNFxyAicimVQoWUcNdOv+QxxRHg\n", + "G8BnOojI60xLnYbYYOc/u3EpjykOABikG4T+6v6iYxARucxdsXdBJnPt1EseVRzhynA8d/1zomMQ\n", + "EbnEHX3vEPKKCY8qDgAYFjmMT5ITkVf4fervofRTunxcjyuOeE08fn/t70XHICJyquigaCSHJgsZ\n", + "2+OKw0fugwlJE3hrLhF5tJdvfhm9g3oLGdsjf7smaZPw8DUPi45BROQUIb1CcEPvG4SN75HF4e/r\n", + "j8cGPyY6BhGRU7x444sum5eqMx5ZHAAwUDcQo+NGi45BRORQKoUKv475tdAMHlscSoUS6fp00TGI\n", + "iBzqueHPIV4TLzSDxxYHAFwTcg1ujrpZdAwiIofw9/HHnbF3io7h2cUR7B+M527gA4FE5BmmXzcd\n", + "CZoE0TE8uzgAICUsBTdH86iDiNxbgE8AJiVNgo/cR3QUzy8ObYAWL9z4gugYRER2mf2r2UjSJYmO\n", + "AcALigM4/5KTMQPGiI5BRNQjaoUa98bf6/LJDK/EK4ojSBGEmUNnQgZp7HQiou547ZbXEKeJEx3j\n", + "IruLo7a2FjNmzMDp06e7XK60tBQvvfQSZs6ciTlz5qCsrMzeobvlmpBr8Lshv3PpmERE9opURuL2\n", + "vreLjnEZu4pj7dq1MBgMqK6uvuqy8+fPxwMPPICFCxdi/PjxyMzMtGfobgvwDcDjQx6Hn9zPpeMS\n", + "EdnjjV+/gT7qPqJjXMau4hg7diyWLFkCna7rd91WVVXBYrEgJeX86w31ej2qq6thNpvtGb7bBuoG\n", + "YtawWS4dk4iopwZoBuBX0b8SHaMDl1zjMBqNUKlUl30WHBwMo9HoiuEv8pX7YlLSJAT7B7t0XCKi\n", + "nnjr1rcQqYwUHaMD366+mZGRgZKSkg6fh4SEYO7cud0aSC7v2FGtra3d2oYjDNAOwFu3voWnNj3l\n", + "8rGJiGw1dsBYDI0cKjpGp7osjmeeecYhg2i12g6npcxm81VPcTnLbX1vw3Xh12Fv5V4h4xMRdUXh\n", + "o8Bzw5+D2l8tOkqnHHaqymq1Xva1yWS6WBbh4eFQKpXIy8sDAOTk5ECtViM0NNRRw3dLeGA43rz1\n", + "TSFjExFdzcs3vYxrQq8RHeOK7CqODRs2YPbs2TCbzcjIyEBWVtbF761YsQKfffbZxa8NBgPWrFmD\n", + "mTNn4uuvv4bBYLBnaLulhKXwFbNEJDl9VH0wJn6MpN9iKrP+8lBBIrZu3Qq9Xu/UMYpMRRi5aiTq\n", + "muucOg4Rka2+uO8LpPVLc/o4ubm5SEvr2TjSrTQXSNAm4K1b3xIdg4gIADA6fjSGRw4XHeOqvLo4\n", + "AOCOvndgWMQw0TGIyMsF+ATgj9f/UbIXxC/l9cURrgzH327/G58oJyKh/nbb3zA4dLDoGDbx+uIA\n", + "gOTQZPzl138RHYOIvNSImBEYFTtKMrPfXg2LA4CP3Of8wzYR0nzYhog8V4BPAP7y678gNFDM4wk9\n", + "weL4jwhlBObfPp+nrIjIpdzpFNUFLI5LJIcm4/Vfvy46BhF5iVv73OpWp6guYHFcwkfugzEDxvAu\n", + "KyJyugCfAPz5lj+71SmqC1gcvxChjMDfbv8bAnwCREchIg/29h1vu90pqgtYHJ1ICUvBOyPfER2D\n", + "iDzUA0kPuOUpqgtYHJ2QyWS4q/9deGzwY6KjEJGHiQ6KxvM3PA9tgFZ0lB5jcVyB2l+NWcNmITY4\n", + "VnQUIvIQPjIf/OPufyBW496/V1gcXegX3A/vj3qft+gSkUO8detb0Ec4d/JWV2BxXEVqeCrevv1t\n", + "0TGIyM2NjhuN+xLug6+8y/fnuQUWx1X4yH1wT9w9mJgwUXQUInJT4YHhePnmlxHSK0R0FIdgcdhA\n", + "20uLF258AXHBcaKjEJGb8ZX74sO7P8QA7QDRURyGxWGjWE0sPrjnAwT5BYmOQkRuJGtkFob3lv47\n", + "NrqDxdENKWEpWHbPMsjgnvdeE5FrzRo2C3fH3Q0fuY/oKA7F4uimX0f/mm8NJKKrSuuXhievfRJB\n", + "Cs87S8Hi6CaFrwITkybi8cGPi45CRBLVT90P826dhwhlhOgoTsHi6AFtgBbPXf8cJ0Mkog6Ufkp8\n", + "dM9Hbv+QX1dYHD0UrYpG5p2ZCOsVJjoKEUmEDDIsu3sZUsJTREdxKhaHHRJ1iVg5diVUCpXoKEQk\n", + "AZl3ZmJEzAjRMZyOxWGn6yKuw2ejP4PCRyE6ChEJ9MrNr2Bs/FgofD3/dwGLwwFujL4RH979IW/T\n", + "JfJS01Kn4bHBj0GpUIqO4hIsDgeQy+RI65eGrDuzREchIhe7P+l+zBw2E5oAjegoLsPicBA/Hz+M\n", + "iR+D1255TXQUInKRETEj8PJNLyMs0LtukmFxOJBSocQjgx/B09c9LToKETnZ4JDByEjLQLQqWnQU\n", + "l2NxOJjGX4MZ+hl8QJDIgw3QDMCye5ahf3B/0VGEYHE4QZgyDH/61Z/w8DUPi45CRA4WGxyLT0d/\n", + "6lGz3XYXi8NJIpQReOnGlzB54GTRUYjIQfqq+2LFmBVI0CWIjiIUi8OJIpQRmHvTXJYHkQfop+6H\n", + "VWNXIVGXKDqKcCwOJ4sMisQrN7/C01ZEbiwuOA6rxq5Cki5JdBRJYHG4wIXTVrxgTuR+EjQJWDF2\n", + "BY80LmH3W9Nra2vx4osv4vnnn0dMTMwVl8vKykJ+fj6Uyv8+WWkwGLpcx5NEKCPwwq9egEqhQube\n", + "TNFxiMgGqeGpeH/U+159IbwzdhXH2rVrsW7dOtTX1191WZlMhokTJ2LUqFH2DOnWwpRhePb6Z8+/\n", + "uH73y6LjEFEX7ux3J/52+9/QV91XdBTJsetU1dixY7FkyRLodDqblrdarfYM5xE0/hpMGTIF7935\n", + "Hue2IpKoh695GBlpGSyNK7D7VFV3ZGdnY/369dBqtZg0aRKSk5NdObxkKBVKTEycCI2/Br9d/1s0\n", + "tzWLjkRE/zFr2Cykp6YjNDBUdBTJ6rI4MjIyUFJS0uHzkJAQzJ07t1sDTZ06FQrF+emGCwoKsGDB\n", + "AmRlZSEwMLBb2/EUfj5+uCv2LmSPy8aDax9EfcvVT/cRkXO9OeJNPDjwQQQHBIuOImldFsczzzzj\n", + "sIEulAYAJCcnQ6PRoLKyEv3793fYGO5GLpPjpuibsHbCWkxeOxlVlirRkYi8klwmx6K7FuHeuHsR\n", + "6Oedf5ntDofdjvvL6xcmkwlms/ni17m5uWhvbwcAFBYWwmKxICoqylHDu7XUiFSsm7gOQyOGio5C\n", + "5HXUCjW+HPclxg0Yx9KwkV3XODZs2IAdO3bAbDYjIyMDcXFxmD59OgBgxYoVAIBp06YBALZv346l\n", + "S5dCoVBApVLBYDBcdhTi7RJ1iVh2zzIs+GkBPjrwkeg4RF4hSZeEpb9ZisGhg0VHcSsyq0Rvddq6\n", + "dSv0er3oGC5najJhzeE1eH7H87BCkv9piDzCuAHjMPfmuegX3E90FCFyc3ORlpbWo3X55LjEaAO0\n", + "eGzwY/j8vs8R5BckOg6RR5pz4xzMu22e15aGvVgcEqTwVSCtXxr+OemfiA2OFR2HyGP4+/jjk3s/\n", + "we9Tf8/bbe3A4pCwlLAUrL5vNSYkTBAdhcjtxQbH4ptJ3+CeuHt4EdxOLA6Ji9XEYt7t8/Bu2rvw\n", + "k/uJjkPklh4f/Diyx2VDH6GHTMYZG+zl0ifHqWd0ATo8OOhBDAwZiCc2PoHjNcdFRyJyCwE+AXh3\n", + "5Lu4s/+dUPurRcfxGDzicBM+ch8MjRyK7HHZeHTwo6LjEEneQN1ArL9/PSYkTmBpOBiLw830D+6P\n", + "1255De+Peh/+Pv6i4xBJ0lPXPoVVY1fh2vBreWrKCXiqyg0F+wdjYuJEJGgT8Ny257CnYo/oSESS\n", + "oPHX4L0738MtMbcgSMHb2Z2FRxxuSiaT4drwa/HJvZ/grVvf4oVz8noPDnwQGx/YiN/E/Yal4WQs\n", + "DjcXGRSJ3w35HTbevxH6CO970p5I46/B8tHL8ddb/4oEbYLoOF6BxeEBfOQ+SI1IxfJ7l/Pog7zK\n", + "5IGTsfH+jbgn7h5eAHchFocH4dEHeQuNvwafjv4Ub936FhJ0PMpwNRaHh7lw9PHp6E+RdWcWVAqV\n", + "6EhEDiODDDP0M7DpgU24O+5uHmUIwruqPFSEMgIPDXoIQyOGYtn+Zfh7/t9FRyKyy/DI4Xh9xOtI\n", + "Dk1GgG+A6DhejUccHi5Rl4iXb34Z6yetR2pYqug4RN2mDdDiH7/5Bz4d/SmGRQ5jaUgAi8ML9PLt\n", + "hRuibsDKsSux+K7FUCt4eE/SJ5fJMXPoTGx6YBPGJ47nbLYSwlNVXiRcGY4HBj6A68KvwxeHv0DG\n", + "ngy0treKjkXUwV3978L/u/7/ITk0Gf6+nCFBanjE4YUSdAn44w1/xLeTv8XvhvwOMnBKBpKG4ZHD\n", + "sXbCWrw/6n0MjRzK0pAoFoeX8pX7IjksGX/59V+w+YHNGBM/RnQk8mIDNAPw+djP8dmYz3BLzC28\n", + "W0riWBxeLsA3APpIPTLvzMQ3E7/BjVE3io5EXiQiMAL/+M0/sHbiWozsPxIhvUJERyIb8BoHAQBU\n", + "ChVujL4Ry0cvR35lPub/NB/fl30vOhZ5qN7K3phz0xzcFH0T+qr7io5D3cTioMtoA7S4re9tSA1P\n", + "xcGzB5G1Nwv/KvmX6FjkIQZoBmDOTXOgj9AjWhUtOg71EIuDOqUJ0ODG6BuREpaCg8aD+LjgY3x2\n", + "8DO0W9tFRyM3dF34dZj9q9lICUtBuDJcdByyE4uDuqRUKDEschiGhA7B1JSpWH14NZbsW4JzbedE\n", + "RyM3kNY3DX8Y9gcMDhkMXS+d6DjkICwOsom/rz9SwlNwTeg1eGTwI8g5k4N5P83DydqToqORxAT5\n", + "BeGp1Kfwm7jfIFGbyHdjeCAWB3WLr9wXibpEJOoSkdYvDYeMh7Bs3zKsO7oOVlhFxyOBrgm5Bobh\n", + "Blwbfi1ig2P5ylYPxuKgHotQRiBCGYHre18Pg8mAHSd3IGNPBoxNRtHRyEX85H54aNBDmDxwMpJ0\n", + "STwd5SVYHGS3Xr69MCRsCIaEDcF9CfehyFSE1YdXI7soG81tzaLjkRPc0PsGPHHtExgcOhjxwfHw\n", + "9eGvEm/C/9rkUH3UfdBH3QcjYkZg1vBZOHz2MD7Y/wF2nNrBU1luLj44HtP00zA0YijiNHG8duHF\n", + "WBzkFL4+vkjQJiBBm4A7+t2BYzXHkF+Zj8V5i1FQXSA6HtkorFcYpl47Fbf2uRXxwfEICeST3cTi\n", + "IBcI9AvE4NDBGBw6GPfE3YOTdSdxxHgEqw6uwo7TOzhDr8QM1A3Eb5N/i2vDr0VfdV/0DuotOhJJ\n", + "DIuDXEoToIEmQIOUsBSMjh+NU7WncKzmGNaXrMeXRV+itrlWdESv4yv3xa0xt2LyoMlI1CWir6ov\n", + "NAEa0bFIwlgcJEyAbwASdAlI0CVgZP+ReHb4szhZexKHjIfw5ZEv8fOZn9HS3iI6pkdK0CZgXMI4\n", + "DIschv7q/uij7sM365HNWBwOcPjwYSQlJYmOYROpZpXL5BcvrN8cczP+Z9D/oLyhHMVVxTjeeBxf\n", + "FX2FnDM5PK3VQ/GaeIxPGI9hkcMQo4qBT6MPkvpK7+egM1L9me2MO2W1h13FsXDhQhQXF8PX1xdq\n", + "tRpPPPEEYmJiOl22tLQUixYtQl1dHdRqNdLT0xEVFWXP8JJx5MgRt/lhcZesvfx6IU4ThwPfHcCT\n", + "Y57EI9c8gvKGcpTWleJk7UlsO7kN/y77N8obykVHlRyVQgV9hB4j+41EgjYBMaoYRCojL3vGYt26\n", + "dW5THO7yMwu4V1Z72FUcN998M2bMmAG5XI5t27bh/fffx2uvvdbpsvPnz8eUKVOQkpKC3NxcZGZm\n", + "4o033rBnePIigX6BiNfEI14TDwB4+JqHUdVYhbOWszjTeAaldaXYfmo7/l32b5TVlwlO6zqXlkS8\n", + "Nh6RykiE9gpFeGA4FD4K0fHIQ9lVHMOGDbv477GxscjOzu50uaqqKlgsFqSkpAAA9Ho9Fi9eDLPZ\n", + "DI2GF+Go+2QyGcKV4QhXhmMQBgE4XybVlmoYm4wwWUwwnjOioqECuWdykVeVhxJzCSytFsHJu89H\n", + "5oO+6r4YHDIYw3sPR191X+h66aD110IboEVYYBhLglzKYdc4tmzZAr1e3+n3jEYjVCrVZZ8FBwfD\n", + "aDSyOMhhZDIZwgLDEBYYdtnnU4ZMQUNzA0znTDA3mWE+Z0Zdcx0aWhpwpv4MSmpKUGQqQnl9Oc40\n", + "nEFja6PLMvvKfRERGIFIZSRiNbFI0Jw/taRSqBCkCEKwfzC0AVqoFWpoA7Sc/4kkocviyMjIQElJ\n", + "SYfPQ0JCMHfu3Itfb9q0CUVFRXj11VevuC25vONbaltbeaGTXEOpUEKpUCJG1fk1uLb2NtQ216Kx\n", + "pRGWVgssrRa0tLWgub0ZzW3/+eeSfz/Xdg6t7a1oa29DO9rR3t6OpqYmKAOV8JX7Qi6Tw9/HHwof\n", + "xfl/5Ir//vslXwf6BSLQNxAqfxX8ffxdvFeIekZmtVrtmgdi7dq1+PHHHzF79mwEBXU+BUFlZSXm\n", + "zJmDv//97xc/e+KJJ/Dmm28iNDS003V27tyJlhbeiklE5Ax+fn4YMWJEj9bt8amq9vZ2fPDBBxdL\n", + "ISDg8nvATSYTZDIZNBoNwsPDoVQqkZeXh9TUVOTk5ECtVl+xNAD0+A9ERETO1eMjjsrKSsyYMQOR\n", + "kZGXnYZ6+umnER8fj/feew8AMG3aNADnb8ddvHgxamtrPe52XCIib2L3qSoiIvIuHa9YExERdYHF\n", + "QURE3SKpuapqa2vx4osv4vnnn7/i1CWA+OlLujN+VlYW8vPzoVQqL35mMBi6/PO5Kp/o/didDCL2\n", + "Y2ds+RmVwn4FbMsqlf1q6/RFUti3tmaVwr5dtGgRDh06BJlMBj8/Pzz++ONITk7usFy396tVIr7+\n", + "+mvr1KlTrQ8++KD11KlTXS77zDPPWPPz861Wq9W6Z88e6+zZs10RsUfjZ2VlWTds2OCqaFar1fZ8\n", + "ovdjdzKI2I+/ZOvPqBT2q61ZpbBfrVar9eeff7a2tbVZrVar9dtvv7XOmTOn0+WksG9tzSqFfbtv\n", + "376LWffs2WOdNWtWp8t1d79K5lTV2LFjsWTJEuh0Xb/svrPpS6qrq2E2m10Rs0fjW114/4Gt+UTv\n", + "x55kcOV+7IwtP6NS2K+A7f8/AeL3K3B++qILd2fGxsbCZDJ1WEYq+9aWrBeI3rdDhgyBXC6H1WpF\n", + "WVkZYmNjOyzTk/0qqVNVthA9fUlPxs/Ozsb69euh1WoxadKkTg8VXZ1P9H7sSQZX7seeksJ+7S6p\n", + "7dcrTV8kxX3b1VRLgDT27aFDh7BgwQJoNBrMnj27w/d7sl9dVhy2Tl9iC2dPX9JV1oceeqhb40+d\n", + "OhUKxfkJ6AoKCrBgwQJkZWUhMDDQYXl/ydZ8UpgGxtYMIvZjT0lhv9pKavv1atMXSWnfXi2rVPbt\n", + "wIEDsWTJEuTl5eHVV1/FwoULOyzT3f3qsuJ45plnHLIdrVbb4RDKbDbbdEhuq66yVlZWdmv8Cz84\n", + "AJCcnAyNRoPKykr079/fIVl/ydb944r9eDXdyeDq/dhTUtiv3SGl/Xph+qLOZqIApLVvr5YVkNa+\n", + "BYDU1FScPXsW9fX1l00P1ZP9KplrHJf65XlBk8l08Q926fQlAGyavsSRrjb+pVkBIDc3F+3t7QCA\n", + "wsJCWCwWp94F0lU+Ke3H7mQFXL8fr+bSn1Gp7ddfulJWQBr7tb29HUuXLkVBQQHmzJlz2S81qe1b\n", + "W7MC4vdtfX09cnJyLv73//777xEaGoqgoCC796tknhzfsGEDduzYgZMnTyIyMhJxcXGYPn06AEhu\n", + "+pKuxv9l1rfffhvFxcVQKBRQqVR47LHHkJCQICSf1PZjd7KK2I+/dKWfUSnuV1uzSmG/Xmn6ounT\n", + "p2PTpk2X5RW9b7uTVfS+ra+vR0ZGBsrKyuDv7w+dTocpU6YgJibG7p9ZyRQHERG5B0meqiIiIuli\n", + "cRARUbewOIiIqFtYHERE1C0sDiIi6hYWBxERdQuLg4iIuoXFQURE3fL/AR8SQcFGS9m7AAAAAElF\n", + "TkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 29, "metadata": {}, - "outputs": [] - }, + "output_type": "execute_result" + } + ], + "source": [ + "c2 = AnotherCircle(radius=2, center=(1,0), color='g')\n", + "c2" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "print \"But not if I print it\"\n", - "print cNoJS" - ], - "language": "python", + "data": { + "image/png": [ + "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\n", + "TkSuQmCC\n" + ] + }, "metadata": {}, - "outputs": [] + "output_type": "display_data" } ], - "metadata": {} + "source": [ + "display_png(c2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## return the object" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# for demonstration purpose, I do the same with a circle that has no _repr_javascript method\n", + "class MyNoJSCircle(MyCircle):\n", + " \n", + " def _repr_javascript_(self):\n", + " return\n", + "\n", + "cNoJS = MyNoJSCircle()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course you can now still return the object, and this will use compute all the representations, store them in the notebook and show you the appropriate one." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "cNoJS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or just use `display(object)` if you are in a middle of a loop" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "for i in range(3):\n", + " display(cNoJS)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Advantage of using `display()` versus `display_*()` is that all representation will be stored in the notebook document and notebook file, they are then availlable for other frontends or post-processing tool like `nbconvert`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's compare `display()` vs `display_html()` for our circle in the Notebook Web-app and we'll see later the difference in nbconvert." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print \"I should see a nice html circle in web-app, but\"\n", + "print \"nothing if the format I'm viewing the notebook in\"\n", + "print \"does not support html\"\n", + "display_html(cNoJS)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print \"Whatever the format I will see a representation\"\n", + "print \"of my circle\"\n", + "display(cNoJS)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print \"Same if I return the object\"\n", + "cNoJS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print \"But not if I print it\"\n", + "print cNoJS" + ] } - ] + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Plotting in the Notebook.ipynb b/examples/IPython Kernel/Plotting in the Notebook.ipynb index 941f4b3..00e713b 100644 --- a/examples/IPython Kernel/Plotting in the Notebook.ipynb +++ b/examples/IPython Kernel/Plotting in the Notebook.ipynb @@ -1,226 +1,740 @@ { - "metadata": { - "name": "", - "signature": "sha256:74dbf5caa25c937be70dfe2ab509783a01f4a2044850d7044e729300a8c3644d" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Plotting with Matplotlib" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython works with the [Matplotlib](http://matplotlib.org/) plotting library, which integrates Matplotlib with IPython's display system and event loop handling." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "matplotlib mode" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To make plots using Matplotlib, you must first enable IPython's matplotlib mode.\n", - "\n", - "To do this, run the `%matplotlib` magic command to enable plotting in the current Notebook.\n", - "\n", - "This magic takes an optional argument that specifies which Matplotlib backend should be used. Most of the time, in the Notebook, you will want to use the `inline` backend, which will embed plots inside the Notebook:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matplotlib inline" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also use Matplotlib GUI backends in the Notebook, such as the Qt backend (`%matplotlib qt`). This will use Matplotlib's interactive Qt UI in a floating window to the side of your browser. Of course, this only works if your browser is running on the same system as the Notebook Server. You can always call the `display` function to paste figures into the Notebook document." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Making a simple plot" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With matplotlib enabled, plotting should just work." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "x = np.linspace(0, 3*np.pi, 500)\n", - "plt.plot(x, np.sin(x**2))\n", - "plt.title('A simple chirp');" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEKCAYAAAD+XoUoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztfXt0VdWd/+fmwSvhkQTyDiAEFkRUUKwtLRqrSEFNtb6w\nVqlay2pL22lndVZX5zejrpkqTKdLnWFq0dVWmLFIO6NCfeCzqbSW0iKiFSqPiuYBIZAH5EEeN+f3\nx+7OPTk5j/0859xkf9bKgiRnP+7NPZ/9OZ/vd393wrIsCwYGBgYGowIZUU/AwMDAwCA8GNI3MDAw\nGEUwpG9gYGAwimBI38DAwGAUwZC+gYGBwSiCIX0DAwODUQRD+gZpjyeffBLLly/X0vcXv/hF/NM/\n/ZPSPu+77z7cfvvtnr9fsGAB3njjDaVjGhhQGNI3iBzV1dXIz89Hb2+vUPvbbrsNL730kuJZESQS\nCSQSCeV9+uHPf/4zLr30UqVjGhhQGNI3iBRHjx7F7t27UVhYiO3bt0c9HVeo3r8o018ymVQ4E4PR\nCEP6BpFi8+bNuPLKK3H77bdj06ZNvtc+8cQTmD17NiZNmoRZs2bh5z//+eDPly5dOnhdRkYGHn30\nUcyZMweTJk3CP//zP+PIkSP4xCc+gSlTpmDVqlXo6+sDANTW1qK8vBwPPvggpk2bhnPOOWewXzc8\n99xzWLhwIfLy8vDJT34S7777rue17733HpYtW4aCggIUFxfjwQcfBECUfm9vL1avXo1JkyZhwYIF\n2LNnz2C7mTNn4vXXXwdArKAbb7wRt99+OyZPnownnnhi8GerVq3CpEmTcNFFF+Gdd94JeKcNDAgM\n6RtEis2bN+OWW27BzTffjJdeegknTpxwva6zsxPf/OY3sWPHDpw+fRq///3vsXDhQs9+X375Zezd\nuxe7du3C+vXrcc8992DLli346KOP8O6772LLli2D1zY1NeHUqVNobGzEpk2b8OUvfxmHDh0a1ufe\nvXtx99134/HHH0dLSwvWrFmDmpoaV1vqzJkzuPLKK7Fy5UocO3YMhw8fxhVXXAGAKP3t27fj1ltv\nRXt7O2pqarB27drBtk77Z/v27bjpppvQ3t6O2267bfBnN998M1pbW/H5z38e1113Hfr7+33eaQMD\nAkP6BpHht7/9LRoaGlBTU4M5c+agqqrKV2VnZGTg3XffRXd3N4qKilBVVeV57T/8wz8gNzcXVVVV\nOO+887BixQrMnDkTkyZNwooVK7B3794h1//Lv/wLsrOzcemll+Lqq6/G1q1bB39HSfixxx7DmjVr\ncPHFFyORSOCOO+7A2LFjsWvXrmHjP/fccygtLcW3vvUtjBkzBrm5ufjYxz42+PulS5fiM5/5DBKJ\nBL7whS9g3759nq9lyZIlqKmpAQCMGzcOALB48WJ87nOfQ2ZmJr797W/j7NmzrvMwMHDCkL5BZNi0\naROuuuoqTJw4EQBw0003eVo8OTk52Lp1K3784x+jtLQU11xzDd5//33PvouKigb/P378+CHfjxs3\nDh0dHYPf5+XlYfz48YPfz5gxA8eOHRvW54cffogf/vCHyMvLG/yqr693vbaurg6zZs1imt+ECRNw\n9uxZDAwMuF5bXl7u+7NEIoHy8nLXeRgYOGFI3yASdHd34xe/+AVef/11lJSUoKSkBD/84Q+xb98+\nT3/6qquuwssvv4zjx49j3rx5uOeee4TGdtonra2t6OrqGvz+ww8/RGlp6bB206dPxz/+4z+itbV1\n8KujowO33HKL67V//etfmcbnnS9AFhWKgYEB1NfXu87ZwMAJQ/oGkeDZZ59FVlYWDhw4gH379mHf\nvn04cOAAli5dis2bNw+7/sSJE9i2bRs6OzuRnZ2NnJwcZGZmMo9nz5hxy56599570dfXh507d+L5\n55/HTTfdNHgtvf6ee+7Bj3/8Y+zevRuWZaGzsxPPP//8kKcGimuuuQbHjh3DI488gp6eHpw5cwa7\nd+/2HJ8Xe/bswTPPPIP+/n48/PDDGDduHD7+8Y9L92sw8mFI3yASbN68GXfddRfKy8tRWFiIwsJC\nFBUVYe3atfj5z38+zOoYGBjAQw89hLKyMhQUFGDnzp149NFHAQzPpXdTxs7f278vLi5GXl4eSktL\ncfvtt2Pjxo2YO3fusGsvuugiPP7441i7di3y8/MxZ84c1wUKAHJzc/HKK6/gV7/6FUpKSjB37lzU\n1ta6ju81Z79rP/vZz2Lr1q3Iz8/Hk08+iaeffpprETQYvUjIHqJy11134fnnn0dhYaFn+to3vvEN\nvPjii5gwYQKeeOIJLFq0SGZIAwNlqK2txe233z7ELok77r//fhw+fBj//d//HfVUDNIQ0kr/zjvv\nxI4dOzx//8ILL+Dw4cM4dOgQHnvsMXzlK1+RHdLAYFTDHHZnIANp0l+6dCny8vI8f799+3asXr0a\nAHDJJZegra0NTU1NssMaGCiD6jILuqGjNITB6EGW7gEaGhpQUVEx+H15eTnq6+uHpKwZGESF6upq\nfPTRR1FPgwv33ntv1FMwSGOEEsh1Po4alWJgYGAQDbQr/bKysiFBsvr6epSVlQ27rrKyEkeOHNE9\nHQMDA4MRhdmzZ+Pw4cPM12tX+jU1NYNpbbt27cKUKVNcrZ0jR44M5kTH6esHP7CwdKmF3t7Uz779\nbQu33aZvzHvvvVfra2ppsZCba6Gjw0JJiYXDh8N/X6++2sL69RZmzND3Xhw6ZKG01ML06eT/qub+\n9NMWxo61cPnl8n0lkxYmTbKQk2Ohs1P8vfi3f7MAWPjRj8TmsWcPab96NX/b1lbS9stf5m8LWJg6\nla/N1q0WgHvxl7+wt7nhBjIW6/UbN5Lrd+xgu/5737NQWanuM8bzxSuWpUn/1ltvxZIlS/D++++j\noqICP/3pT7Fx40Zs3LgRALBy5UrMmjULlZWVWLNmDX70ox/JDhkampuBdeuAn/4UyM5O/fz++4HX\nXgN8CizGGq+9BnzqU0BODnDZZcDOneHPYd8+4IYbgNZW4NQpPWPs3Qtccgkwfz7wl7+o6/fwYeDa\na4H9+9X0lZ8PFBUBjY3i/TQ0AMXFpD/R9oDY36K+nvz79tt87Wh9uNxcvnYHDpB/ed6vMWPIv6dP\ns11Pr2O9vrkZqKsDPCppxArS9o69WqEXNmzYIDtMJPj+94FVq4DKyqE/z80FvvY14OGHgZ/8JJq5\nyeDNNwF6RsenPgX89rfAF78Y3vgtLUB7O3DOOcDChYScr7xS/Th1dcD06eT/f/kLcM01avo9coQs\nli+9RF5Lfr54X42NZI69vUBT0/DPGitOngQ+8QnApTgoExoagKoqMdKvqwMqKoC2Nr527e1AVhaZ\nOw8OHgQyMlILFQuam8m/778PXHxx8PVnzgz9l6X/nh7yb9xzVMyOXA+cOgU88QTw//6f++/vvht4\n+mng7Fn1Y1dXV6vv1IZ33iFkCwAXXcSv0GSxfz8hmIwMYO5cQqJekHkvKBnNnUuIQhWOHCHkXF4u\np84BQnhTpwKFhYBHVelB+L0Xzc3AhReS1yyChgbg/PP5CRggYy5YQEicB21t5O/T08N3H7W2AuXl\n1VzvfVMTeY9bW9muF1H6iQSQDolghvQ98MQT5BG+uNj99yUlwAUXAC+/rH5snaRvWcRaoaRPrY8w\nH0s/+giYMYP8f/p0/xtFlvSnTwdKS4Hjx4W7GYbGRqCsjJC1CEnaQUm/qEiO9E+eBObM4SdeisZG\n8nkWUfrHjpHPEa/Sb2sD8vL438fOTmDRIn7SP+cc0pYFZ86QRYJH6U+fLv95CAOG9F0wMAA8+iix\ncPxw883AL34RzpxUge6Lo4vZ5MnApEkpXzYM2G2XigpxdRqEjz4i/RcVpV63Cpw6BRQUANOmqSN9\nFqXvh+Zm8vQhSvrNzalFg/csljNnyHs8MEBUOyva2oApU/jfx44O8pTF+lqTSWLDzZjBTvqnT5Mx\neJT+9OlAdzfb9VHCkL4L3niDBDkvucT/us99DnjuOeLHpgsOHSJ2h32rxLx5qeBYGKC2CxCs9GVQ\nX09uXFlCtcOyCIEUFKhV+jJztCxCOrNnEyK0BKo0dHQQAp4yhd0CsbedOJEICJ5Fp72djDd1aspz\nZx2vsBCwVcP2RVcXMHYsmR+P0i8rY1P6lkUWsLIyQ/ppiy1bgNtuG0qMbiguJjfaH/8YzrxU4PBh\nMmc7KisBj9LvWhAG6VsWIdTCQjbrhBVnzpBMkLFj+cnKDXbSF30aoeQ3eTKZFyux2XHmDElQmDqV\n3+Lp6CBtJ0/ms3ja2kibvDy+dh0d5OmAlfS7u4EJE4iQ41H6ZWVsSr+nh3wmcnIM6aclenuB//s/\nkrXDgupq4G8Vc9MChw8PzxCZMQP48MPw5kBtF4DcWA0NYurUD6dPA+PGpW5GyyJkIQtq7QBq7Z2C\nAvHUVTqnRIIoZ15vHSCkP3EiyUQSIf2JE8nYPEqf2jsTJvCRZWcnWSRZCby7Gxg/no/0eZT+2bPk\nszZ+vCH9tMQrrxC7g3rOQUg30qeZJ3aETfrHj5NAOEBulDFj2L1TVtjJOZFQp/aptQOos3cKCghp\nsgYNnejoIHEZgN9isfcxcSIfMVLQpwTesSnpjx/Prtrp4s1j74iQPo/SN6Sf5ti2jWwaYsXSpcCu\nXXwBrCjxwQfAzJlDfzZzZnikPzBAiG7atNTPpk2Tt0mcsJM+IGefOPulefkq5n36NCE+WdKnG5x4\n1TYFVfoipC9r70yYwE7gPT0kt3/yZD5PX6fS7+42pJ+2GBgggdlrr2VvM2UKCYymi69vz5yhCFPp\nt7WRm4/ukATCIf38fP4AZVC/kyfLP6FQslVF+rzEC6TUc26uPOnzLDhdXWQ8HtLv6OBvw+vpWxb5\nu5aWGqU/4rF3L3lM5t0V+fGPpwfp9/YSlU2tFYrSUmJ98KbqieDECaK67QiD9EW9bifsO3AnTVJD\n+rm5pK+olH53N1mEs7IIMbKSqXP83Fy+BYPaLrykn5vLT/o84/T1kX/z89lejyH9NMZzz4lt1b/o\nImDPHvXzUY3GRpJx5DxKNTOT+NNhnG3T3DzU2gHUplRSUK+cQhXpnz5NFC1A1LkM6Q8MEJLIySFE\n1tEhnm4po/Tp0wZAiFFU6fOSHrVFeAK5nZ0p0medJ6+909NDsqDGjmWzbc+eJf0b0k9D/OpXfNYO\nRbqQvj1V0omSErKzUjeiVPqiG5fsOH06RZAy6hwgBDRhAilHkZUln24JkH95lbq9vYy9I0L6YSl9\nHntHhPSN0k9DNDaSXPUlS/jbVlWRNEQZAggDdXVks5IbSkvDIX03pT9tmnql39pK8r8pVCl9uyqm\n6ly0hIW9L0B8EbErfR4ytLen8+Al/d5esuN17Fh+0rMrZF5Pn8aEqBXjB97snbNnDemPCrz8MrBs\n2dASyqzIziYFp8IuXMYLe6qkEyUl8sXDWNDcTKwkO/LziVeuEu3tKRsGELM93HDmTCo9MjOT3Ogi\n6pz2ZS8rLBrMdZK+SMqlKOl3dpK2iUQ4Sr+zk8wRYG/HS/o9PYTEs7LIgp5MBvdvSD8N8eqrcuV9\n08HiaWryLyAXhtJvaxteiph3RyYL7N47oEfpA3IWj7Mv0RiBrNJ32js87anyBsIhfaqqAfZ2op5+\nIsGm9o3ST0NYFjlYRIb0Fy4kJYvjjOPHvWt9h0n6U6YM/Vlenpp0Sjva21OKHFAbyFVB1MBQW4X2\nFYW9Q1MnaXsepd/VRdoA4ZA+JWSeuVJPn9WusY9hSH+EYv9+8qE45xzxPqqq1JykpBNNTd6kr6Kk\nAAvCIn2dSt++mMikbcbF07erZ157x95WhvRZ2zlJn8feESX9oFr/JnsnDfHqq8AVV8j1QUlfdQ0Z\nlTh+3NveUVFSgAXprvR12ju5udGQPiVFIFzSp21l7B1WpU/LfbBUxLWT/rhxRumPSMj6+QDxqXNy\n+I5wCxt+Sn+kkb5T6avYSEX7VWXvOAO5vIXHKOy+ejqRPh2XJ3uHl5CBlAXFm40DGHtnRKKvjxwM\n/ulPy/cVZ4snmUyVGnZDWKTf2jqc9HNzyY2l8lwCZ/YOTa+UhdPekfX0naTPS9jAcE8+HUjfsuQ9\nfVblblf6fX3BKba8nj7N3hk3Ts/xqaox6kl/zx5ScMyZRiiCqirgvffk+9GBU6cICXqlpBYUkLRJ\n3ccmuil9mZLAbjh7lpAKvXGBFJnJvD57jRoK3tIDdtjJGhAnfTtpi6RsimTE2NvSsXlIv6+PpLxm\nZorbO7zKPZEgn/+g3H7RQC5dVOKOUU/6b7wBXHqpmr7irPT9rB2A3Aw5OWp2rXphYCB1WpITKi0e\nau3YD8GhOfUipErR2UlIICsr9TNRogZSWSX2vkTsASfpyyh9XrUqqvTtY7KSN8BPyAB5GuBpI0L6\n48eTeyjoyWNgINzzqN0w6kl/505SHlkF4k76XkFcCt0WT0cHISU7aVKoJH1nEJdCppIlMFyZA2Jl\nC+z9UeID5JS+PftGlvR5yoSrIH1q07AkQYjYO/RkK0Af6bMq/Z07yRkcUWJUk/7AAPC736kj/blz\nyRm0cYRfjj6FbtJ3s3YoZAnZDqfvTiHr69tz0ilklL6zP9EnEVmlbyfusJS+vV1GBptKBlK7ZQE+\npU9Jn2Wh4LWQ6KKSlUUq1fotXn19Yrv+VWJUk/577xEvO0gBs6K4mNxwOi0SUcRB6fuRvmzxMjuc\nvjuF7MLitGMAeaWvwt6x++rpaO8AhDRZ/fm42TuUyBMJQvx+ar+/35B+pNi5U52fD5A/emUlOZIw\nbhhNSt9en8UOXUpflPTdPH1ZpU/tGR7f2N4+K4soVdazFdxIn8WmcZL+2LH8OfSsbexKX4T0gxZB\nu3oPepLo63O3N8PEqCd9VdYORWUlOXw8bnAraexE1KSv6pxcL9JX4enbiQoQ89C9+hMh/WSSEDQl\nNVr4jDcDhxI3wKf27W0zM9ltGueYIrtlWZ8OnJ5+0Px49wLY1XuQr2+UfoSwLJK5M1pI33kurRt0\nk75bjj5Fuip91faOqDVjz1TiyYax90HBQ/r2IDLP2HbLhaedSMqm09PXYe9Q9R606BmlHyE++IAQ\n/6xZavuNK+k7DxVxQxhK317j3g6VpK/L01cdyHXaOyI7Op2EDfBn4LiRPmt7GcVuPydZVzE0gN/e\n4V1YeOwdo/QjBLV27ApJBQzpeyOsQK4upa8jkCtr77iRPosP7deHqL0DsKdR2okYELd3RDx9HnuH\nZV52Ig/a/GWUfoTQ4ecDhvT9EHUgN25KX6W9YwevvaPK0+cZ206sADuBi9o7PHEAGXvHKP0YQxfp\nl5YSclNR50UV+vtJkNSLcCmiJn3dgVwZVQ54B3JVZu+I2Dt20gXkPX2eJwV7uijP2CqUvoiVpDNl\nEzDZO7FFUxPJZlmwQH3fGRnAjBnAhx+q71sUra2kLEFmpv91Ok6wsiMspe/l6cuociCegVwn6QJq\nPP2wlb4o6etI2eQhcYDP3jFKPyLs3Al88pPBJCiKmTPjRfqnTrEVlJs8mSwQus4EaGsbWvnSjjDs\nHR2kL2vv2MlW5LxdFZ6+m70jGshlTaOUUfp0PJGxWEjcTvosBdp47B2j9COCLmuHYsYM4OhRff3z\ngsXPB8jNlJmprya4V3kEIJxArizpewVyu7r4F0pKJHbVR8mWpy8Vnr5TdfMqfadi591kRdvp2JFr\nWUNJnFfpZ2cHb1Qz2TtpAN2kP3NmepI+oLbEsRPOQ0PsUK30ddk7ToKl5YF5zwJwW0AyMoK38bv1\nI0P6liVH+nblzTN2WJ4+HYdm6fFm47D8PUz2Tsxx+jRw8CCweLG+MeLm6fOQvk5f33k8oB0qA7n2\nk6Ts0GHvAIR0eQ/PcAvAAvJ+PMBH+v39ZLGxW528pG8nb55dsiLZO319fFaNc3FhtXfsm61U2jtG\n6UeAN98khG//IKhG3JT+yZPxUPodHf6k39GhJp7gZ+/IWFdepD9uHH+/Ti+cQtaPp/PhIW07+fLO\nQVSxy7TjsWpExhHx9E32Toyh29oB0jeQC+gjfcvytl0AciOMGSOnxCnC9PQBsWPy3MhWpC9nOQNA\n/FASkTm4lVPQ5emL+PNhkL7T3jFKP2ZQeVKWF4qKCHHG5ZDkOHj69NQpv4wpVcFcnZ6+KnvHi/RF\ngrDOp1YVpM/TPiyln0wSKyojI9WG194RIXFee8d4+jHC2bPA3r3AJz6hd5yMDGD69Pio/TiQvp+1\nQ6EqmKvT03f654CYvaNK6XvZM1EpfVFPn1eBs47lHIeXxOnBKKzzMp5+zPDHPwLz53tbDCoRp7TN\nOJC+XxCXQkUwl9pIcQ/k+nn6PErfqWSBcD19VUqfN3+edSwRpa/T3jFKP2SE4edTTJ8O1NWFM1YQ\n0on0ZZV+Tw+5qdxuLF2kP9KUPstZrxRhevr2zB2ArXZ/GKTPY+8YpR8ywiT98nKgoSGcsYJw6hSQ\nn892rU57J+gJS4Wn7xcs5jnZyQ1hBHJFlL4O0o+jp2/P3KHzDCJk3aRPTxkz2TsxRDIJ/P73wKc+\nFc54ZWVAfX04YwXBr469E+mu9L2sHYDEWnhTIu0II5ArovRVB3JZc+YHBoYr1zA9fRYCd74/rHYN\na55+MkmSE+jmL5O9EyO88w5QUhJ8epQqxEXp9/SQD6ZbANIN6U76XkFcCpW1cihU5+nLlFCg85Hx\n9Hk3Somc2iWrwFnbyI4TFMh1KneTvRMjhGntAIT046D029sJkbMeFpOXR4quqUZYgVw/ewcQJ/2B\ngeElByiiztNXrfR5fHm3sUXahkX6vNk4LGUVnE86I17p79ixA/PmzcOcOXOwfv36Yb+vra3F5MmT\nsWjRIixatAj/+q//KjukEMIm/bjYO37ljN0QpaefmytX7x7wt3cAcdKnZRMyXO4YkWMOVebp6/D0\nWUsWi8YD3FI9ebN3dC0UPKRvt4Lo9XH39KWGTyaTWLt2LV599VWUlZXh4osvRk1NDebPnz/kussu\nuwzbt2+XmqgMLIuQ/r//e3hj5ucTxRZEQroRF9JnUfo5OUBzs9w4Oknfzc8HxJS+szqlaF+6Arky\nSp/3YBOAnYzDeDrgLaDm7N/vSSLtlf7u3btRWVmJmTNnIjs7G6tWrcK2bduGXWfpKtDOiMOHyYdl\nxozwxkwk4uHr+9Wwd8PkyaSN6j8ZK+nLKn1dnr5XEBcQD+SqsIrciDcsT19mwXG2ZbVq7IRJd3cn\nk95tRJU+ayDX2X9QVc44KH0p0m9oaEBFRcXg9+Xl5WhwsFwikcCbb76JCy64ACtXrsT+/ftlhhRC\n2NYORRwsHl6lP2aMuho4drDsyFVB+ro8fa8gLqA2Tz+d7B2VSp8l/dJJsAD/SVUsKZg8gVw3eyfu\nefpSa06CITp44YUXoq6uDhMmTMCLL76I6667DgcPHnS99r777hv8f3V1Naqrq2WmN4g33oiG9OOg\n9GkglwdTppBgrkpbyq+WPsWECfH19P2U/rhx/MFvVUpfRyCXR+k7x2bd2OWWVcPr6dN2fX3u7yVt\nw0PKzvo+IkqfJ9tHBLW1taitrRVuLzV8WVkZ6mzbTuvq6lBeXj7kmok2ebdixQp89atfRUtLC/Jd\ndgvZSV8ldu4EvvMdLV37Ig4ZPLxKH1B7ihUFq70j+4ThR85AfOyds2fdbbexY8lTESt0KX0Ri4a2\nZU33lA3KsrTjHYf3yUC2fxE4BfH999/P1V7K3lm8eDEOHTqEo0ePore3F1u3bkVNTc2Qa5qamgY9\n/d27d8OyLFfC14XGRkJ8jthyKEhHewcgpK/qQBOKsOwdPxsG0BfIFbF3VHn6UeXpu9k7LIodcK+9\nEwfS530ycLN3dCt9WUgNn5WVhQ0bNmD58uVIJpO4++67MX/+fGzcuBEAsGbNGvzv//4vHn30UWRl\nZWHChAl46qmnlEycFTt3kl24bql2ulFeDrz2Wvjj2tHWBpSW8rXRQfphBXK7u/3PDhg/Xr2nH2Vp\n5ajtHdG6PW5kzGLvuC0yqklf5vqgQG7ae/oAsWxWrFgx5Gdr1qwZ/P/XvvY1fO1rX5MdRhhRBXGB\n+Ng7PNk7gNrzailYPH1VpK9L6YcRyI2i4Jrz7yKzOUunvePM3mFpJ+K586RgilwftdIf8TtyoyR9\nY++kEKbS10H6XmUTALV5+mEXXPMKxsoofRF7R9TTZylwplu520k8HZT+iCb91lbggw+ACy+MZvyi\nIqClhe0m0AWR7B2Vh5RTsHj6sqWPgWhIP53z9GWIW8bT5y1f4NaGjqcyMOtG4smk974V2ZhBFBjR\npP+b3wBLlkS3smZmAsXFwLFj0YwPxCN7x7LYyjDEOZAbpPRV5umHae/IKn2RtpZFiJQnYAqIB3J5\nxnGOkUj4q3de+8gofc349a+Byy+Pdg5RWzxxsHfOnvU+2MSO8eNTVUFF4ZdlA8RL6Xt5+mEGcnXY\nO6zkbd/mE5eUTd4xeDdnGaWvGa+/Hj3pl5QAx49HN74I6au2d1jrDyUS8hZPVJ6+SGllXUo/O5ss\nnCyLpyzp83rsMu2iyN6hbbzU+6irvRNnNDeT4wqj8vMpSkqis3f6+giB8O6sVW3v8BSdk92glS6B\nXD9Pn1WlJ5Ok5LNTOSYS4nXtAb7NWSKevohip+OFvTkL4Ld3jNKPCLW1JGsn6je4uDg6pd/eTtI1\nWWvpU0Sl9AH5UgzpFMiVVfqUdN3+vjKkT9XqwIB/WzflrUux03Zhb84KasO7OcsofY2Ig7UDRBvI\nFcncAfQo/aAgLoVsMFdXINdLmQPq8/RlNlZRyJB+IiGuvFnPrRVpF0dP3yj9GOHXvwY+/emoZxGt\npy/i5wPqA7m89o5OpS9ixQDqlb7fcYm8St8NMqRP27N486JK34tY/Up6q0jZpNk1rCmYQWMYTz8m\naGwknv7550c9k2jtHVHSj9LeUUH6ftk7IqdcAf6kT290nqwj3UqfdXHzIn3d5O32dJGZGbybVSSQ\na1fWtIKm19/KjZR57B0/pU9TVek5AFFhRJL+r38NXHZZNPV2nIgykCuj9EdqIFcH6ScSasonAHxK\nX5e9A7Azh3HZAAAgAElEQVRn4biRd5DF4Wbv0DFVWi8ibdzsF7/cex77iC4QvDE21YgBLarHa6/F\nw9oBgMJC4ORJudxzUYjU3QHSN5CbTLrnjtshY+8ELSY8/fodlyiTY08RBum7KW/alpeIgeDMHxXZ\nO0FtdNo7cfDzgRFI+pYFvPQSsHx51DMhyM4mavvkyfDHFlX6EyYQwvB71OZBWPYOVeN+SkqH0gf4\ngrn0dCa/2jssx1XGQel7KfagejhuY6omcJE2spuzeNI7o8KII/0//5ncgJWVUc8khah8fdHsnURC\nrcUTdG6tHTKkH2TtAHpJnycA69yRSpGRQYhDdEcs73xEiRvwV/q8ih0QJ3CegmtB4+hU+s4FIiqM\nONKnKj9q38yOqHx9UaUPqLV4wvL0g4K4QGq3Ku9TTBDp8ywmfgodYLd43AqeUahQ+kHt/cibl4jp\nmLztVMcB3IhZVcqmUfqasGNHfKwdiqiUvgzpq0zbDMveYVH6iYTaFEsKHqXv5edTsAZzo7Z3ZDx9\nUXuHN3uHNxvHjZj9Ark8m7OM0teAzk7gD3+ITxCXIqoNWrKkr8reCYv0gzZmUeggfZ4+/TZ6AexK\nPyiQy1riOGxPX7W9o3KHrc7NWUbpa0BtLXDRRcF128NGVBu0RLN3gOjsHZnsHRalD4gXSFMVyA2y\nd1QofZnyyHQOujx9UXtHVfYOTwpm0BhupO+1+csofQ146SXgM5+JehbDYZR+fOwdQCyYy0L6KjZV\n8fTlF8iVKZpG24sqfRZPP67ZO7Kbs/w2fxmlrwFx9POB6JS+aPYOMHIDuYD48YZ+pM+zqUqlpy9j\n7wwMeKvPdMre0b05S5UdZJS+Yhw+TEjqgguinslwpKvSH4mBXIBf6VsWmzpX6emHYe9Q0nbLdJP1\n9EU2Z8VlR67b9bx2kNv1RukrxrZtQE1NPEovOBGF0k8mCXmKxjeitHdElT5PIJeH9P1KGFOotHdk\nM28A9pRLv/YiZRhY2vrZO7ztwiB9v+Csm3r3ut4ofcXYtg347GejnoU7Jk4kJNzREd6Yp0+TcUUX\nwSgDuTL2Dmsgl7dkgp8yB9TVzAH4DiaXUfqypK+ynAJtp1rpi3j0up4MjNJXiJMngX37gCuuiHom\n7kgkws/Vl8ncAaKzd8IgfV6lz0L6qvP0ZQO5oqWRKXQrfRF7RzR7h9ej5z1EhfXJIA5llYERQvrP\nPQdceWXwjRklioqAEyfCG0/GzweI0o/C3pFN2WQJ5OoifR57JygoLLsjV4W9E9Rex+YslSUVRNro\nDPyagmsKsW0bcN11Uc/CH4WF4ZK+TOYOoE7pW1b8lH7c7R0e0o/S3kmXzVm6ArNe13vtAzBKXxE6\nO8nRiCtXRj0TfxQWAk1N4Y0nq/RVkX5vLzk0gvXDLkP6ugK5qu0dlYFcXfZOFJuzwiq4xrtrNiiQ\ny7oQGaWvCL/6FbBkCVBQEPVM/DFa7R2eCptAijyDDuV2Q5RKn8feUeXp67Z3wt6cJZL142cl0RLW\nuguuuV1vlL5GPPUUsGpV1LMIRtj2TlyUPo+1A5BsI5HaOEC0gVxee8evP9bdtFHbO6Keflj2TjKZ\n2iHL2kZniqdR+grQ1kaORoy7nw9EY+/IZO+oUvq8pA+IWzxRB3JV2jsydXNY+4jK01dt7/BYL0Ft\nVJVtMEpfE555hlTUlCG3sJBu9k5USh8QJ31WT38k2TsytXe8SJu2j6LgmsqUTS9lrXpHLuvmLKP0\nFWDLFuDWW6OeBRvSLXtn7Fjiq7MSmRdESV8kbTOd7B3dgdwos3dYNmeFkbIp8kTBs8PWb05G6WtA\nXR3wpz8B11wT9UzYkG7ZO4mEGosnbHsnXbJ3dOfp67Z3kkkSKM3M5G8rQsaWRcaULYYm0kbV5iyj\n9CXxs5+RAC6LhxsH5OcTu8Tv8VUlZEkfGLmkH7W9E5c8fS97hrb3mwMlR69ibaoLrnmNFzXp82zO\nMkpfAskk8JOfAF/6UtQzYUdmJkkrPXkynPFUkb5svaA4kn7U9o7KMgxRpWzqaOtn76gicEDvISr0\neq/aO0bpC+K114CpU4ELL4x6JnwI0+KRzd4B0k/pd3WlTxkG3QXXdG/O8iseJuLN03a6VXtQGxUF\n2kztHQ14/PH0UvkUYQZz09neES2vHLW9E7anH2UgV6atiL0jktsvmrLpFsjlyd4xSl8xPviAlF24\n7baoZ8KPsNI2BwYIWU+aJNdPuin9dLF3VHr6Udk7QfGAoNTLsOwdVSmbKjZnGaUviIceIipfltCi\nQFj2TkcHIU5ZVZGbGx3p60zZjDqQG0aevorsHb85yOT4x9ne0bk5Ky5KPwZTYMepU8D//A/w5z9H\nPRMxhGXvqLB2gPRS+v395MuLxOwQUfp+JA1EV3BNRz182j4oA0e1vRNExryHqUeVveOn9HNz3fsJ\nE2ml9B99lJyOVVoa9UzEEJa9MxpJn5Zg8DvSkEKE9IOeIFTW3glzR66Mpy8ayBU5fMUvDqDSEhIp\nuJZuVTZjMAU2tLUBjzwC7NwZ9UzEEZa9oyJzB4iW9Fta+NqwWjuAvnr6PT1kE1HQwhOn7B2v16XT\n0083e8cvkOuVvWN25CrAD35ADj6fNy/qmYhjNNo7vKWVAXGlz0r6OgK5WVmE7L3IwdlfOtg7okpf\nh70jkr2j296xLL4nA6P0OXD0KPDjHwN790Y9EzmERfqydXcoVCl9Xh9TN+mPG0euZ1HlABvp037P\nng1Wcyo8fcvy7yczk2RxJZPupRIAvdk7ovaOyEYrWhLC+bf0UtaqNmf195P31m2XsFH6kvjmN4Fv\nfQuYPj3qmciB2juWpXecOCn9sPL0eUg/K4vcrKwlMXhIn9WLl/X0aa14L0JPJIItnqg8fT8F7ufP\nu801keCvdSPi6fOQuKm9I4mtW4H33we+852oZyKPCRPIB1dFyWI/qCL9KFM2eUmfdTcuBY/Fw5K9\nA7AHc1Uofb8cfQqZDVYsxB129o7fIuNFsqo8fd5FxSh9QRw9Cnz968CTT7LddOmAMCyedFf6Inn6\nPEof4Dudi9feYelPBekH3RMsufa6PH2RdE8RewfQT/p+efejUunv2LED8+bNw5w5c7B+/XrXa77x\njW9gzpw5uOCCC7CX0ZhvbweuvRb43veAiy6SnWV8UFSkP4NHZfZOuhRc4yV96uuzQKW9E+TFA/JB\nWNZ+ZIKxOhYMkR25tF0USp+3zMOIUPrJZBJr167Fjh07sH//fmzZsgUHDhwYcs0LL7yAw4cP49Ch\nQ3jsscfwla98JbDf1lZSJ7+6mvj5IwlG6QcjDNLntXdYSJ/F3qHBPy8vnvajQunLePqUuLziT2EX\nXAuKIaggfd6a/V7K3StQPCKU/u7du1FZWYmZM2ciOzsbq1atwrZt24Zcs337dqxevRoAcMkll6Ct\nrQ1NPlL3j38EPvlJYPFi4OGH2bIr0glhkH5csnfojc+yS9YOUU+fV+lHYe+wkHV2NiGfgQHva/yK\nrVHI2DsZGf5ZLjoyf6JW+rzZOCL9p73Sb2hoQEVFxeD35eXlaGhoCLymvr7etb+ampSl89BD/moo\nXRGWvaOS9EWzjURUPiC3I5cVPEo/KNuGgsXeYQkKJxLBhK0ikOsXjA1qL7o5yyu3Paid33i8JMu7\nSIjYO3FW+lJTSDDKcMvBGl7tEon7cOedwOHDQG1tNaqrq2WmF0sUFgJ/+YveMVSR/pgxRPGxkp4T\nYZN+Otg7LEqf9tXT4/2adNs7QIr03f6GovEASnxuFKAje4fXflFB4rqrbNbW1qK2tla4vRTpl5WV\noa6ubvD7uro6lJeX+15TX1+PsrIy1/62bbtPZjppgcJC4De/0TuGKtIHUmmbUZA+6+YpQCyQy2Lv\nWBZ7yiarvcO6gIhaMxQy9g5tL6r0RdpFnbIpkncfhdKvrh4qiO+//36u9lL2zuLFi3Ho0CEcPXoU\nvb292Lp1K2pqaoZcU1NTg82bNwMAdu3ahSlTpqCoqEhm2LRGYSHQ3Kyvf8sinr6K7B1AztcXJf3M\nTHLjsJYqBvQpfXpjZzDcKarsHSDYmmFN2VSh9L3aigRyRQKyQDikryrvPu719KXWnaysLGzYsAHL\nly9HMpnE3Xffjfnz52Pjxo0AgDVr1mDlypV44YUXUFlZiZycHPzsZz9TMvF0he5AbmcnuVlVfbhk\n0jZFSR9IqX3WJ4yuLiAvj71/VtJntXYAPfaOF1gCuarsHTf4KXYaDHUrAeFH3iInZwFqSV9F3v2I\nr72zYsUKrFixYsjP1qxZM+T7DRs2yA4zYqCb9FVl7lBEofSBFOnn57Ndr8veYVXmrH2qIn3WQK4u\ne8ePhO1tnX8T0VRPUaXvtmDzZuPQOkYDA0Of+PwWCbMj12AQ+fmEmFnrvvBCpZ8PyJG+SIVNCt5g\nri57h0fps9g7qjz9qO0d0cwflr0BvOOpVO5u19P6Pk4iF8kOioPSN6QfMjIzgYIC4ORJPf3HifRV\nKH1W6CrDoNre4anjE2d7J0jpe6n2IFsIILaQW7swArlepOzWxtTeMWCGTotntJK+yOYsHUo/bvZO\nlErfjVhZFgseAhdpIzqGk8hHbe0dA36kE+nLVNoMW+nr2Jylw95RRfo6d+TS9rKevhOitlDUpO9G\n5Lybs4zSH8XQTfqq0jWB6LJ3cnL4Km3qDOSqzt5h6U9WpdP5xNHTF1H6qrN3eAK5Xm14N2cZpT+K\noZP0R1r2DiviEsgNy9OPOpCrw9On7XTbO5mZqdO27PBT4m5EzruoGKU/ipFO9o4s6fMelUgRF9Ln\nKUERpr0jW3BtYMA/cEnbq7Z3ZDx9Vdk7Xqdt+SlxtzHMyVkGzBgtpN/RER7p856cFaW9E1Yg18/e\noSTqV+YiKG8+6EwAXvKmY+pW+l5tgjx9VntnRFfZNBDDaCH90WjvpEuefpDiZmmvw9MPI5Dr1UbV\n9XGvsmlIPwLorL8TJ9IPU+nrJH2VO3JV5unL7MiVPXkrqL2fpx91yiZtw7rZivf6uNfeMaQfAdIp\neyc3N9raOyywrPTK3gmr4JqfvaOb9EV25ALhZO8A/J4+z/VuC4RbGYeoEIMpjD6MluwdWaXPmrJJ\nb0YeFZXuefqsgVzRlEva3q8AmsjmrDgpfV57R2ZzFlX5cTgJ0JB+BMjNJSljPHnorIiTvSObp8+q\n9Hk3ZgF6yjCEWU9ftuBaXJW+SAA4rECuzOasuPj5gCH9SJBI6PH1LUvP5qy4e/q81g6gpwxDmLV3\n4mDvqA7IAmKxgCgDuaybs4Jed5gwpB8Rpk1Tb/F0dxPPUOSUKy/InJMblqcvQvojwd7RqdRl23uR\nt6inH1Yg18/TZ7V3vHL6jdIf5dDh67e18R0kwoLsbPJhZbFC7LCseJN+3AO5umvvhGHvhOnp8z4d\n8Kpx3s1ZrAtEFDCkHxF0kH5rq1o/n0LE4jl7NrVgiICH9Hk3ZgHRlmFQUXtHRZ6+DOnLFE6LQ/aO\nqkAu6+Yso/QN0kbpA2JpmzJ+PhCO0u/pIWl0fkhneyeuKZvpuDmL58mAKn27JWqUvsGIV/pxJ/1E\nIphYAb7aO8beSUFHwTXd2TuqNmdlZJAv+2EwRukbpJXSFyF9GT8f4MvTFyF9gM3i4dmRS31sv6cH\nVSmbsnn6cVX6YQVyeWrp0Ot5C7TZ+zdK38Ao/QDw5OnznppFwUr6rEo/kQi2eFSmbMbd3hlJBdd4\nNmcBwxcJo/QNjNIPAK+9wxvIBdQGXimCLJ6RYO/IlGWOi9LXuTnLrX+j9A2M0g8AvUG8ygDYodve\n4SH9oIVEVe2dKPP0qVoXKcssk/XDS/q8GT88JE7nxJrXb5S+AaZNIztyg7JHeKBT6fNm78gqfYBd\n7YuSvg6lH2TvhFlaWZe9I1OWWea4RJ5ArmWpJXFee8cofYNhGDuWkGJbm7o+dSl9kcPRZZU+oJ/0\ndSj9IHsn7OMSddg7rG2j9PT7+8mxiF5VLXk3UInYO06lb0jfQHn9HdXF1iii8PQBdtIX2ZwFxNve\nCSJ9lnnJHqIiWkrBb2wdnr7bAiOy81fV5ixg+CJhCq4ZAFDv67e2xieQq0rps6Rtppu9I0v6AwMk\nBzyItHXZO6xlmUU9fScZJ5MkfuCl2nkJXKSNSNkGo/QNhkE16Y9WpZ8u9g7dpcmi+PxIn6ZrBtVm\np0rdrVieTBkHlgXD7ymBt8qmagL3auMXbOXZnAUYpW/gAaP0/cGaqx8n0vd7eqBEy3KQhp8fz/q0\nkJHhfXSfbtJX6emHRfoiSp91kTBK3wCAWtJPJgnRTpqkpj874q70RTdnBdk7PMrc3qcsWQP+1oyK\nflhJnzeTxt5WlacvUo45iPR5A7myi4RR+gYA1JJ+ezshfB1ncIqkbIadvaMjkMtTd4fCz94RIWtR\na4ZCVq2rbpuuSp/X3nH2b5S+AQC1pK/LzwfEUjZHgqfPa+0AwfYOa38ZGSTl0E1p88zLyyaKq6fv\nNmaYnr4ue8cofQMAaklfl58PRJu9E+XmLFHS97J3eIq3Ad7B3DDtndGm9FVtznKrvWOUvkHaKP0o\nPX2dKZs6lL4qe4f2JUv6XuQrS/osO3J5SyMA0ZO+rs1ZRukbAEgvpd/RwXdObphKX1cgV4e9EwXp\nR2HvyByMHgbpiwRyZTZnGaVvAADIzycBWJaiYkHQqfSzssgHluV4QQoVSp8nZVNHIDdqe0dGpVPI\n2Dteef4sm7NEd/O6PSHoyN5R5ekbpW/AhYwMoKAAOHlSvi+dSh/gz+BJB08/CnuHZ5467R0WtU7z\n/J0KV7fSjyqQG+TpyywSRukbDEKVxaNT6QN8vr5lEdKPe/ZO2IHc7m7+3b1ufYWVvUPbO0lYZnNW\nWKpdh6fPY++4Vdk0St8AgDrS11Vhk4InbbO3l6jEIGIIAgvpW1a8lL7fQnL2bHyUfhikH5ann5VF\nNifyHEQuWyo56Hq3evpG6RsAUKv0dds7rKSvwtoB2Ei/p4fcTJmZ/P2zkD6PBw/42zuqlH5Ynj4g\nTvqinr4I6ScS7jtggxaKMDdnGaVvMAhV5ZV1K30e0lcRxAXYSF9U5QPR5OmHTfpR2jsiSl9kcxbg\nTrIqC66Z2jsGymCUvjdY8vRlSD/u9o6K7J0o7R0nSdKS0H6KV6T2jls73WUYLMv/tZjaOwaeSBdP\nnyd7J12Ufti1d1QGcmXtHRYiBcRJn3ra9uNAKakGna3La++4tdO9OYuezOX1WozSN/CEKtJvaSHp\nn7oQhdJnydMX3ZgFpLe9E3X2ThCBJRLD1T5rfn9YpK/zzFuj9A08oYL0LSucPP24evoiG7OAYKXf\n3a02kJuO2TtuAVnWpwRnW9YjGlWQftBYvGUVnNk4vE8SRukbDEIF6Z8+TchENkXSDzwpm2Fm7+gM\n5HZ38y9efn2OlOwdFsXu1palXZSBXJ68e7+gL+C+SBilbwBADemfOkVKOuhEXJW+zFhBSl/EOkqH\n7J2BAXHiBvjiATzqG1Br7/Ckhg4MkC+v1F+3sgqjTum3tLRg2bJlmDt3Lq666iq0tbW5Xjdz5kyc\nf/75WLRoET72sY8JT3SkIjeXZAGwVJP0gm4/H+D39FWQPlWpyaT3NTKkn51NbnSnt0vR1cVvHam0\nd3Rl71DSZj22USSbxm1sUU8/jOydoCAz7z6AEVl7Z926dVi2bBkOHjyIK664AuvWrXO9LpFIoLa2\nFnv37sXu3buFJzpSkUjI5+rHTemfOaPm2MZEIljtyywwiUSwHcNL+mHYO7LZO/RgdRbIKP0oPX1e\nUg5S4m7XB9k7I07pb9++HatXrwYArF69Gs8++6zntRZPTd5RCFmL59SpcJQ+a8rm6dPqzuoNIv3O\nTrn4gZ/FI6L00yF7p7dXzZMCb1tWT9+N9FUrfd7sGqP0ATQ1NaGoqAgAUFRUhKamJtfrEokErrzy\nSixevBiPP/646HAjGrKkHzd7R5XSB9hIX8ZKCiJ9Xk8/HbJ3VNlDLG15Pf3MzNTGJ57xVNk7qq6P\ns9L3XXuWLVuG48ePD/v597///SHfJxIJJDzMsN/97ncoKSlBc3Mzli1bhnnz5mHp0qWu1953332D\n/6+urkZ1dXXA9EcGVCh93fbOpElEwbPg9GmySKhAUK6+LOn72TGiSj/u2Tthkj6v0gdSBEuDqr29\nwZ+nMEjcqdx5AsUqlX5tbS1qa2uF2/tO45VXXvH8XVFREY4fP47i4mIcO3YMhYWFrteVlJQAAKZN\nm4brr78eu3fvZiL90QQVSv+cc9TNxw2TJ5MDX1gQtr3zt4+YEFTbO5SoLWt4UDCq7J2oSF/E06ft\n+vpS71VPT/CTbNhKn2UfgK4duU5BfP/993O1F7Z3ampqsGnTJgDApk2bcN111w27pqurC2f+5gl0\ndnbi5ZdfxnnnnSc65IhFOij9yZNJfR8WpJu9ozKQm5lJvpy+NCCWvaMjZVMF6bMQmKzSt4+nw97h\nCcy6efRRKX1ZCJP+d7/7XbzyyiuYO3cuXn/9dXz3u98FADQ2NuLqq68GABw/fhxLly7FwoULcckl\nl+Caa67BVVddpWbmIwjp4OmPH08+9G4phE6otHd0Zu8ARE2qVPq0T7eFRMTecXu/0yV7R8TTdxtT\nB+nLlmJmOeCdJ68/TAivPfn5+Xj11VeH/by0tBTPP/88AGDWrFl4++23xWc3SlBYCHjEwZkQRvZO\nIpGyeKZN879Wtb3jt4dBd/aO6IlcsideAeqyd9xIW0bp69yRC7jbQizn+eq0dzIzUxu4MjKCX4vb\noqJzxzwPzI7cGKCkBDh2TLx9S4t+ewdg9/XTyd5RHcgFvDN4osre0WHviJA+q9IfOzYce8c5ht97\nQg9qoeqdV+mzvvYwYEg/BpAl/TCUPsBO+mHaOzpTNkWLuam0d9I5e8ep2FktDudCFRbp84xhlL6B\nFAoKiDr22tTjh2SSkKzOWvoULKTf10e+RIugOREV6ff3ky+RG9XN3rGs0Ze9I+rpO1+3yEldrCmY\ndN8oL+kbpW8ghYwMoKhITO23tRErReSMWF5MmRKcwUOtHZa6LiyIKk+fVu8UeR1u9k5/P/k782Rw\njER7R6SyJ0vg2a12vx/JZmSQL7oJjHdh4VX6rO9ZGDCkHxOUloqR/smT4Vg7AJvSV2ntANEFckX9\nfMB9IeG1drz6AfieGKLO3nGSNwvpiyp9exvWej10frykz6L0jb1j4AtRX7+5mWT/hAFW0lcVxAUI\nofvV/JFN2dRF+k51LXIKl9fcZJW+bPZOTw/7JitR0udN2XS2YSF9e8BYtdI39o5BIERJ/8SJeJG+\nyswdwL/mj2XptXdESd/N3uHN3PGaGyUSVpvIzSLiWTTcTs5iTRkVVfoigVwRpW9vo1rpm0CuQSBK\nS4HGRv52zc3BefOqEIXSnzjRu+ZPTw+5uWR2OvopfZUnconYO25z4yFs2odzLrJPCqxPLU6fXae9\nI6L0nSRulL5BqEgXpR8UyFXt6U+a5K30VZzQ5ZUdFFd7h5f03RYgnj7GjRtKpv39qZz1IMgofd4A\nsIjSty8UOpW+ZcWryqYh/ZhAxtOPk9IP095RQfo5Oe6BYhnS12nvREH69vY8JSCc1hBrW6fSZwk8\ni8QBZOwdHqVP6+6oymiThSH9mKCkRMzeiZunr9re8SvpLJu5A3iTvoyn76b0RewdGmi015bnfWKg\npG0/x4gne8dJ+jIlIHQGcp1Kn2WssJR+nPx8wJB+bCCashmm0p8yJfyUzXRU+uPGDbeMROwdt+Mc\neZV+RoZYLRsK51MLj9IX9fRFArnOhYJlLN1KnyczKEwY0o8Jpk0DWlvdS/L64cSJ0WvvqDiA3Y/0\nRQO5OTnDvXgRewcY7uvzkC6FzMLhfGrhWbzclD5L27CUPm8g1/lkwFpPP05BXMCQfmyQmUnI2+Wg\nMl+M9Dx9SvpuxyyrUvpu+wBklL7bhjIRewcYTtgqDmuX8fTDsHfCUvoy9g6P0jf2joEneC2egQFS\nbG3qVH1zsiOK7J2sLHJzumXYxNXeccsIErF3gOFKP2rSlwnkhrkjV7e9w1N7xyh9A0/wZvC0thKC\nDesDNW5cqnCYF1QrfcA7bTOugVwv0ldh74jYTs4+wlT6op4+JdeBgeBTrYChqt2yolf6JpBrwARe\n0g/TzwdIYDGo6JqOU7y8NmjpVvoynr6T9FXaO7KpnzLZO7yBXFmlT8k4KN3RrtppcbugIoRG6RtE\nDt60zTD9fIr8fGIpeaGlBcjLUzumVzBXJek7YwaqPX1V9o7IvJzEzZO940b6YaZsss7V3oZ1UdO5\nI5cqfcsySt/AB7ylGMJW+gBR8S0t3r9vbVV/ipeXvaMie4eqSGd9GdWevqjSd/P0ZZU+Tx8y9o6o\np8+rwJ1tRBcXlUrfXrrZKH0DT1RUAPX17Nc3NZE6/GGioMBb6Q8MEOtH9YEuXvaOqvRQN4tHxtN3\ns3dEn0pU2DsyTwvUS6dWRVj2jl21sx68Ym+jY3HhUfpAKm3T5OkbeGL6dOCjj9ivb2wEysr0zccN\nfqR/+jQhNpkCaG7wsndOnyYZRbJwI33VSl806KzD3uFdOOztwwrkUjJmDYA7CTxqpQ+k0jaNvWPg\nCUr6bjnpbmhsJJZQmPAjfR3WDuBdikFVplBurjvpiwZy3Tx9UaWvw97hXTjsG7TCDuSyvl5Rpa/L\n0wdSpG/sHQNP0GMPg3LhKeJG+jqCuIC30m9vV2fvODdonTkjng7qpfTjQvoySp8nkCvj6dN2PGWc\neT19ndk7QGqxNErfwBc8Fk8cSV+X0veyd1SQ/sSJ7qQvuslMpafvtJ5E7B1nTX0RpS9i7zjr9ogo\nfVZ7R0Tpy9o7LLuEz541St8gADyk39AQL9LXZe94BXJVkb6bfSRD+irtHSfpiyp9macFp9JntXcm\nTBDbFGYfjzXrKWylz/IEQl+HUfoGvpg+HairC76uu5uQQViHolPEyd5RqfSd/cuQPj14xF4SOS6k\nT2Ak9qMAAA6KSURBVHPHeZSnXbHz2Dt2a8qy2LNY7O10Kn0ZT59lXtTeMUrfwBcVFWxK/9gxovLD\nPphhJNo7TqVvWcTuESX9RIIQgt3iidLesdtNdNHg+dw47R0epU/HpU8IGQyMY2/HqvRp0HRgQDw1\nlIf0WeZF3zeTsmngC1alH4WfD8TH3kkmCTHIbs6i/dsXla4ucpPKpJ46M4JEUzZVKH17H7IpnzyL\nF1XslsU3rlPps5B+IpGya0TsHZb3ldfesXv6hvQNPMHq6UdJ+i0t7mmluuwdN6Xf0UFIlEU5svRv\nX1RkrB0K50IlqvRzc4cGmUWVPu1DdnMXz/iZmUSB9/SIkz7PfGkMQUTps5I+T4CZLpYi77lOGNKP\nGaZPBz78MPi6qEh/7Fjy4XerQa/L3nEr6ayymqdT6asgfftCRe0iVfZO2Erf3p538aIEzvNUJqL0\nAX7S51X6zv0KLPZOT48hfYMAlJeTmjp+5YuB6Egf8LZ4dNk7+fmkbzva2tTsxgX0KX1K+j09xCoS\nsYucpC8Sa7D3IWsP8ZI+9ed5FhtnLIB1vjSOwkr69lRWlsWU9k93GQf9PY3SN2BCVhYwYwbwwQf+\n19XXR0f6XpU2ddk7eXnDLSWVTxU6lL7d3pGpBuokfZG52eMLsvZQZydfe6q+ecbNzk7V0ecpVEcX\nC1bSp6m1lsVGzPS1sD59UE9f9CwFXTCkH0NUVgKHD/tf89e/ArNmhTMfJ7yUvi57Z9w44g/bs2FU\njqVD6dvtnahJX1bpOxcNXnuHV+nT7CceggX47R26SPT2sj2J0dfCSuJ2pS9SYVUXDOnHEKykP3t2\nOPNxYupU4OTJoT+zLH2kD5B+7SWdVVpJupQ+7VN2dy8l3P5+QmgynnzYnr6I0qfturr4FilKyqxz\npKmsrGPY58RC4sbTN2BGEOmfOUM+2GGXVaYoLh5+gHtHB8mkUZFC6Qanr69a6dsPfFcRJLbbO+3t\n4uWm7YRLM5Z492ZE6emLKH3aTkTp85A+78LCOyfj6Rswo7ISOHTI+/fU2gl7YxaFG+nrru3vVPoq\n4wc6FhS7vSMTdLYTrmgROLsnL2oPyXj6sqTPm7JJF0fWufEqfV5P35C+QSCClP6RI9H5+YD7Wb7H\nj5PFQBdoMJdCpdJ3BopVWEd2e0dG6dOTvXp6xG0i+8LR3s6/AMl6+iL2Dn1CEAnk6lL69kAur6dv\nSN/AFzNmkGJqziP8KKL084FoSF+npz9+/NBAsYoFxW7vyKaXTp5M+hIlfUpWAwNi1hVdNOjRfzxB\nSVGlz5spA6QWGF2kTz36zk5j7xgoxpgxpAbPkSPuv49a6Udh70ydSg6Cp1CdHmpfVFT0rUrpA6Rt\na6s46WdkpIquiZJ+R0fK2uGxFWWUfnc3/47cri52e2fsWJJzf+YM2xiJBHkfW1v5ArkmZdOACeef\nD7zzjvvvRqPSLyoiCwtFc7PaCqN20lfxFEGJGpBX+nl5cqQPpCwaEXuHKn2RWkcynn5XF998ee2d\nRIK0OXWKL0OIlfTtnr5J2TQIxMKFwNtvu/8uaqVfUJAiAYpjx/SSfnHxUNI/fpwsPqrgVPqypD9t\nWmovg6zSV0H6NENJROnTBUNkv0FuLpm3qL3Ds2Da7R3WgDcv6U+YQD4fxtM3UA4v0u/uJn5/lKSf\nkTG8RtCHH5JYhC7YLaX+fnKjFhaq658WkgMIwcraO/a9DHFQ+nRDnYzS583cAVKZUbykTy0lngXT\nbu+wLk6U9HlKRLS0GE/fQAO8SH//fmDu3OgPZZg5cyjpHz0aHuk3NxMykSl97IS9tIQKpU9J37II\n6avw9GXmRUlfVOmfOUPG57XU6ILFe54xXSx02ju0Da+9w0r6tMyDIX0DJlRUkCCQM2D6zjvAeedF\nMyc7Zs4kRA+QrJC6uvBI/9gxtdYOQMisuZncoH194oeiU9CAZ1cXIS9Ze6etjRTiE326kVH6+fmp\n8adO5W/b0kIWwGnT+No1NpLPlkjKpk5759gxtveQPj0a0jdgQiJB1P6+fUN//vbbJMgbNeykf/w4\nuQl0frDz8lIbY3QEjSsqSBG7+npS6VTFxjeacSRbEZWqZZkMKfokI6L0s7LI3/fgQX7Sp3NvbuZr\nW1BAYldTprD/Leh+C157p6GBL27w4YdsC1hBAVko+/rYTxsLA4b0Y4zFi4E//GHoz958E1iyJJr5\n2DF7NiEBgGQTzZypd7xEIhVH0KH0KyrI00pdHSF9FZg6ldz0x4+rIX1Zpd/SIqb0ATLue+/xqXVg\nqNLnJf2//pVvrsXF5ACijAx2+zMnh2yEZP08TZjAR/qNjfxprrohTPq//OUvce655yIzMxNvvfWW\n53U7duzAvHnzMGfOHKxfv150uFGJyy8HXn899X1nJ/H0L7ooujlR2FNK3303HMtp7lyy0Bw8SHYt\nqwQ9prKujiwAKjB1Kvl7TZkid1wetZ5OnBBX+gUFhNzGjBFLH6SkL6L0T54k9hBPPEKU9I8c4csw\nKi4mT6ysT47FxWThZCH9yZPJhjZVIkIVhEn/vPPOwzPPPINLL73U85pkMom1a9dix44d2L9/P7Zs\n2YIDBw6IDjlqUFtbCwBYuhTYsye1yec3vyGEHwd/cM4corg7OojldMEFesah7wVASP/99wmRVlWp\nHYceSK+S9CsqgN/9Tv6mp7WY6utrpZT+7t3kCU1EdRYWkvddxNM/cYJkHfEE3vPziRfuFQuxfy7s\nc+zu5ost0SdUVtI/5xzyLwvpZ2SQ911nrEsEwqQ/b948zJ071/ea3bt3o7KyEjNnzkR2djZWrVqF\nbdu2iQ45akA/0Lm5RO0/8wz5+dNPA9dfH9287MjKAubPB/buJaS/cKGecZykf/AgcOCAetLPzycl\nBt57Tx3pn38+8OKLQFmZXD9z5pDXfeZMrfCGtGnT5Db1FRYS1cpr71CBwpvfT1+nl9J3I/0xY0g7\nns8GJXEdpA+MMNJnQUNDAypsd1B5eTkaGhp0Djni8MUvAo88QlT1M88AN98c9YxSWLkS2LCBqNAw\nLKfFi4GXXybvhep9CokE8PGPA7/8JXDJJWr6PP98EiSUtaLGjyeEO2aM+EHw9DWJLhrUmhGNTdTX\n811P53nZZXztiouJGGEFL+nTz106k77vA9eyZctw3JkzCOCBBx7AtddeG9h5Ik7RizTF9dcD//mf\nwIIFwJe/LK8aVeK224B584A1a/g37Yhg8WJiE1x3nZ59CjffTIJ0F16opj+aZfX1r8v3lZkJXHyx\neHuawii66Wz1arJwiMRuPvqI2HI8GD8e2LoVuOEGvnbl5XxznDWLvDesm95mzybZT6xPLsXF0ZZM\ncYUlierqamvPnj2uv/v9739vLV++fPD7Bx54wFq3bp3rtbNnz7YAmC/zZb7Ml/ni+Jo9ezYXZyvZ\n02jZT6y2YfHixTh06BCOHj2K0tJSbN26FVu2bHG99nDQ+YAGBgYGBtIQ9vSfeeYZVFRUYNeuXbj6\n6quxYsUKAEBjYyOuvvpqAEBWVhY2bNiA5cuXo6qqCrfccgvm8xhuBgYGBgZKkbC8ZLqBgYGBwYhD\n5DtyzeYtgrq6Olx++eU499xzsWDBAvzHf/xH1FOKHMlkEosWLWJKGhjJaGtrw4033oj58+ejqqoK\nu3btinpKkeHBBx/Eueeei/POOw+f//zn0dPTE/WUQsNdd92FoqIinGeLVLe0tGDZsmWYO3currrq\nKrS1tQX2Eynpm81bKWRnZ+Ohhx7Ce++9h127duG//uu/Ru17QfHII4+gqqpq1GeBffOb38TKlStx\n4MABvPPOO6PWIj169Cgef/xxvPXWW3j33XeRTCbx1FNPRT2t0HDnnXdix44dQ362bt06LFu2DAcP\nHsQVV1yBdevWBfYTKembzVspFBcXY+Hfdjjl5uZi/vz5aGxsjHhW0aG+vh4vvPACvvSlL3kmCowG\ntLe3Y+fOnbjrrrsAkDjZZJni/GmMSZMmITs7G11dXejv70dXVxfK4pTDrBlLly5FniPndvv27Vi9\nejUAYPXq1Xj22WcD+4mU9M3mLXccPXoUe/fuxSWqdgmlIb71rW/hBz/4ATJEdyONEHzwwQeYNm0a\n7rzzTlx44YW455570GU/smwUIT8/H3//93+P6dOno7S0FFOmTMGVV14Z9bQiRVNTE4r+VpCpqKgI\nTfbj5TwQ6R012h/b3dDR0YEbb7wRjzzyCHJli7qnKZ577jkUFhZi0aJFo1rlA0B/fz/eeustfPWr\nX8Vbb72FnJwcpkf4kYgjR47g4YcfxtGjR9HY2IiOjg48+eSTUU8rNkgkEkycGinpl5WVoa6ubvD7\nuro6lMetJF2I6Ovrww033IAvfOELuO6666KeTmR48803sX37dpxzzjm49dZb8frrr+OOO+6IelqR\noLy8HOXl5bj4b9txb7zxRt+qtiMZf/rTn7BkyRIUFBQgKysLn/vc5/Dmm29GPa1IUVRUNFg14dix\nYyhkqMgXKenbN2/19vZi69atqKmpiXJKkcGyLNx9992oqqrC3/3d30U9nUjxwAMPoK6uDh988AGe\neuopfPrTn8bmzZujnlYkKC4uRkVFBQ7+7fCCV199Feeee27Es4oG8+bNw65du9Dd3Q3LsvDqq6+i\nSnXlvTRDTU0NNm3aBADYtGkTm1jk2r+rAS+88II1d+5ca/bs2dYDDzwQ9XQiw86dO61EImFdcMEF\n1sKFC62FCxdaL774YtTTihy1tbXWtddeG/U0IsXbb79tLV682Dr//POt66+/3mpra4t6SpFh/fr1\nVlVVlbVgwQLrjjvusHp7e6OeUmhYtWqVVVJSYmVnZ1vl5eXWT3/6U+vUqVPWFVdcYc2ZM8datmyZ\n1draGtiP2ZxlYGBgMIowulMjDAwMDEYZDOkbGBgYjCIY0jcwMDAYRTCkb2BgYDCKYEjfwMDAYBTB\nkL6BgYHBKIIhfQMDA4NRBEP6BgYGBqMI/x+3ghdT1LKwsgAAAABJRU5ErkJggg==\n", - "text": [ - "" - ] - } - ], - "prompt_number": 3 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These images can be resized by dragging the handle in the lower right corner. Double clicking will return them to their original size." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "One thing to be aware of is that by default, the `Figure` object is cleared at the end of each cell, so you will need to issue all plotting commands for a single figure in a single cell." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Loading Matplotlib demos with %load" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython's `%load` magic can be used to load any Matplotlib demo by its URL:" - ] - }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plotting with Matplotlib" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython works with the [Matplotlib](http://matplotlib.org/) plotting library, which integrates Matplotlib with IPython's display system and event loop handling." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## matplotlib mode" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To make plots using Matplotlib, you must first enable IPython's matplotlib mode.\n", + "\n", + "To do this, run the `%matplotlib` magic command to enable plotting in the current Notebook.\n", + "\n", + "This magic takes an optional argument that specifies which Matplotlib backend should be used. Most of the time, in the Notebook, you will want to use the `inline` backend, which will embed plots inside the Notebook:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also use Matplotlib GUI backends in the Notebook, such as the Qt backend (`%matplotlib qt`). This will use Matplotlib's interactive Qt UI in a floating window to the side of your browser. Of course, this only works if your browser is running on the same system as the Notebook Server. You can always call the `display` function to paste figures into the Notebook document." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Making a simple plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With matplotlib enabled, plotting should just work." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%load http://matplotlib.org/mpl_examples/showcase/integral_demo.py" - ], - "language": "python", + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, "metadata": {}, - "outputs": [], - "prompt_number": 4 - }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, 3*np.pi, 500)\n", + "plt.plot(x, np.sin(x**2))\n", + "plt.title('A simple chirp');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These images can be resized by dragging the handle in the lower right corner. Double clicking will return them to their original size." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One thing to be aware of is that by default, the `Figure` object is cleared at the end of each cell, so you will need to issue all plotting commands for a single figure in a single cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading Matplotlib demos with %load" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IPython's `%load` magic can be used to load any Matplotlib demo by its URL:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%load http://matplotlib.org/mpl_examples/showcase/integral_demo.py" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "\"\"\"\n", - "Plot demonstrating the integral as the area under a curve.\n", - "\n", - "Although this is a simple example, it demonstrates some important tweaks:\n", - "\n", - " * A simple line plot with custom color and line width.\n", - " * A shaded region created using a Polygon patch.\n", - " * A text label with mathtext rendering.\n", - " * figtext calls to label the x- and y-axes.\n", - " * Use of axis spines to hide the top and right spines.\n", - " * Custom tick placement and labels.\n", - "\"\"\"\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from matplotlib.patches import Polygon\n", - "\n", - "\n", - "def func(x):\n", - " return (x - 3) * (x - 5) * (x - 7) + 85\n", - "\n", - "\n", - "a, b = 2, 9 # integral limits\n", - "x = np.linspace(0, 10)\n", - "y = func(x)\n", - "\n", - "fig, ax = plt.subplots()\n", - "plt.plot(x, y, 'r', linewidth=2)\n", - "plt.ylim(ymin=0)\n", - "\n", - "# Make the shaded region\n", - "ix = np.linspace(a, b)\n", - "iy = func(ix)\n", - "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n", - "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n", - "ax.add_patch(poly)\n", - "\n", - "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n", - " horizontalalignment='center', fontsize=20)\n", - "\n", - "plt.figtext(0.9, 0.05, '$x$')\n", - "plt.figtext(0.1, 0.9, '$y$')\n", - "\n", - "ax.spines['right'].set_visible(False)\n", - "ax.spines['top'].set_visible(False)\n", - "ax.xaxis.set_ticks_position('bottom')\n", - "\n", - "ax.set_xticks((a, b))\n", - "ax.set_xticklabels(('$a$', '$b$'))\n", - "ax.set_yticks([])\n", - "\n", - "plt.show()\n" - ], - "language": "python", + "data": { + "image/png": [ + "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\n", + "iISh/weZPyRnS1m/IAAAAABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "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\niISh/weZPyRnS1m/IAAAAABJRU5ErkJggg==\n", - "text": [ - "" - ] - } - ], - "prompt_number": 5 + "output_type": "display_data" } ], - "metadata": {} + "source": [ + "\"\"\"\n", + "Plot demonstrating the integral as the area under a curve.\n", + "\n", + "Although this is a simple example, it demonstrates some important tweaks:\n", + "\n", + " * A simple line plot with custom color and line width.\n", + " * A shaded region created using a Polygon patch.\n", + " * A text label with mathtext rendering.\n", + " * figtext calls to label the x- and y-axes.\n", + " * Use of axis spines to hide the top and right spines.\n", + " * Custom tick placement and labels.\n", + "\"\"\"\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.patches import Polygon\n", + "\n", + "\n", + "def func(x):\n", + " return (x - 3) * (x - 5) * (x - 7) + 85\n", + "\n", + "\n", + "a, b = 2, 9 # integral limits\n", + "x = np.linspace(0, 10)\n", + "y = func(x)\n", + "\n", + "fig, ax = plt.subplots()\n", + "plt.plot(x, y, 'r', linewidth=2)\n", + "plt.ylim(ymin=0)\n", + "\n", + "# Make the shaded region\n", + "ix = np.linspace(a, b)\n", + "iy = func(ix)\n", + "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n", + "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n", + "ax.add_patch(poly)\n", + "\n", + "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n", + " horizontalalignment='center', fontsize=20)\n", + "\n", + "plt.figtext(0.9, 0.05, '$x$')\n", + "plt.figtext(0.1, 0.9, '$y$')\n", + "\n", + "ax.spines['right'].set_visible(False)\n", + "ax.spines['top'].set_visible(False)\n", + "ax.xaxis.set_ticks_position('bottom')\n", + "\n", + "ax.set_xticks((a, b))\n", + "ax.set_xticklabels(('$a$', '$b$'))\n", + "ax.set_yticks([])\n", + "\n", + "plt.show()\n" + ] } - ] + ], + "metadata": { + "signature": "sha256:74dbf5caa25c937be70dfe2ab509783a01f4a2044850d7044e729300a8c3644d" + }, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Raw Input in the Notebook.ipynb b/examples/IPython Kernel/Raw Input in the Notebook.ipynb index 660d2ba..f9887b2 100644 --- a/examples/IPython Kernel/Raw Input in the Notebook.ipynb +++ b/examples/IPython Kernel/Raw Input in the Notebook.ipynb @@ -1,191 +1,158 @@ { - "metadata": { - "name": "", - "signature": "sha256:ac5c21534f3dd013c78d4d201527f3ed4dea5b6fad4116b8d23c67ba107e48c3" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Using `raw_input` and `%debug` in the Notebook" - ] - }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using `raw_input` and `%debug` in the Notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Notebook has added support for `raw_input` and `%debug`, as of 1.0." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Python 3 compat\n", + "import sys\n", + "if sys.version_info[0] >= 3:\n", + " raw_input = input" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Notebook has added support for `raw_input` and `%debug`, as of 1.0." + "name": "stdout", + "output_type": "stream", + "text": [ + "What is your name? Sir Robin\n" ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "# Python 3 compat\n", - "import sys\n", - "if sys.version_info[0] >= 3:\n", - " raw_input = input" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "name = raw_input(\"What is your name? \")\n", - "name" - ], - "language": "python", + "data": { + "text/plain": [ + "'Sir Robin'" + ] + }, + "execution_count": 2, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "What is your name? Sir Robin\n" - ] - }, - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 2, - "text": [ - "'Sir Robin'" - ] - } - ], - "prompt_number": 2 - }, + "output_type": "execute_result" + } + ], + "source": [ + "name = raw_input(\"What is your name? \")\n", + "name" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Python 2-only**: the eval input works as well (`input` is just `eval(raw_input(prompt))`)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Python 2-only**: the eval input works as well (`input` is just `eval(raw_input(prompt))`)" + "name": "stdout", + "output_type": "stream", + "text": [ + "How many fingers? 4\n" ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "fingers = input(\"How many fingers? \")\n", - "fingers, type(fingers)" - ], - "language": "python", + "data": { + "text/plain": [ + "(4, int)" + ] + }, + "execution_count": 3, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "How many fingers? 4\n" - ] - }, - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 3, - "text": [ - "(4, int)" - ] - } - ], - "prompt_number": 3 - }, + "output_type": "execute_result" + } + ], + "source": [ + "fingers = input(\"How many fingers? \")\n", + "fingers, type(fingers)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "def div(x, y):\n", - " return x/y\n", - "\n", - "div(1,0)" - ], - "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\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m\u001b[0m in \u001b[0;36mdiv\u001b[1;34m(x, y)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mZeroDivisionError\u001b[0m: integer division or modulo by zero" - ] - } - ], - "prompt_number": 4 - }, + "ename": "ZeroDivisionError", + "evalue": "integer division or modulo by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m\u001b[0m in \u001b[0;36mdiv\u001b[1;34m(x, y)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mZeroDivisionError\u001b[0m: integer division or modulo by zero" + ] + } + ], + "source": [ + "def div(x, y):\n", + " return x/y\n", + "\n", + "div(1,0)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%debug" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "> \u001b[1;32m\u001b[0m(2)\u001b[0;36mdiv\u001b[1;34m()\u001b[0m\n", - "\u001b[1;32m 1 \u001b[1;33m\u001b[1;32mdef\u001b[0m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[1;32m----> 2 \u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0m\u001b[1;32m 3 \u001b[1;33m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[0m\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "ipdb> x\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "1\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "ipdb> y\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "0\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "ipdb> exit\n" - ] - } - ], - "prompt_number": 5 + "name": "stdout", + "output_type": "stream", + "text": [ + "> \u001b[1;32m\u001b[0m(2)\u001b[0;36mdiv\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32m 1 \u001b[1;33m\u001b[1;32mdef\u001b[0m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[1;32m----> 2 \u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[1;32m 3 \u001b[1;33m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "ipdb> x\n", + "1\n", + "ipdb> y\n", + "0\n", + "ipdb> exit\n" + ] } ], - "metadata": {} + "source": [ + "%debug" + ] } - ] + ], + "metadata": { + "signature": "sha256:ac5c21534f3dd013c78d4d201527f3ed4dea5b6fad4116b8d23c67ba107e48c3" + }, + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/IPython Kernel/Rich Output.ipynb b/examples/IPython Kernel/Rich Output.ipynb index 83fff95..c3e8f0b 100644 --- a/examples/IPython Kernel/Rich Output.ipynb +++ b/examples/IPython Kernel/Rich Output.ipynb @@ -1,1368 +1,3059 @@ { - "metadata": { - "name": "", - "signature": "sha256:cf83dc9e6288480ac94c44a5983b4ee421f0ade792a9fac64bc00719263386c0" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "heading", - "level": 1, - "metadata": {}, - "source": [ - "Rich Output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In Python, objects can declare their textual representation using the `__repr__` method. IPython expands on this idea and allows objects to declare other, rich representations including:\n", - "\n", - "* HTML\n", - "* JSON\n", - "* PNG\n", - "* JPEG\n", - "* SVG\n", - "* LaTeX\n", - "\n", - "A single object can declare some or all of these representations; all are handled by IPython's *display system*. This Notebook shows how you can use this display system to incorporate a broad range of content into your Notebooks." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Basic display imports" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `display` function is a general purpose tool for displaying different representations of objects. Think of it as `print` for these rich representations." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import display" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A few points:\n", - "\n", - "* Calling `display` on an object will send **all** possible representations to the Notebook.\n", - "* These representations are stored in the Notebook document.\n", - "* In general the Notebook will use the richest available representation.\n", - "\n", - "If you want to display a particular representation, there are specific functions for that:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import (\n", - " display_pretty, display_html, display_jpeg,\n", - " display_png, display_json, display_latex, display_svg\n", - ")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Images" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To work with images (JPEG, PNG) use the `Image` class." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import Image" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 3 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "i = Image(filename='../images/ipython_logo.png')" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 4 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Returning an `Image` object from an expression will automatically display it:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "i" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "png": "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\n", - "prompt_number": 5, - "text": [ - "" - ] - } - ], - "prompt_number": 5 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or you can pass an object with a rich representation to `display`:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display(i)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "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\n", - "text": [ - "" - ] - } - ], - "prompt_number": 6 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "An image can also be displayed from raw data or a URL." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "Image(url='http://python.org/images/python-logo.gif')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 7, - "text": [ - "" - ] - } - ], - "prompt_number": 7 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "SVG images are also supported out of the box." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import SVG\n", - "SVG(filename='../images/python_logo.svg')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 8, - "svg": [ - "\n", - " \n", - " \n", - " \n", - " image/svg+xml\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", - "" - ], - "text": [ - "" - ] - } - ], - "prompt_number": 8 - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Embedded vs non-embedded Images" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By default, image data is embedded in the notebook document so that the images can be viewed offline. However it is also possible to tell the `Image` class to only store a *link* to the image. Let's see how this works using a webcam at Berkeley." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import Image\n", - "img_url = 'http://www.lawrencehallofscience.org/static/scienceview/scienceview.berkeley.edu/html/view/view_assets/images/newview.jpg'\n", - "\n", - "# by default Image data are embedded\n", - "Embed = Image(img_url)\n", - "\n", - "# if kwarg `url` is given, the embedding is assumed to be false\n", - "SoftLinked = Image(url=img_url)\n", - "\n", - "# In each case, embed can be specified explicitly with the `embed` kwarg\n", - "# ForceEmbed = Image(url=img_url, embed=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 9 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here is the embedded version. Note that this image was pulled from the webcam when this code cell was originally run and stored in the Notebook. Unless we rerun this cell, this is not todays image." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "Embed" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "jpeg": "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\nAFT+//9fBAAAZgQAAGYEAAAJBAAABwQAAAoEAAAKBAAADAQAABAEAAAEBAAA//8AAAAAAADABQAA\nKAIAAFQBAACAAAAAbwQAAKkBAAAJAQAAYwAAAAAAAAAAAAAAAwAAAAMAAAACAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAANAAAACMlrWmAABAAJAAkAIAqY\nB2QAZAASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgDu/wAAEgDu/wAAEgDu/wAA\nEgDu/+7/7v8AAAAAAAASABIAEgAQAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAACAAAQAAAAIAAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAigABAAAABAAIAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAoAEAAAAAEAAIAAEAAQCAAuABAAAAAAAAAAAAAAgAgAEAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAoAAQAAAAAAAABF1Yvq/udUJVCJsJVgaq7+\nSUkqAN4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAEAAgAEAAAAUjk4\nAAIABwAEAAAAMDEwMAEQAwABAAAAIAoAAAIQAwABAAAAmAcAAAAAAAAAjScAJAEAAMCpHQDbAAAA\nQBEAAEARAAAGAAMBAwABAAAABgAAABoBBQABAAAAPA0AABsBBQABAAAARA0AACgBAwABAAAAAgAA\nAAECBAABAAAA9BMAAAICBAABAAAA2wkAAAAAAAC0AAAAAQAAALQAAAABAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/2wCEAAkGBggGBQkIBwgK\nCQkLDRYPDQwMDRwTFRAWIR0jIiEcIB8kKTQsJCcxJx4fLT0tMTY3Ojo6Iio/RD44QjM3OTYBCQkJ\nDAoMFAwMFA8KCgoPGhoKChoaTxoaGhoaT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P\nT09PT//AABEIAHgAoAMBIQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsB\nAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEG\nE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW\n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\n", - "metadata": {}, - "output_type": "pyout", - "prompt_number": 10, - "text": [ - "" - ] - } - ], - "prompt_number": 10 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here is today's image from same webcam at Berkeley, (refreshed every minutes, if you reload the notebook), visible only with an active internet connection, that should be different from the previous one. Notebooks saved with this kind of image will be smaller and always reflect the current version of the source, but the image won't display offline." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "SoftLinked" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 11, - "text": [ - "" - ] - } - ], - "prompt_number": 11 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Of course, if you re-run this Notebook, the two images will be the same again." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "HTML" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Python objects can declare HTML representations that will be displayed in the Notebook. If you have some HTML you want to display, simply use the `HTML` class." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import HTML" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 12 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "s = \"\"\"
DateOpenHighLowCloseVolumeAdj Close
0 2012-06-01 569.16 590.00
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
Header 1Header 2
row 1, cell 1row 1, cell 2
row 2, cell 1row 2, cell 2
\"\"\"" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 13 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "h = HTML(s)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 14 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display(h)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
Header 1Header 2
row 1, cell 1row 1, cell 2
row 2, cell 1row 2, cell 2
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "" - ] - } - ], - "prompt_number": 15 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also use the `%%html` cell magic to accomplish the same thing." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%html\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
Header 1Header 2
row 1, cell 1row 1, cell 2
row 2, cell 1row 2, cell 2
" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
Header 1Header 2
row 1, cell 1row 1, cell 2
row 2, cell 1row 2, cell 2
" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "" - ] - } - ], - "prompt_number": 16 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "JavaScript" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Notebook also enables objects to declare a JavaScript representation. At first, this may seem odd as output is inherently visual and JavaScript is a programming language. However, this opens the door for rich output that leverages the full power of JavaScript and associated libraries such as [d3.js](http://d3js.org) for output." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import Javascript" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 17 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Pass a string of JavaScript source code to the `JavaScript` object and then display it." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "js = Javascript('alert(\"hi\")');" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 18 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display(js)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "javascript": [ - "alert(\"hi\")" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "" - ] - } - ], - "prompt_number": 19 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The same thing can be accomplished using the `%%javascript` cell magic:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%javascript\n", - "\n", - "alert(\"hi\");" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "javascript": [ - "\n", - "alert(\"hi\");" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "" - ] - } - ], - "prompt_number": 20 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here is a more complicated example that loads `d3.js` from a CDN, uses the `%%html` magic to load CSS styles onto the page and then runs ones of the `d3.js` examples." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "Javascript(\n", - " \"\"\"$.getScript('//cdnjs.cloudflare.com/ajax/libs/d3/3.2.2/d3.v3.min.js')\"\"\"\n", - ")" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "javascript": [ - "$.getScript('//cdnjs.cloudflare.com/ajax/libs/d3/3.2.2/d3.v3.min.js')" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 21, - "text": [ - "" - ] - } - ], - "prompt_number": 21 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%html\n", - "" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "" - ] - } - ], - "prompt_number": 22 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%javascript\n", - "\n", - "// element is the jQuery element we will append to\n", - "var e = element.get(0);\n", - " \n", - "var diameter = 600,\n", - " format = d3.format(\",d\");\n", - "\n", - "var pack = d3.layout.pack()\n", - " .size([diameter - 4, diameter - 4])\n", - " .value(function(d) { return d.size; });\n", - "\n", - "var svg = d3.select(e).append(\"svg\")\n", - " .attr(\"width\", diameter)\n", - " .attr(\"height\", diameter)\n", - " .append(\"g\")\n", - " .attr(\"transform\", \"translate(2,2)\");\n", - "\n", - "d3.json(\"data/flare.json\", function(error, root) {\n", - " var node = svg.datum(root).selectAll(\".node\")\n", - " .data(pack.nodes)\n", - " .enter().append(\"g\")\n", - " .attr(\"class\", function(d) { return d.children ? \"node\" : \"leaf node\"; })\n", - " .attr(\"transform\", function(d) { return \"translate(\" + d.x + \",\" + d.y + \")\"; });\n", - "\n", - " node.append(\"title\")\n", - " .text(function(d) { return d.name + (d.children ? \"\" : \": \" + format(d.size)); });\n", - "\n", - " node.append(\"circle\")\n", - " .attr(\"r\", function(d) { return d.r; });\n", - "\n", - " node.filter(function(d) { return !d.children; }).append(\"text\")\n", - " .attr(\"dy\", \".3em\")\n", - " .style(\"text-anchor\", \"middle\")\n", - " .text(function(d) { return d.name.substring(0, d.r / 3); });\n", - "});\n", - "\n", - "d3.select(self.frameElement).style(\"height\", diameter + \"px\");" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "javascript": [ - "\n", - "// element is the jQuery element we will append to\n", - "var e = element.get(0);\n", - " \n", - "var diameter = 600,\n", - " format = d3.format(\",d\");\n", - "\n", - "var pack = d3.layout.pack()\n", - " .size([diameter - 4, diameter - 4])\n", - " .value(function(d) { return d.size; });\n", - "\n", - "var svg = d3.select(e).append(\"svg\")\n", - " .attr(\"width\", diameter)\n", - " .attr(\"height\", diameter)\n", - " .append(\"g\")\n", - " .attr(\"transform\", \"translate(2,2)\");\n", - "\n", - "d3.json(\"data/flare.json\", function(error, root) {\n", - " var node = svg.datum(root).selectAll(\".node\")\n", - " .data(pack.nodes)\n", - " .enter().append(\"g\")\n", - " .attr(\"class\", function(d) { return d.children ? \"node\" : \"leaf node\"; })\n", - " .attr(\"transform\", function(d) { return \"translate(\" + d.x + \",\" + d.y + \")\"; });\n", - "\n", - " node.append(\"title\")\n", - " .text(function(d) { return d.name + (d.children ? \"\" : \": \" + format(d.size)); });\n", - "\n", - " node.append(\"circle\")\n", - " .attr(\"r\", function(d) { return d.r; });\n", - "\n", - " node.filter(function(d) { return !d.children; }).append(\"text\")\n", - " .attr(\"dy\", \".3em\")\n", - " .style(\"text-anchor\", \"middle\")\n", - " .text(function(d) { return d.name.substring(0, d.r / 3); });\n", - "});\n", - "\n", - "d3.select(self.frameElement).style(\"height\", diameter + \"px\");" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "" - ] - } - ], - "prompt_number": 23 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "LaTeX" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The IPython display system also has builtin support for the display of mathematical expressions typeset in LaTeX, which is rendered in the browser using [MathJax](http://mathjax.org)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can pass raw LaTeX test as a string to the `Math` object:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import Math\n", - "Math(r'F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "$$F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx$$" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 24, - "text": [ - "" - ] - } - ], - "prompt_number": 24 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the `Latex` class, you have to include the delimiters yourself. This allows you to use other LaTeX modes such as `eqnarray`:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import Latex\n", - "Latex(r\"\"\"\\begin{eqnarray}\n", - "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\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\\, \\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\\, \\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\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", - "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0 \n", - "\\end{eqnarray}" - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 25, - "text": [ - "" - ] - } - ], - "prompt_number": 25 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or you can enter LaTeX directly with the `%%latex` cell magic:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%latex\n", - "\\begin{align}\n", - "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\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\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", - "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n", - "\\end{align}" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "latex": [ - "\\begin{align}\n", - "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\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\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", - "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n", - "\\end{align}" - ], - "metadata": {}, - "output_type": "display_data", - "text": [ - "" - ] - } - ], - "prompt_number": 26 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Audio" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IPython makes it easy to work with sounds interactively. The `Audio` display class allows you to create an audio control that is embedded in the Notebook. The interface is analogous to the interface of the `Image` display class. All audio formats supported by the browser can be used. Note that no single format is presently supported in all browsers." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import Audio\n", - "Audio(url=\"http://www.nch.com.au/acm/8k16bitpcm.wav\")" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "\n", - " \n", - " " - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 27, - "text": [ - "" - ] - } - ], - "prompt_number": 27 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A NumPy array can be auralized automatically. The `Audio` class normalizes and encodes the data and embeds the resulting audio in the Notebook.\n", - "\n", - "For instance, when two sine waves with almost the same frequency are superimposed a phenomena known as [beats](https://en.wikipedia.org/wiki/Beat_%28acoustics%29) occur. This can be auralised as follows:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import numpy as np\n", - "max_time = 3\n", - "f1 = 220.0\n", - "f2 = 224.0\n", - "rate = 8000.0\n", - "L = 3\n", - "times = np.linspace(0,L,rate*L)\n", - "signal = np.sin(2*np.pi*f1*times) + np.sin(2*np.pi*f2*times)\n", - "\n", - "Audio(data=signal, rate=rate)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "\n", - " \n", - " " - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 28, - "text": [ - "" - ] - } - ], - "prompt_number": 28 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Video" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "More exotic objects can also be displayed, as long as their representation supports the IPython display protocol. For example, videos hosted externally on YouTube are easy to load:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import YouTubeVideo\n", - "YouTubeVideo('sjfsUzECqK0')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "\n", - " \n", - " " - ], - "metadata": {}, - "output_type": "pyout", - "prompt_number": 29, - "text": [ - "" - ] - } - ], - "prompt_number": 29 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using the nascent video capabilities of modern browsers, you may also be able to display local\n", - "videos. At the moment this doesn't work very well in all browsers, so it may or may not work for you;\n", - "we will continue testing this and looking for ways to make it more robust. \n", - "\n", - "The following cell loads a local file called `animation.m4v`, encodes the raw video as base64 for http\n", - "transport, and uses the HTML5 video tag to load it. On Chrome 15 it works correctly, displaying a control bar at the bottom with a play/pause button and a location slider." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from IPython.display import HTML\n", - "from base64 import b64encode\n", - "video = open(\"../images/animation.m4v\", \"rb\").read()\n", - "video_encoded = b64encode(video).decode('ascii')\n", - "video_tag = '