{ "metadata": { "name": "120907-Blogging with the IPython Notebook" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "**Update:** made full github repo for blog-as-notebooks, and updated instructions on how to more easily configure everything and use the newest nbconvert for a more streamlined workflow.\n", "\n", "Since the notebook was introduced with [IPython 0.12](http://ipython.org/ipython-doc/rel-0.12.1/whatsnew/version0.12.html), it has proved to be very popular, and we are seeing great adoption of the tool and the underlying file format in research and education. One persistent question we've had since the beginning (even prior to its official release) was whether it would be possible to easily write blog posts using the notebook. The combination of easy editing in markdown with the notebook's ability to contain code, figures and results, makes it an ideal platform for quick authoring of technical documents, so being able to post to a blog is a natural request.\n", "\n", "Today, in answering a query about this from a colleague, I decided to try again the status of our conversion pipeline, and I'm happy to report that with a bit of elbow-grease, at least on Blogger things work pretty well! \n", "\n", "This post was *entirely* written as a notebook, and in fact I have now created a [github repo](https://github.com/fperez/blog), which means that you can see it directly [rendered in IPyhton's nbviewer app](http://nbviewer.ipython.org/urls/raw.github.com/fperez/blog/master/120907-Blogging with the IPython Notebook.ipynb).\n", "\n", "The purpose of this post is to quickly provide a set of instructions on how I got it to work, and to test things out. Please note: this requires code that isn't quite ready for prime-time and is still under heavy development, so expect some assembly." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Converting your notebook to html with nbconvert" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first thing you will need is our [nbconvert](https://github.com/ipython/nbconvert) tool that converts notebooks across formats. The README file in the repo contains the requirements for nbconvert (basically [python-markdown](http://pypi.python.org/pypi/Markdown/), [pandoc](http://johnmacfarlane.net/pandoc), [docutils from SVN](http://docutils.svn.sourceforge.net/viewvc/docutils/trunk/docutils/?view=tar) and [pygments](http://pygments.org)).\n", "\n", "Once you have nbconvert installed, you can convert your notebook to Blogger-friendly html with:\n", "\n", " nbconvert -f blogger-html your_notebook.ipynb\n", "\n", "This will leave two files in your computer, one named `your_notebook.html` and one named `your_noteboook_header.html`; it might also create a directory called `your_notebook_files` if needed for ancillary files. The first file will contain the body of your post and can be pasted wholesale into the Blogger editing area. The second file contains the CSS and Javascript material needed for the notebook to display correctly, you should only need to use this once to configure your blogger setup (see below):\n", "\n", " # Only one notebook so far\n", " (master)longs[blog]> ls\n", " 120907-Blogging with the IPython Notebook.ipynb fig/ old/\n", " \n", " # Now run the conversion:\n", " (master)longs[blog]> nbconvert.py -f blogger-html 120907-Blogging\\ with\\ the\\ IPython\\ Notebook.ipynb\n", " \n", " # This creates the header and html body files\n", " (master)longs[blog]> ls\n", " 120907-Blogging with the IPython Notebook_header.html fig/\n", " 120907-Blogging with the IPython Notebook.html old/\n", " 120907-Blogging with the IPython Notebook.ipynb" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Configuring your Blogger blog to accept notebooks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The notebook uses a lot of custom CSS for formatting input and output, as well as Javascript from [MathJax](http://www.mathjax.org) to display mathematical notation. You will need all this CSS and the Javascript calls in your blog's configuration for your notebook-based posts to display correctly:\n", "\n", "1. Once authenticated, go to your blog's overview page by clicking on its title.\n", "2. Click on templates (left column) and customize using the Advanced options.\n", "3. Scroll down the middle column until you see an \"Add CSS\" option.\n", "4. Copy entire the contents of the `_header` file into the CSS box." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's it, and you shouldn't need to do anything else as long as the CSS we use in the notebooks doesn't drastically change. This customization of your blog needs to be done only once.\n", "\n", "While you are at it, I recommend you change the width of your blog so that cells have enough space for clean display; in experimenting I found out that the default template was too narrow to properly display code cells, producing a lot of text wrapping that impaired readability. I ended up using a layout with a single column for all blog contents, putting the blog archive at the bottom. Otherwise, if I kept the right sidebar, code cells got too squished in the post area.\n", "\n", "I also had problems using some of the fancier templates available from 'Dynamic Views', in that I could never get inline math to render. But sticking to those from the Simple or 'Picture Window' categories worked fine and they still allow for a lot of customization.\n", "\n", "*Note:* if you change blog templates, Blogger does destroy your custom CSS, so you may need to repeat the above steps in that case." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Adding the actual posts\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, whenever you want to write a new post as a notebook, simply convert the `.ipynb` file to blogger-html and copy its entire contents to the clipboard. Then go to the 'raw html' view of the post, remove anything Blogger may have put there by default, and paste. You should also click on the 'options' tab (right hand side) and select both `Show HTML literally` and `Use
tag`, else your paragraph breaks will look all wrong.\n", "\n", "That's it!" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "What can you put in?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I will now add a few bits of code, plots, math, etc, to show which kinds of content can be put in and work out of the box. These are mostly bits copied from our [example notebooks](https://github.com/ipython/ipython/tree/master/docs/examples/notebooks) so the actual content doesn't matter, I'm just illustrating the *kind* of content that works." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Let's initialize pylab so we can plot later\n", "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n", "For more information, type 'help(pylab)'.\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "With pylab loaded, the usual matplotlib operations work" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = linspace(0, 2*pi)\n", "plot(x, sin(x), label=r'$\\sin(x)$')\n", "plot(x, cos(x), 'ro', label=r'$\\cos(x)$')\n", "title(r'Two familiar functions')\n", "legend();" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The notebook, thanks to MathJax, has great LaTeX support, so that you can type inline math $(1,\\gamma,\\ldots, \\infty)$ as well as displayed equations:\n", "\n", "$$\n", "e^{i \\pi}+1=0\n", "$$\n", "\n", "but by loading the [sympy](http://sympy.org) extension, it's easy showcase math *output* from Python computations, where we don't type the math expressions in text, and instead the results of code execution are displayed in mathematical format:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%load_ext sympyprinting\n", "import sympy as sym\n", "from sympy import *\n", "x, y, z = sym.symbols(\"x y z\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "From simple algebraic expressions" ] }, { "cell_type": "code", "collapsed": false, "input": [ "Rational(3,2)*pi + exp(I*x) / (x**2 + y)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{3}{2} \\pi + \\frac{e^{\\mathbf{\\imath} x}}{x^{2} + y}$$" ], "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAFAAAAAmCAYAAABTahxxAAAABHNCSVQICAgIfAhkiAAAA95JREFU\naIHt2l2IVVUUwPHfjA1OYTOVhWWlk74IivZBGozpVD4UGlGUfRglGQVpVBRELzEvQQQRFAVF1K2o\noG8yH0IfgqKCrDHIoFCKoiFBakgssY/pYZ3TnJkc5957zrl3Zrh/GNhr5p611uyz19prr31pkYu2\nZjvQIJahD1/jM6zEEvyMNbgDv9Wj+JjMeBXmY2ZirIId9fk76RjCPGzDiXgPZ2M33lbn5I1lP25O\nxtfgdxxfhOJJwHF4FWehSyycd9GOhXkUZ1dgH75LxsPoyKN4kjFb/G9n4FbsSeSLcQh761U8Xg58\nRSzvh+pV3ETacQ8O41fMwaNlGstyLu7DQTxWltGSeVpE1hN4Eyc1w4nb8DlmNcDWUqNTSR4W4Q+R\nyzfgFpHzSucC7BNJNnVkGFc3wHYFPQXpuhY7C9JVFWkI/yVy3mAiL8Cf2NVIZwrgW7EppLSJTaO0\nejcNnZ14Dlvwjyg014ndKksXnsEV6BxH5zBW48Oina2CAZH37sIvOBZbE59KoZY30yaKzgF8iqtE\nVf897sZTYuc7hI/Fi6iGCvoTPdOam3BZRn4dM5Lx1hx6K4rLgQ2nlt3vxcz4hOTZv0WVf0qRTk0l\n6i0fNuCTZLxITOREvCAO9WOZh+Ui/MeySZRTk57hCX7GsgvnJ+O1+CaH7YrqQngiH5vyk67AWjaT\ntGvzRSJ3iVXUaXQJUTQT+diOzWLnhUdK9GWU0Vq5F9uNhO2gmLw1RTlVJ2vxjpi4FTivEUazE7hC\nHML7xQStGueZZXg2Iw/gB/W9jCJZiOuT8V6c2Ujjs/BwRl4v+oGnN8B2RTFlzEwj/cv3MbcAnVWz\nVBS+aXOxSyTJ9Q2w/ThOLVDfhXigQH1V0SZCOE3Ui8UEntNoR3LSjQeb7QS8pMQmZIlsFp30DrVt\naluKdGKT2Mmm2o3dDeJyaL/oRC+p4dn+opxYJyaQKE16ilJcEL3YKLrlN+J2vCXab3noH+f3M8SV\n5/PitAQny5yOsqXHanF/sE0k9UtxWk7HiqRLHBsr+AB3ivb9AVExlMGVommSXUwX4cf0A2mYLsCX\n/t/C71bQnWkBdIpK4bAouYaMLr2qZY5ov2VT1Ep8lJEPiAu17kTeIybwIJ5M5Kl6Z4QIofQs3n20\nD1ZJ/1H+dh3eyMi7xeUbmn96qIXLxUmpR2wQA2IVbSzZ7lwj98Y9ifzfVceMIzwwWekV9elscV2w\nXNSpr4nQykOfyKtHYp/4pkaHeIGDeDmnvWnH/VV+bruoNVtUyWL8JFJFL74y0i7D1ArhZtAuJm8+\nLhFfOBhqqkctWrRo0WL68C8vQNIth8nLywAAAABJRU5ErkJggg==\n", "prompt_number": 4, "text": [ "\n", " \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": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "eq = ((x+y)**2 * (x+1))\n", "eq" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left(x + 1\\right) \\left(x + y\\right)^{2}$$" ], "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAHQAAAAbCAYAAACtOKuoAAAABHNCSVQICAgIfAhkiAAAA+lJREFU\naIHt2VuMXVMcx/HPFB3tVDGhhKQmbcQUbV2CtHVJJur+oCF9cXso8eDBQzuJB4IgaRQPivDkuFQ9\nkHghkUikWsUDDy5N3QcPKq1bSBn3h//ZOfvs2Xtmn2P2nGHONzmZs9b677XWf//X+a3/WkOX/xU9\nnZ5Al7Y4CytxKFbhLrzW0Rl1aZt52Jgqr8V+HNuZ6XT5tyzDX1hcL8/H3yKwXf6D9AjJTbbLk0RA\nTx3voSEcXO28WmYu3s2p78UlUzyX6cRTuD8pzMoxGEI/fp2qGZXgDGzD0py2UbF/zMSgrsPX2FBk\nMA9bK57EMhxY0nYJXkQNbwppKeI5HD5Oe9Wq04pfZZhIeS4TASX8GsgzurNuWCW1osFLPDdeQC/F\nHQVtQ7iyjTFboaY9v8bjBvlBPU8E8+j653KsyOtgFw6Y5EllqakmoAdht7Fn66lQHaoJKGOVZxF+\nEu8i/ZlPs0QsFXr8Z6bD03FtvX4A1+NGHCb2rtvx6eT60Ba/Yw9Oxnup+mFsybHvpF8DWC+CswXP\npNpuwhqcXy8/jps11OczHFJmkKvxaKZuER7WSJ5q+EjcUqwS56H1JZ1IqKnmF0o4f02mLk91Ou3X\nI5gtApXN3N/Cs6lykfLkks5yj8SPmfYNuEU4CH34HjvxJR4QjkwXvhN7SkKR6nTSr7OxA7/hIrGQ\nEvpwmsjoE9LKMyHpgPbij0z7JqHXCSvwSv37V+LFfFtmoCliVLNPy/Fxjl0n/foEzwtZv0DzdrBS\nbIPZe9nPcUqZztN76D4szOko4YT6JF4t0zGeEC80y0KcKVZolnV4u2T/efRrXvF5qkNn/dpT/7sW\nP+OllN05Ig67Ms9nlaeQdEBHcPE4tkP1ye5M1S1WnDhcV1BfExv8SIn5tcoCkTQk5KlOlk75daFY\nRKOpunOx3dhcIas8haSNXheH44Q5uFfjdma12MD3p54dLjPIFHIi3kiV9xl72TBd/DoOH6bKveKO\nNu/fYP34pkyn6YD+gg+EBBEH2mFx+TuI4zWvpluF/EwVyS3P3IL2QbwjkoiEERyVsZsufn0hApWw\nUfi4Lcc2qzylWY7N9e9HiGPAJrGi+4Sjj9VtVrczgNbS+wV4Ge9rHKD3Cqm6KmO7WVwVppljbFI0\nHfwiFtMOPFSfx3b8IF9ad4vjS1vcI6SrKmom/0ZlCe4uaHtBQ3WqpKZ9v2aJZOnJnLZBzRcPLdMj\nZKeqi+wHlczYSjIbtyk+eKdVp0pa8Wur5guFNSIxyyoM+coz46ladVplr8YiO0bsj9kthPGVZ0ZT\nteq0yhUiCboPT4vsNstEytOlS5cuXbp0mUT+AUnR4eM/KSdDAAAAAElFTkSuQmCC\n", "prompt_number": 5, "text": [ "\n", " 2\n", "(x + 1)\u22c5(x + y) " ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "expand(eq)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$x^{3} + 2 x^{2} y + x^{2} + x y^{2} + 2 x y + y^{2}$$" ], "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAQ0AAAAbCAYAAABm6to6AAAABHNCSVQICAgIfAhkiAAABP5JREFU\neJztnFuIV0Ucxz+7SFtpGQW1uJTrpQw0w0u26XYh8kWCksyHAiOMQgwKrKduDxotXR8qIbpN96AL\nEaUSkdpLGBVUEBiVFD3YBaIIKSPr4Xf+dDz+d3d+czlzTv/5gOyZmXN+8/v+ZpwzM2d2IZPJZBT0\nOT53ATATGAAuAgzwbhiXknAusByYDqwANgPvJ/XIj6wn40OUeP8MXFNcXwkcAI7zNZqIacBYKb0W\n0TOUxh1vsp6MD9HivQCYWlyvAf6ivYPGQuAQMKdIHw/8gwSrjWQ9GR9qifeLwG0hDdZMHzId6yzV\n5iNBWpTMIz+ynowPUeO9GLgFeBw4NoRBBcuA14HtwOfAk4Sbrj4HPBDIVhPIevyJ2d+aTpR4Xw98\njKyF6mAx8A5wQpGehmzS/AgMe9peD9yL+wZx08h6/InZ35pOsHiPAD8As4r0mcj0ZY2HzYXAFMt7\n3wbmVvIWFT687OHDpUiQAI6mng6h0a0lpJ6YftqSSk+s/haSGO0T9P/DUuA95HMrwCrgIEcGVoNR\nOPU78B1wciX/F+SrjgsXIgEaLP5dDpznaEuDIc7gFFqPIe1bNaWeGP0tNIaw7TNhvF1Gp4+Ap4Ab\nkV3WUWRU+srXU0v2AWfw39ebDn/i9gVnNvAWRy6vpjvYagJZT1hC97emM2m8q4PGEmAd8Dcycl0H\n3ICs54aAu4CvgedLzzwU0mMLRpDG2l/KmwGcAuyq3GurR9P4w8AmJLgvIF+POmwEVgOXKOxpiKEn\nBrZ+DmMXy5R6YvS3YdL1IZu6reM9G3gU6C/SBvgSORm2AplVbPJ0eDwMftOrMaShlpfyYunZChwF\n3AR8Vinbg26da7DX3Zb20fgZMpYaDGn7W2jdBns9QeveyuEjzCuFEYBTgfuBkzQGFRjcG3Eusu7c\nUsmPoWcUuKq43g68Wiqbihxy26CwZ9A1dhvax9bP0LHUYEjX32LoNtjpCV73rEr6e+BujQEPDG6N\nOAB8CDzYpSyGnsGiziHkTbO6VLYS2VGfr7BnsNfdlvax9TN0LDUY0vW3GLoNdnqC1F3e09hXup5X\nGN5p4YiGZ4Czu+SfhhygOdilbD1yDqRKH/A0sAO4s0t5DD2dde1a5G2zrVR2PrKb/kWX50Lobkv7\n2PrpGksNTexvPrp99USN+QZkd7h80nPOOPeGwKAf+bcAd1Ty1o1zb2g9O4A3Knm7kFODGgxub7w2\ntA/Y+RkqlhoM6ftbSN0GnR6vujubNscgJ7/OKtIrkU2SA6X7blU4FZtrkY2lzZX80eJnbD0zgb2l\n9AByXj/Wr2u3pX1c/Kw7li7E6G8pdXvV3VmerEJEfYJshpwO/Fq673ZkatQELgbuQ0bL8qffKcia\nDOLr+RY4sZQeQ07N7fawORFtaR8XP+uOpZZY/S2lbq+6O4PGbmSKswQ5az+C7AY/hqyT3gQ+COKu\nP68h372v7lLW2dGOredm4AngEeRtshTpJJ962JyItrSPi591x1JLrP6WUnfTY26Fob2//NOPbDA9\n6/CsoR26DfX46RNLDYZmxd1Xt8Fdj7ru/slvqYXfgD9SO2HJSxx+KOYyZKp3j4OttuiO5WfIWGpI\nHffQujV6UsW8p/kJeLi4ngF8Q/epa2ZyejWWKXV71/1/+TsLdXIFcA6yHzSINMCeCZ/IjEevxjKl\n7l6NeSaTyWQymUwmk8lkMpke518QvOZokU+z1gAAAABJRU5ErkJggg==\n", "prompt_number": 6, "text": [ "\n", " 3 2 2 2 2\n", "x + 2\u22c5x \u22c5y + x + x\u22c5y + 2\u22c5x\u22c5y + y " ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To calculus" ] }, { "cell_type": "code", "collapsed": false, "input": [ "diff(cos(x**2)**2 / (1+x), x)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$- 4 \\frac{x \\operatorname{sin}\\left(x^{2}\\right) \\operatorname{cos}\\left(x^{2}\\right)}{x + 1} - \\frac{\\operatorname{cos}^{2}\\left(x^{2}\\right)}{\\left(x + 1\\right)^{2}}$$" ], "output_type": "pyout", "png": "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\n", "prompt_number": 7, "text": [ "\n", " 2 \n", " \u239b 2\u239e \u239b 2\u239e \u239b 2\u239e\n", " 4\u22c5x\u22c5sin\u239dx \u23a0\u22c5cos\u239dx \u23a0 cos \u239dx \u23a0\n", "- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " x + 1 2\n", " (x + 1) " ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For more examples of how to use sympy in the notebook, you can see [our example sympy notebook](http://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/master/docs/examples/notebooks/sympy.ipynb) or go to the [sympy website](http://sympy.org) for much more documentation." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "You can easily include formatted text and code with markdown" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can *italicize*, **boldface**\n", "\n", "* build\n", "* lists\n", "\n", "and embed code meant for illustration instead of execution in Python:\n", "\n", " def f(x):\n", " \"\"\"a docstring\"\"\"\n", " return x**2\n", "\n", "or other languages:\n", "\n", " if (i=0; i" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can embed YouTube videos using the IPython object, this is my recent talk at SciPy'12 about IPython:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('iwVvqwLDsJo')" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " " ], "output_type": "pyout", "prompt_number": 9, "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Including code examples from other languages" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using our various script cell magics, it's easy to include code in a variety of other languages" ] }, { "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.8.7\n" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "%%bash\n", "echo \"hello from $BASH\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "hello from /bin/bash\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And tools like the Octave and R magics let you interface with entire computational systems directly from the notebook; this is the Octave magic for which [our example notebook contains more details](http://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/d835d46dcc50043971b4a9915398bad1b5d63648/docs/examples/notebooks/octavemagic_extension.ipynb):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%load_ext octavemagic" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "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", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nFaCsDL6+YG8PPJfzQBBeyMN3p7W1VSLekZa1Hb2iZtw4CAqCsLDa6GhoboavvoKICOC8GCVqRs7n\nLFmv2JCH4F5WViYR70jL2o5esXnpdJg/H7Zvh7g40NSEHTsgMhJSUoDFEq1XhK2jV+zgmDuCyAAE\nATduwB9/QEcH6OvD3Lkwbpyk+4S8irQFIhxzRxAZgEL5Z2i+qQny8uD4cejshGnTwMMDZ80jbwCD\nO4LIGFpasGQJAACbDSUlsHs3NDWBvj4sXgxjx0q6c4jUIA9j7vn5+RLxjrSs7eiVNq+CAtjaQmQk\nxMWBlxf8+it89RXEx0NJiWi9wmWkecWGPIy5R0ZG7ty5U/xeucnajl558ra1QU4OkJMM3nsP3NzA\nwEAcXoGRGy+OuQsfOp0uEe9Iy9qOXpnwqqnB4sWweDEAAIsFRUVQUQHt7TB+PPj4/PMerNC9AjPS\nvGJDHoI7giBvREcHlix5MUBfVQVZWVBVBQQB06aBlxcMtiIfItvIw5j7oAu+i4hz586hF72y4jUx\ngaAgiIuDmBjQ0oLvvoOYGNi9G27cgP5+EXoHZaR5xYY83Ll3dHRIxDvSsrajVz68NBq4uoKrKwBA\nRwdcugTffAP9/XDz5hgGA2bOBCUlkfoHIq+fs8SRhweq0vYcA0FkkefP4fJl+OsvaG8HbW2YMwem\nTMHFbYaAtAUiIf/T1dfXr1u3zs7OTkVFhUKh1NTUcNfm5uZSXmXAMw0Wi7VixQotLS0Gg+Hl5VVZ\nWSnc7iEI8jZUVcHNDb78EuLiIDAQbt+GrVshJgYOHYI7dyTdOWToCHlYpqqqKj09ffr06XZ2dgUF\nBW88JiEhwfDlqqbKXK/W9fb2enh4sFis+Ph4BoMRGxvr7OxcVlamq6sr3E4iCMIbfX0IDHyx/ewZ\n/Pe/kJEBfX1ApcKMGTBrFqioSLR/CD8IN/cHm80mNxITEwGgurqauzYnJwcAbt68+cZzU1NTASA/\nP58sPnr0iEqlbtiwYVCpra3tsDotKHKTtR296OXT295O5OQQ27YRGzcSGzcSP/9MPHkiDq8oELpX\n2jIxiWrM/dtvvw0NDa2urjY2NubszM3NdXd3v3nzpomJCTluw32Kn5/flStX6urqOHvmzZt39+7d\nQSfDSNtQF4KMBNrb4dIluHwZWlpAWRlsbMDeHoyMJN0tySFtgUgCs2UcHBxaW1vpdLqnp+euXbtM\n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\n3r33339fXV3dxsampKREQ0PD2NgYAFpaWkpLS52cnMjDioqKrK2tyUuoqalpaWmxsbEhqzIzMxcs\nWEBuD2ghIyNDWVl5OC0I1oeKigrSK5Sr4L8FgiBIr9A/Sd4t1NTUkF6hf5K8WygsLFRWVhb1v+br\nLWRnZysrK4vzG0W2kJ2d3dnZKc5vFNlCdnZ2ZWWlOL9RZAvZ2dnnzp0bUgslJSUPHz58PcKQ25Ja\nmP6tEIJy+fLlt7XT1dXl6emprq7+999/c+8fP368p6cn956IiAgKhdLR0TFoLYIgCMI/gt+5W1hY\nFBcXv76/p6fnww8/vHjx4h9//DFlypQBp1y9epV7T3l5uYmJiYqKyqC1CIIgCP8IPuaupqbmwAW5\ns6+vb9myZXl5eVlZWXZ2dgNO8fX1raurKyoqIot1dXV5eXmcn0W8axEEQRD+EfJ67p988smBAweC\ngoLc3d05O83MzMhBrt7eXltb26dPn27fvl1VVTU2NrahoaG0tFRPT2/QWgRBEGQICHeUZ8BcRpLg\n4GDOAY8fPw4ICNDQ0KDT6R4eHhUVFdyn865FEARB+EQeMjEhCIIgA8BVIREEQeQQDO4IgiByCAZ3\nBEEQOQSDO4IgiByCwR1BEEQOweCOIAgih8hwcBdDTj7+FfX19evWrbOzs1NRUaFQKDU1NeLxDprX\nUETeixcv+vj4jB07lkaj6enp+fr6Dlg6QkRebvz8/CgUyscffywGb25uLuVVhrNK1FCv9+zZs46O\njgwGQ11d3c7OjvMWt+i8CxcupLzGjBkzRO0FgKKiIldX13feeWf06NHTp08/fvy4YNKheouLi52c\nnOh0uqam5rJlyzhZKGQYSU+0F5Cenh5ra2s9Pb0DBw6kp6dbWVnp6Og8fvxYUori4mIdHR1vb28y\n2Uh1dbV4vE5OTjY2Nlu3bk1NTY2MjKTT6e+9996zZ89E7T169OiHH364c+fO1NTUuLg4ExMTKpU6\nYJ04UXg5ZGZmamlpUanUjz76SADpUL05OTkAkJCQkPGS06dPi8FLEMS+ffsAwN3dPTExMTk5OTg4\n+MSJE6L2Xrp0KYOLuLg4AIiKihK19+rVq1Qqddq0aWlpaSdPniRXC09LSxO196+//lJSUpoxY8ax\nY8d+/PFHQ0NDMzOztrY2AbzSg6wG99TUVADIz88ni48ePaJSqRs2bJCUgs1mkxuJiYnDDO5D8t6+\n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\nY2RHRMr/A5YdmP24XbLsAAAAAElFTkSuQmCC\n" } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The [rmagic extension](http://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/3607712653c66d63e0d7f13f073bde8c0f209ba8/docs/examples/notebooks/rmagic_extension.ipynb) does a similar job, letting you call R directly from the notebook, passing variables back and forth between Python and R." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%load_ext rmagic " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Start by creating some data in Python" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X = np.array([0,1,2,3,4])\n", "Y = np.array([3,5,4,6,7])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which can then be manipulated in R, with results available back in Python (in `XYcoef`):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%R -i X,Y -o XYcoef\n", "XYlm = lm(Y~X)\n", "XYcoef = coef(XYlm)\n", "print(summary(XYlm))\n", "par(mfrow=c(2,2))\n", "plot(XYlm)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "text": [ "\n", "Call:\n", "lm(formula = Y ~ X)\n", "\n", "Residuals:\n", " 1 2 3 4 5 \n", "-0.2 0.9 -1.0 0.1 0.2 \n", "\n", "Coefficients:\n", " Estimate Std. Error t value Pr(>|t|) \n", "(Intercept) 3.2000 0.6164 5.191 0.0139 *\n", "X 0.9000 0.2517 3.576 0.0374 *\n", "---\n", "Signif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1 \n", "\n", "Residual standard error: 0.7958 on 3 degrees of freedom\n", "Multiple R-squared: 0.81,\tAdjusted R-squared: 0.7467 \n", "F-statistic: 12.79 on 1 and 3 DF, p-value: 0.03739 \n", "\n" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAIAAADytinCAAAgAElEQVR4nOzdd1gUV9cA8LNLWfrS\npYggqFgQCyqIIIiiKIqg2BAVY4k1SsQSxBJsRIwmQRALVnw1YJSgaCQRCyhGUUEJICJNQHoRkc58\nf0yyH8KCsOzsDsv5PXnyDOPsvWfYu4fZO3fuZRAEAQghhOiHKewAEEIIcYcJGiGEaAoTNEII0RQm\naIQQoilM0AghRFOYoBFCiKYwQSOEEE1hgkYIIZrCBI0QQjSFCRohhGgKEzRCCNEUJmiEEKIpTNAI\nIURTmKARQoimMEEjhBBNYYJGCCGawgSNEEI0hQkaIYRoChM0QgjRFCZohBCiKUzQCCFEU5igEUKI\npjBBI4QQTWGCRgghmsIEjRBCNIUJGiGEaAoTNEII0RQmaIQQoilM0AghRFOYoBFCiKYwQSOEEE1h\ngkYIIZrCBI0QQjSFCRohhGiqJybo3r17M/4jLy9vb2+fl5fX8ZfHxcWNGjWqxc7y8nJFRcVOhREf\nH29kZNSpl3yRqqoqoxk5Obnm0YqLizc0NDTfaB8PJ4W6i/z8fAaD8dNPP3H23Lhxw9ramqLquLZ2\ngiCCg4PNzc0VFBQGDhz4zTfffPjwofVrO3iYSOqJCRoAbt68WVZWVlpa+vz58w8fPmzfvr3jr+3b\nt6+3tzd1sXVRVFRU2X9ycnJoHi0SIgaD4e3tnZOTI6wAdu7cuW3btg0bNrx69er06dPp6emjR4/+\n9OkTb4eJpB6aoOXl5RUVFZWUlPr37+/q6pqenk7uj46OHjFihKysrJ2dXW5uLgA0NDSsXr1aSUlJ\nVVV1z549AJCRkbFz507yeD8/Px0dHR0dndOnT5N7Hj9+bGZm1nr75MmTffv2lZaWNjMze/36dfNg\nWlfBYWdnd+LECXLb19d3/vz57Rzc/NQ4ONFOnjy5sbHRwMBg3Lhx5EZVVVXr8+V6UkgkSUpKLl++\n/Jtvvmn9T1evXjU0NGSz2bNnzy4qKgKAxMREa2vrvXv3Ghsbp6SkjBs3zsPDQ1VV1cLCIjY2dvTo\n0fLy8hs3biRf3k5r50hLS/vxxx8jIyPnzZunq6trbm4eHh6uqKj4448/8nCYyCJ6Hm1t7ejoaHI7\nNzfX0dFx3759BEEUFxerqKiEh4eXlpauXbvW2tqaIIiQkBBDQ8OMjIznz5+zWKy0tLSnT5+amJgQ\nBPHgwQMlJaX79+/n5OTY2Niw2WyCIGJjY01NTcnCOdvZ2dmSkpL3798vKipyc3NbuXIlQRAvXrwY\nMmQI1yo4oR47dszBwYHcNjc3v3btWjsHEwShoqLy9OnT5ns40RIEISYmVl9fz9nger5cTwqJnvfv\n37NYrMrKSh0dnfDwcIIgrl+/bmVlRRBEeno6m82OjIwsKSlxc3ObN28eQRCvXr1is9lubm6JiYnJ\nyclMJvPixYslJSUmJibq6uqZmZmxsbEAUFhY2H5r5wgKCpo4cWKLqIKCgsh22NnDRJW4sP9ACIed\nnZ24uDhBEB8+fDAzM9u6dSv81wc3Y8YMADh06JCKikpjYyMA1NfXFxYWjh49OicnR0FBoaysjCzk\nt99++/rrr8ePHw8Ae/bsmTZtWlvVqampvXnzpk+fPlVVVaqqqu/evWtxQIsqOPtnzpy5efPmmpqa\n8vLypKQkOzu769evt3UwydraWlz837c1ICBgwIABbUXF9Xw7flJIBMjJyR09enTt2rUTJkzg7Pz9\n998dHR1tbW0B4ODBg9ra2uQHobq6OjAwkMVipaSkaGpquri4AMCkSZPKy8t1/1NRUdG7d+/2Wzsp\nMzOzT58+LXbq6upmZ2fzcJio6qFdHGfOnImPj09ISHj69GlxcXFwcDAAvHv3LjIyUk9PT09Pb+DA\ngZKSkoWFhbNmzfL09Fy5cqWWllZgYCDZUkn5+fkGBgbktr6+futaCIIgN8TFxU+dOjV69OiZM2cm\nJSW1OKydKjQ1NY2MjO7duxceHj5z5kwpKal2Dib973//i/+Pg4NDO78Eruf7xZNCIsbBwcHExGT3\n7t2cPfn5+Xp6euS2mpqapKQk2cuho6PDYrHI/XJycuSGuLi4hoYGZxu+1No59PT0WifZrKwsAwMD\nPz8/soPu9OnT7RzG4wl3Kz00QWtqapKJadSoUbNnz37x4gW509bWNjMzMzMz8+3bt3/++aeGhkZ6\nerqNjU18fPzff/99/fr1oKAgTiFaWlpv374ltzMyMjj7OQMkOLdfQkNDIyIibt++/ddffy1YsKBF\nMO1UAQBOTk4RERFhYWHz58//4sFkVHr/4XyK2voltD7ftk4KibCff/751KlTCQkJ5I8aGhpZWVnk\ndlFRUW1traqqKvyXf7+o/dbOYWlp+ejRo+TkZPLHs2fPPn36NDAw0N7efv369eXl5eXl5V999VU7\nh/F8vt1ID03QzWloaJDfwuzt7aOjo2/evFlcXLxt27aNGzcyGIzw8PAFCxYUFBQ0NjbW1tZKS0tz\nXujs7Hz8+PHo6Oi8vLydO3cyGAwAYLPZCQkJ8fHxJSUl/v7+5JElJSVycnLS0tKFhYV+fn7V1dXN\nA2inCgBwdHS8du1aQkLCxIkTv3jwF338+JGzwfV8uZ4UEm19+vTZuXPnvn37yB9nzJhx9erVO3fu\nlJWVeXh4ODk5dTA1k9pv7Rz9+/f/9ttvJ0+eHBoampWVVVlZaWZmVlRUtHbtWh4OE1nC7gQXguY3\nCQmCiIiIUFdXr6ioIAji9u3bQ4YMkZGRmTBhwtu3bwmCqKysdHR0lJWVVVZWXrVqVV1dXfPbbn5+\nfr1799bW1j59+rS2tjZBEE1NTevXr5eTkxs6dGhoaCh5k7C8vNzW1lZZWdnc3Pz69eu9evU6f/48\n57ZJ6ypaBDx48OCvv/6a3G7/4PZvEs6dO1deXv7jx4+cjdbny/WkkOghbxJyfqyvrx82bBh5k5Ag\niCtXrgwYMEBeXt7R0bGgoIAgiFevXhkaGpL/mpyczNnevn37rl27yG0DA4M3b96039qba2pqOn/+\nvKmpqaysrJaW1oYNG0xNTQ8cOMDbYSKJQfzXT4oQQsL16dOn9PT0Lz7A1cHDRAAmaIQQoinsg0YI\nIZrCBI0QQjRFuwdVCgsLw8LChB0FEhwmkzl37tzWT9yIBmzPPQ1/2zO1Cbqurk5SUrJTL7l161ZC\nQgJ1s2ohugkLC9PR0ZkyZYqwA/kygiDIGf46PvoQ23NPw9/2TEmCTkpK2rJlS2xsrIyMTGVlpYWF\nxeHDh9t55riFUaNGzZkzh4rAEA2lpaUJO4QvWLNmTUBAQHx8/Lx585hMJpPJDAoK4kyD9UXYnnsU\n/rZnShL06tWr9+zZY2pqymKxampq4uLi1q1bFxkZSUVdCFHtyZMnALB9+/bQ0FBjY+O8vDwXF5d7\n9+4JOy4k+ihJ0Ewm09LSkvwaKCUlZWFh0aknkRCiIWlpaWNjYwDQ0tJqPQUKQlSgJG+amJhMnTp1\n7Nixenp6WVlZjx8/Jls2Qt1Renq6k5NTdnZ2cHCwq6vrwYMHtbS0hB0U6hEoSdC+vr7R0dExMTEJ\nCQnKysqenp7jxo2joiKEBKCoqCgzMzM1NVVZWRkAJCQkOKsoIEQpShI0g8EYP348OacwQt2dmJiY\ngYEBZ35Ld3f3to6sq6t79epV8z1paWmamprUxodEl4C6hnV1dTkTGDaXlJS0YcOG5nvevn07ceLE\npUuXCiYwhHjQVnt+9+5daGho8z23b9/u16/fmjVrBBUaEikCStBRUVFc9w8ePPjPP/9svmfFihVN\nTU0CCQohHrXVng0MDHx8fJrvKSkpwfaMeCagR717yPIHqIfA9owEA0e/cREVFfXkyRNjY+OpU6cy\nGIz4+HgfHx8FBQUrK6uFCxcKOzqEkHC0SAXv3r17+vSpkpKStbU1RUtbUJKgDx061Hqnh4cHFXXx\nnbe3d1ZWlrOzc2RkZEREhL+/f1xc3C+//KKiojJr1ixM0D1Qt27PiI+ap4I+ffp4eXk5OzvHxsYG\nBASEhIRQkaMp6eJQUlLy9PSUkJCQaoaKiviuqanp9u3bp06dmmpicuTIkdTU1A8fPixfvpzJZHp4\neKxatUrYAaJOKy0tff36dX5+/v79+1NTU3koofu2Z8RfzVPBgQMHrly5sn79el9fX21t7djYWCpq\npOQKetmyZZcuXVq7dm23e4CwsbFRWlqa8c8/MGYMvHnDZrNramoyMzPPnj27detWzurFqBtZtmyZ\nm5vbrVu3DAwMVq5cycMj2t23PSP+evnyJScV/PDDD+RaugDQu3dvcuFzvqPqJuFff/3VHVuzhISE\nlrp64ezZH7/7Lnnr1k+fPqmrq//888/Z2dkeHh67du0SdoCo0+rr6x0cHLKysjZv3szzgIpu2p4R\nfzVPBVZWVr6+vk1NTZmZmdeuXaPoWTxscy0FGRvfLS/3f/TI79WrS4mJABAUFCTsoBDvxMTEvLy8\nxowZEx0dXVFRIexwUDfWPBXU19fv27fP1tZWTk7ul19+4VxN8xcm6M+9fSvx11+TIyMnM5mwbh2k\npECHZ5VE9OTj43P79m03N7eQkBD8W4v4RUJCYvfu3VTXggm6GYKAtWvhyBFgMgEAFi+Gs2cxQXdf\nXl5enG1yJEZ2dvaoUaOEFxFCnYMJupngYDAxgaFD//1xzBhwd4faWmCxhBoW4tHw4cOFHQJCXYIJ\n+j+FhXD8ONy589nOGTPg+nVwdhZSTKhLnFu9cXFxcUKJBCHeYIL+z6ZNsG9fy4vlRYtg7VpM0N1a\naGjohQsXmpqaCILIyspKTEwUdkQIdZSA5uKgu+vXQUoKrKxa7tfWhtpayM8XRkyIP44fP75t2zYt\nLa1NmzbZ29sLOxyEOgETNMDHj3DgAHB7nBcAYOFCuHxZsAEhfmIymebm5iwWy8bGhv4L1CLUHCZo\ngJ074dtvgc3m/q+zZsHVq4INCPGTlJRUSEhIXV2dv79/VVWVsMNBqBN6fIKOjYWsrPZ6mWVkwMAA\nXr4UYEyIny5fvjxy5Mjdu3cXFBTgs6Coe+nZNwnr62HrVvj11y8ctmQJnD/fZh8IojcZGZl+/foB\ngLe3t7BjQahzenaCPnQI5s+HLy4ZZ2UF330HDQ2AszF0Q82fTJGRkXnw4IEQg0GoU6jNOARBlJeX\nKyoqUjSbdZckJ8OdOxAZ+eUjGQywtYXISJg2jfqwEJ/FxMQAQENDw507d548eUJpXS9fvty0aVPz\nPcnJySYmJpRWikQYJQl6zZo1AQEB8fHx8+bNYzKZTCYzKCjIjFbPTBMEbNwI/v7/PtX9RYsXw44d\nmKC7I87czTNnzjx9+jSldRkbG+Mam4iPKEnQ5HXK9u3bQ0NDjY2N8/LyXFxceJiHl0JBQWBuDoaG\nHT2+Xz8oLITyclBUpDIsxH+cVVwLCwtxFAfqXijs4pCWljY2NgYALS2txsZG6irqtNxcOHMG7t7t\n3KvmzoWQEFi5kpqYEFV69+5NbvTp02fz5s3CDQahTqEkQaenpzs5OWVnZwcHB7u6uh48eFBLS4uK\nini0aRMcPgySkp171fz54OyMCbrbcXV1FXYICPGIkgRdVFSUmZmZmpqqrKwMABISEidOnKCiIl6E\nhYGqKpiadvqFbDaoqMDr153oGEFCZWRkBAC1tbVlZWUsFqu2trZ///4UrR2HEBUoeVBFTEzMwMBg\n6tSppqamAODu7s5u6zk9ASsvhwMH4MABHl++aBFcvMjXgBCFEhMTExMTzczMwsLCsrKyrl27ZmBg\nIOygEOoEAQ3s1dXVzcrKar0/Ly/vxo0bzfekpKRoa2tTFcf27bBrF8jL8/jyKVNg717YvbujYz8Q\nDeTn51tYWACApaUlPkmIuhcBJeioqCiu+yUlJZWUlJrvYbFYTIrSX0wMlJR0aaicuDiYm0N0NJd5\n7xBdMZnMwMBAKyurqKgoaWlpYYeDUCdQm6Dr6uokJSUBoK2vlqqqqnPmzGm+JzIykpJxozU1sGUL\nH6Y9WroUDh/GBN2NXLhw4YcffoiIiBg8ePC5c+eEHQ5CnUDJtWpSUtL06dNVVFQMDAwUFRWnT5+e\nmppKRUWd8MMPsGwZaGh0tRwjI0hNhY8f+RETotbevXsBICAgQF5e3sTERFpa+ujRo8IOCqFOoOQK\nevXq1Xv27DE1NWWxWDU1NXFxcevWrYvsyEPVFPnnH3jyBHbu5E9ps2dDWBjg4C3aGzBgAPw3lgMh\nShEEceHChUmTJvG3WEquoJlMpqWlJYvFAgApKSkLCwtxIU4z1NQE69bBTz8Bv+YDWbgQLl3iT1GI\nSnPnzgUAGxuboUOHWlhYpKamkk9OIcRHt2/fTkxMZDAYixcv5vsDH5TkTRMTk6lTp44dO1ZPTy8r\nK+vx48fC/GAEBsLkydC/P98KVFcHcXF49w50dPhWJqLMsmXL3Nzcbt26ZWBgsHLlyq5MOUDryb+Q\nYMXGxtbW1lpbW0+ZMoW6Wii5gvb19fX09JSQkEhISGAymZ6engd4HnrcRTk5EBICfH/A19UVB0R3\nF/X19Q4ODllZWZs3b+bt/vOaNWsAID4+fuDAgebm5kZGRo8fP+Z3mKh7ePv2bVhYGACMHTvW2tqa\n6uoouYJmMBjjx48fP348FYV3ztq14OvL/3mcZ8yAiRNh2zY+F4soICYm5uXlNWbMmOjo6IqKCh5K\n6AaTfyGKlZaWXr9+feHChQYGBoJ83InLFXRpaenr16/z8/P3798v/NEXXXHlChgYwOjR/C9ZSgqM\njeHpU/6XjPjNx8dHTU3N3d09OTk5KCiI53LoO/kXokxDQ8OlS5eKi4uVlJRcXV0Ffy+NS4JetmxZ\nSkrK7t27JSQkVnbfuYHKyuDIEdi7l6ryFy8GHFTbHQwaNGjjxo1kY26+ukrHkZN/ZWRkBAcHAwDt\nJv9CFLh582ZaWpq4uLizs7OqqiqDwRATExN8GFz+IJB9doGBgYGBgdevXxd8TPyxZQvs2AEyMlSV\nP3YsbNoEtbXAYlFVBeKHBw8eLF26VF1d3d7eftCgQbNnz+5sCbSe/Avx1fPnz+vq6szMzKysrGRl\nZQFAQkJCiPFwuYLuep+d8N25AzU1YGdHbS329nDzJrVVoC7bvn37o0ePDA0N169ff4inlX/pO/kX\n4pOMjAxyOgpDQ8MxY8YAAJmdhY7LFbSPj8/t27fd3NxCQkK60mcnNNXVsHMnhIdTXtGiRbBxIzg5\nUV4R6oLGxkZ1dXUAYLPZ/PrUtTX5V1pamq+vb/M9MTExgwcP5kuliO9KS0tjYmJmzJihpqZGdlvR\nJC9zfJagvby8ONvktUZ2djZv3XbCtHcvrFoFKiqUV9SnD3z6BEVFoKZGeV0ioba2Njk5WU1NjcIJ\nC1sZOHDgmjVrsrOzvby8+NV33NbkX1paWi1u2xQWFsrJyfGlUsQvdXV1UVFRlpaWMjIyVlZWDAaD\ntu/RZwl6+PDhwoqDb168gIQE2LdPQNUtWACXL8P69QKqrjv7559/VqxYYWpqmpmZaWBgwFtvAw82\nbNjw999/S0hIaGlp7dixoytFfXHyLxkZmRZreKuqquKisXxXXl4eEBDw7t27iRMnzp49u4PPDREE\nERsb27dvX1VV1WHDhpEXy5w1henpswTt7Ozc4p/j4uIEGEyXNTXB5s1w7JjganRygpkzMUF3xI4d\nO86dO9e/f38AWLRo0YsXL0aMGCGAel1dXZ8/f96VWz1JSUlbtmyJjY2VkZGprKy0sLA4fPgwOdEH\nErz6+npHR8evv/7aycnpl19+yczM9PDwaP8laWlpTU1NAwYM6NWrl5qamri4uKampmCi7SIufdCh\noaEXLlxoamoiCCIrKysxMVHwYfHo2DGYNImfT3V/kYICaGtDSgoMHCi4SruLujrIzIS0NHjzBt68\n2XbvXv+5c0FGBqKiTExMMjIyBJOgR48ebWFhYW1tTebovZ0feUm7yb96thcvXowcOXLBggUA4O/v\nb2Vl1VaCfv/+fWFh4bBhw8TFxTU0NKDtrz60xSVBHz9+3Nvb++zZs/Pnz799+7bgY+JRejqEhEAb\nnYMUWroUzpyBH34QdL208uEDvHkD//wDSUmQng6ZmdDUBEpKoK//73+TJl1qbMyxtZ01a9anT59+\n//13gU3N7ODg4ODg0JUSyMm/yO/Rwp/8q8djMpnt9xpVVVUlJSWNHj26oaGBvNuhp6cnoOD4jUs7\nYzKZ5ubmly5dsrGx8ff3F3xMPNq4Efz8QPCDySdMAC8vaGwUQtVC0SIXZ2VBY+O/uXjwYJg0CfT1\nQVu79fDwPb6+69at8/f3b2xs3Lx5c58+fQQTr6OjYxdLoNfkXz3e8OHDt2zZcu7cuQEDBpw5c4az\n4kd9fX1CQsKwYcM+ffrUq1cvANDp/tOZcUnQUlJSISEhdXV1/v7+VVVVgo+JFxcvwuDBIJSPDZMJ\nNjbw119A5aRWfJeRkfH999/n5eWZmZl999133NeCqqiAtLT/z8XZ2dDQAJqaMGQIeVEM+vrQuzdI\nSnakRjk5ubNnz/L3LATD19c3Ojo6JiYmISFBWVnZ09Nz3Lhxwg6q5xIXF79+/frJkycvXbrk5OQ0\nderU1NTUXr16MZlMCQkJcXFxNREaVcUlQV++fDkvL8/S0vLYsWNdXGSTc9ebWkVF4OcHd+9SXlFb\nliyB77/vRgm6trZ24cKFAQEBQ4YMuXDhgoeHh//+/fDq1b+JOD0d3r8HKan/76Mgc7GODgj1qSph\nodHkXwgAAGRlZTdu3JibmyshIdHY2FhRUaGnpycpKTls2DBhh8ZnXBK0jIxMv379AMDb25u3QgV9\n1/u77+D770GI64EOGAC5uVBZyft64YKVmJhoamo6fOBA8PD4KiVl5N9/Q1oa6OtDv34wdiwsWgQG\nBkDv4Ueox6qsrCwrK+vTp09OTs6AAQPExMRGUzEhGj1wSdDNn0yRkZF58OBBZwsV6F3vu3ehrk74\nV6+zZ8Nvv4Gbm5DD6Bg2m/3+/XvYuxcGDqzZs2fdtGkx3ehucIeRi13V1taWlZWxWKza2tr+/fvH\nxsYKOy7Ei9ra2vz8fF1d3czMTCUlJQAgn7wXbVzm4oiJiYmJibl3796OHTssLS15KVRgS159/Ajb\nt4OfHyWFd0q3msK/X79+gz59SgwJ+R+b7ezism7dOmFHRInExMTExEQzM7OwsLCsrKxr1651u1FW\niCCI7OxsgiDevXtXXl4OAEOHDu3du7ew4xIQ7jcJyY2ZM2eePn2ah0IFd9d7927YsAHoMHONkhIo\nKsLbt9AtUkB9/a6yspjdu6urqw8dOjRQpAdx5+fnW1hYAIClpWUX76mgDkpNTb148SKLxVqyZAnP\nj/UXFBQoKyuXlZVlZ2fr6OiQ/a49DffJksiNwsJC3kZxCOiud1wcZGSAoJ4Y/rLFiyE4GLpFCvjp\nJ5gzx8LFxULYgQgAk8kMDAy0srKKioriPlgF8dXLly/XrFnj7e1dU1Mze/bskJCQTg2pJHOOuLj4\nkydPJk2apK6uTs511TNxSdCcrw99+vTZzNNqfh2/693Y2NhiVrDKykpylAxBEHV1dSwWi/vGp0+s\nb78lLl2qq61t8xgBb0ydShw4ULd1K0tKihbxtLXx5g0rMpL44w+a/OpYFE+ofeHChR9++CEiImLw\n4MECezqmJwsKCvrpp5/IW1n19fWXLl3aunXrF19VV1dXW1srLy8fHR1tYmKipqY2Y8YM6oOlOy59\n0K7/cXFx4dcT67q6ulz3p6SkbPvckydPjIyMmpqaqqqqyCfouW/cutU0b14Vm93eMQLeYDKrbG3T\nHj+mSzxcNz5+TPvrr6bDh6uqq2kRT1UV1U+sqKur//jjj5cvX/7hhx9UVVUprQsBQGNjI2fmE3IY\nXDsHEwRRWVkJAA8fPnz//j0A2NnZidJA5q4imhkyZMiQIUP69eunoqKipaWloqJiZmZG8ENaWloH\nj1y+fPlXX331hYPevCEmTSIaG7saFt89f04sXy7sINp15gzh5SXsID6zf//+P/74g7ry79+/r6+v\nb2ZmtmfPnitXrlBXEVcdas+i5eHDh9bW1s+ePXv06JGpqWlqairXw6qrqwmCiI+Pf/jwoWADpBZ/\n2/NnV9B8v+tdV1dHbvDz7jlBwLp14OcHTC6X/0I2YgSkpMCnT8KOow0FBRAUBM1m/e4Jur6iCuoU\nc3PzQ4cOnT9//urVq+fPn+//+eRltbW1BEFkZmaS426HDRtmbm4upEi7AS45jrzrLS4ubmlpmZeX\nx0OhSUlJ06dPV1FRMTAwUFRUnD59Oj9XBz97FkxN6Tt73MyZ8Pvvwg6iDZs2wcGDPW0RRSpWVEHt\nMzEx+emnn3x9fTmPpxEE0dTUVFFRcfny5bq6Oj09vS7OYNVDcEnQ5F3v5ORkf39/3u56r169esuW\nLXl5ee/evcvPz9+2bRvfRtoWFMDp07B9O39Ko8KiRXDpkrCD4CY8HOTkYOxYYcchaFSsqII6pamp\n6eLFi8XFxWw2e8mSJVTfFhYlXEZxdP2uN4XTM7q7g69vB2fnEY5evYAgICcHaDWWvrISfHzgjz+E\nHYcQBAYGnj17li8rqnzRp0+fHj161HxPbm5uT77l9fvvv/fv33/w4MGurq7CjqVb+ixv7t2718vL\nKyAgQF5enly55+jRo7t37+5soVQ9qPL778Bmg5kZH4qi1MKFcOkS8DRCkSpeXuDpCQoKwo5DCC5f\nvrxs2TIxMTEAOHfu3JIlS6irq6Cg4NmzZ833FBcX98B+lb///ruhoWHcuHEzZ84Udizd22cJmuww\nImcw6ApKHlSprIQffuge14COjjBxIo0S9MOHkJcH06cLOw7h2Lx582+//RYcHCwvL3/9+nVKE3Tf\nvn1bjPklRxNSVyOtpKSkJCcnOzk59YRZMgTjswQ9d+5cALCxsSkqKmKz2adPn269SmFH8HF6xvr6\n+qioqOrq6ikREdLbt3ePa0ApKRgyBJ4/h5ZmtB0AACAASURBVJEjhR0KQF0dfPcdhIQIOw6hsbS0\nXLJkiZ2d3eXLl4Udi2gqLi7+448/XFxcBg4cKNrTBggel5uEy5YtS0lJ2b17t4SERIs15AWstrZ2\n2rRpDx8+rLt79/G1a8n6+kIMpnOWLAGaPLT2ww/g6goaGsKOQ5hmzJhx9OjRWbNm8XM0UY9XV1d3\n7ty58vJyVVVVV1dXJg2HvXZ/XH6n9fX1Dg4OWVlZmzdvFu63s/DwcFtbW28vr7kvXmiEhvr6+jY2\nNt69e3c9/VfRHjcOnj2D+nohh5GUBLGxsGKFkMMQqvnz5wPAiBEjwsLCut59hwDgxo0b6enpkpKS\nCxcuVFRUFHY4oozL4AoxMTEvL68xY8ZER0dXVFQIPiaO4uJiHR0dKCuDbds0R4woPnKkoKDg6dOn\n9UJPfB0xcSJERoK9vdACIAjYtAkOHQIGQ2gxCBV505t8/IrcQ+GqET3Ao0ePJCQkRo8ePWXKFPJh\nblw8l2pcrqB9fHzU1NTc3d2Tk5ODgoIEHxPHxIkTg4KCCgDqJk3y9vaePn26lpaWcHtdOuGrr0C4\nS/AdPw4WFjBkiDBjECrOTe/mhB1U95OWlnbnzh0AGD58ODkFkkSPXPlMKLj8ARw0aNCgQYOqqqqE\nngoHDBjg6enp5uZWV1fn4OCwont9VdfVhYoKKC4GoUzQk5MDly/DX38JoWraIG9683ajGxUWFj56\n9MjR0bF37959+/YFABkZGWEH1eNwSdAPHjxYunSpurq6vb39oEGDZs+eLfiwOGxsbGxsbIQYQJfM\nnw+//gpr1wqh6rVrwdcXevY3UFzyigc1NTWRkZG2trYKCgq2trbQbAUPJHhcujhoPrmMoqJiYGCg\nsKPoGGdn+O03IdT722+grw+iu5JmB+GSVx1HEMSdO3fev38vLi4+fvx4aWlpKSmpHviIDd1wSdA4\nuQzfKCiAlhYkJwu00rIyOHwY9u0TaKU01vXJv0Tbq1evUlJSGAzGwIEDe/XqJS4ujgMz6INLgsbJ\nZfhp8WK4cEGgNW7dCjt2AHYX/qfrk39xEARRVlZGEAS/YhOirKws8ql0VVVVcrk/bW1tHMtMN1ze\nj8DAwBEjRhgZGWlpaZ08eVLwMYmUSZPg7l1od1EJfrpzBz59Ajs7AVXXHXh6er5582bLli3Z2dm8\nTf61Zs0aAIiPjx84cKC5ubmRkdHjx4/5HaaAlJeXP3z4EAAkJSXJmZo1NTVxtBxtffbGlJeXX7x4\nsV+/fitWrHj16lVqaurmzZt/+eUXnksnCKK8vFxRUZHRU4fiApMJVlZw9y5MmkR5XdXVsHMnhIdT\nXlG3sm7duufPn3dlZNiTJ08AYPv27aGhocbGxnl5eS4uLvfu3eNbiNSrra199uzZmDFjGhsb9fX1\nc3JyUlJS9PT0FBQUAKCxsfHBgwdXr1718/MTdqToMy3n4mCz2devXz9z5kxGRsaYMWPaWkuwfWvW\nrAkICIiPj583bx6TyWQymUFBQWb0n4WOIkuWwP79gkjQe/fC11+DigrlFXUro0ePtrCwsLa2JnP0\n3r17eStHWlqanJRRS0ur/XX26IMgiISEBD09PTExMVVVVXFxcRUVlStXrhw/ftzKyiogIMDMzGzL\nli3d6fmvHuazBJ2fnx8ZGVlbW9unT5+srCyeh9eIwBUHPw0aBO/eQWUlyMtTWMuLF5CQgPcGW3Nw\ncOji4h3p6elOTk7Z2dnBwcGurq4HDx6k/72ZzMxMFoulpqbGZDJlZWUlJCTk/2t+hw8fjoqKkpKS\nIgjCxsZm1apV5PNf27ZtE27MqLXPErSysjIAsFisQYMGdX3wY3e84qAKOd7OzY2q8hsbYdMmOHOG\nqvK7M0dHR852XFwcDyUUFRVlZmampqaSHxAJCYkTJ07wLT6+Kikp+fjxo66ubmlp6YABA8TFxVtM\nxd7U1CQpKUl+uhkMRt++fQsKChS6xSSRPRIlNwe64xUHtVxcwMWFwgTt5wf29sBTf5TICw0NvXDh\nQlNTE0EQWVlZnHk5Ok5MTMzAwIAzhtrd3Z3fMXZVTU1Nbm6ugYEBZwGXkW1MdctkMhUVFe/du2dt\nbf369eukpCT9bjRJZM/zWYJ+8uQJOZ1rdnY2Z17XlJSUzhbaja44BERZGWRkICMD+vblf+Hp6XDt\nGkRF8b9kkXD8+HFvb++zZ8/Onz//9u3bfClTV1c3KyuLL0V1RWNjY2Zmpr6+fl5eHvkltSNLFx0/\nfnzTpk3e3t4KCgpnz54l15rpTs9/9SSfJejs7Gy+FEr/Kw4hWLwYLl4ELy/+l7xxI/j5gZgY/0sW\nCUwm09zc/NKlSzY2Nv7+/nwpM0rYfw7z8vJUVVVLS0sLCgoMDAw6dRXcq1ev4OBg6mJDfPRZglal\nbFofmlxxCJO9PRw8CNu383nyz4sXYcgQ4MuSjyJKSkoqJCSkrq7O39+/qqqqK0XV1dVJSkoCQFuP\njCclJW3YsKH5nuTk5NH8e+a+tLSUxWIxmcykpKTx48draGho9OylGESegAaot3XF8c8//2zcuLH5\nnuTkZHJKQ1EjIQGjRkFsLJib863MwkI4dgzu3OFbgaLo8uXLeXl5lpaWx44d27VrFw8lJCUlbdmy\nJTY2VkZGprKy0sLC4vDhw1ynlh48ePCff/7ZfM+KFSu6vupFbW1tdXU1m81+/PixmZmZsrLyJAGM\n2kQ0QG2C/uIVx5AhQ6ho0DS1eDGcOsXPBL15M+zbBywW3woURTIyMuSjzN7e3ryVsHr16j179pia\nmrJYrJqamri4uHXr1kVGRvI1TC4aGxsrKysVFRWfPHmio6OjqKg4bdo0qitFtELJo/dJSUnTp09X\nUVExMDBQVFScPn06rgUHADBqFPzzD1RX86e027dBQgKsrPhTmigiZ+jv37+/qqqqtra2qqrq2LFj\neSiHyWRaWlqyWCwAkJKSIqde4newn/nw4QMAxMfHp6WlAYClpaWenh6lNSJ6oqSdCeuKoxuYPh2u\nX4e5c7tazseP4O0NN2/yIyaRRY6oW7Ro0ddff21mZhYbG3v8+HEeyjExMZk6derYsWP19PSysrIe\nP37ckcESPPj06ZOMjExmZuabN29sbW1NTEyoqAV1I5RcQQv+iqPbWLQILl7kQzm7dsHGjcBm86Eo\nUdf16UZ9fX09PT0lJCQSEhKYTKanp+eBAwf4GGFDQ0NjY2N5efnvv/9eX1+vp6dHzpSPECV5U2BX\nHN2PlhY0NEB+PnTl5ntsLGRmwo8/8i8sUUZON2plZRUVFcXbdKMMBmP8+PHjx48HAA8PDwsLC74E\nRj47AwBXr16dNGmSsrLyggUL+FIyEhmUXEFTfcXRvS1cCP/7H+8vr6+HrVsBZx3rsAsXLnRxutHm\ncnJyuh4S+VBJeHh4enq6mJjY3LlzyUe6EGqBkitoiq44RISTE9jawrff8vjyQ4dg/nzo4Y/Od4a6\nuvqP/Pu2MX369C6W8OjRIwAwNzdvPkkIQlxR3jXMlysOkSItDYaGEB8Pw4d3+rUpKXDnDuDt1s7w\n8/Nrfm+Qh7k4mnN1deXthUlJSenp6dOnTzfn4zhLJOooT9Bdv+IQQUuWwPnznU7QBAEbN4K/P+C6\nRJ0RGhp6//59FeFNk62mptbU1DR48ODBgwcLKwbUTVH+Uef5ikOUWVpCbCx0dn70oCAYOxYMDamJ\nSWTp6+sLt4e3qKgI1/pDvMHRb8LAYMDkyXD7NnT860VuLpw5A3fvUhmWaGpqaho1atSECRPIsZ4+\nPj7CjgihjsIELSRubrBtWycS9KZNcPgwSEpSGZNomtv1x4IQEhJM0ELSty+UlkJZGSgpffngsDBQ\nVQVTU+rDEkHN74LwtqIKQsKCCVp45s6FX3+FVau+cFh5ORw4AH/9JZCYRFDXV1RBSFjw3oXwzJsH\noaFfPmz7dti1i9oFZ0Xa8ePHt23bpqWltWnTJnt7e2GHg1AnYIIWHgUFUFeH9lcUi4mB0lLASSa7\ngFxRhcVi2djYkJPDIdRdYIIWqsWLoZ3Fh2pqYPNm+OknAQYkgvi4ogpCAoYJWqgmT4a//oK2Fijw\n8YEVK6BXL8HGJGouX748cuTI3bt3FxQU8LaiCkLCIqAVVRB3YmJgaQn378OECS3/6Z9/4OlTwITS\nZREREXPmzAEAb2/vixcv8jZnfwelpKQcOXKk+Z6YmJhBgwZRVyMSbZQk6I6v4YbAzQ18fVsm6MZG\n+OYbOHWKzyvM9jAhISEhISFPnz799ddfAYAgiNevXy9cuJC6GvX19bdu3dp8T0VFhZSUFHU1ItGG\nK6oI25AhkJ4OHz+CnNz/7zx2DCZPhr59hReWKLCxsTE2Nj5y5Ii7uzu5pxfF/UWSkpL6+vrN98jL\ny4vsGpuIepQkaHJFFQaDAbiiSkfMng3XrsGiRf/++O4dXLmCA5+7TlVVVVVVlZzK7sOHDwRBsHEN\nGtStUHKTkFxR5fvvvz937py3t/e0adNwRZX2uLh8NoX/unXw88+Af9K67NmzZ6NGjSotLb13756h\noeHw4cPDwsKEHRRCnUBJFvD19Y2Ojo6JiUlISFBWVvb09Bw3bhwVFYkINTWQkoLsbOjTB379FQYM\ngGHDhB2TKFi/fv3FixeVlZX37NkTERFhYGBgY2OD0+SjboTyFVVQRyQOH548c+bDIUP2JSTI/v23\nsMMREUwm09DQsLq6urS0dOTIkQAgISEh7KAQ6gQBjYPW1dUVTEXd0YMHDzxjY2cwGLuqqrYzmUmZ\nmcKOSER8/PixqakpMjJy9OjRAFBfX48JGnUvAurojIqK4ro/Nzc3+PNH6V6+fNm3B4xeiI6O9vf3\nl5WVdXFx+e233/YfOiR19KhUZaXdDz9cvXoVl97gizlz5owYMaKoqCgiIiI1NXXjxo04FwfqXgSU\noA0MDLjul5OTMzExab7n/fv3Ojo6AglKmF69enXy5MnCwsKjR49KSUlVVVXB/v0gJfXpjz9YLJaw\noxMRnp6eU6dOVVNT09HRSUxMXLRoEc4NjboXIQ8VYLPZkyZNar4nNze3J4wbXbNmTVxc3IoVK3x8\nfHR0dFasWPHtt9/W1dX9/PPP165dE3Z0IoLBYJBdzwBgZGRkZGQk3HgQ6ixKEvShQ4da7/Tw8KCi\nrm4qJCRk1qxZDx8+dHFxCQsLu3jx4q+//iopKRkeHq6uri7s6BBCtEBJglZSUlq9erWvr6+YmBgV\n5YsASUlJV1dXZWVl8sljPT29Fo8IIxoiCKK8vFxRUZGBj+AjgaAkQS9btuzSpUtr167FBwjb4ujo\niANyu4s1a9YEBATEx8fPmzePyWQymcygoCAzMzNhx4VEH1UJ9C98UhmJiidPngDA9u3bQ0NDjY2N\n8/LyXFxc7t27x0NR9fX1UVFR1dXV48aNU1NTaz6YZ+LEiXyOG3V/lI+Dxq5nJBqkpaXJGQu0tLQa\nGxt5KKG2ttbOzi46OjojI8Pe3j45OZkczOPp6Xnjxg1+x4tEAeUJOicnh+oqEKJUenq6k5NTRkYG\nOWb/4MGDWlpaPJQTHh4+ZcqUvXv3uru7BwUF+fr6rlmz5vXr187OznZ2dvyOGokCyvuImy96j1B3\nVFRUlJmZmZqaqqysDAASEhInTpzgrRzOGH8dHZ2ioqLmg3mmTJnCz6CRSKA8Qbu6ulJdBUKUEhMT\nMzAw4DxsxZldurMmTpy4du1aOzs7BQWFffv2TZ8+vcVgHoRawFEWCHWarq5uVlZWZ19laGjo6enp\n4uJSV1fn4OCwcuVKBoOBg3lQOzBBI9Rpbc0tU1FR0WLloIyMDA0NDc6PNjY2NjY21AaHRAgdE3Rc\nXJxc8/WfOiY9PT0rK6sr67+VlJSoqKjw/PLi4mJVVVWeX15VVSUmJtat4x8yZIimpmZnX5iYmMh5\nILu7aGtumfLy8vT09OZ7yIlWQkNDO1X+P//8U1paSuljBF18u7+o6+35i6g+hZqaGl1d3RZrmH0R\nf9szgyAIfpXFFzk5OTdv3uThhdevX//w4UOfPn14q7e6uvrZs2cWFha8vRwA/vzzT1tbW55f/vr1\n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\n" } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "XYcoef" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 17, "text": [ "[ 3.2 0.9]" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And finally, in the same spirit, the [cython magic extension](http://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/3607712653c66d63e0d7f13f073bde8c0f209ba8/docs/examples/notebooks/cython_extension.ipynb) lets you call Cython code directly from the notebook:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%load_ext cythonmagic" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "%%cython -lm\n", "from libc.math cimport sin\n", "print 'sin(1)=', sin(1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "sin(1)= 0.841470984808\n" ] } ], "prompt_number": 19 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Keep in mind, this is still experimental code!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hopefully this post shows that the system is already useful to communicate technical content in blog form with a minimal amount of effort. But please note that we're still in heavy development of many of these features, so things are susceptible to changing in the near future. By all means join the [IPython dev mailing list](http://mail.scipy.org/mailman/listinfo/ipython-dev) if you'd like to participate and help us make IPython a better tool!" ] } ], "metadata": {} } ] }