{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Compute SVD from Raytransfer Matrix\n", "===" ] }, { "attachments": {}, "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "When it comes to tomographic inversion algorithms, SVD calculation is often needed and\n", ":obj:`cherab.phix.inversion` subpackage also requires. An RTM is a so large matrix that we have to\n", "prepare a lot of computer resources with large memory size." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "SVD is performed by the following equation:\n", "$$\n", "U\\Sigma V^\\mathsf{T} = AL^{-1},\n", "$$\n", "where $A$ is an RTM, $L$ is the regularization operator\n", "(e.g. $L=\\text{Laplacian}$ if using Phillips regularization)." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "We proceed with the following process to compute SVD:\n", "\n", "1. Compute $L^{-1}$\n", "2. Compute the product of matrices $AL^{-1}$\n", "3. Compute SVD with $AL^{-1}$\n", "\n", "To reduce memory usage, each generated arrays are stored on disk and deleted from RAM.\n", "Additionally, we compute the folloing matrix for the future inversion work.\n", "\n", "4. Compute $L^{-1}V$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n // Clean up Bokeh references\n if (id != null && id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim();\n if (id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"d62d55f9-fde4-417d-a0bd-00ee4f20f381\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.2.2.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"d62d55f9-fde4-417d-a0bd-00ee4f20f381\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));", "application/vnd.bokehjs_load.v0+json": "" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "---------- System Info ----------\n", "System : Linux, x86_64\n", "Kernel : 6.2.0-34-generic\n", "Compiler : GCC 11.3.0\n", "CPU : 128 (Core)\n", "Memory : 125 GiB\n", "Disk : 915 GiB\n", "---------------------------------\n" ] } ], "source": [ "import os\n", "import platform\n", "from pathlib import Path\n", "from textwrap import dedent\n", "\n", "import numpy as np\n", "import psutil\n", "from bokeh.plotting import output_notebook\n", "\n", "# To show resource usage during calculation\n", "from dask.diagnostics import ResourceProfiler\n", "from numpy.lib.format import open_memmap\n", "from raysect.optical import World\n", "from scipy.sparse.linalg import inv\n", "\n", "from cherab.phix.tools import compute_dmat\n", "from cherab.phix.tools.raytransfer import import_phix_rtc\n", "\n", "output_notebook()\n", "\n", "# directory path where the RTM is stored.\n", "RTM_DIR = Path().cwd().parent.parent.parent / \"output\" / \"RTM\" / \"2022_12_13_00_49_29\"\n", "\n", "# Load PHiX Raytransfer object\n", "world = World()\n", "rtc = import_phix_rtc(world)\n", "\n", "# show system info\n", "core = os.cpu_count()\n", "gb = float(1024**3)\n", "mem_total = int(psutil.virtual_memory()[0] / gb)\n", "storage_total = int(psutil.disk_usage(\"/\")[0] / gb)\n", "print(\n", " dedent(\n", " f\"\"\"\n", " ---------- System Info ----------\n", " System : {platform.system()}, {platform.machine()}\n", " Kernel : {platform.release()}\n", " Compiler : {platform.python_compiler()}\n", " CPU : {core} (Core)\n", " Memory : {mem_total} GiB\n", " Disk : {storage_total} GiB\n", " ---------------------------------\n", " \"\"\"\n", " )[1:-1]\n", ")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Compute $L^{-1}$\n", "---" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"b725f4c8-45a5-4314-a318-13adbd801644\":{\"version\":\"3.2.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1001\",\"attributes\":{\"width\":800,\"height\":300,\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1011\",\"attributes\":{\"end\":39.11252071200579}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1012\",\"attributes\":{\"end\":1675.5}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1013\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1014\"},\"extra_y_ranges\":{\"type\":\"map\",\"entries\":[[\"memory\",{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1040\",\"attributes\":{\"start\":330.002432,\"end\":12052.393984}}]]},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1004\",\"attributes\":{\"text\":\"Profile Results\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1035\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1029\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1030\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1031\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.04476950100797694,1.046270018996438,2.0477091380016645,3.049113408997073,4.05041578199598,5.05174042499857,6.053107145999093,7.054502836996107,8.055837867999799,9.05715330199746,10.05845747400599,11.0597660469939,12.061078198996256,13.0623795720021,14.063701014994876,15.065009337005904,16.066311689995928,17.06763410200074,18.068948864005506,19.07025204700767,20.07157139800256,21.072894451004686,22.07419687299989,23.07550609500322,24.076817237000796,25.078121979007847,26.07944055099506,27.080750602995977,28.082050954006263,29.083365836006124,30.084664927999256,31.08597727000597,32.087286181005766,33.088584843004355,34.08990121399984,35.09121608499845,36.09251637700072,37.093838208005764,38.09514851900167]],[\"y\",[0.0,99.9,1675.5,100.9,99.9,99.9,99.9,99.9,99.9,100.9,100.9,99.9,98.9,100.9,98.9,100.9,99.9,99.9,99.9,99.9,100.9,98.9,99.9,99.9,100.9,98.9,100.9,99.9,100.9,98.9,100.9,99.9,100.9,99.9,99.9,98.9,100.9,99.9,99.9]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1036\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1037\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1032\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_width\":4}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1033\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_alpha\":0.1,\"line_width\":4}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1034\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_alpha\":0.2,\"line_width\":4}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1047\",\"attributes\":{\"y_range_name\":\"memory\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1041\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1042\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1043\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.04476950100797694,1.046270018996438,2.0477091380016645,3.049113408997073,4.05041578199598,5.05174042499857,6.053107145999093,7.054502836996107,8.055837867999799,9.05715330199746,10.05845747400599,11.0597660469939,12.061078198996256,13.0623795720021,14.063701014994876,15.065009337005904,16.066311689995928,17.06763410200074,18.068948864005506,19.07025204700767,20.07157139800256,21.072894451004686,22.07419687299989,23.07550609500322,24.076817237000796,25.078121979007847,26.07944055099506,27.080750602995977,28.082050954006263,29.083365836006124,30.084664927999256,31.08597727000597,32.087286181005766,33.088584843004355,34.08990121399984,35.09121608499845,36.09251637700072,37.093838208005764,38.09514851900167]],[\"y\",[330.002432,330.911744,454.426624,590.741504,727.056384,862.322688,997.588992,1133.903872,1270.218752,1406.533632,1542.848512,1679.163392,1816.526848,1952.841728,2089.156608,2226.520064,2361.786368,2499.149824,2635.464704,2771.779584,2908.094464,3044.409344,3180.724224,3317.039104,3450.208256,3580.23168,3710.255104,3841.327104,3972.399104,4104.51968,4236.640256,4367.712256,4500.881408,5405.032448,10301.374464,12052.393984,3201.982464,3726.270464,4249.509888]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1048\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1049\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1044\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_width\":4}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1045\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_alpha\":0.1,\"line_width\":4}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1046\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_alpha\":0.2,\"line_width\":4}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1010\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1025\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1026\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1027\",\"attributes\":{\"dimensions\":\"width\"}},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1028\",\"attributes\":{\"dimensions\":\"width\"}}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1020\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1021\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1022\"},\"axis_label\":\"% CPU\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1023\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1051\",\"attributes\":{\"y_range_name\":\"memory\",\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1052\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1053\"},\"axis_label\":\"Memory (MB)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1054\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1015\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1016\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1017\"},\"axis_label\":\"Time (s)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1018\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1019\",\"attributes\":{\"axis\":{\"id\":\"p1015\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1024\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1020\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1038\",\"attributes\":{\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1039\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"% CPU\"},\"renderers\":[{\"id\":\"p1035\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1050\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Memory\"},\"renderers\":[{\"id\":\"p1047\"}]}}]}}]}}]}};\n const render_items = [{\"docid\":\"b725f4c8-45a5-4314-a318-13adbd801644\",\"roots\":{\"p1001\":\"c470fef1-75f5-44bd-8b86-dc25c572045b\"},\"root_ids\":[\"p1001\"]}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1001" } }, "output_type": "display_data" }, { "data": { "text/html": [ "
figure(
id = 'p1001', …)
above = [],
align = 'auto',
aspect_ratio = None,
aspect_scale = 1,
background_fill_alpha = 1.0,
background_fill_color = '#ffffff',
below = [LinearAxis(id='p1015', ...)],
border_fill_alpha = 1.0,
border_fill_color = '#ffffff',
center = [Grid(id='p1019', ...), Grid(id='p1024', ...), Legend(id='p1038', ...)],
context_menu = None,
css_classes = [],
disabled = False,
extra_x_ranges = {},
extra_x_scales = {},
extra_y_ranges = {'memory': Range1d(id='p1040', ...)},
extra_y_scales = {},
flow_mode = 'block',
frame_align = True,
frame_height = None,
frame_width = None,
height = 300,
height_policy = 'auto',
hidpi = True,
hold_render = False,
js_event_callbacks = {},
js_property_callbacks = {},
left = [LinearAxis(id='p1020', ...)],
lod_factor = 10,
lod_interval = 300,
lod_threshold = 2000,
lod_timeout = 500,
margin = None,
match_aspect = False,
max_height = None,
max_width = None,
min_border = 5,
min_border_bottom = None,
min_border_left = None,
min_border_right = None,
min_border_top = None,
min_height = None,
min_width = None,
name = None,
outline_line_alpha = 1.0,
outline_line_cap = 'butt',
outline_line_color = '#e5e5e5',
outline_line_dash = [],
outline_line_dash_offset = 0,
outline_line_join = 'bevel',
outline_line_width = 1,
output_backend = 'canvas',
renderers = [GlyphRenderer(id='p1035', ...), GlyphRenderer(id='p1047', ...)],
reset_policy = 'standard',
resizable = False,
right = [LinearAxis(id='p1051', ...)],
sizing_mode = None,
styles = {},
stylesheets = [],
subscribed_events = PropertyValueSet(),
syncable = True,
tags = [],
title = Title(id='p1004', ...),
title_location = 'above',
toolbar = Toolbar(id='p1010', ...),
toolbar_inner = False,
toolbar_location = 'above',
toolbar_sticky = True,
visible = True,
width = 800,
width_policy = 'auto',
x_range = Range1d(id='p1011', ...),
x_scale = LinearScale(id='p1013', ...),
y_range = Range1d(id='p1012', ...),
y_scale = LinearScale(id='p1014', ...))
\n", "\n" ], "text/plain": [ "figure(id='p1001', ...)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# define resource profiler to monitor usage of memory and CPU\n", "resource_profiler = ResourceProfiler()\n", "\n", "with resource_profiler:\n", " # Compute Laplacian sparse matrix\n", " laplacian = compute_dmat(rtc.voxel_map)\n", "\n", " # create memory-map to store array\n", " L_inv = open_memmap(\n", " RTM_DIR / \"L_inv.npy\", dtype=np.float64, mode=\"w+\", shape=(rtc.bins, rtc.bins)\n", " )\n", "\n", " # Compute L^-1\n", " L_inv[:] = inv(laplacian.tocsc()).toarray()\n", "\n", "resource_profiler.visualize()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Compute $AL^{-1}$" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Load RTM with the reshape to 2D array from 3D" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "rtm = open_memmap(RTM_DIR / \"rtm.npy\").reshape((-1, rtc.bins))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"7c5d6cb1-e51e-4bd6-b850-c3407941b743\":{\"version\":\"3.2.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1057\",\"attributes\":{\"width\":800,\"height\":300,\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1067\",\"attributes\":{\"end\":77.41412752198812}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1068\",\"attributes\":{\"end\":12652.6}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1069\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1070\"},\"extra_y_ranges\":{\"type\":\"map\",\"entries\":[[\"memory\",{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1096\",\"attributes\":{\"start\":7586.85696,\"end\":49032.871936}}]]},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1060\",\"attributes\":{\"text\":\"Profile Results\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1091\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1085\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1086\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1087\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.11457330398843624,1.1162058659974718,2.1179380749963457,3.120062482994399,4.121944627986522,5.123990807987866,6.126695839993772,7.129600915999617,8.132139801993617,9.134961539995857,10.137649732991122,11.14021086799039,12.142356864991598,13.144293607998407,14.146523673000047,15.147952189989155,16.150045877991943,17.15183177498693,18.153762807996827,19.1561915059865,20.159121960998164,21.16181568299362,22.164256090996787,23.16678872698685,24.169443159000366,25.17179506899265,26.17359874599788,27.175240445998497,28.176053158997092,29.178062048988068,30.180196215995238,31.182944744999986,32.18565381599183,33.18835138599388,34.191033286988386,35.19365188998927,36.196264172991505,37.19912503899832,38.20164925399877,39.20386643799429,40.20575262099737,41.208125389995985,42.21028304498759,43.21187572598865,44.21377806899545,45.21589953498915,46.21773684899381,47.219578971999,48.221428765988094,49.223222720989725,50.225584809988504,51.22826896999322,52.230810534994816,53.23353607399622,54.236188573995605,55.2387702470005,56.24163615198631,57.24398682099127,58.24634144999436,59.24782227299875,60.248962136000046,61.25020534599025,62.25155219298904,63.25289785998757,64.25423029800004,65.25555564499518,66.25690597199718,67.25823861898971,68.25959911498649,69.26095729100052,70.26230374099396,71.26365353699657,72.26499362399045,73.26631219098635,74.26764570799423,75.26900482398923,76.2703300909925]],[\"y\",[0.0,100.8,9754.6,12542.8,12490.2,12423.6,12459.4,12504.2,12525.5,12510.5,12477.4,12524.8,12520.1,12513.6,12509.4,12515.6,12508.0,12522.6,12488.1,12495.1,12502.7,12472.3,12518.9,12480.1,12525.1,12522.4,12492.1,12509.1,12503.0,12506.8,12534.0,12554.9,12572.2,12620.9,12618.8,12568.8,12627.4,12630.9,12592.6,12641.5,12592.7,12629.3,12585.6,12628.6,12607.2,12620.4,12608.6,12607.5,12596.8,12613.0,12584.7,12622.7,12591.4,12614.1,12626.1,12576.1,12635.4,12652.6,12583.6,8311.9,100.9,99.9,99.9,99.9,99.9,99.9,99.9,99.9,100.9,99.9,99.9,99.9,99.9,98.9,100.9,99.9,99.9]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1092\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1093\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1088\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_width\":4}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1089\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_alpha\":0.1,\"line_width\":4}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1090\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_alpha\":0.2,\"line_width\":4}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1103\",\"attributes\":{\"y_range_name\":\"memory\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1097\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1098\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1099\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.11457330398843624,1.1162058659974718,2.1179380749963457,3.120062482994399,4.121944627986522,5.123990807987866,6.126695839993772,7.129600915999617,8.132139801993617,9.134961539995857,10.137649732991122,11.14021086799039,12.142356864991598,13.144293607998407,14.146523673000047,15.147952189989155,16.150045877991943,17.15183177498693,18.153762807996827,19.1561915059865,20.159121960998164,21.16181568299362,22.164256090996787,23.16678872698685,24.169443159000366,25.17179506899265,26.17359874599788,27.175240445998497,28.176053158997092,29.178062048988068,30.180196215995238,31.182944744999986,32.18565381599183,33.18835138599388,34.191033286988386,35.19365188998927,36.196264172991505,37.19912503899832,38.20164925399877,39.20386643799429,40.20575262099737,41.208125389995985,42.21028304498759,43.21187572598865,44.21377806899545,45.21589953498915,46.21773684899381,47.219578971999,48.221428765988094,49.223222720989725,50.225584809988504,51.22826896999322,52.230810534994816,53.23353607399622,54.236188573995605,55.2387702470005,56.24163615198631,57.24398682099127,58.24634144999436,59.24782227299875,60.248962136000046,61.25020534599025,62.25155219298904,63.25289785998757,64.25423029800004,65.25555564499518,66.25690597199718,67.25823861898971,68.25959911498649,69.26095729100052,70.26230374099396,71.26365353699657,72.26499362399045,73.26631219098635,74.26764570799423,75.26900482398923,76.2703300909925]],[\"y\",[7586.85696,18740.559872,30224.564224,30224.564224,30523.408384,30801.281024,31061.327872,31329.763328,31598.198784,31866.63424,32135.069696,32352.124928,32620.560384,32935.133184,33110.245376,33349.320704,33532.821504,33724.710912,34014.117888,34282.553344,34555.183104,34817.327104,35058.499584,35353.14944,35386.703872,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35387.752448,35728.539648,36650.237952,37578.227712,38505.168896,39435.255808,40339.12832,41269.215232,42200.35072,43133.58336,44068.913152,44925.599744,45522.239488,46116.78208,46706.081792,47288.041472,47862.66112,48446.717952,49032.871936]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1104\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1105\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1100\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_width\":4}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1101\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_alpha\":0.1,\"line_width\":4}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1102\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_alpha\":0.2,\"line_width\":4}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1066\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1081\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1082\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1083\",\"attributes\":{\"dimensions\":\"width\"}},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1084\",\"attributes\":{\"dimensions\":\"width\"}}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1076\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1077\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1078\"},\"axis_label\":\"% CPU\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1079\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1107\",\"attributes\":{\"y_range_name\":\"memory\",\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1108\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1109\"},\"axis_label\":\"Memory (MB)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1110\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1071\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1072\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1073\"},\"axis_label\":\"Time (s)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1074\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1075\",\"attributes\":{\"axis\":{\"id\":\"p1071\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1080\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1076\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1094\",\"attributes\":{\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1095\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"% CPU\"},\"renderers\":[{\"id\":\"p1091\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1106\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Memory\"},\"renderers\":[{\"id\":\"p1103\"}]}}]}}]}}]}};\n const render_items = [{\"docid\":\"7c5d6cb1-e51e-4bd6-b850-c3407941b743\",\"roots\":{\"p1057\":\"c12cadc0-3fab-466a-8398-a20e6b67080e\"},\"root_ids\":[\"p1057\"]}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1057" } }, "output_type": "display_data" }, { "data": { "text/html": [ "
figure(
id = 'p1057', …)
above = [],
align = 'auto',
aspect_ratio = None,
aspect_scale = 1,
background_fill_alpha = 1.0,
background_fill_color = '#ffffff',
below = [LinearAxis(id='p1071', ...)],
border_fill_alpha = 1.0,
border_fill_color = '#ffffff',
center = [Grid(id='p1075', ...), Grid(id='p1080', ...), Legend(id='p1094', ...)],
context_menu = None,
css_classes = [],
disabled = False,
extra_x_ranges = {},
extra_x_scales = {},
extra_y_ranges = {'memory': Range1d(id='p1096', ...)},
extra_y_scales = {},
flow_mode = 'block',
frame_align = True,
frame_height = None,
frame_width = None,
height = 300,
height_policy = 'auto',
hidpi = True,
hold_render = False,
js_event_callbacks = {},
js_property_callbacks = {},
left = [LinearAxis(id='p1076', ...)],
lod_factor = 10,
lod_interval = 300,
lod_threshold = 2000,
lod_timeout = 500,
margin = None,
match_aspect = False,
max_height = None,
max_width = None,
min_border = 5,
min_border_bottom = None,
min_border_left = None,
min_border_right = None,
min_border_top = None,
min_height = None,
min_width = None,
name = None,
outline_line_alpha = 1.0,
outline_line_cap = 'butt',
outline_line_color = '#e5e5e5',
outline_line_dash = [],
outline_line_dash_offset = 0,
outline_line_join = 'bevel',
outline_line_width = 1,
output_backend = 'canvas',
renderers = [GlyphRenderer(id='p1091', ...), GlyphRenderer(id='p1103', ...)],
reset_policy = 'standard',
resizable = False,
right = [LinearAxis(id='p1107', ...)],
sizing_mode = None,
styles = {},
stylesheets = [],
subscribed_events = PropertyValueSet(),
syncable = True,
tags = [],
title = Title(id='p1060', ...),
title_location = 'above',
toolbar = Toolbar(id='p1066', ...),
toolbar_inner = False,
toolbar_location = 'above',
toolbar_sticky = True,
visible = True,
width = 800,
width_policy = 'auto',
x_range = Range1d(id='p1067', ...),
x_scale = LinearScale(id='p1069', ...),
y_range = Range1d(id='p1068', ...),
y_scale = LinearScale(id='p1070', ...))
\n", "\n" ], "text/plain": [ "figure(id='p1057', ...)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create memory-map to store array\n", "AL_inv = open_memmap(RTM_DIR / \"AL_inv.npy\", dtype=np.float64, mode=\"w+\", shape=rtm.shape)\n", "\n", "# compute AL^-1\n", "with resource_profiler:\n", " AL_inv[:] = rtm.dot(L_inv)\n", "\n", "resource_profiler.visualize()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Compute SVD: $U\\Sigma V^\\mathsf{T} = AL^{-1}$\n", "---" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Define $U, \\Sigma, V^\\mathsf{T}$ memory-map array firstly." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# define array shape number\n", "m, n = AL_inv.shape\n", "k = min(n, m)\n", "\n", "u_row = k if m < n else m\n", "vh_col = n if m < n else k\n", "\n", "# create memory-map to store\n", "u = open_memmap(RTM_DIR / \"u.npy\", dtype=np.float64, mode=\"w+\", shape=(u_row, k))\n", "s = open_memmap(RTM_DIR / \"s.npy\", dtype=np.float64, mode=\"w+\", shape=(k,))\n", "vh = open_memmap(RTM_DIR / \"vh.npy\", dtype=np.float64, mode=\"w+\", shape=(k, vh_col))" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "compute SVD" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"d0e69342-072e-4b48-a26a-ba3f2f9e476d\":{\"version\":\"3.2.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1113\",\"attributes\":{\"width\":800,\"height\":300,\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1123\",\"attributes\":{\"end\":1111.8034767750069}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1124\",\"attributes\":{\"end\":12815.2}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1125\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1126\"},\"extra_y_ranges\":{\"type\":\"map\",\"entries\":[[\"memory\",{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1152\",\"attributes\":{\"start\":35681.820672,\"end\":84050.337792}}]]},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1116\",\"attributes\":{\"text\":\"Profile Results\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1147\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1141\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1142\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1143\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.155562229003408,1.1571551490051206,2.1585338240111014,3.159857031001593,4.1612239759997465,5.162528202999965,6.163861578999786,7.165172225999413,8.166499443002976,9.167812420011614,10.169115087002865,11.170426783006405,12.17175275000045,13.173061566005345,14.174402162010665,15.175712438998744,16.177022976000444,17.17833264201181,18.17966316800448,19.180972965012188,20.182311440003105,21.18360741699871,22.18491097301012,23.186217539012432,24.18751524601248,25.188810583000304,26.190160648009623,27.191453814011766,28.192784140002914,29.194088486008695,30.195385302009527,31.196691247998388,32.197987695006304,33.199283531008405,34.20058974700805,35.20188003301155,36.20317582901043,37.204468834999716,38.20576433101087,39.20705478700984,40.208350683009485,41.20964684900537,42.21094348499901,43.21223902099882,44.21353662700858,45.21483250200981,46.216128798012505,47.2174259040039,48.21873351901013,49.22002935400815,50.22132378999959,51.22263417500653,52.22393095100415,53.2252273960039,54.22652540099807,55.2278241560125,56.22911932200077,57.23041465700953,58.2317095920007,59.23300735800876,60.23430881201057,61.235639236008865,62.237064437998924,63.23848285000713,64.23988426099822,65.24128599300457,66.24273249400721,67.24416175500664,68.24561535600515,69.24706624601095,70.24844170900178,71.24973580399819,72.25102856800368,73.25232379299996,74.2536199370079,75.25491436199809,76.25620809600514,77.25751312100329,78.25880600500386,79.2601003190066,80.26139518400305,81.26270037800714,82.2639939619985,83.26528709700506,84.26659254101105,85.26788499500253,86.26922931800073,87.27101711800788,88.27273064100882,89.27357735700207,90.27533590800886,91.27827168600925,92.28241842100397,93.28642694900918,94.28977763500006,95.29154837600072,96.2929956750013,97.29355996900995,98.29583745601121,99.30032108000887,100.30483458400704,101.30916330299806,102.31298352600425,103.31359617901035,104.31503725799848,105.31674465999822,106.31805541300855,107.32119738501206,108.3256599400047,109.33011142500618,110.33363360600197,111.33562519001134,112.33727012301097,113.33958175800217,114.34400266400189,115.34855791600421,116.35305299900938,117.35756349300209,118.36106572400604,119.36160939800902,120.36308501601161,121.36499524100509,122.36675206100335,123.3685155310086,124.37156507500913,125.37617496500025,126.37989928000025,127.38169031900179,128.38348156800203,129.3849726740009,130.38649644100224,131.3904085200047,132.39381191400753,133.3952516420104,134.39754484700097,135.4013837579987,136.40315259700583,137.40459559600276,138.40643951200764,139.41048331800266,140.41453695300152,141.41760523599805,142.419250758001,143.42103870600113,144.42302521900274,145.42488612500892,146.4258641960041,147.42759172600927,148.4290537630004,149.42984730900207,150.43156152901065,151.4333473880106,152.43493224101258,153.43668292000075,154.43760569200094,155.43937602100777,156.44117360901146,157.4427389820048,158.4444926510041,159.4456001380022,160.4470181659999,161.44847595300234,162.44959485001164,163.45118923200062,164.45327728100528,165.45492032299808,166.4567162010062,167.45758248399943,168.4591433880123,169.46097672400356,170.46163083300053,171.46311304900155,172.46499854400463,173.46694478600693,174.46972102401196,175.47421833600674,176.47836948699842,177.48245034100546,178.48620223300532,179.48981887901027,180.49197996599833,181.49372068401135,182.49549471199862,183.49719445100345,184.49866306700278,185.50007447499956,186.5018602909986,187.5039469100011,188.50631085100758,189.51025350800774,190.51434274000349,191.51755414700892,192.5191186900047,193.52078517001064,194.5218759970012,195.52354977600044,196.5254517100111,197.52786554901104,198.5323812590068,199.53662862700003,200.54005568800494,201.54183361500327,202.5437201080058,203.54634571100178,204.55039584400947,205.5544161190046,206.55772440200963,207.55962229600118,208.56129400500504,209.5638922490034,210.56891952500155,211.57260156801203,212.57373501200345,213.57546948001254,214.5779702160071,215.5824452470115,216.58607984099945,217.58862331599812,218.58974168100394,219.5922289070004,220.59656744200038,221.5991106670117,222.60054892300104,223.60230453900294,224.60641017000307,225.60976010200102,226.61155487800715,227.61415997100994,228.61837722900964,229.62177040000097,230.62353980600892,231.62609968001198,232.62960690700857,233.63121300800412,234.6337504030089,235.63712176401168,236.63769727300678,237.64017065901135,238.6437285150023,239.64560967800207,240.64787641000294,241.65187441400485,242.6533695570106,243.6557406560023,244.65938058900065,245.66100786899915,246.66238862600585,247.66649642599805,248.6704693500069,249.67381613200996,250.67543861200102,251.67795762600144,252.681614429006,253.6841341130057,254.6875663230021,255.68985111299844,256.693124027006,257.6935835190088,258.69497847500315,259.69638742999814,260.6980950270081,261.70048480499827,262.70181309300824,263.7044187940046,264.7081212960038,265.7103654380044,266.7137930570025,267.7153160989983,268.7178514230036,269.7215434440004,270.7239065520116,271.727517006002,272.72910191600386,273.73053460000665,274.73377680400154,275.73524356700364,276.7374470900104,277.74091554799816,278.7415810130042,279.7437453169987,280.7474737270095,281.749746668007,282.7513020490005,283.7534572630102,284.7575943510019,285.7616762910038,286.76440995901066,287.76576572500926,288.76743954200356,289.7690657010098,290.7696543780039,291.77138482400915,292.77280583800166,293.77363872900605,294.77524413799983,295.77703495199967,296.77771352700074,297.7794534010027,298.78095931300777,299.7817688140058,300.7841145420098,301.78894332100754,302.79280754701176,303.7937084150035,304.79618431000563,305.79998696700204,306.80157651600894,307.8039601230121,308.80790499701106,309.81027750400244,310.81356043599953,311.81587599401246,312.8196977410116,313.82210699700227,314.8263876609999,315.8297080120101,316.83114460500656,317.8336125190108,318.83852757500426,319.8424698279996,320.8464189510123,321.8494034809992,322.8508224940015,323.85306092500105,324.85654945101123,325.8583838420018,326.8616254350054,327.8630997970031,328.8645135400002,329.8656872900028,330.8679678890039,331.8723683999997,332.87533538900607,333.8777279450005,334.88115869300964,335.882695133012,336.8841558550048,337.8856125070015,338.8870423890039,339.8884943820012,340.88993793400005,341.891306259,342.89306296200084,343.8955577250017,344.89893129300617,345.9011030350084,346.9045569620066,347.90565258399874,348.90713541500736,349.9085693070083,350.91032977100986,351.9135916820087,352.91514038101013,353.91660132299876,354.91854550100106,355.92169176600873,356.92403522301174,357.92797769499884,358.9296088320116,359.9318485620024,360.93651331400906,361.94032780001,362.9416268650093,363.94408792900504,364.9481581380096,365.9496505880088,366.9522226090048,367.95683728200675,368.960222669004,369.96242952000466,370.96558654399996,371.9678369030007,372.9718924820045,373.97371212299913,374.9759496020124,375.9796133820055,376.9813082059991,377.9837541500019,378.98770241100283,379.98937915600254,380.99107484100387,381.99355153299985,382.99819831601053,384.00256209600775,385.00574601801054,386.00727397800074,387.00887146500463,388.0096384350036,389.0114089070121,390.0130819620099,391.0136776569998,392.0155645660125,393.0170370160049,394.01838756000507,395.0224649180018,396.0264459980099,397.0296033120103,398.0312103680044,399.03264998900704,400.03391207499953,401.036938122008,402.04092222200416,403.0416363740078,404.04393047100166,405.04832439000893,406.05208071600646,407.0544311320118,408.05839765199926,409.0616065140057,410.0630201360036,411.06452911499946,412.0663737040013,413.0696451940021,414.0712491200102,415.07323912600987,416.0758322850015,417.0783614850079,418.0817999300052,419.08416716501233,420.0880599880038,421.09035305400903,422.09380167900235,423.09616787399864,424.10058293200564,425.1044419250102,426.1061654280056,427.1091445760103,428.1095997830125,429.1113124859985,430.11274061699805,431.11376158001076,432.1159372500115,433.1190724330081,434.1217971770093,435.12615452700993,436.12957414200355,437.1312476860039,438.1336894880078,439.1383462189988,440.142429694999,441.14639782501035,442.1495552770066,443.1509497590014,444.15239173000737,445.15358998700685,446.15501595700334,447.1575959460024,448.1593576669984,449.1608163470082,450.1624423320027,451.16641420101223,452.1696513909992,453.1722761780111,454.17704829599825,455.18056918799994,456.1818319120066,457.1842991440062,458.18796946101065,459.18947464000667,460.19203583900526,461.19661029100826,462.2003580669989,463.2016252110043,464.20403542400163,465.2087429430103,466.2126807530003,467.2136007480003,468.21615617700445,469.2204248370108,470.2238980210095,471.2255297250085,472.22724401700543,473.2297810960008,474.2343749580032,475.23837794600695,476.2416419049987,477.24319742200896,478.2452409140096,479.24752057100704,480.2521174620051,481.2559949340066,482.257892611,483.25946483699954,484.2614048520045,485.2637258370087,486.26819787200657,487.2727902940096,488.27718356100377,489.2805472570035,490.28162695599895,491.28342724600225,492.28533805201005,493.2868057710002,494.2893647590099,495.29358802099887,496.297883539999,497.3020803130057,498.30514982700697,499.30680120000034,500.30857733001176,501.3096688890073,502.31175293000706,503.3143443880108,504.3184135629999,505.32226705500216,506.32635622999805,507.33035983800073,508.3343954849988,509.33833805400354,510.34234713100886,511.3463793080009,512.3495670380071,513.3509781390021,514.3524399370071,515.3536121540092,516.3550933119986,517.3569729380106,518.3588634850021,519.3606470740051,520.3616207260056,521.3632194610109,522.3649899709999,523.3669231759995,524.3684894210019,525.3695637000055,526.3710911870003,527.37275403901,528.3736609930056,529.3757574040064,530.3778983930097,531.3811754000053,532.3845701550017,533.3855723560118,534.3861892980058,535.3879375480028,536.3896974970121,537.3912052630039,538.3932489150029,539.3947166630096,540.3963075080101,541.3978468240093,542.3993994190096,543.4012893150066,544.4029901470058,545.4044465550105,546.405627020009,547.4073448710114,548.4088951270096,549.4101645900082,550.4140555400081,551.4184508059989,552.4223581960105,553.4262797750125,554.4299425720092,555.4337334640004,556.4383802430093,557.4420667490049,558.4449036779988,559.4470023879985,560.448741168002,561.4496033830073,562.4515730760031,563.453054484009,564.4543139169982,565.4582863640098,566.4622842710087,567.4663903949986,568.4704622600111,569.4741183959995,570.4770365130098,571.4775872059981,572.4790647629998,573.480981879009,574.4820995250047,575.4851612390048,576.4896070530085,577.4940380269982,578.4983632950025,579.5015763929987,580.5030781200039,581.5046532740089,582.5058749080054,583.5074649720045,584.509782306006,585.5141682410031,586.5184726590087,587.5217129869998,588.523208854007,589.5246914000018,590.5255911330023,591.5278454290092,592.532485157004,593.5369261310116,594.5409527570009,595.5416046970058,596.5434442530095,597.5451386440109,598.5462040429993,599.550254376998,600.5542218640039,601.5607295210066,602.5706553120108,603.5728460680111,604.5779793630063,605.5815539010073,606.5837116290058,607.5884914930066,608.5932264190051,609.5982601760043,610.6032978830044,611.6103040160087,612.6157325620006,613.6288194740046,614.6348786029994,615.6413264810108,616.6459775690018,617.651475813007,618.6636294010095,619.6664855990093,620.671587875011,621.6757496659993,622.6776217310107,623.6807379520033,624.6859333650063,625.6901483050024,626.6938008910074,627.6984309300024,628.7037638790061,629.7075719300046,630.7126277159987,631.7176379040029,632.7233632420102,633.7261022130115,634.7295835929981,635.7345937110076,636.7545069920016,637.7583769320045,638.7623198490037,639.765315083001,640.7695749420091,641.7718163870013,642.7782930130052,643.7862107289984,644.7904879580019,645.7968738670024,646.8014517460106,647.8045146380027,648.8065001600044,649.8110041910113,650.8149317690113,651.8205563400115,652.824583204012,653.8280714540015,654.8331136909983,655.8396986740117,656.8457057339983,657.8517340030085,658.8572400460107,659.8603392470104,660.8664055140107,661.8723815850099,662.8772573360038,663.882202645007,664.8864164350089,665.890399410011,666.8935565499996,667.8956969069986,668.8999889240076,669.9030649150081,670.9050549270032,671.9064340449986,672.9104280710017,673.9169129369984,674.9266076430067,675.9322170140076,676.9396910720097,677.9585779820045,678.9772043380071,679.9832204580016,680.9969863900042,682.002447485007,683.0064394000074,684.0099522790115,685.0143793730094,686.0197300900036,687.0247577160044,688.0297156450106,689.0359463880013,690.0499066350021,691.0543634570058,692.0576559820038,693.0598743870069,694.0645154340018,695.0694468240108,696.0732659040077,697.0794515580055,698.0892824000039,699.0931402290007,700.0955002999981,701.0996437610011,702.1010632580001,703.1025251540123,704.1088730129995,705.1136613460112,706.117874345,707.1280629680114,708.1340083980031,709.140984409998,710.1458834299992,711.1500650600065,712.1560963680095,713.1575729230099,714.1599740730016,715.1643037690083,716.1664232660114,717.1717117860098,718.1785436229984,719.1916810620023,720.1996594160009,721.2049159760063,722.2098371150059,723.2138185000076,724.2161996799987,725.220341821012,726.2372404860071,727.2441670590051,728.2560752130084,729.2677965420007,730.2757686859986,731.2859353079984,732.2995836129994,733.3079526660003,734.3131847660115,735.315888297002,736.317286925012,737.3208753510116,738.3313271750085,739.3369745540112,740.3438377990096,741.358347500005,742.3624300220108,743.3650136860088,744.3715171310032,745.3762571850093,746.3810594470124,747.3849263849988,748.386465278003,749.3915289130091,750.3956307650078,751.3982593580004,752.4022040840064,753.4063112550066,754.4108400850091,755.4129997710115,756.416062401011,757.4185621270008,758.4223908770073,759.4260623500013,760.4349357290048,761.4423054290091,762.4464075200085,763.4503218270111,764.4555352680036,765.4581189820019,766.4635694559984,767.4674544529989,768.4728972669982,769.4798567990074,770.4864517810056,771.4904562150041,772.4943487220007,773.4984397439985,774.5030619710014,775.5072260010056,776.5145461520005,777.5175920430047,778.5201647370122,779.5252731000073,780.5311286330107,781.5378817300079,782.544246808,783.5488531050069,784.5550070400059,785.5615628020023,786.563694358003,787.5678812480037,788.5703488240106,789.5743872680032,790.577568564011,791.5800591110019,792.5873960720055,793.5978662749985,794.607610379011,795.6143990749988,796.6196443640074,797.6257183100097,798.6319445420086,799.6400818609982,800.6447930850118,801.6510842650023,802.6544212370063,803.658932766004,804.6627527960081,805.6681833190087,806.6740267220011,807.6825621700118,808.6864733780094,809.6915970700065,810.6960835200007,811.6983966310072,812.7016689459997,813.7053763279982,814.712031218005,815.7186741980113,816.7257030170003,817.7299603139982,818.7327200319996,819.7372494310112,820.7419744640065,821.7467896460003,822.7494085979997,823.7543045670027,824.7577150069992,825.7601221060031,826.7649197770079,827.7698655040003,828.7755458910106,829.7821601820033,830.7896679080004,831.7940544209996,832.7992676510039,833.8033728410082,834.8061456889991,835.8120712890086,836.8215919990034,837.8275996560114,838.830028744007,839.8315878260037,840.8337942590006,841.8383526370017,842.8422143750067,843.8456082160119,844.8478461980121,845.8526307600114,846.8575183490029,847.8603447850037,848.8620234940026,849.8660987350013,850.8731284240057,851.8760108889983,852.8806708140037,853.8857273980102,854.8899543250009,855.8942100910062,856.8983910399984,857.9026987450052,858.9052654580009,859.910415160004,860.9137094730104,861.9175002420088,862.9226831030101,863.9255602080084,864.9306419610075,865.9343512019987,866.9386966160091,867.9447506620054,868.9482035710098,869.9495889870013,870.9520295039983,871.9555175520072,872.95812531501,873.9623217920016,874.9660494030104,875.970479295007,876.9744774179999,877.9777429520036,878.9812268390087,879.9852506030002,880.9911980210018,881.992940297001,882.9943044340034,883.9975744880066,885.0004516930057,886.0022829170048,887.0045862870029,888.0095329440082,889.0127329300012,890.0160114130122,891.0201847610006,892.024788708004,893.0291150820121,894.0337420080032,895.0389168580004,896.0458621190046,897.0484404520103,898.0527128870017,899.0563206900115,900.0598674260109,901.0643935940025,902.0655933450034,903.0670510500058,904.0692874320084,905.0732761350082,906.0750026720052,907.0790854130028,908.0836826190061,909.0881828790007,910.0935659230017,911.0960289390059,912.100626436004,913.1025971150084,914.1077243370091,915.1124165910005,916.117063786005,917.120739638005,918.125244987008,919.1296903470065,920.1312893569993,921.1349518200004,922.1381414750067,923.1415714739996,924.1451963280124,925.1476171950053,926.1500363820087,927.1517601980013,928.153832365002,929.1576225540048,930.1615067100065,931.1644216340064,932.1655812259996,933.1670696190122,934.1697565280047,935.171638690008,936.1730380160006,937.1744549210125,938.1758372470067,939.1771191760054,940.177557588002,941.1781345659983,942.1791278430028,943.1795618760079,944.1812644220045,945.183220122999,946.184647497008,947.1860545829986,948.1874390980083,949.1887174570002,950.1900049660035,951.1912975540035,952.1925801430043,953.1938958200044,954.1952200080123,955.1965200960112,956.1976362290006,957.1991502320016,958.2008669979987,959.2035074790037,960.2054037810012,961.2068215449981,962.2082072610065,963.2095588970114,964.2109609230101,965.2124149870069,966.2135669790005,967.2149700840091,968.2163859389984,969.2180594060046,970.221277951001,971.2249198540085,972.2259929080028,973.2285852800123,974.2295740660047,975.2317505300016,976.2359410780045,977.2396786470053,978.2410792230075,979.2431204200111,980.2449405939988,981.2455623100104,982.2476300270064,983.2509358890093,984.2523429940047,985.2543911009998,986.2581666600017,987.2610225640092,988.2616756000061,989.2640614560078,990.2680483889999,991.2695586910122,992.2716848760028,993.2750316770107,994.2772651289997,995.2809044110036,996.281672904006,997.2844074120076,998.2891218450095,999.2938194169983,1000.2981589300034,1001.3014312630112,1002.3042163290083,1003.3087155380053,1004.3130366510013,1005.3165020590095,1006.3175662930007,1007.3198246340035,1008.3235084750049,1009.3254358460108,1010.3271407020075,1011.3294603719987,1012.333944760001,1013.3383771910012,1014.342164599002,1015.345011464,1016.3455864120042,1017.3480484470056,1018.3502967880049,1019.3530541150103,1020.3567915349995,1021.3613562009996,1022.3636844200082,1023.3662474029989,1024.36963109301,1025.3719838510006,1026.3749606620113,1027.3770703769987,1028.3791274430114,1029.381292007005,1030.3836971740093,1031.3854614980082,1032.3875957530108,1033.3898812630068,1034.3916016990115,1035.393598627008,1036.3961906790064,1037.4018380650086,1038.4032889880036,1039.4063034380088,1040.4106456810114,1041.416222689004,1042.4176428030041,1043.4202733340062,1044.4262763100123,1045.431034681009,1046.4347268710117,1047.4410859880009,1048.4440486189997,1049.4465947220015,1050.4525565290096,1051.4537655890017,1052.4559488520026,1053.4578324830072,1054.459923938004,1055.4619167970086,1056.4642889740062,1057.4659145930054,1058.4680675160052,1059.469848601002,1060.472579778012,1061.4755060700118,1062.477895657008,1063.4801510079997,1064.4818277650047,1065.4841023150075,1066.4859005090111,1067.4882504870038,1068.4899117450113,1069.4920823880093,1070.4939767080068,1071.496545230999,1072.4986833650037,1073.5002830840094,1074.5018356240034,1075.5042291010031,1076.5057737820025,1077.5080657310027,1078.5098912140093,1079.5121956030052,1080.5140435549984,1081.5169106190006,1082.518723582005,1083.5201563860028,1084.5215794700052,1085.5229622050101,1086.5243303110037,1087.5257056960108,1088.5270895310096,1089.52845242701,1090.529821632008,1091.5311910870078,1092.5325601229997,1093.5339431780012,1094.5353129630093,1095.5366866090044,1096.5380462739995,1097.5394157789997,1098.5408029740065,1099.5421819990006,1100.543560844002,1101.5449623090099,1102.5463603640092,1103.547776198,1104.549161783012,1105.5505349680025,1106.5518924440112,1107.5532700280019,1108.5546804230107,1109.5560480380082,1110.5574104130064]],[\"y\",[0.0,99.9,99.9,99.9,99.9,99.9,100.9,99.9,99.9,99.9,99.9,100.9,99.9,98.9,100.9,99.9,99.9,99.9,99.9,99.9,99.9,100.9,99.9,99.9,99.9,99.9,99.9,99.9,99.9,99.9,100.9,100.9,99.9,99.9,99.9,99.9,99.9,99.9,100.9,99.9,99.9,99.9,98.9,100.9,99.9,99.9,99.9,100.9,99.9,99.9,98.9,99.9,100.9,98.9,100.9,99.9,99.9,99.9,100.9,98.9,100.9,99.9,98.9,100.9,99.9,99.9,99.9,99.9,99.9,100.9,99.9,99.9,99.9,99.9,99.9,99.9,99.9,101.9,99.9,98.9,100.9,99.9,99.9,99.9,99.9,99.9,6370.9,12627.8,12625.6,12633.8,12617.2,12651.3,12667.8,12660.1,12669.1,12643.8,12632.0,12635.9,12659.2,12659.6,12657.9,12661.1,12646.7,12639.8,12635.3,12649.9,12628.5,12656.7,12654.9,12646.5,12636.3,12637.8,12638.7,12585.9,12702.3,12662.0,12650.4,12661.9,12663.2,12653.2,12639.9,12648.8,12656.5,12578.0,12635.1,12607.5,12576.5,12545.7,12539.2,12543.7,12613.7,12638.1,12648.3,12587.0,12576.4,12654.6,12576.3,12589.7,12627.3,12639.3,12663.9,12687.7,12634.4,12636.6,12647.1,12644.8,12641.7,12643.4,12649.4,12658.3,12648.5,12655.9,12654.7,12603.6,12647.9,12649.0,12655.8,12659.0,12663.1,12654.0,12661.3,12661.0,12651.0,12637.5,12658.1,12658.5,12661.1,12660.0,12657.8,12665.2,12662.6,12638.4,12657.3,12658.0,12632.8,12628.3,12624.6,12633.4,12641.2,12646.7,12652.2,12656.9,12657.5,12617.2,12646.6,12657.0,12663.7,12651.6,12621.2,12629.6,12627.2,12662.3,12655.2,12663.6,12648.9,12646.9,12608.0,12628.2,12607.9,12624.9,12655.0,12665.5,12656.0,12625.8,12626.0,12626.3,12676.2,12654.1,12656.3,12647.2,12607.7,12623.2,12660.6,12663.6,12641.1,12624.8,12649.3,12664.1,12660.6,12630.9,12635.9,12663.4,12649.9,12631.4,12635.6,12670.8,12657.7,12632.1,12623.2,12685.7,12681.5,12609.1,12686.0,12667.6,12621.3,12647.4,12673.2,12642.5,12636.4,12676.9,12637.9,12625.3,12646.6,12601.2,12671.3,12666.7,12588.8,12611.3,12591.2,12676.8,12616.2,12545.0,12608.1,12649.2,12631.5,12667.8,12659.0,12684.1,12643.5,12687.1,12641.3,12704.3,12632.8,12687.8,12644.8,12636.8,12695.7,12634.9,12672.9,12670.6,12622.7,12721.9,12657.2,12651.8,12680.3,12644.2,12660.3,12678.4,12630.2,12629.6,12701.3,12685.7,12655.3,12670.8,12670.6,12672.7,12661.7,12659.5,12657.2,12653.1,12664.4,12660.4,12612.4,12660.5,12668.0,12664.7,12661.3,12668.4,12671.7,12672.7,12658.2,12633.6,12668.4,12658.9,12669.9,12644.6,12677.6,12677.4,12666.6,12647.6,12683.9,12682.4,12659.8,12643.6,12677.4,12696.2,12669.6,12660.4,12672.7,12678.0,12679.8,12698.9,12678.1,12670.2,12684.1,12652.8,12714.0,12680.2,12692.1,12697.0,12696.2,12701.9,12694.3,12685.0,12720.9,12710.8,12687.4,12717.5,12727.6,12735.5,6357.0,10910.8,12734.0,12689.0,12764.0,12708.9,12715.6,12707.2,12702.2,12701.1,12679.9,12726.8,12698.2,12696.2,12671.6,12722.2,12680.4,12666.0,12652.4,12648.0,12650.3,12647.1,12638.3,12615.3,12672.8,12674.9,12674.6,12693.4,12685.2,12664.5,12698.9,12686.0,12636.5,12701.3,12639.1,12676.3,12687.6,12676.5,12664.3,12685.4,12672.2,12661.4,12653.5,12618.5,12640.9,12597.1,12579.6,12625.6,12655.3,12664.9,12664.7,12664.4,12669.8,12654.8,12673.9,12663.2,12695.2,12604.4,12658.8,12656.5,12676.6,12688.7,12659.2,12646.9,12697.5,12661.7,12633.7,12682.6,12689.6,12664.1,12637.1,12636.1,12677.9,12643.5,12697.0,12661.5,12669.2,12687.5,12670.9,12675.9,12642.6,12700.2,12664.2,12584.9,12636.4,12663.8,12655.6,12615.2,12587.7,12564.9,12465.2,12559.8,12667.3,12632.9,12610.1,12596.8,12587.7,12590.9,12634.8,12626.4,12589.9,12644.4,12644.1,12625.7,12624.0,12637.5,12620.9,12636.8,12678.5,12643.7,12618.2,12699.4,12663.0,12634.1,12672.3,12682.1,12628.0,12642.9,12676.4,12664.7,12634.2,12653.5,12676.1,12638.3,12596.8,12647.1,12650.0,12636.8,12618.0,12650.1,12676.4,12668.6,12649.1,12634.5,12644.4,12675.2,12658.3,12673.8,12618.9,12678.0,12633.7,12622.0,12664.6,12671.3,12615.7,12686.3,12640.8,12640.0,12663.5,12661.1,12660.7,12670.6,12609.6,12649.5,12633.1,12644.6,12646.0,12676.2,12659.9,12674.2,12661.9,12665.6,12633.7,12661.2,12663.8,12655.7,12653.4,12655.6,12655.3,12660.6,12668.3,12667.8,12640.3,12654.9,12658.4,12658.8,12624.8,12639.7,12659.9,12659.4,12660.5,12650.1,12659.1,12653.6,12662.9,12656.0,12640.0,12655.2,12649.7,12638.8,12657.1,12663.6,12648.9,12647.0,12588.2,12645.8,12640.6,12644.4,12641.6,12638.3,12643.5,12644.5,12594.9,12649.1,12640.5,12640.4,12642.2,12641.3,12622.4,12623.7,12643.8,12652.1,12653.4,12645.7,12650.3,12645.4,12670.3,12664.6,12651.9,12655.5,12657.3,12638.8,12648.4,12632.3,12654.7,12669.5,12656.0,12657.7,12674.4,12663.0,12642.6,12613.5,12641.2,12634.2,12658.7,12662.0,12670.1,12662.8,12682.9,12645.6,12635.0,12640.3,12624.7,12637.0,12668.8,12663.7,12688.9,12641.2,12631.5,12640.2,12666.4,12658.3,12667.3,12657.8,12637.4,12631.3,12653.5,12637.7,12662.3,12549.4,12516.8,12561.2,12477.8,12490.9,12563.3,12514.5,12569.1,12551.7,12540.7,12550.8,12468.0,12526.2,12521.0,12503.1,12488.3,12530.9,12572.0,12516.9,12513.6,12491.8,12538.4,12483.7,12498.9,12527.4,12555.0,12548.0,12522.1,12525.1,12511.8,12578.7,12571.3,12568.6,12506.6,12543.8,12562.1,12525.9,12555.5,12566.8,12575.5,12564.5,12554.0,12525.6,12527.7,12545.0,12531.2,12549.8,12527.4,12502.9,12545.1,12548.9,12518.0,12555.4,12535.2,12527.9,12547.0,12527.4,12564.6,12536.5,12513.9,12473.8,12493.1,12521.1,12500.2,12553.8,12573.5,12604.4,12574.3,12547.3,12541.0,12557.9,12515.4,12548.1,12616.7,12523.3,12586.9,12547.0,12590.3,12581.7,12560.1,12566.5,12592.0,12551.3,12579.4,12563.0,12595.7,12566.4,12549.8,12558.5,12541.9,12581.1,12594.2,12513.0,12616.1,12518.0,12569.0,12568.3,12581.1,12589.7,12539.8,12616.4,12581.1,12539.0,12593.6,12505.3,12530.8,12546.6,12541.9,12523.7,12555.9,12547.2,12456.2,12502.1,12513.3,12615.1,12541.5,12605.1,12555.5,12560.1,12604.6,12564.7,12557.8,12592.4,12527.0,12598.0,12511.1,12547.5,12563.7,12583.8,12574.4,12579.8,12522.9,12520.8,12490.7,12523.9,12574.3,12576.3,12554.7,12562.3,12548.1,12567.0,12581.0,12574.9,12584.2,12559.7,12559.3,12583.0,12542.8,12541.9,12524.7,12519.0,12516.5,12511.4,12473.2,12438.9,12460.9,12520.7,12489.1,12495.4,12519.1,12544.1,12553.3,12579.7,12592.6,12563.0,12582.0,12580.3,12611.3,12577.1,12574.4,12580.5,12569.3,12571.2,12597.8,12573.7,12551.3,12619.6,12585.2,12567.5,12569.2,12582.9,12539.7,12525.8,12523.5,12573.4,12527.3,12571.8,12572.2,12584.1,12589.4,12559.1,12543.2,12575.5,12555.5,12554.7,12583.8,12563.1,12574.8,12674.2,12668.6,12674.4,12694.7,12718.5,12628.1,12706.5,12712.1,12686.4,12715.8,12742.5,12719.3,12686.1,12735.9,12719.6,12701.0,12705.3,12704.2,12711.6,12705.6,12696.8,12693.2,12729.3,12696.1,12703.0,12739.2,12712.9,12704.9,12703.4,12716.1,12711.3,12701.3,12704.6,12710.0,12720.0,12681.9,12729.5,12696.6,12731.8,12714.1,12709.1,12689.7,12708.4,12672.1,12737.6,12717.7,12698.9,12707.7,12718.9,12699.3,12718.2,12711.1,12717.1,12696.8,12703.1,12727.1,12689.5,12715.9,12744.3,12675.4,12635.0,12676.5,12660.3,12722.0,12705.1,12701.4,12711.4,12710.6,12740.1,12713.7,12720.1,12691.5,12714.9,12697.7,12735.0,12711.6,12711.8,12710.7,12744.6,12712.4,12723.4,12705.3,12711.5,12686.5,12738.8,12711.5,12728.7,12710.4,12699.2,12739.2,12722.6,12724.2,12720.3,12711.9,12717.3,12710.0,12723.2,12718.0,12716.2,12716.8,12687.4,12742.3,12715.0,12710.6,12692.0,12730.8,12708.1,12727.1,12720.0,12724.8,12714.3,12724.3,12710.3,12693.7,12710.8,12748.1,12711.5,12721.8,12718.8,12737.4,12724.3,12714.9,12731.3,12734.9,12730.3,12733.6,12736.9,12736.4,12723.8,12749.2,12757.5,12745.7,12750.7,12759.5,12769.2,12776.0,12784.2,7546.3,2425.8,12791.7,12313.6,5890.6,6696.4,1824.2,5526.7,3977.6,4820.1,6028.6,99.9,99.9,99.9,99.9,99.9,99.9,99.9,100.9,12414.6,12355.5,6170.7,12761.8,1772.3,5429.4,12791.1,12783.8,12786.0,12784.6,12786.1,12784.9,12781.0,12770.0,12787.7,12790.5,12771.3,12788.5,12781.5,12739.0,12795.9,12770.9,12781.5,12772.2,12775.1,12772.0,12737.1,12815.2,12776.1,12751.2,12790.2,12784.6,12768.8,12778.1,12768.5,12776.6,12730.4,12812.7,12758.8,12782.3,12775.5,12768.6,12766.0,12766.0,12779.6,12780.8,12772.7,12766.2,12770.6,12777.8,12771.8,12730.9,12788.6,12768.7,12726.9,12720.0,12758.5,12700.0,12755.4,12784.4,12733.7,12748.9,12752.3,12753.3,12748.1,12755.4,12745.5,12707.9,12761.0,12714.6,12740.4,12751.0,12742.6,12752.8,12748.0,12751.0,12734.9,12761.9,12750.5,12740.0,12676.0,12688.7,12663.5,12676.2,12741.4,12779.7,12743.3,12744.7,12738.3,12754.9,12726.0,12787.4,12749.0,12720.1,12236.4,12813.0,12735.3,12803.5,12755.9,12787.9,12743.5,12805.6,12761.2,12779.4,12725.1,12688.4,12722.2,12680.7,12728.4,12724.6,12738.1,12677.5,12743.6,12699.1,12725.4,12682.9,12713.1,12665.8,12687.2,12720.5,12803.3,12741.6,12798.7,12746.0,12799.9,12778.3,2033.6,99.9,99.9,99.9,99.9,99.9,100.9,99.9,100.9,99.9,98.9,101.9,98.9,99.9,99.9,100.9,99.9,100.9,98.9,100.9,98.9,99.9,99.9,99.9,99.9,99.9,100.9,98.9,100.9]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1148\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1149\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1144\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_width\":4}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1145\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_alpha\":0.1,\"line_width\":4}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1146\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_alpha\":0.2,\"line_width\":4}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1159\",\"attributes\":{\"y_range_name\":\"memory\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1153\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1154\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1155\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.155562229003408,1.1571551490051206,2.1585338240111014,3.159857031001593,4.1612239759997465,5.162528202999965,6.163861578999786,7.165172225999413,8.166499443002976,9.167812420011614,10.169115087002865,11.170426783006405,12.17175275000045,13.173061566005345,14.174402162010665,15.175712438998744,16.177022976000444,17.17833264201181,18.17966316800448,19.180972965012188,20.182311440003105,21.18360741699871,22.18491097301012,23.186217539012432,24.18751524601248,25.188810583000304,26.190160648009623,27.191453814011766,28.192784140002914,29.194088486008695,30.195385302009527,31.196691247998388,32.197987695006304,33.199283531008405,34.20058974700805,35.20188003301155,36.20317582901043,37.204468834999716,38.20576433101087,39.20705478700984,40.208350683009485,41.20964684900537,42.21094348499901,43.21223902099882,44.21353662700858,45.21483250200981,46.216128798012505,47.2174259040039,48.21873351901013,49.22002935400815,50.22132378999959,51.22263417500653,52.22393095100415,53.2252273960039,54.22652540099807,55.2278241560125,56.22911932200077,57.23041465700953,58.2317095920007,59.23300735800876,60.23430881201057,61.235639236008865,62.237064437998924,63.23848285000713,64.23988426099822,65.24128599300457,66.24273249400721,67.24416175500664,68.24561535600515,69.24706624601095,70.24844170900178,71.24973580399819,72.25102856800368,73.25232379299996,74.2536199370079,75.25491436199809,76.25620809600514,77.25751312100329,78.25880600500386,79.2601003190066,80.26139518400305,81.26270037800714,82.2639939619985,83.26528709700506,84.26659254101105,85.26788499500253,86.26922931800073,87.27101711800788,88.27273064100882,89.27357735700207,90.27533590800886,91.27827168600925,92.28241842100397,93.28642694900918,94.28977763500006,95.29154837600072,96.2929956750013,97.29355996900995,98.29583745601121,99.30032108000887,100.30483458400704,101.30916330299806,102.31298352600425,103.31359617901035,104.31503725799848,105.31674465999822,106.31805541300855,107.32119738501206,108.3256599400047,109.33011142500618,110.33363360600197,111.33562519001134,112.33727012301097,113.33958175800217,114.34400266400189,115.34855791600421,116.35305299900938,117.35756349300209,118.36106572400604,119.36160939800902,120.36308501601161,121.36499524100509,122.36675206100335,123.3685155310086,124.37156507500913,125.37617496500025,126.37989928000025,127.38169031900179,128.38348156800203,129.3849726740009,130.38649644100224,131.3904085200047,132.39381191400753,133.3952516420104,134.39754484700097,135.4013837579987,136.40315259700583,137.40459559600276,138.40643951200764,139.41048331800266,140.41453695300152,141.41760523599805,142.419250758001,143.42103870600113,144.42302521900274,145.42488612500892,146.4258641960041,147.42759172600927,148.4290537630004,149.42984730900207,150.43156152901065,151.4333473880106,152.43493224101258,153.43668292000075,154.43760569200094,155.43937602100777,156.44117360901146,157.4427389820048,158.4444926510041,159.4456001380022,160.4470181659999,161.44847595300234,162.44959485001164,163.45118923200062,164.45327728100528,165.45492032299808,166.4567162010062,167.45758248399943,168.4591433880123,169.46097672400356,170.46163083300053,171.46311304900155,172.46499854400463,173.46694478600693,174.46972102401196,175.47421833600674,176.47836948699842,177.48245034100546,178.48620223300532,179.48981887901027,180.49197996599833,181.49372068401135,182.49549471199862,183.49719445100345,184.49866306700278,185.50007447499956,186.5018602909986,187.5039469100011,188.50631085100758,189.51025350800774,190.51434274000349,191.51755414700892,192.5191186900047,193.52078517001064,194.5218759970012,195.52354977600044,196.5254517100111,197.52786554901104,198.5323812590068,199.53662862700003,200.54005568800494,201.54183361500327,202.5437201080058,203.54634571100178,204.55039584400947,205.5544161190046,206.55772440200963,207.55962229600118,208.56129400500504,209.5638922490034,210.56891952500155,211.57260156801203,212.57373501200345,213.57546948001254,214.5779702160071,215.5824452470115,216.58607984099945,217.58862331599812,218.58974168100394,219.5922289070004,220.59656744200038,221.5991106670117,222.60054892300104,223.60230453900294,224.60641017000307,225.60976010200102,226.61155487800715,227.61415997100994,228.61837722900964,229.62177040000097,230.62353980600892,231.62609968001198,232.62960690700857,233.63121300800412,234.6337504030089,235.63712176401168,236.63769727300678,237.64017065901135,238.6437285150023,239.64560967800207,240.64787641000294,241.65187441400485,242.6533695570106,243.6557406560023,244.65938058900065,245.66100786899915,246.66238862600585,247.66649642599805,248.6704693500069,249.67381613200996,250.67543861200102,251.67795762600144,252.681614429006,253.6841341130057,254.6875663230021,255.68985111299844,256.693124027006,257.6935835190088,258.69497847500315,259.69638742999814,260.6980950270081,261.70048480499827,262.70181309300824,263.7044187940046,264.7081212960038,265.7103654380044,266.7137930570025,267.7153160989983,268.7178514230036,269.7215434440004,270.7239065520116,271.727517006002,272.72910191600386,273.73053460000665,274.73377680400154,275.73524356700364,276.7374470900104,277.74091554799816,278.7415810130042,279.7437453169987,280.7474737270095,281.749746668007,282.7513020490005,283.7534572630102,284.7575943510019,285.7616762910038,286.76440995901066,287.76576572500926,288.76743954200356,289.7690657010098,290.7696543780039,291.77138482400915,292.77280583800166,293.77363872900605,294.77524413799983,295.77703495199967,296.77771352700074,297.7794534010027,298.78095931300777,299.7817688140058,300.7841145420098,301.78894332100754,302.79280754701176,303.7937084150035,304.79618431000563,305.79998696700204,306.80157651600894,307.8039601230121,308.80790499701106,309.81027750400244,310.81356043599953,311.81587599401246,312.8196977410116,313.82210699700227,314.8263876609999,315.8297080120101,316.83114460500656,317.8336125190108,318.83852757500426,319.8424698279996,320.8464189510123,321.8494034809992,322.8508224940015,323.85306092500105,324.85654945101123,325.8583838420018,326.8616254350054,327.8630997970031,328.8645135400002,329.8656872900028,330.8679678890039,331.8723683999997,332.87533538900607,333.8777279450005,334.88115869300964,335.882695133012,336.8841558550048,337.8856125070015,338.8870423890039,339.8884943820012,340.88993793400005,341.891306259,342.89306296200084,343.8955577250017,344.89893129300617,345.9011030350084,346.9045569620066,347.90565258399874,348.90713541500736,349.9085693070083,350.91032977100986,351.9135916820087,352.91514038101013,353.91660132299876,354.91854550100106,355.92169176600873,356.92403522301174,357.92797769499884,358.9296088320116,359.9318485620024,360.93651331400906,361.94032780001,362.9416268650093,363.94408792900504,364.9481581380096,365.9496505880088,366.9522226090048,367.95683728200675,368.960222669004,369.96242952000466,370.96558654399996,371.9678369030007,372.9718924820045,373.97371212299913,374.9759496020124,375.9796133820055,376.9813082059991,377.9837541500019,378.98770241100283,379.98937915600254,380.99107484100387,381.99355153299985,382.99819831601053,384.00256209600775,385.00574601801054,386.00727397800074,387.00887146500463,388.0096384350036,389.0114089070121,390.0130819620099,391.0136776569998,392.0155645660125,393.0170370160049,394.01838756000507,395.0224649180018,396.0264459980099,397.0296033120103,398.0312103680044,399.03264998900704,400.03391207499953,401.036938122008,402.04092222200416,403.0416363740078,404.04393047100166,405.04832439000893,406.05208071600646,407.0544311320118,408.05839765199926,409.0616065140057,410.0630201360036,411.06452911499946,412.0663737040013,413.0696451940021,414.0712491200102,415.07323912600987,416.0758322850015,417.0783614850079,418.0817999300052,419.08416716501233,420.0880599880038,421.09035305400903,422.09380167900235,423.09616787399864,424.10058293200564,425.1044419250102,426.1061654280056,427.1091445760103,428.1095997830125,429.1113124859985,430.11274061699805,431.11376158001076,432.1159372500115,433.1190724330081,434.1217971770093,435.12615452700993,436.12957414200355,437.1312476860039,438.1336894880078,439.1383462189988,440.142429694999,441.14639782501035,442.1495552770066,443.1509497590014,444.15239173000737,445.15358998700685,446.15501595700334,447.1575959460024,448.1593576669984,449.1608163470082,450.1624423320027,451.16641420101223,452.1696513909992,453.1722761780111,454.17704829599825,455.18056918799994,456.1818319120066,457.1842991440062,458.18796946101065,459.18947464000667,460.19203583900526,461.19661029100826,462.2003580669989,463.2016252110043,464.20403542400163,465.2087429430103,466.2126807530003,467.2136007480003,468.21615617700445,469.2204248370108,470.2238980210095,471.2255297250085,472.22724401700543,473.2297810960008,474.2343749580032,475.23837794600695,476.2416419049987,477.24319742200896,478.2452409140096,479.24752057100704,480.2521174620051,481.2559949340066,482.257892611,483.25946483699954,484.2614048520045,485.2637258370087,486.26819787200657,487.2727902940096,488.27718356100377,489.2805472570035,490.28162695599895,491.28342724600225,492.28533805201005,493.2868057710002,494.2893647590099,495.29358802099887,496.297883539999,497.3020803130057,498.30514982700697,499.30680120000034,500.30857733001176,501.3096688890073,502.31175293000706,503.3143443880108,504.3184135629999,505.32226705500216,506.32635622999805,507.33035983800073,508.3343954849988,509.33833805400354,510.34234713100886,511.3463793080009,512.3495670380071,513.3509781390021,514.3524399370071,515.3536121540092,516.3550933119986,517.3569729380106,518.3588634850021,519.3606470740051,520.3616207260056,521.3632194610109,522.3649899709999,523.3669231759995,524.3684894210019,525.3695637000055,526.3710911870003,527.37275403901,528.3736609930056,529.3757574040064,530.3778983930097,531.3811754000053,532.3845701550017,533.3855723560118,534.3861892980058,535.3879375480028,536.3896974970121,537.3912052630039,538.3932489150029,539.3947166630096,540.3963075080101,541.3978468240093,542.3993994190096,543.4012893150066,544.4029901470058,545.4044465550105,546.405627020009,547.4073448710114,548.4088951270096,549.4101645900082,550.4140555400081,551.4184508059989,552.4223581960105,553.4262797750125,554.4299425720092,555.4337334640004,556.4383802430093,557.4420667490049,558.4449036779988,559.4470023879985,560.448741168002,561.4496033830073,562.4515730760031,563.453054484009,564.4543139169982,565.4582863640098,566.4622842710087,567.4663903949986,568.4704622600111,569.4741183959995,570.4770365130098,571.4775872059981,572.4790647629998,573.480981879009,574.4820995250047,575.4851612390048,576.4896070530085,577.4940380269982,578.4983632950025,579.5015763929987,580.5030781200039,581.5046532740089,582.5058749080054,583.5074649720045,584.509782306006,585.5141682410031,586.5184726590087,587.5217129869998,588.523208854007,589.5246914000018,590.5255911330023,591.5278454290092,592.532485157004,593.5369261310116,594.5409527570009,595.5416046970058,596.5434442530095,597.5451386440109,598.5462040429993,599.550254376998,600.5542218640039,601.5607295210066,602.5706553120108,603.5728460680111,604.5779793630063,605.5815539010073,606.5837116290058,607.5884914930066,608.5932264190051,609.5982601760043,610.6032978830044,611.6103040160087,612.6157325620006,613.6288194740046,614.6348786029994,615.6413264810108,616.6459775690018,617.651475813007,618.6636294010095,619.6664855990093,620.671587875011,621.6757496659993,622.6776217310107,623.6807379520033,624.6859333650063,625.6901483050024,626.6938008910074,627.6984309300024,628.7037638790061,629.7075719300046,630.7126277159987,631.7176379040029,632.7233632420102,633.7261022130115,634.7295835929981,635.7345937110076,636.7545069920016,637.7583769320045,638.7623198490037,639.765315083001,640.7695749420091,641.7718163870013,642.7782930130052,643.7862107289984,644.7904879580019,645.7968738670024,646.8014517460106,647.8045146380027,648.8065001600044,649.8110041910113,650.8149317690113,651.8205563400115,652.824583204012,653.8280714540015,654.8331136909983,655.8396986740117,656.8457057339983,657.8517340030085,658.8572400460107,659.8603392470104,660.8664055140107,661.8723815850099,662.8772573360038,663.882202645007,664.8864164350089,665.890399410011,666.8935565499996,667.8956969069986,668.8999889240076,669.9030649150081,670.9050549270032,671.9064340449986,672.9104280710017,673.9169129369984,674.9266076430067,675.9322170140076,676.9396910720097,677.9585779820045,678.9772043380071,679.9832204580016,680.9969863900042,682.002447485007,683.0064394000074,684.0099522790115,685.0143793730094,686.0197300900036,687.0247577160044,688.0297156450106,689.0359463880013,690.0499066350021,691.0543634570058,692.0576559820038,693.0598743870069,694.0645154340018,695.0694468240108,696.0732659040077,697.0794515580055,698.0892824000039,699.0931402290007,700.0955002999981,701.0996437610011,702.1010632580001,703.1025251540123,704.1088730129995,705.1136613460112,706.117874345,707.1280629680114,708.1340083980031,709.140984409998,710.1458834299992,711.1500650600065,712.1560963680095,713.1575729230099,714.1599740730016,715.1643037690083,716.1664232660114,717.1717117860098,718.1785436229984,719.1916810620023,720.1996594160009,721.2049159760063,722.2098371150059,723.2138185000076,724.2161996799987,725.220341821012,726.2372404860071,727.2441670590051,728.2560752130084,729.2677965420007,730.2757686859986,731.2859353079984,732.2995836129994,733.3079526660003,734.3131847660115,735.315888297002,736.317286925012,737.3208753510116,738.3313271750085,739.3369745540112,740.3438377990096,741.358347500005,742.3624300220108,743.3650136860088,744.3715171310032,745.3762571850093,746.3810594470124,747.3849263849988,748.386465278003,749.3915289130091,750.3956307650078,751.3982593580004,752.4022040840064,753.4063112550066,754.4108400850091,755.4129997710115,756.416062401011,757.4185621270008,758.4223908770073,759.4260623500013,760.4349357290048,761.4423054290091,762.4464075200085,763.4503218270111,764.4555352680036,765.4581189820019,766.4635694559984,767.4674544529989,768.4728972669982,769.4798567990074,770.4864517810056,771.4904562150041,772.4943487220007,773.4984397439985,774.5030619710014,775.5072260010056,776.5145461520005,777.5175920430047,778.5201647370122,779.5252731000073,780.5311286330107,781.5378817300079,782.544246808,783.5488531050069,784.5550070400059,785.5615628020023,786.563694358003,787.5678812480037,788.5703488240106,789.5743872680032,790.577568564011,791.5800591110019,792.5873960720055,793.5978662749985,794.607610379011,795.6143990749988,796.6196443640074,797.6257183100097,798.6319445420086,799.6400818609982,800.6447930850118,801.6510842650023,802.6544212370063,803.658932766004,804.6627527960081,805.6681833190087,806.6740267220011,807.6825621700118,808.6864733780094,809.6915970700065,810.6960835200007,811.6983966310072,812.7016689459997,813.7053763279982,814.712031218005,815.7186741980113,816.7257030170003,817.7299603139982,818.7327200319996,819.7372494310112,820.7419744640065,821.7467896460003,822.7494085979997,823.7543045670027,824.7577150069992,825.7601221060031,826.7649197770079,827.7698655040003,828.7755458910106,829.7821601820033,830.7896679080004,831.7940544209996,832.7992676510039,833.8033728410082,834.8061456889991,835.8120712890086,836.8215919990034,837.8275996560114,838.830028744007,839.8315878260037,840.8337942590006,841.8383526370017,842.8422143750067,843.8456082160119,844.8478461980121,845.8526307600114,846.8575183490029,847.8603447850037,848.8620234940026,849.8660987350013,850.8731284240057,851.8760108889983,852.8806708140037,853.8857273980102,854.8899543250009,855.8942100910062,856.8983910399984,857.9026987450052,858.9052654580009,859.910415160004,860.9137094730104,861.9175002420088,862.9226831030101,863.9255602080084,864.9306419610075,865.9343512019987,866.9386966160091,867.9447506620054,868.9482035710098,869.9495889870013,870.9520295039983,871.9555175520072,872.95812531501,873.9623217920016,874.9660494030104,875.970479295007,876.9744774179999,877.9777429520036,878.9812268390087,879.9852506030002,880.9911980210018,881.992940297001,882.9943044340034,883.9975744880066,885.0004516930057,886.0022829170048,887.0045862870029,888.0095329440082,889.0127329300012,890.0160114130122,891.0201847610006,892.024788708004,893.0291150820121,894.0337420080032,895.0389168580004,896.0458621190046,897.0484404520103,898.0527128870017,899.0563206900115,900.0598674260109,901.0643935940025,902.0655933450034,903.0670510500058,904.0692874320084,905.0732761350082,906.0750026720052,907.0790854130028,908.0836826190061,909.0881828790007,910.0935659230017,911.0960289390059,912.100626436004,913.1025971150084,914.1077243370091,915.1124165910005,916.117063786005,917.120739638005,918.125244987008,919.1296903470065,920.1312893569993,921.1349518200004,922.1381414750067,923.1415714739996,924.1451963280124,925.1476171950053,926.1500363820087,927.1517601980013,928.153832365002,929.1576225540048,930.1615067100065,931.1644216340064,932.1655812259996,933.1670696190122,934.1697565280047,935.171638690008,936.1730380160006,937.1744549210125,938.1758372470067,939.1771191760054,940.177557588002,941.1781345659983,942.1791278430028,943.1795618760079,944.1812644220045,945.183220122999,946.184647497008,947.1860545829986,948.1874390980083,949.1887174570002,950.1900049660035,951.1912975540035,952.1925801430043,953.1938958200044,954.1952200080123,955.1965200960112,956.1976362290006,957.1991502320016,958.2008669979987,959.2035074790037,960.2054037810012,961.2068215449981,962.2082072610065,963.2095588970114,964.2109609230101,965.2124149870069,966.2135669790005,967.2149700840091,968.2163859389984,969.2180594060046,970.221277951001,971.2249198540085,972.2259929080028,973.2285852800123,974.2295740660047,975.2317505300016,976.2359410780045,977.2396786470053,978.2410792230075,979.2431204200111,980.2449405939988,981.2455623100104,982.2476300270064,983.2509358890093,984.2523429940047,985.2543911009998,986.2581666600017,987.2610225640092,988.2616756000061,989.2640614560078,990.2680483889999,991.2695586910122,992.2716848760028,993.2750316770107,994.2772651289997,995.2809044110036,996.281672904006,997.2844074120076,998.2891218450095,999.2938194169983,1000.2981589300034,1001.3014312630112,1002.3042163290083,1003.3087155380053,1004.3130366510013,1005.3165020590095,1006.3175662930007,1007.3198246340035,1008.3235084750049,1009.3254358460108,1010.3271407020075,1011.3294603719987,1012.333944760001,1013.3383771910012,1014.342164599002,1015.345011464,1016.3455864120042,1017.3480484470056,1018.3502967880049,1019.3530541150103,1020.3567915349995,1021.3613562009996,1022.3636844200082,1023.3662474029989,1024.36963109301,1025.3719838510006,1026.3749606620113,1027.3770703769987,1028.3791274430114,1029.381292007005,1030.3836971740093,1031.3854614980082,1032.3875957530108,1033.3898812630068,1034.3916016990115,1035.393598627008,1036.3961906790064,1037.4018380650086,1038.4032889880036,1039.4063034380088,1040.4106456810114,1041.416222689004,1042.4176428030041,1043.4202733340062,1044.4262763100123,1045.431034681009,1046.4347268710117,1047.4410859880009,1048.4440486189997,1049.4465947220015,1050.4525565290096,1051.4537655890017,1052.4559488520026,1053.4578324830072,1054.459923938004,1055.4619167970086,1056.4642889740062,1057.4659145930054,1058.4680675160052,1059.469848601002,1060.472579778012,1061.4755060700118,1062.477895657008,1063.4801510079997,1064.4818277650047,1065.4841023150075,1066.4859005090111,1067.4882504870038,1068.4899117450113,1069.4920823880093,1070.4939767080068,1071.496545230999,1072.4986833650037,1073.5002830840094,1074.5018356240034,1075.5042291010031,1076.5057737820025,1077.5080657310027,1078.5098912140093,1079.5121956030052,1080.5140435549984,1081.5169106190006,1082.518723582005,1083.5201563860028,1084.5215794700052,1085.5229622050101,1086.5243303110037,1087.5257056960108,1088.5270895310096,1089.52845242701,1090.529821632008,1091.5311910870078,1092.5325601229997,1093.5339431780012,1094.5353129630093,1095.5366866090044,1096.5380462739995,1097.5394157789997,1098.5408029740065,1099.5421819990006,1100.543560844002,1101.5449623090099,1102.5463603640092,1103.547776198,1104.549161783012,1105.5505349680025,1106.5518924440112,1107.5532700280019,1108.5546804230107,1109.5560480380082,1110.5574104130064]],[\"y\",[35681.820672,35812.892672,35943.964672,36096.008192,36270.071808,36446.232576,36621.344768,36797.505536,36961.083392,37092.155392,37222.178816,37382.610944,37557.723136,37733.883904,37908.996096,38085.156864,38261.317632,38437.4784,38613.639168,38789.799936,38964.912128,39141.072896,39317.233664,39494.443008,39670.603776,39846.764544,40022.925312,40199.08608,40375.246848,40550.35904,40727.568384,40903.729152,41079.88992,41256.050688,41433.260032,41609.4208,41786.630144,41962.790912,42138.95168,42315.112448,42491.273216,42667.433984,42843.594752,43019.75552,43194.867712,43371.02848,43548.237824,43724.398592,43900.55936,44076.720128,44252.880896,44429.041664,44605.202432,44781.3632,44957.523968,45133.684736,45308.796928,45484.957696,45661.118464,45837.279232,46012.391424,46188.552192,46363.664384,46539.825152,46718.083072,46896.340992,47075.647488,47254.953984,47433.211904,47613.566976,47793.922048,47975.325696,48155.680768,48336.03584,48517.439488,48697.79456,48878.149632,49059.55328,49239.908352,49421.312,49601.667072,49651.99872,49651.99872,49651.99872,49651.99872,49651.99872,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,49656.193024,50880.929792,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51077.013504,51078.06208,51080.159232,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,51081.207808,52230.447104,53976.326144,54005.686272,54032.949248,54210.158592,54218.5472,54679.92064,54844.547072,54844.547072,54882.295808,55162.2656,55596.376064,56165.752832,56810.627072,56810.627072,56810.627072,56810.627072,56810.627072,57462.841344,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,57493.250048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,70076.162048,81990.934528,84050.337792,84050.337792,84050.337792,84050.337792,84050.337792,84050.337792,75033.27232,63314.944,51663.699968,50530.123776,51487.473664,52444.823552,53402.17344,54361.62048,55311.630336,56274.223104,57237.864448,58201.505792,59166.195712,59894.956032,60461.187072,61023.223808,61585.260544,62145.200128,62704.091136,63260.884992,49844.350976,50523.828224]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1160\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1161\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1156\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_width\":4}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1157\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_alpha\":0.1,\"line_width\":4}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1158\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_alpha\":0.2,\"line_width\":4}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1122\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1137\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1138\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1139\",\"attributes\":{\"dimensions\":\"width\"}},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1140\",\"attributes\":{\"dimensions\":\"width\"}}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1132\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1133\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1134\"},\"axis_label\":\"% CPU\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1135\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1163\",\"attributes\":{\"y_range_name\":\"memory\",\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1164\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1165\"},\"axis_label\":\"Memory (MB)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1166\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1127\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1128\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1129\"},\"axis_label\":\"Time (s)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1130\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1131\",\"attributes\":{\"axis\":{\"id\":\"p1127\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1136\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1132\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1150\",\"attributes\":{\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1151\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"% CPU\"},\"renderers\":[{\"id\":\"p1147\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1162\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Memory\"},\"renderers\":[{\"id\":\"p1159\"}]}}]}}]}}]}};\n const render_items = [{\"docid\":\"d0e69342-072e-4b48-a26a-ba3f2f9e476d\",\"roots\":{\"p1113\":\"e3188780-fb13-47e6-a28f-19b941c14984\"},\"root_ids\":[\"p1113\"]}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1113" } }, "output_type": "display_data" }, { "data": { "text/html": [ "
figure(
id = 'p1113', …)
above = [],
align = 'auto',
aspect_ratio = None,
aspect_scale = 1,
background_fill_alpha = 1.0,
background_fill_color = '#ffffff',
below = [LinearAxis(id='p1127', ...)],
border_fill_alpha = 1.0,
border_fill_color = '#ffffff',
center = [Grid(id='p1131', ...), Grid(id='p1136', ...), Legend(id='p1150', ...)],
context_menu = None,
css_classes = [],
disabled = False,
extra_x_ranges = {},
extra_x_scales = {},
extra_y_ranges = {'memory': Range1d(id='p1152', ...)},
extra_y_scales = {},
flow_mode = 'block',
frame_align = True,
frame_height = None,
frame_width = None,
height = 300,
height_policy = 'auto',
hidpi = True,
hold_render = False,
js_event_callbacks = {},
js_property_callbacks = {},
left = [LinearAxis(id='p1132', ...)],
lod_factor = 10,
lod_interval = 300,
lod_threshold = 2000,
lod_timeout = 500,
margin = None,
match_aspect = False,
max_height = None,
max_width = None,
min_border = 5,
min_border_bottom = None,
min_border_left = None,
min_border_right = None,
min_border_top = None,
min_height = None,
min_width = None,
name = None,
outline_line_alpha = 1.0,
outline_line_cap = 'butt',
outline_line_color = '#e5e5e5',
outline_line_dash = [],
outline_line_dash_offset = 0,
outline_line_join = 'bevel',
outline_line_width = 1,
output_backend = 'canvas',
renderers = [GlyphRenderer(id='p1147', ...), GlyphRenderer(id='p1159', ...)],
reset_policy = 'standard',
resizable = False,
right = [LinearAxis(id='p1163', ...)],
sizing_mode = None,
styles = {},
stylesheets = [],
subscribed_events = PropertyValueSet(),
syncable = True,
tags = [],
title = Title(id='p1116', ...),
title_location = 'above',
toolbar = Toolbar(id='p1122', ...),
toolbar_inner = False,
toolbar_location = 'above',
toolbar_sticky = True,
visible = True,
width = 800,
width_policy = 'auto',
x_range = Range1d(id='p1123', ...),
x_scale = LinearScale(id='p1125', ...),
y_range = Range1d(id='p1124', ...),
y_scale = LinearScale(id='p1126', ...))
\n", "\n" ], "text/plain": [ "figure(id='p1113', ...)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compute SVD\n", "with resource_profiler:\n", " u[:], s[:], vh[:] = np.linalg.svd(AL_inv, full_matrices=False)\n", "\n", "resource_profiler.visualize()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Compute $L^{-1}V$\n", "---" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"9c593e8d-8933-4632-a82b-8cd42ea09360\":{\"version\":\"3.2.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1169\",\"attributes\":{\"width\":800,\"height\":300,\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1179\",\"attributes\":{\"end\":9.39714535100211}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1180\",\"attributes\":{\"end\":12812.8}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1181\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1182\"},\"extra_y_ranges\":{\"type\":\"map\",\"entries\":[[\"memory\",{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1208\",\"attributes\":{\"start\":51264.786432,\"end\":52518.883328}}]]},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1172\",\"attributes\":{\"text\":\"Profile Results\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1203\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1197\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1198\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1199\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.14940673799719661,1.1516325789998518,2.152995694996207,3.154830857005436,4.1569848700019065,5.159349718000158,6.1612974269955885,7.163502729003085,8.164920922994497]],[\"y\",[0.0,1346.5,12812.8,12668.2,12750.3,12745.2,12773.3,4032.8,100.9]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1204\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1205\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1200\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_width\":4}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1201\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_alpha\":0.1,\"line_width\":4}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1202\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#440154\",\"line_alpha\":0.2,\"line_width\":4}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1215\",\"attributes\":{\"y_range_name\":\"memory\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1209\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1210\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1211\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[0.14940673799719661,1.1516325789998518,2.152995694996207,3.154830857005436,4.1569848700019065,5.159349718000158,6.1612974269955885,7.163502729003085,8.164920922994497]],[\"y\",[51264.786432,51265.835008,51265.835008,51265.835008,51265.835008,51265.835008,51265.835008,51807.9488,52518.883328]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1216\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1217\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1212\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_width\":4}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1213\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_alpha\":0.1,\"line_width\":4}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1214\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#29788E\",\"line_alpha\":0.2,\"line_width\":4}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1178\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1193\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1194\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1195\",\"attributes\":{\"dimensions\":\"width\"}},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1196\",\"attributes\":{\"dimensions\":\"width\"}}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1188\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1189\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1190\"},\"axis_label\":\"% CPU\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1191\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1219\",\"attributes\":{\"y_range_name\":\"memory\",\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1220\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1221\"},\"axis_label\":\"Memory (MB)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1222\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1183\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1184\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1185\"},\"axis_label\":\"Time (s)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1186\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1187\",\"attributes\":{\"axis\":{\"id\":\"p1183\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1192\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1188\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1206\",\"attributes\":{\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1207\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"% CPU\"},\"renderers\":[{\"id\":\"p1203\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1218\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Memory\"},\"renderers\":[{\"id\":\"p1215\"}]}}]}}]}}]}};\n const render_items = [{\"docid\":\"9c593e8d-8933-4632-a82b-8cd42ea09360\",\"roots\":{\"p1169\":\"fbaf2605-3450-4e3c-b797-307d81b90055\"},\"root_ids\":[\"p1169\"]}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1169" } }, "output_type": "display_data" }, { "data": { "text/html": [ "
figure(
id = 'p1169', …)
above = [],
align = 'auto',
aspect_ratio = None,
aspect_scale = 1,
background_fill_alpha = 1.0,
background_fill_color = '#ffffff',
below = [LinearAxis(id='p1183', ...)],
border_fill_alpha = 1.0,
border_fill_color = '#ffffff',
center = [Grid(id='p1187', ...), Grid(id='p1192', ...), Legend(id='p1206', ...)],
context_menu = None,
css_classes = [],
disabled = False,
extra_x_ranges = {},
extra_x_scales = {},
extra_y_ranges = {'memory': Range1d(id='p1208', ...)},
extra_y_scales = {},
flow_mode = 'block',
frame_align = True,
frame_height = None,
frame_width = None,
height = 300,
height_policy = 'auto',
hidpi = True,
hold_render = False,
js_event_callbacks = {},
js_property_callbacks = {},
left = [LinearAxis(id='p1188', ...)],
lod_factor = 10,
lod_interval = 300,
lod_threshold = 2000,
lod_timeout = 500,
margin = None,
match_aspect = False,
max_height = None,
max_width = None,
min_border = 5,
min_border_bottom = None,
min_border_left = None,
min_border_right = None,
min_border_top = None,
min_height = None,
min_width = None,
name = None,
outline_line_alpha = 1.0,
outline_line_cap = 'butt',
outline_line_color = '#e5e5e5',
outline_line_dash = [],
outline_line_dash_offset = 0,
outline_line_join = 'bevel',
outline_line_width = 1,
output_backend = 'canvas',
renderers = [GlyphRenderer(id='p1203', ...), GlyphRenderer(id='p1215', ...)],
reset_policy = 'standard',
resizable = False,
right = [LinearAxis(id='p1219', ...)],
sizing_mode = None,
styles = {},
stylesheets = [],
subscribed_events = PropertyValueSet(),
syncable = True,
tags = [],
title = Title(id='p1172', ...),
title_location = 'above',
toolbar = Toolbar(id='p1178', ...),
toolbar_inner = False,
toolbar_location = 'above',
toolbar_sticky = True,
visible = True,
width = 800,
width_policy = 'auto',
x_range = Range1d(id='p1179', ...),
x_scale = LinearScale(id='p1181', ...),
y_range = Range1d(id='p1180', ...),
y_scale = LinearScale(id='p1182', ...))
\n", "\n" ], "text/plain": [ "figure(id='p1169', ...)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create memory-map to store\n", "L_inv_V = open_memmap(RTM_DIR / \"L_inv_V.npy\", dtype=np.float64, mode=\"w+\", shape=(n, k))\n", "\n", "# compute\n", "with resource_profiler:\n", " L_inv_V[:] = L_inv.dot(vh.T)\n", "\n", "resource_profiler.visualize()" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. note::\n", "\n", " `demos/rtm2svd.py `_\n", " is the script file having the same workflow of SVD calculation as the above codes." ] } ], "metadata": { "kernelspec": { "display_name": "cherab-phix-dev", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" }, "nbsphinx": { "execute": "never" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "2725905a4c02db19e04df9b8fdbbe5ec65a73ea52bebaf9474aa1cc98819834c" } } }, "nbformat": 4, "nbformat_minor": 2 }