##// END OF EJS Templates
Added LFR Spare PPBI cold transitions analysis
jeandet -
r16:23a55f89046a
parent child
Show More
@@ -0,0 +1,1
1 {"py/object": "lfrcompliance.test_engine.testcontext.TestContextOutput", "Exeptions": [], "Input": {"py/object": "lfrcompliance.test_engine.testcontext.TestContextInput", "ASM_P": 3600, "BiasWorkPar": 1, "BootLFR": true, "BootTg": false, "FSW": "/opt/LFR/LFR-FSW/3.0.0.22/fsw", "LFRMode": 1, "LFRSpwLink": 1, "LongF3": 0, "QuitAfterTest": true, "RecordRawPackets": true, "RoutingPar": [0, 0, 0], "SWF_L": 2048, "SWF_P": 300, "ShapingPar": [0, 0], "TestDelayBeforeExit": 24, "TestDelayBeforeStart": 12, "TestMod": "", "TestScrip": "", "TestSteps": [], "TgSW": "/opt/LFR/TIMEGEN/0.0.0.1/timegen", "TgSpwLink": 2, "values": {}}, "OutputFiles": ["/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_15_00_51_packet_log.data", "/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_15_00_52_packet_record.data"], "StartDate": {"py/object": "datetime.datetime", "__reduce__": [{"py/type": "datetime.datetime"}, ["B+IGHQ4TLg6IvA=="]]}, "StopDate": {"py/object": "datetime.datetime", "__reduce__": [{"py/type": "datetime.datetime"}, ["B+IGHQ4TLg6IzQ=="]]}, "TestResult": "Failed", "TestStepsResults": []} No newline at end of file
@@ -0,0 +1,1
1 {"py/object": "lfrcompliance.test_engine.testcontext.TestContextOutput", "Exeptions": [], "Input": {"py/object": "lfrcompliance.test_engine.testcontext.TestContextInput", "ASM_P": 3600, "BiasWorkPar": 1, "BootLFR": true, "BootTg": false, "FSW": "/opt/LFR/LFR-FSW/3.0.0.22/fsw", "LFRMode": 1, "LFRSpwLink": 1, "LongF3": 0, "QuitAfterTest": true, "RecordRawPackets": true, "RoutingPar": [0, 0, 0], "SWF_L": 2048, "SWF_P": 300, "ShapingPar": [0, 0], "TestDelayBeforeExit": 24, "TestDelayBeforeStart": 12, "TestMod": "", "TestScrip": "", "TestSteps": [], "TgSW": "/opt/LFR/TIMEGEN/0.0.0.1/timegen", "TgSpwLink": 2, "values": {}}, "OutputFiles": ["/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_13_43_36_packet_log.data", "/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_13_43_35_packet_record.data"], "StartDate": {"py/object": "datetime.datetime", "__reduce__": [{"py/type": "datetime.datetime"}, ["B+IGHQ4TLg6IvA=="]]}, "StopDate": {"py/object": "datetime.datetime", "__reduce__": [{"py/type": "datetime.datetime"}, ["B+IGHQ4TLg6IzQ=="]]}, "TestResult": "Failed", "TestStepsResults": []} No newline at end of file
This diff has been collapsed as it changes many lines, (2079 lines changed) Show them Hide them
@@ -0,0 +1,2079
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 1,
6 "metadata": {
7 "ExecuteTime": {
8 "end_time": "2018-06-29T12:19:37.010079Z",
9 "start_time": "2018-06-29T12:19:36.575782Z"
10 }
11 },
12 "outputs": [
13 {
14 "data": {
15 "text/html": [
16 "<script>\n",
17 "code_show=true; \n",
18 "function code_toggle() {\n",
19 " if (code_show){\n",
20 " $('div.input').hide();\n",
21 " } else {\n",
22 " $('div.input').show();\n",
23 " }\n",
24 " code_show = !code_show\n",
25 "} \n",
26 "$( document ).ready(code_toggle);\n",
27 "</script>\n",
28 " <a href=\"javascript:code_toggle()\"><font size=\"6\">Show/Hide code</font></a>."
29 ],
30 "text/plain": [
31 "<IPython.core.display.HTML object>"
32 ]
33 },
34 "execution_count": 1,
35 "metadata": {},
36 "output_type": "execute_result"
37 }
38 ],
39 "source": [
40 "%matplotlib notebook\n",
41 "import sys\n",
42 "import matplotlib.pyplot as plt\n",
43 "import numpy as np\n",
44 "import pandas as pds\n",
45 "from glob import glob\n",
46 "from IPython.display import display\n",
47 "from dateutil import parser\n",
48 "from IPython.display import HTML,Markdown,Math\n",
49 "from IPython.display import display\n",
50 "from lfrcompliance.test_engine.testcontext import *\n",
51 "from lfrcompliance.test_engine.result_loader import *\n",
52 "from lfrcompliance.tcpackets.constants import *\n",
53 "import multiprocessing.dummy\n",
54 "from dateutil import parser\n",
55 "import gc\n",
56 "\n",
57 "HTML('''<script>\n",
58 "code_show=true; \n",
59 "function code_toggle() {\n",
60 " if (code_show){\n",
61 " $('div.input').hide();\n",
62 " } else {\n",
63 " $('div.input').show();\n",
64 " }\n",
65 " code_show = !code_show\n",
66 "} \n",
67 "$( document ).ready(code_toggle);\n",
68 "</script>\n",
69 " <a href=\"javascript:code_toggle()\"><font size=\"6\">Show/Hide code</font></a>.''')"
70 ]
71 },
72 {
73 "cell_type": "code",
74 "execution_count": 2,
75 "metadata": {
76 "ExecuteTime": {
77 "end_time": "2018-06-29T12:19:40.297058Z",
78 "start_time": "2018-06-29T12:19:40.273101Z"
79 }
80 },
81 "outputs": [],
82 "source": [
83 "def load_temperatures(file, names):\n",
84 " return pds.read_csv(file, sep='\\t', index_col=0,parse_dates=True, infer_datetime_format=True, skiprows=1,names=names)[[\"air\",\"PCB\",\"socket\"]]\n",
85 "\n",
86 "def plot_temperatures(file, names):\n",
87 " load_temperatures(file, names).plot(figsize=(14,6))\n",
88 " plt.show()\n",
89 " \n",
90 " \n",
91 "def load_packets_time(sumfile,logfile,abstime=None):\n",
92 " with open(sumfile,\"r\") as file:\n",
93 " lines=file.readlines()\n",
94 " packets=[{\"type\":el[0],\"Seconds\":el[1].split()[-1]} for el in zip(lines[5::20],lines[23::20])]\n",
95 " HK=[ el for el in packets if el['type'].count(\"TM_LFR_HK\") ]\n",
96 " SWF0=[ el for el in packets if el['type'].count(\"TM_LFR_SCIENCE_NORMAL_SWF_F0\") ][0::7]\n",
97 " SWF1=[ el for el in packets if el['type'].count(\"TM_LFR_SCIENCE_NORMAL_SWF_F1\") ][0::7]\n",
98 " SWF2=[ el for el in packets if el['type'].count(\"TM_LFR_SCIENCE_NORMAL_SWF_F2\") ][0::7]\n",
99 " with open(logfile) as log:\n",
100 " line = log.readline()\n",
101 " date=line.split()[:3]\n",
102 " time=(line.split()[3]).split(\":\")\n",
103 " date=[int(field) for field in date]\n",
104 " time=[int(field) for field in time]\n",
105 " first_packet_time = datetime.datetime(year=date[0],month=date[1],day=date[2],hour=time[0],minute=time[1],second=time[2],microsecond=time[3]*1000)\n",
106 " first_packet_type = line.split()[4]\n",
107 " first_packet_seconds = min([ float(HK[0]['Seconds']), float(SWF0[0]['Seconds']), float(SWF1[0]['Seconds']), float(SWF2[0]['Seconds']) ])\n",
108 " HK=[ dict(packet,Time=first_packet_time- datetime.timedelta(seconds = first_packet_seconds - float(packet['Seconds'])) ) for packet in HK ]\n",
109 " SWF0=[ dict(packet,Time=first_packet_time- datetime.timedelta(seconds = first_packet_seconds - float(packet['Seconds'])) ) for packet in SWF0 ]\n",
110 " SWF1=[ dict(packet,Time=first_packet_time- datetime.timedelta(seconds = first_packet_seconds - float(packet['Seconds'])) ) for packet in SWF1 ]\n",
111 " SWF2=[ dict(packet,Time=first_packet_time- datetime.timedelta(seconds = first_packet_seconds - float(packet['Seconds'])) ) for packet in SWF2 ]\n",
112 " return {\"HK\":HK,\"SWF0\":SWF0,\"SWF1\":SWF1,\"SWF2\":SWF2}\n",
113 " \n",
114 " \n",
115 "def get_temperature_at(temperatues,time):\n",
116 " return temperatues.iloc[temperatues.index.get_loc(time,method='nearest')]"
117 ]
118 },
119 {
120 "cell_type": "markdown",
121 "metadata": {},
122 "source": [
123 "# Temperature measurements"
124 ]
125 },
126 {
127 "cell_type": "code",
128 "execution_count": 3,
129 "metadata": {
130 "ExecuteTime": {
131 "end_time": "2018-06-29T12:19:41.428995Z",
132 "start_time": "2018-06-29T12:19:41.003520Z"
133 },
134 "scrolled": false
135 },
136 "outputs": [
137 {
138 "data": {
139 "application/javascript": [
140 "/* Put everything inside the global mpl namespace */\n",
141 "window.mpl = {};\n",
142 "\n",
143 "\n",
144 "mpl.get_websocket_type = function() {\n",
145 " if (typeof(WebSocket) !== 'undefined') {\n",
146 " return WebSocket;\n",
147 " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
148 " return MozWebSocket;\n",
149 " } else {\n",
150 " alert('Your browser does not have WebSocket support.' +\n",
151 " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
152 " 'Firefox 4 and 5 are also supported but you ' +\n",
153 " 'have to enable WebSockets in about:config.');\n",
154 " };\n",
155 "}\n",
156 "\n",
157 "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
158 " this.id = figure_id;\n",
159 "\n",
160 " this.ws = websocket;\n",
161 "\n",
162 " this.supports_binary = (this.ws.binaryType != undefined);\n",
163 "\n",
164 " if (!this.supports_binary) {\n",
165 " var warnings = document.getElementById(\"mpl-warnings\");\n",
166 " if (warnings) {\n",
167 " warnings.style.display = 'block';\n",
168 " warnings.textContent = (\n",
169 " \"This browser does not support binary websocket messages. \" +\n",
170 " \"Performance may be slow.\");\n",
171 " }\n",
172 " }\n",
173 "\n",
174 " this.imageObj = new Image();\n",
175 "\n",
176 " this.context = undefined;\n",
177 " this.message = undefined;\n",
178 " this.canvas = undefined;\n",
179 " this.rubberband_canvas = undefined;\n",
180 " this.rubberband_context = undefined;\n",
181 " this.format_dropdown = undefined;\n",
182 "\n",
183 " this.image_mode = 'full';\n",
184 "\n",
185 " this.root = $('<div/>');\n",
186 " this._root_extra_style(this.root)\n",
187 " this.root.attr('style', 'display: inline-block');\n",
188 "\n",
189 " $(parent_element).append(this.root);\n",
190 "\n",
191 " this._init_header(this);\n",
192 " this._init_canvas(this);\n",
193 " this._init_toolbar(this);\n",
194 "\n",
195 " var fig = this;\n",
196 "\n",
197 " this.waiting = false;\n",
198 "\n",
199 " this.ws.onopen = function () {\n",
200 " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
201 " fig.send_message(\"send_image_mode\", {});\n",
202 " if (mpl.ratio != 1) {\n",
203 " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
204 " }\n",
205 " fig.send_message(\"refresh\", {});\n",
206 " }\n",
207 "\n",
208 " this.imageObj.onload = function() {\n",
209 " if (fig.image_mode == 'full') {\n",
210 " // Full images could contain transparency (where diff images\n",
211 " // almost always do), so we need to clear the canvas so that\n",
212 " // there is no ghosting.\n",
213 " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
214 " }\n",
215 " fig.context.drawImage(fig.imageObj, 0, 0);\n",
216 " };\n",
217 "\n",
218 " this.imageObj.onunload = function() {\n",
219 " fig.ws.close();\n",
220 " }\n",
221 "\n",
222 " this.ws.onmessage = this._make_on_message_function(this);\n",
223 "\n",
224 " this.ondownload = ondownload;\n",
225 "}\n",
226 "\n",
227 "mpl.figure.prototype._init_header = function() {\n",
228 " var titlebar = $(\n",
229 " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
230 " 'ui-helper-clearfix\"/>');\n",
231 " var titletext = $(\n",
232 " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
233 " 'text-align: center; padding: 3px;\"/>');\n",
234 " titlebar.append(titletext)\n",
235 " this.root.append(titlebar);\n",
236 " this.header = titletext[0];\n",
237 "}\n",
238 "\n",
239 "\n",
240 "\n",
241 "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
242 "\n",
243 "}\n",
244 "\n",
245 "\n",
246 "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
247 "\n",
248 "}\n",
249 "\n",
250 "mpl.figure.prototype._init_canvas = function() {\n",
251 " var fig = this;\n",
252 "\n",
253 " var canvas_div = $('<div/>');\n",
254 "\n",
255 " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
256 "\n",
257 " function canvas_keyboard_event(event) {\n",
258 " return fig.key_event(event, event['data']);\n",
259 " }\n",
260 "\n",
261 " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
262 " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
263 " this.canvas_div = canvas_div\n",
264 " this._canvas_extra_style(canvas_div)\n",
265 " this.root.append(canvas_div);\n",
266 "\n",
267 " var canvas = $('<canvas/>');\n",
268 " canvas.addClass('mpl-canvas');\n",
269 " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
270 "\n",
271 " this.canvas = canvas[0];\n",
272 " this.context = canvas[0].getContext(\"2d\");\n",
273 "\n",
274 " var backingStore = this.context.backingStorePixelRatio ||\n",
275 "\tthis.context.webkitBackingStorePixelRatio ||\n",
276 "\tthis.context.mozBackingStorePixelRatio ||\n",
277 "\tthis.context.msBackingStorePixelRatio ||\n",
278 "\tthis.context.oBackingStorePixelRatio ||\n",
279 "\tthis.context.backingStorePixelRatio || 1;\n",
280 "\n",
281 " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
282 "\n",
283 " var rubberband = $('<canvas/>');\n",
284 " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
285 "\n",
286 " var pass_mouse_events = true;\n",
287 "\n",
288 " canvas_div.resizable({\n",
289 " start: function(event, ui) {\n",
290 " pass_mouse_events = false;\n",
291 " },\n",
292 " resize: function(event, ui) {\n",
293 " fig.request_resize(ui.size.width, ui.size.height);\n",
294 " },\n",
295 " stop: function(event, ui) {\n",
296 " pass_mouse_events = true;\n",
297 " fig.request_resize(ui.size.width, ui.size.height);\n",
298 " },\n",
299 " });\n",
300 "\n",
301 " function mouse_event_fn(event) {\n",
302 " if (pass_mouse_events)\n",
303 " return fig.mouse_event(event, event['data']);\n",
304 " }\n",
305 "\n",
306 " rubberband.mousedown('button_press', mouse_event_fn);\n",
307 " rubberband.mouseup('button_release', mouse_event_fn);\n",
308 " // Throttle sequential mouse events to 1 every 20ms.\n",
309 " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
310 "\n",
311 " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
312 " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
313 "\n",
314 " canvas_div.on(\"wheel\", function (event) {\n",
315 " event = event.originalEvent;\n",
316 " event['data'] = 'scroll'\n",
317 " if (event.deltaY < 0) {\n",
318 " event.step = 1;\n",
319 " } else {\n",
320 " event.step = -1;\n",
321 " }\n",
322 " mouse_event_fn(event);\n",
323 " });\n",
324 "\n",
325 " canvas_div.append(canvas);\n",
326 " canvas_div.append(rubberband);\n",
327 "\n",
328 " this.rubberband = rubberband;\n",
329 " this.rubberband_canvas = rubberband[0];\n",
330 " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
331 " this.rubberband_context.strokeStyle = \"#000000\";\n",
332 "\n",
333 " this._resize_canvas = function(width, height) {\n",
334 " // Keep the size of the canvas, canvas container, and rubber band\n",
335 " // canvas in synch.\n",
336 " canvas_div.css('width', width)\n",
337 " canvas_div.css('height', height)\n",
338 "\n",
339 " canvas.attr('width', width * mpl.ratio);\n",
340 " canvas.attr('height', height * mpl.ratio);\n",
341 " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
342 "\n",
343 " rubberband.attr('width', width);\n",
344 " rubberband.attr('height', height);\n",
345 " }\n",
346 "\n",
347 " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
348 " // upon first draw.\n",
349 " this._resize_canvas(600, 600);\n",
350 "\n",
351 " // Disable right mouse context menu.\n",
352 " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
353 " return false;\n",
354 " });\n",
355 "\n",
356 " function set_focus () {\n",
357 " canvas.focus();\n",
358 " canvas_div.focus();\n",
359 " }\n",
360 "\n",
361 " window.setTimeout(set_focus, 100);\n",
362 "}\n",
363 "\n",
364 "mpl.figure.prototype._init_toolbar = function() {\n",
365 " var fig = this;\n",
366 "\n",
367 " var nav_element = $('<div/>')\n",
368 " nav_element.attr('style', 'width: 100%');\n",
369 " this.root.append(nav_element);\n",
370 "\n",
371 " // Define a callback function for later on.\n",
372 " function toolbar_event(event) {\n",
373 " return fig.toolbar_button_onclick(event['data']);\n",
374 " }\n",
375 " function toolbar_mouse_event(event) {\n",
376 " return fig.toolbar_button_onmouseover(event['data']);\n",
377 " }\n",
378 "\n",
379 " for(var toolbar_ind in mpl.toolbar_items) {\n",
380 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
381 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
382 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
383 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
384 "\n",
385 " if (!name) {\n",
386 " // put a spacer in here.\n",
387 " continue;\n",
388 " }\n",
389 " var button = $('<button/>');\n",
390 " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
391 " 'ui-button-icon-only');\n",
392 " button.attr('role', 'button');\n",
393 " button.attr('aria-disabled', 'false');\n",
394 " button.click(method_name, toolbar_event);\n",
395 " button.mouseover(tooltip, toolbar_mouse_event);\n",
396 "\n",
397 " var icon_img = $('<span/>');\n",
398 " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
399 " icon_img.addClass(image);\n",
400 " icon_img.addClass('ui-corner-all');\n",
401 "\n",
402 " var tooltip_span = $('<span/>');\n",
403 " tooltip_span.addClass('ui-button-text');\n",
404 " tooltip_span.html(tooltip);\n",
405 "\n",
406 " button.append(icon_img);\n",
407 " button.append(tooltip_span);\n",
408 "\n",
409 " nav_element.append(button);\n",
410 " }\n",
411 "\n",
412 " var fmt_picker_span = $('<span/>');\n",
413 "\n",
414 " var fmt_picker = $('<select/>');\n",
415 " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
416 " fmt_picker_span.append(fmt_picker);\n",
417 " nav_element.append(fmt_picker_span);\n",
418 " this.format_dropdown = fmt_picker[0];\n",
419 "\n",
420 " for (var ind in mpl.extensions) {\n",
421 " var fmt = mpl.extensions[ind];\n",
422 " var option = $(\n",
423 " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
424 " fmt_picker.append(option)\n",
425 " }\n",
426 "\n",
427 " // Add hover states to the ui-buttons\n",
428 " $( \".ui-button\" ).hover(\n",
429 " function() { $(this).addClass(\"ui-state-hover\");},\n",
430 " function() { $(this).removeClass(\"ui-state-hover\");}\n",
431 " );\n",
432 "\n",
433 " var status_bar = $('<span class=\"mpl-message\"/>');\n",
434 " nav_element.append(status_bar);\n",
435 " this.message = status_bar[0];\n",
436 "}\n",
437 "\n",
438 "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
439 " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
440 " // which will in turn request a refresh of the image.\n",
441 " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
442 "}\n",
443 "\n",
444 "mpl.figure.prototype.send_message = function(type, properties) {\n",
445 " properties['type'] = type;\n",
446 " properties['figure_id'] = this.id;\n",
447 " this.ws.send(JSON.stringify(properties));\n",
448 "}\n",
449 "\n",
450 "mpl.figure.prototype.send_draw_message = function() {\n",
451 " if (!this.waiting) {\n",
452 " this.waiting = true;\n",
453 " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
454 " }\n",
455 "}\n",
456 "\n",
457 "\n",
458 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
459 " var format_dropdown = fig.format_dropdown;\n",
460 " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
461 " fig.ondownload(fig, format);\n",
462 "}\n",
463 "\n",
464 "\n",
465 "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
466 " var size = msg['size'];\n",
467 " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
468 " fig._resize_canvas(size[0], size[1]);\n",
469 " fig.send_message(\"refresh\", {});\n",
470 " };\n",
471 "}\n",
472 "\n",
473 "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
474 " var x0 = msg['x0'] / mpl.ratio;\n",
475 " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
476 " var x1 = msg['x1'] / mpl.ratio;\n",
477 " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
478 " x0 = Math.floor(x0) + 0.5;\n",
479 " y0 = Math.floor(y0) + 0.5;\n",
480 " x1 = Math.floor(x1) + 0.5;\n",
481 " y1 = Math.floor(y1) + 0.5;\n",
482 " var min_x = Math.min(x0, x1);\n",
483 " var min_y = Math.min(y0, y1);\n",
484 " var width = Math.abs(x1 - x0);\n",
485 " var height = Math.abs(y1 - y0);\n",
486 "\n",
487 " fig.rubberband_context.clearRect(\n",
488 " 0, 0, fig.canvas.width, fig.canvas.height);\n",
489 "\n",
490 " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
491 "}\n",
492 "\n",
493 "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
494 " // Updates the figure title.\n",
495 " fig.header.textContent = msg['label'];\n",
496 "}\n",
497 "\n",
498 "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
499 " var cursor = msg['cursor'];\n",
500 " switch(cursor)\n",
501 " {\n",
502 " case 0:\n",
503 " cursor = 'pointer';\n",
504 " break;\n",
505 " case 1:\n",
506 " cursor = 'default';\n",
507 " break;\n",
508 " case 2:\n",
509 " cursor = 'crosshair';\n",
510 " break;\n",
511 " case 3:\n",
512 " cursor = 'move';\n",
513 " break;\n",
514 " }\n",
515 " fig.rubberband_canvas.style.cursor = cursor;\n",
516 "}\n",
517 "\n",
518 "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
519 " fig.message.textContent = msg['message'];\n",
520 "}\n",
521 "\n",
522 "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
523 " // Request the server to send over a new figure.\n",
524 " fig.send_draw_message();\n",
525 "}\n",
526 "\n",
527 "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
528 " fig.image_mode = msg['mode'];\n",
529 "}\n",
530 "\n",
531 "mpl.figure.prototype.updated_canvas_event = function() {\n",
532 " // Called whenever the canvas gets updated.\n",
533 " this.send_message(\"ack\", {});\n",
534 "}\n",
535 "\n",
536 "// A function to construct a web socket function for onmessage handling.\n",
537 "// Called in the figure constructor.\n",
538 "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
539 " return function socket_on_message(evt) {\n",
540 " if (evt.data instanceof Blob) {\n",
541 " /* FIXME: We get \"Resource interpreted as Image but\n",
542 " * transferred with MIME type text/plain:\" errors on\n",
543 " * Chrome. But how to set the MIME type? It doesn't seem\n",
544 " * to be part of the websocket stream */\n",
545 " evt.data.type = \"image/png\";\n",
546 "\n",
547 " /* Free the memory for the previous frames */\n",
548 " if (fig.imageObj.src) {\n",
549 " (window.URL || window.webkitURL).revokeObjectURL(\n",
550 " fig.imageObj.src);\n",
551 " }\n",
552 "\n",
553 " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
554 " evt.data);\n",
555 " fig.updated_canvas_event();\n",
556 " fig.waiting = false;\n",
557 " return;\n",
558 " }\n",
559 " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
560 " fig.imageObj.src = evt.data;\n",
561 " fig.updated_canvas_event();\n",
562 " fig.waiting = false;\n",
563 " return;\n",
564 " }\n",
565 "\n",
566 " var msg = JSON.parse(evt.data);\n",
567 " var msg_type = msg['type'];\n",
568 "\n",
569 " // Call the \"handle_{type}\" callback, which takes\n",
570 " // the figure and JSON message as its only arguments.\n",
571 " try {\n",
572 " var callback = fig[\"handle_\" + msg_type];\n",
573 " } catch (e) {\n",
574 " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
575 " return;\n",
576 " }\n",
577 "\n",
578 " if (callback) {\n",
579 " try {\n",
580 " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
581 " callback(fig, msg);\n",
582 " } catch (e) {\n",
583 " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
584 " }\n",
585 " }\n",
586 " };\n",
587 "}\n",
588 "\n",
589 "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
590 "mpl.findpos = function(e) {\n",
591 " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
592 " var targ;\n",
593 " if (!e)\n",
594 " e = window.event;\n",
595 " if (e.target)\n",
596 " targ = e.target;\n",
597 " else if (e.srcElement)\n",
598 " targ = e.srcElement;\n",
599 " if (targ.nodeType == 3) // defeat Safari bug\n",
600 " targ = targ.parentNode;\n",
601 "\n",
602 " // jQuery normalizes the pageX and pageY\n",
603 " // pageX,Y are the mouse positions relative to the document\n",
604 " // offset() returns the position of the element relative to the document\n",
605 " var x = e.pageX - $(targ).offset().left;\n",
606 " var y = e.pageY - $(targ).offset().top;\n",
607 "\n",
608 " return {\"x\": x, \"y\": y};\n",
609 "};\n",
610 "\n",
611 "/*\n",
612 " * return a copy of an object with only non-object keys\n",
613 " * we need this to avoid circular references\n",
614 " * http://stackoverflow.com/a/24161582/3208463\n",
615 " */\n",
616 "function simpleKeys (original) {\n",
617 " return Object.keys(original).reduce(function (obj, key) {\n",
618 " if (typeof original[key] !== 'object')\n",
619 " obj[key] = original[key]\n",
620 " return obj;\n",
621 " }, {});\n",
622 "}\n",
623 "\n",
624 "mpl.figure.prototype.mouse_event = function(event, name) {\n",
625 " var canvas_pos = mpl.findpos(event)\n",
626 "\n",
627 " if (name === 'button_press')\n",
628 " {\n",
629 " this.canvas.focus();\n",
630 " this.canvas_div.focus();\n",
631 " }\n",
632 "\n",
633 " var x = canvas_pos.x * mpl.ratio;\n",
634 " var y = canvas_pos.y * mpl.ratio;\n",
635 "\n",
636 " this.send_message(name, {x: x, y: y, button: event.button,\n",
637 " step: event.step,\n",
638 " guiEvent: simpleKeys(event)});\n",
639 "\n",
640 " /* This prevents the web browser from automatically changing to\n",
641 " * the text insertion cursor when the button is pressed. We want\n",
642 " * to control all of the cursor setting manually through the\n",
643 " * 'cursor' event from matplotlib */\n",
644 " event.preventDefault();\n",
645 " return false;\n",
646 "}\n",
647 "\n",
648 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
649 " // Handle any extra behaviour associated with a key event\n",
650 "}\n",
651 "\n",
652 "mpl.figure.prototype.key_event = function(event, name) {\n",
653 "\n",
654 " // Prevent repeat events\n",
655 " if (name == 'key_press')\n",
656 " {\n",
657 " if (event.which === this._key)\n",
658 " return;\n",
659 " else\n",
660 " this._key = event.which;\n",
661 " }\n",
662 " if (name == 'key_release')\n",
663 " this._key = null;\n",
664 "\n",
665 " var value = '';\n",
666 " if (event.ctrlKey && event.which != 17)\n",
667 " value += \"ctrl+\";\n",
668 " if (event.altKey && event.which != 18)\n",
669 " value += \"alt+\";\n",
670 " if (event.shiftKey && event.which != 16)\n",
671 " value += \"shift+\";\n",
672 "\n",
673 " value += 'k';\n",
674 " value += event.which.toString();\n",
675 "\n",
676 " this._key_event_extra(event, name);\n",
677 "\n",
678 " this.send_message(name, {key: value,\n",
679 " guiEvent: simpleKeys(event)});\n",
680 " return false;\n",
681 "}\n",
682 "\n",
683 "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
684 " if (name == 'download') {\n",
685 " this.handle_save(this, null);\n",
686 " } else {\n",
687 " this.send_message(\"toolbar_button\", {name: name});\n",
688 " }\n",
689 "};\n",
690 "\n",
691 "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
692 " this.message.textContent = tooltip;\n",
693 "};\n",
694 "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",
695 "\n",
696 "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
697 "\n",
698 "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
699 " // Create a \"websocket\"-like object which calls the given IPython comm\n",
700 " // object with the appropriate methods. Currently this is a non binary\n",
701 " // socket, so there is still some room for performance tuning.\n",
702 " var ws = {};\n",
703 "\n",
704 " ws.close = function() {\n",
705 " comm.close()\n",
706 " };\n",
707 " ws.send = function(m) {\n",
708 " //console.log('sending', m);\n",
709 " comm.send(m);\n",
710 " };\n",
711 " // Register the callback with on_msg.\n",
712 " comm.on_msg(function(msg) {\n",
713 " //console.log('receiving', msg['content']['data'], msg);\n",
714 " // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
715 " ws.onmessage(msg['content']['data'])\n",
716 " });\n",
717 " return ws;\n",
718 "}\n",
719 "\n",
720 "mpl.mpl_figure_comm = function(comm, msg) {\n",
721 " // This is the function which gets called when the mpl process\n",
722 " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
723 "\n",
724 " var id = msg.content.data.id;\n",
725 " // Get hold of the div created by the display call when the Comm\n",
726 " // socket was opened in Python.\n",
727 " var element = $(\"#\" + id);\n",
728 " var ws_proxy = comm_websocket_adapter(comm)\n",
729 "\n",
730 " function ondownload(figure, format) {\n",
731 " window.open(figure.imageObj.src);\n",
732 " }\n",
733 "\n",
734 " var fig = new mpl.figure(id, ws_proxy,\n",
735 " ondownload,\n",
736 " element.get(0));\n",
737 "\n",
738 " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
739 " // web socket which is closed, not our websocket->open comm proxy.\n",
740 " ws_proxy.onopen();\n",
741 "\n",
742 " fig.parent_element = element.get(0);\n",
743 " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
744 " if (!fig.cell_info) {\n",
745 " console.error(\"Failed to find cell for figure\", id, fig);\n",
746 " return;\n",
747 " }\n",
748 "\n",
749 " var output_index = fig.cell_info[2]\n",
750 " var cell = fig.cell_info[0];\n",
751 "\n",
752 "};\n",
753 "\n",
754 "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
755 " var width = fig.canvas.width/mpl.ratio\n",
756 " fig.root.unbind('remove')\n",
757 "\n",
758 " // Update the output cell to use the data from the current canvas.\n",
759 " fig.push_to_output();\n",
760 " var dataURL = fig.canvas.toDataURL();\n",
761 " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
762 " // the notebook keyboard shortcuts fail.\n",
763 " IPython.keyboard_manager.enable()\n",
764 " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
765 " fig.close_ws(fig, msg);\n",
766 "}\n",
767 "\n",
768 "mpl.figure.prototype.close_ws = function(fig, msg){\n",
769 " fig.send_message('closing', msg);\n",
770 " // fig.ws.close()\n",
771 "}\n",
772 "\n",
773 "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
774 " // Turn the data on the canvas into data in the output cell.\n",
775 " var width = this.canvas.width/mpl.ratio\n",
776 " var dataURL = this.canvas.toDataURL();\n",
777 " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
778 "}\n",
779 "\n",
780 "mpl.figure.prototype.updated_canvas_event = function() {\n",
781 " // Tell IPython that the notebook contents must change.\n",
782 " IPython.notebook.set_dirty(true);\n",
783 " this.send_message(\"ack\", {});\n",
784 " var fig = this;\n",
785 " // Wait a second, then push the new image to the DOM so\n",
786 " // that it is saved nicely (might be nice to debounce this).\n",
787 " setTimeout(function () { fig.push_to_output() }, 1000);\n",
788 "}\n",
789 "\n",
790 "mpl.figure.prototype._init_toolbar = function() {\n",
791 " var fig = this;\n",
792 "\n",
793 " var nav_element = $('<div/>')\n",
794 " nav_element.attr('style', 'width: 100%');\n",
795 " this.root.append(nav_element);\n",
796 "\n",
797 " // Define a callback function for later on.\n",
798 " function toolbar_event(event) {\n",
799 " return fig.toolbar_button_onclick(event['data']);\n",
800 " }\n",
801 " function toolbar_mouse_event(event) {\n",
802 " return fig.toolbar_button_onmouseover(event['data']);\n",
803 " }\n",
804 "\n",
805 " for(var toolbar_ind in mpl.toolbar_items){\n",
806 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
807 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
808 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
809 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
810 "\n",
811 " if (!name) { continue; };\n",
812 "\n",
813 " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
814 " button.click(method_name, toolbar_event);\n",
815 " button.mouseover(tooltip, toolbar_mouse_event);\n",
816 " nav_element.append(button);\n",
817 " }\n",
818 "\n",
819 " // Add the status bar.\n",
820 " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
821 " nav_element.append(status_bar);\n",
822 " this.message = status_bar[0];\n",
823 "\n",
824 " // Add the close button to the window.\n",
825 " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
826 " 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",
827 " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
828 " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
829 " buttongrp.append(button);\n",
830 " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
831 " titlebar.prepend(buttongrp);\n",
832 "}\n",
833 "\n",
834 "mpl.figure.prototype._root_extra_style = function(el){\n",
835 " var fig = this\n",
836 " el.on(\"remove\", function(){\n",
837 "\tfig.close_ws(fig, {});\n",
838 " });\n",
839 "}\n",
840 "\n",
841 "mpl.figure.prototype._canvas_extra_style = function(el){\n",
842 " // this is important to make the div 'focusable\n",
843 " el.attr('tabindex', 0)\n",
844 " // reach out to IPython and tell the keyboard manager to turn it's self\n",
845 " // off when our div gets focus\n",
846 "\n",
847 " // location in version 3\n",
848 " if (IPython.notebook.keyboard_manager) {\n",
849 " IPython.notebook.keyboard_manager.register_events(el);\n",
850 " }\n",
851 " else {\n",
852 " // location in version 2\n",
853 " IPython.keyboard_manager.register_events(el);\n",
854 " }\n",
855 "\n",
856 "}\n",
857 "\n",
858 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
859 " var manager = IPython.notebook.keyboard_manager;\n",
860 " if (!manager)\n",
861 " manager = IPython.keyboard_manager;\n",
862 "\n",
863 " // Check for shift+enter\n",
864 " if (event.shiftKey && event.which == 13) {\n",
865 " this.canvas_div.blur();\n",
866 " event.shiftKey = false;\n",
867 " // Send a \"J\" for go to next cell\n",
868 " event.which = 74;\n",
869 " event.keyCode = 74;\n",
870 " manager.command_mode();\n",
871 " manager.handle_keydown(event);\n",
872 " }\n",
873 "}\n",
874 "\n",
875 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
876 " fig.ondownload(fig, null);\n",
877 "}\n",
878 "\n",
879 "\n",
880 "mpl.find_output_cell = function(html_output) {\n",
881 " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
882 " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
883 " // IPython event is triggered only after the cells have been serialised, which for\n",
884 " // our purposes (turning an active figure into a static one), is too late.\n",
885 " var cells = IPython.notebook.get_cells();\n",
886 " var ncells = cells.length;\n",
887 " for (var i=0; i<ncells; i++) {\n",
888 " var cell = cells[i];\n",
889 " if (cell.cell_type === 'code'){\n",
890 " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
891 " var data = cell.output_area.outputs[j];\n",
892 " if (data.data) {\n",
893 " // IPython >= 3 moved mimebundle to data attribute of output\n",
894 " data = data.data;\n",
895 " }\n",
896 " if (data['text/html'] == html_output) {\n",
897 " return [cell, data, j];\n",
898 " }\n",
899 " }\n",
900 " }\n",
901 " }\n",
902 "}\n",
903 "\n",
904 "// Register the function which deals with the matplotlib target/channel.\n",
905 "// The kernel may be null if the page has been refreshed.\n",
906 "if (IPython.notebook.kernel != null) {\n",
907 " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
908 "}\n"
909 ],
910 "text/plain": [
911 "<IPython.core.display.Javascript object>"
912 ]
913 },
914 "metadata": {},
915 "output_type": "display_data"
916 },
917 {
918 "data": {
919 "text/html": [
920 "<img src=\"data:image/png;base64,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CQAAAGzMR7uPhr+1cLtdZ1lVTRxz3cjcte4YPX27XYvtR4BE2gmQaDUmT54cZ5xxRuy3337Rrl276NChQxx33HExZMiQJsdWVFTEySefHDvuuGPstttucc4558SSJUu2+roCpOLgWQIAAAAbsuIj3Uf/ccsL231ruYoFK+Kr1zyTC5Fuemaq7exaGAESaSdAotUYOnRonHzyyXHVVVfF3XffHbfcckscd9xxkclkok+fPrnj5s2bF3vssUfsv//+ceutt8a1114bu+22W3Ts2DFqamq2+LoCpOLhWQIAAAAbctvIdd1HT03eft1HHzV10co4queI3HW/f8dL8e6SVc1ybQonQCLtBEi0avX19dGxY8c4+OCDc5/96le/inbt2sWcOXNyn40YMaJJ0LS5BEjFw7MEAAAA1qe5u48+asaSVXH0teu2szuw+7Do8cTkWLJybbPVwNYRIJF2AiRavVNPPTX22muv3J/33HPPOPPMM5scd9BBB8W3vvWtLT6/AKl4eJYAAADA+tyaQPfRRy2vqo0/PP5WroaSsvIo7fFU/P21eVHf0DK2tauurY+lq2tyo6GF1F0IARJpJ0Ci1Vm9enVUVlbGjBkz4qabbopPfvKT8ZOf/CQiIt57773IZDJxww03NPndOeecE7vvvvsWX0+AVDw8SwAAAODjVlTXxuE9nkqk++jjXp+zNM7u+2pekHRir+di2KQFzR7IVK5aG8MmLYhHxs+Nm0dMjUsffTO+e/tL0fmPI5qMj27D9+FYXlXbrPUmQYBE2gmQaHV++ctfRiaTiUwmEzvssEOcccYZsXTp0oiIGD9+fGQymRgwYECT31166aWRyWRi7doNt/cuXrw4Jk+enDcGDx4sQCoSniUAAADwcR/tPno6ge6j9Xn89feahDKn3PpCjKxYtN0CrpmVq+PJifPjD4+/FcdcN7JJILSlQ4AEyRMg0epMmTIlRowYEffdd1985zvfie9///uxaNGiiIh44YUXIpPJxMMPP9zkd1dccUVkMplYtmzZBs/do0ePXDj18SFAav08SwAAAOCjqmrqEnv30aZU1dRF7+dmRKern84LZr5+3ci4asjkeHbK4qiurd/q82ez2RgzozKuGjJ5swKjgy4fFifd9Hz85oEJ0e0fE5uMHk9Mjr4vvBv9XpoZ/V6aWVBtLYUAibQTINHqffvb347OnTtHNpvVgbQd9OvXLy9Ia9OmTRx44IHxm9/8JhfcfWjRokVxySWXxMEHHxzt2rWL9u3bx5FHHhk9e/bMC+66dOmSd87/9//+X+y7777xi1/8IubOndvct5jT2p8lAAAAsGXuf3V2LiAZOmlB0uWs18rq2rh15LQovfKpJqHOvt3K44d3joleT78TL02vjAXL16w3BMtmszHn/aoY8fai6PXM1Diz98vrPd+H499veSGuHz4lhr+1IGZWro4lKze83lbMBEiknQCJVq9Pnz6RyWTinXfe8Q6k7eDDAOmaa66JgQMHRt++faNr166xww47xH777RdVVVURETFu3LjYY489om3btvHzn/887rrrrrjrrrvivPPOix133DG+/e1v587ZpUuX2GeffWLgwIExcODA+Nvf/haXXHJJ7LjjjvGlL30pd87m1tqfJQAAALD56huy8W83jo6SsvI49k+joq6+IemSNmp5VW3c/uz0OPnm5zfaKbT/ZUPjX28cHaff8VJ89/aX4mt/HBH7XzZ0o7856abno9fT78QL05bE0tU1Sd9qiyFAIu0ESLR6t9xyS2QymRg7dmxERHz2s5+NM888s8lxBx10UJxwwglbfH4BUmOANH78+LzPL7744shkMvHggw/GsmXLYu+994699torpkyZ0uQcixYtip49e+b+3KVLlzjssMOaHHf77bdHJpOJZ555ZtvfyGZo7c8SAAAA2HxDJy3IBSj3vDgz6XK2yILla+KR8XPjfwe9Hl/fivcVff26kfHLAa/FXc/NiPnL1iR9Oy2WAIm0EyDRaixevLjJZ7W1tXHkkUdGu3btYtWqVRER8T//8z/Rrl27vK3QRo4cGZlMJu66664tvq4Aaf0BUnl5eWQymbj22mvj+uuvj0wmEw888MBmnXNDAdLf//73yGQy8eyzz26T2rdUa3+WAAAAwObJZrPxndteiJKy8uh49dNRVVOXdEkFmVW5Op54c37c/uz0uOyxSfHTv42Nc+55Nc6559X4+X3j46ohk+P2Z6fHM28vinlLk9kZpjUSIJF2AiRajdNPPz1OOOGEuOqqq6Jv377Rs2fPOOSQQyKTyUSvXr1yx82dOzc6dOgQ+++/f9x2221x3XXXxW677RaHH374Rt9/tCECpPUHSLfeemtkMpno3bt3HHvssdGuXbuoqdm8FuYuXbrEIYcc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HHXUUdHU1BQHHXRQXHvttZ1+oxMop40bN8bf//73iIh4+umnd9jfLrvssujVq1esWLGieux3v/tdpJRixowZO73O2rVr4+23346IiIceeminAdKQIUNq3wzA+3RVf+vIunXrqm8ivd/pp58eBx54YKxZs6Z6bObMmZFSit/+9reduhZArQRIAHS5sWPHxl577ZW5EY6IuOGGGyKlFK+++mrcdNNNkVKK559/PnPO9pv5733ve5njS5cuzdzEv991110XBx98cKxfv36nAdL69etjw4YNOXcIlFlXPcG6devWGD58ePTu3TsmTZoUt912Wxx55JGx7777xksvvZQ599e//nU0NDTE5z//+bjjjjviiiuuiB49esSll176YW0bKJkPGrAecMABMXr06HbHP/GJT8QXvvCFzLFly5bFsmXLdnidXQ2QtmzZ4mOdgA9FV/W39xs6dGgce+yx1T+vWbMmGhsbY+zYsZnzNm3aFH369ImLL754l34vQF4CJAC63CmnnBJHHHFEu+OPPvpopJTiF7/4RTVMeuWVVzLnPP/88x1+rn1KKUaMGNHud65YsSJ69eoV999/f/W8HQVIvXv3joaGhkgpxRFHHBE/+9nPcuwSKKuueoL1gQceiJRSPPTQQ9Vjq1atir59+8ZXvvKVzLlHHnlkDBs2LPPG0bhx46KhoSGWLl1a6xYBdtjf/va3v0VKKW688cZ2P3PBBRfERz/60cyxSqUSlUplh9fZlQBp7733jn322SdSSjFgwIAYP358bN68udYtAURE1/S3NWvWxFtvvRVLly6Na665pt1Dkk888USklOKBBx5o97MnnnhiHH300bVvDKATBEgAdLkhQ4bEySef3O749nDo9ttvj1mzZkVKKe69997MObfffnuklGLo0KGZ4zsKkM4+++wYPnx45ryOAqThw4fHzTffHHPmzInp06fH0KFDI6UUP/nJTzq5S4Dd+wTr6NGjY8CAAbF169bM8UsuuSSam5tj48aNEfGv3jpt2rTMea+//nqklGLy5Mmd2RpQcjvqb9uP33PPPe1+ZuzYsZFSqvaniPwB0kUXXRSTJk2KWbNmxT333BNnnnlmpJTinHPO6cy2ALqkv40aNSpSSpFSin322Se+8Y1vZD4JY3vvW7BgQbufHT16dAwcOLBzmwOokQAJgC73sY99LE4//fR2x19++eVIKcWPfvSj2LBhQ1QqlRgwYEDMmjUr/vrXv8YDDzwQ++23XzQ2NsbgwYN3ep3HHnssGhoa4qmnnqoe29XvOtq0aVMMHTo0+vbtG+vXr69tgwD/z+58gvWwww7rsJfeeeedkVKKZ599NiIi7rvvvkgpxeLFi9udO2jQoDjrrLNq3BXAjvvbggULdvjU/IQJEyKlFO+8884uX2dnAVJHxowZEyml+P3vf7/LPwOwXVf0t2eeeSbmzp0bd911V3zuc5+Lr3/965mP4bznnnt2eP/21a9+NT7ykY/UtimAThIgAdDlduUNpIiItra2OPLII6tPZjU1NcUtt9wSBxxwQAwbNuwDr7Fly5YYOnRoXHjhhZnjuxogRfzrbaeFCxfu4s4AsnbnE6y9e/eOiy66qN3P/+pXv4qUUvzmN7+JiIipU6dWv1/u/3fMMcfEcccd14mdAWX3YfW3nelMgPTiiy96wxLotK7qb9tt2rQphgwZEl/+8perx7yBBHQXAiQAutyufAfSdtu2bYu2trZYuHBhvP3227F+/fro0aNHhx/79H533XVX7L333vHkk0/G8uXLq5VSigsvvDCWL18e69at+8DfsX0IO2fOnM5tFCi93fkEa48ePeKyyy5rd3zevHmRUorZs2dHRMT1118fKaVYuXJlu3M/+9nP7jSQB+jIh/WG5c50JkBat25dpJTiqquuqulaABFd19/e75prromGhobqp1/4DiSguxAgAdDlrr766thrr71izZo1meNTpkzZ4VPy220PdXb2BfMTJ06svrm0o9o+XN2RW2+9NVJKsWjRol3fHMD77M4nWL2BBNTTB33H2/7777/D73jr6C30D9KZAOm5556LlFLccMMNNV0LIKLr+tv7fetb38o88LN69epobGyMsWPHZs7btGlT9OnTp8N7QIDdQYAEQJf7wx/+ECmlmDp1avXYxo0b47DDDotjjz12hz+3fv36OProo+PAAw+MtWvXZv5u6dKlsWLFisyfZ8+e3a5SSvHFL34xZs+eHW+88UZERKxatardtdauXRuDBw+O/v37x6ZNm/JuGSip3fkEq+9AAurpgwasl156afTq1SsTXG9/03z69OmZc5ctWxbLli3b4XU+KEBas2ZNu7B927Ztce6550ZKKZYsWVLbpgBi9/a3jt4If+edd+Kggw6Kgw46KHP8tNNOa/f/vtvv8x555JHObA2gZgIkAOpi9OjR1SeqZsyYEcOHD4/GxsZ4/PHHM+d885vfjBkzZsTUqVPjiCOOiKampnj00Ufb/b6UUowYMWKn1+3oO5AmTpwYw4YNi/Hjx8cdd9wR1113XVQqlWhoaIj77rsv916B8tqdT7CeffbZMWDAgNi6dWvm+JgxY6K5ubk6VG1ra4uUUkybNi1z3uuvvx4ppbj++utr2BFQdrfeemtMnjw5LrvsskgpxVlnnRWTJ0+OyZMnx+rVqyMi4tVXX4399tsvBg8eHD/+8Y/jhhtuiH79+sUnP/nJdoFPR9/xFhHV33neeedFSikuuuii6rHt5s+fHwMHDoyrrroqpk2bFj/84Q/jhBNOiJRSXHLJJbv13wHY83RFfzv66KPjzDPPjClTpsTMmTNjwoQJMWjQoOjRo0c89NBDmXOXLFkSTU1NcdRRR8X06dNj3Lhx0bNnzxg5cuRu/XcAeD8BEgB1sWHDhrj66qtj4MCB0dTUFMccc0z145a2u/HGG+Pwww+Pnj17Rr9+/eLMM8+MZ555psPflydAmjt3bpx66qkxcODA2HvvvaNv374xcuTImDdvXqf3BxCxe59g/fnPfx4ppcyw4a233oq+ffvGueeemzn38MMPj2HDhsV7771XPTZ+/PhoaGiIF154Ic8WgZKpVCo7/Hjg5cuXV89ra2uLkSNHRnNzc/Tt2zfOP//8ePPNNzv8fR0FSB/0McTbvfLKKzF69Og45JBDomfPntHc3Byf/vSn4/bbb49t27btju0De7Cu6G+33XZbnHjiidG/f/9obGyM/fffP84444xYsGBBh2tauHBhDB8+PHr27Bn7779/XH755e0+jQNgdxIgAQDAh6wrnmB977334rjjjos+ffrEddddF9OmTYshQ4bEvvvuGy+++GLm3F/+8pfR0NAQJ598ctxxxx1x5ZVXRo8ePWLMmDG79d8BAACA4hIgAQDAh6yrntD/5z//GRdffHHst99+0dzcHCNGjIinn366wzXNnj07PvWpT0VTU1MMGjQoxo8fH5s3b/6wtgwAAMAeRoAEAAAAAABAhgAJAAAAAACADAESAAAAAAAAGQIkAAAAAAAAMgRIAAAAAAAAZAiQAAAAAAAAyBAgAQAAAAAAkCFAAgAAAAAAIEOABAAAAAAAQIYACQAAAAAAgAwBEgAAAAAAABkCJAAAAAAAADIESAAAAAAAAGQIkAAAAAAAAMgQIAEAAAAAAJAhQAIAAAAAACBDgAQAAAAAAECGAAkAAAAAAIAMARIAAAAAAAAZAiQAAAAAAAAyBEgAAAAAAABkCJAAAAAAAADIECABAAAAAACQIUACAAAAAAAgQ4AEAAAAAABAhgAJAAAAAACADAESAAAAAAAAGQIkAAAAAAAAMgRIAAAAAAAAZAiQAAAAAAAAyBAgAQAAAAAAkCFAAgAAAAAAIEOABAAAAAAAQIYACQAAAAAAgAwBEgAAAAAAABkCJAAAAAAAADIESAAAAAAAAGQIkAAAAAAAAMgQIAEAAAAAAJAhQAIAAAAAACBDgAQAAAAAAECGAAkAAAAAAIAMARIAAAAAAAAZAiQAAAAAAAAyBEgAAAAAAABkCJAAAAAAAADIECABAAAAAACQIUACAAAAAAAgQ4AEAAAAAABAhgAJAAAAAACADAESAAAAAAAAGQIkAAAAAAAAMgRIAAAAAAAAZAiQAAAAAAAAyPi/EcHP9VxSa2wAAAAASUVORK5CYII=\" width=\"1400\">"
921 ],
922 "text/plain": [
923 "<IPython.core.display.HTML object>"
924 ]
925 },
926 "metadata": {},
927 "output_type": "display_data"
928 },
929 {
930 "data": {
931 "application/javascript": [
932 "/* Put everything inside the global mpl namespace */\n",
933 "window.mpl = {};\n",
934 "\n",
935 "\n",
936 "mpl.get_websocket_type = function() {\n",
937 " if (typeof(WebSocket) !== 'undefined') {\n",
938 " return WebSocket;\n",
939 " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
940 " return MozWebSocket;\n",
941 " } else {\n",
942 " alert('Your browser does not have WebSocket support.' +\n",
943 " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
944 " 'Firefox 4 and 5 are also supported but you ' +\n",
945 " 'have to enable WebSockets in about:config.');\n",
946 " };\n",
947 "}\n",
948 "\n",
949 "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
950 " this.id = figure_id;\n",
951 "\n",
952 " this.ws = websocket;\n",
953 "\n",
954 " this.supports_binary = (this.ws.binaryType != undefined);\n",
955 "\n",
956 " if (!this.supports_binary) {\n",
957 " var warnings = document.getElementById(\"mpl-warnings\");\n",
958 " if (warnings) {\n",
959 " warnings.style.display = 'block';\n",
960 " warnings.textContent = (\n",
961 " \"This browser does not support binary websocket messages. \" +\n",
962 " \"Performance may be slow.\");\n",
963 " }\n",
964 " }\n",
965 "\n",
966 " this.imageObj = new Image();\n",
967 "\n",
968 " this.context = undefined;\n",
969 " this.message = undefined;\n",
970 " this.canvas = undefined;\n",
971 " this.rubberband_canvas = undefined;\n",
972 " this.rubberband_context = undefined;\n",
973 " this.format_dropdown = undefined;\n",
974 "\n",
975 " this.image_mode = 'full';\n",
976 "\n",
977 " this.root = $('<div/>');\n",
978 " this._root_extra_style(this.root)\n",
979 " this.root.attr('style', 'display: inline-block');\n",
980 "\n",
981 " $(parent_element).append(this.root);\n",
982 "\n",
983 " this._init_header(this);\n",
984 " this._init_canvas(this);\n",
985 " this._init_toolbar(this);\n",
986 "\n",
987 " var fig = this;\n",
988 "\n",
989 " this.waiting = false;\n",
990 "\n",
991 " this.ws.onopen = function () {\n",
992 " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
993 " fig.send_message(\"send_image_mode\", {});\n",
994 " if (mpl.ratio != 1) {\n",
995 " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
996 " }\n",
997 " fig.send_message(\"refresh\", {});\n",
998 " }\n",
999 "\n",
1000 " this.imageObj.onload = function() {\n",
1001 " if (fig.image_mode == 'full') {\n",
1002 " // Full images could contain transparency (where diff images\n",
1003 " // almost always do), so we need to clear the canvas so that\n",
1004 " // there is no ghosting.\n",
1005 " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
1006 " }\n",
1007 " fig.context.drawImage(fig.imageObj, 0, 0);\n",
1008 " };\n",
1009 "\n",
1010 " this.imageObj.onunload = function() {\n",
1011 " fig.ws.close();\n",
1012 " }\n",
1013 "\n",
1014 " this.ws.onmessage = this._make_on_message_function(this);\n",
1015 "\n",
1016 " this.ondownload = ondownload;\n",
1017 "}\n",
1018 "\n",
1019 "mpl.figure.prototype._init_header = function() {\n",
1020 " var titlebar = $(\n",
1021 " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
1022 " 'ui-helper-clearfix\"/>');\n",
1023 " var titletext = $(\n",
1024 " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
1025 " 'text-align: center; padding: 3px;\"/>');\n",
1026 " titlebar.append(titletext)\n",
1027 " this.root.append(titlebar);\n",
1028 " this.header = titletext[0];\n",
1029 "}\n",
1030 "\n",
1031 "\n",
1032 "\n",
1033 "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
1034 "\n",
1035 "}\n",
1036 "\n",
1037 "\n",
1038 "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
1039 "\n",
1040 "}\n",
1041 "\n",
1042 "mpl.figure.prototype._init_canvas = function() {\n",
1043 " var fig = this;\n",
1044 "\n",
1045 " var canvas_div = $('<div/>');\n",
1046 "\n",
1047 " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
1048 "\n",
1049 " function canvas_keyboard_event(event) {\n",
1050 " return fig.key_event(event, event['data']);\n",
1051 " }\n",
1052 "\n",
1053 " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
1054 " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
1055 " this.canvas_div = canvas_div\n",
1056 " this._canvas_extra_style(canvas_div)\n",
1057 " this.root.append(canvas_div);\n",
1058 "\n",
1059 " var canvas = $('<canvas/>');\n",
1060 " canvas.addClass('mpl-canvas');\n",
1061 " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
1062 "\n",
1063 " this.canvas = canvas[0];\n",
1064 " this.context = canvas[0].getContext(\"2d\");\n",
1065 "\n",
1066 " var backingStore = this.context.backingStorePixelRatio ||\n",
1067 "\tthis.context.webkitBackingStorePixelRatio ||\n",
1068 "\tthis.context.mozBackingStorePixelRatio ||\n",
1069 "\tthis.context.msBackingStorePixelRatio ||\n",
1070 "\tthis.context.oBackingStorePixelRatio ||\n",
1071 "\tthis.context.backingStorePixelRatio || 1;\n",
1072 "\n",
1073 " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
1074 "\n",
1075 " var rubberband = $('<canvas/>');\n",
1076 " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
1077 "\n",
1078 " var pass_mouse_events = true;\n",
1079 "\n",
1080 " canvas_div.resizable({\n",
1081 " start: function(event, ui) {\n",
1082 " pass_mouse_events = false;\n",
1083 " },\n",
1084 " resize: function(event, ui) {\n",
1085 " fig.request_resize(ui.size.width, ui.size.height);\n",
1086 " },\n",
1087 " stop: function(event, ui) {\n",
1088 " pass_mouse_events = true;\n",
1089 " fig.request_resize(ui.size.width, ui.size.height);\n",
1090 " },\n",
1091 " });\n",
1092 "\n",
1093 " function mouse_event_fn(event) {\n",
1094 " if (pass_mouse_events)\n",
1095 " return fig.mouse_event(event, event['data']);\n",
1096 " }\n",
1097 "\n",
1098 " rubberband.mousedown('button_press', mouse_event_fn);\n",
1099 " rubberband.mouseup('button_release', mouse_event_fn);\n",
1100 " // Throttle sequential mouse events to 1 every 20ms.\n",
1101 " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
1102 "\n",
1103 " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
1104 " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
1105 "\n",
1106 " canvas_div.on(\"wheel\", function (event) {\n",
1107 " event = event.originalEvent;\n",
1108 " event['data'] = 'scroll'\n",
1109 " if (event.deltaY < 0) {\n",
1110 " event.step = 1;\n",
1111 " } else {\n",
1112 " event.step = -1;\n",
1113 " }\n",
1114 " mouse_event_fn(event);\n",
1115 " });\n",
1116 "\n",
1117 " canvas_div.append(canvas);\n",
1118 " canvas_div.append(rubberband);\n",
1119 "\n",
1120 " this.rubberband = rubberband;\n",
1121 " this.rubberband_canvas = rubberband[0];\n",
1122 " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
1123 " this.rubberband_context.strokeStyle = \"#000000\";\n",
1124 "\n",
1125 " this._resize_canvas = function(width, height) {\n",
1126 " // Keep the size of the canvas, canvas container, and rubber band\n",
1127 " // canvas in synch.\n",
1128 " canvas_div.css('width', width)\n",
1129 " canvas_div.css('height', height)\n",
1130 "\n",
1131 " canvas.attr('width', width * mpl.ratio);\n",
1132 " canvas.attr('height', height * mpl.ratio);\n",
1133 " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
1134 "\n",
1135 " rubberband.attr('width', width);\n",
1136 " rubberband.attr('height', height);\n",
1137 " }\n",
1138 "\n",
1139 " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
1140 " // upon first draw.\n",
1141 " this._resize_canvas(600, 600);\n",
1142 "\n",
1143 " // Disable right mouse context menu.\n",
1144 " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
1145 " return false;\n",
1146 " });\n",
1147 "\n",
1148 " function set_focus () {\n",
1149 " canvas.focus();\n",
1150 " canvas_div.focus();\n",
1151 " }\n",
1152 "\n",
1153 " window.setTimeout(set_focus, 100);\n",
1154 "}\n",
1155 "\n",
1156 "mpl.figure.prototype._init_toolbar = function() {\n",
1157 " var fig = this;\n",
1158 "\n",
1159 " var nav_element = $('<div/>')\n",
1160 " nav_element.attr('style', 'width: 100%');\n",
1161 " this.root.append(nav_element);\n",
1162 "\n",
1163 " // Define a callback function for later on.\n",
1164 " function toolbar_event(event) {\n",
1165 " return fig.toolbar_button_onclick(event['data']);\n",
1166 " }\n",
1167 " function toolbar_mouse_event(event) {\n",
1168 " return fig.toolbar_button_onmouseover(event['data']);\n",
1169 " }\n",
1170 "\n",
1171 " for(var toolbar_ind in mpl.toolbar_items) {\n",
1172 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
1173 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
1174 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
1175 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
1176 "\n",
1177 " if (!name) {\n",
1178 " // put a spacer in here.\n",
1179 " continue;\n",
1180 " }\n",
1181 " var button = $('<button/>');\n",
1182 " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
1183 " 'ui-button-icon-only');\n",
1184 " button.attr('role', 'button');\n",
1185 " button.attr('aria-disabled', 'false');\n",
1186 " button.click(method_name, toolbar_event);\n",
1187 " button.mouseover(tooltip, toolbar_mouse_event);\n",
1188 "\n",
1189 " var icon_img = $('<span/>');\n",
1190 " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
1191 " icon_img.addClass(image);\n",
1192 " icon_img.addClass('ui-corner-all');\n",
1193 "\n",
1194 " var tooltip_span = $('<span/>');\n",
1195 " tooltip_span.addClass('ui-button-text');\n",
1196 " tooltip_span.html(tooltip);\n",
1197 "\n",
1198 " button.append(icon_img);\n",
1199 " button.append(tooltip_span);\n",
1200 "\n",
1201 " nav_element.append(button);\n",
1202 " }\n",
1203 "\n",
1204 " var fmt_picker_span = $('<span/>');\n",
1205 "\n",
1206 " var fmt_picker = $('<select/>');\n",
1207 " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
1208 " fmt_picker_span.append(fmt_picker);\n",
1209 " nav_element.append(fmt_picker_span);\n",
1210 " this.format_dropdown = fmt_picker[0];\n",
1211 "\n",
1212 " for (var ind in mpl.extensions) {\n",
1213 " var fmt = mpl.extensions[ind];\n",
1214 " var option = $(\n",
1215 " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
1216 " fmt_picker.append(option)\n",
1217 " }\n",
1218 "\n",
1219 " // Add hover states to the ui-buttons\n",
1220 " $( \".ui-button\" ).hover(\n",
1221 " function() { $(this).addClass(\"ui-state-hover\");},\n",
1222 " function() { $(this).removeClass(\"ui-state-hover\");}\n",
1223 " );\n",
1224 "\n",
1225 " var status_bar = $('<span class=\"mpl-message\"/>');\n",
1226 " nav_element.append(status_bar);\n",
1227 " this.message = status_bar[0];\n",
1228 "}\n",
1229 "\n",
1230 "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
1231 " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
1232 " // which will in turn request a refresh of the image.\n",
1233 " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
1234 "}\n",
1235 "\n",
1236 "mpl.figure.prototype.send_message = function(type, properties) {\n",
1237 " properties['type'] = type;\n",
1238 " properties['figure_id'] = this.id;\n",
1239 " this.ws.send(JSON.stringify(properties));\n",
1240 "}\n",
1241 "\n",
1242 "mpl.figure.prototype.send_draw_message = function() {\n",
1243 " if (!this.waiting) {\n",
1244 " this.waiting = true;\n",
1245 " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
1246 " }\n",
1247 "}\n",
1248 "\n",
1249 "\n",
1250 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
1251 " var format_dropdown = fig.format_dropdown;\n",
1252 " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
1253 " fig.ondownload(fig, format);\n",
1254 "}\n",
1255 "\n",
1256 "\n",
1257 "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
1258 " var size = msg['size'];\n",
1259 " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
1260 " fig._resize_canvas(size[0], size[1]);\n",
1261 " fig.send_message(\"refresh\", {});\n",
1262 " };\n",
1263 "}\n",
1264 "\n",
1265 "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
1266 " var x0 = msg['x0'] / mpl.ratio;\n",
1267 " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
1268 " var x1 = msg['x1'] / mpl.ratio;\n",
1269 " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
1270 " x0 = Math.floor(x0) + 0.5;\n",
1271 " y0 = Math.floor(y0) + 0.5;\n",
1272 " x1 = Math.floor(x1) + 0.5;\n",
1273 " y1 = Math.floor(y1) + 0.5;\n",
1274 " var min_x = Math.min(x0, x1);\n",
1275 " var min_y = Math.min(y0, y1);\n",
1276 " var width = Math.abs(x1 - x0);\n",
1277 " var height = Math.abs(y1 - y0);\n",
1278 "\n",
1279 " fig.rubberband_context.clearRect(\n",
1280 " 0, 0, fig.canvas.width, fig.canvas.height);\n",
1281 "\n",
1282 " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
1283 "}\n",
1284 "\n",
1285 "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
1286 " // Updates the figure title.\n",
1287 " fig.header.textContent = msg['label'];\n",
1288 "}\n",
1289 "\n",
1290 "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
1291 " var cursor = msg['cursor'];\n",
1292 " switch(cursor)\n",
1293 " {\n",
1294 " case 0:\n",
1295 " cursor = 'pointer';\n",
1296 " break;\n",
1297 " case 1:\n",
1298 " cursor = 'default';\n",
1299 " break;\n",
1300 " case 2:\n",
1301 " cursor = 'crosshair';\n",
1302 " break;\n",
1303 " case 3:\n",
1304 " cursor = 'move';\n",
1305 " break;\n",
1306 " }\n",
1307 " fig.rubberband_canvas.style.cursor = cursor;\n",
1308 "}\n",
1309 "\n",
1310 "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
1311 " fig.message.textContent = msg['message'];\n",
1312 "}\n",
1313 "\n",
1314 "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
1315 " // Request the server to send over a new figure.\n",
1316 " fig.send_draw_message();\n",
1317 "}\n",
1318 "\n",
1319 "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
1320 " fig.image_mode = msg['mode'];\n",
1321 "}\n",
1322 "\n",
1323 "mpl.figure.prototype.updated_canvas_event = function() {\n",
1324 " // Called whenever the canvas gets updated.\n",
1325 " this.send_message(\"ack\", {});\n",
1326 "}\n",
1327 "\n",
1328 "// A function to construct a web socket function for onmessage handling.\n",
1329 "// Called in the figure constructor.\n",
1330 "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
1331 " return function socket_on_message(evt) {\n",
1332 " if (evt.data instanceof Blob) {\n",
1333 " /* FIXME: We get \"Resource interpreted as Image but\n",
1334 " * transferred with MIME type text/plain:\" errors on\n",
1335 " * Chrome. But how to set the MIME type? It doesn't seem\n",
1336 " * to be part of the websocket stream */\n",
1337 " evt.data.type = \"image/png\";\n",
1338 "\n",
1339 " /* Free the memory for the previous frames */\n",
1340 " if (fig.imageObj.src) {\n",
1341 " (window.URL || window.webkitURL).revokeObjectURL(\n",
1342 " fig.imageObj.src);\n",
1343 " }\n",
1344 "\n",
1345 " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
1346 " evt.data);\n",
1347 " fig.updated_canvas_event();\n",
1348 " fig.waiting = false;\n",
1349 " return;\n",
1350 " }\n",
1351 " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
1352 " fig.imageObj.src = evt.data;\n",
1353 " fig.updated_canvas_event();\n",
1354 " fig.waiting = false;\n",
1355 " return;\n",
1356 " }\n",
1357 "\n",
1358 " var msg = JSON.parse(evt.data);\n",
1359 " var msg_type = msg['type'];\n",
1360 "\n",
1361 " // Call the \"handle_{type}\" callback, which takes\n",
1362 " // the figure and JSON message as its only arguments.\n",
1363 " try {\n",
1364 " var callback = fig[\"handle_\" + msg_type];\n",
1365 " } catch (e) {\n",
1366 " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
1367 " return;\n",
1368 " }\n",
1369 "\n",
1370 " if (callback) {\n",
1371 " try {\n",
1372 " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
1373 " callback(fig, msg);\n",
1374 " } catch (e) {\n",
1375 " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
1376 " }\n",
1377 " }\n",
1378 " };\n",
1379 "}\n",
1380 "\n",
1381 "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
1382 "mpl.findpos = function(e) {\n",
1383 " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
1384 " var targ;\n",
1385 " if (!e)\n",
1386 " e = window.event;\n",
1387 " if (e.target)\n",
1388 " targ = e.target;\n",
1389 " else if (e.srcElement)\n",
1390 " targ = e.srcElement;\n",
1391 " if (targ.nodeType == 3) // defeat Safari bug\n",
1392 " targ = targ.parentNode;\n",
1393 "\n",
1394 " // jQuery normalizes the pageX and pageY\n",
1395 " // pageX,Y are the mouse positions relative to the document\n",
1396 " // offset() returns the position of the element relative to the document\n",
1397 " var x = e.pageX - $(targ).offset().left;\n",
1398 " var y = e.pageY - $(targ).offset().top;\n",
1399 "\n",
1400 " return {\"x\": x, \"y\": y};\n",
1401 "};\n",
1402 "\n",
1403 "/*\n",
1404 " * return a copy of an object with only non-object keys\n",
1405 " * we need this to avoid circular references\n",
1406 " * http://stackoverflow.com/a/24161582/3208463\n",
1407 " */\n",
1408 "function simpleKeys (original) {\n",
1409 " return Object.keys(original).reduce(function (obj, key) {\n",
1410 " if (typeof original[key] !== 'object')\n",
1411 " obj[key] = original[key]\n",
1412 " return obj;\n",
1413 " }, {});\n",
1414 "}\n",
1415 "\n",
1416 "mpl.figure.prototype.mouse_event = function(event, name) {\n",
1417 " var canvas_pos = mpl.findpos(event)\n",
1418 "\n",
1419 " if (name === 'button_press')\n",
1420 " {\n",
1421 " this.canvas.focus();\n",
1422 " this.canvas_div.focus();\n",
1423 " }\n",
1424 "\n",
1425 " var x = canvas_pos.x * mpl.ratio;\n",
1426 " var y = canvas_pos.y * mpl.ratio;\n",
1427 "\n",
1428 " this.send_message(name, {x: x, y: y, button: event.button,\n",
1429 " step: event.step,\n",
1430 " guiEvent: simpleKeys(event)});\n",
1431 "\n",
1432 " /* This prevents the web browser from automatically changing to\n",
1433 " * the text insertion cursor when the button is pressed. We want\n",
1434 " * to control all of the cursor setting manually through the\n",
1435 " * 'cursor' event from matplotlib */\n",
1436 " event.preventDefault();\n",
1437 " return false;\n",
1438 "}\n",
1439 "\n",
1440 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
1441 " // Handle any extra behaviour associated with a key event\n",
1442 "}\n",
1443 "\n",
1444 "mpl.figure.prototype.key_event = function(event, name) {\n",
1445 "\n",
1446 " // Prevent repeat events\n",
1447 " if (name == 'key_press')\n",
1448 " {\n",
1449 " if (event.which === this._key)\n",
1450 " return;\n",
1451 " else\n",
1452 " this._key = event.which;\n",
1453 " }\n",
1454 " if (name == 'key_release')\n",
1455 " this._key = null;\n",
1456 "\n",
1457 " var value = '';\n",
1458 " if (event.ctrlKey && event.which != 17)\n",
1459 " value += \"ctrl+\";\n",
1460 " if (event.altKey && event.which != 18)\n",
1461 " value += \"alt+\";\n",
1462 " if (event.shiftKey && event.which != 16)\n",
1463 " value += \"shift+\";\n",
1464 "\n",
1465 " value += 'k';\n",
1466 " value += event.which.toString();\n",
1467 "\n",
1468 " this._key_event_extra(event, name);\n",
1469 "\n",
1470 " this.send_message(name, {key: value,\n",
1471 " guiEvent: simpleKeys(event)});\n",
1472 " return false;\n",
1473 "}\n",
1474 "\n",
1475 "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
1476 " if (name == 'download') {\n",
1477 " this.handle_save(this, null);\n",
1478 " } else {\n",
1479 " this.send_message(\"toolbar_button\", {name: name});\n",
1480 " }\n",
1481 "};\n",
1482 "\n",
1483 "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
1484 " this.message.textContent = tooltip;\n",
1485 "};\n",
1486 "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",
1487 "\n",
1488 "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
1489 "\n",
1490 "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
1491 " // Create a \"websocket\"-like object which calls the given IPython comm\n",
1492 " // object with the appropriate methods. Currently this is a non binary\n",
1493 " // socket, so there is still some room for performance tuning.\n",
1494 " var ws = {};\n",
1495 "\n",
1496 " ws.close = function() {\n",
1497 " comm.close()\n",
1498 " };\n",
1499 " ws.send = function(m) {\n",
1500 " //console.log('sending', m);\n",
1501 " comm.send(m);\n",
1502 " };\n",
1503 " // Register the callback with on_msg.\n",
1504 " comm.on_msg(function(msg) {\n",
1505 " //console.log('receiving', msg['content']['data'], msg);\n",
1506 " // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
1507 " ws.onmessage(msg['content']['data'])\n",
1508 " });\n",
1509 " return ws;\n",
1510 "}\n",
1511 "\n",
1512 "mpl.mpl_figure_comm = function(comm, msg) {\n",
1513 " // This is the function which gets called when the mpl process\n",
1514 " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
1515 "\n",
1516 " var id = msg.content.data.id;\n",
1517 " // Get hold of the div created by the display call when the Comm\n",
1518 " // socket was opened in Python.\n",
1519 " var element = $(\"#\" + id);\n",
1520 " var ws_proxy = comm_websocket_adapter(comm)\n",
1521 "\n",
1522 " function ondownload(figure, format) {\n",
1523 " window.open(figure.imageObj.src);\n",
1524 " }\n",
1525 "\n",
1526 " var fig = new mpl.figure(id, ws_proxy,\n",
1527 " ondownload,\n",
1528 " element.get(0));\n",
1529 "\n",
1530 " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
1531 " // web socket which is closed, not our websocket->open comm proxy.\n",
1532 " ws_proxy.onopen();\n",
1533 "\n",
1534 " fig.parent_element = element.get(0);\n",
1535 " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
1536 " if (!fig.cell_info) {\n",
1537 " console.error(\"Failed to find cell for figure\", id, fig);\n",
1538 " return;\n",
1539 " }\n",
1540 "\n",
1541 " var output_index = fig.cell_info[2]\n",
1542 " var cell = fig.cell_info[0];\n",
1543 "\n",
1544 "};\n",
1545 "\n",
1546 "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
1547 " var width = fig.canvas.width/mpl.ratio\n",
1548 " fig.root.unbind('remove')\n",
1549 "\n",
1550 " // Update the output cell to use the data from the current canvas.\n",
1551 " fig.push_to_output();\n",
1552 " var dataURL = fig.canvas.toDataURL();\n",
1553 " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
1554 " // the notebook keyboard shortcuts fail.\n",
1555 " IPython.keyboard_manager.enable()\n",
1556 " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
1557 " fig.close_ws(fig, msg);\n",
1558 "}\n",
1559 "\n",
1560 "mpl.figure.prototype.close_ws = function(fig, msg){\n",
1561 " fig.send_message('closing', msg);\n",
1562 " // fig.ws.close()\n",
1563 "}\n",
1564 "\n",
1565 "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
1566 " // Turn the data on the canvas into data in the output cell.\n",
1567 " var width = this.canvas.width/mpl.ratio\n",
1568 " var dataURL = this.canvas.toDataURL();\n",
1569 " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
1570 "}\n",
1571 "\n",
1572 "mpl.figure.prototype.updated_canvas_event = function() {\n",
1573 " // Tell IPython that the notebook contents must change.\n",
1574 " IPython.notebook.set_dirty(true);\n",
1575 " this.send_message(\"ack\", {});\n",
1576 " var fig = this;\n",
1577 " // Wait a second, then push the new image to the DOM so\n",
1578 " // that it is saved nicely (might be nice to debounce this).\n",
1579 " setTimeout(function () { fig.push_to_output() }, 1000);\n",
1580 "}\n",
1581 "\n",
1582 "mpl.figure.prototype._init_toolbar = function() {\n",
1583 " var fig = this;\n",
1584 "\n",
1585 " var nav_element = $('<div/>')\n",
1586 " nav_element.attr('style', 'width: 100%');\n",
1587 " this.root.append(nav_element);\n",
1588 "\n",
1589 " // Define a callback function for later on.\n",
1590 " function toolbar_event(event) {\n",
1591 " return fig.toolbar_button_onclick(event['data']);\n",
1592 " }\n",
1593 " function toolbar_mouse_event(event) {\n",
1594 " return fig.toolbar_button_onmouseover(event['data']);\n",
1595 " }\n",
1596 "\n",
1597 " for(var toolbar_ind in mpl.toolbar_items){\n",
1598 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
1599 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
1600 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
1601 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
1602 "\n",
1603 " if (!name) { continue; };\n",
1604 "\n",
1605 " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
1606 " button.click(method_name, toolbar_event);\n",
1607 " button.mouseover(tooltip, toolbar_mouse_event);\n",
1608 " nav_element.append(button);\n",
1609 " }\n",
1610 "\n",
1611 " // Add the status bar.\n",
1612 " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
1613 " nav_element.append(status_bar);\n",
1614 " this.message = status_bar[0];\n",
1615 "\n",
1616 " // Add the close button to the window.\n",
1617 " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
1618 " 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",
1619 " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
1620 " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
1621 " buttongrp.append(button);\n",
1622 " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
1623 " titlebar.prepend(buttongrp);\n",
1624 "}\n",
1625 "\n",
1626 "mpl.figure.prototype._root_extra_style = function(el){\n",
1627 " var fig = this\n",
1628 " el.on(\"remove\", function(){\n",
1629 "\tfig.close_ws(fig, {});\n",
1630 " });\n",
1631 "}\n",
1632 "\n",
1633 "mpl.figure.prototype._canvas_extra_style = function(el){\n",
1634 " // this is important to make the div 'focusable\n",
1635 " el.attr('tabindex', 0)\n",
1636 " // reach out to IPython and tell the keyboard manager to turn it's self\n",
1637 " // off when our div gets focus\n",
1638 "\n",
1639 " // location in version 3\n",
1640 " if (IPython.notebook.keyboard_manager) {\n",
1641 " IPython.notebook.keyboard_manager.register_events(el);\n",
1642 " }\n",
1643 " else {\n",
1644 " // location in version 2\n",
1645 " IPython.keyboard_manager.register_events(el);\n",
1646 " }\n",
1647 "\n",
1648 "}\n",
1649 "\n",
1650 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
1651 " var manager = IPython.notebook.keyboard_manager;\n",
1652 " if (!manager)\n",
1653 " manager = IPython.keyboard_manager;\n",
1654 "\n",
1655 " // Check for shift+enter\n",
1656 " if (event.shiftKey && event.which == 13) {\n",
1657 " this.canvas_div.blur();\n",
1658 " event.shiftKey = false;\n",
1659 " // Send a \"J\" for go to next cell\n",
1660 " event.which = 74;\n",
1661 " event.keyCode = 74;\n",
1662 " manager.command_mode();\n",
1663 " manager.handle_keydown(event);\n",
1664 " }\n",
1665 "}\n",
1666 "\n",
1667 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
1668 " fig.ondownload(fig, null);\n",
1669 "}\n",
1670 "\n",
1671 "\n",
1672 "mpl.find_output_cell = function(html_output) {\n",
1673 " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
1674 " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
1675 " // IPython event is triggered only after the cells have been serialised, which for\n",
1676 " // our purposes (turning an active figure into a static one), is too late.\n",
1677 " var cells = IPython.notebook.get_cells();\n",
1678 " var ncells = cells.length;\n",
1679 " for (var i=0; i<ncells; i++) {\n",
1680 " var cell = cells[i];\n",
1681 " if (cell.cell_type === 'code'){\n",
1682 " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
1683 " var data = cell.output_area.outputs[j];\n",
1684 " if (data.data) {\n",
1685 " // IPython >= 3 moved mimebundle to data attribute of output\n",
1686 " data = data.data;\n",
1687 " }\n",
1688 " if (data['text/html'] == html_output) {\n",
1689 " return [cell, data, j];\n",
1690 " }\n",
1691 " }\n",
1692 " }\n",
1693 " }\n",
1694 "}\n",
1695 "\n",
1696 "// Register the function which deals with the matplotlib target/channel.\n",
1697 "// The kernel may be null if the page has been refreshed.\n",
1698 "if (IPython.notebook.kernel != null) {\n",
1699 " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
1700 "}\n"
1701 ],
1702 "text/plain": [
1703 "<IPython.core.display.Javascript object>"
1704 ]
1705 },
1706 "metadata": {},
1707 "output_type": "display_data"
1708 },
1709 {
1710 "data": {
1711 "text/html": [
1712 "<img src=\"data:image/png;base64,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AAAAAAAAAPghQAIAAAAAAAAAAIAfAiQAAAAAAAAAAAD4IUACgG/Iz89XTEyM2rZtqxtuuEFRUVGaNGmS3xy3261Jkybp6aef1m9/+1v98Ic/1L333qtevXqpuLi4wp9VUlKiTz75RDfffLOuu+46NW3aVMuXLw86d926dWrRooV+8IMf6KabblKHDh2Un58fyq+KWqIi97QkTZgwQa1atdIvf/lLff/731fdunX12muv6ciRIxX+LO5phENF7+lLlZWV6e6771ZUVJQGDRpU4c+6ePGi3nrrLf385z/XD3/4Qz388MNKS0sLOnfBggVq2LChrr32Wv3ud79TTEyMysvLK/OroZaq6D3dvn17RUVFBVx33XVXhT+LexpXW2XWaLfbrbFjx6p+/fq67rrrdOONN+qRRx7R9u3bK/RZ3M8Ih4re08HW56+vP/3pTxX6LO5phENl1umZM2fqgQce0PXXX68bb7xRrVq1ktPprPBncU8D1R8BEgB8w5EjRxQVFaVbbrlFDz/8cNB/mcrPz1dUVJSaNWum3r17a8KECXr99df1f//3f3r44Yfl8Xgq9Fkvv/yyrrnmGnXs2FGffvqpmjdvrmuuuUZr1qzxm7dt2zZdd911atiwocaNG6euXbvq2muv1eOPP15VvzZqsIrc05L0r3/9S+3bt9fgwYM1ceJEdevWTTfddJN+/vOf69SpUxX6LO5phENF7+lLDRkyRD/60Y8qFSC53W49+OCD+tGPfqTu3btr9OjRuueee/STn/xE+/fv95u7ZMkSfe9739MjjzyiCRMmqEOHDvq///s/vfvuu9/110QtUtF7un379rr22msVHx/vdy1cuLBCn8M9jXCozBrdvn17XXPNNXrjjTcUFxen4cOHq3379pf9j08uxf2McKnoPf3NtTk+Pl7//e9/FRUVpYEDB37r53BPI1wqek+PHDlSUVFRevLJJzVu3DgNGzZM9evXV1RUlObOnfutn8M9DdQMBEgA8A0lJSXKzMyUJG3ZsiXov0yVlpZq3bp1AT/bo0cPRUVFKTEx8Vs/Z9OmTQGNzOLiYt1+++1q3ry539wnnnhCN998s3Jzc83X4uLiFBUVpWXLllXm10MtVJF7+nJSU1MVFRWlfv36fetc7mmES2Xv6aysLF1//fXq2bNnpQKkmTNnKioqSrNnzzZfO3v2rH7605/q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WVlOTk8kz/SEQvbRP/30UxQXF3f7mFam6QmdZXrbtm2RUopnnnkm52+uvfbaqKqq6nJtmYa+QYEEkEe+E4Qvv/wyhg4dGrW1tXHgwIG863z33Xexe/fuzNj27dtzHqXU0tISo0ePjssuuywzd9q0aTFixIg4cuRI+1jbXTsnvmQY8uks03/99VeHOd6xY0eUlJTEnDlzMuMyTW/RWaZ37doVGzZsyPw899xzkVKK2267LTZs2JC5u72pqSmampoya7zxxhuRUop169a1j+3bty8GDx4cs2fPzsw9//zz4+KLL45jx461jy1dujSKioriyy+//B9uMX1dZ5n+448/MvvMNosXL46UUqxfvz4zLtP0BvmOpRcuXBgppdi4cWP72L59+2LgwIExffr0zFx5prcopEBasWJFpJRi06ZNnc6RaXqLzjL9yy+/RHFxcUyePDn+/vvv9vEffvghKisrY9q0aZn5Mg19lwIJoAONjY3R0NAQ8+bNi5RS3HjjjdHQ0BANDQ1x6NChOHLkSIwaNSqKi4vjiSeeiJdffjnzs23btsx6kyZNipRyd7mzZs1q/ybGc889FxMmTIh+/frFBx98kJm3a9euKC0tjbFjx8YzzzwTDz74YJSVlcU111zz//p/oO/oKtMHDx5sf0b18uXL49lnn40FCxZERUVFnHHGGfHVV19l1pNpelpXme5Ivncg1dTURE1NTWbs2LFjMX78+KisrIxHH300Vq9eHbW1tXH66afHnj17MnPfeuutKCoqiilTpsTzzz8f99xzTxQXF8ddd931P9tm+rauMt3c3ByDBw+OefPmxcqVK2PlypUxffr0SCnFtGnTcu7ulWl6UiH76J9//jlGjBgRp59+ejzyyCOxYsWKOO+886K8vDw+/fTTzHryTE/rznHHpZdeGmeeeWbeb9HJND2tkEzfeeedkVKKq666KhobG2PZsmUxcuTIKCkpyTm/k2nouxRIAB2oqanp9JFHbe/SyPdYpLlz52bW6+xi+x9//BGLFi2K6urqKC0tjXHjxrW/SPJEW7dujQkTJkRZWVkMHz48FixY0OGdyNCRrjLd2toaCxcujIsuuigGDhwY/fv3j5qamqivr4/m5uac9WSantZVpjvS3QIpIuLAgQNRX18fQ4cOjYqKipg0aVLs3Lmzw/U3bNgQY8aMidLS0hg5cmQsXbo0/vzzz3+zmZxCusr0wYMH49Zbb43Ro0dHRUVFlJaWRm1tbSxbtqzDnMk0PanQffQ333wTN9xwQwwcODDKy8tjypQp8dFHH3W4njzTkwrN9J49eyKlFPfee2+X68k0PamQTP/111/R2NgYY8aMicrKyqisrIyrrroqNm/e3OF6Mg19kwIJAAAAAACADAUSAAAAAAAAGQokAAAAAAAAMhRIAAAAAAAAZCiQAAAAAAAAyFAgAQAAAAAAkKFAAgAAAAAAIEOBBAAAAAAAQIYCCQAAAAAAgAwFEgAAAAAAABkKJAAAAAAAADIUSAAAAAAAAGQokAAAAAAAAMhQIAEAAAAAAJChQAIAAAAAACBDgQQAAAAAAECGAgkAAAAAAIAMBRIAAAAAAAAZCiQAAAAAAAAyFEgAAAAAAABkKJAAAAAAAADIUCABAAAAAACQoUACAAAAAAAgQ4EEAAAAAABAhgIJAAAAAACADAUSAAAAAAAAGQokAAAAAAAAMhRIAAAAAAAAZCiQAAAAAAAAyFAgAQAAAAAAkKFAAgAAAAAAIEOBBAAAAAAAQIYCCQAAAAAAgAwFEgAAAAAAABkKJAAAAAAAADIUSAAAAAAAAGQokAAAAAAAAMhQIAEAAAAAAJChQAIAAAAAACBDgQQAAAAAAECGAgkAAAAAAIAMBRIAAAAAAAAZCiQAAAAAAAAyFEgAAAAAAABkKJAAAAAAAADIUCABAAAAAACQoUACAAAAAAAgQ4EEAAAAAABAhgIJAAAAAACADAUSAAAAAAAAGQokAAAAAAAAMhRIAAAAAAAAZCiQAAAAAAAAyFAgAQAAAAAAkKFAAgAAAAAAIEOBBAAAAAAAQMb/AQlrtr6zlzt5AAAAAElFTkSuQmCC\" width=\"1400\">"
1713 ],
1714 "text/plain": [
1715 "<IPython.core.display.HTML object>"
1716 ]
1717 },
1718 "metadata": {},
1719 "output_type": "display_data"
1720 }
1721 ],
1722 "source": [
1723 "plot_temperatures('/home/jeandet/ownCloud/TESTS_LFR_PFM1_PPBI_06_2018/Thermal_Chamber_Logs/Essai du 27 juin 2018.csv', [\"Time\", \"T2\",\"air\",\"PCB\", \"socket\"])\n",
1724 "plot_temperatures('/home/jeandet/ownCloud/TESTS_LFR_PFM1_PPBI_06_2018/Thermal_Chamber_Logs/Essai du 26 juin 2018.csv', [\"Time\",\"air\",\"PCB\", \"socket\"])"
1725 ]
1726 },
1727 {
1728 "cell_type": "code",
1729 "execution_count": 5,
1730 "metadata": {
1731 "ExecuteTime": {
1732 "end_time": "2018-06-29T12:19:46.965856Z",
1733 "start_time": "2018-06-29T12:19:46.947036Z"
1734 }
1735 },
1736 "outputs": [],
1737 "source": [
1738 "ctx = TestContextOutput(TestContextInput())\n",
1739 "ctx.OutputFiles=[\"/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_13_43_36_packet_log.data\", \"/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_13_43_35_packet_record.data\"]\n",
1740 "ctx.save(\"/home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/20_to_-30_transition.outpout\")\n",
1741 "ctx.OutputFiles=[\"/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_15_00_51_packet_log.data\", \"/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_15_00_52_packet_record.data\"]\n",
1742 "ctx.save(\"/home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/-30_to_20_transition.outpout\")"
1743 ]
1744 },
1745 {
1746 "cell_type": "markdown",
1747 "metadata": {},
1748 "source": [
1749 "# 20°C to -30°C transition analysis"
1750 ]
1751 },
1752 {
1753 "cell_type": "code",
1754 "execution_count": 16,
1755 "metadata": {
1756 "ExecuteTime": {
1757 "end_time": "2018-06-29T12:31:47.249534Z",
1758 "start_time": "2018-06-29T12:31:47.126712Z"
1759 }
1760 },
1761 "outputs": [],
1762 "source": [
1763 "!rm /home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/temp/*.png"
1764 ]
1765 },
1766 {
1767 "cell_type": "code",
1768 "execution_count": 7,
1769 "metadata": {
1770 "ExecuteTime": {
1771 "end_time": "2018-06-29T12:19:51.511148Z",
1772 "start_time": "2018-06-29T12:19:50.066350Z"
1773 }
1774 },
1775 "outputs": [],
1776 "source": [
1777 "res = ResultLoader(\"/home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/20_to_-30_transition.outpout\")\n",
1778 "res.decomutePackets()\n",
1779 "res.loadSWF()\n",
1780 "\n",
1781 "temperatures = load_temperatures('/home/jeandet/ownCloud/TESTS_LFR_PFM1_PPBI_06_2018/Thermal_Chamber_Logs/Essai du 26 juin 2018.csv', [\"Time\",\"air\",\"PCB\", \"socket\"])\n",
1782 "times=load_packets_time(\n",
1783 " sumfile=\"/home/jeandet/Documents/DATA/LFR_Packets/decom/2018_06_26_13_43_35_packet_record.sum\",\n",
1784 " logfile=\"/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_13_43_36_packet_log.data\")\n",
1785 "\n",
1786 "with open(\"/home/jeandet/Documents/DATA/LFR_Packets/decom/2018_06_26_13_43_35_packet_record_HK.hk\",\"r\") as file:\n",
1787 " lines=file.readlines()\n",
1788 " HK_TEMP = lines[6::9] \n",
1789 " HK_PCB_TEMP = [float(T.split()[1]) for T in HK_TEMP]\n",
1790 " HK_PCB_TIME = [val['Time'] for val in times[\"HK\"]]\n",
1791 " HK_TEMP_df = pds.Series(HK_PCB_TEMP, name='PCBTemp',index=pds.DatetimeIndex(HK_PCB_TIME, dtype='datetime64[ns]', freq=None))"
1792 ]
1793 },
1794 {
1795 "cell_type": "code",
1796 "execution_count": 8,
1797 "metadata": {
1798 "ExecuteTime": {
1799 "end_time": "2018-06-29T12:21:22.921368Z",
1800 "start_time": "2018-06-29T12:19:52.823753Z"
1801 },
1802 "scrolled": true
1803 },
1804 "outputs": [],
1805 "source": [
1806 "%%capture\n",
1807 "for i in range(0,res.SWFCount()):\n",
1808 " f, axes = plt.subplots(nrows=2, ncols=3,figsize=(24,10))\n",
1809 " df=res.SWF(0,i)\n",
1810 " for ax,col in zip(axes.flatten(),df.columns):\n",
1811 " ax.plot(np.arange(2048),df[col])\n",
1812 " ax.set_ylim(-30000,30000)\n",
1813 " patches, labels = ax.get_legend_handles_labels()\n",
1814 " ax.legend(patches, labels, loc='upper left')\n",
1815 " T = get_temperature_at(temperatures,times[\"SWF0\"][i][\"Time\"]-datetime.timedelta(minutes=4,seconds=10))\n",
1816 " T_HK = get_temperature_at(HK_TEMP_df,times[\"SWF0\"][i][\"Time\"])\n",
1817 " suptitle=plt.suptitle(\"Air={T_Air:3.1f}°C PCB(HK)={T_PCB:3.1f}°C socket={T_socket:3.1f}°C\".format(T_Air=T[\"air\"],T_PCB=T_HK,T_socket=T[\"socket\"]),y=1.05, fontsize=24)\n",
1818 " plt.tight_layout()\n",
1819 " plt.savefig(\"/home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/temp/\"+\"/plot_{i}.png\".format(i=i),bbox_inches='tight',bbox_extra_artists=[suptitle])\n",
1820 " plt.close()\n",
1821 " del axes\n",
1822 " del f\n",
1823 " del df\n",
1824 " del suptitle\n",
1825 " gc.collect()"
1826 ]
1827 },
1828 {
1829 "cell_type": "code",
1830 "execution_count": 9,
1831 "metadata": {
1832 "ExecuteTime": {
1833 "end_time": "2018-06-29T12:21:36.884281Z",
1834 "start_time": "2018-06-29T12:21:25.726250Z"
1835 }
1836 },
1837 "outputs": [],
1838 "source": [
1839 "%%capture\n",
1840 "!cd /home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/temp/ && ffmpeg -y -framerate 15 -i plot_%d.png 20_to_-30_transition.mp4 && ffmpeg -y -i 20_to_-30_transition.mp4 -c:v libvpx-vp9 -b:v 2M -threads 8 20_to_-30_transition.webm"
1841 ]
1842 },
1843 {
1844 "cell_type": "code",
1845 "execution_count": 15,
1846 "metadata": {
1847 "ExecuteTime": {
1848 "end_time": "2018-06-29T12:25:44.226001Z",
1849 "start_time": "2018-06-29T12:25:44.219263Z"
1850 }
1851 },
1852 "outputs": [
1853 {
1854 "data": {
1855 "text/html": [
1856 "<video width=\"90%\" style=\"display:block; margin: 0 auto;\" controls src=\"https://hephaistos.lpp.polytechnique.fr/data/LFR/PPBI_06_2018/20_to_-30_transition.webm\" type=\"video/webm\">"
1857 ],
1858 "text/plain": [
1859 "<IPython.core.display.HTML object>"
1860 ]
1861 },
1862 "metadata": {},
1863 "output_type": "display_data"
1864 }
1865 ],
1866 "source": [
1867 "%%HTML\n",
1868 "<video width=\"90%\" style=\"display:block; margin: 0 auto;\" controls src=\"https://hephaistos.lpp.polytechnique.fr/data/LFR/PPBI_06_2018/20_to_-30_transition.webm\" type=\"video/webm\">"
1869 ]
1870 },
1871 {
1872 "cell_type": "markdown",
1873 "metadata": {},
1874 "source": [
1875 "# -30°C to 20°C transition analysis"
1876 ]
1877 },
1878 {
1879 "cell_type": "code",
1880 "execution_count": 10,
1881 "metadata": {
1882 "ExecuteTime": {
1883 "end_time": "2018-06-29T12:21:38.812448Z",
1884 "start_time": "2018-06-29T12:21:38.694283Z"
1885 }
1886 },
1887 "outputs": [],
1888 "source": [
1889 "!rm /home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/temp/*.png"
1890 ]
1891 },
1892 {
1893 "cell_type": "code",
1894 "execution_count": 11,
1895 "metadata": {
1896 "ExecuteTime": {
1897 "end_time": "2018-06-29T12:21:41.747277Z",
1898 "start_time": "2018-06-29T12:21:40.400048Z"
1899 }
1900 },
1901 "outputs": [],
1902 "source": [
1903 "res = ResultLoader(\"/home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/-30_to_20_transition.outpout\")\n",
1904 "res.decomutePackets()\n",
1905 "res.loadSWF()\n",
1906 "temperatures = load_temperatures('/home/jeandet/ownCloud/TESTS_LFR_PFM1_PPBI_06_2018/Thermal_Chamber_Logs/Essai du 26 juin 2018.csv', [\"Time\",\"air\",\"PCB\", \"socket\"])\n",
1907 "times=load_packets_time(\n",
1908 " sumfile=\"/home/jeandet/Documents/DATA/LFR_Packets/decom/2018_06_26_15_00_52_packet_record.sum\",\n",
1909 " logfile=\"/home/jeandet/Documents/DATA/LFR_Packets/2018_06_26_15_00_51_packet_log.data\")\n",
1910 "\n",
1911 "\n",
1912 "with open(\"/home/jeandet/Documents/DATA/LFR_Packets/decom/2018_06_26_15_00_52_packet_record_HK.hk\",\"r\") as file:\n",
1913 " lines=file.readlines()\n",
1914 " HK_TEMP = lines[6::9] \n",
1915 " HK_PCB_TEMP = [float(T.split()[1]) for T in HK_TEMP]\n",
1916 " HK_PCB_TIME = [val['Time'] for val in times[\"HK\"]]\n",
1917 " HK_TEMP_df = pds.Series(HK_PCB_TEMP, name='PCBTemp',index=pds.DatetimeIndex(HK_PCB_TIME, dtype='datetime64[ns]', freq=None))"
1918 ]
1919 },
1920 {
1921 "cell_type": "code",
1922 "execution_count": 12,
1923 "metadata": {
1924 "ExecuteTime": {
1925 "end_time": "2018-06-29T12:23:08.428149Z",
1926 "start_time": "2018-06-29T12:21:43.373905Z"
1927 },
1928 "scrolled": true
1929 },
1930 "outputs": [],
1931 "source": [
1932 "%%capture\n",
1933 "for i in range(0,res.SWFCount()):\n",
1934 " f, axes = plt.subplots(nrows=2, ncols=3,figsize=(24,10))\n",
1935 " df=res.SWF(0,i)\n",
1936 " for ax,col in zip(axes.flatten(),df.columns):\n",
1937 " ax.plot(np.arange(2048),df[col])\n",
1938 " ax.set_ylim(-30000,30000)\n",
1939 " patches, labels = ax.get_legend_handles_labels()\n",
1940 " ax.legend(patches, labels, loc='upper left')\n",
1941 " T = get_temperature_at(temperatures,times[\"SWF0\"][i][\"Time\"]-datetime.timedelta(minutes=4,seconds=10))\n",
1942 " T_HK = get_temperature_at(HK_TEMP_df,times[\"SWF0\"][i][\"Time\"])\n",
1943 " suptitle=plt.suptitle(\"Air={T_Air:3.1f}°C PCB(HK)={T_PCB:3.1f}°C socket={T_socket:3.1f}°C\".format(T_Air=T[\"air\"],T_PCB=T_HK,T_socket=T[\"socket\"]),y=1.05, fontsize=24)\n",
1944 " plt.tight_layout()\n",
1945 " plt.savefig(\"/home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/temp/\"+\"/plot_{i}.png\".format(i=i),bbox_inches='tight',bbox_extra_artists=[suptitle])\n",
1946 " plt.close()\n",
1947 " del axes\n",
1948 " del f\n",
1949 " del df\n",
1950 " del suptitle\n",
1951 " gc.collect()"
1952 ]
1953 },
1954 {
1955 "cell_type": "code",
1956 "execution_count": 13,
1957 "metadata": {
1958 "ExecuteTime": {
1959 "end_time": "2018-06-29T12:24:22.887029Z",
1960 "start_time": "2018-06-29T12:24:11.457143Z"
1961 }
1962 },
1963 "outputs": [],
1964 "source": [
1965 "%%capture\n",
1966 "!cd /home/jeandet/Documents/SOLO_LFR_Notebooks/PPBI_06_2018/temp/ && ffmpeg -y -framerate 15 -i plot_%d.png minus30_to_20_transition.mp4 && ffmpeg -y -i minus30_to_20_transition.mp4 -c:v libvpx-vp9 -b:v 2M -threads 8 minus30_to_20_transition.webm"
1967 ]
1968 },
1969 {
1970 "cell_type": "code",
1971 "execution_count": 14,
1972 "metadata": {
1973 "ExecuteTime": {
1974 "end_time": "2018-06-29T12:25:16.067271Z",
1975 "start_time": "2018-06-29T12:25:16.062111Z"
1976 }
1977 },
1978 "outputs": [
1979 {
1980 "data": {
1981 "text/html": [
1982 "<video width=\"90%\" style=\"display:block; margin: 0 auto;\" controls src=\"https://hephaistos.lpp.polytechnique.fr/data/LFR/PPBI_06_2018/minus30_to_20_transition.webm\" type=\"video/webm\">"
1983 ],
1984 "text/plain": [
1985 "<IPython.core.display.HTML object>"
1986 ]
1987 },
1988 "metadata": {},
1989 "output_type": "display_data"
1990 }
1991 ],
1992 "source": [
1993 "%%HTML\n",
1994 "<video width=\"90%\" style=\"display:block; margin: 0 auto;\" controls src=\"https://hephaistos.lpp.polytechnique.fr/data/LFR/PPBI_06_2018/minus30_to_20_transition.webm\" type=\"video/webm\">"
1995 ]
1996 },
1997 {
1998 "cell_type": "code",
1999 "execution_count": null,
2000 "metadata": {},
2001 "outputs": [],
2002 "source": []
2003 }
2004 ],
2005 "metadata": {
2006 "kernelspec": {
2007 "display_name": "Python 3",
2008 "language": "python",
2009 "name": "python3"
2010 },
2011 "language_info": {
2012 "codemirror_mode": {
2013 "name": "ipython",
2014 "version": 3
2015 },
2016 "file_extension": ".py",
2017 "mimetype": "text/x-python",
2018 "name": "python",
2019 "nbconvert_exporter": "python",
2020 "pygments_lexer": "ipython3",
2021 "version": "3.6.5"
2022 },
2023 "toc": {
2024 "colors": {
2025 "hover_highlight": "#DAA520",
2026 "navigate_num": "#000000",
2027 "navigate_text": "#333333",
2028 "running_highlight": "#FF0000",
2029 "selected_highlight": "#FFD700",
2030 "sidebar_border": "#EEEEEE",
2031 "wrapper_background": "#FFFFFF"
2032 },
2033 "moveMenuLeft": true,
2034 "nav_menu": {
2035 "height": "12px",
2036 "width": "252px"
2037 },
2038 "navigate_menu": true,
2039 "number_sections": true,
2040 "sideBar": true,
2041 "threshold": 4,
2042 "toc_cell": false,
2043 "toc_section_display": "block",
2044 "toc_window_display": false,
2045 "widenNotebook": false
2046 },
2047 "varInspector": {
2048 "cols": {
2049 "lenName": 16,
2050 "lenType": 16,
2051 "lenVar": 40
2052 },
2053 "kernels_config": {
2054 "python": {
2055 "delete_cmd_postfix": "",
2056 "delete_cmd_prefix": "del ",
2057 "library": "var_list.py",
2058 "varRefreshCmd": "print(var_dic_list())"
2059 },
2060 "r": {
2061 "delete_cmd_postfix": ") ",
2062 "delete_cmd_prefix": "rm(",
2063 "library": "var_list.r",
2064 "varRefreshCmd": "cat(var_dic_list()) "
2065 }
2066 },
2067 "types_to_exclude": [
2068 "module",
2069 "function",
2070 "builtin_function_or_method",
2071 "instance",
2072 "_Feature"
2073 ],
2074 "window_display": false
2075 }
2076 },
2077 "nbformat": 4,
2078 "nbformat_minor": 2
2079 }
General Comments 0
You need to be logged in to leave comments. Login now