{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook demos how to use Python and Julia in the same notebook where both proces can share object. This is addpted from an example written by Steven Johnson and Fernando PĂ©rez. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initializing Julia interpreter. This may take some time...\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%matplotlib inline\n", "%load_ext julia.magic\n", "julia_version = %julia VERSION\n", "julia_version " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%julia @pyimport matplotlib.pyplot as plt\n", "%julia @pyimport numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we use matplotlib and numpy form the Julia interpreter and use these to plot a julia-defined function." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%julia\n", " # Note how we mix numpy and julia:\n", "t = linspace(0, 2*pi,1000); # use the julia `linspace` and `pi`\n", "s = sin(3*t + 4*np.cos(2*t)); # use the numpy cosine and julia sine\n", "fig = plt.gcf() # **** WATCH THIS VARIABLE ****\n", "plt.plot(t, s, color=\"red\", linewidth=2.0, linestyle=\"--\", label=\"sin(3t+4.cos(2t))\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We get a handle to the matplotlib figure created by the Julia Interpreter and annotate it from Python. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "fig = %julia fig\n", "x = np.arange(0,6, 0.1)\n", "fig.axes[0].plot(x, np.sin(x), label='sine')\n", "fig.axes[0].set_title('A weird Julia function and a NumPy Sine')\n", "fig.axes[0].legend()\n", "\n", "fig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can define the Fibonacci fucntion recusrsively where Python call into Julia and Julia call into Python. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "55" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from __future__ import print_function\n", "\n", "# julia fib function\n", "jlfib = %julia _fib(n, pyfib) = n <= 2 ? 1 : pyfib(n-1, _fib) + pyfib(n-2, _fib)\n", "\n", "def pyfib(n, _fib):\n", " if n <= 2:\n", " r = 1\n", " else:\n", " # here we tell julia (_fib) to recurse using Python\n", " r = _fib(n-1, pyfib) + _fib(n-2, pyfib)\n", " return r\n", "fibonacci = lambda x: pyfib(x, jlfib)\n", "fibonacci(10)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }