Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@goerz
Last active January 28, 2020 23:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save goerz/85b6b3c1633378cee797 to your computer and use it in GitHub Desktop.
Save goerz/85b6b3c1633378cee797 to your computer and use it in GitHub Desktop.
The Analytical Solution of Rabi Cycling in the Two-Level-System
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Analytical Solution of Rabi Cycling in the Two-Level-System"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pylab as plt\n",
"import numpy as np\n",
"from numpy import pi as π\n",
"from numpy import exp, cos, sin, sqrt, abs"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib notebook"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import display"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"application/json": {
"Software versions": [
{
"module": "Python",
"version": "3.7.3 64bit [GCC 7.3.0]"
},
{
"module": "IPython",
"version": "7.8.0"
},
{
"module": "OS",
"version": "Linux 4.14.138+ x86_64 with debian buster sid"
},
{
"module": "numpy",
"version": "1.18.1"
},
{
"module": "matplotlib",
"version": "3.1.2"
},
{
"module": "sympy",
"version": "1.5.1"
}
]
},
"text/html": [
"<table><tr><th>Software</th><th>Version</th></tr><tr><td>Python</td><td>3.7.3 64bit [GCC 7.3.0]</td></tr><tr><td>IPython</td><td>7.8.0</td></tr><tr><td>OS</td><td>Linux 4.14.138+ x86_64 with debian buster sid</td></tr><tr><td>numpy</td><td>1.18.1</td></tr><tr><td>matplotlib</td><td>3.1.2</td></tr><tr><td>sympy</td><td>1.5.1</td></tr><tr><td colspan='2'>Tue Jan 28 23:34:30 2020 UTC</td></tr></table>"
],
"text/latex": [
"\\begin{tabular}{|l|l|}\\hline\n",
"{\\bf Software} & {\\bf Version} \\\\ \\hline\\hline\n",
"Python & 3.7.3 64bit [GCC 7.3.0] \\\\ \\hline\n",
"IPython & 7.8.0 \\\\ \\hline\n",
"OS & Linux 4.14.138+ x86\\_64 with debian buster sid \\\\ \\hline\n",
"numpy & 1.18.1 \\\\ \\hline\n",
"matplotlib & 3.1.2 \\\\ \\hline\n",
"sympy & 1.5.1 \\\\ \\hline\n",
"\\hline \\multicolumn{2}{|l|}{Tue Jan 28 23:34:30 2020 UTC} \\\\ \\hline\n",
"\\end{tabular}\n"
],
"text/plain": [
"Software versions\n",
"Python 3.7.3 64bit [GCC 7.3.0]\n",
"IPython 7.8.0\n",
"OS Linux 4.14.138+ x86_64 with debian buster sid\n",
"numpy 1.18.1\n",
"matplotlib 3.1.2\n",
"sympy 1.5.1\n",
"Tue Jan 28 23:34:30 2020 UTC"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%load_ext version_information\n",
"%version_information numpy, matplotlib, sympy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Check the analytical solution to the TLS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We consider the solution of the Schrödinger equation for the two level system in the rotating wave approximation\n",
"\\begin{equation}\n",
"i \\hbar \\frac{\\partial}{\\partial t} \\begin{pmatrix} b(t) \\\\\\\\ a(t) \\end{pmatrix}\n",
"= \\begin{pmatrix} 0 & \\frac{\\Omega_0}{2} \\\\\\\\ \\frac{\\Omega_0}{2} & \\Delta\\end{pmatrix}\n",
" \\begin{pmatrix} b(t) \\\\\\\\ a(t) \\end{pmatrix}\n",
"\\end{equation}\n",
"with the boundary condition $a(0) = 1$, $b(0) = 0$.\n",
"Here and everwhere else, we work in energy units of $2 \\pi$ GHz and time units of ns, and thus have $\\hbar = 1$"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import sympy as sp\n",
"from sympy import I, diff\n",
"sp.init_printing()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We \"guess\" the analytical solutions (based on D. Tannor, \"Introduction to Quantum Mechanics: A Time-dependent Perspective\", with some small corrections):"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"Δ, Ω0, t, Ω = sp.symbols((r'\\Delta', r'\\Omega_0', 't', r'\\Omega'), real=True)\n",
"#Ω = sp.sqrt(Δ**2 + Ω0**2)\n",
"a = sp.exp(-I*Δ*t/2)*( sp.cos(Ω*t/2) - I*(Δ/Ω)*sp.sin(Ω*t/2) )\n",
"b = -I * (Ω0/Ω)*sp.exp(-I*Δ*t/2)*sp.sin(Ω*t/2)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left(- \\frac{i \\Delta \\sin{\\left(\\frac{\\Omega t}{2} \\right)}}{\\Omega} + \\cos{\\left(\\frac{\\Omega t}{2} \\right)}\\right) e^{- \\frac{i \\Delta t}{2}}$"
],
"text/plain": [
"⎛ ⎛\\Omega⋅t⎞ ⎞ -ⅈ⋅\\Delta⋅t \n",
"⎜ ⅈ⋅\\Delta⋅sin⎜────────⎟ ⎟ ────────────\n",
"⎜ ⎝ 2 ⎠ ⎛\\Omega⋅t⎞⎟ 2 \n",
"⎜- ────────────────────── + cos⎜────────⎟⎟⋅ℯ \n",
"⎝ \\Omega ⎝ 2 ⎠⎠ "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle - \\frac{i \\Omega_0 e^{- \\frac{i \\Delta t}{2}} \\sin{\\left(\\frac{\\Omega t}{2} \\right)}}{\\Omega}$"
],
"text/plain": [
" -ⅈ⋅\\Delta⋅t \n",
" ──────────── \n",
" 2 ⎛\\Omega⋅t⎞ \n",
"-ⅈ⋅\\Omega₀⋅ℯ ⋅sin⎜────────⎟ \n",
" ⎝ 2 ⎠ \n",
"───────────────────────────────────────\n",
" \\Omega "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and check that the left hand side of the Schrödinger Equation equals the right side"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAA4AAAASCAYAAABrXO8xAAAABHNCSVQICAgIfAhkiAAAAQxJREFUOI2t0k8rxFEUxvEPWZGGjZWFmsy8AaGsUJOlN2Bha4qFjbLws7D2p1hKeQW2NlbkHWA0pZTdFImykcW9vxp3frMYeTZPnc733HN7Tl+WZf6i/oLaOE7xgi884QCj7U0DCVTGDcZwgXtMYwNLmEOr6MWTCK1jGVtYwD6q2CtatYxaXO04GbiDD6xgKAXno1/iOwHfcY1BzKZgNXpDsR6jV1KwFP2tC5jXR1KwJ7WD+cRSUWNb/TUFH6JXuoCT0RspeBW9pvMLw0L4n7hNwaYQxQTqCbgr5Hcu5NlxcmvCyR1hEXeYETJuYDtvTFdqYgpnEdgULupQCL6VN6YvwjNWC+q/9C859qQf+aIu4Sv3EegAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle 0$"
],
"text/plain": [
"0"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sp.simplify((diff(a, t) + I*(Ω0/2)*b + I*Δ*a).subs({Ω:sp.sqrt(Δ**2 + Ω0**2)}))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAA4AAAASCAYAAABrXO8xAAAABHNCSVQICAgIfAhkiAAAAQxJREFUOI2t0k8rxFEUxvEPWZGGjZWFmsy8AaGsUJOlN2Bha4qFjbLws7D2p1hKeQW2NlbkHWA0pZTdFImykcW9vxp3frMYeTZPnc733HN7Tl+WZf6i/oLaOE7xgi884QCj7U0DCVTGDcZwgXtMYwNLmEOr6MWTCK1jGVtYwD6q2CtatYxaXO04GbiDD6xgKAXno1/iOwHfcY1BzKZgNXpDsR6jV1KwFP2tC5jXR1KwJ7WD+cRSUWNb/TUFH6JXuoCT0RspeBW9pvMLw0L4n7hNwaYQxQTqCbgr5Hcu5NlxcmvCyR1hEXeYETJuYDtvTFdqYgpnEdgULupQCL6VN6YvwjNWC+q/9C859qQf+aIu4Sv3EegAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle 0$"
],
"text/plain": [
"0"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sp.simplify(diff(b, t) + I*(Ω0/2)*a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Ideal π-pulse"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Population transfer is achieved for $\\Omega t = \\pi$. The amplitudes in the ideal case of no detuning are:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAA4AAAASCAYAAABrXO8xAAAABHNCSVQICAgIfAhkiAAAAQxJREFUOI2t0k8rxFEUxvEPWZGGjZWFmsy8AaGsUJOlN2Bha4qFjbLws7D2p1hKeQW2NlbkHWA0pZTdFImykcW9vxp3frMYeTZPnc733HN7Tl+WZf6i/oLaOE7xgi884QCj7U0DCVTGDcZwgXtMYwNLmEOr6MWTCK1jGVtYwD6q2CtatYxaXO04GbiDD6xgKAXno1/iOwHfcY1BzKZgNXpDsR6jV1KwFP2tC5jXR1KwJ7WD+cRSUWNb/TUFH6JXuoCT0RspeBW9pvMLw0L4n7hNwaYQxQTqCbgr5Hcu5NlxcmvCyR1hEXeYETJuYDtvTFdqYgpnEdgULupQCL6VN6YvwjNWC+q/9C859qQf+aIu4Sv3EegAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle 0$"
],
"text/plain": [
"0"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.subs({Ω * t: sp.pi, Δ:0})"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABkAAAATCAYAAABlcqYFAAAABHNCSVQICAgIfAhkiAAAALtJREFUOI3dlEEKwjAQRV9FceE9CoogiBcQb9FjuHKZvdfwOFoFwYVSEBeewEUXgi6aShmqWMhHcCBMmEnyJvlhIuccamsJzpwDDyBRQiber5WQBdAHTmWgLYBcbCD0TaYUeiyVkLH36V9AbsDxE+RM8abfjlVlbw+IgZ3Pvcz+rgzIG1R+rcxHvujULrKQWQOAtVKPrU2E1KRWdAUkBw4qSBcYAHvgroIMgQ41TwXhetcGiN4lFV34N5AnSgUm5j5dhXYAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle - i$"
],
"text/plain": [
"-ⅈ"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b.subs({Ω * t: sp.pi, Δ:0, Ω0: Ω})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note the non-zero phase on $b$: Even a $2 \\pi$ pulse (a full cycle) will not reproduce the initial state, but result in a $\\pi$-phase shift. Only two full cycles reproduce the exact original state."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For $\\Delta \\neq 0$, the phases behave in a considerably more complicated way. In particular, the imaginary part of $a$ (i.e., the phase of $\\vert0\\rangle$) will no longer be zero:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle - \\frac{i \\Delta e^{- \\frac{i \\Delta t}{2}}}{\\Omega}$"
],
"text/plain": [
" -ⅈ⋅\\Delta⋅t \n",
" ──────────── \n",
" 2 \n",
"-ⅈ⋅\\Delta⋅ℯ \n",
"────────────────────────\n",
" \\Omega "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.subs({Ω * t: sp.pi})"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle - \\frac{i \\Omega_0 e^{- \\frac{i \\Delta t}{2}}}{\\Omega}$"
],
"text/plain": [
" -ⅈ⋅\\Delta⋅t \n",
" ──────────── \n",
" 2 \n",
"-ⅈ⋅\\Omega₀⋅ℯ \n",
"─────────────────────────\n",
" \\Omega "
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b.subs({Ω * t: sp.pi})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Compare analytical and numerical solution of TLS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now simulate the dynamics of the two-level system numerically, and compare the result to the analytical solution"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"Ω0 = 2*π*0.5 # 2π GHz\n",
"Δ = 2*π*0.1 # 2π GHz"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"def a(Ω0, Δ, t):\n",
" \"\"\"Complex amplitude of the TLS solution, for the \\ket{1} component\"\"\"\n",
" Ω = sqrt(Δ**2 + Ω0**2)\n",
" return exp(-0.5j*Δ*t)*( cos(0.5*Ω*t) - 1j*(Δ/Ω)*sin(0.5*Ω*t) )"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def b(Ω0, Δ, t):\n",
" \"\"\"Complex amplitude of the TLS solution, for the \\ket{0} component\"\"\"\n",
" Ω = sqrt(Δ**2 + Ω0**2)\n",
" return -1j*(Ω0/Ω)*exp(-0.5j*Δ*t)*sin(0.5*Ω*t)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"def show_rabi_cycling(Ω0, Δ, tgrid):\n",
" fig = plt.figure()\n",
" ax = fig.add_subplot(111)\n",
" a_s = a(Ω0, Δ, tgrid)\n",
" b_s = b(Ω0, Δ, tgrid)\n",
" ax.plot(tgrid, abs(a_s)**2, label='pop(1)', color='red')\n",
" ax.plot(tgrid, abs(b_s)**2, label='pop(0)', color='blue', ls='--')\n",
" fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support. ' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" fig.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option);\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" // select the cell after this one\n",
" var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
" IPython.notebook.select(index + 1);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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ARUA7THz+sSVV14p++67rxxxxBHy8MMPy7LLLivrrbeevPLKK17rHU+F/+QnP5E99thD7r33XrnlllvkH//4h6y77rryl7/8ZTzBELStDzzwgJx77rmyzDLLBK13vFT26quvyhprrCHvfOc75aabbpInn3xSTjrpJHnf+943XiAI0s4TTjhBzj77bDnjjDPkqaeeEvw+8cQT5fTTTw9S/7BWAt6LuQ7Kj6wEjE877TQ555xz5L777pPZZ5+9Oy/+7W9/y8qu10oioG5gSgIVKhs0ftBOgcEgId4wYgLvtddecuCBB4YiY1zV84c//EGgCYRg+IlPfGJctT1EY//85z/LCiusIGeddZYcffTRstxyy8kpp5wSoupxUwd4w9133y133nnnuGlzjIZutNFG8sEPflAuuOCCkeo322yzrlbqsssuG7mmX6ojAA3gD37wg+7ODEqB9g/xevfbbz/Zf//9uwW/9tpr3X64+OKLZeutt65e2Th/UjWADRoAb731ljz00EMC9TYT4g3j9/Tp03lJPx0jAGaC9P73v99xyVocEIC2dcMNNxw1rhUZtwhcd911stJKK8kWW2zRXcwsv/zyMnXqVLeVaGmy+uqry6233irPPvtsF43HHntM7rrrLtlggw0UHU8I/OpXv5KXX355FP9ADF8oS3RerAe6hpioh5/Tp2fMmCGwMcEKM53w++mnn05f0u+OEICGFTZp2D5baqmlHJWqxRCBK664omvKgC1gTf4Q+OUvf9ndmoT5yMEHHyzA+8tf/rLMOuusssMOO/ireJyVDE3r66+/LhMnThREqAC/PuaYY2SbbbYZZ0iEay6EP6SseZH3wlEzXDWpADhc/amtsUQA2qknnniiu4q3fFSzFyDw4osvyle+8pWunSUONGnyhwAWMtAAHnvssd1KoAHEuIbNlAqA7nC/6qqr5Dvf+Y5cfvnlsuSSS8qjjz7aXUBii1JxdoezlhQGAd0CDoNzqVrmnnvu7qry97///aj8+P2hD31o1DX9UR+BPffcU2644Qa5/fbbZb755qtfoJYwCgGYM+DwEuz/EM8af7CzhDE3vkN7oskNAjgducQSS4wqbPHFF5cXXnhh1DX9UQ+Br371q11bbNid4ZT1dtttJ/vss4/As4AmPwhw7tN50T2+KgC6x7RyidiuWXHFFbs2JiwEK3vYnKy22mq8pJ81EYBRMYQ/GBrfdtttXZcONYvUxzMQWHvtteXxxx/vakmgKcEftFTYLsN3bKFpcoMATBj6XRnBTm3BBRd0U4GW0kXgzTffFNhlpxPGMfi0Jj8IwOUOhEDMg0zYhsdpYJ0XiUi1T90Croabt6dgw4OtBEyUq6yySve0JI7I77jjjt7qHG8FY9sXWzjXXntt1xcg7UhgWAz/aZrcIDDHHHOMsauE+wb4qVN7SzcYsxRooXBAAVvAW265Zdd36HnnnSf40+QOAfiqg83fAgss0N0CfuSRR+Tkk0+WnXbayV0l47AkeAr4+c9/PtJyHPzAIhEH84A17LThQWDRRRftLtjhixHb7vDhqqkGAok2RFPDEEh8SnWSQd9JNIKdRAjsJP7qGkZhu8lJXpdO1t9FF13U7oa1gPq11lqrk9gFtoDS9pF4/fXXdxLBuvOud72rkxxS6CTCX/sa0XCKE81Td/yCPyd2rZ2FF164c8ghh3T+/ve/N5zyZpOXmOFk8uREGdIlPNGwdhKhr5McBOmO72R3oZNovJvdqBZQp34AawjP+qgioAgoAoqAIqAIKAJtRGC0MUMbW6A0KwKKgCKgCCgCioAioAhYIaACoBVcmlkRUAQUAUVAEVAEFIH2I6ACYPv7UFugCCgCioAioAgoAoqAFQIqAFrBpZkVAUVAEVAEFAFFQBFoPwIqALa/D7UFioAioAgoAoqAIqAIWCGgAqAVXJpZEVAEFAFFQBFQBBSB9iOgAmD7+1BboAgoAoqAIqAIKAKKgBUCKgBawaWZFQFFQBFQBBQBRUARaD8CKgC2vw+1BYqAIqAIKAKKgCKgCFghoAKgFVyaWRFQBBQBRUARUAQUgfYjoAJg+/tQW6AIKAKKgCKgCCgCioAVAioAWsGlmRUBRUARUAQUAUVAEWg/AioAtr8PtQWKgCKgCCgCioAioAhYIaACoBVcmlkRUAQUAUVAEVAEFIH2I6ACYPv7UFugCCgCioAioAgoAoqAFQIqAFrBpZkVAUVAEVAEFAFFQBFoPwIqALa/D7UFioAioAgoAoqAIqAIWCGgAqAVXJpZEVAEFAFFQBFQBBSB9iOgAmD7+1BboAgoAoqAIqAIKAKKgBUCKgBawaWZFQFFQBFQBBQBRUARaD8CKgC2vw+1BYqAIqAIKAKKgCKgCFghoAKgFVyaWRFQBBQBRUARUAQUgfYjoAJg+/tQW6AIKAKKgCKgCCgCioAVAioAWsGlmRUBRUARUAQUAUVAEWg/AioAtr8PtQWKgCKgCCgCioAioAhYIaACoBVcmlkRUAQUAUVAEVAEFIH2I6ACYPv7UFugCCgCioAioAgoAoqAFQIqAFrBpZkVAUVAEVAEFAFFQBFoPwIqALa/D7UFioAioAgoAoqAIqAIWCGgAqAVXJpZEVAEFAFFQBFQBBSB9iOgAmD7+1BboAgoAoqAIqAIKAKKgBUC/x8j1uTgmGIP7wAAAABJRU5ErkJggg==\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show_rabi_cycling(Ω0, Δ, np.linspace(0, 10, 1000))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"matrix([[0. +0.j, 1.57079633+0.j],\n",
" [1.57079633+0.j, 0.62831853+0.j]])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H = np.matrix([[0, 0.5*Ω0],[0.5*Ω0, Δ]], dtype=np.complex128); H"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"evals, W = np.linalg.eig(H)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"def get_U(evals, W, dt):\n",
" \"\"\"Get the time evolution operator for a single time step\"\"\"\n",
" D = np.matrix(np.diag(np.exp(-1j*evals*dt)))\n",
" W = np.matrix(W)\n",
" return np.asarray(W*D*W.H)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"def propagate(psi, tgrid, evals, W):\n",
" \"\"\"Propagate psi along the given time grid, assuming a constant\n",
" Hamiltonian with the given eigenvalues and eigenvector matrix.\n",
" \n",
" Returns an array of shape (2,nt) that gives the propagated \n",
" amplitude at each point in time.\"\"\"\n",
" nt = len(tgrid)\n",
" result = np.zeros((2, nt), dtype=np.complex128)\n",
" tgrid = list(tgrid)\n",
" dt = tgrid[1] - tgrid[0]\n",
" i = 0\n",
" U = get_U(evals, W, dt)\n",
" while len(tgrid) > 0:\n",
" tgrid.pop()\n",
" result[:, i] = psi\n",
" psi = U.dot(psi)\n",
" i += 1\n",
" return result"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"dyn = propagate(np.array([0,1]), tgrid=np.linspace(0,10,1000), evals=evals, W=W)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"def show_dyn(dyn, tgrid):\n",
" fig = plt.figure()\n",
" ax = fig.add_subplot(111)\n",
" ax.plot(tgrid, abs(dyn[1,:])**2, label='pop(1)', color='red')\n",
" ax.plot(tgrid, abs(dyn[0,:])**2, label='pop(0)', color='blue', ls='--')\n",
" fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support. ' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" fig.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option);\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" // select the cell after this one\n",
" var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
" IPython.notebook.select(index + 1);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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ARUA7THz+sSVV14p++67rxxxxBHy8MMPy7LLLivrrbeevPLKK17rHU+F/+QnP5E99thD7r33XrnlllvkH//4h6y77rryl7/8ZTzBELStDzzwgJx77rmyzDLLBK13vFT26quvyhprrCHvfOc75aabbpInn3xSTjrpJHnf+943XiAI0s4TTjhBzj77bDnjjDPkqaeeEvw+8cQT5fTTTw9S/7BWAt6LuQ7Kj6wEjE877TQ555xz5L777pPZZ5+9Oy/+7W9/y8qu10oioG5gSgIVKhs0ftBOgcEgId4wYgLvtddecuCBB4YiY1zV84c//EGgCYRg+IlPfGJctT1EY//85z/LCiusIGeddZYcffTRstxyy8kpp5wSoupxUwd4w9133y133nnnuGlzjIZutNFG8sEPflAuuOCCkeo322yzrlbqsssuG7mmX6ojAA3gD37wg+7ODEqB9g/xevfbbz/Zf//9uwW/9tpr3X64+OKLZeutt65e2Th/UjWADRoAb731ljz00EMC9TYT4g3j9/Tp03lJPx0jAGaC9P73v99xyVocEIC2dcMNNxw1rhUZtwhcd911stJKK8kWW2zRXcwsv/zyMnXqVLeVaGmy+uqry6233irPPvtsF43HHntM7rrrLtlggw0UHU8I/OpXv5KXX355FP9ADF8oS3RerAe6hpioh5/Tp2fMmCGwMcEKM53w++mnn05f0u+OEICGFTZp2D5baqmlHJWqxRCBK664omvKgC1gTf4Q+OUvf9ndmoT5yMEHHyzA+8tf/rLMOuusssMOO/ireJyVDE3r66+/LhMnThREqAC/PuaYY2SbbbYZZ0iEay6EP6SseZH3wlEzXDWpADhc/amtsUQA2qknnniiu4q3fFSzFyDw4osvyle+8pWunSUONGnyhwAWMtAAHnvssd1KoAHEuIbNlAqA7nC/6qqr5Dvf+Y5cfvnlsuSSS8qjjz7aXUBii1JxdoezlhQGAd0CDoNzqVrmnnvu7qry97///aj8+P2hD31o1DX9UR+BPffcU2644Qa5/fbbZb755qtfoJYwCgGYM+DwEuz/EM8af7CzhDE3vkN7oskNAjgducQSS4wqbPHFF5cXXnhh1DX9UQ+Br371q11bbNid4ZT1dtttJ/vss4/As4AmPwhw7tN50T2+KgC6x7RyidiuWXHFFbs2JiwEK3vYnKy22mq8pJ81EYBRMYQ/GBrfdtttXZcONYvUxzMQWHvtteXxxx/vakmgKcEftFTYLsN3bKFpcoMATBj6XRnBTm3BBRd0U4GW0kXgzTffFNhlpxPGMfi0Jj8IwOUOhEDMg0zYhsdpYJ0XiUi1T90Croabt6dgw4OtBEyUq6yySve0JI7I77jjjt7qHG8FY9sXWzjXXntt1xcg7UhgWAz/aZrcIDDHHHOMsauE+wb4qVN7SzcYsxRooXBAAVvAW265Zdd36HnnnSf40+QOAfiqg83fAgss0N0CfuSRR+Tkk0+WnXbayV0l47AkeAr4+c9/PtJyHPzAIhEH84A17LThQWDRRRftLtjhixHb7vDhqqkGAok2RFPDEEh8SnWSQd9JNIKdRAjsJP7qGkZhu8lJXpdO1t9FF13U7oa1gPq11lqrk9gFtoDS9pF4/fXXdxLBuvOud72rkxxS6CTCX/sa0XCKE81Td/yCPyd2rZ2FF164c8ghh3T+/ve/N5zyZpOXmOFk8uREGdIlPNGwdhKhr5McBOmO72R3oZNovJvdqBZQp34AawjP+qgioAgoAoqAIqAIKAJtRGC0MUMbW6A0KwKKgCKgCCgCioAioAhYIaACoBVcmlkRUAQUAUVAEVAEFIH2I6ACYPv7UFugCCgCioAioAgoAoqAFQIqAFrBpZkVAUVAEVAEFAFFQBFoPwIqALa/D7UFioAioAgoAoqAIqAIWCGgAqAVXJpZEVAEFAFFQBFQBBSB9iOgAmD7+1BboAgoAoqAIqAIKAKKgBUCKgBawaWZFQFFQBFQBBQBRUARaD8CKgC2vw+1BYqAIqAIKAKKgCKgCFghoAKgFVyaWRFQBBQBRUARUAQUgfYjoAJg+/tQW6AIKAKKgCKgCCgCioAVAioAWsGlmRUBRUARUAQUAUVAEWg/AioAtr8PtQWKgCKgCCgCioAioAhYIaACoBVcmlkRUAQUAUVAEVAEFIH2I6ACYPv7UFugCCgCioAioAgoAoqAFQIqAFrBpZkVAUVAEVAEFAFFQBFoPwIqALa/D7UFioAioAgoAoqAIqAIWCGgAqAVXJpZEVAEFAFFQBFQBBSB9iOgAmD7+1BboAgoAoqAIqAIKAKKgBUCKgBawaWZFQFFQBFQBBQBRUARaD8CKgC2vw+1BYqAIqAIKAKKgCKgCFghoAKgFVyaWRFQBBQBRUARUAQUgfYjoAJg+/tQW6AIKAKKgCKgCCgCioAVAioAWsGlmRUBRUARUAQUAUVAEWg/AioAtr8PtQWKgCKgCCgCioAioAhYIaACoBVcmlkRUAQUAUVAEVAEFIH2I6ACYPv7UFugCCgCioAioAgoAoqAFQIqAFrBpZkVAUVAEVAEFAFFQBFoPwIqALa/D7UFioAioAgoAoqAIqAIWCGgAqAVXJpZEVAEFAFFQBFQBBSB9iOgAmD7+1BboAgoAoqAIqAIKAKKgBUC/x8j1uTgmGIP7wAAAABJRU5ErkJggg==\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show_dyn(dyn, np.linspace(0, 10, 1000))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The maximum error between the analytical and numerical solution is:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.29480091309186e-13\n"
]
}
],
"source": [
"print(np.max(np.abs(dyn[0,:] - b(Ω0, Δ, np.linspace(0, 10, 1000)))))"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.7207552755516735e-13\n"
]
}
],
"source": [
"print(np.max(np.abs(dyn[1,:] - a(Ω0, Δ, np.linspace(0, 10, 1000)))))"
]
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
matplotlib==3.1.2
numpy==1.18.1
sympy==1.5.1
version-information==1.0.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment