Skip to content

Instantly share code, notes, and snippets.

@cakiki
Forked from lmcinnes/AlignedUMAP Demo.ipynb
Created February 5, 2022 21:44
Show Gist options
  • Save cakiki/57096f05649476befbcba271b6fd855f to your computer and use it in GitHub Desktop.
Save cakiki/57096f05649476befbcba271b6fd855f to your computer and use it in GitHub Desktop.
Demonstration of experimental Aligned UMAP in 0.5dev
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Demonstration of Aligned UMAP\n",
"\n",
"This is a quick demonstration of the current basic implementation of aligned UMAP -- allowing overlapping, or otherwise related, sequences of datasets to be embedded by UMAP in a way that preserves alignment according to the overlaps or relations. This is all preliminary, but is currently available in the 0.5dev branch of umap on github: https://github.com/lmcinnes/umap/tree/0.5dev"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import sklearn.datasets\n",
"import umap\n",
"import umap.plot\n",
"import umap.utils as utils\n",
"import umap.aligned_umap\n",
"from ipywidgets import interact"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For our demonstration we'll just use the pendigits dataset from sklearn."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"digits = sklearn.datasets.load_digits()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To make a sequence of datasets with overlaps we'll first sort the data so we have some vaguely sensible progression. In this case we'll sort by the total amount of \"ink\" in the handwritten digit. This isn't meant to be meaningful, it is merely meant to provide something useful to slicing."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x12bd46550>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ordered_digits = digits.data[np.argsort(digits.data.sum(axis=1))]\n",
"ordered_target = digits.target[np.argsort(digits.data.sum(axis=1))]\n",
"plt.matshow(ordered_digits[-1].reshape((8,8)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can slice up the data. In order to make things able to be \"aligned\" we'll take slices of 400 samples, but overlap each slice by 250 samples (i.e. slide along by 150 samples each time."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"slices = [ordered_digits[150 * i:min(ordered_digits.shape[0], 150 * i + 400)] for i in range(10)]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The aligned UMAP approach requires the user to provide \"relations\" between the datasets. These should be formatted as dictionaries that provide a mapping of indices of one slice to indices of the next. In our case the mapping is from the last 250 indices of a slice to the first 250 indices of the next slice. We need one such relation for each slice. Since the relations are the same we'll make one such relation and copy it. In practice you can write the relations however you like, the only requirements at the moment are that they should be one-to-one on a subset of indices (a single index can't map to many indices, and you can't have many indices mapping to a single index)."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"relation_dict = {i+150:i for i in range(400-150)}\n",
"relation_dicts = [relation_dict.copy() for i in range(len(slices))]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we just throw it into the special ``AlignedUMAP`` class. We'll just use default parameters for now. If you wish to play the the relevant parameters that differ from normal UMAP parameters are:\n",
"\n",
"* ``alignment_regularisation`` which controls how strongly to force related points to maintain position. This defaults to 0.01, and should probably be in the range 0.0001 to 0.2.\n",
"* ``alignment_window_size`` which controls how the alignment extends through the sequence. The default is 3, which makes the alignment look at (with decreasing strength) the 3 prior and 3 following slices in the sequence of slices (if they exist)."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 57.1 s, sys: 734 ms, total: 57.9 s\n",
"Wall time: 48.8 s\n"
]
}
],
"source": [
"%%time\n",
"aligned_mapper = umap.aligned_umap.AlignedUMAP().fit(slices, relations=relation_dicts[:-1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As you can see this is somewhat slow right now -- a minute just to handle pendigits. Of course partly this is the fact that there are many slices, so we are constructing 10 different embeddings at once. That puts us down to 5s per embedding, which is probably a little more reasonable."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next we need a way to visualize all of this. For now I just hacked together a little bit of custom code specialized to these slices that will do the job -- providing a slider you can use to move through the different slices and have the plot update interactively."
]
},
{
"cell_type": "code",
"execution_count": 8,
"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\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\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,iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAYAAADbcAZoAAAgAElEQVR4Xu3XMQ0AAAzDsJU/6bHI5RGoZO3JzhEgQIAAAQIECBAgQCASWLRjhgABAgQIECBAgAABAidAPAEBAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQAH/z5sAABIaSURBVIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQICBA/AABAgQIECBAgAABApmAAMmoDREgQIAAAQIECBAgIED8AAECBAgQIECAAAECmYAAyagNESBAgAABAgQIECAgQPwAAQIECBAgQIAAAQKZgADJqA0RIECAAAECBAgQIPAWJAMhH4HbWQAAAABJRU5ErkJggg==\" width=\"400\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "69ed51da7a54401ea892f98fbb58c9ea",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(FloatSlider(value=4.5, description='smooth_index', max=9.0), Output()), _dom_classes=('w…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<function __main__.plot_embedding(smooth_index)>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%matplotlib notebook\n",
"\n",
"embeddings = aligned_mapper.embeddings_\n",
"\n",
"fig, ax = plt.subplots(figsize=(4,4))\n",
"new_points = ax.scatter(*np.ones((150, 2)).T, s=5, alpha=0.0, c=ordered_target[:150], cmap=\"Spectral\")\n",
"old_points = ax.scatter(*np.ones((150, 2)).T, s=5, alpha=0.0, c=ordered_target[:150], cmap=\"Spectral\")\n",
"sc_points = ax.scatter(*embeddings[0].T, s=5, c=ordered_target[:400], cmap=\"Spectral\")\n",
"ax.axis([np.min(np.hstack([e[:,0] for e in embeddings]) * 1.05), \n",
" np.max(np.hstack([e[:,0] for e in embeddings]) * 1.05), \n",
" np.min(np.hstack([e[:,1] for e in embeddings]) * 1.05), \n",
" np.max(np.hstack([e[:,1] for e in embeddings]) * 1.05)])\n",
"\n",
"\n",
"def plot_embedding(smooth_index):\n",
" lo_index = int(np.floor(smooth_index))\n",
" hi_index = int(np.ceil(smooth_index))\n",
" interp_weight = smooth_index - lo_index\n",
" if lo_index != hi_index:\n",
" smooth_embedding = ((1.0 - interp_weight) * embeddings[lo_index][150:] + \n",
" interp_weight * embeddings[hi_index][:250])\n",
" leaving_points = embeddings[lo_index][:150]\n",
" leaving_alpha = 1.0 - interp_weight\n",
" arriving_points = embeddings[hi_index][250:]\n",
" arriving_alpha = interp_weight\n",
" else:\n",
" smooth_embedding = embeddings[lo_index]\n",
" \n",
" sc_points.set_offsets(smooth_embedding)\n",
" sc_points.set_array(ordered_target[(hi_index * 150):(hi_index * 150) + 400])\n",
" sc_points.changed()\n",
" \n",
" if lo_index != hi_index:\n",
" new_points.set_offsets(arriving_points)\n",
" new_points.set_array(ordered_target[(hi_index * 150) + 250:(hi_index * 150) + 400])\n",
" new_points.set_alpha(arriving_alpha)\n",
" new_points.changed()\n",
"\n",
" old_points.set_offsets(leaving_points)\n",
" old_points.set_array(ordered_target[(lo_index * 150):(lo_index * 150) + 150])\n",
" old_points.set_alpha(leaving_alpha)\n",
" old_points.changed()\n",
"\n",
"interact(plot_embedding, smooth_index=(0.0, float(len(embeddings) - 1)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Online updating of aligned embeddings\n",
"\n",
"It may be the case that we have incoming temporal data and would like to have embeddings of time-windows that, ideally, align with the embeddings of prior time-windows. As long as we overlap the time-windows we use to allow for relations between time windows then this is possible -- except that the previous code required all the time-windows to be input *at once* for fitting. We would instead like to train an initial model and then update it as we go. This is possible via the ``update`` method which we'll demonstrate below."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First we need to fit an initial set of data (in practice this would be a block used for a block-streaming approach). In this case we'll use the first two slices (the current code requires at least two slices)and the relation between them."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 9.78 s, sys: 115 ms, total: 9.9 s\n",
"Wall time: 8.16 s\n"
]
}
],
"source": [
"%%time\n",
"updating_mapper = umap.aligned_umap.AlignedUMAP().fit(slices[:2], relations=relation_dicts[:1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Obviously this is much quicker than the bulk fit we did earlier -- as we would expect. Next we can add a new slice, one at a time, via the ``update`` method. The ``update`` requires a new dataset and a relation dictionary that maps the new dataset to *the previous slice from the pre-trained model* -- note that this is the reverse dictionary to what we pass to fit, where the dictionary maps from the previous to the next (rather than from the next, which we add here, to the previous). We'll time each addition as we go. "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/leland/anaconda3/envs/umap_0.5dev/lib/python3.8/site-packages/numba/typed/typeddict.py:31: NumbaTypeSafetyWarning: unsafe cast from int64 to int32. Precision may be lost.\n",
" d[key] = value\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 7.39 s, sys: 99.9 ms, total: 7.49 s\n",
"Wall time: 6.57 s\n",
"CPU times: user 6.42 s, sys: 108 ms, total: 6.53 s\n",
"Wall time: 5.61 s\n",
"CPU times: user 6.57 s, sys: 134 ms, total: 6.7 s\n",
"Wall time: 5.74 s\n",
"CPU times: user 6.62 s, sys: 154 ms, total: 6.77 s\n",
"Wall time: 5.82 s\n",
"CPU times: user 6.79 s, sys: 174 ms, total: 6.97 s\n",
"Wall time: 5.96 s\n",
"CPU times: user 6.86 s, sys: 197 ms, total: 7.06 s\n",
"Wall time: 6.04 s\n",
"CPU times: user 7.29 s, sys: 248 ms, total: 7.54 s\n",
"Wall time: 6.46 s\n",
"CPU times: user 7.14 s, sys: 250 ms, total: 7.39 s\n",
"Wall time: 6.35 s\n"
]
}
],
"source": [
"for i in range(2,len(slices)):\n",
" %time updating_mapper.update(slices[i], relations={v:k for k,v in relation_dicts[i-1].items()})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that each new slice takes a relatively short period of time, as we might hope. The downside of this, as you can imagine, is that we have no \"forward\" relations -- the windows over slices only look backward. This means the results are less good, but we are trading that for the ability to quickly and easily update as we go.\n",
"\n",
"We can look at how we did using essentially the same code as before."
]
},
{
"cell_type": "code",
"execution_count": 11,
"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\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\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,iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAYAAADbcAZoAAAgAElEQVR4XuzdB5wdV30v8N/Mrbt7t/ddadW7ZUm2LMtyL4SAGzbFlIBxIBjzCDxqQghgIIbgvBBCEiBUUw3GGAy4YHDDwk2WLFlWL7valbb329vM+/zPrMpKe+/eMnu1Wv2Gp49k7Zkzc79zlDf/e87//DXTNE3woAAFKEABClCAAhSgAAUoUAABjQFIAZR5CQpQgAIUoAAFKEABClBACTAA4UCgAAUoQAEKUIACFKAABQomwACkYNS8EAUoQAEKUIACFKAABSjAAIRjgAIUoAAFKEABClCAAhQomAADkIJR80IUoAAFKEABClCAAhSgAAMQjgEKUIACFKAABShAAQpQoGACDEAKRs0LUYACFKAABShAAQpQgAIMQDgGKEABClCAAhSgAAUoQIGCCTAAKRg1L0QBClCAAhSgAAUoQAEKMADhGKAABShAAQpQgAIUoAAFCibAAKRg1LwQBShAAQpQgAIUoAAFKMAAhGOAAhSgAAUoQAEKUIACFCiYAAOQglHzQhSgAAUoQAEKUIACFKAAAxCOAQpQgAIUoAAFKEABClCgYAIMQApGzQtRgAIUoAAFKEABClCAAgxAOAYoQAEKUIACFKAABShAgYIJMAApGDUvRAEKUIACFKAABShAAQowAOEYoAAFKEABClCAAhSgAAUKJsAApGDUvBAFKEABClCAAhSgAAUowACEY4ACFKAABShAAQpQgAIUKJgAA5CCUfNCFKAABShAAQpQgAIUoAADEI4BClCAAhSgAAUoQAEKUKBgAgxACkbNC1GAAhSgAAUoQAEKUIACDEA4BihAAQpQgAIUoAAFKECBggkwACkYNS9EAQpQgAIUoAAFKEABCjAA4RigAAUoQAEKUIACFKAABQomwACkYNS8EAUoQAEKUIACFKAABSjAAIRjgAIUoAAFKEABClCAAhQomAADkIJR80IUoAAFKEABClCAAhSgAAMQjgEKUIACFKAABShAAQpQoGACDEAKRs0LUYACFKAABShAAQpQgAIMQDgGKEABClCAAhSgAAUoQIGCCTAAKRg1L0QBClCAAhSgAAUoQAEKMADhGKAABShAAQpQgAIUoAAFCibAAKRg1LwQBShAAQpQgAIUoAAFKMAAhGOAAhSgAAUoQAEKUIACFCiYAAOQglHzQhSgAAUoQAEKUIACFKAAAxCOAQpQgAIUoAAFKEABClCgYAIMQApGzQtRgAIUoAAFKEABClCAAgxAOAYoQAEKUIACFKAABShAgYIJMAApGDUvRAEKUIACFKAABShAAQowAOEYoAAFKEABClCAAhSgAAUKJsAApGDUvBAFKEABClCAAhSgAAUowACEY4ACFKAABShAAQpQgAIUKJgAA5CCUfNCFKAABShAAQpQgAIUoAADEI4BClCAAhSgAAUoQAEKUKBgAgxACkbNC1GAAhSgAAUoQAEKUIACDEA4BihAAQpQgAIUoAAFKECBggkwACkYNS9EAQpQgAIUoAAFKEABCjAA4RigAAUoQAEKUIACFKAABQomwACkYNS8EAUoQAEKUIACFKAABSjAAIRjgAIUoAAFKEABClCAAhQomAADkIJR80IUoAAFKEABClCAAhSgAAMQjgEKUIACFKAABShAAQpQoGACDEAKRs0LUYACFKAABShAAQpQgAIMQDgGKEABClCAAhSgAAUoQIGCCTAAKRg1L0QBClCAAhSgAAUoQAEKMADhGKAABShAAQpQgAIUoAAFCibAAKRg1LwQBShAAQpQgAIUoAAFKMAAhGOAAhSgAAUoQAEKUIACFCiYAAOQglHzQhSgAAUoQAEKUIACFKAAAxCOAQpQgAIUoAAFKEABClCgYAIMQApGzQtRgAIUoAAFKEABClCAAgxAOAYoQAEKUIACFKAABShAgYIJMAApGDUvRAEKUIACFKAABShAAQowAOEYoAAFKEABClCAAhSgAAUKJsAApGDUvBAFKEABClCAAhSgAAUowACEY4ACFKAABShAAQpQgAIUKJgAA5CCUfNCFKAABShAAQpQgAIUoAADEI4BClCAAhSgAAUoQAEKUKBgAgxACkbNC1GAAhSgAAUoQAEKUIACDEA4BihAAQpQgAIUoAAFKECBggkwACkYNS9EAQpQgAIUoAAFKEABCjAA4RigAAUoQAEKUIACFKAABQomwACkYNS8EAUoQAEKUIACFKAABSjAAIRjgAIUoAAFKEABClCAAhQomAADkIJR80IUoAAFKEABClCAAhSgAAMQjgEKUIACFKAABShAAQpQoGACDEAKRs0LUYACFKAABShAAQpQgAIMQDgGKEABClCAAhSgAAUoQIGCCTAAKRg1L0QBClCAAhSg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XAPpdBbXv/3HSKUmbjo4r7UG//frbyzPC9AqCZAACZAACZDAtCHA85qZraQAMcNR2wodWhvhuAZig0n89bU/yWu8tq4C/3HrVeV5AVolARIgARIgARKYNgR4XjOzlRQgZjhqW6FDayMc14DjOPj79/4MPd1DEz5gxSlN+NTnXlueF6BVEiABEiABEiCBaUOA5zUzW0kBYoajthU6tDbCMQYSiTQ2v3AI8aEUtm7qwG/u3TzhAz58w/k489wFZl+A1kiABEiABEiABKYdAZ7XzGwpBYgZjtpW6NDaCEcM/PyO53HvXS8ilcyM/F1ldQgD41TBetXrluFdHzwTlmWZewFaIgESIAESIAESmJYEeF4zs60UIGY4aluhQ2sjRDbr4F8/8xA2bTw4rrHKqiBaF9WjrzeO2XOqcOFrlmLVGXMpPvTR0wIJkAAJkAAJzAgCPK+Z2WYKEDMcta3QobURQiIfv7hjQ15Di5c24DNfvlT/YbRAAiRAAiRAAiQw4wjwvGZmyylAzHDUtkKH1kOYTGbwt391J+JD6YKG3vG+Nbjk8hUF53ECCZAACZAACZAACYwmwPOaGX+gADHDUdsKHVoP4c5tXbjpE/d5MlJREcC3br8Gts28D0/AOIkESIAESIAESEAR4HnNjCNQgJjhqG2FDq2HcNf2Lnzm494EiDzpS998I5rn1eg9lKtJgARIgARIgARmFAGe18xsNwWIGY7aVujQegjTqQw+et1dKsHcy/i7T1+I09fN9zKVc0iABEiABEiABEiAERCDPkABYhCmjikKEB167toH79mE22952pOhv/mH87H2bPb+8ASLk0iABEiABEiABChADPoABYhBmDqmKEBKpzc4kMQjD23Dxmfb0H6wHx2HBgoau+avTselb1lZcB4nkAAJkAAJkAAJkMAwAZ7XzPgCBYgZjtpW6NClITywvxf/8s8PobsrVpSBN79tFd7ytlOLWsPJJEACJEACJEACM5sAz2tm9p8CxAxHbSt06OIROo6DGz96L/bu6i568bs+cCYuvvTEotdxAQmQAAmQAAmQwMwlwPOamb2nADHDUdsKHbp4hJtfPIQv/tODRS/0+2187ftXoLq2oui1XEACJEACJEACJDBzCfC8ZmbvKUDMcNS2QocuHuFD972M//nuk0UvfPt7zsDr3nRS0eu4gARIgARIgARIYGYT4HnNzP5TgJjhqG2FDl08wj89vAPf/fc/5V1YUxdGb7dbmreltRaXXXUyzj5/UfEP4woSIAESIAESIIEZT4DnNTMuQAFihqO2FTp08QgH+hP4+/f9DKlkZsLFX/zPN6KqOgTHgfrdstj9vHjSXEECJEACJEACJCAEeF4z4wcUIGY4aluhQ5eG8L6fv4if/GD9uIslyVySzTlIgARIgARIgARIwAQBntdMUAQoQMxw1LZChy4NoVTCevjBrfjlnRtxOFeKt7IqhEveuAKXXXkybJsRj9LIchUJkAAJkAAJkMDRBHheM+MTFCBmOGpboUPrIcxksmjb24ts1sHc+TUIBHx6BrmaBEiABEiABEiABI4iwPOaGZegADHDUdsKHVobIQ2QAAmQAAmQAAmQQFkJ8LxmBi8FiBmO2lbo0NoIaYAESIAESIAESIAEykqA5zUzeClAzHDUtkKH1kZIAyRAAiRAAiRAAiRQVgI8r5nBSwFihqO2FTq0NkIaIAESIAESIAESIIGyEuB5zQxeChAzHLWt0KG1EdIACZAACZAACZAACZSVAM9rZvBSgJjhqG2FDq2NkAZIgARIgARIgARIoKwEeF4zg5cCxAxHbSt0aG2ENEACJEACJEACJEACZSXA85oZvBQgZjhqW6FDayOkARIgARIgARIgARIoKwGe18zgpQAxw1HbCh1aGyENkAAJkAAJkAAJkEBZCfC8ZgYvBYgZjtpW6NDaCGmABEiABEiABEiABMpKgOc1M3gpQMxw1LZCh9ZGSAMkQAIkQAIkQAIkUFYCPK+ZwUsBYoajthU6tDZCGiABEiABEiABEiCBshLgec0MXgoQMxy1rdChtRHSAAmQAAmQAAmQAAmUlQDPa2bwUoCY4ahthQ6tjZAGSIAESIAESIAESKCsBHheM4OXAsQMR20rdGhthDRAAiRAAiRAAiRAAmUlwPOaGbwUIGY4aluhQ2sjpAESIAESIAESIAESKCsBntfM4KUAMcNR2wodWhshDZAACZAACZAACZBAWQnwvGYGLwWIGY7aVujQ2ghpgARIgARIgARIgATKSoDnNTN4KUDMcNS2QofWRkgDJEACJEACJEACJFBWAjyvmcFLAVKA4/33349LL710ZNZnPvMZ3HTTTWboj7JChzaOlAZJgARIgARIgARIwCgBntfM4KQAycNxcHAQK1euxO7duylAzPgbrZAACZAACZAACZDAlCVAAWJm6yhA8nD82Mc+hq997WuYPXs22tvb1UxGQMw4Hq2QAAmQAAmQAAmQwFQjQAFiZscoQCbguH79epx55pnw+/34xje+gQ984AMUIGZ8jlZIgARIgARIgARIYEoSoAAxs20UIONwzGQySnyICPnsZz+L888/HxdddBEFiBmfoxUSIAESIAESIAESmJIEKEDMbBsFyDgcv/KVr+CGG27AsmXLsGHDBjz++OMUIGb8jVZIgARIgARIgARIYMoSoAAxs3UUIEdx3LVrl0o8j8VieOihh3DxxRfj4YcfpgAx42+0QgIkQAIkQAIkQAJTlgAFiJmtowA5iuPrX/96PPDAA7j22mvxwx/+UP2UAsSMs9EKCZAACZAACZAACUxlAhQgZnaPAmQUxx/96EdKeNTW1mLz5s1oamoyJkDEYfONAwcOqLwTGXv37kVLS4uZHaYVEiABEiABEiABEiABIwQoQIxgBAVIjuPhw4exYsUKVW7329/+Nq6//voRwiYiIJZled4xChDPqDiRBEiABEiABEiABF4xAhQgZlBTgOQ4vve978Wtt96KdevW4bHHHoNt2xQgZnyMVkiABEiABEiABEhgWhCgADGzjVNKgKTTaQQCAe0vF6Hx7ne/+xiB4fP58PTTT2P16tVjnmEiAsIrWNrbRgMkQAIkQAIkQAIkcFwJUICYwT/jBUgikcCqVauwZcsWfPSjH8W//du/HUPWhAAptF106EKE+HMSIAESIAESIAESOL4EeF4zw39KCRD5ZEkO1x3Nzc2oqalRZn784x/jHe94h+p4LrkflZWVx5h/6aWX8LnPfU79/ZVXXomrrrpK/Vmuay1atEj3ddR6OrQRjDRCAiRAAiRAAiRAAmUjwPOaGbRTToCY+ewjVm677Ta85z3vKcns0Ve5SjKSW0SH1qHHtSRAAiRAAiRAAiRQfgI8r5lhTAFCAWLGk2iFBEiABEiABEiABKY5AQoQMxs84wWIF4zMAfFCiXNIgARIgARIgARIYHoToAAxs78UIB44UoB4gMQpJEACJEACJEACJDDNCVCAmNlgChAPHClAPEDiFBIgARIgARIgARKY5gQoQMxsMAWIB44UIB4gcQoJkAAJkAAJkAAJTHMCFCBmNpgCxANHChAPkDiFBEiABEiABEiABKY5AQoQMxtM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\" width=\"400\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c9c3c7aaf468408090a290bb6a1fa960",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(FloatSlider(value=4.5, description='smooth_index', max=9.0), Output()), _dom_classes=('w…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<function __main__.plot_embedding(smooth_index)>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%matplotlib notebook\n",
"\n",
"embeddings = updating_mapper.embeddings_\n",
"\n",
"fig, ax = plt.subplots(figsize=(4,4))\n",
"new_points = ax.scatter(*np.ones((150, 2)).T, s=5, alpha=0.0, c=ordered_target[:150], cmap=\"Spectral\")\n",
"old_points = ax.scatter(*np.ones((150, 2)).T, s=5, alpha=0.0, c=ordered_target[:150], cmap=\"Spectral\")\n",
"sc_points = ax.scatter(*embeddings[0].T, s=5, c=ordered_target[:400], cmap=\"Spectral\")\n",
"ax.axis([np.min(np.hstack([e[:,0] for e in embeddings]) * 1.05), \n",
" np.max(np.hstack([e[:,0] for e in embeddings]) * 1.05), \n",
" np.min(np.hstack([e[:,1] for e in embeddings]) * 1.05), \n",
" np.max(np.hstack([e[:,1] for e in embeddings]) * 1.05)])\n",
"\n",
"\n",
"def plot_embedding(smooth_index):\n",
" lo_index = int(np.floor(smooth_index))\n",
" hi_index = int(np.ceil(smooth_index))\n",
" interp_weight = smooth_index - lo_index\n",
" if lo_index != hi_index:\n",
" smooth_embedding = ((1.0 - interp_weight) * embeddings[lo_index][150:] + \n",
" interp_weight * embeddings[hi_index][:250])\n",
" leaving_points = embeddings[lo_index][:150]\n",
" leaving_alpha = 1.0 - interp_weight\n",
" arriving_points = embeddings[hi_index][250:]\n",
" arriving_alpha = interp_weight\n",
" else:\n",
" smooth_embedding = embeddings[lo_index]\n",
" \n",
" sc_points.set_offsets(smooth_embedding)\n",
" sc_points.set_array(ordered_target[(hi_index * 150):(hi_index * 150) + 400])\n",
" sc_points.changed()\n",
" \n",
" if lo_index != hi_index:\n",
" new_points.set_offsets(arriving_points)\n",
" new_points.set_array(ordered_target[(hi_index * 150) + 250:(hi_index * 150) + 400])\n",
" new_points.set_alpha(arriving_alpha)\n",
" new_points.changed()\n",
"\n",
" old_points.set_offsets(leaving_points)\n",
" old_points.set_array(ordered_target[(lo_index * 150):(lo_index * 150) + 150])\n",
" old_points.set_alpha(leaving_alpha)\n",
" old_points.changed()\n",
"\n",
"interact(plot_embedding, smooth_index=(0.0, float(len(embeddings) - 1)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The result is roughly as we would expect: similar to before, but slightly less well aligned -- there is some general \"drift\" occurring in places. Still, the ability to have online updates makes this a small sacrifice under the circumstances."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.8.1"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment