mirror of
https://github.com/Richard-Sti/csiborgtools.git
synced 2024-12-22 23:48:02 +00:00
c748c87e45
* simplify Planck catalogue * add MCXC and base survey * Add 2MPP classes * move match to MCXC to Planck * add halo catalogue * rm comment * rm unused imports * Move conversion to box * add min mass * Run on all simulations * rm old function * add combined catalogue * add halo positions * add knn neighbors * set to 5 sims for testing * add docstring * Switch to neighbours in a catalogue * rename io to read * fix indentation * rename to read * io -> read * add import * add RealisationMatcher * io -> read * add docstrings * add search_sim_indiices * update todo * keep make_cat at 10 for now * update nb
3633 lines
346 KiB
Text
3633 lines
346 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 160,
|
|
"id": "5a38ed25",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-22T09:56:42.956157Z",
|
|
"start_time": "2022-11-22T09:56:41.999024Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"The autoreload extension is already loaded. To reload it, use:\n",
|
|
" %reload_ext autoreload\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"%matplotlib notebook\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"try:\n",
|
|
" import csiborgtools\n",
|
|
"except ModuleNotFoundError:\n",
|
|
" import sys\n",
|
|
" sys.path.append(\"../\")\n",
|
|
" import csiborgtools\n",
|
|
"import utils\n",
|
|
"%load_ext autoreload\n",
|
|
"%autoreload 2\n",
|
|
"\n",
|
|
"import joblib\n",
|
|
"from os.path import join\n",
|
|
"\n",
|
|
"from scipy.interpolate import interp1d"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 163,
|
|
"id": "fa492543",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-22T09:57:21.730075Z",
|
|
"start_time": "2022-11-22T09:57:21.281306Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'/mnt/extraspace/hdesmond/ramses_out_7636'"
|
|
]
|
|
},
|
|
"execution_count": 163,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"sim = 7636\n",
|
|
"\n",
|
|
"csiborgtools.read.get_sim_path(sim)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 162,
|
|
"id": "95759c3e",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-22T09:57:00.423419Z",
|
|
"start_time": "2022-11-22T09:57:00.337146Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"7636"
|
|
]
|
|
},
|
|
"execution_count": 162,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "b3c4c223",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "464b91b3",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "2c98d50d",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T19:32:19.115273Z",
|
|
"start_time": "2022-11-21T19:29:12.079733Z"
|
|
},
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [03:06<00:00, 18.69s/it]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"cat = csiborgtools.read.CombinedHaloCatalogue()\n",
|
|
"# cat = csiborgtools.io.HaloCatalogue(7444, 951)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "72f406e5",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T19:35:07.774766Z",
|
|
"start_time": "2022-11-21T19:35:07.088097Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"matcher = csiborgtools.match.RealisationsMatcher(cat)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "e165bef2",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T19:35:30.136090Z",
|
|
"start_time": "2022-11-21T19:35:09.690538Z"
|
|
},
|
|
"scrolled": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"n = 0\n",
|
|
"match = matcher.cross_knn_position_single(n, 10)\n",
|
|
"# x.shape"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 125,
|
|
"id": "47c34662",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T20:29:04.785499Z",
|
|
"start_time": "2022-11-21T20:29:04.046235Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"application/javascript": [
|
|
"/* Put everything inside the global mpl namespace */\n",
|
|
"/* global mpl */\n",
|
|
"window.mpl = {};\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(\n",
|
|
" '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",
|
|
"\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 = document.createElement('div');\n",
|
|
" this.root.setAttribute('style', 'display: inline-block');\n",
|
|
" this._root_extra_style(this.root);\n",
|
|
"\n",
|
|
" parent_element.appendChild(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 (fig.ratio !== 1) {\n",
|
|
" fig.send_message('set_device_pixel_ratio', {\n",
|
|
" device_pixel_ratio: fig.ratio,\n",
|
|
" });\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 = document.createElement('div');\n",
|
|
" titlebar.classList =\n",
|
|
" 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
|
|
" var titletext = document.createElement('div');\n",
|
|
" titletext.classList = 'ui-dialog-title';\n",
|
|
" titletext.setAttribute(\n",
|
|
" 'style',\n",
|
|
" 'width: 100%; text-align: center; padding: 3px;'\n",
|
|
" );\n",
|
|
" titlebar.appendChild(titletext);\n",
|
|
" this.root.appendChild(titlebar);\n",
|
|
" this.header = titletext;\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._init_canvas = function () {\n",
|
|
" var fig = this;\n",
|
|
"\n",
|
|
" var canvas_div = (this.canvas_div = document.createElement('div'));\n",
|
|
" canvas_div.setAttribute(\n",
|
|
" 'style',\n",
|
|
" 'border: 1px solid #ddd;' +\n",
|
|
" 'box-sizing: content-box;' +\n",
|
|
" 'clear: both;' +\n",
|
|
" 'min-height: 1px;' +\n",
|
|
" 'min-width: 1px;' +\n",
|
|
" 'outline: 0;' +\n",
|
|
" 'overflow: hidden;' +\n",
|
|
" 'position: relative;' +\n",
|
|
" 'resize: both;'\n",
|
|
" );\n",
|
|
"\n",
|
|
" function on_keyboard_event_closure(name) {\n",
|
|
" return function (event) {\n",
|
|
" return fig.key_event(event, name);\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" canvas_div.addEventListener(\n",
|
|
" 'keydown',\n",
|
|
" on_keyboard_event_closure('key_press')\n",
|
|
" );\n",
|
|
" canvas_div.addEventListener(\n",
|
|
" 'keyup',\n",
|
|
" on_keyboard_event_closure('key_release')\n",
|
|
" );\n",
|
|
"\n",
|
|
" this._canvas_extra_style(canvas_div);\n",
|
|
" this.root.appendChild(canvas_div);\n",
|
|
"\n",
|
|
" var canvas = (this.canvas = document.createElement('canvas'));\n",
|
|
" canvas.classList.add('mpl-canvas');\n",
|
|
" canvas.setAttribute('style', 'box-sizing: content-box;');\n",
|
|
"\n",
|
|
" this.context = canvas.getContext('2d');\n",
|
|
"\n",
|
|
" var backingStore =\n",
|
|
" this.context.backingStorePixelRatio ||\n",
|
|
" this.context.webkitBackingStorePixelRatio ||\n",
|
|
" this.context.mozBackingStorePixelRatio ||\n",
|
|
" this.context.msBackingStorePixelRatio ||\n",
|
|
" this.context.oBackingStorePixelRatio ||\n",
|
|
" this.context.backingStorePixelRatio ||\n",
|
|
" 1;\n",
|
|
"\n",
|
|
" this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
"\n",
|
|
" var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
|
|
" 'canvas'\n",
|
|
" ));\n",
|
|
" rubberband_canvas.setAttribute(\n",
|
|
" 'style',\n",
|
|
" 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
|
|
" );\n",
|
|
"\n",
|
|
" // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
|
|
" if (this.ResizeObserver === undefined) {\n",
|
|
" if (window.ResizeObserver !== undefined) {\n",
|
|
" this.ResizeObserver = window.ResizeObserver;\n",
|
|
" } else {\n",
|
|
" var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
|
|
" this.ResizeObserver = obs.ResizeObserver;\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
|
|
" var nentries = entries.length;\n",
|
|
" for (var i = 0; i < nentries; i++) {\n",
|
|
" var entry = entries[i];\n",
|
|
" var width, height;\n",
|
|
" if (entry.contentBoxSize) {\n",
|
|
" if (entry.contentBoxSize instanceof Array) {\n",
|
|
" // Chrome 84 implements new version of spec.\n",
|
|
" width = entry.contentBoxSize[0].inlineSize;\n",
|
|
" height = entry.contentBoxSize[0].blockSize;\n",
|
|
" } else {\n",
|
|
" // Firefox implements old version of spec.\n",
|
|
" width = entry.contentBoxSize.inlineSize;\n",
|
|
" height = entry.contentBoxSize.blockSize;\n",
|
|
" }\n",
|
|
" } else {\n",
|
|
" // Chrome <84 implements even older version of spec.\n",
|
|
" width = entry.contentRect.width;\n",
|
|
" height = entry.contentRect.height;\n",
|
|
" }\n",
|
|
"\n",
|
|
" // Keep the size of the canvas and rubber band canvas in sync with\n",
|
|
" // the canvas container.\n",
|
|
" if (entry.devicePixelContentBoxSize) {\n",
|
|
" // Chrome 84 implements new version of spec.\n",
|
|
" canvas.setAttribute(\n",
|
|
" 'width',\n",
|
|
" entry.devicePixelContentBoxSize[0].inlineSize\n",
|
|
" );\n",
|
|
" canvas.setAttribute(\n",
|
|
" 'height',\n",
|
|
" entry.devicePixelContentBoxSize[0].blockSize\n",
|
|
" );\n",
|
|
" } else {\n",
|
|
" canvas.setAttribute('width', width * fig.ratio);\n",
|
|
" canvas.setAttribute('height', height * fig.ratio);\n",
|
|
" }\n",
|
|
" canvas.setAttribute(\n",
|
|
" 'style',\n",
|
|
" 'width: ' + width + 'px; height: ' + height + 'px;'\n",
|
|
" );\n",
|
|
"\n",
|
|
" rubberband_canvas.setAttribute('width', width);\n",
|
|
" rubberband_canvas.setAttribute('height', height);\n",
|
|
"\n",
|
|
" // And update the size in Python. We ignore the initial 0/0 size\n",
|
|
" // that occurs as the element is placed into the DOM, which should\n",
|
|
" // otherwise not happen due to the minimum size styling.\n",
|
|
" if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
|
|
" fig.request_resize(width, height);\n",
|
|
" }\n",
|
|
" }\n",
|
|
" });\n",
|
|
" this.resizeObserverInstance.observe(canvas_div);\n",
|
|
"\n",
|
|
" function on_mouse_event_closure(name) {\n",
|
|
" return function (event) {\n",
|
|
" return fig.mouse_event(event, name);\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mousedown',\n",
|
|
" on_mouse_event_closure('button_press')\n",
|
|
" );\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mouseup',\n",
|
|
" on_mouse_event_closure('button_release')\n",
|
|
" );\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'dblclick',\n",
|
|
" on_mouse_event_closure('dblclick')\n",
|
|
" );\n",
|
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mousemove',\n",
|
|
" on_mouse_event_closure('motion_notify')\n",
|
|
" );\n",
|
|
"\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mouseenter',\n",
|
|
" on_mouse_event_closure('figure_enter')\n",
|
|
" );\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mouseleave',\n",
|
|
" on_mouse_event_closure('figure_leave')\n",
|
|
" );\n",
|
|
"\n",
|
|
" canvas_div.addEventListener('wheel', function (event) {\n",
|
|
" if (event.deltaY < 0) {\n",
|
|
" event.step = 1;\n",
|
|
" } else {\n",
|
|
" event.step = -1;\n",
|
|
" }\n",
|
|
" on_mouse_event_closure('scroll')(event);\n",
|
|
" });\n",
|
|
"\n",
|
|
" canvas_div.appendChild(canvas);\n",
|
|
" canvas_div.appendChild(rubberband_canvas);\n",
|
|
"\n",
|
|
" this.rubberband_context = rubberband_canvas.getContext('2d');\n",
|
|
" this.rubberband_context.strokeStyle = '#000000';\n",
|
|
"\n",
|
|
" this._resize_canvas = function (width, height, forward) {\n",
|
|
" if (forward) {\n",
|
|
" canvas_div.style.width = width + 'px';\n",
|
|
" canvas_div.style.height = height + 'px';\n",
|
|
" }\n",
|
|
" };\n",
|
|
"\n",
|
|
" // Disable right mouse context menu.\n",
|
|
" this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
|
|
" event.preventDefault();\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 toolbar = document.createElement('div');\n",
|
|
" toolbar.classList = 'mpl-toolbar';\n",
|
|
" this.root.appendChild(toolbar);\n",
|
|
"\n",
|
|
" function on_click_closure(name) {\n",
|
|
" return function (_event) {\n",
|
|
" return fig.toolbar_button_onclick(name);\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" function on_mouseover_closure(tooltip) {\n",
|
|
" return function (event) {\n",
|
|
" if (!event.currentTarget.disabled) {\n",
|
|
" return fig.toolbar_button_onmouseover(tooltip);\n",
|
|
" }\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" fig.buttons = {};\n",
|
|
" var buttonGroup = document.createElement('div');\n",
|
|
" buttonGroup.classList = 'mpl-button-group';\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",
|
|
" /* Instead of a spacer, we start a new button group. */\n",
|
|
" if (buttonGroup.hasChildNodes()) {\n",
|
|
" toolbar.appendChild(buttonGroup);\n",
|
|
" }\n",
|
|
" buttonGroup = document.createElement('div');\n",
|
|
" buttonGroup.classList = 'mpl-button-group';\n",
|
|
" continue;\n",
|
|
" }\n",
|
|
"\n",
|
|
" var button = (fig.buttons[name] = document.createElement('button'));\n",
|
|
" button.classList = 'mpl-widget';\n",
|
|
" button.setAttribute('role', 'button');\n",
|
|
" button.setAttribute('aria-disabled', 'false');\n",
|
|
" button.addEventListener('click', on_click_closure(method_name));\n",
|
|
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
|
|
"\n",
|
|
" var icon_img = document.createElement('img');\n",
|
|
" icon_img.src = '_images/' + image + '.png';\n",
|
|
" icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
|
|
" icon_img.alt = tooltip;\n",
|
|
" button.appendChild(icon_img);\n",
|
|
"\n",
|
|
" buttonGroup.appendChild(button);\n",
|
|
" }\n",
|
|
"\n",
|
|
" if (buttonGroup.hasChildNodes()) {\n",
|
|
" toolbar.appendChild(buttonGroup);\n",
|
|
" }\n",
|
|
"\n",
|
|
" var fmt_picker = document.createElement('select');\n",
|
|
" fmt_picker.classList = 'mpl-widget';\n",
|
|
" toolbar.appendChild(fmt_picker);\n",
|
|
" this.format_dropdown = fmt_picker;\n",
|
|
"\n",
|
|
" for (var ind in mpl.extensions) {\n",
|
|
" var fmt = mpl.extensions[ind];\n",
|
|
" var option = document.createElement('option');\n",
|
|
" option.selected = fmt === mpl.default_extension;\n",
|
|
" option.innerHTML = fmt;\n",
|
|
" fmt_picker.appendChild(option);\n",
|
|
" }\n",
|
|
"\n",
|
|
" var status_bar = document.createElement('span');\n",
|
|
" status_bar.classList = 'mpl-message';\n",
|
|
" toolbar.appendChild(status_bar);\n",
|
|
" this.message = status_bar;\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",
|
|
"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",
|
|
"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], msg['forward']);\n",
|
|
" fig.send_message('refresh', {});\n",
|
|
" }\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
|
|
" var x0 = msg['x0'] / fig.ratio;\n",
|
|
" var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
|
|
" var x1 = msg['x1'] / fig.ratio;\n",
|
|
" var y1 = (fig.canvas.height - msg['y1']) / fig.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,\n",
|
|
" 0,\n",
|
|
" fig.canvas.width / fig.ratio,\n",
|
|
" fig.canvas.height / fig.ratio\n",
|
|
" );\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",
|
|
" fig.rubberband_canvas.style.cursor = msg['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.handle_history_buttons = function (fig, msg) {\n",
|
|
" for (var key in msg) {\n",
|
|
" if (!(key in fig.buttons)) {\n",
|
|
" continue;\n",
|
|
" }\n",
|
|
" fig.buttons[key].disabled = !msg[key];\n",
|
|
" fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
|
|
" }\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
|
|
" if (msg['mode'] === 'PAN') {\n",
|
|
" fig.buttons['Pan'].classList.add('active');\n",
|
|
" fig.buttons['Zoom'].classList.remove('active');\n",
|
|
" } else if (msg['mode'] === 'ZOOM') {\n",
|
|
" fig.buttons['Pan'].classList.remove('active');\n",
|
|
" fig.buttons['Zoom'].classList.add('active');\n",
|
|
" } else {\n",
|
|
" fig.buttons['Pan'].classList.remove('active');\n",
|
|
" fig.buttons['Zoom'].classList.remove('active');\n",
|
|
" }\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",
|
|
" var img = evt.data;\n",
|
|
" if (img.type !== 'image/png') {\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",
|
|
" img.type = 'image/png';\n",
|
|
" }\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",
|
|
"\n",
|
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
" img\n",
|
|
" );\n",
|
|
" fig.updated_canvas_event();\n",
|
|
" fig.waiting = false;\n",
|
|
" return;\n",
|
|
" } else if (\n",
|
|
" typeof evt.data === 'string' &&\n",
|
|
" evt.data.slice(0, 21) === 'data:image/png;base64'\n",
|
|
" ) {\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(\n",
|
|
" \"No handler for the '\" + msg_type + \"' message type: \",\n",
|
|
" msg\n",
|
|
" );\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(\n",
|
|
" \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
|
|
" e,\n",
|
|
" e.stack,\n",
|
|
" msg\n",
|
|
" );\n",
|
|
" }\n",
|
|
" }\n",
|
|
" };\n",
|
|
"};\n",
|
|
"\n",
|
|
"// from https://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",
|
|
" }\n",
|
|
" if (e.target) {\n",
|
|
" targ = e.target;\n",
|
|
" } else if (e.srcElement) {\n",
|
|
" targ = e.srcElement;\n",
|
|
" }\n",
|
|
" if (targ.nodeType === 3) {\n",
|
|
" // defeat Safari bug\n",
|
|
" targ = targ.parentNode;\n",
|
|
" }\n",
|
|
"\n",
|
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
" var boundingRect = targ.getBoundingClientRect();\n",
|
|
" var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
|
|
" var y = e.pageY - (boundingRect.top + document.body.scrollTop);\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",
|
|
" * https://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",
|
|
" }\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",
|
|
" this.canvas.focus();\n",
|
|
" this.canvas_div.focus();\n",
|
|
" }\n",
|
|
"\n",
|
|
" var x = canvas_pos.x * this.ratio;\n",
|
|
" var y = canvas_pos.y * this.ratio;\n",
|
|
"\n",
|
|
" this.send_message(name, {\n",
|
|
" x: x,\n",
|
|
" y: y,\n",
|
|
" button: event.button,\n",
|
|
" step: event.step,\n",
|
|
" guiEvent: simpleKeys(event),\n",
|
|
" });\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",
|
|
" // Prevent repeat events\n",
|
|
" if (name === 'key_press') {\n",
|
|
" if (event.key === this._key) {\n",
|
|
" return;\n",
|
|
" } else {\n",
|
|
" this._key = event.key;\n",
|
|
" }\n",
|
|
" }\n",
|
|
" if (name === 'key_release') {\n",
|
|
" this._key = null;\n",
|
|
" }\n",
|
|
"\n",
|
|
" var value = '';\n",
|
|
" if (event.ctrlKey && event.key !== 'Control') {\n",
|
|
" value += 'ctrl+';\n",
|
|
" }\n",
|
|
" else if (event.altKey && event.key !== 'Alt') {\n",
|
|
" value += 'alt+';\n",
|
|
" }\n",
|
|
" else if (event.shiftKey && event.key !== 'Shift') {\n",
|
|
" value += 'shift+';\n",
|
|
" }\n",
|
|
"\n",
|
|
" value += 'k' + event.key;\n",
|
|
"\n",
|
|
" this._key_event_extra(event, name);\n",
|
|
"\n",
|
|
" this.send_message(name, { key: value, 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",
|
|
"\n",
|
|
"///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
|
|
"// prettier-ignore\n",
|
|
"var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
|
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o\", \"download\"]];\n",
|
|
"\n",
|
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\", \"webp\"];\n",
|
|
"\n",
|
|
"mpl.default_extension = \"png\";/* global mpl */\n",
|
|
"\n",
|
|
"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.binaryType = comm.kernel.ws.binaryType;\n",
|
|
" ws.readyState = comm.kernel.ws.readyState;\n",
|
|
" function updateReadyState(_event) {\n",
|
|
" if (comm.kernel.ws) {\n",
|
|
" ws.readyState = comm.kernel.ws.readyState;\n",
|
|
" } else {\n",
|
|
" ws.readyState = 3; // Closed state.\n",
|
|
" }\n",
|
|
" }\n",
|
|
" comm.kernel.ws.addEventListener('open', updateReadyState);\n",
|
|
" comm.kernel.ws.addEventListener('close', updateReadyState);\n",
|
|
" comm.kernel.ws.addEventListener('error', updateReadyState);\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",
|
|
" var data = msg['content']['data'];\n",
|
|
" if (data['blob'] !== undefined) {\n",
|
|
" data = {\n",
|
|
" data: new Blob(msg['buffers'], { type: data['blob'] }),\n",
|
|
" };\n",
|
|
" }\n",
|
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
" ws.onmessage(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 = document.getElementById(id);\n",
|
|
" var ws_proxy = comm_websocket_adapter(comm);\n",
|
|
"\n",
|
|
" function ondownload(figure, _format) {\n",
|
|
" window.open(figure.canvas.toDataURL());\n",
|
|
" }\n",
|
|
"\n",
|
|
" var fig = new mpl.figure(id, ws_proxy, ondownload, element);\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;\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",
|
|
" fig.cell_info[0].output_area.element.on(\n",
|
|
" 'cleared',\n",
|
|
" { fig: fig },\n",
|
|
" fig._remove_fig_handler\n",
|
|
" );\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_close = function (fig, msg) {\n",
|
|
" var width = fig.canvas.width / fig.ratio;\n",
|
|
" fig.cell_info[0].output_area.element.off(\n",
|
|
" 'cleared',\n",
|
|
" fig._remove_fig_handler\n",
|
|
" );\n",
|
|
" fig.resizeObserverInstance.unobserve(fig.canvas_div);\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.innerHTML =\n",
|
|
" '<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 / this.ratio;\n",
|
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
" this.cell_info[1]['text/html'] =\n",
|
|
" '<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 () {\n",
|
|
" fig.push_to_output();\n",
|
|
" }, 1000);\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._init_toolbar = function () {\n",
|
|
" var fig = this;\n",
|
|
"\n",
|
|
" var toolbar = document.createElement('div');\n",
|
|
" toolbar.classList = 'btn-toolbar';\n",
|
|
" this.root.appendChild(toolbar);\n",
|
|
"\n",
|
|
" function on_click_closure(name) {\n",
|
|
" return function (_event) {\n",
|
|
" return fig.toolbar_button_onclick(name);\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" function on_mouseover_closure(tooltip) {\n",
|
|
" return function (event) {\n",
|
|
" if (!event.currentTarget.disabled) {\n",
|
|
" return fig.toolbar_button_onmouseover(tooltip);\n",
|
|
" }\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" fig.buttons = {};\n",
|
|
" var buttonGroup = document.createElement('div');\n",
|
|
" buttonGroup.classList = 'btn-group';\n",
|
|
" var button;\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",
|
|
" /* Instead of a spacer, we start a new button group. */\n",
|
|
" if (buttonGroup.hasChildNodes()) {\n",
|
|
" toolbar.appendChild(buttonGroup);\n",
|
|
" }\n",
|
|
" buttonGroup = document.createElement('div');\n",
|
|
" buttonGroup.classList = 'btn-group';\n",
|
|
" continue;\n",
|
|
" }\n",
|
|
"\n",
|
|
" button = fig.buttons[name] = document.createElement('button');\n",
|
|
" button.classList = 'btn btn-default';\n",
|
|
" button.href = '#';\n",
|
|
" button.title = name;\n",
|
|
" button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
|
|
" button.addEventListener('click', on_click_closure(method_name));\n",
|
|
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
|
|
" buttonGroup.appendChild(button);\n",
|
|
" }\n",
|
|
"\n",
|
|
" if (buttonGroup.hasChildNodes()) {\n",
|
|
" toolbar.appendChild(buttonGroup);\n",
|
|
" }\n",
|
|
"\n",
|
|
" // Add the status bar.\n",
|
|
" var status_bar = document.createElement('span');\n",
|
|
" status_bar.classList = 'mpl-message pull-right';\n",
|
|
" toolbar.appendChild(status_bar);\n",
|
|
" this.message = status_bar;\n",
|
|
"\n",
|
|
" // Add the close button to the window.\n",
|
|
" var buttongrp = document.createElement('div');\n",
|
|
" buttongrp.classList = 'btn-group inline pull-right';\n",
|
|
" button = document.createElement('button');\n",
|
|
" button.classList = 'btn btn-mini btn-primary';\n",
|
|
" button.href = '#';\n",
|
|
" button.title = 'Stop Interaction';\n",
|
|
" button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
|
|
" button.addEventListener('click', function (_evt) {\n",
|
|
" fig.handle_close(fig, {});\n",
|
|
" });\n",
|
|
" button.addEventListener(\n",
|
|
" 'mouseover',\n",
|
|
" on_mouseover_closure('Stop Interaction')\n",
|
|
" );\n",
|
|
" buttongrp.appendChild(button);\n",
|
|
" var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
|
|
" titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._remove_fig_handler = function (event) {\n",
|
|
" var fig = event.data.fig;\n",
|
|
" if (event.target !== this) {\n",
|
|
" // Ignore bubbled events from children.\n",
|
|
" return;\n",
|
|
" }\n",
|
|
" fig.close_ws(fig, {});\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._root_extra_style = function (el) {\n",
|
|
" el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._canvas_extra_style = function (el) {\n",
|
|
" // this is important to make the div 'focusable\n",
|
|
" el.setAttribute('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",
|
|
" } else {\n",
|
|
" // location in version 2\n",
|
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
" }\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._key_event_extra = function (event, _name) {\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",
|
|
"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(\n",
|
|
" 'matplotlib',\n",
|
|
" mpl.mpl_figure_comm\n",
|
|
" );\n",
|
|
"}\n"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.Javascript object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAAPACAYAAABq3NR5AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFAKADAAQAAAABAAADwAAAAADIn4SfAABAAElEQVR4AezdCZwcZZ047u9cmWRyAbkgBCRAOOWSQ1AUEEE5xEUFUf+7gCIsKuqKoq7+cFU8UBAVPBcU1FURXVFBFGUhnMohoHJf4QpkkgDJJJNjrn9VJzPTPV2TdDJXd89Tn0+nq956z+et6en5po6armQJCwECBAgQIECAAAECBAgQIECAAAECVSlQW5WjMigCBAgQIECAAAECBAgQIECAAAECBHICAoAOBAIECBAgQIAAAQIECBAgQIAAAQJVLCAAWMWTa2gECBAgQIAAAQIECBAgQIAAAQIEBAAdAwQIECBAgAABAgQIECBAgAABAgSqWEAAsIon19AIECBAgAABAgQIECBAgAABAgQICAA6BggQIECAAAECBAgQIECAAAECBAhUsYAAYBVPrqERIECAAAECBAgQIECAAAECBAgQEAB0DBAgQIAAAQIECBAgQIAAAQIECBCoYgEBwCqeXEMjQIAAAQIECBAgQIAAAQIECBAgIADoGCBAgAABAgQIECBAgAABAgQIECBQxQICgFU8uYZGgAABAgQIECBAgAABAgQIECBAQADQMUCAAAECBAgQIECAAAECBAgQIECgigUEAKt4cg2NAAECBAgQIECAAAECBAgQIECAgACgY4AAAQIECBAgQIAAAQIECBAgQIBAFQsIAFbx5BoaAQIECBAgQIAAAQIECBAgQIAAAQFAxwABAgQIECBAgAABAgQIECBAgACBKhYQAKziyTU0AgQIECBAgAABAgQIECBAgAABAgKAjgECBAgQIECAAAECBAgQIECAAAECVSwgAFjFk2toBAgQIECAAAECBAgQIECAAAECBAQAHQMECBAgQIAAAQIECBAgQIAAAQIEqlhAALCKJ9fQCBAgQIAAAQIECBAgQIAAAQIECAgAOgYIECBAgAABAgQIECBAgAABAgQIVLGAAGAVT66hESBAgAABAgQIECBAgAABAgQIEBAAdAwQIECAAAECBAgQIECAAAECBAgQqGIBAcAqnlxDI0CAAAECBAgQIECAAAECBAgQICAA6BggQIAAAQIECBAgQIAAAQIECBAgUMUCAoBVPLmGRoAAAQIECBAgQIAAAQIECBAgQEAA0DFAgAABAgQIECBAgAABAgQIECBAoIoFBACreHINjQABAgQIECBAgAABAgQIECBAgIAAoGOAAAECBAgQIECAAAECBAgQIECAQBULCABW8eQaGgECBAgQIECAAAECBAgQIECAAAEBQMcAAQIECBAgQIAAAQIECBAgQIAAgSoWEACs4sk1NAIECBAgQIAAAQIECBAgQIAAAQICgI4BAgQIECBAgAABAgQIECBAgAABAlUsIABYxZNraAQIECBAgAABAgQIECBAgAABAgQEAB0DBAgQIECAAAECBAgQIECAAAECBKpYQACwiifX0AgQIECAAAECBAgQIECAAAECBAgIADoGCBAgQIAAAQIECBAgQIAAAQIECFSxgABgFU+uoREgQIAAAQIECBAgQIAAAQIECBAQAHQMECBAgAABAgQIECBAgAABAgQIEKhiAQHAKp5cQyNAgAABAgQIECBAgAABAgQIECAgAOgYIECAAAECBAgQIECAAAECBAgQIFDFAgKAVTy5hkaAAAECBAgQIECAAAECBAgQIEBAANAxQIAAAQIECBAgQIAAAQIECBAgQKCKBQQAq3hyDY0AAQIECBAgQIAAAQIECBAgQICAAKBjgAABAgQIECBAgAABAgQIECBAgEAVCwgAVvHkGhoBAgQIECBAgAABAgQIECBAgAABAUDHAAECBAgQIECAAAECBAgQIECAAIEqFhAArOLJNTQCBAgQIECAAAECBAgQIECAAAECAoCOAQIECBAgQIAAAQIECBAgQIAAAQJVLCAAWMWTa2gECBAgQIAAAQIECBAgQIAAAQIEBAAdAwQIECBAgAABAgQIECBAgAABAgSqWEAAsIon19AIECBAgAABAgQIECBAgAABAgQICAA6BggQIECAAAECBAgQIECAAAECBAhUsYAAYBVPrqERIECAAAECBAgQIECAAAECBAgQEAB0DBAgQIAAAQIECBAgQIAAAQIECBCoYgEBwCqeXEMjQIAAAQIECBAgQIAAAQIECBAgIADoGCBAgAABAgQIECBAgAABAgQIECBQxQICgFU8uYZGgAABAgQIECBAgAABAgQIECBAQADQMUCAAAECBAgQIECAAAECBAgQIECgigUEAKt4cg2NAAECBAgQIECAAAECBAgQIECAgACgY4AAAQIECBAgQIAAAQIECBAgQIBAFQsIAFbx5BoaAQIECBAgQIAAAQIECBAgQIAAAQFAxwABAgQIECBAgAABAgQIECBAgACBKhYQAKziyTU0AgQIECBAgAABAgQIECBAgAABAgKAjgECBAgQIECAAAECBAgQIECAAAECVSwgAFjFk2toBAgQIECAAAECBAgQIECAAAECBAQAHQMECBAgQIAAAQIECBAgQIAAAQIEqlhAALCKJ9fQCBAgQIAAAQIECBAgQIAAAQIECAgAOgYIECBAgAABAgQIECBAgAABAgQIVLGAAGAVT66hESBAgAABAgQIECBAgAABAgQIEBAAdAwQIECAAAECBAgQIECAAAECBAgQqGIBAcAqnlxDI0CAAAECBAgQIECAAAECBAgQICAA6BggQIAAAQIECBAgQIAAAQIECBAgUMUCAoBVPLmGRoAAAQIECBAgQIAAAQIECBAgQEAA0DFAgAABAgQIECBAgAABAgQIECBAoIoFBACreHINjQABAgQIECBAgAABAgQIECBAgIAAoGOAAAECBAgQIECAAAECBAgQIECAQBULCABW8eQaGgECBAgQIECAAAECBAgQIECAAAEBQMcAAQIECBAgQIAAAQIECBAgQIAAgSoWEACs4sk1NAIECBAgQIAAAQIECBAgQIAAAQICgI4BAgQIECBAgAABAgQIECBAgAABAlUsIABYxZNraAQIECBAgAABAgQIECBAgAABAgQEAB0DBAgQIECAAAECBAgQIECAAAECBKpYQACwiifX0AgQIECAAAECBAgQIECAAAECBAgIADoGCBAgQIAAAQIECBAgQIAAAQIECFSxgABgFU+uoREgQIAAAQIECBAgQIAAAQIECBAQAHQMECBAgAABAgQIECBAgAABAgQIEKhiAQHAKp5cQyNAgAABAgQIECBAgAABAgQIECAgAOgYIECAAAECBAgQIECAAAECBAgQIFDFAgKAVTy5hkaAAAECBAgQIECAAAECBAgQIEBAANAxQIAAAQIECBAgQIAAAQIECBAgQKCKBQQAq3hyDY0AAQIECBAgQIAAAQIECBAgQICAAKBjgAABAgQIECBAgAABAgQIECBAgEAVCwgAVvHkGhoBAgQIECBAgAABAgQIECBAgAABAUDHAAECBAgQIECAAAECBAgQIECAAIEqFhAArOLJNTQCBAgQIECAAAECBAgQIECAAAECAoCOAQIECBAgQIAAAQIECBAgQIAAAQJVLCAAWMWTa2gECBAgQIAAAQIECBAgQIAAAQIEBAAdAwQIECBAgAABAgQIECBAgAABAgSqWEAAsIon19AIECBAgAABAgQIECBAgAABAgQICAA6BggQIECAAAECBAgQIECAAAECBAhUsYAAYBVPrqERIECAAAECBAgQIECAAAECBAgQEAB0DBAgQIAAAQIECBAgQIAAAQIECBCoYgEBwCqeXEMjQIAAAQIECBAgQIAAAQIECBAgIADoGCBAgAABAgQIECBAgAABAgQIECBQxQICgFU8uYZGgAABAgQIECBAgAABAgQIECBAQADQMUCAAAECBAgQIECAAAECBAgQIECgigUEAKt4cg2NAAECBAgQIECAAAECBAgQIECAgACgY4AAAQIECBAgQIAAAQIECBAgQIBAFQsIAFbx5BoaAQIECBAgQIAAAQIECBAgQIAAAQFAxwABAgQIECBAgAABAgQIECBAgACBKhaor+KxGVoZC6xcuTL+8Y9/5Ho4bdq0qK93KJbxdOkaAQIECBAgQIAAAQIECFSoQHt7eyxcuDDX+9122y3Gjh1boSPR7YEIiLoMRE/ZjRZIg3/77bffRpdXkAABAgQIECBAgAABAgQIENgwgdtvvz323XffDSskd1UIuAS4KqbRIAgQIECAAAECBAgQIECAAAECBAhkCzgDMNtF6hALpJf9di/p/0BsscUW3ZveCRAgMOwCT7ztuGhPLouoTz6bZv/yimFvX4ME+hN4+1Vvj8UrFseUcVPi8qMv7y+bdAIECBCoZoHvHRyxfEHE+BkRp91QzSM1tiESeO6553quwMv/W3yImlNtmQoIAJbpxFR7t/Lv+ZcG/2bNmlXtQzY+AgTKWGBFY2O0NzREffLu86iMJ2oUdm3slLHR0NoQY5vGOjZH4fwbMgECBHICmzRE1CUX701M3v3d5KAYoED+3+IDrErxChMQAKywCdNdAgQIEBh8gekf/Wh0rlwRtWPHDX7laiQwAIGP7P2RWNm+MsbWu1n3ABgVJUCAQGULHPa5iLbWiIamyh6H3hMgMKICAoAjyq9xAgQIECgHgclvOrocuqEPBIoEjtr2qKI0CQQIECAwygR2P26UDdhwCRAYCgEPARkKVXUSIECAAAECBAgQIECAAAECBAgQKBMBAcAymQjdIECAAAECBAgQIECAAAECBAgQIDAUAi4BHgpVdRIgQIBARQmsevyJiI725Abb9dG47eyK6rvOVrfAE0ueiI7OjuTe73Uxe7Jjs7pn2+gIECDQj8CiRyI6k+8ptcmf71Pn9JNJMgECBNYtIAC4bh97CRAgQGAUCDx18snRvmBB1M+YEXPm3jAKRmyIlSJwyrWnRHNrc0xvmh7XHXddpXRbPwkQIEBgMAUuOyaiZX7yFOCZEWc+MJg1q4sAgVEk4BLgUTTZhkqAAAECBAgQIECAAAECBAgQIDD6BAQAR9+cGzEBAgQIECBAgAABAgQIECBAgMAoEhAAHEWTbagECBAgQIAAAQIECBAgQIAAAQKjT0AAcPTNuRETIECAAAECBAgQIECAAAECBAiMIgEBwFE02YZKgAABAgQIECBAgAABAgQIECAw+gQEAEffnBsxAQIECBAgQIAAAQIECBAgQIDAKBIQABxFk22oBAgQIECAAAECBAgQIECAAAECo09AAHD0zbkREyBAgAABAgQIECBAgAABAgQIjCIBAcBRNNmGSoAAAQIECBAgQIAAAQIECBAgMPoE6kffkI2YAAECBAgUCmxzxS8iOjsjav2/WKGMrZEW+PlRP4+Oro6oq6kb6a5onwABAgRGSuDU65PvKR3J9xS/C0ZqCrRLoBoEBACrYRaNgQABAgQGJNAwffqAyitMYKgEpjVNG6qq1UuAAAEClSIwcfNK6al+EiBQxgJOdSjjydE1AgQIECBAgAABAgQIECBAgAABAgMVEAAcqKDyBAgQIECAAAECBAgQIECAAAECBMpYwCXAZTw5ukaAAAECwyPw4uW/iM7W1qhtaopN33788DSqFQIlCFzx8BXR2tYaTQ1NcdwOx5VQQhYCBAgQqDqBO38YsXp5xJjxEfucXHXDMyACBIZHQABweJy1QoAAAQJlLLDo29+O9gULon7GDAHAMp6n0di179773WhubY7pTdMFAEfjAWDMBAgQSAXmfiWiZX7ExJkCgI4IAgQ2WsAlwBtNt2EFm5ub46qrroqzzz47jjjiiJg6dWrU1NTkXieddNKGVZbkvuaaa+LYY4+NWbNmRWNjY+493U7TS13a29vju9/9brzmNa+JadOmxbhx42K77baL0047Le67775Sq5GPAAECBAgQIECAAAECBAgQIECgjAWcAThMkzMjOatkMJbOzs449dRT45JLLimo7tlnn430deWVV8Ypp5wS3/ve96K2tv/47qJFi+LII4+MO+64o6Cexx9/PL7//e/HZZddFhdddFGuroIMNggQIECAAAECBAgQIECAAAECBCpKoP8IUUUNo7I6u/XWW8fhhx++UZ3+1Kc+1RP822uvveJnP/tZ3H777bn3dDtdLr744vj0pz/db/0dHR25swe7g39vectbcmcO/vWvf41vfvObMX369Fi1alXuTMANOaOw3wbtIECAAAECBAgQIECAAAECBAgQGDEBZwAOE3166e++++6be6VnA86bNy9mz569Qa0//PDDcd555+XK7LPPPnHjjTfmLttNE9K6jznmmDjooIPizjvvjK9+9avx7ne/O7bffvuiNtKz+26++eZc+vve97741re+1ZNnv/32y12ivPfee8fSpUvjgx/8YDzwwANRX+9Q6UGyQoAAAQIECBAgQIAAAQIECBCoIAFnAA7TZH32s5+No48+OgZyKfDXv/71SO/bly4XXnhhT/CvewhNydMr0/R0SfNdcMEF3bsK3ruDiJtttlkuUFiwM9lIg4af/OQnc8mPPvpo/PrXv+6bxTYBAgQIECBAgAABAgQIECBAgECFCAgAVshEdXV1xW9+85tcb3faaafYf//9M3uepu+44465fWn+tFz+kp5FmJ7Rly7HH398pEHDrCX/wSQCgFlC0ggQIECAAAECBAgQIECAAAEClSEgAFgZ8xRPPPFEzJ+fPPo9WdLLfNe1dO9PHwqSXmqcv3Rf+pumdefL39+9vvnmm8cOO+yQ27zlllu6k70TIECAAAECBAgQIECAAAECBAhUmIAbu1XIhN1///09PU3PAFzXkr8/Pdsv/16DG1pPesbg008/HcuXL4/x48evq1n7CBAgQIAAAQIECBAg0K9AenVSeoFSeo1Sbj33nm6vSU8LrtnfFZ1pvjT/2rR0pTtffvnOtRV25yvKk+5IljTf2qw99a7Zs+bfdF/hUpSQK5+fp2+OvnWs6X1viaL9fStIsmaV2bGzMxqSfW3J+0PPLumtMM3fp46+5dPMxXkKqsh55Kf0qbKo/Jq8hbnW30Z+C2mf+pQv3J3b6pOlyCY9JvKXPpuZ/e7rU9xG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5QqzisAXa76QDYUbpH5B/azaNzdLAiRAAiRgI1C0QykAi5UCMM9WyFMSIAESiI4AP5lGx4utSYAESMBB4MmpSx1l+XkV5fYT2zvKWUACJEACJEACJEACJEACJEACJEACiSZABWCiiXM+EiCBjCKwvbBYXv1mlWNPgw5pLBUqVHCUs4AESIAESIAESIAESIAESIAESIAEEk2ACsBEE+d8JEACGUXg8te/d93P8P5tXctZSAIkQAIkQAIkQAIkQAIkQAIkQAKJJkAFYKKJcz4SIIGMIQDrv69/2ezYz0OndWbmXwcVFpAACZAACZAACZAACZAACZAACSSLABWAySLPeUmABNKawPY9xdL38emuezi+HYP1u4JhIQmQAAmQAAmQAAmQAAmQAAmQQFIIUAGYFOyclARIIN0JfLZovSD7b6B8fM1x0qBGfmAxr0mABEiABEiABEiABEiABEiABEggaQSoAEwaek5MAiSQrgQW/b5Drn9rrmP5LetVlfaNqjvKWUACJEACJEACJEACJEACJEACJEACySRABWAy6XNuEiCBtCTwwEcLXdf9n2HdmPnXlQwLSYAESIAESIAEYiEwbdo0/bfFPffcE0t39iEBEiABEiABi0CudcYTEiABEiCBsASenbZMvly6ydHugqOaS/M6VR3lLEgPAjVOPFFKd2yXnBo102PBXGXWEBh40EDZsW+H1KhUI2v2zI2SQLYRgJLv+OOPl7vvvluo6Mu2ux/hfqscIOIrFamQE2EHNiMBEiABJwEqAJ1MWEICJEACrgQ27CiSR/632LXu+n5tXMtZmB4EGtz0z/RYKFeZdQSGdx2edXvmhkmABEiABAII1DwwoICXJEACJBA9AboAR8+MPUiABLKQwHql/Dti5FTXnU+6+lipVVDJtY6FJEACJEACJEACJEACJEACJEACJJBsAlQAJvsOcH4SIIGUJ7B19z45Mojy75YT2kmnA+k2mvI3kQskARIgARIggRQkAJdfuP9CRowYoeP9VahQQR9Xrlypy82v2bNnS79+/aR69epSs2ZN+dvf/iaBbUxbHtOPwJ49eyQ3N1ff+5EjRzo2UFRUJHl5ebr+/vvvd9SzgARIgATCEaACMBwh1pMACWQ9gUvGzXZl0LX5AXJZz5audSwkARIgARIgARIoP4Fff/1Vx8br2rWr1KtXT/Lz86Vp06Zy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gNHzYw8SIAFNgC7AWf4gDBo0SH766Se5/vrrBcq+goICQby/rl27ysMPPyxz5syRVq1aZTklbp8ESIAESIAESIAESIAESIAESIAESIAE0pcALQDT9955tvLmzZvLv//9b/3j2aAciARIgARIgARIgARIgARIgARIgARIgARIICUI0AIwJW4DF0ECJEACJEACJEACJEACJEACJEACJEACJEAC8SFABWB8uHJUEiABEiABEiABEiABEiABEiABEiABEiABEkgJAlQApsRt4CJIgARIgARIgARIgARIgARIgARIgARIgARIID4EqACMD1eOSgIkQAIkQAIkQAIkkOYEcnJy9A5KS0vF5/Ol+W64fBIgARIggXQngH+L8G8SpGJFqnPS/X4mev18YhJNnPORAAmQAAmQAAmQAAmkBYFKlSrpdeIDV2FhYVqsmYskARIgARLIXAJ79+61vpAy/0Zl7m65M68JUAHoNVGORwIkQAIkQAIkQAIkkBEEatSoYe1jy5Yt1ocuq5AnJEACJEACJJBAAjt27LBmq1q1qnXOExKIhEBuJI3YhgRIgARIgAQymUB+hw5S2rCh5NSuncnb5N7SkECH2h2kYdWGUrsyn81k3L5q1apJhQoVtOJv165dsmbNGqmt3icKCgp0eTLWxDlJgASykEBeFZGyPOXzyY/vWXj39Zbh9rtt2zbZvHmzhQD/RlFIIBoCfAeJhhbbkgAJkAAJZCSBps89m5H74qbSn8BTfZ5K/02k8Q4QX+nAAw+UtWvXWkpAKAKhFDTxAdN4e1w6CZBAWhGA816ZyJalabVqLrb8BOxx/8xo9erVE7oAGxo8RkqACsBISbEdCZAACZAACZAACZBA1hGoXr26nxIQAPBhrKSkJOtYcMMkQAIkQALJJ1CzZk2pU6dO8hfCFaQdASoA0+6WccEkQAIkQAIkQAIkQAKJJAAlYJs2bQTWf4i/tG/fPisLYyLXwblIgARIgASykwCszhF+olatWpKfn5+dELjrchOgArDcCDkACZAACZAACZAACZBAphOAOzCSgtgTg2T6nrk/EiABEiABEiCBzCFABWDm3EvuhARIgARIIEYCqy+/QkpVhk8kAWE8wBghsltcCFw99WrZsneLTgLCeIBxQcxBSYAESCD1CbxxtkjhJpGCuiJDxqf+erlCEiCBlCRABWBK3hYuigRIgARIIJEEihYskJL16yW3QYNETsu5SCAsgQVbFsiGwg1Sv6B+2LZsQAIkQAIkkKEE1s0V2fmbSPXGGbpBbosESCARBJBKiEICJEACJEACJEACJEACJEACJEACJEACJEACJJChBKgAzNAby22RAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAhQAcjngARIgARIgARIgARIgARIgARIgARIgARIgAQymAAVgBl8c7k1EiABEiABEiABEiABEiABEiABEiABEiABEqACkM8ACZAACZAACZAACZAACZAACZAACZAACZAACWQwASoAM/jmcmskQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkEsEJJAMAiUlJda069ats855QgIkQALJIPD73r1SUlwsuepYZc2aZCyBc5KAK4GizUVSvKdYivYUyRo+m66MWEgCJEACGU9gW7HI7jKRUnXkvwUZf7vjsUH7Z277Z/F4zMUxU5dABZ+S1F0eV5apBL777js54ogjMnV73BcJkAAJkAAJkAAJkAAJkAAJkAAJpByBWbNmSbdu3VJuXVxQ/AnQBTj+jDkDCZAACZAACZAACZAACZAACZAACZAACZAACSSNAC0Ak4Y+uycuKiqSn3/+WUOoV6+e5OZ6643eu3dvPfZnn31WLtDlGSeWvtH0iaRtuDYwBTeWmPgmqFGjRuXilaqdw3FI1LrjuQ4vxy7PWNH2jaZ9pG3DteNzn6gnXiTcvSjvSrwavzzjxNI3mj6Rtg3Vjs98eZ+06PqHuhfRjeTe2qvxyzNOLH2j6RNJ23Bt+Ny7Pz/xKA13L8o7p5fjl2esaPtG0z7StuHa8bkv79MWef9w9yLykdxbejW+GWfKlCmyceNGPVnnzp0lPz/ffWKWZjQBb7UuGY2Km/OSAN5w4ml2nJeXp5fbpEmTci27POPE0jeaPpG0jaSNAQTlX3l5mbFS7RgNh3iuPZ7r8HLs8owVbd9o2kfaNtJ2uNd87uP5xItEcy9iWYlX45dnnFj6RtMn0raRtuMzH8uTFl2fSO9FdKP+2dqr8cszTix9o+kTSdtI2hhqfO4Nifgco7kXsazAy/HLM1a0faNpH2nbSNuBM5/7WJ62yPtEcy8iH/XPll6Nb8Zp0aKF4IeS3QToApzd95+7JwESIAESIAESIAESIAESIAESIAESIAESyHACVABm+A3m9kiABEiABEiABEiABEiABEiABEiABEiABLKbABWA2X3/uXsSIAESIAESIAESIAESIAESIAESIAESIIEMJ8AkIBl+g7k9EghFYM2aNdK0aVPdZPXq1RkbAzAUA9ZlHwE+99l3z7N9x3zms/0JyM7987nPzvue7bvmc5/tTwD3TwKhCdACMDQf1pIACZAACZAACZAACZAACZAACZAACZAACZBAWhOgAjCtbx8XTwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKhCVABGJoPa0mABEiABEiABEiABEiABEiABEiABEiABEggrQkwBmBa3z4ungRIgARIgARIgARIgARIgARIgARIgARIgARCE6AFYGg+rCUBEiABEiABEiABEiABEiABEiABEiABEiCBtCZABWBa3z4ungRIgARIgARIgARIgARIgARIgARIgARIgARCE6ACMDQf1pIACZAACZAACZAACZAACZAACZAACZAACZBAWhOgAjCtbx8XTwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKhCVABGJoPa0mABEiABEiABEiABEiABEiABEiABEiABEggrQlQAZjWt4+LJwESIAESIAESIAESIAESIAESIAESIAESIIHQBKgADM2HtSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQ1gSoAEzr28fFk0BiCLz22mty6aWXSteuXaVy5cpSoUIFGTNmTNDJo20fdCBWkEASCUTzHK9du1aeeOIJ6d+/vzRr1kwqVaokDRs2lNNPP12+/fbbJO6CU5NA5ASieeaLiorkhhtukB49ekjjxo0lPz9fP/PHHHOMjB49WoqLiyOfmC1JIEkEonnm3Zb48MMP67+J8HfRN99849aEZSSQcgSife5btGhhPed41u0/vXr1Srn9cUEkQALBCeQGr2INCZAACewncMcdd8j/t3evIVZVbQCA1/eVXbTSSomgsMhEpSLIpEgTu/zoigVhhZWZEfXH7K4/yiKjm0FUFGaUFib9EsyMKLIypbKMrLTyR3cqFMtLkyL2fWvTOc3ojLrmzJyz15xng80+e6+9z7ue9TbMec/ee3333Xehf//+4cgjjyzWd2eT2n5357KPQKMEUvL4iSeeCPGD4HHHHVcUAQcMGBC++eabsGDBguLfvHnzwrhx4xrVFe9LYK8EUnJ+8+bN4emnnw4jRowIF1xwQYg5v2HDhrB48eIwceLEMH/+/GL9v//1XfNe4WvUEIGUnN85wM8//zzcc889oU+fPmHLli077/aaQGkFOpP3ffv2DTfffPMufYrFQQsBAvkIKADmM1YiJdAwgdmzZ4fjjz8+DBw4MDz44INh6tSpu40ltf1uT2YngQYJpORxLIIsWbIkjB49uk207733Xjj77LPDjTfeGMaOHVtcQdumgRcESiSQkvOHHXZY+OOPP4qrXVt3Yfv27eHcc88Nb7zxRlEAjMVBC4GyCqTkfOs+xCtcr7nmmnDyyScXfx/FK6osBHIR6Eze9+vXL0yfPj2XLoqTAIEOBBQAO4CxmQCBfwXOOeecf1/sxVpq+704pSYE6i6QkseXXnppu/GNGjUqjBkzpiiGrFq1qriNvt2GNhIogUBKzscr++Kt7jsv++67b7jkkkuKgvjatWt33u01gVIJpOR868BnzJgRvvjii/DJJ5+Ehx9+uPUu6wRKL9DZvC99xwRIgMAeBdyXsUciDQg0TuC3334Lr776arj77rvDeeedV9yCW3nuxoQJE5ICi7fw3nrrrWHIkCHF7Srx6o1TTz01PPLII+HPP/9MOpfGBLpToKflfa9evQquWBixEGhPoCfl/I4dO8Lrr79edPOEE05or7u2EQg553ws+sUCYLz9d9iwYUaTwF4L5Jz3W7duLZ7//cADD4Qnn3zS8433etQ1JFAuAZ9GyjUeoiHQRuCII45o87qzLxYuXBjGjx8fNm7cWD1FLPqtWLGi+BdvBVi0aFEYNGhQdb8VAo0S6El5//3334c333yzeHbmiSee2ChS71tygZxzftu2bSF+IPz777/D+vXrw1tvvRXWrFkTrr322uL295LTC69BArnmfCyCXH311cWtv3fccUeD9LxtrgK55n30/uWXX4rf663t44UEL7/8cvH849bbrRMgUF4BVwCWd2xERqCNQJxZNM4wmrqsXLmymHwgFv8OOuig4lvrZcuWFR/Srr/++uJ0X3/9dfEQ902bNqWeXnsC3SqQc97HZ0RdddVVIX5gjBOE7LPPPt1q5eQ9QyC3nI8FwHvvvTfcd9994amnngpfffVVuO2228KsWbN6xoDoRbcL5JTz8Y6MOMFTnOna7/RuT40e/QY55X38Qid+ufPrr78WE97Ezxbx75uPPvqo+KLH54cenao618ME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AIEEAQXABCxNCRAgQIAAAQIECBAgQIAAAQIECOQmoACY24iJlwABAgQIECBAgAABAgQIECBAgECCgAJgApamBAgQIECAAAECBAgQIECAAAECBHITUADMbcTES4AAAQIECBAgQIAAAQIECBAgQCBBQAEwAUtTAgQIECBAgAABAgQIECBAgAABArkJKADmNmLiJUCAAAECBAgQIECAAAECBAgQIJAgoACYgKUpAQIECBAgQIAAAQIECBAgQIAAgdwEFABzGzHxEiBAgAABAgQIECBAgAABAgQIEEgQUABMwNKUAAECBAgQIECAAAECBAgQIECAQG4CCoC5jZh4CRAgQIAAAQIECBAgQIAAAQIECCQIKAAmYGlKgAABAgQIECBAgAABAgQIECBAIDcBBcDcRky8BAgQIECAAAECBAgQIECAAAECBBIEFAATsDQlQIAAAQIECBAgQIAAAQIECBAgkJuAAmBuIyZeAgQIECBAgAABAgQIECBAgAABAgkCCoAJWJoSIECAAAECBAgQIECAAAECBAgQyE1AATC3ERMvAQIECBAgQIAAAQIECBAgQIAAgQQBBcAELE0JECBAgAABAgQIECBAgAABAgQI5CagAJjbiImXAAECBAgQIECAAAECBAgQIECAQIKAAmAClqYECBAgQIAAAQIECBAgQIAAAQIEchNQAMxtxMRLgAABAgQIECBAgAABAgQIECBAIEFAATABS1MCBAgQIECAAAECBAgQIECAAAECuQkoAOY2YuIlQIAAAQIECBAgQIAAAQIECBAgkCCgAJiApSkBAgQIECBAgAABAgQIECBAgACB3AQUAHMbMfESIECAAAECBAgQIECAAAECBAgQSBBQAEzA0pQAAQIECBAgQIAAAQIECBAgQIBAbgIKgLmNmHgJECBAgAABAgQIECBAgAABAgQIJAgoACZgaUqAAAECBAgQIECAAAECBAgQIEAgNwEFwNxGTLwECBAgQIAAAQIECBAgQIAAAQIEEgQUABOwNCVAgAABAgQIECBAgAABAgQIECCQm4ACYG4jJl4CBAgQIECAAAECBAgQIECAAAECCQIKgAlYmhIgQIAAAQIECBAgQIAAAQIECBDITUABMLcREy8BAgQIECBAgAABAgQIECBAgACBBAEFwAQsTQkQIECAAAECBAgQIECAAAECBAjkJqAAmNuIiZcAAQIECBAgQIAAAQIECBAgQIBAgoACYAKWpgQIECBAgAABAgQIECBAgAABAgRyE1AAzG3ExEuAAAECBAgQIECAAAECBAgQIEAgQUABMAFLUwIECBAgQIAAAQIECBAgQIAAAQK5CSgA5jZi4iVAgAABAgQIECBAgAABAgQIECCQIKAAmIClKQECBAgQIECAAAECBAgQIECAAIHcBBQAcxsx8RIgQIAAAQIECBAgQIAAAQIECBBIEFAATMDSlAABAgQIECBAgAABAgQIECBAgEBuAv8D+ddac3H7N/4AAAAASUVORK5CYII=\" width=\"640\">"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"q = np.linspace(0, 100, 10000)\n",
|
|
"ps = np.percentile(cat[n][\"m200\"], q)\n",
|
|
"f = interp1d(q, np.log10(ps))\n",
|
|
"\n",
|
|
"pcuts = [99.99, 95., 65.]\n",
|
|
"\n",
|
|
"\n",
|
|
"colors = plt.rcParams['axes.prop_cycle'].by_key()['color']\n",
|
|
"plt.figure()\n",
|
|
"plt.plot(ps, q)\n",
|
|
"\n",
|
|
"for i, pcut in enumerate(pcuts):\n",
|
|
" N = int((100 - pcut) / 100 * cat[n][\"m200\"].size)\n",
|
|
" plt.axvline(10**float(f(pcut)), ls=\"--\", c=colors[i + 1],\n",
|
|
" label=r\"${}^{{\\rm th}} percentile, {}$\".format(pcut, N), lw=1)\n",
|
|
" plt.axhline(pcut, c=colors[i + 1], ls=\"--\", lw=1)\n",
|
|
"plt.xscale(\"log\")\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 157,
|
|
"id": "de2a2714",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T20:30:43.637731Z",
|
|
"start_time": "2022-11-21T20:30:43.589062Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"ids = np.where(cat[n][\"m200\"] > 10**f(pcuts[2]))[0]\n",
|
|
"ids = np.random.choice(ids, size=3)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 159,
|
|
"id": "2ab2af25",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T20:30:54.506179Z",
|
|
"start_time": "2022-11-21T20:30:53.801870Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"application/javascript": [
|
|
"/* Put everything inside the global mpl namespace */\n",
|
|
"/* global mpl */\n",
|
|
"window.mpl = {};\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(\n",
|
|
" '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",
|
|
"\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 = document.createElement('div');\n",
|
|
" this.root.setAttribute('style', 'display: inline-block');\n",
|
|
" this._root_extra_style(this.root);\n",
|
|
"\n",
|
|
" parent_element.appendChild(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 (fig.ratio !== 1) {\n",
|
|
" fig.send_message('set_device_pixel_ratio', {\n",
|
|
" device_pixel_ratio: fig.ratio,\n",
|
|
" });\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 = document.createElement('div');\n",
|
|
" titlebar.classList =\n",
|
|
" 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
|
|
" var titletext = document.createElement('div');\n",
|
|
" titletext.classList = 'ui-dialog-title';\n",
|
|
" titletext.setAttribute(\n",
|
|
" 'style',\n",
|
|
" 'width: 100%; text-align: center; padding: 3px;'\n",
|
|
" );\n",
|
|
" titlebar.appendChild(titletext);\n",
|
|
" this.root.appendChild(titlebar);\n",
|
|
" this.header = titletext;\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._init_canvas = function () {\n",
|
|
" var fig = this;\n",
|
|
"\n",
|
|
" var canvas_div = (this.canvas_div = document.createElement('div'));\n",
|
|
" canvas_div.setAttribute(\n",
|
|
" 'style',\n",
|
|
" 'border: 1px solid #ddd;' +\n",
|
|
" 'box-sizing: content-box;' +\n",
|
|
" 'clear: both;' +\n",
|
|
" 'min-height: 1px;' +\n",
|
|
" 'min-width: 1px;' +\n",
|
|
" 'outline: 0;' +\n",
|
|
" 'overflow: hidden;' +\n",
|
|
" 'position: relative;' +\n",
|
|
" 'resize: both;'\n",
|
|
" );\n",
|
|
"\n",
|
|
" function on_keyboard_event_closure(name) {\n",
|
|
" return function (event) {\n",
|
|
" return fig.key_event(event, name);\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" canvas_div.addEventListener(\n",
|
|
" 'keydown',\n",
|
|
" on_keyboard_event_closure('key_press')\n",
|
|
" );\n",
|
|
" canvas_div.addEventListener(\n",
|
|
" 'keyup',\n",
|
|
" on_keyboard_event_closure('key_release')\n",
|
|
" );\n",
|
|
"\n",
|
|
" this._canvas_extra_style(canvas_div);\n",
|
|
" this.root.appendChild(canvas_div);\n",
|
|
"\n",
|
|
" var canvas = (this.canvas = document.createElement('canvas'));\n",
|
|
" canvas.classList.add('mpl-canvas');\n",
|
|
" canvas.setAttribute('style', 'box-sizing: content-box;');\n",
|
|
"\n",
|
|
" this.context = canvas.getContext('2d');\n",
|
|
"\n",
|
|
" var backingStore =\n",
|
|
" this.context.backingStorePixelRatio ||\n",
|
|
" this.context.webkitBackingStorePixelRatio ||\n",
|
|
" this.context.mozBackingStorePixelRatio ||\n",
|
|
" this.context.msBackingStorePixelRatio ||\n",
|
|
" this.context.oBackingStorePixelRatio ||\n",
|
|
" this.context.backingStorePixelRatio ||\n",
|
|
" 1;\n",
|
|
"\n",
|
|
" this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
"\n",
|
|
" var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
|
|
" 'canvas'\n",
|
|
" ));\n",
|
|
" rubberband_canvas.setAttribute(\n",
|
|
" 'style',\n",
|
|
" 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
|
|
" );\n",
|
|
"\n",
|
|
" // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
|
|
" if (this.ResizeObserver === undefined) {\n",
|
|
" if (window.ResizeObserver !== undefined) {\n",
|
|
" this.ResizeObserver = window.ResizeObserver;\n",
|
|
" } else {\n",
|
|
" var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
|
|
" this.ResizeObserver = obs.ResizeObserver;\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
|
|
" var nentries = entries.length;\n",
|
|
" for (var i = 0; i < nentries; i++) {\n",
|
|
" var entry = entries[i];\n",
|
|
" var width, height;\n",
|
|
" if (entry.contentBoxSize) {\n",
|
|
" if (entry.contentBoxSize instanceof Array) {\n",
|
|
" // Chrome 84 implements new version of spec.\n",
|
|
" width = entry.contentBoxSize[0].inlineSize;\n",
|
|
" height = entry.contentBoxSize[0].blockSize;\n",
|
|
" } else {\n",
|
|
" // Firefox implements old version of spec.\n",
|
|
" width = entry.contentBoxSize.inlineSize;\n",
|
|
" height = entry.contentBoxSize.blockSize;\n",
|
|
" }\n",
|
|
" } else {\n",
|
|
" // Chrome <84 implements even older version of spec.\n",
|
|
" width = entry.contentRect.width;\n",
|
|
" height = entry.contentRect.height;\n",
|
|
" }\n",
|
|
"\n",
|
|
" // Keep the size of the canvas and rubber band canvas in sync with\n",
|
|
" // the canvas container.\n",
|
|
" if (entry.devicePixelContentBoxSize) {\n",
|
|
" // Chrome 84 implements new version of spec.\n",
|
|
" canvas.setAttribute(\n",
|
|
" 'width',\n",
|
|
" entry.devicePixelContentBoxSize[0].inlineSize\n",
|
|
" );\n",
|
|
" canvas.setAttribute(\n",
|
|
" 'height',\n",
|
|
" entry.devicePixelContentBoxSize[0].blockSize\n",
|
|
" );\n",
|
|
" } else {\n",
|
|
" canvas.setAttribute('width', width * fig.ratio);\n",
|
|
" canvas.setAttribute('height', height * fig.ratio);\n",
|
|
" }\n",
|
|
" canvas.setAttribute(\n",
|
|
" 'style',\n",
|
|
" 'width: ' + width + 'px; height: ' + height + 'px;'\n",
|
|
" );\n",
|
|
"\n",
|
|
" rubberband_canvas.setAttribute('width', width);\n",
|
|
" rubberband_canvas.setAttribute('height', height);\n",
|
|
"\n",
|
|
" // And update the size in Python. We ignore the initial 0/0 size\n",
|
|
" // that occurs as the element is placed into the DOM, which should\n",
|
|
" // otherwise not happen due to the minimum size styling.\n",
|
|
" if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
|
|
" fig.request_resize(width, height);\n",
|
|
" }\n",
|
|
" }\n",
|
|
" });\n",
|
|
" this.resizeObserverInstance.observe(canvas_div);\n",
|
|
"\n",
|
|
" function on_mouse_event_closure(name) {\n",
|
|
" return function (event) {\n",
|
|
" return fig.mouse_event(event, name);\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mousedown',\n",
|
|
" on_mouse_event_closure('button_press')\n",
|
|
" );\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mouseup',\n",
|
|
" on_mouse_event_closure('button_release')\n",
|
|
" );\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'dblclick',\n",
|
|
" on_mouse_event_closure('dblclick')\n",
|
|
" );\n",
|
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mousemove',\n",
|
|
" on_mouse_event_closure('motion_notify')\n",
|
|
" );\n",
|
|
"\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mouseenter',\n",
|
|
" on_mouse_event_closure('figure_enter')\n",
|
|
" );\n",
|
|
" rubberband_canvas.addEventListener(\n",
|
|
" 'mouseleave',\n",
|
|
" on_mouse_event_closure('figure_leave')\n",
|
|
" );\n",
|
|
"\n",
|
|
" canvas_div.addEventListener('wheel', function (event) {\n",
|
|
" if (event.deltaY < 0) {\n",
|
|
" event.step = 1;\n",
|
|
" } else {\n",
|
|
" event.step = -1;\n",
|
|
" }\n",
|
|
" on_mouse_event_closure('scroll')(event);\n",
|
|
" });\n",
|
|
"\n",
|
|
" canvas_div.appendChild(canvas);\n",
|
|
" canvas_div.appendChild(rubberband_canvas);\n",
|
|
"\n",
|
|
" this.rubberband_context = rubberband_canvas.getContext('2d');\n",
|
|
" this.rubberband_context.strokeStyle = '#000000';\n",
|
|
"\n",
|
|
" this._resize_canvas = function (width, height, forward) {\n",
|
|
" if (forward) {\n",
|
|
" canvas_div.style.width = width + 'px';\n",
|
|
" canvas_div.style.height = height + 'px';\n",
|
|
" }\n",
|
|
" };\n",
|
|
"\n",
|
|
" // Disable right mouse context menu.\n",
|
|
" this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
|
|
" event.preventDefault();\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 toolbar = document.createElement('div');\n",
|
|
" toolbar.classList = 'mpl-toolbar';\n",
|
|
" this.root.appendChild(toolbar);\n",
|
|
"\n",
|
|
" function on_click_closure(name) {\n",
|
|
" return function (_event) {\n",
|
|
" return fig.toolbar_button_onclick(name);\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" function on_mouseover_closure(tooltip) {\n",
|
|
" return function (event) {\n",
|
|
" if (!event.currentTarget.disabled) {\n",
|
|
" return fig.toolbar_button_onmouseover(tooltip);\n",
|
|
" }\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" fig.buttons = {};\n",
|
|
" var buttonGroup = document.createElement('div');\n",
|
|
" buttonGroup.classList = 'mpl-button-group';\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",
|
|
" /* Instead of a spacer, we start a new button group. */\n",
|
|
" if (buttonGroup.hasChildNodes()) {\n",
|
|
" toolbar.appendChild(buttonGroup);\n",
|
|
" }\n",
|
|
" buttonGroup = document.createElement('div');\n",
|
|
" buttonGroup.classList = 'mpl-button-group';\n",
|
|
" continue;\n",
|
|
" }\n",
|
|
"\n",
|
|
" var button = (fig.buttons[name] = document.createElement('button'));\n",
|
|
" button.classList = 'mpl-widget';\n",
|
|
" button.setAttribute('role', 'button');\n",
|
|
" button.setAttribute('aria-disabled', 'false');\n",
|
|
" button.addEventListener('click', on_click_closure(method_name));\n",
|
|
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
|
|
"\n",
|
|
" var icon_img = document.createElement('img');\n",
|
|
" icon_img.src = '_images/' + image + '.png';\n",
|
|
" icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
|
|
" icon_img.alt = tooltip;\n",
|
|
" button.appendChild(icon_img);\n",
|
|
"\n",
|
|
" buttonGroup.appendChild(button);\n",
|
|
" }\n",
|
|
"\n",
|
|
" if (buttonGroup.hasChildNodes()) {\n",
|
|
" toolbar.appendChild(buttonGroup);\n",
|
|
" }\n",
|
|
"\n",
|
|
" var fmt_picker = document.createElement('select');\n",
|
|
" fmt_picker.classList = 'mpl-widget';\n",
|
|
" toolbar.appendChild(fmt_picker);\n",
|
|
" this.format_dropdown = fmt_picker;\n",
|
|
"\n",
|
|
" for (var ind in mpl.extensions) {\n",
|
|
" var fmt = mpl.extensions[ind];\n",
|
|
" var option = document.createElement('option');\n",
|
|
" option.selected = fmt === mpl.default_extension;\n",
|
|
" option.innerHTML = fmt;\n",
|
|
" fmt_picker.appendChild(option);\n",
|
|
" }\n",
|
|
"\n",
|
|
" var status_bar = document.createElement('span');\n",
|
|
" status_bar.classList = 'mpl-message';\n",
|
|
" toolbar.appendChild(status_bar);\n",
|
|
" this.message = status_bar;\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",
|
|
"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",
|
|
"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], msg['forward']);\n",
|
|
" fig.send_message('refresh', {});\n",
|
|
" }\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
|
|
" var x0 = msg['x0'] / fig.ratio;\n",
|
|
" var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
|
|
" var x1 = msg['x1'] / fig.ratio;\n",
|
|
" var y1 = (fig.canvas.height - msg['y1']) / fig.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,\n",
|
|
" 0,\n",
|
|
" fig.canvas.width / fig.ratio,\n",
|
|
" fig.canvas.height / fig.ratio\n",
|
|
" );\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",
|
|
" fig.rubberband_canvas.style.cursor = msg['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.handle_history_buttons = function (fig, msg) {\n",
|
|
" for (var key in msg) {\n",
|
|
" if (!(key in fig.buttons)) {\n",
|
|
" continue;\n",
|
|
" }\n",
|
|
" fig.buttons[key].disabled = !msg[key];\n",
|
|
" fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
|
|
" }\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
|
|
" if (msg['mode'] === 'PAN') {\n",
|
|
" fig.buttons['Pan'].classList.add('active');\n",
|
|
" fig.buttons['Zoom'].classList.remove('active');\n",
|
|
" } else if (msg['mode'] === 'ZOOM') {\n",
|
|
" fig.buttons['Pan'].classList.remove('active');\n",
|
|
" fig.buttons['Zoom'].classList.add('active');\n",
|
|
" } else {\n",
|
|
" fig.buttons['Pan'].classList.remove('active');\n",
|
|
" fig.buttons['Zoom'].classList.remove('active');\n",
|
|
" }\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",
|
|
" var img = evt.data;\n",
|
|
" if (img.type !== 'image/png') {\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",
|
|
" img.type = 'image/png';\n",
|
|
" }\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",
|
|
"\n",
|
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
" img\n",
|
|
" );\n",
|
|
" fig.updated_canvas_event();\n",
|
|
" fig.waiting = false;\n",
|
|
" return;\n",
|
|
" } else if (\n",
|
|
" typeof evt.data === 'string' &&\n",
|
|
" evt.data.slice(0, 21) === 'data:image/png;base64'\n",
|
|
" ) {\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(\n",
|
|
" \"No handler for the '\" + msg_type + \"' message type: \",\n",
|
|
" msg\n",
|
|
" );\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(\n",
|
|
" \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
|
|
" e,\n",
|
|
" e.stack,\n",
|
|
" msg\n",
|
|
" );\n",
|
|
" }\n",
|
|
" }\n",
|
|
" };\n",
|
|
"};\n",
|
|
"\n",
|
|
"// from https://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",
|
|
" }\n",
|
|
" if (e.target) {\n",
|
|
" targ = e.target;\n",
|
|
" } else if (e.srcElement) {\n",
|
|
" targ = e.srcElement;\n",
|
|
" }\n",
|
|
" if (targ.nodeType === 3) {\n",
|
|
" // defeat Safari bug\n",
|
|
" targ = targ.parentNode;\n",
|
|
" }\n",
|
|
"\n",
|
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
" var boundingRect = targ.getBoundingClientRect();\n",
|
|
" var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
|
|
" var y = e.pageY - (boundingRect.top + document.body.scrollTop);\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",
|
|
" * https://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",
|
|
" }\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",
|
|
" this.canvas.focus();\n",
|
|
" this.canvas_div.focus();\n",
|
|
" }\n",
|
|
"\n",
|
|
" var x = canvas_pos.x * this.ratio;\n",
|
|
" var y = canvas_pos.y * this.ratio;\n",
|
|
"\n",
|
|
" this.send_message(name, {\n",
|
|
" x: x,\n",
|
|
" y: y,\n",
|
|
" button: event.button,\n",
|
|
" step: event.step,\n",
|
|
" guiEvent: simpleKeys(event),\n",
|
|
" });\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",
|
|
" // Prevent repeat events\n",
|
|
" if (name === 'key_press') {\n",
|
|
" if (event.key === this._key) {\n",
|
|
" return;\n",
|
|
" } else {\n",
|
|
" this._key = event.key;\n",
|
|
" }\n",
|
|
" }\n",
|
|
" if (name === 'key_release') {\n",
|
|
" this._key = null;\n",
|
|
" }\n",
|
|
"\n",
|
|
" var value = '';\n",
|
|
" if (event.ctrlKey && event.key !== 'Control') {\n",
|
|
" value += 'ctrl+';\n",
|
|
" }\n",
|
|
" else if (event.altKey && event.key !== 'Alt') {\n",
|
|
" value += 'alt+';\n",
|
|
" }\n",
|
|
" else if (event.shiftKey && event.key !== 'Shift') {\n",
|
|
" value += 'shift+';\n",
|
|
" }\n",
|
|
"\n",
|
|
" value += 'k' + event.key;\n",
|
|
"\n",
|
|
" this._key_event_extra(event, name);\n",
|
|
"\n",
|
|
" this.send_message(name, { key: value, 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",
|
|
"\n",
|
|
"///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
|
|
"// prettier-ignore\n",
|
|
"var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
|
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o\", \"download\"]];\n",
|
|
"\n",
|
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\", \"webp\"];\n",
|
|
"\n",
|
|
"mpl.default_extension = \"png\";/* global mpl */\n",
|
|
"\n",
|
|
"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.binaryType = comm.kernel.ws.binaryType;\n",
|
|
" ws.readyState = comm.kernel.ws.readyState;\n",
|
|
" function updateReadyState(_event) {\n",
|
|
" if (comm.kernel.ws) {\n",
|
|
" ws.readyState = comm.kernel.ws.readyState;\n",
|
|
" } else {\n",
|
|
" ws.readyState = 3; // Closed state.\n",
|
|
" }\n",
|
|
" }\n",
|
|
" comm.kernel.ws.addEventListener('open', updateReadyState);\n",
|
|
" comm.kernel.ws.addEventListener('close', updateReadyState);\n",
|
|
" comm.kernel.ws.addEventListener('error', updateReadyState);\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",
|
|
" var data = msg['content']['data'];\n",
|
|
" if (data['blob'] !== undefined) {\n",
|
|
" data = {\n",
|
|
" data: new Blob(msg['buffers'], { type: data['blob'] }),\n",
|
|
" };\n",
|
|
" }\n",
|
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
" ws.onmessage(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 = document.getElementById(id);\n",
|
|
" var ws_proxy = comm_websocket_adapter(comm);\n",
|
|
"\n",
|
|
" function ondownload(figure, _format) {\n",
|
|
" window.open(figure.canvas.toDataURL());\n",
|
|
" }\n",
|
|
"\n",
|
|
" var fig = new mpl.figure(id, ws_proxy, ondownload, element);\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;\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",
|
|
" fig.cell_info[0].output_area.element.on(\n",
|
|
" 'cleared',\n",
|
|
" { fig: fig },\n",
|
|
" fig._remove_fig_handler\n",
|
|
" );\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_close = function (fig, msg) {\n",
|
|
" var width = fig.canvas.width / fig.ratio;\n",
|
|
" fig.cell_info[0].output_area.element.off(\n",
|
|
" 'cleared',\n",
|
|
" fig._remove_fig_handler\n",
|
|
" );\n",
|
|
" fig.resizeObserverInstance.unobserve(fig.canvas_div);\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.innerHTML =\n",
|
|
" '<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 / this.ratio;\n",
|
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
" this.cell_info[1]['text/html'] =\n",
|
|
" '<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 () {\n",
|
|
" fig.push_to_output();\n",
|
|
" }, 1000);\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._init_toolbar = function () {\n",
|
|
" var fig = this;\n",
|
|
"\n",
|
|
" var toolbar = document.createElement('div');\n",
|
|
" toolbar.classList = 'btn-toolbar';\n",
|
|
" this.root.appendChild(toolbar);\n",
|
|
"\n",
|
|
" function on_click_closure(name) {\n",
|
|
" return function (_event) {\n",
|
|
" return fig.toolbar_button_onclick(name);\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" function on_mouseover_closure(tooltip) {\n",
|
|
" return function (event) {\n",
|
|
" if (!event.currentTarget.disabled) {\n",
|
|
" return fig.toolbar_button_onmouseover(tooltip);\n",
|
|
" }\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" fig.buttons = {};\n",
|
|
" var buttonGroup = document.createElement('div');\n",
|
|
" buttonGroup.classList = 'btn-group';\n",
|
|
" var button;\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",
|
|
" /* Instead of a spacer, we start a new button group. */\n",
|
|
" if (buttonGroup.hasChildNodes()) {\n",
|
|
" toolbar.appendChild(buttonGroup);\n",
|
|
" }\n",
|
|
" buttonGroup = document.createElement('div');\n",
|
|
" buttonGroup.classList = 'btn-group';\n",
|
|
" continue;\n",
|
|
" }\n",
|
|
"\n",
|
|
" button = fig.buttons[name] = document.createElement('button');\n",
|
|
" button.classList = 'btn btn-default';\n",
|
|
" button.href = '#';\n",
|
|
" button.title = name;\n",
|
|
" button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
|
|
" button.addEventListener('click', on_click_closure(method_name));\n",
|
|
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
|
|
" buttonGroup.appendChild(button);\n",
|
|
" }\n",
|
|
"\n",
|
|
" if (buttonGroup.hasChildNodes()) {\n",
|
|
" toolbar.appendChild(buttonGroup);\n",
|
|
" }\n",
|
|
"\n",
|
|
" // Add the status bar.\n",
|
|
" var status_bar = document.createElement('span');\n",
|
|
" status_bar.classList = 'mpl-message pull-right';\n",
|
|
" toolbar.appendChild(status_bar);\n",
|
|
" this.message = status_bar;\n",
|
|
"\n",
|
|
" // Add the close button to the window.\n",
|
|
" var buttongrp = document.createElement('div');\n",
|
|
" buttongrp.classList = 'btn-group inline pull-right';\n",
|
|
" button = document.createElement('button');\n",
|
|
" button.classList = 'btn btn-mini btn-primary';\n",
|
|
" button.href = '#';\n",
|
|
" button.title = 'Stop Interaction';\n",
|
|
" button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
|
|
" button.addEventListener('click', function (_evt) {\n",
|
|
" fig.handle_close(fig, {});\n",
|
|
" });\n",
|
|
" button.addEventListener(\n",
|
|
" 'mouseover',\n",
|
|
" on_mouseover_closure('Stop Interaction')\n",
|
|
" );\n",
|
|
" buttongrp.appendChild(button);\n",
|
|
" var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
|
|
" titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._remove_fig_handler = function (event) {\n",
|
|
" var fig = event.data.fig;\n",
|
|
" if (event.target !== this) {\n",
|
|
" // Ignore bubbled events from children.\n",
|
|
" return;\n",
|
|
" }\n",
|
|
" fig.close_ws(fig, {});\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._root_extra_style = function (el) {\n",
|
|
" el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._canvas_extra_style = function (el) {\n",
|
|
" // this is important to make the div 'focusable\n",
|
|
" el.setAttribute('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",
|
|
" } else {\n",
|
|
" // location in version 2\n",
|
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
" }\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype._key_event_extra = function (event, _name) {\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",
|
|
"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(\n",
|
|
" 'matplotlib',\n",
|
|
" mpl.mpl_figure_comm\n",
|
|
" );\n",
|
|
"}\n"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.Javascript object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<img src=\"data:image/png;base64,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OHr0KJ588kmMGTOmLbKUFn3nnXfw7W9/u+0YN0iABLqWgKTnM0W/a18Db6+eNDAGs+dnYv2KPEMioYiD4if+9rbz+Hk1O8v+mJHtKNQaGe55bJ33mXCeg/fMEY7lOPXepYiDUiJW/F2aIiBDekzueRE49D4gIq5mIUqJz9HfBbLvAwZPcV++U/PxYi0i6KRhiepSUduA4ku1qKydizPn96DvodUILXCYl0X5eHeVNq/r/DYvL26FLiRAAiRAAiRAAiRAAiRAAiRAAiRAAgqBE198jnefWoqGOn2/K50vPIW/L3kENz/0KKSdEo0EzCBAgdAMikqM1157DXFxcfjLX/6ilhsdPHgwZJGyogcPHoRkqDz88MMmXY1hSIAESCC4CQxIT8Bti6/G1pX5usqNSllRyTx0FAeF4updJ32CWQWTs8PDo32aT7A6O5bj9MRByopK5qBbcfBsLvCP+4HSg87DiViY/07rkjQauPUFv2fqxUSEQhbVBs4ExiuLZDZK5qmIy/L+ienn98xG50B4lARIgARIgARIgARIgARIgARIgARIwBMByRw0Ig5q8URMFL/blzzJTEINCtc+EaBA6BO+K85WpX/ZCy+8gLlz56plRrds2YKvvvpKHTB06FA88cQTmD59+hUHbpEACZAACfhEQMS+nMeuxdmCcuR9VIjjueeUOu1Kttdls1hCMCQrCZlTU9Weg/ZlRbUxko216UCxtuvVuqglAY0tFthCrvS09CqQOEnml4g7NK8IdCzHWYwmu/eETXlPzMxIwZ0TB6k9B529J9oufGwbsOZOoEEpJ6rHRER8ZXZrr79h0zx6NDZWoLauCE1NSv9AayQiwlNgs7XPbvUYRBvAfoEaCa5JgARIgARIgARIgARIgARIgARIoFsTkESiDc8u05056HgzIhJufO4Z3P37P+trl+IYgPskYEeAAqEdDDM2p0yZAlnELl68qGYOSmYhjQRIgARIwHwCIvCkjopXl/qaRlSW16GhtgmhEVZEx4UjrJf7/80VXaxtJyB5M8NKRGJT8zW4ybrHG/f2PlIW0s897dpfsOftyXuiQzlOpV9ltFJiNjk24kr2nbtbl8xBB3GwvrkXKpsT0aCsQy01iLacR5iybmciJorfveudZhLKl4AL5btQWLga585tUT4jXClXGqKUK03qMwOpaXMRHzfR9A/5lfWV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OisgvuisYHXuF2NUx7nSrTRKfNEj5gsrjaV+AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTSIdAzHd3QCwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqiEgQVgNZW0QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQSImABGFKBkI3CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFRDQIKwGsraIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJASAQnClAyEbhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCohoAEYTWUtUGAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgJQIShCkZCN0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUA0BCcJqKGuDAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQEoEJAhTMhC6QYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAaAhKE1VDWBgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGUCEgQpmQgdIMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBANQQkCKuhrA0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECKRGQIEzJQOgGAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWoISBBWQ1kbBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFIiIEGYkoHQDQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLVEJAgrIayNggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAikRECCMCUDoRsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqiEgQVgNZW0QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQSImABGFKBkI3CBAgUAuBhx56KPTo0SP35/HHH69FN5I233nnnVw/Zs2a1awfl156ae5afn/j/sCBA8PYsWPDD37wg/Dyyy83u88BAQIECBAgUH0B8UX1zbVIgAABAgQaXUB80egj7PkIEKiFgARhLdS1SYAAgZQIXHXVVc16cvXVVzc7rubBb3/726S5UaNGhfHjxzdr+g9/+EOz4/yDRYsWJYnBmETcdNNNw80335x/2T4BAgQIECBQZQHxRZXBNUeAAAECBLqBgPiiGwyyRyRAoOoCEoRVJ9cgAQIE0iGwePHicNNNNzXrzI033hiWLl3a7Fy1Dm6//fakqT322KNVk9kE4Yorrhiee+653J+ZM2eGG264IWy11VbJPbHvhx12WJg/f36rOpwgQIAAAQIEKi8gvqi8sRYIECBAgEB3ExBfdLcR97wECFRLQIKwWtLaIUCAQMoEbrnllrBw4cKkV1OmTEk+P/7445BN1FWzu3EW4P333580ueeeezZr+ssvv0wSgvHkxhtvHDbaaKPcn8022yzsv//+4dFHHw2bb755cl+s6/rrr29WhwMCBAgQIECgOgLii+o4a4UAAQIECHQnAfFFdxptz0qAQDUFJAirqa0tAgQIpEggu5zo0KFDw7Rp00KcnRe37PlqdvW+++4LS5YsCQMGDAg77rhjs6ZfeeWVEJN+cdtkk02aXcse9OzZM3z/+9/PHoYXXnght2+HAAECBAgQqJ5ANo4QX1TPXEsECBAgQKDRBcQXjT7Cno8AgVoJSBDWSl67BAgQqKHAe++9F2JSLm777bdfGDRoUPj7v//75Piuu+4KH3zwQbJf7D8vvfRS6NGjR/LnuuuuC01NTeE3v/lNmDRpUhg+fHiICbvtt9++2O2tzmffP7jzzjuHfv36NbueXV40nowzCItta621Vu7SsmXLcvt2CBAgQIAAgeoIiC+q46wVAgQIECDQnQTEF91ptD0rAQLVFpAgrLa49ggQIJACgZjMW758edKTgw8+OPk85JBDks8vvvgixKRfW9sf//jH3OXVV189bLfdduHQQw8N9957b3j//feThGGx2X65G/+2E5OL2QRhy+VFY5H8BGFbdeYnNddZZ52WzTgmQIAAAQIEKiwgvqgwsOoJECBAgEA3FBBfdMNB98gECFRNoHfVWtIQAQIECKRG4Jprrkn6Mnr06PDNb34z2Y9JvpEjR4Z33nknWWb0n/7pn4r2Nz9BeNxxx4XZs2eHmGg88MADwxprrBHefvvtMGzYsKL351+YOXNmiL8RGGck7r777vmXkv1sgjBej+8fLLbFdxJkt7322iu765MAAQIECBCokoD4okrQmiFAgAABAt1IQHzRjQbboxIgUHUBCcKqk2uQAAECtRWICbdnn3026cRBBx2UJObiQVwWNCb4LrjgghCTdjHpN27cuIKdzU8Q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9m3KzITMlc3M/GvKvBOxqU+fPk1z587NnS+3fLwx1p95z2PTvffem6snu/PSSy9ld30SIECAAAECeQLii6amYvFIZBJf5H2x2CVAgAABAiUKiC/EFyV+qShGoKEEesSnqWD+UdUECBAg0E0FFi1aFAYPHhy+/e1vh7vuuiuncN555yXLh06ePLmq7947/fTTw89+9rMwaNCgMHXq1NC7d+vX8O69997NljR94IEHwi677BL69esXDjzwwOR5br755vDmm2+G888/P5x44om554o75Za/8cYbk5mMsS977bVXWHfddZMZhY8//ngYN25cuOWWW5rV74AAAQIECHR3AfFF+/GI+KK7f5d4fgIECBAoV0B8Ib4o92tGeQINI9BQ6U4PQ4AAAQKpEXjiiSeS2Xonn3xyKvqUnT2Y+R940q9Cn7/85S9b9fWpp55q+s53vtM0ZMiQpv79+zdtscUWTddff32rctkT5ZbPJE+bdtppp6T+OCtx1KhRTfvss0/Tww8/nK3SJwECBAgQIPA3AfFFafGI+MK3DAECBAgQKF1AfCG+KP2rRUkCjSVgBmHDpHo9CAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIH2BXq2X0QJAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQaRUCCsFFG0nMQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKEFAgrAEJEUIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINIqABGGjjKTnIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFCCgARhCUiKECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGgUAQnCRhlJz0GAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgBAEJwhKQFCFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQKAIShI0ykp6DAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQAkCEoQlIClCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFEEJAgbZSQ9BwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIESBCQIS0BShAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECjCEgQNspIeg4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECJQhIEJaApAgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBRhGQIGyUkfQcBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEoQkCAsAUkRAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAo0iIEHYKCPpOQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiUICBBWAKSIgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQaRUCCsFFG0nMQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKEFAgrAEJEUIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINIqABGGjjKTnIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFCCgARhCUiKECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGgUAQnCRhlJz0GAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgBAEJwhKQFCFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQKAIShI0ykp6DAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQAkCEoQlIClCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFEEJAgbZSQ9BwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIESBCQIS0BShAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECjCEgQNspIeg4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECJQhIEJaApAgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBRhGQIGyUkfQcBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEoQkCAsAUkRAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAo0iIEHYKCPpOQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiUICBBWAKSIgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQaRUCCsFFG0nMQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKEFAgrAEJEUIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINIrA/weVX2LFT3R4kgAAAABJRU5ErkJggg==\" width=\"900\">"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"fig, axs = plt.subplots(ncols=3, figsize=(9, 3), sharey=True, sharex=True)\n",
|
|
"fig.subplots_adjust(wspace=0)\n",
|
|
"for m, k in enumerate(ids):\n",
|
|
" r200 = cat[n][\"r200\"][k]\n",
|
|
" m200 = cat[n][\"m200\"][k]\n",
|
|
" \n",
|
|
" axs[m].set_title(r\"$\\log M_{{200c}} / M_\\odot = {:.3f}$\".format(np.log10(m200)))\n",
|
|
" for i, j in enumerate(matcher.search_sim_indices(n)):\n",
|
|
" indxs, dist = match[i]\n",
|
|
" indxs = indxs[k]\n",
|
|
" dist = dist[k]\n",
|
|
"\n",
|
|
" dlogmass = np.abs(np.log10(cat[j][\"m200\"][indxs] / m200))\n",
|
|
" axs[m].scatter(dist / r200, dlogmass)\n",
|
|
" \n",
|
|
" \n",
|
|
"for i in range(3):\n",
|
|
" axs[i].set_xlabel(r\"$\\Delta r_i / R_{200c}$\")\n",
|
|
"axs[0].set_ylabel(r\"$|\\log \\dfrac{M_i}{M_{200c}}|$\")\n",
|
|
"plt.tight_layout(w_pad=0)\n",
|
|
"# plt.savefig(\"../plots/lowest_massive.png\", dpi=450)\n",
|
|
"fig.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "f0f59246",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "a25c7146",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "e2930abd",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T10:56:11.296860Z",
|
|
"start_time": "2022-11-21T10:56:10.813212Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure()\n",
|
|
"for k in range(cat.N-1):\n",
|
|
" plt.scatter(x[k, :, 1], x[k, :, 2])\n",
|
|
"\n",
|
|
" \n",
|
|
"plt.xlabel(r\"$\\Delta r_i / R_{200c}$\")\n",
|
|
"plt.ylabel(r\"$|\\log \\dfrac{M_i}{M_{200c}}|$\")\n",
|
|
"plt.savefig(\"../plots/example.png\", dpi=450)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "5101f569",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T10:36:59.128848Z",
|
|
"start_time": "2022-11-21T10:36:58.543085Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"x[:, 0, 2]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6794c154",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "aa252ad3",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T07:38:33.029175Z",
|
|
"start_time": "2022-11-21T07:38:32.649968Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"cat.cross_knn_position(0, 0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "8dc14292",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "9f7cd638",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d655f5de",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "9894fd1a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "41c21c3c",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T07:05:14.278302Z",
|
|
"start_time": "2022-11-21T07:05:14.249214Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"x = cat.positions[6, :].reshape(-1, 3)\n",
|
|
"\n",
|
|
"\n",
|
|
"# x = np.asarray([0., 0., 0.]).reshape(-1, 3)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "440c00a3",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T07:07:55.025995Z",
|
|
"start_time": "2022-11-21T07:07:54.988489Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"cat.knn_position(x, 5)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6c510eca",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "c59341c0",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T06:55:17.697688Z",
|
|
"start_time": "2022-11-21T06:55:17.667672Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"dist, knns = cat.knn_position([5, 9], 5)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "004c5a79",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T06:55:40.505297Z",
|
|
"start_time": "2022-11-21T06:55:40.475623Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"dist"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "efcc87ac",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T06:55:47.645798Z",
|
|
"start_time": "2022-11-21T06:55:47.615986Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"knns"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "9bf75953",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T06:27:19.883364Z",
|
|
"start_time": "2022-11-21T06:27:19.435813Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"model = NearestNeighbors()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3e751553",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T06:27:38.874030Z",
|
|
"start_time": "2022-11-21T06:27:38.663757Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"model.fit(cat[0].positions)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "a8cb2bcf",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T06:37:19.127300Z",
|
|
"start_time": "2022-11-21T06:37:18.905607Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"p = cat[0].positions[:2, :].reshape(-1, 3)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "ae96df81",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T06:37:19.354558Z",
|
|
"start_time": "2022-11-21T06:37:19.324845Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"p"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1e7b3655",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-21T06:37:20.172812Z",
|
|
"start_time": "2022-11-21T06:37:20.141347Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"model.kneighbors(p, n_neighbors=2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6d3bcb85",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "307f3b62",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "a885af97",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T16:47:33.606111Z",
|
|
"start_time": "2022-11-20T16:47:29.246847Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"cat = csiborgtools.io.HaloCatalogue(9844, 1016, minimum_m500=0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2b73c9bc",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T16:47:52.218696Z",
|
|
"start_time": "2022-11-20T16:47:52.097392Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"cat[\"dec\"].size"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "bd76ed7a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "22abdd5c",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T15:15:05.423239Z",
|
|
"start_time": "2022-11-20T15:15:05.366755Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"planck = csiborgtools.io.PlanckClusters(\"../data/HFI_PCCS_SZ-union_R2.08.fits\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "20855f15",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T15:15:05.479763Z",
|
|
"start_time": "2022-11-20T15:15:05.425076Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"mcxc = csiborgtools.io.MCXCClusters(\"../data/mcxc.fits\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "60e7d566",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T15:15:38.743815Z",
|
|
"start_time": "2022-11-20T15:15:38.663202Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"planck.match_to_mcxc(mcxc)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2941d725",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T14:36:05.559176Z",
|
|
"start_time": "2022-11-20T14:36:05.143516Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"planck[\"MSZ\"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6347d993",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "43293c40",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T14:34:56.350019Z",
|
|
"start_time": "2022-11-20T14:34:56.292284Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"planck.data.dtype.names"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "509d4fbb",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T17:00:49.100716Z",
|
|
"start_time": "2022-11-20T17:00:48.529803Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"csiborgtools.io.get_csiborg_ids(\"/mnt/extraspace/hdesmond\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "f39874e4",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T12:48:39.888076Z",
|
|
"start_time": "2022-11-20T12:48:39.824849Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from astropy.cosmology import FlatLambdaCDM, z_at_value\n",
|
|
"from astropy import units"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d243cc59",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T12:48:50.480986Z",
|
|
"start_time": "2022-11-20T12:48:46.442880Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"Nsim = 9844\n",
|
|
"Nsnap = 1016\n",
|
|
"# data, box = utils.load_processed(Nsim, Nsnap)\n",
|
|
"data, box = utils.load_processed(Nsim, Nsnap)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "344e6b96",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T12:49:41.830512Z",
|
|
"start_time": "2022-11-20T12:49:41.793552Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"X = np.vstack([data[\"peak_{}\".format(p)] for p in (\"x\", \"y\", \"z\")]).T"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d8bb7dce",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T12:51:00.688105Z",
|
|
"start_time": "2022-11-20T12:51:00.262736Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sklearn.neighbors import NearestNeighbors"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "71026a85",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T12:51:22.817846Z",
|
|
"start_time": "2022-11-20T12:51:22.762451Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"neighbors = NearestNeighbors()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3ca4a7b7",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T12:51:52.857117Z",
|
|
"start_time": "2022-11-20T12:51:52.659741Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"neighbors.fit(X)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6e5ec9c8",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T12:52:50.459988Z",
|
|
"start_time": "2022-11-20T12:52:50.429353Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"p = X[0, :]\n",
|
|
"\n",
|
|
"neighbors.kneighbors(p.reshape(-1,3))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "304d53aa",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T12:52:31.826535Z",
|
|
"start_time": "2022-11-20T12:52:31.796380Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "a65dac24",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-20T12:49:09.617079Z",
|
|
"start_time": "2022-11-20T12:49:09.416602Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"data[\"peak_y\"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "45b638ac",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "26c64abc",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "07bc45e2",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-18T15:18:08.182242Z",
|
|
"start_time": "2022-11-18T15:18:08.106196Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"zcosmo = box.box2cosmoredshift(data[\"dist\"])\n",
|
|
"z"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "adf5dbb6",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-18T15:20:26.613020Z",
|
|
"start_time": "2022-11-18T15:20:25.738527Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"zpec = box.box2pecredshift(*[data[p] for p in [\"vx\", \"vy\", \"vz\", \"peak_x\", \"peak_y\", \"peak_z\"]])\n",
|
|
"zobs = box.box2obsredshift(*[data[p] for p in [\"vx\", \"vy\", \"vz\", \"peak_x\", \"peak_y\", \"peak_z\"]])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "841bd579",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-18T15:26:30.294302Z",
|
|
"start_time": "2022-11-18T15:26:29.051227Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"m = zcosmo < 0.05\n",
|
|
"\n",
|
|
"plt.figure()\n",
|
|
"\n",
|
|
"# plt.scatter(zcosmo[m], zcosmo[m] - zobs[m], s=0.05)\n",
|
|
"plt.scatter(zcosmo[m], zpec[m], s=0.05, rasterized=True)\n",
|
|
"t = np.linspace(0, zcosmo[m].max())\n",
|
|
"\n",
|
|
"plt.axhline(0, c=\"red\", ls=\"--\")\n",
|
|
"\n",
|
|
"plt.xlabel(r\"$z_{\\rm cosmo}$\")\n",
|
|
"plt.ylabel(r\"$z_{\\rm pec}$\")\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.savefig(\"../plots/redshift.png\", dpi=450)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "b4f27150",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "842b2a29",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1540f703",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "990e9b54",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "72c00ec7",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-18T13:52:31.564378Z",
|
|
"start_time": "2022-11-18T13:52:31.208987Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"data[\"\"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "41d9b43b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "da80d88a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "a0cfe3e9",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "cced3507",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-18T10:38:41.921571Z",
|
|
"start_time": "2022-11-18T10:38:41.546722Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"cosmo = FlatLambdaCDM(H0=70, Om0=0.3, Ob0=0.05)\n",
|
|
"\n",
|
|
"cosmo.comoving_distance()\n",
|
|
"\n",
|
|
"x = 10000 * units.Mpc\n",
|
|
"\n",
|
|
"z_at_value(cosmo.comoving_distance, x)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "efe4bae7",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-18T10:54:22.472019Z",
|
|
"start_time": "2022-11-18T10:54:21.945010Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from astropy import constants"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3b3868ec",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-18T10:54:45.746052Z",
|
|
"start_time": "2022-11-18T10:54:45.700198Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"constants.c.value * 1e-8"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "b4a75a77",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-14T16:10:20.623153Z",
|
|
"start_time": "2022-11-14T16:10:20.196639Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"n_sims = csiborgtools.io.get_csiborg_ids(\"/mnt/extraspace/hdesmond\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "90c6750f",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-14T16:12:35.876806Z",
|
|
"start_time": "2022-11-14T16:12:35.846171Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"np.where(n_sims == 7660)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2dc01da8",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-14T16:15:52.261474Z",
|
|
"start_time": "2022-11-14T16:15:50.624885Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"for n_sim in n_sims:\n",
|
|
" simpath = csiborgtools.io.get_sim_path(n_sim)\n",
|
|
" maxsnap = csiborgtools.io.get_maximum_snapshot(simpath)\n",
|
|
" box = csiborgtools.units.BoxUnits(maxsnap, simpath)\n",
|
|
" print(maxsnap, box._aexp)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "192853c4",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "0c145fbc",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "f21964e5",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "84ea4faf",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-14T16:00:41.737065Z",
|
|
"start_time": "2022-11-14T16:00:40.928532Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"simpath = csiborgtools.io.get_sim_path(7660)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "13268041",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-14T16:00:41.805562Z",
|
|
"start_time": "2022-11-14T16:00:41.739425Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"simpath"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "c2d53934",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-14T16:01:06.640894Z",
|
|
"start_time": "2022-11-14T16:01:06.230907Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"box = csiborgtools.units.BoxUnits(999, simpath)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "345a01d3",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-14T16:01:51.638849Z",
|
|
"start_time": "2022-11-14T16:01:51.185358Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"box._aexp\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "61ec5596",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "14d2b61d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "a7e78419",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-10T06:40:31.103185Z",
|
|
"start_time": "2022-11-10T06:40:30.996113Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"planck = utils.load_planck2015(200)\n",
|
|
"mcxc = utils.load_mcxc(200)\n",
|
|
"\n",
|
|
"indxs = csiborgtools.io.match_planck_to_mcxc(planck, mcxc)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "185c6c03",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-10T07:36:22.652521Z",
|
|
"start_time": "2022-11-10T07:36:14.980728Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"groups = utils.load_2mpp_groups()\n",
|
|
"\n",
|
|
"Nsim = 9844\n",
|
|
"Nsnap = 1016\n",
|
|
"\n",
|
|
"data = utils.load_processed(Nsim, Nsnap)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "272befd5",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "b15427bb",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-10T07:38:28.598904Z",
|
|
"start_time": "2022-11-10T07:38:28.427656Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure()\n",
|
|
"\n",
|
|
"m = data[\"m500\"] > 1e13\n",
|
|
"plt.scatter(data[\"ra\"][m], data[\"dec\"][m], label=\"CSiBORG\", s=3)\n",
|
|
"plt.scatter(groups[\"RA\"], groups[\"DEC\"], label=\"2M++ galaxy groups\", s=3, marker=\"x\")\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2489d85e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2442bec3",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T21:43:04.928922Z",
|
|
"start_time": "2022-11-09T21:43:04.521323Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "7af8a421",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T21:46:29.948541Z",
|
|
"start_time": "2022-11-09T21:46:28.979688Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"RAcoma = (12 + 59/60 + 48.7 / 60**2) * 15\n",
|
|
"DECcoma = 27 + 58 / 60 + 50 / 60**2\n",
|
|
"\n",
|
|
"\n",
|
|
"RAvirgo = (12 + 27 / 60) * 15\n",
|
|
"DECvirgo = 12 + 43/60\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"plt.figure()\n",
|
|
"\n",
|
|
"\n",
|
|
"plt.scatter(mcxc[\"RAdeg\"], mcxc[\"DEdeg\"], label=\"MCXC\")\n",
|
|
"plt.scatter(planck[\"RA\"], planck[\"DEC\"], label=\"Plank\",s=8, c=\"red\")\n",
|
|
"\n",
|
|
"plt.scatter(RAcoma, DECcoma, label=\"Coma\", s=30, marker=\"x\")\n",
|
|
"plt.scatter(RAvirgo, DECvirgo, label=\"Virgo\", s=30, marker=\"x\")\n",
|
|
"\n",
|
|
"plt.legend(framealpha=0.5)\n",
|
|
"plt.xlabel(\"RA\")\n",
|
|
"plt.ylabel(\"DEC\")\n",
|
|
"plt.title(\"Clusters below 200 Mpc\")\n",
|
|
"plt.savefig(\"../plots/clusters_radec.png\", dpi=450)\n",
|
|
"\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "01f5c4b3",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1b0a0f9e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d6ef387a",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T21:40:24.392358Z",
|
|
"start_time": "2022-11-09T21:40:23.480949Z"
|
|
},
|
|
"scrolled": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure()\n",
|
|
"\n",
|
|
"plt.scatter(mcxc[\"COMDIST\"], mcxc[\"M500\"], label=\"MCXC\")\n",
|
|
"# yerr = np.vstack([planck[\"MSZ\"] - planck[\"MSZ_ERR_LOW\"],\n",
|
|
"# planck[\"MSZ_ERR_UP\"] - planck[\"MSZ\"]])\n",
|
|
"yerr = np.vstack([planck[\"MSZ_ERR_LOW\"], planck[\"MSZ_ERR_UP\"]])\n",
|
|
"plt.errorbar(planck[\"COMDIST\"], planck[\"MSZ\"], yerr, label=\"Plank\", fmt=\" \", capsize=3, color=\"red\")\n",
|
|
"\n",
|
|
"plt.yscale(\"log\")\n",
|
|
"plt.legend()\n",
|
|
"plt.title(\"Clusters below 200 Mpc\")\n",
|
|
"plt.xlabel(r\"$D_{\\rm c} / \\mathrm{Mpc}$\")\n",
|
|
"plt.ylabel(r\"$M_{\\rm 500c} / M_\\odot$\")\n",
|
|
"# plt.savefig(\"../plots/clusters_mass_dist.png\", dpi=450)\n",
|
|
"\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d7e113a8",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T15:59:03.390824Z",
|
|
"start_time": "2022-11-09T15:59:02.962263Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"d[\"RAdeg\"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "e7ae386e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "9fa1dc0e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "22cb8bfd",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T15:56:10.087582Z",
|
|
"start_time": "2022-11-09T15:56:10.062895Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"d.dtype.names"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "84639e39",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T15:56:47.929058Z",
|
|
"start_time": "2022-11-09T15:56:47.737531Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"d[\"Cat\"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d4a98c60",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T15:55:12.287185Z",
|
|
"start_time": "2022-11-09T15:55:12.124019Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"type(d[\"MCXC\"])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "b32906be",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T15:55:49.218385Z",
|
|
"start_time": "2022-11-09T15:55:49.099991Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"np.asanyarray([\"aasdasdaasdasdasdad\", \"bsdfadadfasddsgasdg\"]).dtype"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "be1920a5",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2c173e6a",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T15:54:17.529059Z",
|
|
"start_time": "2022-11-09T15:54:17.220209Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"d[\"MCXC\"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "40c7ab70",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "5284fc28",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-09T15:47:57.986432Z",
|
|
"start_time": "2022-11-09T15:47:57.575714Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure()\n",
|
|
"# plt.scatter(d[\"RAdeg\"], d[\"DEdeg\"], s=1)\n",
|
|
"plt.scatter(d[\"z\"], d[\"M500\"], s=1)\n",
|
|
"\n",
|
|
"plt.yscale(\"log\")\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "7cfb2a1d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "b01c6134",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "267eb013",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-06T10:20:27.266576Z",
|
|
"start_time": "2022-11-06T10:20:24.523404Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"Nsim = 9844\n",
|
|
"Nsnap = 1016\n",
|
|
"\n",
|
|
"data = utils.load_processed(Nsim, Nsnap)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "f8c6d928",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-06T10:24:20.697506Z",
|
|
"start_time": "2022-11-06T10:24:19.631208Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"bins = np.arange(11.8, 15.4, 0.2)\n",
|
|
"\n",
|
|
"\n",
|
|
"plt.figure()\n",
|
|
"x, mu, std = csiborgtools.match.number_density(data, \"m200\", bins, 200, True)\n",
|
|
"plt.errorbar(x, mu, std, capsize=4, label=r\"$M_{200c}$\")\n",
|
|
"\n",
|
|
"x, mu, std = csiborgtools.match.number_density(data, \"m500\", bins, 200, True)\n",
|
|
"plt.errorbar(x, mu, std, capsize=4, label=r\"$M_{500c}$\")\n",
|
|
"\n",
|
|
"x, mu, std = csiborgtools.match.number_density(data, \"totpartmass\", bins, 200, True)\n",
|
|
"plt.errorbar(x, mu, std, capsize=4, label=r\"$M_{\\rm tot}$\")\n",
|
|
"\n",
|
|
"x, mu, std = csiborgtools.match.number_density(data, \"mass_mmain\", bins, 200, True)\n",
|
|
"plt.errorbar(x, mu, std, capsize=4, label=r\"$M_{\\rm mmain}$\")\n",
|
|
"\n",
|
|
"plt.legend()\n",
|
|
"\n",
|
|
"plt.yscale(\"log\")\n",
|
|
"plt.xscale(\"log\")\n",
|
|
"\n",
|
|
"plt.ylabel(r\"$\\phi / (\\mathrm{Mpc}^{-3})~\\mathrm{dex}$\")\n",
|
|
"plt.xlabel(r\"$M_{\\rm x}$\")\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.savefig(\"../plots/HMF.png\", dpi=450)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "985d46c9",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-06T10:20:46.078113Z",
|
|
"start_time": "2022-11-06T10:20:44.524929Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"nfw = csiborgtools.fits.NFWProfile()\n",
|
|
"m200_nfw = nfw.enclosed_mass(data[\"r200\"], data[\"Rs\"], data[\"rho0\"])\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"plt.figure()\n",
|
|
"\n",
|
|
"plt.scatter(data[\"m200\"], m200_nfw, s=1)\n",
|
|
"t = np.linspace(1e11, 1e15)\n",
|
|
"plt.plot(t, t, c=\"red\", ls=\"--\", lw=1.5)\n",
|
|
"plt.xscale(\"log\")\n",
|
|
"plt.yscale(\"log\")\n",
|
|
"\n",
|
|
"plt.xlabel(r\"$M_{200c}$\")\n",
|
|
"plt.ylabel(r\"$M_{\\mathrm{NFW}, 200c}$\")\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.savefig(\"../plots/enclosed_vs_nfw.png\", dpi=450)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "8923ca86",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6eb8ba93",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2022-11-06T10:22:19.498275Z",
|
|
"start_time": "2022-11-06T10:22:17.953025Z"
|
|
},
|
|
"scrolled": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"logm200 = np.log10(data[\"m200\"])\n",
|
|
"conc = data[\"conc\"]\n",
|
|
"\n",
|
|
"N = 10\n",
|
|
"bins = np.linspace(logm200.min(), logm200.max(), N)\n",
|
|
"x = [0.5*(bins[i] + bins[i + 1]) for i in range(N-1)]\n",
|
|
"y = np.full((N - 1, 3), np.nan)\n",
|
|
"for i in range(N - 1):\n",
|
|
" mask = (logm200 >= bins[i]) & (logm200 < bins[i + 1]) & np.isfinite(conc)\n",
|
|
" y[i, :] = np.percentile(conc[mask], [14, 50, 84])\n",
|
|
"\n",
|
|
"\n",
|
|
" \n",
|
|
" \n",
|
|
"fig, axs = plt.subplots(nrows=2, sharex=True, figsize=(6.4, 6.4 * 1))\n",
|
|
"fig.subplots_adjust(hspace=0)\n",
|
|
"axs[0].plot(x, y[:, 1], c=\"red\", marker=\"o\")\n",
|
|
"axs[0].fill_between(x, y[:, 0], y[:, 2], color=\"red\", alpha=0.25)\n",
|
|
"axs[1].hist(logm200, bins=\"auto\", log=True)\n",
|
|
"\n",
|
|
"for b in bins:\n",
|
|
" for i in range(2):\n",
|
|
" axs[i].axvline(b, c=\"orange\", lw=0.5)\n",
|
|
"\n",
|
|
"axs[0].set_ylim(2, 10)\n",
|
|
"axs[1].set_xlabel(r\"$M_{200c}$\")\n",
|
|
"axs[0].set_ylabel(r\"$c_{200c}$\")\n",
|
|
"axs[1].set_ylabel(r\"Counts\")\n",
|
|
"\n",
|
|
"plt.tight_layout(h_pad=0)\n",
|
|
"plt.savefig(\"../plots/mass_concentration.png\", dpi=450)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "be26cbcc",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "venv_galomatch",
|
|
"language": "python",
|
|
"name": "venv_galomatch"
|
|
},
|
|
"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.0"
|
|
},
|
|
"vscode": {
|
|
"interpreter": {
|
|
"hash": "f29d02a8350410abc2a9fb79641689d10bf7ab64afc03ec87ca3cf6ed2daa499"
|
|
}
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|