{ "metadata": { "celltoolbar": "Slideshow", "name": "", "signature": "sha256:ff0ce22b890865bb1af95d39587d5c0642e2ab199c57784ff2dc96c601ea15e3" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# IPython is not just for Python...\n", "\n", "Example: Julia Language! \n", "\n", "\n", "\n", "(thanks to Fernando Perez for providing the examples below)\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "%run talktools" ], "language": "python", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "html": [ "\n" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Using the Julia Magic" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%load_ext julia.magic\n", "%julia @pyimport matplotlib.pyplot as plt\n", "%julia @pyimport numpy as np" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Initializing Julia interpreter. This may take some time..." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Running src: @pyimport matplotlib.pyplot as plt\n", "Ans:" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 4363833856\n", "Pyans (s, r): None ||| None\n", "Running src: @pyimport numpy as np\n", "Ans:" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 4363833856\n", "Pyans (s, r): None ||| None\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "%%julia\n", "\n", "# Note how we mix numpy and julia:\n", "t = linspace(0, 2*pi, 1000); # use the julia linspace\n", "s = sin(3 * t + 4 * np.cos(2 * t)); # use the numpy cosine and julia sine\n", "\n", "fig = plt.gcf() # **** WATCH THIS VARIABLE ****\n", "plt.plot(t, s, color=\"red\", linewidth=2.0, linestyle=\"--\")" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Running src: \n", "# Note how we mix numpy and julia:\n", "t = linspace(0, 2*pi, 1000); # use the julia linspace\n", "s = sin(3 * t + 4 * np.cos(2 * t)); # use the numpy cosine and julia sine\n", "\n", "fig = plt.gcf() # **** WATCH THIS VARIABLE ****\n", "plt.plot(t, s, color=\"red\", linewidth=2.0, linestyle=\"--\")\n", "Ans:" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 4453709952\n", "Pyans (s, r): [] ||| []\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nRs81a+XI4HkAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Julia Variables can be accessed in Python!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig = %julia fig\n", "fig" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Running src: fig\n", "Ans: 4450582896\n", "Pyans (s, r): Figure(480x320) ||| \n" ] }, { "metadata": {}, "output_type": "pyout", "png": "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\nRs81a+XI4HkAAAAASUVORK5CYII=\n", "prompt_number": 4, "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Getting Crazy: two-stage recursion in Python and Julia" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# define a recursive julia fib function which calls Python\n", "fib = %julia fib(n, fib2) = n < 2 ? n : fib2(n-1, fib) + fib2(n-2, fib)\n", "\n", " \n", "# define a recursive python fib function which calls Julia\n", "def fib2(n, fib):\n", " print 'Into Python, n=',n,\n", " if n < 2:\n", " return n\n", " print 'Out to Julia'\n", " return fib(n-1, fib2) + fib(n-2, fib2)\n", "\n", "\n", "fib2(6, fib)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Running src: fib(n, fib2) = n < 2 ? n : fib2(n-1, fib) + fib2(n-2, fib)\n", "Ans: 4564745280\n", "Pyans (s, r):" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " ||| \n", "Into Python, n= 6 Out to Julia\n", "Into Python, n=" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 4 Out to Julia\n", "Into Python, n= 2 Out to Julia\n", "Into Python, n= 1 Into Python, n= 1 Into Python, n= 0 Into Python, n= 3 Out to Julia\n", "Into Python, n= 1 Into Python, n= 0 Into Python, n= 3 Out to Julia\n", "Into Python, n= 1 Into Python, n= 0 Into Python, n= 2 Out to Julia\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "8" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## The Possibilities are Endless\n", "\n", "Other language magics and kernels available as well: Julia, R, Ruby, Haskell, etc.\n", "\n", "Look for the I*[your language here]* notebook!\n", "\n", "1. [IPython](http://ipython.org) \"Official\" version.\n", "1. [IJulia](http://nbviewer.ipython.org/url/jdj.mit.edu/~stevenj/IJulia%20Preview.ipynb)\n", "1. [IHaskell](http://nbviewer.ipython.org/github/gibiansky/IHaskell/blob/master/demo/IHaskell.ipynb)\n", "1. [IFSharp](http://nbviewer.ipython.org/github/BayardRock/IfSharp/blob/master/Feature%20Notebook.ipynb)\n", "1. [IRuby](http://nbviewer.ipython.org/github/minad/iruby/blob/master/IRuby-Example.ipynb)\n", "1. [IGo](https://github.com/takluyver/igo)\n", "1. [IScala](https://github.com/mattpap/IScala)\n", "1. [IMathics](http://nbviewer.ipython.org/gist/sn6uv/8381447)\n", "1. [IAldor](https://github.com/mattpap/IAldor)\n", "1. [IRKernel](https://github.com/takluyver/IRkernel): [Leaflet routing in R](http://nbviewer.ipython.org/gist/anonymous/9998388/rmaps_leaflet_routing.ipynb)\n", "1. [IErlang](https://github.com/robbielynch/ierlang)" ] } ], "metadata": {} } ] }