{ "cells": [ { "cell_type": "code", "id": "fbc121e30a2defb3", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:24.473239Z", "start_time": "2025-11-21T14:47:24.470530Z" } }, "source": [ "# import matplotlib.pyplot as plt\n", "import csv\n", "import math\n", "import plotly.graph_objects as go\n", "import numpy as np\n", "from jupyter_client.connect import channel_socket_types\n", "from prompt_toolkit.key_binding.bindings.named_commands import uppercase_word\n", "import pandas as pd\n", "from scipy.fft import fft, ifft\n", "from experiment_loader import load_2d_experiment, load_3d_experiment\n", "from modeling import *\n", "from plotly.subplots import make_subplots\n", "\n", "# plt.rcParams['figure.figsize'] = [25, 15]" ], "outputs": [], "execution_count": 20 }, { "cell_type": "code", "id": "37bf71a9-de31-4274-8b55-d20efc1bf556", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:24.836372Z", "start_time": "2025-11-21T14:47:24.834668Z" } }, "source": [ "PLOT_WIDTH = 2000\n", "PLOT_HEIGHT = 1000" ], "outputs": [], "execution_count": 21 }, { "cell_type": "code", "id": "a96ea0301fc7692a", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:25.000327Z", "start_time": "2025-11-21T14:47:24.997035Z" } }, "source": [ "channels, filter_meas = load_2d_experiment(\"./lut_channnel_sweep.csv\")\n", "filters, filter_meas = load_2d_experiment(\"./lut_filter_sweep.csv\")\n", "inputs, input_meas = load_2d_experiment(\"./lut_input_sweep.csv\")\n", "channel_cf, filters_cf, channel_filter_meas = load_3d_experiment(\"./lut_channel_filter_sweep.csv\")" ], "outputs": [], "execution_count": 22 }, { "cell_type": "code", "id": "c7abf7a2802a93b8", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:25.193118Z", "start_time": "2025-11-21T14:47:25.191467Z" } }, "source": [], "outputs": [], "execution_count": null }, { "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:25.395929Z", "start_time": "2025-11-21T14:47:25.393327Z" } }, "cell_type": "code", "source": [ "def calculate_complexity(\n", " input_shape: tuple, kernel_size: tuple, stride: tuple, filters: int, padding: str\n", "):\n", " if padding == \"valid\":\n", " out_x = np.floor((input_shape[0] - kernel_size[0]) / stride[0]) + 1\n", " out_y = np.floor((input_shape[1] - kernel_size[1]) / stride[1]) + 1\n", " else:\n", " out_x = np.floor((input_shape[0] - 1) / stride[0]) + 1\n", " out_y = np.floor((input_shape[1] - 1) / stride[1]) + 1\n", " return kernel_size[0] * kernel_size[1] * input_shape[2] * out_x * out_y * filters\n" ], "id": "cad87ae957f50f74", "outputs": [], "execution_count": 23 }, { "cell_type": "code", "id": "9a653659b7f067cf", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:25.715960Z", "start_time": "2025-11-21T14:47:25.702136Z" } }, "source": [ "import scipy\n", "from collections import Counter\n", "from itertools import repeat, chain\n", "\n", "with open('./lut_filter_sweep.csv') as csvfile:\n", " spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')\n", " rows = list(spamreader)\n", " filters = [int(row[0]) for row in rows]\n", " filter_meas = [float(row[1]) for row in rows]\n", "fig = go.Figure()\n", "fig.add_trace(go.Scatter(x=filters, y=filter_meas, name=\"Filter Measurements\"))\n", "deltas = []\n", "for i in range(1, len(filter_meas)):\n", " deltas.append((filter_meas[i] - filter_meas[i-1]) / filter_meas[i-1])\n", "\n", "\n", "peaks = scipy.signal.find_peaks(deltas, prominence=0.1)[0]\n", "distances = []\n", "\n", "for (fpidx, first_peak) in enumerate(peaks):\n", " for (spidx, second_peak) in enumerate(peaks[fpidx+1:]):\n", " distances.append(int(second_peak - first_peak))\n", "\n", "print(set(list(chain.from_iterable(repeat(i, c) for i,c in Counter(distances).most_common()))))\n", "\n", "\n", "counted_distances = {int(d):distances.count(d) for d in distances}\n", "print(counted_distances)\n", "fig.add_trace(go.Scatter(x=filters[1:], y=deltas, name=\"Deltas\"))\n", "\n", "fig.update_layout(\n", " autosize=False,\n", " width=PLOT_WIDTH,\n", " height=PLOT_HEIGHT,\n", ")" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{128, 256, 2, 64, 192, 320, 448, 384, 51, 115, 117, 53, 245, 373, 501, 243, 371, 499}\n", "{2: 1, 53: 1, 117: 1, 245: 1, 373: 1, 501: 1, 51: 1, 115: 1, 243: 1, 371: 1, 499: 1, 64: 1, 192: 1, 320: 1, 448: 1, 128: 3, 256: 2, 384: 1}\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "name": "Filter Measurements", "x": [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529 ], "y": [ 2.793504739629811, 2.4239360094070435, 2.794331192970276, 2.4243624031543733, 2.7955965608416027, 2.7932935036145725, 2.7946816205978395, 2.900626393570297, 2.795363187789917, 2.7950143814086914, 2.795246422290802, 2.9074972804437236, 2.906456000275082, 2.9118503987789155, 2.793948793411255, 2.79617919921875, 2.799169588088989, 2.7963696241378786, 2.798534369468689, 2.7995016801924932, 2.7967277265364126, 2.8000080227851867, 2.796863676094618, 2.8030832171440125, 2.802793598175049, 2.802662396430969, 2.8029208265501877, 2.8060383915901186, 2.803326439857483, 2.805604803562164, 2.8031686367374835, 2.81243040561676, 2.8112080097198486, 2.813638377189636, 2.8102780354989543, 2.8170645316441854, 2.81270467333433, 2.8171346221651348, 2.812943994998932, 2.828370607856039, 2.828363319543692, 2.8328799794359907, 2.8275781761516225, 2.8281856060028074, 2.832202638898577, 2.82951578491505, 2.8322895765304565, 2.839938903783823, 2.8432207822799684, 2.841615030908177, 2.8423429572063945, 2.837699283872332, 2.835508564540318, 2.839439453617219, 2.8358303904533386, 4.47564160823822, 4.476091194152832, 4.4747215747833256, 4.475995182991028, 4.478273582458496, 4.476660251617432, 4.477105593681335, 4.4762374983893505, 4.483627128601074, 4.4832056045532225, 4.482939827826716, 4.483703491422865, 4.481824004460895, 4.484153883797782, 4.4816252626018755, 4.48453136572317, 4.494086384773254, 4.4951999425888065, 4.49341044198899, 4.493805834416593, 4.497256016731262, 4.496616545177641, 4.496161603927613, 4.496502506900841, 4.505350399017334, 4.506679906949892, 4.506042408388715, 4.506991982460022, 4.4969538392157675, 4.497638392448425, 4.4978705391739355, 4.497283377145466, 4.521688032150268, 4.522000128828634, 4.52227201461792, 4.523527890035551, 4.522868890028733, 4.52505786746156, 4.5239835880898145, 4.523408251542311, 4.533880019187928, 4.535059094429016, 4.5329196764075235, 4.53601758480072, 4.5325136423110965, 4.534947228431702, 4.532719969749451, 4.533897710883099, 4.547094392776489, 4.546679258346558, 4.54715359210968, 4.548254346847534, 4.55447039604187, 4.555039978027343, 4.553671995798747, 4.552888661843759, 4.559809565544128, 4.563239264734013, 4.56004574185326, 4.56137448265439, 4.548570079803467, 4.553880023956299, 4.551568479248972, 4.550295590348385, 8.401746374661805, 8.400553081346596, 8.402327919006348, 8.403441619873046, 8.386327310041947, 8.388444757461547, 8.384917952797629, 8.39109343069571, 8.408369342486063, 8.415891541375053, 8.408684682846069, 8.408676862716675, 8.381341096126672, 8.379672002792358, 8.38229284286499, 8.381028032302856, 8.415692806243896, 8.415174531936646, 8.414750337600708, 8.418830468621053, 8.396484331651168, 8.3957839012146, 8.396012878417968, 8.401964855194091, 8.436385518028622, 8.438147258758544, 8.4357008934021, 8.437403202056885, 8.361732510157994, 8.362580886253944, 8.362643241882324, 8.359467220306396, 8.451806354522706, 8.452502209207285, 8.453992038965225, 8.452004861831664, 8.43462272644043, 8.432433605194092, 8.422898356834155, 8.430666640952781, 8.461548805236816, 8.469440031051636, 8.466996453025125, 8.470930281139555, 8.422366523742676, 8.42140965461731, 8.416614437103272, 8.41830072402954, 8.483617059115705, 8.481812858581543, 8.48272430195528, 8.486838388442994, 8.469652795791626, 8.457950544357299, 8.463156295545174, 8.457891273498536, 8.492940028508505, 8.496900796890259, 8.49557123184204, 8.49832797050476, 8.393123197555543, 8.391068744659425, 8.397862434387207, 8.389068746566773, 8.932126933130725, 8.920547342300415, 8.929844760894776, 8.934782361984253, 8.92953602043358, 8.924151145805746, 8.925016639093874, 8.935329225328234, 8.93358883857727, 8.944709032773972, 8.938961601257324, 8.922552013397217, 8.925412813822428, 8.923444747924805, 8.924403285980224, 8.93480650583903, 8.94769606590271, 8.948854351043702, 8.941804838180541, 8.96178240776062, 8.96885118484497, 8.943736439659482, 8.949483156204224, 8.947532749176025, 8.9576735496521, 8.959207441748642, 8.957499170303345, 8.95613112449646, 8.928075432777405, 8.927135289921935, 8.930029658710255, 8.930995082855224, 8.981255960464477, 8.98113284111023, 8.978388143622357, 8.975902414321899, 8.982316827774047, 8.987536028811807, 8.981223964691162, 8.974685668945312, 8.974740839004516, 8.981459140777588, 8.990288019180298, 9.002008220127651, 8.98309326171875, 8.977246501229025, 8.983954056449559, 8.985075235366821, 8.995889568328858, 8.992504153335304, 8.997683191299439, 8.989884757995606, 9.006422281265259, 9.007603168487549, 9.007188749313354, 9.017457191760723, 9.038155269622802, 9.033274353875054, 9.020059156417847, 9.026299528437722, 8.99552149772644, 8.994083213806153, 9.005435053507487, 9.00172953605652, 13.516235208511352, 13.505260801315307, 13.511651182174683, 13.50810718536377, 13.48673600416917, 13.480491304293242, 13.48421061038971, 13.494915246963501, 13.519144010543823, 13.511634742512422, 13.508563137054443, 13.505699253082275, 13.471219158172607, 13.46687364578247, 13.47859206199646, 13.466791818726737, 13.525752019882201, 13.515908765792847, 13.514471435546875, 13.515184020996093, 13.482681512832642, 13.490302324295044, 13.499466008153455, 13.495806312561035, 13.523062324523925, 13.523134422302245, 13.520408010482788, 13.518331289291382, 13.445424032211303, 13.443278598785401, 13.454934358596802, 13.441981292493416, 13.524393558502197, 13.515500736236572, 13.519564723968506, 13.549387216567993, 13.493891334533691, 13.498153524195894, 13.49277114868164, 13.508883237838745, 13.531960058212281, 13.527108860015868, 13.524993705749512, 13.521002292633057, 13.490092754364014, 13.487257528305054, 13.4950767993927, 13.48414550289031, 13.54574728012085, 13.54027361869812, 13.546494340896606, 13.547007989883422, 13.527294445037843, 13.506411170959472, 13.532524440947414, 13.514899158477784, 13.553501038324265, 13.54817762374878, 13.555742311477662, 13.557825613021851, 13.4567232131958, 13.45047206878662, 13.476235103607177, 13.481751918792725, 13.575590372085571, 13.55117449760437, 13.577361631393433, 13.572888046503067, 13.542574501037597, 13.532990844161422, 13.563217639923096, 13.545382261276245, 13.59128440510143, 13.589182472229004, 13.578951930999756, 13.612599992752076, 13.531459133799483, 13.514433670043946, 13.538540887832642, 13.52881441116333, 13.609862279891967, 13.605896949768066, 13.59034242630005, 13.611353540420533, 13.569646488536488, 13.59254560470581, 13.585556745529175, 13.579700899124145, 13.619393587112427, 13.611684894561767, 13.624859142303468, 13.636267355510167, 13.520601606369018, 13.516599893569946, 13.519156779012372, 13.547051191329956, 13.650067031383514, 13.654295227744363, 13.650919961929322, 13.646697568893433, 13.620918416976929, 13.624814462661742, 13.621403169631957, 13.621265554428101, 13.65840950012207, 13.666110372543335, 13.661764860153198, 13.660811233520509, 13.60877766609192, 13.616231966018677, 13.611605326334635, 13.622315263748169, 13.679530965870825, 13.677458190917969, 13.687841653823853, 13.678004884719849, 13.65606770148644, 13.665281629562378, 13.656019258499146, 13.664062452316283, 13.702339267730713, 13.698062419891357, 13.725764894485474, 13.705843114852906, 13.570115184783935, 13.571393489837646, 13.570959997177123, 13.571288193425824, 17.922159910202026, 17.911265563964843, 17.917527675628662, 17.90941276550293, 17.891676807403563, 17.899514961242676, 17.89599189758301, 17.902646160125734, 17.933947517758323, 17.914697647094727, 17.92440503835678, 17.90936164855957, 17.878186988830567, 17.880504035949706, 17.882677540634617, 17.885101611797626, 17.937091064453124, 17.9227294921875, 17.93243999481201, 17.925262239244248, 17.932404804229737, 17.910411071777343, 17.915783977508546, 17.912262535095216, 17.946040454663727, 17.94273462295532, 17.951073455810548, 17.93831205368042, 17.85464792251587, 17.862432098388673, 17.87087059020996, 17.871755013099083, 17.96612498339485, 17.95088923604865, 17.96669120788574, 17.951315212249757, 17.93734181722005, 17.943105350841176, 17.937054443359376, 17.94244716478431, 17.96651734246148, 17.969098429526053, 17.964640045166014, 17.96244306564331, 17.91234407424927, 17.922164630889892, 17.926011180877687, 17.930769443511963, 17.9668550491333, 17.973751735687255, 17.982246494293214, 18.009730559128982, 17.96060962677002, 17.974471428815058, 17.971894454956054, 17.957859230041503, 18.007707023620604, 18.000545758467453, 17.99367513656616, 18.002596855163574, 17.89446997642517, 17.88310546875, 17.897526359558107, 17.889801502227783, 18.01217542375837, 18.023472284866592, 18.002897657197096, 18.006766510009765, 18.001220703125, 17.99326820743894, 17.977918338775634, 17.987875175476074, 18.02204159327916, 18.031923007965087, 18.012448120117188, 18.0393967628479, 18.00465269088745, 17.973550415039064, 17.97621431350708, 17.97783741584191, 18.05802240371704, 18.037843322753908, 18.028014087677, 18.036841165451776, 18.015132713317872, 18.02256998334612, 18.027661664145334, 18.033714540543095, 18.063362728465687, 18.05432383219401, 18.043393221768465, 18.08307523727417, 17.957617936310946, 17.997153780039618, 17.950890385827353, 17.95684642791748, 18.077316897256033, 18.057982444763184, 18.062974515168563, 18.108662414550782, 18.04671859741211, 18.06342420578003, 18.03501542409261, 18.042329597473145, 18.104286479949952, 18.08070240020752, 18.076457595825197, 18.09907054901123, 18.03522040049235, 18.03392848968506, 18.083748531341552, 18.03271369934082, 18.11275510787964, 18.138642966747284, 18.14924907684326, 18.086367988586424, 18.09632158279419, 18.088729667663575, 18.11191987991333, 18.110195214407785, 18.091178989410402, 18.145180702209473, 18.119625568389893, 18.105102146373074, 17.991081714630127, 17.99292459487915, 18.048926448822023, 18.022895908355714, 22.70647087097168, 22.65171970020641, 22.654771853715946, 22.65527856009347, 22.611995124816893, 22.651770807081654, 22.624541338752298, 22.6748929977417, 22.714595127105714, 22.716782569885254, 22.672746058872768, 22.71070083618164, 22.5701584815979, 22.571488173111625, 22.608145427703857, 22.59220037962261, 22.711265563964844 ], "type": "scatter" }, { "name": "Deltas", "x": [ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529 ], "y": [ -0.13229572335421994, 0.15280732747307157, -0.13239976375979925, 0.15312651161567725, -8.238160181227452E-4, 4.969463400357928E-4, 0.03790942488461132, -0.036289818645280525, -1.2478034437498652E-4, 8.301956643015438E-5, 0.040157768294692274, -3.581362485341874E-4, 0.0018560055625555082, -0.04049026880539699, 7.98298742179851E-4, 0.0010694553736308034, -0.0010002837852429076, 7.741270367567555E-4, 3.456490419975901E-4, -9.908740815222333E-4, 0.0011729051125175449, -0.0011229777432711814, 0.002223755523929928, -1.0332157361304035E-4, -4.681106170828825E-5, 9.220879387672652E-5, 0.0011122558334150147, -9.664699316885313E-4, 8.127357814228976E-4, -8.683214476919612E-4, 0.003304035568140533, -4.346404072684826E-4, 8.645277977952328E-4, -0.0011943047542727254, 0.002414884242592802, -0.00154766007696336, 0.001574978302131205, -0.0014875494884877536, 0.00548415214968148, -2.576859032098515E-6, 0.0015969164431914125, -0.0018715241460471937, 2.1482336237706233E-4, 0.0014203568843725286, -9.486799943706172E-4, 9.80306111100119E-4, 0.0027007574778906674, 0.0011556158802475743, -5.647649249749379E-4, 2.5616640195803115E-4, -0.0016337484265538835, -7.720054568377764E-4, 0.0013863083067563364, -0.0012710477623612167, 0.5782472828083134, 1.0045172378952223E-4, -3.059855820845322E-4, 2.8462289472478563E-4, 5.090263448286214E-4, -3.6025732045136456E-4, 9.948087164813318E-5, -1.9389654182152497E-4, 0.0016508574923431824, -9.401407292829037E-5, -5.9282743186465174E-5, 1.703488392615503E-4, -4.191818137763623E-4, 5.198506979674889E-4, -5.639015210968983E-4, 6.484484871023869E-4, 0.0021306616613537706, 2.477829129687049E-4, -3.9809143590301024E-4, 8.799383735520497E-5, 7.677639937723325E-4, -1.4219149437826284E-4, -1.0117412624753112E-4, 7.582088974079611E-5, 0.0019677276067152135, 2.9509534549151863E-4, -1.4145636573707963E-4, 2.1073349632472684E-4, -0.002227237874688962, 1.522259861081813E-4, 5.161524899382631E-5, -1.3054222511638534E-4, 0.005426532632749566, 6.902216078304527E-5, 6.012511754538166E-5, 2.7770895106947675E-4, -1.456827553266664E-4, 4.8397985571777804E-4, -2.3740676986037205E-4, -1.271747645190107E-4, 0.0023150171426702037, 2.60058765582354E-4, -4.717508585766306E-4, 6.834245065758049E-4, -7.724710991783839E-4, 5.369175500957616E-4, -4.911322161121147E-4, 2.5983099364355655E-4, 0.002910670406549599, -9.129663782457326E-5, 1.0432531880312457E-4, 2.420755568414716E-4, 0.001366689002044131, 1.2505998193964254E-4, -3.0032277108329303E-4, -1.720224811341304E-4, 0.001520112661302586, 7.521584269221709E-4, -6.998368254395318E-4, 2.913876036229741E-4, -0.0028071369495345816, 0.0011673875656899532, -5.075989475275548E-4, -2.7965939793947887E-4, 0.8464177123971284, -1.4202919988253815E-4, 2.1127628652135E-4, 1.3254670341762362E-4, -0.0020365834148982167, 2.524880488583734E-4, -4.2043606006720403E-4, 7.364983095655073E-4, 0.0020588391647691135, 8.946085242690307E-4, -8.563392830758042E-4, -9.300062600484914E-7, -0.003250899878339632, -1.9914394548213146E-4, 3.1276165364931333E-4, -1.5089076292656563E-4, 0.0041361004649349145, -6.158427109717457E-5, -5.0408263587206616E-5, 4.848784404349E-4, -0.0026543041878767173, -8.341948950324208E-5, 2.7272879586105085E-5, 7.089051508511028E-4, 0.004096739682653197, 2.0882648453619313E-4, -2.8991735761725986E-4, 2.0179812872651759E-4, -0.008968481188672318, 1.0145936801012459E-4, 7.456505261714074E-6, -3.79786807121233E-4, 0.011046054943789295, 8.233206670750102E-5, 1.76259020236294E-4, -2.3505784301686226E-4, -0.002056569497460848, -2.595399127309389E-4, -0.0011307825008030066, 9.222815935233198E-4, 0.0036630750092788906, 9.325982744360229E-4, -2.885170704972926E-4, 4.646072708610657E-4, -0.005732989858859524, -1.1361048259636277E-4, -5.694079388964659E-4, 2.00352165216824E-4, 0.0077588502985789865, -2.126687852114932E-4, 1.0745855737834579E-4, 4.8499589769361855E-4, -0.0020249699434326607, -0.0013816683772612042, 6.154861228584152E-4, -6.221109315220043E-4, 0.00414391174781221, 4.6636010244494085E-4, -1.5647647065677523E-4, 3.2449126580065833E-4, -0.012379467268661952, -2.447781174850994E-4, 8.096334250754888E-4, -0.001047134064071614, 0.06473402507116165, -0.0012963979259362779, 0.0010422475480034233, 5.529324665417899E-4, -5.87181795607466E-4, -6.03040809232658E-4, 9.698326193573791E-5, 0.001155469692816909, -1.9477589544548873E-4, 0.0012447622559795762, -6.425509757319938E-4, -0.001835737593704239, 3.206258053654546E-4, -2.2050138617400882E-4, 1.0741794032427666E-4, 0.0011657048124604614, 0.0014426233019435542, 1.2945065774035822E-4, -7.877559055744452E-4, 0.0022341764265281275, 7.887691044841264E-4, -0.002800218742387668, 6.425409093294806E-4, -2.1793515828302096E-4, 0.001133362767183885, 1.7123777597389866E-4, -1.9067216117096112E-4, -1.5272631131468326E-4, -0.0031325682182475755, -1.0530184949133554E-4, 3.2422145451159494E-4, 1.0810984754425119E-4, 0.00562769065965987, -1.3708478501187749E-5, -3.0560704717651937E-4, -2.768569659381469E-4, 7.146260237760201E-4, 5.810528773179099E-4, -7.023130811836876E-4, -7.279960695284585E-4, 6.147297101964104E-6, 7.485789164934642E-4, 9.8301158690631E-4, 0.0013036513315645678, -0.002101193194492885, -6.508627172602541E-4, 7.471728908875154E-4, 1.2479793532089794E-4, 0.0012035884707419465, -3.763290965101116E-4, 5.759283371822625E-4, -8.667157020347105E-4, 0.0018395701073859138, 1.3111612862595458E-4, -4.600770776013558E-5, 0.0011400274528667058, 0.0022953341969830236, -5.40034509492505E-4, -0.0014629465395942266, 6.91832715468879E-4, -0.0034098171254249568, -1.5988888700340295E-4, 0.001262145282790837, -4.114756731851874E-4, 0.5015153648387162, -8.1194260285839E-4, 4.731771532137563E-4, -2.6229191111659824E-4, -0.001582100356573652, -4.63025291960785E-4, 2.75902859362627E-4, 7.938645340902256E-4, 0.00179539946245852, -5.554544004815529E-4, -2.2733040942224153E-4, -2.1200507730627832E-4, -0.0025530033109391883, -3.225775142630698E-4, 8.701660476082037E-4, -8.754804074080455E-4, 0.0043781920704733385, -7.277417237048957E-4, -1.0634358894236888E-4, 5.2727585582351264E-5, -0.0024048883176846524, 5.652296581469313E-4, 6.792793547634362E-4, -2.710992857206032E-4, 0.002019591222017055, 5.3314683161083046E-6, -2.0161093828670933E-4, -1.5359900306231505E-4, -0.0053932142599458785, -1.595660665488919E-4, 8.670325267568102E-4, -9.627000591875264E-4, 0.006130961218849747, -6.575394473074307E-4, 3.0069087422250975E-4, 0.002205876683782289, -0.004095822279434346, 3.1586067773461366E-4, -3.987490218277173E-4, 0.0011941275057258183, 0.0017082700299679157, -3.5849929910696546E-4, -1.5636410472071263E-4, -2.9511386129215186E-4, -0.002286038978477512, -2.1017098329750633E-4, 5.797524864662963E-4, -8.100210665627277E-4, 0.004568459841770084, -4.040870768911443E-4, 4.594236699837679E-4, 3.791748432399625E-5, -0.0014551954837777636, -0.0015437879439395752, 0.001933398121633431, -0.001302438620860649, 0.00285624623564188, -3.927704406730812E-4, 5.583546318157174E-4, 1.536840621723474E-4, -0.007457124963234882, -4.645368943198937E-4, 0.0019154000460952407, 4.093736227613677E-4, 0.006960404987280748, -0.0017985129052955212, 0.0019324622964373333, -3.294885274339703E-4, -0.0022333894865713367, -7.076687579190736E-4, 0.002233563600962239, -0.0013149813798130363, 0.0033887669568698937, -1.5465299744865562E-4, -7.528444959919619E-4, 0.0024779572034203893, -0.005960717202870501, -0.0012582134407818895, 0.0017838126537357076, -7.184287250669656E-4, 0.00599075915046632, -2.913571087166161E-4, -0.0011432192618717706, 0.0015460327239306833, -0.003064136991239724, 0.0016875248878934985, -5.141685288306708E-4, -4.310347021263658E-4, 0.002922942727762291, -5.660085011387005E-4, 9.678631149449947E-4, 8.373087081156422E-4, -0.008482214826509, -2.9597150449184616E-4, 1.891663186421411E-4, 0.0020633248636400666, 0.0076042999025122135, 3.097564540252855E-4, -2.4719443653034286E-4, -3.093119766040962E-4, -0.001889039585318121, 2.860339931232103E-4, -2.5037354006791565E-4, -1.0102865478878146E-5, 0.0027269085640794, 5.638191197295053E-4, -3.1797726431852615E-4, -6.980259450015344E-5, -0.0038089661396470175, 5.47756757414852E-4, -3.3978854763851764E-4, 7.868239753332433E-4, 0.0042001452040182335, -1.515238320690323E-4, 7.591661228968848E-4, -7.186501241600452E-4, -0.0016038291708694351, 6.747131222067671E-4, -6.778031594456043E-4, 5.889852426893276E-4, 0.0028012763808716724, -3.12125379162606E-4, 0.0020223644589244237, -0.0014514148964166087, -0.009902924536023854, 9.420001498179221E-5, -3.1941647027460653E-5, 2.4183716462857092E-5, 0.32059386366018244, -6.078701613962176E-4, 3.4961860408220575E-4, -4.529034514494824E-4, -9.9031488813124E-4, 4.3808939338039224E-4, -1.968245322454631E-4, 3.7182976952639986E-4, 0.0017484207280098255, -0.0010733761010806608, 5.418674349566105E-4, -8.392685707011386E-4, -0.0017406907259316664, 1.296019065348222E-4, 1.2155723801418982E-4, 1.3555415051806722E-4, 0.0029068581092770414, -8.006633970925961E-4, 5.41798202597646E-4, -4.0026653204137497E-4, 3.984636258125184E-4, -0.0012264798108509302, 2.9998785118169385E-4, -1.965553066363656E-4, 0.0018857427699225761, -1.84209531721364E-4, 4.6474704277007606E-4, -7.10899109267304E-4, -0.004663991289380241, 4.35974761674639E-4, 4.724156136637663E-4, 4.948963648175904E-5, 0.005280397489032136, -8.480263473777071E-4, 8.802890836939197E-4, -8.558056382266004E-4, -7.784050842230037E-4, 3.213148124094442E-4, -3.372274399267444E-4, 3.006469898366857E-4, 0.0013415214466627157, 1.436609563987918E-4, -2.481139706326451E-4, -1.2229465868399285E-4, -0.0027890967398452034, 5.482563644331101E-4, 2.1462530151995972E-4, 2.6543900850356105E-4, 0.0020124962141206404, 3.8385608027082375E-4, 4.7262022592048185E-4, 0.0015283999607329597, -0.0027274662548499176, 7.717890613455526E-4, -1.433685473984175E-4, -7.809541141991478E-4, 0.002775820488430549, -3.9767779116783576E-4, -3.8168964394095974E-4, 4.958252569139199E-4, -0.006006182308492342, -6.35084899979917E-4, 8.063974589484764E-4, -4.3161592139230213E-4, 0.006840429253245172, 6.271791631187517E-4, -0.0011415462761175147, 2.1490167229398565E-4, -3.0798460576928464E-4, -4.4177535608339475E-4, -8.530895269465853E-4, 5.538370189925756E-4, 0.0018994137700970076, 5.482960759347766E-4, -0.0010800227928710927, 0.0014961121637105293, -0.0019260107428872163, -0.0017274576956504185, 1.4821214543041892E-4, 9.029166578265376E-5, 0.004460213206982843, -0.0011174579647757158, -5.449229656246105E-4, 4.896311780014044E-4, -0.0012035617509059654, 4.128345955925178E-4, 2.825169109577334E-4, 3.357549365261535E-4, 0.0016440422108234209, -5.003994221647143E-4, -6.054289558081081E-4, 0.0021992545979561025, -0.006937829949665935, 0.002201619606168856, -0.002570595038398482, 3.317964714902822E-4, 0.00670888787862315, -0.001069542156213677, 2.764467415254725E-4, 0.0025293674274883427, -0.0034206732513219263, 9.25686754505992E-4, -0.0015727240507550518, 4.0555404076699007E-4, 0.0034339735421685122, -0.0013026793278238119, -2.3476988273837742E-4, 0.0012509615374671778, -0.0035278136712036494, -7.163265979572003E-5, 0.0027625728739574286, -0.002822137894269035, 0.00443867794239667, 0.0014292612423375884, 5.84724563762651E-4, -0.0034646661132149937, 5.503368179861431E-4, -4.1952808452701485E-4, 0.0012820254752997536, -9.522267749527106E-5, -0.001050028714337353, 0.0029849747675748787, -0.0014083703127006238, -8.015299191477163E-4, -0.006297696131241572, 1.0243298753534141E-4, 0.0031124375388541484, -0.0014422209841742414, 0.25986805818728503, -0.0024112584943908185, 1.3474268399622718E-4, 2.2366430383712835E-5, -0.0019105231993404143, 0.0017590523102982006, -0.001202090051204435, 0.0022255328068533317, 0.0017509290724312164, 9.630120049685554E-5, -0.001938501232602513, 0.0016740264814115524, -0.006188375937735682, 5.891369858163716E-5, 0.0016240512947613168, -7.05278906323162E-4, 0.005270189815137516 ], "type": "scatter" } ], "layout": { "template": { "data": { "histogram2dcontour": [ { "type": "histogram2dcontour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "choropleth": [ { "type": "choropleth", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "histogram2d": [ { "type": "histogram2d", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "heatmap": [ { "type": "heatmap", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "contourcarpet": [ { "type": "contourcarpet", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "contour": [ { "type": "contour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "surface": [ { "type": "surface", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "mesh3d": [ { "type": "mesh3d", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "scatter": [ { "marker": { "line": { "color": "#283442" } }, "type": "scatter" } ], "parcoords": [ { "type": "parcoords", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolargl": [ { "type": "scatterpolargl", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "bar": [ { "error_x": { "color": "#f2f5fa" }, "error_y": { "color": "#f2f5fa" }, "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "scattergeo": [ { "type": "scattergeo", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolar": [ { "type": "scatterpolar", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "scattergl": [ { "marker": { "line": { "color": "#283442" } }, "type": "scattergl" } ], "scatter3d": [ { "type": "scatter3d", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermap": [ { "type": "scattermap", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermapbox": [ { "type": "scattermapbox", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterternary": [ { "type": "scatterternary", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattercarpet": [ { "type": "scattercarpet", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "carpet": [ { "aaxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "baxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "type": "carpet" } ], "table": [ { "cells": { "fill": { "color": "#506784" }, "line": { "color": "rgb(17,17,17)" } }, "header": { "fill": { "color": "#2a3f5f" }, "line": { "color": "rgb(17,17,17)" } }, "type": "table" } ], "barpolar": [ { "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "pie": [ { "automargin": true, "type": "pie" } ] }, "layout": { "autotypenumbers": "strict", "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#f2f5fa" }, "hovermode": "closest", "hoverlabel": { "align": "left" }, "paper_bgcolor": "rgb(17,17,17)", "plot_bgcolor": "rgb(17,17,17)", "polar": { "bgcolor": "rgb(17,17,17)", "angularaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "radialaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "ternary": { "bgcolor": "rgb(17,17,17)", "aaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "baxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "caxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ] }, "xaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "yaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "scene": { "xaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "yaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "zaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 } }, "shapedefaults": { "line": { "color": "#f2f5fa" } }, "annotationdefaults": { "arrowcolor": "#f2f5fa", "arrowhead": 0, "arrowwidth": 1 }, "geo": { "bgcolor": "rgb(17,17,17)", "landcolor": "rgb(17,17,17)", "subunitcolor": "#506784", "showland": true, "showlakes": true, "lakecolor": "rgb(17,17,17)" }, "title": { "x": 0.05 }, "updatemenudefaults": { "bgcolor": "#506784", "borderwidth": 0 }, "sliderdefaults": { "bgcolor": "#C8D4E3", "borderwidth": 1, "bordercolor": "rgb(17,17,17)", "tickwidth": 0 }, "mapbox": { "style": "dark" } } }, "autosize": false, "width": 2000, "height": 1000 }, "config": { "plotlyServerURL": "https://plot.ly" } } }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 24 }, { "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:25.979315Z", "start_time": "2025-11-21T14:47:25.968826Z" } }, "cell_type": "code", "source": [ "from scipy.fft import fft, fftfreq\n", "import numpy as np\n", "\n", "# Same signal creation...\n", "\n", "# Perform FFT\n", "bins = 512\n", "offset = 7\n", "signal = deltas[offset:offset + bins]\n", "print(len(deltas))\n", "print(len(signal))\n", "fft_result = fft(signal)\n", "\n", "n = len(fft_result)\n", "frequencies = fftfreq(n, 1)[:n//2]\n", "magnitude = 2 * np.abs(fft_result[:n//2]) / n\n", "fig = make_subplots(specs=[[{\"secondary_y\": True}]])\n", "# fig.add_trace(go.Scatter(x=channels[1:], y=deltas, name=\"Point to point variance\", line=dict(color=\"lightgreen\")), secondary_y=True)\n", "fig.add_trace(go.Scatter(x=frequencies, y=magnitude, name=\"Point to point variance\", line=dict(color=\"lightgreen\")), secondary_y=True)\n", "mean_magnitude = np.mean(magnitude)\n", "\n", "for (mag, freq) in sorted(zip(magnitude, frequencies), reverse=True):\n", " if freq > 0 and mag > mean_magnitude:\n", " print(round(1 / freq), mag)\n", "fig.show()" ], "id": "b67cdbe1c2001abd", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "519\n", "512\n", "3 0.011529798490623527\n", "8 0.011018339516873097\n", "2 0.010488638313461234\n", "6 0.01048285382971875\n", "2 0.010369939705991583\n", "11 0.010319472120474231\n", "2 0.010303797319663056\n", "16 0.01026855857191239\n", "4 0.010266081885202375\n", "5 0.010229559414535714\n", "5 0.010216821373415752\n", "3 0.010208365688023633\n", "7 0.010157034860843382\n", "3 0.010096830413499321\n", "3 0.010046941341063093\n", "9 0.01004246789066117\n", "4 0.009956593495033333\n", "32 0.009954941056398795\n", "3 0.009923591082385178\n", "64 0.00989939118656365\n", "4 0.009882073907374276\n", "21 0.009856704651912657\n", "2 0.009855192310081065\n", "3 0.00983958131075228\n", "2 0.009788774783473932\n", "3 0.009773301692415259\n", "13 0.009764653468833066\n", "4 0.009651274566279488\n", "5 0.009603297511165579\n", "2 0.009598040273550332\n", "6 0.009458176272796265\n", "7 0.005384281960352113\n", "5 0.005263143173209485\n", "2 0.0052424427108239725\n", "10 0.005229952074663707\n", "2 0.0051845645745922575\n", "4 0.005094322970296742\n", "3 0.005086874294319761\n", "43 0.00508472542420535\n", "2 0.005065113770353631\n", "3 0.005062557326239667\n", "3 0.00505766118526627\n", "5 0.0050382143896149124\n", "3 0.005035229491450612\n", "4 0.00501040928030844\n", "3 0.004995611871521118\n", "2 0.004980834748524364\n", "4 0.0049787746253474405\n", "18 0.004976209400040179\n", "26 0.0049690881875962606\n", "12 0.004923563419890881\n", "3 0.00490343870884609\n", "2 0.004893116693162173\n", "6 0.004891707231607442\n", "14 0.0048816115630604074\n", "128 0.004873747461290711\n", "3 0.004846956109465543\n", "3 0.004794602590567798\n", "9 0.004738349678237639\n", "8 0.004729655463150177\n", "4 0.00471577952514418\n", "6 0.0046526139561952435\n", "2 0.004498314989528881\n", "6 0.004233720261695653\n", "7 0.004228889948267848\n", "2 0.004153676457158666\n", "5 0.004143608785093861\n", "4 0.004128984504685166\n", "9 0.00408918749473461\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "line": { "color": "lightgreen" }, "name": "Point to point variance", "x": { "dtype": "f8", "bdata": "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" }, "y": { "dtype": "f8", "bdata": "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" }, "type": "scatter", "xaxis": "x", "yaxis": "y2" } ], "layout": { "template": { "data": { "histogram2dcontour": [ { "type": "histogram2dcontour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "choropleth": [ { "type": "choropleth", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "histogram2d": [ { "type": "histogram2d", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "heatmap": [ { "type": "heatmap", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "contourcarpet": [ { "type": "contourcarpet", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "contour": [ { "type": "contour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "surface": [ { "type": "surface", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "mesh3d": [ { "type": "mesh3d", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "scatter": [ { "marker": { "line": { "color": "#283442" } }, "type": "scatter" } ], "parcoords": [ { "type": "parcoords", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolargl": [ { "type": "scatterpolargl", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "bar": [ { "error_x": { "color": "#f2f5fa" }, "error_y": { "color": "#f2f5fa" }, "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "scattergeo": [ { "type": "scattergeo", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolar": [ { "type": "scatterpolar", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "scattergl": [ { "marker": { "line": { "color": "#283442" } }, "type": "scattergl" } ], "scatter3d": [ { "type": "scatter3d", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermap": [ { "type": "scattermap", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermapbox": [ { "type": "scattermapbox", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterternary": [ { "type": "scatterternary", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattercarpet": [ { "type": "scattercarpet", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "carpet": [ { "aaxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "baxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "type": "carpet" } ], "table": [ { "cells": { "fill": { "color": "#506784" }, "line": { "color": "rgb(17,17,17)" } }, "header": { "fill": { "color": "#2a3f5f" }, "line": { "color": "rgb(17,17,17)" } }, "type": "table" } ], "barpolar": [ { "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "pie": [ { "automargin": true, "type": "pie" } ] }, "layout": { "autotypenumbers": "strict", "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#f2f5fa" }, "hovermode": "closest", "hoverlabel": { "align": "left" }, "paper_bgcolor": "rgb(17,17,17)", "plot_bgcolor": "rgb(17,17,17)", "polar": { "bgcolor": "rgb(17,17,17)", "angularaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "radialaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "ternary": { "bgcolor": "rgb(17,17,17)", "aaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "baxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "caxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ] }, "xaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "yaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "scene": { "xaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "yaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "zaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 } }, "shapedefaults": { "line": { "color": "#f2f5fa" } }, "annotationdefaults": { "arrowcolor": "#f2f5fa", "arrowhead": 0, "arrowwidth": 1 }, "geo": { "bgcolor": "rgb(17,17,17)", "landcolor": "rgb(17,17,17)", "subunitcolor": "#506784", "showland": true, "showlakes": true, "lakecolor": "rgb(17,17,17)" }, "title": { "x": 0.05 }, "updatemenudefaults": { "bgcolor": "#506784", "borderwidth": 0 }, "sliderdefaults": { "bgcolor": "#C8D4E3", "borderwidth": 1, "bordercolor": "rgb(17,17,17)", "tickwidth": 0 }, "mapbox": { "style": "dark" } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 0.94 ] }, "yaxis": { "anchor": "x", "domain": [ 0.0, 1.0 ] }, "yaxis2": { "anchor": "x", "overlaying": "y", "side": "right" } }, "config": { "plotlyServerURL": "https://plot.ly" } } }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 25 }, { "cell_type": "code", "id": "361ee9ff66d1b6e5", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:26.604240Z", "start_time": "2025-11-21T14:47:26.596345Z" } }, "source": [ "with open('./consuming_channnel_sweep.csv') as csvfile:\n", " spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')\n", " rows = list(spamreader)\n", " filters = [int(row[0]) for row in rows]\n", " filter_meas = [float(row[1]) for row in rows]\n", "fig = go.Figure()\n", "fig.add_trace(go.Scatter(x=filters, y=filter_meas, name=\"Filter Measurements\"))\n", "\n", "fig.update_layout(\n", " autosize=False,\n", " width=PLOT_WIDTH,\n", " height=PLOT_HEIGHT,\n", ")" ], "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "name": "Filter Measurements", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049 ], "y": [ 8.686472761219946, 8.682130858302116, 8.689024036213503, 8.688051176071166, 8.679489697524108, 8.694312677383422, 8.692254447937012, 8.662843179702758, 8.702793910585601, 8.68563368381598, 8.696695905336192, 8.691185665130615, 8.695531129837036, 8.695329713821412, 8.69656481742859, 8.687953469640922, 8.516974921453567, 8.514110374450684, 8.513575333815355, 8.51174967629569, 8.515676736831665, 8.515888993654029, 8.515680063687839, 8.51451406171245, 8.515850657508487, 8.515152441716827, 8.513225603103638, 8.515846443176269, 8.51724656422933, 8.514118337631226, 8.512667188644409, 8.51190242767334, 8.516305637359618, 8.51252957979838, 8.51199131011963, 8.513359880447387, 8.51183303626808, 8.511926317214966, 8.513382495028301, 8.514740800857544, 8.514334013967803, 8.517492174047284, 8.513355108407827, 8.512107800464241, 8.512398433685302, 8.51543049812317, 8.515376043319701, 8.516657638549805, 8.514400005340576, 8.51498236656189, 8.514806667963663, 8.51550895785108, 8.514324272380156, 8.515211015939713, 8.515249586105346, 8.514126300811768, 8.514524481595696, 8.513758420944214, 8.51426558494568, 8.516365322589873, 8.513855207534064, 8.515324783325195, 8.51501601934433, 8.51528787612915, 8.515408384039047, 8.514206229029474, 8.514427090739156, 8.515054368972779, 8.511189301808676, 8.512799072265626, 8.513323211669922, 8.514886331558227, 8.5112895488739, 8.514566326141358, 8.511068102518717, 8.514846420288086, 8.514521503448487, 8.513889646530151, 8.516344004207188, 8.51289758682251, 8.513755581595682, 8.513566493988037, 8.515323305130005, 8.514177608489991, 8.51422721862793, 8.514071195356307, 8.513338462166164, 8.512935972213745, 8.5119836657655, 8.513918399810791, 8.513044913609823, 8.513275098800658, 8.516639238245347, 8.514062451153267, 8.512289902448199, 8.51490888595581, 8.514974355697632, 8.514091300964356, 8.513692712783813, 8.5133535861969, 8.510045943221426, 8.513638587225051, 8.51220965385437, 8.509718766579262, 8.512313454239457, 8.513990281305917, 8.514289617538452, 8.51297755241394, 8.51355047225952, 8.513494284256645, 8.517290202054111, 8.516179323196411, 8.514015978032893, 8.513545560836793, 8.512203216552734, 8.51242561340332, 8.511547415597098, 8.511972861953929, 8.513156747817993, 8.513209629058839, 8.512693712266826, 8.514136870702108, 8.510796737670898, 8.51447353363037, 8.515063810348511, 8.515425007712393, 8.516569566726684, 8.514834890018438, 8.515042980775139, 8.51166587652162, 8.513767341772715, 8.512462472915649, 8.514559766371473, 8.51615047454834, 8.515491247177124, 8.516119508661776, 8.512857627868652, 8.51330620333892, 8.51473593711853, 8.513912010192872, 8.512419271469117, 8.515486717224121, 8.513972854614257, 8.51302719116211, 8.511612751904655, 8.50957760810852, 8.512333869934082, 8.513367970784506, 8.516348791122436, 8.512738370895386, 8.516989348512707, 8.516254472732545, 8.51467994848887, 8.512885830619119, 8.508721590042114, 8.513150358200074, 8.5155104637146, 8.51532083628129, 8.511190536174368, 8.514373302459717, 8.512881565093995, 8.513072907924652, 8.516865539550782, 8.514905226858039, 8.514206190367002, 8.516887998580932, 8.513920359971245, 8.514426531110491, 8.512887010296572, 8.516606330871582, 8.516247940063476, 8.510476779937743, 8.512831954956054, 8.515579857512149, 8.513440050230436, 8.514697647094726, 8.51676187207622, 8.516725408270004, 8.513273477554321, 8.513276767730712, 8.513807916641236, 8.51360001564026, 8.517020797729492, 8.512652091260227, 8.516020774841309, 8.51419468720754, 8.512781947851181, 8.514521551132201, 8.51431679725647, 8.511867189407349, 8.51526935749015, 8.512870152791342, 8.510849537387971, 8.513155165172758, 8.514494371414184, 8.514782333374024, 8.516589800516764, 8.511947345733642, 8.51046404838562, 8.512713527679443, 8.513397307623, 8.512534475326538, 8.512154232371937, 8.51249918937683, 8.513145637512206, 8.51318564414978, 8.513803359000914, 8.513320383818254, 8.513163185119629, 8.512493806136282, 8.517070205123336, 8.512980875761613, 8.514487981796265, 8.514312403542656, 8.510979223251343, 8.513798332214355, 8.51317093589089, 8.515763187408448, 8.511942386627197, 8.511950448262606, 8.513107204437256, 8.515404481838404, 8.516244792938233, 8.51561051607132, 8.515396308898925, 8.513814608256022, 8.51413607597351, 8.51485556647891, 8.514627122879029, 8.51379361152649, 8.513584089279174, 8.51463532447815, 8.511847972869873, 8.512672090530396, 8.514327102237278, 8.514051428938334, 8.514814376831055, 8.51410732269287, 8.513734379130288, 8.512280574211708, 8.513036823272705, 8.514177284240724, 8.515678535808217, 8.513825607299804, 8.513701033404493, 8.513934421539307, 8.513516855239867, 8.513392996280752, 8.511716842651367, 8.51359363132053, 8.51272560536945, 8.511667096937025, 8.51240496635437, 8.514499139785766, 8.51451826095581, 8.515177679061889, 8.513718509674073, 8.51166558265686, 8.514092547552925, 8.512291695476787, 8.509552097320556, 8.514215532938639, 8.513387455940247, 8.512156915664672, 8.513515281677247, 8.512923422313872, 8.512093925476075, 8.515899276733398, 8.514619207382202, 8.514083928699735, 8.51546082496643, 8.514259338378906, 8.514019298553468, 8.513308979216076, 8.513392114639283, 8.511838664179264, 8.514049992416844, 8.515886354446412, 8.514547847566151, 8.515433210007687, 8.51409813563029, 8.516095924377442, 8.514588928222656, 8.513573548150442, 8.512525134616428, 8.511195278167724, 8.512068208058675, 8.515679127461201, 8.515480041503906, 8.5158127784729, 8.515583992004395, 8.513896083831787, 8.51351523399353, 8.513551902770995, 8.511971910794577, 8.511673593521119, 8.512770652770996, 8.510457468032836, 8.513430309295654, 8.514328050613404, 8.515796585083008, 8.513030195236206, 8.515300703048705, 8.514126396179199, 8.513120047251384, 8.512774058750697, 8.514703941345214, 8.511611175537109, 8.512765324937028, 8.512339550515879, 8.512918472290039, 8.51527802840523, 8.514229706355504, 8.513190364837646, 8.513344097137452, 8.515051221847534, 8.512843132019043, 8.51473913192749, 8.513404893875123, 8.515387296676636, 8.515865152532404, 8.51644163131714, 8.51305594444275, 8.51200475692749, 8.51574239730835, 8.514075136184692, 8.512723711595179, 8.513668775558472, 8.514006519317627, 8.51411509513855, 8.515998458862304, 8.511998588247568, 8.514489945718797, 8.514204835891723, 8.51438889503479, 8.512409891401019, 8.512348842620849, 8.515427255630494, 8.511364573524112, 8.513118700547652, 8.509900507719621, 8.516504096984864, 8.514390468597412, 8.515340757369994, 8.51434392929077, 8.518084859848022, 8.512436180783991, 8.514609622955323, 8.513278416224889, 8.515041589736938, 8.515187691305286, 8.512972831726074, 8.51482720375061, 8.514598251937272, 8.514294385910034, 8.515825544084821, 8.516550250675367, 8.515678358078002, 8.512894587083297, 8.51422872543335, 8.512676668167114, 8.512310457229614, 8.51370724460535, 8.51561918258667, 8.518873000268492, 8.514472007751465, 8.51184639930725, 8.514145190899189, 8.514422369003295, 8.510203218460083, 8.511791944503784, 8.516881608963013, 8.513048028945922, 8.516529386693781, 8.51317286491394, 8.515632009506225, 8.51458586179293, 8.514857578277589, 8.515172719955444, 8.511497640609742, 8.514256048202515, 8.512343122604046, 8.513820791244507, 8.515124702453614, 8.515982484817505, 8.514839573910361, 8.516499233245849, 8.517156839370728, 8.51421864827474, 8.51702561378479, 8.516238403320312, 8.51712144504894, 8.512791542779832, 8.514208726208619, 8.513570354098366, 8.51333122253418, 8.514250531608676, 8.515496015548706, 8.51567393541336, 8.514171414670692, 8.51461965710509, 8.514047956466674, 8.513926315307618, 8.514411115646363, 8.514108848571777, 8.514818615383572, 8.513859224319457, 8.515319967269898, 8.51427674293518, 8.515214443206787, 8.51627335266725, 8.514894342422485, 8.515704932036224, 8.513882913897115, 8.51244186219715, 8.515951367675282, 8.516782862799507, 8.515375995635987, 8.51441672870091, 8.516675595883969, 8.51615520759865, 8.511739206314086, 8.516809447866972, 8.516324996948242, 8.512786908583207, 8.51390520731608, 8.516461047259243, 8.513270378112793, 8.514806461334228, 8.513021303259809, 8.514399909973145, 8.51379199028015, 8.513454341888428, 8.514480590820312, 8.514719396534533, 8.514841461181641, 8.512582445144654, 8.518148803710938, 8.515552857457376, 8.517227125167846, 8.514503955841064, 8.515521669387818, 8.514932775497437, 8.512720012664795, 8.513083457946777, 8.51222326641991, 8.513913679122926, 8.51645917892456, 8.517705770639273, 8.512233638763428, 8.513288021087646, 8.512519229542125, 8.5151535987854, 8.516288121541342, 8.51558254076087, 8.516451168060303, 8.5149489402771, 8.514778677622477, 8.51151155520089, 8.51274881362915, 8.513927984237672, 8.518999137878417, 8.516545629501342, 8.516585925529743, 8.515202579498292, 8.513171486232592, 8.512828874588013, 8.517799256553113, 8.515545511245728, 8.515931224822998, 8.515873575210572, 8.516988507023564, 8.514273120510962, 8.516520706382957, 8.51279683113098, 8.517208841111925, 8.51459093093872, 8.513310384750366, 8.512385606765747, 8.514954370610853, 8.517155497907156, 8.512404727935792, 8.514477856953938, 8.515068769454956, 8.518033599853515, 8.517294359207153, 8.51797432899475, 8.515739250183106, 8.513238366444906, 8.510101470927387, 8.511775984280352, 8.514489698410035, 8.515459108352662, 8.514214372634887, 8.51517915725708, 8.514820623397828, 8.515982389450073, 8.515535385377946, 8.516459131240845, 8.513964700698853, 8.517702225715883, 8.515788793563843, 8.514415979385376, 8.516528034210205, 8.51774787902832, 8.515262222290039, 8.51732316017151, 8.516217565536499, 8.51666652865526, 8.514558474222818, 8.516200017929076, 8.515507202148438, 8.518746605625859, 8.51567420092496, 8.516744041442871, 8.518007946014404, 8.51448424657186, 8.514169597625733, 8.514664914872911, 8.51329755783081, 8.51465753229653, 8.515126203879332, 8.512604746325263, 8.514875173568726, 8.51222711993802, 8.516337490081787, 8.515502405166625, 8.515651226043701, 8.512964773178101, 8.514188517694889, 8.514740840808765, 8.5169086933136, 8.514851379394532, 8.516946286571269, 8.515992028372628, 8.518170058727264, 8.516512012481689, 8.512394666671753, 8.516234629081957, 8.515408039093018, 8.513852787017822, 8.513796758651733, 8.51279831374133, 8.518346786499023, 8.515037953853607, 8.513277292251587, 8.515859079360961, 8.515414381027222, 8.515808010101319, 8.513493277809836, 8.513416938781738, 8.513937091827392, 8.514351940155029, 8.517603355541564, 8.516096556628192, 8.513339233398437, 8.513267135620117, 8.514687967300414, 8.514468812942505, 8.51299468330715, 8.512702369689942, 8.51438398361206, 8.513956880569458, 8.516497611999512, 8.51644335852729, 8.514567303657532, 8.514375773343174, 8.514992904663085, 8.51594911302839, 8.513649395533971, 8.51608066558838, 8.515963452202934, 8.512345600128175, 8.513209533691406, 8.516168022155762, 8.515014362335204, 8.51740484237671, 8.516323328018188, 8.516643421990532, 8.51391636883771, 8.515518856048583, 8.518137081559882, 8.517860841751098, 8.51532802581787, 8.512874298095703, 8.516032012733254, 8.514915754628737, 8.514496078491211, 8.513139247894287, 8.516870307922364, 8.517643004655838, 8.513687992095948, 8.514661519032604, 8.515605772695233, 8.51634407043457, 8.513584772745768, 8.518162839552936, 8.514072165197256, 8.516199922561645, 8.51755611984818, 8.515561532974242, 8.51656049297702, 8.516527536753062, 8.515339136123657, 8.514480715212615, 8.516515987260002, 8.513886404037475, 8.515319769723074, 8.516545382412998, 8.514446905681066, 8.515454803194318, 8.516950368881226, 8.516208028793335, 8.513409566879272, 8.5123375415802, 8.51417076587677, 8.514071909586589, 8.512515211105347, 8.516016101837158, 8.513367938995362, 8.514970748655257, 8.51337245658592, 8.514385604858399, 8.514559075639054, 8.516156816482544, 8.515982294082642, 8.515224304199219, 8.514597688402448, 8.513328007289342, 8.51395845413208, 8.514425992965698, 8.515653371810913, 8.512589699881417, 8.51458568572998, 8.516599988937378, 8.515012836456298, 8.514453315734864, 8.514790819046345, 8.5130943775177, 8.51632767631894, 8.516443179203915, 8.512022495269775, 8.516232013702393, 8.51772403717041, 8.513180227840648, 8.515177536010743, 8.518790949945865, 8.516415921998885, 8.513987988233566, 8.514383935928345, 8.514501639774867, 8.514444153884362, 8.515108919143676, 8.515873527526855, 8.517167409261068, 8.518391181682718, 8.513976874174896, 8.514027003584237, 8.515747213363648, 8.51631997181819, 8.515532732009888, 8.515899324417115, 8.515804372514998, 8.515673160552979, 8.518394808615408, 8.518920087814331, 8.518074344186221, 8.517159938812256, 8.51295830653264, 8.515724868774415, 8.515972805023193, 8.515499750773111, 8.51316338200723, 8.516624591968677, 8.5153968334198, 8.517480039596558, 8.517622327804565, 8.516155878702799, 8.518529501828281, 8.513345670700073, 8.515538435715895, 8.515629410743713, 8.515790462493896, 8.514698938889937, 8.513890757589397, 8.516285566183237, 8.517414379119874, 8.517622470855713, 8.516571081601656, 8.517470502853394, 8.515761638509817, 8.516297531127929, 8.518148603893462, 8.518628151186052, 8.51611864566803, 8.51734733581543, 8.514959955215454, 8.515184508429634, 8.517101651146298, 8.515380776446799, 8.5186797278268, 8.514981644494194, 8.5102463722229, 8.514220733642578, 8.51523199081421, 8.516326904296875, 8.516449689865112, 8.51676959991455, 8.514604140972269, 8.516076219492945, 8.515945625305175, 8.514772097269693, 8.51609487886782, 8.515774602475373, 8.509857606887817, 8.515284824371339, 8.515395259857177, 8.516440337812396, 8.515943310477518, 8.516597066606794, 8.51744647026062, 8.512170098044656, 8.513129353523254, 8.518225622177123, 8.517329549789428, 8.519105354944864, 8.514394089027688, 8.514299201965333, 8.517351407271166, 8.515688816706339, 8.515391950254086, 8.51578392982483, 8.516436656316122, 8.512976050376892, 8.517953634262085, 8.515548849105835, 8.517246389389038, 8.514509176596617, 8.517829690660749, 8.514867162704467, 8.51807680130005, 8.516629040241241, 8.51256971359253, 8.516133285704113, 8.517000807092545, 8.515537188603329, 8.519401967525482, 8.514955139160156, 8.515093366305033, 8.51561918258667, 8.516348743438721, 8.515446234722527, 8.514644813537597, 8.515247208731514, 8.516470772879464, 8.514685478210449, 8.514555168151855, 8.515580749511718, 8.518894876752581, 8.516462373733521, 8.516532291065563, 8.517693815560177, 8.515558338165283, 8.51701629638672, 8.516807998929705, 8.513221379482385, 8.517084836959839, 8.515025615692139, 8.512224074332945, 8.516561851501464, 8.517326402664185, 8.514012513337311, 8.514067316055298, 8.51707972249677, 8.516898700169154, 8.515601634979248, 8.517072536327221, 8.515255587441581, 8.513601267779315, 8.514974403381348, 8.515613925072454, 8.518374227708385, 8.517675823635525, 8.515001583099366, 8.51730102300644, 8.518327612625924, 8.514160013198852, 8.516327726429907, 8.51729968877939, 8.514793634414673, 8.517862830843244, 8.516911430358887, 8.51710557937622, 8.51819200515747, 8.51612799095385, 8.516285116022283, 8.518340989163047, 8.518665938541806, 8.512876796722413, 8.515412534986224, 8.515828475952148, 8.51368268330892, 8.515715996424357, 8.517340377525047, 8.520043808480967, 8.51835771040483, 8.519242172241212, 8.514461278915405, 8.516284847259522, 8.514872074127197, 8.517166376113892, 8.51434235572815, 8.514673493125223, 8.517443265670385, 8.517340557915825, 8.515651226043701, 8.517059860229493, 8.517399421105019, 8.516625909244313, 8.513158573823816, 8.515392030988421, 8.511850357055664, 8.51524486541748, 8.51846694946289, 8.516712203170314, 8.517114475795202, 8.517619180679322, 8.515779256820679, 8.519206352233887, 8.516635274887085, 8.517508840560913, 8.511334958283797, 8.51712327003479, 8.516354936541934, 8.515649557113647, 8.516392974853515, 8.517177303632101, 8.516216770295173, 8.515851374595396, 8.518585586547852, 8.515614414215088, 8.514746458634086, 8.514157515305738, 8.514345666636592, 8.515150456201463, 8.51730372828822, 8.515476894378661, 8.517667733705961, 8.512691793770626, 8.513763189315796, 8.516125373840332, 8.515442257835751, 8.518333611664948, 8.514566326141358, 8.514155118361764, 8.515436887741089, 8.515866509799299, 8.519313621520997, 8.516103304349459, 8.517921141215734, 8.518336098769616, 8.516948699951172, 8.515656089782714, 8.513772773742676, 8.516971206665039, 8.515184020996093, 8.515971279144287, 8.516505575180053, 8.517920902797155, 8.515643683346836, 8.51737652506147, 8.51455722135656, 8.517273008823395, 8.517070880303017, 8.516931247711181, 8.514749093489213, 8.514582492687085, 8.514703941345214, 8.514602989986026, 8.517345155988421, 8.514582074921707, 8.513313674926758, 8.51881167695329, 8.512189801534017, 8.515983404936614, 8.513596351330097, 8.513596500669207, 8.51701922416687, 8.515202641487122, 8.516191959381104, 8.519109907604399, 8.5138728055087, 8.513253160425135, 8.519844729725907, 8.517808055877685, 8.516979326520648, 8.513372755050659, 8.517264080047607, 8.51608196258545, 8.513804817199707, 8.515912429146145, 8.516187080970177, 8.516631748365318, 8.514928540875834, 8.515588808059693, 8.514019183623486, 8.514636620231297, 8.517121275266012, 8.518358325958252, 8.517371225357056, 8.516912460327148, 8.517713594436646, 8.51742228146257, 8.519855346679687, 8.515644884109497, 8.516428357078915, 8.512377595901489, 8.514022181110997, 8.515499162673951, 8.515292882919312, 8.519518886293683, 8.5188542842865, 8.51669552746941, 8.51794359419081, 8.51760122511122, 8.515297555923462, 8.5168447971344, 8.514482957345468, 8.514653629726833, 8.515724754333496, 8.515590588251749, 8.51415195465088, 8.514137061866554, 8.513195111201359, 8.516463279724121, 8.516988277435303, 8.521926164627075, 8.517879610476287, 8.514605522155762, 8.515917986631393, 8.515125766877205, 8.515849466677066, 8.518220699194705, 8.518194805492055, 8.516391007796578, 8.516158727499155, 8.515379685621996, 8.516865539550782, 8.51697598184858, 8.517216143400773, 8.515392104784647, 8.514926433563232, 8.518164157867432, 8.512758350372314, 8.515051053917926, 8.515475130081176, 8.515983352661133, 8.517518377304077, 8.513894510269164, 8.515912633953672, 8.515979103420092, 8.516475200653076, 8.514717012643814, 8.515093303862072, 8.517417621612548, 8.518680609189547, 8.515717106480752, 8.516556866963704, 8.516590508547695, 8.514088503519694, 8.513832304212782, 8.516331195831299, 8.515993547439574, 8.51683030128479, 8.515449714660644, 8.516511964797974, 8.514777154633492, 8.517509380976358, 8.515492107557213, 8.51821567898705, 8.516025590896607, 8.515387578444047, 8.515299120256978, 8.51720978663518, 8.51799205938975, 8.518888835249276, 8.516249561309815, 8.51794719696045, 8.518401622772217, 8.517699241638184, 8.514224004745483, 8.5150545835495, 8.512022336324057, 8.516563320159912, 8.51828200241615, 8.518710894462389, 8.51350390392801, 8.511865577697755, 8.513612747192383, 8.514111995697021, 8.514963354383196, 8.51600383758545, 8.517352872424656, 8.51571747352337, 8.516290041865135, 8.515586728635041, 8.518368005752563, 8.516203706914728, 8.514487210442038, 8.515586853027344, 8.51841435432434, 8.512463302612305, 8.517182445526123, 8.514397402604422, 8.512345881689162, 8.51813150488812, 8.51185967372014, 8.515316772460938, 8.517266670862833, 8.518549315134685, 8.519472476414272, 8.518749554951986, 8.515525169372559, 8.512956717918659, 8.513003206253051, 8.5148468653361, 8.517425450411709, 8.515675374439784, 8.516501808166504, 8.514040925767686, 8.515320747129378, 8.518654394149781, 8.51566389628819, 8.515791312507961, 8.516684818267823, 8.516117413838705, 8.519259262084962, 8.518831351707721, 8.51707806954017, 8.51844801902771, 8.520367643568251, 8.516151428222656, 8.51520222630994, 8.51902141571045, 8.519285899836843, 8.514662313461304, 8.513465642929077, 8.51736478805542, 8.514734115600586 ], "type": "scatter" } ], "layout": { "template": { "data": { "histogram2dcontour": [ { "type": "histogram2dcontour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "choropleth": [ { "type": "choropleth", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "histogram2d": [ { "type": "histogram2d", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "heatmap": [ { "type": "heatmap", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "contourcarpet": [ { "type": "contourcarpet", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "contour": [ { "type": "contour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "surface": [ { "type": "surface", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "mesh3d": [ { "type": "mesh3d", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "scatter": [ { "marker": { "line": { "color": "#283442" } }, "type": "scatter" } ], "parcoords": [ { "type": "parcoords", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolargl": [ { "type": "scatterpolargl", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "bar": [ { "error_x": { "color": "#f2f5fa" }, "error_y": { "color": "#f2f5fa" }, "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "scattergeo": [ { "type": "scattergeo", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolar": [ { "type": "scatterpolar", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "scattergl": [ { "marker": { "line": { "color": "#283442" } }, "type": "scattergl" } ], "scatter3d": [ { "type": "scatter3d", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermap": [ { "type": "scattermap", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermapbox": [ { "type": "scattermapbox", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterternary": [ { "type": "scatterternary", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattercarpet": [ { "type": "scattercarpet", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "carpet": [ { "aaxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "baxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "type": "carpet" } ], "table": [ { "cells": { "fill": { "color": "#506784" }, "line": { "color": "rgb(17,17,17)" } }, "header": { "fill": { "color": "#2a3f5f" }, "line": { "color": "rgb(17,17,17)" } }, "type": "table" } ], "barpolar": [ { "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "pie": [ { "automargin": true, "type": "pie" } ] }, "layout": { "autotypenumbers": "strict", "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#f2f5fa" }, "hovermode": "closest", "hoverlabel": { "align": "left" }, "paper_bgcolor": "rgb(17,17,17)", "plot_bgcolor": "rgb(17,17,17)", "polar": { "bgcolor": "rgb(17,17,17)", "angularaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "radialaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "ternary": { "bgcolor": "rgb(17,17,17)", "aaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "baxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "caxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ] }, "xaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "yaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "scene": { "xaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "yaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "zaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 } }, "shapedefaults": { "line": { "color": "#f2f5fa" } }, "annotationdefaults": { "arrowcolor": "#f2f5fa", "arrowhead": 0, "arrowwidth": 1 }, "geo": { "bgcolor": "rgb(17,17,17)", "landcolor": "rgb(17,17,17)", "subunitcolor": "#506784", "showland": true, "showlakes": true, "lakecolor": "rgb(17,17,17)" }, "title": { "x": 0.05 }, "updatemenudefaults": { "bgcolor": "#506784", "borderwidth": 0 }, "sliderdefaults": { "bgcolor": "#C8D4E3", "borderwidth": 1, "bordercolor": "rgb(17,17,17)", "tickwidth": 0 }, "mapbox": { "style": "dark" } } }, "autosize": false, "width": 2000, "height": 1000 }, "config": { "plotlyServerURL": "https://plot.ly" } } }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 26 }, { "cell_type": "code", "id": "51ca081aacbae203", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:26.973076Z", "start_time": "2025-11-21T14:47:26.894776Z" } }, "source": [ "\n", "\n", "# Read data from a csv\n", "df = pd.read_csv('./lut_channel_filter_sweep.csv', usecols=[\"channels\", \"filters\", \"ms\"])\n", "split_df = df.groupby('channels')\n", "fig = go.Figure()\n", "\n", "x_unique = list(set(df[\"channels\"]))\n", "x_unique.sort()\n", "y_unique = list(set(df[\"filters\"]))\n", "y_unique.sort()\n", "# print(y_unique)\n", "z = []\n", "for y in y_unique:\n", " z.append([])\n", " for x in x_unique:\n", " z[-1].append(df.loc[df[\"channels\"] == x].loc[df[\"filters\"] == y][\"ms\"].values[0])\n", "# np.reshape([x.shape[0], y.shape[0]])\n", "# print(z)\n", "fig.add_trace(go.Scatter3d(\n", " x=df['channels'],\n", " y=df['filters'],\n", " z=df['ms'],\n", " mode='markers',\n", " marker=dict(size=7),\n", " # name=f\"channel {category}\",\n", " # mode='markers+lines',\n", " line=dict(\n", " dash='dash',\n", " width=.5\n", " )\n", "))\n", "fig.add_trace(go.Surface(\n", " x=x_unique,\n", " y=y_unique,\n", " z=z,\n", "))\n", "# Customize the plot\n", "fig.update_layout(\n", " scene=dict(\n", " xaxis_title='channels',\n", " yaxis_title='filters',\n", " zaxis_title='ms'\n", " ),\n", " width=PLOT_WIDTH,\n", " height=PLOT_HEIGHT,\n", " template='plotly_white',\n", ")\n", "fig.layout.scene.camera.projection.type = \"orthographic\"\n", "# Display the plot\n", "fig.show()\n" ], "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "line": { "dash": "dash", "width": 0.5 }, "marker": { "size": 7 }, "mode": "markers", "x": { "dtype": "i2", "bdata": "eAB4AHgAeAB4AHgAeAB4AHgAeAB7AHsAewB7AHsAewB7AHsAewB7AH4AfgB+AH4AfgB+AH4AfgB+AH4AgQCBAIEAgQCBAIEAgQCBAIEAgQCEAIQAhACEAIQAhACEAIQAhACEAIcAhwCHAIcAhwCHAIcAhwCHAIcAigCKAIoAigCKAIoAigCKAIoAigCNAI0AjQCNAI0AjQCNAI0AjQCNAJAAkACQAJAAkACQAJAAkACQAJAAkwCTAJMAkwCTAJMAkwCTAJMAkwCWAJYAlgCWAJYAlgCWAJYAlgCWAJkAmQCZAJkAmQCZAJkAmQCZAJkAnACcAJwAnACcAJwAnACcAJwAnACfAJ8AnwCfAJ8AnwCfAJ8AnwCfAKIAogCiAKIAogCiAKIAogCiAKIApQClAKUApQClAKUApQClAKUApQCoAKgAqACoAKgAqACoAKgAqACoAKsAqwCrAKsAqwCrAKsAqwCrAKsArgCuAK4ArgCuAK4ArgCuAK4ArgCxALEAsQCxALEAsQCxALEAsQCxALQAtAC0ALQAtAC0ALQAtAC0ALQAtwC3ALcAtwC3ALcAtwC3ALcAtwC6ALoAugC6ALoAugC6ALoAugC6AL0AvQC9AL0AvQC9AL0AvQC9AL0AwADAAMAAwADAAMAAwADAAMAAwADDAMMAwwDDAMMAwwDDAMMAwwDDAMYAxgDGAMYAxgDGAMYAxgDGAMYAyQDJAMkAyQDJAMkAyQDJAMkAyQDMAMwAzADMAMwAzADMAMwAzADMAM8AzwDPAM8AzwDPAM8AzwDPAM8A0gDSANIA0gDSANIA0gDSANIA0gDVANUA1QDVANUA1QDVANUA1QDVANgA2ADYANgA2ADYANgA2ADYANgA2wDbANsA2wDbANsA2wDbANsA2wA=" }, "y": { "dtype": "i2", "bdata": "ZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9ABkAHQAhACUAKQAtADEANQA5AD0AGQAdACEAJQApAC0AMQA1ADkAPQAZAB0AIQAlACkALQAxADUAOQA9AA=" }, "z": { "dtype": "f8", "bdata": "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" }, "type": "scatter3d" }, { "x": [ 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219 ], "y": [ 100, 116, 132, 148, 164, 180, 196, 212, 228, 244 ], "z": [ [ 11.698661890896885, 12.758872382494868, 11.58137863972148, 15.543074162801108, 15.537607510884603, 14.425016069412232, 15.613065866323618, 14.431465530395508, 14.428516817092897, 15.670553490922256, 14.46108331680298, 15.816932773590088, 15.817180824279784, 14.338764858245847, 18.587853940327964, 17.184556674957275, 17.178291416168214, 18.6582670211792, 17.17943048477173, 18.726319980621337, 18.726582336425786, 17.214950561523438, 18.85829744338989, 17.102039909362794, 17.09647665023804, 21.63904333114624, 19.93508597215017, 21.69516468048096, 21.697961616516118, 19.92732236911724, 21.76101922988892, 19.96596956253052, 19.96728315353393, 21.89779987335205 ], [ 11.735773616366917, 12.88172176328756, 11.61078395843506, 15.656464099884031, 15.65743995848156, 14.460487991571426, 15.731518563770113, 14.459450978499191, 14.459641599655152, 15.810247945785523, 14.494963216781615, 15.964699157448702, 15.963623046875, 14.36046085357666, 18.72724606440617, 17.220887851715087, 17.21842555999756, 18.793586067531415, 17.202979882558186, 18.88344219752721, 18.8870400428772, 17.25666551589966, 19.020996952056883, 17.12875852584839, 17.141182899475098, 21.801457595825195, 19.97907199859619, 21.85966561969958, 21.85950736999512, 19.95389595031738, 21.941639995574956, 20.00106086730957, 20.00273382096064, 22.082608127593996 ], [ 22.611633491516116, 24.402303886413574, 21.003065395355225, 29.953474631676308, 29.958504486083985, 27.76287708860455, 30.099179701371625, 27.02176448277065, 27.02008647918701, 30.174043141878567, 27.85156164169312, 30.24799172774605, 30.24329243066176, 25.98147658263745, 35.76779556274414, 33.02664239065988, 33.022860033758754, 35.93281802615604, 32.07505960175485, 35.990603065490724, 35.99941444396973, 33.139476255937055, 36.06091823577881, 30.965636014938354, 30.958628382001603, 41.6257649174443, 38.2841032522696, 41.76388530731201, 41.752702713012695, 37.08188542452726, 41.815251159667966, 38.30922355651855, 38.326492418561664, 41.872304344177245 ], [ 22.65601957411993, 24.60709114074707, 21.02368238495617, 30.205891132354736, 30.198633152505625, 27.86607179641724, 30.349782371520995, 27.041428919799205, 27.048065662384037, 30.403345108032227, 27.924060344696045, 30.485820865631105, 30.485678482055665, 26.01229429244995, 36.04140663146973, 33.09280166625977, 33.11596389770508, 36.21639823913574, 32.11297791579674, 36.26006831293521, 36.279473304748535, 33.20215377807617, 36.38083362579346, 30.980952167510985, 30.967388725280763, 41.98042736053467, 38.36644172668457, 42.10896644592285, 42.100075340271, 37.103818575541176, 42.1661649243585, 38.40289134979248, 38.40750034038837, 42.2490826775046 ], [ 22.766465759277345, 24.88891038894653, 21.096583938598634, 30.511622428894043, 30.51856478522805, 27.96104923884074, 30.65497589111328, 27.114097595214844, 27.111829376220705, 30.71520697552225, 28.07633600234985, 30.846758365631104, 30.832560506360284, 26.066932964324952, 36.43573703765869, 33.26611385345459, 33.25678180512928, 36.61108798980713, 32.15898094177246, 36.679382514953616, 36.670138931274415, 33.36060905456543, 36.80510902404785, 31.04174394607544, 31.03807373046875, 42.4466365814209, 38.547081565856935, 42.56898860931396, 42.57218566894531, 37.16274340947469, 42.636886024475096, 38.579754723442925, 38.574708847772506, 42.78251993088495 ], [ 22.905080032348632, 25.162594985961917, 21.16173610687256, 30.79869451522827, 30.799192047119146, 28.12142095565796, 30.93711757659912, 27.177916717529296, 27.201388835906982, 31.01186237335205, 28.20213931944312, 31.19628973007202, 31.18994581131708, 26.145001215477517, 36.79433488845825, 33.41638137817383, 33.41474361419678, 36.96898918151855, 32.2610188293457, 37.05302766653208, 37.05519046783447, 33.50754375457764, 37.22743530273438, 31.10878715515137, 31.09988641738892, 42.880512428283694, 38.69877090454101, 43.00816326141357, 43.007895374298094, 37.27082443237305, 43.09468569074358, 38.75526705655184, 38.76664810180664, 43.280682650479406 ], [ 23.400910801357693, 25.46028020430584, 23.09901094436645, 31.008107089996336, 31.012985515594483, 28.84479179382324, 31.157018661499023, 28.84237289428711, 28.850566482543947, 31.29926398306182, 28.91199487255465, 31.563632716303285, 31.537589116529983, 28.623641055563223, 37.07711115750399, 34.36031703948974, 34.36035346984863, 37.21862716674805, 34.394581567673455, 37.36601066589356, 37.36666933695475, 34.42343635559082, 37.62186837965442, 34.1490585009257, 34.148447608947755, 43.15122543334961, 39.88268508911133, 43.271073532104495, 43.27406997680664, 39.84311138499867, 43.40785140991211, 39.92877311706543, 39.93110862145057, 43.66343040466309 ], [ 23.419047636144303, 25.581143856048584, 23.11239051818848, 31.132878398895265, 31.14119171142578, 28.879695347377236, 31.282241439819337, 28.87270278930664, 28.890185642242432, 31.4397554397583, 28.942095851898195, 31.698864618937176, 31.70595302581787, 28.63512654458323, 37.216943359375, 34.39454483032227, 34.39534409840902, 37.377391317616336, 34.37909774780273, 37.52586421966553, 37.53268277203596, 34.45485954284668, 37.78918662438026, 34.16305446624756, 34.17062825741975, 43.316920623779296, 39.90189113616943, 43.45164184570312, 43.4482096862793, 39.87951521439986, 43.5916446685791, 39.95992660522461, 39.95758075714112, 43.85731201171875 ], [ 23.468284050623577, 25.715707111358643, 23.146460723876952, 31.264552116394043, 31.27087560193292, 28.92307996749878, 31.42712812423706, 28.91649608612061, 28.915033942774723, 31.59382518132528, 28.98924003014198, 31.873639869689946, 31.88081781487716, 28.677127091780957, 37.38107971918015, 34.435459966244906, 34.4398078918457, 37.54129467010498, 34.42533226013184, 37.71479197910854, 37.71962718963623, 34.502522423153835, 37.987264251708986, 34.18189547612117, 34.18631839752197, 43.51537084579468, 39.95458869934082, 43.64402044387091, 43.64202980373216, 39.90994567871094, 43.80560833474864, 40.00609912872314, 40.00144329071045, 44.07345563715155 ], [ 23.501793670654298, 25.85775365829468, 23.174048042297365, 31.36359270607553, 31.389599050794327, 28.95480493398813, 31.55859364961323, 28.941990470886232, 28.94783983230591, 31.74210081100464, 29.024507141113283, 32.01418037414551, 32.00207693680473, 28.693836784362794, 37.53025951385498, 34.47293399629139, 34.479400062561034, 37.69139153616769, 34.445538635253904, 37.87273254394531, 37.877479553222656, 34.53757077171689, 38.128818130493165, 34.20662574768066, 34.202851104736325, 43.67889831542968, 39.987646484375, 43.81900053757887, 43.81953582763672, 39.940461839948384, 43.98485565185547, 40.041288185119626, 40.03554706573486, 44.2560287475586 ] ], "type": "surface" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "#C8D4E3", "linecolor": "#C8D4E3", "minorgridcolor": "#C8D4E3", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "#C8D4E3", "linecolor": "#C8D4E3", "minorgridcolor": "#C8D4E3", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scattermap": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermap" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "#C8D4E3" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "" }, "bgcolor": "white", "radialaxis": { "gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "#DFE8F3", "gridwidth": 2, "linecolor": "#EBF0F8", "showbackground": true, "ticks": "", "zerolinecolor": "#EBF0F8" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "#DFE8F3", "gridwidth": 2, "linecolor": "#EBF0F8", "showbackground": true, "ticks": "", "zerolinecolor": "#EBF0F8" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "#DFE8F3", "gridwidth": 2, "linecolor": "#EBF0F8", "showbackground": true, "ticks": "", "zerolinecolor": "#EBF0F8" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "#DFE8F3", "linecolor": "#A2B1C6", "ticks": "" }, "baxis": { "gridcolor": "#DFE8F3", "linecolor": "#A2B1C6", "ticks": "" }, "bgcolor": "white", "caxis": { "gridcolor": "#DFE8F3", "linecolor": "#A2B1C6", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#EBF0F8", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#EBF0F8", "zerolinewidth": 2 } } }, "scene": { "xaxis": { "title": { "text": "channels" } }, "yaxis": { "title": { "text": "filters" } }, "zaxis": { "title": { "text": "ms" } }, "camera": { "projection": { "type": "orthographic" } } }, "width": 2000, "height": 1000 }, "config": { "plotlyServerURL": "https://plot.ly" } } }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 27 }, { "cell_type": "code", "id": "c9f108c1b000a586", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:27.125738Z", "start_time": "2025-11-21T14:47:27.124208Z" } }, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "code", "id": "b7f986b8-8b63-4ffc-886c-996b108e7b05", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:27.656032Z", "start_time": "2025-11-21T14:47:27.634233Z" } }, "source": [ "fig = go.Figure()\n", "split_df = df.groupby('channels')\n", "first = True\n", "# deltas = []\n", "# approx = split_df.get_group(100)\n", "\n", "# lv = list(approx['ms'])[0]\n", "# for meas in list(approx['ms'])[1:]:\n", "# deltas.append((meas / lv))\n", "# lv = meas\n", "deltas = calculate_deltas(list(split_df.get_group(120)['ms']))\n", "for category, category_df in split_df:\n", " # print(category_df)\n", " # if not first:\n", " # continue\n", " upper_right = 195\n", " upper_left = 129\n", " lower_right = 192\n", " lower_left = 126\n", " # # upper_m, upper_b = lin_interpol( upper_sampled_channels[0], upper_sampled_channels[1], upper_sampled_filter_meas[0], upper_sampled_filter_meas[1])\n", "\n", " upper_right_meas = category_df.loc[category_df[\"filters\"] == upper_right][\"ms\"].values[0]\n", " upper_left_meas = category_df.loc[category_df[\"filters\"] == upper_left][\"ms\"].values[0]\n", "\n", " lower_right_meas = category_df.loc[category_df[\"filters\"] == lower_right][\"ms\"].values[0]\n", " lower_left_meas = category_df.loc[category_df[\"filters\"] == lower_left][\"ms\"].values[0]\n", "\n", " # print(upper_right_meas)\n", " # print(upper_left_meas)\n", "\n", " upper_m, upper_b = lin_interpol(upper_left - 3, upper_right - 3, upper_left_meas, upper_right_meas)\n", " lower_m, lower_b = lin_interpol(lower_left, lower_right, lower_left_meas, lower_right_meas)\n", " # print(list(category_df['channels']))\n", " # print(list(range(category_df['channels'][0], list(category_df['channels'])[-1])))\n", " start = list(category_df['filters'])[0]\n", " end = list(category_df['filters'])[-1]\n", " r_c = list(range(start, end))\n", "\n", " # r_v_upper = [calc_upper(c, upper_m, upper_b) for c in r_c]\n", " # r_v_lower = [calc_lower(c, lower_m, lower_b) for c in r_c]\n", "\n", " # fig.add_trace(go.Scatter(x=r_c, y=[c * upper_m + upper_b for c in r_c], name=\"Upper Sampled Channels\"))\n", " # fig.add_trace(go.Scatter(x=r_c, y=[c * lower_m + lower_b for c in r_c], name=\"Lower Sampled Channels\"))\n", " r_v_rect = [calc_rect(c, upper_m, upper_b, lower_m, lower_b) for c in r_c]\n", " lv = list(category_df['ms'])[0]\n", " delta_approx = [lv]\n", " for delta in deltas:\n", " lv = delta * lv\n", " delta_approx.append(lv)\n", " \n", " errs = [(1 - (g / m)) * 100 for g, m in zip(delta_approx, list(category_df['ms']))]\n", " all_errs = []\n", " all_errs.append(np.mean(np.abs(errs)))\n", "\n", " print(np.mean(np.abs(errs)))\n", " fig.add_trace(go.Scatter(\n", " # x=category_df['channels'],\n", " x=category_df['filters'],\n", " y=category_df['ms'],\n", " # mode='markers',\n", " marker=dict(size=7),\n", " name=f\"filter {category}\",\n", " mode='markers+lines',\n", " line=dict(\n", " dash='dash',\n", " width=.5\n", " )\n", " ))\n", " fig.add_trace(go.Scatter(\n", " x=list(category_df['filters']),\n", " y=delta_approx,\n", " name=f\"delta_approx {category}\",\n", " mode='lines',\n", " ))\n", " \n", " fig.add_trace(go.Scatter(\n", " x=list(category_df['filters']),\n", " y=errs,\n", " name=f\"delta_approx err {category}\",\n", " mode='lines',\n", " ))\n", "\n", " first = False\n", "print(f\"{np.mean(all_errs)=}\")\n", "\n", "fig.update_layout(\n", " scene=dict(\n", " xaxis_title='filters',\n", " yaxis_title='filters',\n", " zaxis_title='ms'\n", " ),\n", " width=PLOT_WIDTH,\n", " height=PLOT_HEIGHT,\n", " template='plotly_white',\n", ")\n", "fig.show()" ], "outputs": [ { "ename": "IndexError", "evalue": "index 0 is out of bounds for axis 0 with size 0", "output_type": "error", "traceback": [ "\u001B[31m---------------------------------------------------------------------------\u001B[39m", "\u001B[31mIndexError\u001B[39m Traceback (most recent call last)", "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[28]\u001B[39m\u001B[32m, line 22\u001B[39m\n\u001B[32m 19\u001B[39m lower_left = \u001B[32m126\u001B[39m\n\u001B[32m 20\u001B[39m \u001B[38;5;66;03m# # upper_m, upper_b = lin_interpol( upper_sampled_channels[0], upper_sampled_channels[1], upper_sampled_filter_meas[0], upper_sampled_filter_meas[1])\u001B[39;00m\n\u001B[32m---> \u001B[39m\u001B[32m22\u001B[39m upper_right_meas = \u001B[43mcategory_df\u001B[49m\u001B[43m.\u001B[49m\u001B[43mloc\u001B[49m\u001B[43m[\u001B[49m\u001B[43mcategory_df\u001B[49m\u001B[43m[\u001B[49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43mfilters\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m \u001B[49m\u001B[43m==\u001B[49m\u001B[43m \u001B[49m\u001B[43mupper_right\u001B[49m\u001B[43m]\u001B[49m\u001B[43m[\u001B[49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43mms\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m.\u001B[49m\u001B[43mvalues\u001B[49m\u001B[43m[\u001B[49m\u001B[32;43m0\u001B[39;49m\u001B[43m]\u001B[49m\n\u001B[32m 23\u001B[39m upper_left_meas = category_df.loc[category_df[\u001B[33m\"\u001B[39m\u001B[33mfilters\u001B[39m\u001B[33m\"\u001B[39m] == upper_left][\u001B[33m\"\u001B[39m\u001B[33mms\u001B[39m\u001B[33m\"\u001B[39m].values[\u001B[32m0\u001B[39m]\n\u001B[32m 25\u001B[39m lower_right_meas = category_df.loc[category_df[\u001B[33m\"\u001B[39m\u001B[33mfilters\u001B[39m\u001B[33m\"\u001B[39m] == lower_right][\u001B[33m\"\u001B[39m\u001B[33mms\u001B[39m\u001B[33m\"\u001B[39m].values[\u001B[32m0\u001B[39m]\n", "\u001B[31mIndexError\u001B[39m: index 0 is out of bounds for axis 0 with size 0" ] } ], "execution_count": 28 }, { "cell_type": "code", "id": "c958d465066f3b1d", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:28.023381Z", "start_time": "2025-11-21T14:47:28.007330Z" } }, "source": [ "filenames = [\"lut_input_sweep_K1x1.csv\", \"lut_input_sweep_K3x3.csv\", \"lut_input_sweep_K5x5.csv\"]\n", "fig = go.Figure()\n", "# deltas = calculate_deltas(list(split_df.get_group(120)['ms']))\n", "inputs_k1, inputs_k1_meas = load_2d_experiment(\"lut_input_sweep_K1x1.csv\")\n", "inputs_k3, inputs_k3_meas = load_2d_experiment(\"lut_input_sweep_K3x3.csv\")\n", "inputs_k5, inputs_k5_meas = load_2d_experiment(\"lut_input_sweep_K5x5.csv\") \n", "\n", "fig.add_trace(go.Scatter(x=inputs_k1, y=inputs_k1_meas, name=f\"Input Measurements K1\"))\n", "fig.add_trace(go.Scatter(x=inputs_k3, y=inputs_k3_meas, name=f\"Input Measurements K3\"))\n", "fig.add_trace(go.Scatter(x=inputs_k5, y=inputs_k5_meas, name=f\"Input Measurements K5\"))\n", "\n", "fig.update_layout(\n", " autosize=False,\n", "width=PLOT_WIDTH,\n", "height=PLOT_HEIGHT,\n", " # margin=dict(\n", " # l=50,\n", " # r=50,\n", " # b=100,\n", " # t=100,\n", " # pad=4\n", " # ),\n", " )\n", "fig.show()" ], "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "name": "Input Measurements K1", "x": [ 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 270, 274, 278, 282, 286, 290, 294, 298, 302, 306, 310, 314, 318, 322, 326, 330, 334, 338, 342, 346, 350, 354, 358, 362, 366, 370, 374, 378, 382, 386, 390, 394, 398, 402, 406, 410, 414, 418, 422, 426, 430, 434, 438, 442, 446, 450, 454, 458, 462, 466, 470, 474, 478, 482, 486, 490, 494, 498, 502, 506, 510 ], "y": [ 0.02654699197039008, 0.02760870403982699, 0.034266831997781994, 0.036467888781800864, 0.04791012768447399, 0.0483790555242449, 0.05754947169870138, 0.06463158435374498, 0.06789014436304569, 0.08130865098660191, 0.09125901322811841, 0.10658442655950785, 0.1103357706144452, 0.11449753595640262, 0.18063993608827392, 0.15080078392972548, 0.15865464014808336, 0.18553462406744559, 0.17979276795064408, 0.19694817066440978, 0.2743663410122196, 0.22510267728194594, 0.24376557325571777, 0.26311387739827236, 0.19725749860455594, 0.25838293868054946, 0.2726293279801806, 0.2778431250353654, 0.2946255735059579, 0.2724870720182856, 0.2813417758668462, 0.29765587211151917, 0.3070405492881934, 0.31140989367167154, 0.31806230423847837, 0.6367453816135724, 0.3159710187166929, 0.3169856585760911, 0.31246781355639297, 0.33990081580976644, 0.35020657059550286, 0.3536518770505985, 0.3699503734161456, 0.38591424556076526, 0.4009400799026092, 0.4153648588160674, 0.43064765886962414, 0.5295618516504764, 0.8763687314291795, 0.5746370984017849, 0.49751078920066355, 0.5170807889501253, 1.0281427726546923, 0.5865585647523404, 0.5725113221903642, 0.5926178238987923, 0.6124348109364509, 0.6314862880110741, 0.651493353655226, 0.6727246648589487, 0.6942874785736969, 0.7140145917435488, 0.7357547542636725, 0.7579701488614082, 0.7808440695405007, 0.8035670773983001, 0.8263149847836865, 0.8497248499892479, 0.8745064417615802, 0.8982366036409619, 0.9231537980662639, 0.9467520012575037, 0.971781161438808, 0.994630759639601, 1.0230188971967678, 1.0930961640570251, 1.1208728329271596, 1.1504676933471973, 1.1285990719473686, 1.78169785678716, 1.2341797498741536, 1.2656119989382255, 1.2966743450025062, 1.3563432898041765, 1.3862392019141805, 2.0890715854444752, 1.4194338436310108, 2.4936765137633716, 1.6745045317543878, 2.2984761452025086, 1.5460872906672805, 2.2241274135488185, 1.6164133895774093, 2.3159806226429187, 2.5439801080090865, 1.7182683722692946, 1.7517969287358797, 2.0227837349341167, 2.054808238546595, 2.616071677207947, 2.1324880003929136, 2.501734664042791, 2.3404150471758487, 3.0251013239224753, 2.0888208031654356, 2.702211691783025, 2.7522380685806276, 2.801659551160089, 2.207321224985896, 2.5162512063980103, 2.2902285563094273, 2.746128022670746, 3.064551263411727, 2.4113759756088258, 3.5181801837423574, 3.583802190693942, 3.282432193601485, 3.699681444601579, 2.9500656008720396, 2.6638719818808814, 2.7103805830984404, 2.7539647817611694, 2.801981073437315, 4.026393446055326, 2.891364777088165, 2.932752001285553 ], "type": "scatter" }, { "name": "Input Measurements K3", "x": [ 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 270, 274, 278, 282, 286, 290, 294, 298, 302, 306, 310, 314, 318, 322, 326, 330, 334, 338, 342, 346, 350, 354, 358, 362, 366, 370, 374, 378, 382, 386, 390, 394, 398, 402, 406, 410, 414, 418, 422, 426, 430, 434, 438, 442, 446, 450, 454, 458, 462, 466, 470, 474, 478, 482, 486, 490, 494, 498, 502, 506, 510 ], "y": [ 0.04702004782917599, 0.05580062936867277, 0.07044550190245112, 0.07242701351021727, 0.10447446242968242, 0.10450055872028073, 0.17547445323566596, 0.17560575407991807, 0.17781782482564448, 0.27334440013269584, 0.2720691844920317, 0.27543645814061163, 0.35629544583459694, 0.33706941378613314, 0.4421884849568208, 0.46906267199416957, 0.5284091834177573, 0.4995053709248702, 0.6660279893974463, 0.5881014554003875, 0.5033288104782502, 0.6760269123514493, 0.7423526624639829, 0.7395696431895097, 0.7791570570766926, 0.7520288427869479, 0.7656626086831093, 0.7526600591937701, 0.8361257818440596, 0.8302700956364473, 0.8162112000485261, 0.8842238993048668, 0.9176673911909262, 0.9544485123554866, 0.9971365168988705, 1.0441537868181865, 1.0932001812855403, 1.059552465458711, 1.2054993072946867, 1.2389288956522941, 1.3899851517279942, 1.4454704162279766, 1.4896764089067778, 1.5786076370875042, 1.5594935626387596, 1.719045413672924, 1.6952477602561316, 1.8604637597203255, 1.797313882668813, 1.9204194991389911, 1.9535777391791345, 2.0117324867248536, 2.033846182902654, 2.229668885151545, 2.1683639986359102, 2.319943544745445, 2.4012135793368024, 2.4169269797761563, 2.49880554112728, 2.583168454090754, 2.6669488094647726, 2.7526283307870227, 2.837563017569029, 2.8486968811353046, 2.9322119634085837, 2.87682477106531, 3.3503061890290047, 3.202602196103898, 3.5370361316847254, 3.5579660156571613, 3.4872343251565554, 3.7640699903016843, 3.7490290290577097, 3.7580930026801855, 4.07267926678513, 4.170475223952649, 4.291050333414018, 4.391894925938974, 4.513698769652325, 4.610377811709879, 4.7315521909949485, 4.837215423583984, 4.466781996190548, 5.078364670276642, 5.187915169915487, 5.3116351278816785, 5.4413327287744595, 5.564409722644898, 5.675860496105049, 5.800509973005815, 5.933601490001089, 6.056584901279873, 6.192775011062622, 6.319004805882772, 6.457882427033924, 6.586781793205157, 6.722454404830932, 6.85417177802638, 6.578267577705888, 7.130236129760743, 6.8668581781716185, 7.207151772319406, 7.55736747317844, 7.247951030731201, 7.3856405258178714, 7.609989539436672, 7.6605178117752075, 7.44099586480742, 7.5773890885439785, 7.728105592727661, 8.229616950539981, 8.382600475760068, 8.531699180603027, 8.688118546097368, 8.426237525939941, 8.970995235443116, 9.124494361877442, 9.288636779785156, 8.999859561090885, 9.606110286712646, 9.761995124816895, 9.93540005683899, 10.083368301391602, 9.77674396832784, 10.412713670730591, 10.072904014587403 ], "type": "scatter" }, { "name": "Input Measurements K5", "x": [ 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 270, 274, 278, 282, 286, 290, 294, 298, 302, 306, 310, 314, 318, 322, 326, 330, 334, 338, 342, 346, 350, 354, 358, 362, 366, 370, 374, 378, 382, 386, 390, 394, 398, 402, 406, 410, 414, 418, 422, 426, 430, 434, 438, 442, 446, 450, 454, 458, 462, 466, 470, 474, 478, 482, 486, 490, 494, 498, 502, 506, 510 ], "y": [ 0.0811014919107159, 0.10429600118969877, 0.10379515264059107, 0.14548232971131803, 0.2198840951770544, 0.2192417226905624, 0.2203121694624424, 0.3974469391057889, 0.3989891575674216, 0.3993085921456416, 0.6415766504804293, 0.6218035938640436, 0.7769173866560062, 0.7776190829078357, 0.7812717126508554, 0.8957269172569116, 1.0082479090491931, 0.9885272109905878, 1.1346949186722437, 1.1250087946256002, 1.1752326621115208, 1.2478989550173283, 1.2463255789279937, 1.2489876536329587, 1.2804769332408905, 1.2631780057946842, 1.4445744382540384, 1.425225386162599, 1.5478285236756006, 1.5615276537338894, 1.562653748889764, 1.7505908537705739, 1.928106410642465, 1.9388546457688014, 2.1204756418069204, 2.128881541450818, 2.303041387677193, 2.313310348391533, 2.5010146032969156, 2.6767361392974856, 2.6899664913018544, 2.8759312905073164, 3.0534685876766843, 3.0710087357759477, 3.257905093550682, 3.435463556130727, 3.4552373807430268, 3.6406081705490747, 3.8277806918621065, 4.004407339374224, 4.189194713513056, 4.214780386209488, 4.402867510080338, 4.59169921263059, 4.774288460991599, 4.96003907696406, 5.139949535528819, 5.326158712069193, 5.517425053755442, 5.7072021947159985, 5.8943066087158975, 6.083991205483152, 6.122079046436998, 6.464955914258957, 6.6542909213718975, 6.842818698327325, 7.037090709845225, 7.226437551498413, 7.418592155796208, 7.611222628575222, 7.801989348130996, 8.017097120824417, 8.213359070799532, 8.411001836995714, 8.744819972195236, 8.937087020874024, 9.143793428645415, 9.350627250561454, 9.549728234608969, 9.884594172100687, 10.079884803636663, 10.300307198968857, 10.639819163542528, 10.836924134093152, 11.059741140920904, 11.399072763396472, 11.600430897574485, 11.830736859204018, 12.161727174535974, 12.37513914975253, 12.729396136461107, 12.926379470825195, 13.285846405029297, 13.492925415039062, 13.719312054770333, 14.062261536856678, 14.430059839178014, 14.632792144525247, 15.00359853108724, 15.203518342971801, 15.56946234703064, 15.79965337117513, 16.151041269302368, 16.52069272994995, 16.737076323393296, 17.093907260894774, 17.463977527618407, 17.693728988235062, 18.047937574840727, 18.420939277200137, 18.644323569077713, 19.002624034881592, 19.377518463134766, 19.750137424468996, 20.122741426740372, 20.345252799987794, 20.708867263793945, 21.08267707824707, 21.468176078796386, 21.841455936431885, 22.21225776672363, 22.599798488616944, 22.969793796539307, 23.34430940945943, 23.722292995452882, 24.104726314544678 ], "type": "scatter" } ], "layout": { "template": { "data": { "histogram2dcontour": [ { "type": "histogram2dcontour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "choropleth": [ { "type": "choropleth", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "histogram2d": [ { "type": "histogram2d", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "heatmap": [ { "type": "heatmap", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "contourcarpet": [ { "type": "contourcarpet", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "contour": [ { "type": "contour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "surface": [ { "type": "surface", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "mesh3d": [ { "type": "mesh3d", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "scatter": [ { "marker": { "line": { "color": "#283442" } }, "type": "scatter" } ], "parcoords": [ { "type": "parcoords", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolargl": [ { "type": "scatterpolargl", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "bar": [ { "error_x": { "color": "#f2f5fa" }, "error_y": { "color": "#f2f5fa" }, "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "scattergeo": [ { "type": "scattergeo", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolar": [ { "type": "scatterpolar", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "scattergl": [ { "marker": { "line": { "color": "#283442" } }, "type": "scattergl" } ], "scatter3d": [ { "type": "scatter3d", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermap": [ { "type": "scattermap", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermapbox": [ { "type": "scattermapbox", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterternary": [ { "type": "scatterternary", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattercarpet": [ { "type": "scattercarpet", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "carpet": [ { "aaxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "baxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "type": "carpet" } ], "table": [ { "cells": { "fill": { "color": "#506784" }, "line": { "color": "rgb(17,17,17)" } }, "header": { "fill": { "color": "#2a3f5f" }, "line": { "color": "rgb(17,17,17)" } }, "type": "table" } ], "barpolar": [ { "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "pie": [ { "automargin": true, "type": "pie" } ] }, "layout": { "autotypenumbers": "strict", "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#f2f5fa" }, "hovermode": "closest", "hoverlabel": { "align": "left" }, "paper_bgcolor": "rgb(17,17,17)", "plot_bgcolor": "rgb(17,17,17)", "polar": { "bgcolor": "rgb(17,17,17)", "angularaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "radialaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "ternary": { "bgcolor": "rgb(17,17,17)", "aaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "baxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "caxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ] }, "xaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "yaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "scene": { "xaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "yaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "zaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 } }, "shapedefaults": { "line": { "color": "#f2f5fa" } }, "annotationdefaults": { "arrowcolor": "#f2f5fa", "arrowhead": 0, "arrowwidth": 1 }, "geo": { "bgcolor": "rgb(17,17,17)", "landcolor": "rgb(17,17,17)", "subunitcolor": "#506784", "showland": true, "showlakes": true, "lakecolor": "rgb(17,17,17)" }, "title": { "x": 0.05 }, "updatemenudefaults": { "bgcolor": "#506784", "borderwidth": 0 }, "sliderdefaults": { "bgcolor": "#C8D4E3", "borderwidth": 1, "bordercolor": "rgb(17,17,17)", "tickwidth": 0 }, "mapbox": { "style": "dark" } } }, "autosize": false, "width": 2000, "height": 1000 }, "config": { "plotlyServerURL": "https://plot.ly" } } }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 29 }, { "cell_type": "code", "id": "e266a562cbc80021", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:28.951609Z", "start_time": "2025-11-21T14:47:28.940721Z" } }, "source": [ "# Source - https://stackoverflow.com/a\n", "# Posted by John La Rooy, modified by community. See post 'Timeline' for change history\n", "# Retrieved 2025-11-19, License - CC BY-SA 4.0\n", "\n", "import os\n", "from glob import glob\n", "\n", "result = [y for x in os.walk(\"./Sweeps\") for y in glob(os.path.join(x[0], '*.json'))]\n" ], "outputs": [], "execution_count": 30 }, { "cell_type": "code", "id": "6d714069-fdc3-42a1-86ac-797f5c4a268f", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:30.961124Z", "start_time": "2025-11-21T14:47:29.298112Z" } }, "source": [ "import re\n", "import json\n", "import numpy as np\n", "import pandas as pd\n", "# print(result)\n", "test_str = \"\"\n", "# Source - https://stackoverflow.com/a\n", "# Posted by Nadia Alramli\n", "# Retrieved 2025-11-19, License - CC BY-SA 2.5\n", "test = \"Conv2D_In256_C128_F112_Kx3_Ky3_Sx1_Sy1_Px1_Py1_Dx1_Dx1.json\"\n", "characterization = {}\n", "for res in result:\n", " m = re.match( r'.*In(?P\\d+)_C(?P\\d+)_F(?P\\d+)_Kx(?P\\d+)_Ky(?P\\d+)_Sx(?P\\d+)_Sy(?P\\d+)_Px(?P\\d+)_Py(?P\\d+)_Dx(?P\\d+)_Dx(?P\\d+)\\.json', res)\n", " if m:\n", " # print(m.groupdict())\n", " keys = m.groupdict()\n", " for key in keys:\n", " keys[key] = int(keys[key])\n", " with open(res) as f:\n", " data = json.load(f)\n", " # print(data)\n", " # print(np.mean(data[\"layers\"][\"/lut_conv2d/Conv\"][\"LatencyMS\"]))\n", " if keys[\"i\"] not in characterization:\n", " characterization[keys[\"i\"]] = {}\n", " if keys[\"c\"] not in characterization[keys[\"i\"]]:\n", " characterization[keys[\"i\"]][keys[\"c\"]] = {}\n", " if keys[\"f\"] not in characterization[keys[\"i\"]][keys[\"c\"]]:\n", " characterization[keys[\"i\"]][keys[\"c\"]][keys[\"f\"]] = {}\n", " if keys[\"kx\"] not in characterization[keys[\"i\"]][keys[\"c\"]][keys[\"f\"]]:\n", " characterization[keys[\"i\"]][keys[\"c\"]][keys[\"f\"]][keys[\"kx\"]] = {}\n", " if keys[\"ky\"] not in characterization[keys[\"i\"]][keys[\"c\"]][keys[\"f\"]][keys[\"kx\"]]:\n", " characterization[keys[\"i\"]][keys[\"c\"]][keys[\"f\"]][keys[\"kx\"]][keys[\"ky\"]] = np.mean(data[\"layers\"][\"/lut_conv2d/Conv\"][\"LatencyMS\"])\n", "\n", " else:\n", " print(res)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "./Sweeps/lut_channel_sweep.json\n" ] } ], "execution_count": 31 }, { "cell_type": "code", "id": "5d10b8cf-ae00-447c-bc1f-b248e7c2a3f2", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:31.046582Z", "start_time": "2025-11-21T14:47:30.970015Z" } }, "source": [ "characterization_list = []\n", "import plotly.express as px\n", "df = []\n", "\n", "print(df)\n", "print(sorted(characterization[256].keys()))\n", "for c in characterization[256]:\n", " for f in characterization[256][c]:\n", "\n", " for kx in characterization[256][c][f]:\n", " for ky in characterization[256][c][f][kx]:\n", " df.append([c, f, (kx, ky), characterization[256][c][f][kx][ky], calculate_complexity((256, 256, c), (kx, ky), (1, 1), f, \"valid\") / characterization[256][c][f][kx][ky], np.log2(characterization[256][c][f][kx][ky])])\n", "\n", "# print(df)\n", "df = pd.DataFrame(data=df, columns=[\"Channels\", \"Filters\", \"Kernel\",\"LatencyMS\", \"Op-Cost\", \"LatencyLog\"])\n", "print(df)\n", "import plotly.express as px\n", "fig = px.scatter_3d(df, x='Channels', y='Filters', z='LatencyMS', color=\"Kernel\")\n", "fig.update_layout(width=2000, height=1000, margin=dict(l=0, r=0, b=0, t=0))\n", "fig.show()\n" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[]\n", "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049]\n", " Channels Filters Kernel LatencyMS Op-Cost LatencyLog\n", "0 128 338 (3, 3) 13.605897 1.846330e+09 3.766160\n", "1 128 338 (5, 5) 34.520517 1.989713e+09 5.109382\n", "2 128 24 (3, 3) 2.793949 6.384292e+08 1.482306\n", "3 128 24 (5, 5) 7.066144 6.902077e+08 2.820923\n", "4 128 327 (3, 3) 13.563218 1.791864e+09 3.761628\n", "... ... ... ... ... ... ...\n", "6898 253 256 (3, 3) 16.929702 2.221371e+09 4.081485\n", "6899 253 397 (3, 3) 33.772264 1.726875e+09 5.077767\n", "6900 253 328 (3, 3) 25.439789 1.894047e+09 4.669015\n", "6901 253 307 (3, 3) 25.458320 1.771492e+09 4.670065\n", "6902 707 128 (3, 3) 25.984329 2.022217e+09 4.699570\n", "\n", "[6903 rows x 6 columns]\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "hovertemplate": "Kernel=(3, 3)
Channels=%{x}
Filters=%{y}
LatencyMS=%{z}", "legendgroup": "(3, 3)", "marker": { "color": "#636efa", "symbol": "circle" }, "mode": "markers", "name": "(3, 3)", "scene": "scene", "showlegend": true, "x": { "dtype": "i2", "bdata": "gACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAKAeYDLwFGAC0B9gBYAPQDcQKKAtMB1gLeAAEDyABVA/YBjAFCASQARAINBCcCKwFrAd0BBQRwA2AAYABgAGAAYABgAGAAYABgAPgDFgBWAj0B0wDtAkACNgDRAcQCPAN6AxkD6QPwAsQDMQHSAvEC2AMnAfsCvAISA5MCJwMwAQgEOgF4AHMBYQEHAv4AEQPbAagDCQJAAd8BCgOUAhQCPwPBAB8C1AGYA2cDMAPrAmgALAFVApwDMQLlAj4C0gOYAYwAMgNOArgBXAMaAfIDggMkAkEAvANGA6oDtQJZA6sB/wP/A/8D/wP/A/8D/wP/A/8D/wP/A/8D/wP/A/8D/wP/A/8D/wP/A/8D/wP/A/8D/wP/A+sAsABSAHAB+AL7AcIDEwQPAy0ChgGVAG8CGQI/APcBUAOiAJgAbgPmAiYDWwD+AjIAuQFNAOIBNALDALcAiQBZAPcCNAPiAFMBGQFdAhkAlQFmAVQBHwCAATYBigPpAX4DeAG3A5oAoQLeA3ACNgOJAYkDEwAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEOwGtAMgCtQBFAdIAUwJXAfkAoANYA98ASwMXAm8AtACDAugCoQOlA44CuAAfARgELgKRABYECgL1AIoBaQGPAocAQAONAywAPQBUA/0BRABeAWsDzAEYAeUDQwNvAfcAowFpAsUAfQJJA8EBTAMxABIEiwGrAL4A3wMuAMwAPgG7Ao0AjQFjAfsAgQE3AA8CxgOUANoAqAFtAOoCnQPXALQCywF+AiACBAKZAtUCwgHJAxYDswFbAUID7AKMAqoB1wKFAXYAkgKLANYB2wILAzICmgOjA7MDXAArAEEBgQOgAXwBXAF/AqAAVABhA3cCfQF1AxoCXwCpAsUBdwE4APkBfAOXASYABQEFALoB8gDnAc4CYQBhAGEAYQBhAPkCegI5ALEBnQC+AwQBgwMLAnwArAKwAuEBoQEoAtYAEgJmAOQC1gPQAKoAPQJuAm0DrAMeAT4APwEqA0kA2QC1Ae0D4QN+AEsAwwMDBHQAmwDuA8gBSgKIAfwCIQAHBNQDTgEcAfMDtgFXA8sC3AL0AkgCQgAEAK8BqAKbAzIBEQD6AVMAowIqAbYC4ANRAMABuwPdAMUCPAELBAUCrwC/AcACCgTQAS8DRQPJArEAPQOyA1IDFQBPAM8CYwMMAB4CWQHpAnwCAgEjAIUDCgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAMMBBQOOAdsAbAK9Ay4BvQLzABUCewCOAy0DFwBPA5ABrAA1Aj4DEgDkAJ8C1AKVA3AA9AGQAOYAKAHHA1ACHQFEA90DQQPlAIMBnAB9A7gDYwAPBMkBBwDcAE0C4QBRAhsB/wC/AKoCEAC5ADMBHwNqAwkDWwIBAoQC8AMMA3MDYAKaARQEgQJWAxADSwHMA9EClwBnAsECcQDQAu4BrAEXBF8CMALGAcAA7wOwA4UAEwGYAnsCCwB5AJsCrwNIA6cCQgI5AZwCpgDpAJ0BsQLTAqkA9ADNAZ8D3AMhAXkCHAAUAVcAVQC8Ae4CxADxABAEGgOXA9cBOQJMABUDxQPQA64DogLGArIAEQSfACcAQwIDASwCrgASAeECvAD3AxkEdwAYAGYCkgCEAVAAogHaAvMBZgNHAvMCKgJpAOAAUQHkARsAeALjA4cCpAF5AzMCkQIvAiEDXwMuAyIAbgBeAFgCDQOmA7oD/AG1A4YAjgAAAdwBswACBJAD8AFLApYAVgCRAz8ChACiA7YD/QOgAh0CAwO5AiUDzgHxAd8CDAFrAHED4gPEAWEC7ADeAp0CWgNdANMDCAIrAsgDRwOWAwYABgHUAO8AYAODAGgCBgOPAaUCKQEQAjMALQB1AhwCcgDRA1oBOgPqAHgDaANkA7oCQwAPAEwCrQFXAgwE4gK0A68CdAJOAzAAOwDsAakD3QIRAnQD/ACTAzUDbgFSAgYCXQM7AmwB5AMgASUAlgGZAO0BbwPqA70AAAIdAyQDfgEXA2oA+QOkAokCxwBQAb4CyQDrA8YAbAMCAh4DnAH2AroA7QAmAWQCFgGIAMoAzwHnAP4DnwF/A5kBKwOtA6UAuwCBAHIDRAHuADUA2AA3Aw4CsgKlAQQEkQHNAHYCIwINAF8BZQEQAQMAzAJIAakBSgGZAxoA7wHwAIgDdgF1AZsBIABOAIAC8gEHAVoAFwEiATkD2AKuAUUCCAMCAMsD9QL6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gD6APoA+gKwAWUDewH/AmMCAQATA6sCKQLoA2AB4wLRAA4DXAKGAiMBgAPVAZ4DngCmAToAUQPjAXYDuwFNA4gC/QJlAF0BNwJUAsADKAMOAREBWQJBAsoCSgMcA5YCNAEsA3MCkgOPAGIDCAGoAO8CrQJxAW0BagLHAacANwF3A8IA0gGXAiUBYgHgAjgDKgDNAn8BTAHXA78DZAB1AOgBXgNDAWoBkALBA2IADAIBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQRJAeYBzgA2ArcCsQOTAU8C2QH1A/8BDQEPAXICZwAAA+gAHgAGBB0A3gG0AYcDawIbA6cDOAGGA+cDJQIOBIcBGANTA4sDngGPA4IA2gN7A38AvwJzAAkAOwPYAaYCpAABAU8BBwPPA0cAMwPZA70BiwL4AKMAFAAjA0YCIgPOA2wA1QCFAqEAeQFbAyECYgI8APUBOgIpAyADUgENAsoDFQG+AZQDAgOaAnoA2gE1AUcBegH6AzwCpAMEA+AB4wA4Ai8AkwCyAbcBCADsAyICdAGSARMCswILAbYAVgH8A9UDaQMkAYIB/gHbA4ICngLCAg4ARQDZAkYBuAK5A+cCCQFkAWgBCQR9AKcBlQLyAuoBVQEoAIQDqwOuAvgBMQMUA88ASQJKAMoBjAP2AxgCSABlAkAAcgFeAo0CAwJNARUE6wFYARsCxwLLAOUBNACKABYCWgJnAfsD8QMmAikAzQNtApQB/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QD9AP0A/QDDAg==" }, "y": { "dtype": "i2", "bdata": "UgEYAEcBMgDRAHAA9wFzAYEAuAGTAGUACgA/AdsAKgEeAQACLAAjATUBsQDzAeEBtAFBAAcB4gDaAHIBzACjAXYAywAIAs0A7ABTAHQAXgAFASIBXACSAJcAuwGoANQB9ABNAAICDQK/AMgARgBFAQcCBAGvAdwBOgD/AYkAewDFAakAYwA3Af4BugBDAbkAmgBKAbUAPAF/AZoB3wC4ABoBUAGzAGAA5gHZAAIB6gHKAeYAygAhAVUAxACgAD4AWQA7AYMAvgD8AVEA2wGMAa4AoQA9AD8AhwHoAG8AIAATAfUBDAKCAI0BvQHDAH0ADAEBAWoBnQAkABYBZgCNAPUA7wGgAd0AuwCIAHEBgwE3AKQB/wDIARUBdgHXANYA+QFYAfkAMwBtAekBSwGYAfYAHAGhARcBrADJAC0AwQE9AXUBIQCMAOsAngD+AL8BowDkAIQArQBtAPQBogA0Ad8BUwEwAJ8BGQDoAZABSAE5AYsBhQDHAa4BMwFjAU0BXAE8AJEBdwBhAe4AkADcAPIArQFfAZgAVACTAWgB1QAZAbYBewF+ATIBlACFASkAAwEFAiwBogGyAR0AUQHMAWIBjwAfABMAFQBIAGsBWAC0AKYALgDHAEkAXwDNAcYBbAGLAGQBCgH6AIgBfQFQACUAqgCGAXkAVwBkAA8BDwDgAcIA4ABKAKYBHAD8AAwAbwExALcBlgA1AOIBVQFAAeUBfAHeAaQAEgDdAWwAMQFhABQArAERAhsALwHRAbAARQCpAdkBwgGdAdQA+AHFAFIABALVAQsCRACOALABYgC6Ae0AOAARASMAEAJ+AA4B6gC9AC4BDQGAAKgBvAHaAdIBgQHxAYABhwAmAAYC7AGlACgBlQHwASsBTACVABAAEAESAZIBVgB1AC8AAQLQACkBtgCKAb4BwwGxAU8BJQHXAUIBngEdAZEARgG3AM8BBgGGAG4A+wEwAVoAigBpAXEAYAHGABsB+gGJAZkBGgD2AfgAmQA7ADYBfwD9AF4BDQB4ALwAagA4AcEAuQHJAd4AeQELAG4BTgCcAQAB0gCXAfsA4wGUASsAFgCqAUwBpwCbAScBXQHtAe8AdwFWAWkAQAAfASoAJAFBATQAZgF6AO4BSQEmARgBDgClAbUB4QBdAOkA2AEJAbMBfAAJAnABwABnAIIB6wHzACcAOgGfANMBLQEgAQMCFwBDAEIAWwAeAA8CeAEIAQoCNgBaAT4BRwBPAPIBOQDPAA4C5QDQAZwA/QHwAFQBKABoAOMAVwGOARQBCwHTAGUBEQCvAHIAlgHkAUQBqwFZAfEA2ADnAecAzgH3AGcBywHWAXMASwCrAMABIgBrAMQBTgGyAI8BmwBbAc4ApwF6AXQBhAGAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA/AMABAgE6APwA/QD7AMEBIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAcBOwD6AMYBCQEOAQMBBAEIAQABDwE/AMoBEgE+AMsBAQEMAREBDQE8AP0AxQECARABIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPQD7AMMBDAEIAQUBBAERAQoBCwEHARABBgE6APwAzwEAAQ0BAgESAT4AwQEJAQ4BPwDgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAIBAQE/AMABIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACnAGIAGwEzAG0DkgMKAKoDVAIoA5sCMwP0AToBDgELABkB5AJ8AkwDKgIQAqYBggKEAeEB/QF+AyoAAQIIASsCFAINANYC9wEWA+cAtwMpA8kBNQNZApEC/wD7AgUCDQPhA1YCrgDtASMCywOyAsAALwNaAH4AkQFuAakDXQL5AXkATACKAfgDJQMiAJEDsABfApUAIwOJArgCjgLAAVgAagKQAo4DEgPqAhgD7wB7AYwBAwJxABgAKQL7AV0AyAOIA1MDpgDwAasBGQJDA4wDZwAuA08AIAPaArsBEwFJAnEBogPzAeIB0AP3A3QANAJGAh0CKwEdADcAjQJ4ASAAwwJxAiwBwgNcAFUA3AOWAsMDYwCtAc0CFQNaAskC4wP7A4sApQFgAREDagHcAOMBowJzA/QCrgGKAFAAvAGsAsACVgFSAiIC5AN1AZMBRAP9ABADUgC1A9kB6wKkAyQBDgPCAVEDJgAlATkAjwGQAGIDQAH0ADcC5wLqAcICnwBDAukCpgLtAOAAxgIkAPkChQKYALoCKQGaArUBUgHrAZ0COAD6AeUC7ANHAjAC1wC+AWsAcgJfABoBEADIAEkB9QOPAM0D0gJiAuMCOgNIAWEC3QF/AbwDbAKpAGEBRQNgALIDmwB5AasAOwN4Aq8CRgFyAc8DIALaAIYC0QJzAREBAQOtAqUDgwDsAqYD/QJ8A7gBWAE6ALsCVwAsA6MALgCbAVwDRwEEAgoDSAD/AncCAgH1AZkCAAEJAwIC9QDrAKgD9wBFAo0BeQK9APwCQQG0ANIDywBLARQAewLUASEDzwCnAhkA8wLBAR8B3gM0AN8BnwLpATsAHAI9AmsCawO5AG4C2AN8AVMA2wHpAN8DBAGPAgQD8wA9AOoDoAL8ANUCFwP8Ad4CTQCVA5MDhgOYASwC5QMIA9wCogHVAPICnAF1A78AiAD2ARABewPtAxkDKgNiAU0DDgBCAU4CnANyA4QDnQDnAbEASgIoAT8CMgNQARsDeAOuAlgDLABoADYAbQFVAl4CxwPKACYDogLxAZkDbwMyAkgCrQAlAE4AmAN7AKcD4ALvAUECXQPEAksD3AGpAlsDBQHZAp8DWwGLAU8CkwAfAPAAZQKFA1QBrABoAYYBywKKA7oB0QMWAcIAXQHaAeIA8wMoAswAvgKBA6QC0gBXAu4AhAKhApQAigLdA6EDcAGzAdYAdAPKA1EB6AOuA84CiALHAJ4AKQDpA70BtAFvAMoChQFaA3UCpAFRAhoC5gAgAZYBZwIDA9sARQGMAHYC9gCrA+EApAAzAg8BwQILAc0A+gBpAMUD4wCUA44BZQOzAPgBQAMBAdUDTAGDAsoBIQDFANsDsAMuAXYDDAO/AygA6gCpAVoBHgBlANABJwKeAyYC9QJ/AIQAaQFVA6IAZwFeARQD7wJfAdcDvgB6AuECLwHuA28C6ACJAWQCkwLPAWcD8QPLARYC1AKnAWQA9gMJAQcBMADeAdMDfQDEA3QBPADTAkgDvwEfA3oAswJQA34CNwOYAuQBLQA+A7ABxwJqAOADegH4AHoD/wG9Am0A2gOXAVsAGgA7AeQA2QC2AGYD3gCCAPIDEwKRAI8DiwIeAWADEgFvAdgCfwJjAk8D0wFtAjcBwwEGAgsDDwO6A0YAQgBKAckDNQCHAV8DzgNLAJwCVwFkAb0DOQOQAS8CSQBQAoIBZQE5AnMAsQOOAPkAFQJjAwsCSQNbAgMBowFAAroATgPmAagCbgCsA9AAJQI4AewAPgGoALkB3wLFAtEAYwE2AYABkAM+AlUByAJmADYCTwENAaADyQBZACcB6AKBArUCXAInAF4DoAEwAUcDUgN9Ay4CDALEAAAD2AFhA0sC2wJmAYAD+gLfAL4D0gErAM8CZAMdA4kAlAGSAiMA2ADyAB0BaQO4AC0DQQD0A7QDxQH+AtkDoQHMAoACRQAmARgBvADdApoAggOzA78C7QJBA8EAfAAxA6UAaAK7A3cBxgCyADwCGAJZAQgCrwAnA84AUwLMA8gBlgCrAswBowMCA6EAIgPuATgDcABwA4UAnQG5A8EDzgH7ALYDfwOHAl4AhwNEAkwCRACvAagB6AG3AKwBNgNsAEMB7wO7ALYCtQAPAAYBFgBYArcCOgLRATECGwDAA/ECPwCwAisDsgHiAzwBAAKNAMQBDgIiAXUAgQGbAxICmQGeApkAvAKaAxUA0wCtA5IBdAKGANYDlwCXA5wA1wFOAUIDoAB3A7QCLwBGAwkC6wM4AgoC5gNsAwcCDAHnAzwDgwHwArkCEgBEASMBsQL2AlcDWQMqARwBLQKHAH0CNAOVAv4BdgHXAt0ATQIhAREAngGfAdQAHACSABsCSgPQAvoDIQKDAzEADADUAx8CHAPNAccBlwKVAcMA1gF3ABUB7AGvA24DDwJWAAUDtwFUA2ACEwBoA7YBQgIGA/AD+AI1Aj8DjAJWAz8BFwJ9AcYD1QHgAaoAsQFRAH4BHgJcAWYCFAEyAQcDTQF2AD0BMANhAAoBmgFqA3EDbAGIAVQAuAOBAOUBGgNyAHAC8QANAj0DLQE7AiQCMQERAlMBHgM+AJ0DjQNKAEMAMgBzAuUA+QOlAhcAJAOUAqoCxgFrATkBqgGLA2kC9wIXAZYDMwFHAO4CEwN4AOICNAE1AXkDiQPmAv4A8gFAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK4BJAFIAbQBDgKNAWMBxgFXAZAB9gEzAWwBzwGWAQABAwHeAdUBbwEMAUUBCQFdASoBHgHkARUBCAIFAskBqAEPAYQBIQGxAbcBYAGTAcABCwI2AfABogE8AfMBPwFyAfwBwwGlAZ8BmQHbAXUB+QH/AeoBewG9ARsBLQHMAX4B2AE5AboBeAFmAVQBEQJOARIBnAHtAeEBUQGrATABWgEGAYEBQgEYAYcBSwHSAf0AaQH6AAICJwGKAecBgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAOgDEAT0AxQECAQYBAQE8AMMBBwE/AMkBCgEIAT4AwAE7AOAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAPAVEBDAHqAQkByQEhAQICtwH6AP0ATgFyAf8B8wGfARgBgQGxAeEBzAGiAZAB3gFUASQBPAEFAooBAwEGAcMBNgFmAc8B+QFpAcABkwF4Aa4BRQHwAT8BqwHbAVoBbwGZAYQBGwG9ATkBSwGHAWAB7QGcAboB1QFXAfYB/AEnAR4BMAHnAaUBXQFCAbQB2AFsAagBlgEtAcYBEgHSAWMBdQHkARUBewEqAX4BAAGNAUgBMwGAAA==" }, "z": { "dtype": "f8", "bdata": "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" }, "type": "scatter3d" }, { "hovertemplate": "Kernel=(5, 5)
Channels=%{x}
Filters=%{y}
LatencyMS=%{z}", "legendgroup": "(5, 5)", "marker": { "color": "#EF553B", "symbol": "circle" }, "mode": "markers", "name": "(5, 5)", "scene": "scene", "showlegend": true, "x": { "dtype": "i2", "bdata": "gACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAKAS8BRgAtAfYAWADTAd4AyAD2AYwBQgEkACsBawHdAWAAFgA9AdMANgDRATEBJwEwAToBeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABzAWEBBwL+ANsBCQJAAd8BwQDUAWgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgALAGYAYwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAuAEaAUEAqwHrALAAUgBwAfsBhgGVAD8A9wGiAKIAogCiAKIAogCiAKIAogCiAKIAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmACYAJgAmABbADIAuQFNAOIBwwDDAMMAwwDDAMMAwwDDAMMAwwDDALcAtwC3ALcAtwC3ALcAtwC3ALcAtwCJAFkA4gBTARkBGQCVAWYBVAEfAIABNgHpAXgBmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCaAJoAmgCJARMAOwGtALUARQHSANIA0gDSANIA0gDSANIA0gDSANIAVwH5AN8AbwC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAuAAfAZEACgL1AIoBaQGHAIcAhwCHAIcAhwCHAIcAhwCHAIcALAA9AP0BRABeAcwBGAFvAfcAowHFAMEBMQCLAasAqwCrAKsAqwCrAKsAqwCrAKsAqwC+AC4AzADMAMwAzADMAMwAzADMAMwAzADMAD4BjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0BYwH7AIEBNwAPApQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQA2gCoAW0A1wDLAQQCwgGzAVsBqgGFAXYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAiwDWAVwAKwBBAaABfAFcAaAAVAB9AV8AxQF3ATgA+QGXASYABQG6AfIA5wFhADkAsQGdAAQBCwJ8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AHwAfAB8AOEBoQHWAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYA0ACqAB4BPgA/AUkA2QC1AX4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4ASwB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AJsAyAGIASEATgEcAbYBQgCvATIBEQD6AVMAKgFRAMAB3QA8AQUCrwC/AdABsQCxALEAsQCxALEAsQCxALEAsQCxABUATwAMAFkBAgEjAAoAwwGOAdsA2wDbANsA2wDbANsA2wDbANsA2wAuAfMAewB7AHsAewB7AHsAewB7AHsAewB7ABcAkAGsABIA5ABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAPQBkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkADmACgBHQHlAIMBnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnABjAMkB3ADhABsB/wC/ABAAuQAzAQECmgFLAZcAcQDuAawBxgHAAMAAwADAAMAAwADAAMAAwADAAMAAhQATAQsAeQA5AaYA6QCdAakA9ADNASEBHAAUAVcAVQC8AcQA8QDXAUwAsgCfAJ8AnwCfAJ8AnwCfAJ8AnwCfAJ8AJwADAa4ArgCuAK4ArgCuAK4ArgCuAK4ArgASAbwAdwAYAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAkgCSAJIAhAFQAKIB8wFpAOAAUQHkARsApAEiAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AXgD8AYYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgCOAI4AjgAAAdwBswDwAZYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAVgCEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAM4B8QEMAWsAxAHsAF0ACAIGAdQA7wCDAI8BKQEQAjMALQByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAFoB6gBDAA8ArQEwADsA7AERAvwAbgEGAmwBIAElAJYBmQCZAJkAmQCZAJkAmQCZAJkAmQCZAO0BvQC9AL0AvQC9AL0AvQC9AL0AvQC9AAACfgFqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAGoAagBqAMcAUAHJAMkAyQDJAMkAyQDJAMkAyQDJAMkAxgDGAMYAxgDGAMYAxgDGAMYAxgDGAAICnAG6ALoAugC6ALoAugC6ALoAugC6ALoA7QAmARYBiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiADKAM8B5wCfAZkBpQClAKUApQClAKUApQClAKUApQClALsAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAEQB7gA1ANgA2ADYANgA2ADYANgA2ADYANgA2AAOAqUBkQHNAA0AXwFlARABSAGpAUoBGgDvAfAAdgF1AZsBIABOAPIBBwFaABcBIgGuAfoAsAF7AWAB0QAjAdUBngCmAToA4wG7AWUAXQEOAREBNAGPAAgBqACoAKgAqACoAKgAqACoAKgAqACoAHEBbQHHAacANwHCANIBJQFiASoAfwFMAWQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAdQDoAUMBagFiAAwCSQHmAc4AkwHZAf8BDQEPAWcA6AAeAB0A3gG0ATgBhwGeAYIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAggCCAIIAfwBzANgBpAABAU8BRwC9AfgAowAUAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwA1QDVANUA1QDVANUA1QDVANUA1QDVAKEAeQE8APUBUgENAhUBvgF6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6AHoAegB6ANoBNQFHAXoB4AHjAC8AkwCTAJMAkwCTAJMAkwCTAJMAkwCTALIBtwF0AZIBCwG2AFYBJAGCAf4BDgBFAEYBCQFkAWgBfQCnAeoBVQEoAPgBzwDPAM8AzwDPAM8AzwDPAM8AzwDPAEoAygFIAEAAcgEDAk0B6wFYAcsA5QE0AIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAZwEpAJQB/QA=" }, "y": { "dtype": "i2", "bdata": "UgEYAEcBMgDRAHAA9wFzAYEAuAGTAGUACgA/AdsAKgEeAQACLAAjATUBsQDzAeEBtAFBAAcB4gDaAHIBzACjAXYAywAIAs0A7ABTAHQAXgAFASIBXACSAJcAuwGoANQB9ABNAAICDQK/AMgARgBFAQcCBAGvAdwBOgD/AYkAewDFAakAYwA3Af4BugBDAbkAmgBKAbUAPAF/AZoB3wAIALgAGgFQAbMAYADmAdkAAgHqAcoB5gDKACEBVQDEAKAAPgBZADsBgwC+APwBUQDbAYwBrgChAD0APwCHAegAbwAgABMB9QEMAoIAjQG9AcMAfQAMAQEBagGdACQAFgFmAI0A9QDvAaAB3QC7AIgAcQGDATcApAH/AMgBFQF2AdcA1gD5AVgB+QAzAG0B6QFLAZgB9gAcAaEBFwGsAMkALQDBAT0BdQEhAIwA6wCeAP4AvwGjAOQAhACtAG0A9AGiADQB3wFTATAAnwEZAOgBkAFIATkBiwGFAMcBrgEzAWMBTQFcATwAkQF3AGEB7gCQANwA8gCtAV8BmABUAJMBaAHVABkBtgF7AX4BMgGUAIUBKQADAQUCLAGiAbIBHQBRAcwBYgGPAB8AEwAVAEgAawFYALQApgAuAMcASQBfAM0BxgFsAYsAZAEKAfoAiAF9AVAAJQCqAIYBeQBXAGQADwEPAOABwgDgAEoApgEcAPwADABvATEAtwGWADUA4gFVAUAB5QF8Ad4BpAASAN0BbAAxAWEAFACsARECGwAvAdEBsABFAKkB2QHCAZ0B1AD4AcUAUgAEAtUBCwJEAI4AsAFiALoB7QA4ABEBIwAQAn4ADgHqAL0ALgENAYAAqAG8AdoB0gGBAfEBgAGHACYABgLsAaUAKAGVAfABCQArAUwAlQAQABABEgGSAVYAdQAvAAEC0AApAbYAigG+AcMBsQFPASUB1wFCAZ4BHQGRAEYBtwDPAQYBhgBuAPsBMAFaAIoAaQFxAGABxgAbAfoBiQGZARoABwD2AfgAmQA7ADYBfwD9AF4BDQB4ALwAagA4AcEAuQHJAd4AeQELAG4BTgCcAQAB0gCXAfsA4wGUASsAFgCqAUwBpwCbAScBXQHtAe8AdwFWAWkAQAAfASoAJAFBATQAZgF6AO4BSQEmARgBDgClAbUB4QBdAOkA2AEJAbMBfAAJAnABwABnAIIB6wHzACcAOgGfANMBLQEgAQMCFwBDAEIAWwAeAA8CeAEIAQoCNgBaAT4BRwBPAPIBAQA5AM8ADgLlANABnAD9AfAAVAEoAGgA4wBXAY4BFAELAdMAZQERAK8AcgCWAeQBRAGrAVkB8QDYAOcBBADnAM4B9wBnAcsB1gFzAAMABgBLAKsAwAECACIAawDEAQUATgGyAI8BmwBbAc4ApwF6AXQBhAGAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAGARQBfgC2AMQA8AAKAaIAyACOAHoAcgCyABwBggDYAJ4AEAG6ALQAHgF2AO4AwAAkAfwAjAD+AIQAbgAWAegA1gAIAWgA+ADMAGoArgBkANwADAHqALwAuAASARoBlgB0AAQBmgCgABgBJgFsANIA4gDQANQAlADyAKoApACcAHwAhgAOAcIAzgCSAOAApgAAAcYAsAD0AJAAKgFmAL4AiABwAOwA5gD6ACIBigDKAN4AqAAoAeQArAACAfYAIAF4ANoAmACAAIAAgACAAIAAgACAAIAAgACAAIAAygAoAc4AHAHwAN4AdgBuAK4AGAHaAAIBagDcAJgAJAEMAYQAdABwAPQAGgHgALoAeADqAPIA/gAIAX4AwACqANAAxACIAPYA5gDIAHoABgGyAGQAcgCmAMIAaACKAKgA/AAWAaAAIgEOAY4A2ACGAAoBxgAmAdQA0gAQAaQAlgD6AOIAtAAAAWYAngC+AKwAogCcAIwAHgGUAHwAggBsAAQB+AAgAZoAFAEqAdYAzADsAOgAsAASAe4A5ACSALwAtgCQALgAgACAAIAAZgDeAPAA5ADQAKoAvgDcAJAAsgCmABIBpAB2AJIADgEAAQwB0gAYASoBCAGGACIBeAC8AKIAfADEABAB4ABqAOgA4gCOAPIAIAEKASYBegCCAGQABAH6AAIBnADsAIwAwADYAOoAmgCKAHQA/gAkAe4AaADWABQB1ACEALQAcgCuAMYArABwAMoAlACwAMIAGgHaAGwA+AD0ACgBfgCWAMgAqADOABwBiADMAKAA9gC6ALgAtgAWAQYBHgGeAPwAmADmAG4AgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANQApAC0AIQAxABkAPQAlAB0AOQAgABqAGQACAEYAaIAFgHaAHoAggB0AA4B2AD2AMoAqgAcAaYAAAHyAAoBpAC2AKgAjgDeAH4AuACyAOwAEAFsAOYA3AAiAWYAhgDkAP4AkACcAIgAeABuAPQAngAMAQIB0ADuAOIA6ACuAMYABgH6AHYAxAB8AOAAwgCaAJYAJAEgAXAAhADqACgB1gAaASYBigByALoA8ACSAMgAwAD8APgArAC0ABQBvACgAJgAEgHOANQA0gCUAL4AHgEqAYwABAFoAMwAsACAAIAAgACAAIAAgADkAIQApAD0AMQAlAC0AGQA1AB0AIAA9AC0AHQA5ACUAIQAxADUAKQAZACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAaAaoAvgCUAPQAygBsAOoAEgHMAO4AaAAkAbwA0gAiAQABngD6APYAtgC6AIQAbgDeALgAcACMAMYAwACwABQB1gCGAAYBoAAgAc4ApgCSAKIAkAB2AMIAqADsACoBfgDYANoAggCuAPgAZAD+ALQADAEcAfIACgGOANQA5gCsAHQAJgGYAJwAagDwACgBlgAOARABigDgAAgB0ADEAMgAHgFmAAIB5AB6AAQBmgCkAHwA6ADcAPwAFgFyAHgAsgAYAYgA4gCAAIAAgACAAIAAgACAAKQA9AC0AIQA1ADEAJQAZAB0AOQAgACAAIAAgACAALQAhADUAJQAdABkAOQAxACkAPQAgACAAIAAgACAAIAAgACAAPQA5ACUAKQAdAC0AGQA1ACEAMQAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAZAD0AJQA1AC0AMQAhAB0AKQA5ACAAIAAgADkAPQAhAC0AHQAxADUAGQAlACkAIAAgAB0AIQAtADkAKQAlADEAGQA9ADUAIAAgACAAIAAgACAAIAA7AC4AM4AHAGUAL4A8AC8ANYA5gDGABABKAHyAPQAtgB8AMQABgGuANwAmACyABgBeACcABoBEgHiAKYA6gCoAHYA7gAEAYYA6ADCAIwAkgDkAKQAJAEAAfYAcgCOAGgAigCqACABggBsAJoAwACwAGYA3gDKAA4BrADSABQBogDgACoBJgHYAB4BhADQAG4A2gCIAPwAyACQAHAAegACAZYAugB+AAoBFgG0AGoAngCgAP4A1AAIAQwBdABkAPoAzAAiAfgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAdgDaABgBngCiAGoA8AD0ACIBwACqALwAvgBsAAABZADeANYAuACyAH4AfACmAHIAigCEAPYAEAHiACoB6gCOAOQAKAGCAO4AmAAGARYBegC0AIYAbgC2ABwBsAASAXQAlgD8ANIAGgEkAQIB4AB4APgAkADGANgAnAAUAcoAcAAMAQoBrAAEAZoAxACuAOwAugDMAGYA0ADoAP4AkgDOANwAIAEIAaQAqACMAMIA+gCIACYBaACgAOYAyACUAA4B8gDUAB4BgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAALAAbABwAN4A8ADiAJoAegD4AKYACAEiAQoBfgDWAA4BygCsABoBwgCKAJwA4AAcAXIAsgDyAOQAtADEAAwBjgB2AGoAvgC6AP4AjACuAPoAfADsAAYBEAGgAIQAeAD2AAIBlgDaANQAmADAAB4BiACqAO4AZAC2ANAAZgAAARIBKAEYAbwAzAD8AGgAdAAUAYIAxgCQAG4A9AAqAcgAkgAWAaIAJAHYAJ4A3ADqAAQBzgCoALgAhgDSAJQA6ADmAKQAIAEmAYAAgACAAIAAcAAUAawApgAGAc4AogAqAfgAugAgAcIAZgAKAZIAhgAaAbQA7gC4AJAAAAHmAAQBGAF+AHgA/gBsAOoAFgFyAPoAxgDAAHQA3gDQAOAADAHIAGoAfADMAOQAjgC8AOIA0gC2ACIB8AAQAWQACAHUANoAHgF6AJYArgCYAG4AHAEkAaoAAgHoAHYAggBoAMQAsACkAPQAngCUAPYAoAAoAfwAnACaACYBjACEAOwAigDKAIgA3AC+ANgAsgDWAKgADgESAfIAgACAAIAAgACAAIAAgACAAIAAEgGgAOAA0ABoAPAA1ADyAOoAagByABwBdgD4ABoBIgFmABYB/ACsAJAAcACoAMwADgHmAOwAAAGOACoB9gAIAeIAZADcAJoA7gDeAB4BBgHkAHgAnADWALwAhADGANoADAGiALoA6ACkAIIAuABsABgBkgC+AK4AqgCYANgA0gAgAbQAJAHOAPoAwACeAMgAjACKAKYAwgD0AMQAKAGWALYAlAB0AHwAiAAUAXoAsgCGAMoAsAAQAf4AJgEKAQIBbgB+AAQBgACAAPAAlADsAL4ApgDoALwA2ADKACQBaACuAO4AkAD+AAwBzAD0ALIAFAH6ACYB2gDiAIwAGgFwAJYAtAAKAfIAmADGABABKAECAYgAtgCgAKgAfAAEAQAB1gCsAJ4ACAHSAPYAkgD8AHYAggAWAeQA3ACwAMgAcgDqAKIAwgDmAGYAZADeABgB4ACKALoApABsAKoA0AAeAZwAwAASAWoABgF0AJoAfgC4AHgAIAGGAMQA+AAqARwBDgFuACIB1ACOAHoAzgCEAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADkAJQA1AB0AIQAxAC0AKQA9ABkAIAAgACAAIAAgACAAIAAgACAAIAAlACEAMQA5ADUAKQAZAB0APQAtACAAIAAgADEAHQApACEALQA9ADkAJQAZADUAIAAgACAAIAAgACAAPIAeACiALQAugDwAI4ABgEIAXQAlAAMAQ4BlgCcAOYAwgBqAMAAAgEAAWgAhgC+ABQB+gDYACABoADQAMQA4AAaAf4A5AD0AAoBJAEoAXYAZAB8ALYAygCwAM4AkgCeACoBHAFuAO4AqgDcAOgABAESAfwAkADqAPgAZgDWAIIAJgGmABABbADIAIoAqAAYAdQAIgHaAMwAuABwAIgAegDGALIAFgGsAJoAcgB+AN4A0gCMAPYApACuAOwAHgGEAJgA4gC8AIAAgADsAAYBegAkAcYAFgG6AHwA4ADOAHIApAAKAQ4BfgB2ANIAdADmAL4AkgACAWQApgBmALAAqAAEAbQAogCQAPQA2AAMAYQAaADqAMAA3ABuABoBngAQAcQAIgG4AIgArAAqAZYAzABsAGoAtgD4AIwAcAAgAdQAlACaAI4AqgDCAIoAGAHWAJgAvADKAO4AJgESAdAAhgD6APwAnADyAIIA2gDkACgBFAGgAN4A8AB4AOIAHgEIAa4A6AAcAbIA9gAAAcgA/gCAAIAAgACAAIAAgAB2APIAhADGAIgAsgC8AGoAzADWAN4A2ADaALQAnACQAGwApgC4AIYA9ADUAJoAggDEAHgAbgCSAH4ArgCWAO4AcgCMAGQApAB8AJ4A6ABmAHoA6gCoALYAcADOAPAAygCOALAAugBoAJQAoADkAMIAmADiANAArADsAOYA4ADcANIAqgC+AHQAyADAAIoAogCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAGQAdAC0AKQAxACEAPQAlADUAOQAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAHQA1ADEAJQApADkAPQAZACEALQAgACAAIAA1AB0AKQAxAD0AIQAtABkAJQA5ACAAIAAgACAAIAACgEmAWQAdgCgAKwAxADGAOIAegByAOoA0gAiAeQAtAB4AA4BygCMALAA6ABuAGYAdADQABABBAGeAAwBhgAGAfgA2ADuAM4A3gD0AMAAiAASAZIA5gD+AKgAcAAAAaIAGAF+AHwAJAGqAMwAKgFqAJQAvADcAB4BAgGuANYAHAFsAJwAuAAgAZoApACmALYAigD2AJgAFAHgAMgAugDyABoBKAGCANoAwgD6AJAAhABoAJYACAHwAI4A1AC+ALIA7AAWAfwAgACAAIAAgACAAIAAgACAAIAAgACAAIAAEgEWAR4B1ACMAHoAvgCwAIoAnABwAKYAvAAcAfAAFAFqANAAAgEGAawA3gB8AJgAZgDGAOYAtgAkAQQBkgCuANwAAAHyABABbAAIAcgAwAAqAXIAoADiAHgAIgHMALQA6AAOAYIA/gAYAc4AngDuANYAhgD4AI4ACgHKANIADAHEAPwAwgDsAHYAhAB0ANoAsgDqAKoApACUAIgAaAAmAagAmgDkALgA2ADgAH4AbgCQABoBIAG6APYAogD6ACgB9ABkAJYAgACAAIAAtAAMAQgBqAAEAZwAvgBqAHIAxABoAK4AFgGQALIAbAB6ANAAyADMAKYAvADKAJgAsADWABQB8gCiANgA+AB0AMYAugASAZQAJAGGAMIA6gDkANoA3gDoAIQAGgEgAaQAZgAmAbgAjADiANwAqgCeAKwADgF4ABgB5gCWAHwAfgAeAXAAbgAqAQABkgCaABwBiAAGAWQAIgGOAPoA1ACCAO4AdgCKAAIBEAEoAc4A4ADwAAoBwAD+AOwA/AD0ALYAoADSAPYAgACIAAwBFgHkABAByAD6ALYAGgGUACQBegDCABQBEgGQAPwArABmAHAApgDKAOAAqgDcALwA0AAKAXQAwAB8AOIAuACEAAIB7ADqAPgArgAGAZIAAAEIAb4AIgHSACYBmgAYAcYAagCkAGQAhgAeAcQA8AAgAZYA1AAoAagAngDmAG4AtAB+AN4AigCgAI4AdgCMAO4AbADWANoA9gAqAZgAHAFoAPQAeAC6AA4B/gDOAPIAsgDoAMwA2ACCALAAnAAEAXIAogCAAIAAgACAAIAACAEeAZQAwADkAHYAsgCgAIwADgHOAL4AmAACAa4AAAGwACYBqAB0AMQAagDsAOIAqgDuAPYAyADqANgABgHUABgB3AB4AJYA8AAcAbQADAHyAAoBwgCGAI4AtgD8AJwAngAEASIBuAD6APgA0ADeAHAAxgAUAX4AFgHSACgBbAAQAcwA/gCiAOYAygDaAHIArADWABoBKgHgAJIAZAASAaYAaAAgAfQAfADoAG4AZgC8AHoAugCKAIQAkACaAIIAJAGkAIgAgACAAG4A4ACeABgBDAGqAPYABAFqAMIACgG0AOwAfADiAPIAKAFwAJAAbACwAAIBCAFoABQBAAESAR4BrgDeACABzACMAHgAdgDOAGYA+gB0AJYA8ADKABoB3AAWAfQAsgCKAL4AhACIAJIAqACCALYAHAG6ANoA2ACiALgA0gAOAZwA6gD+ALwA5AAQAfwA1ADQAOgA+ADmAKwAcgDEACIBfgDIAKYAZAB6AI4AmgDWAMAAKgEmAe4AhgAGAaAAxgCUAKQAJAGYAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgBJAGgALoAIAGCAG4AmACsAAABhADMALgAwAD8ABIB5gDsANQA+gDgAHwAEAECAWYAdgB6ANYA0gBoACYB7gDYAKQAKgGIAIwAjgDGAOoAtADwABQB6AAOAdAABAH+AIoAqAB+AHAA9gCWANoADAEcAa4A5AAIAZIAqgCQAGwAsgCGAMQAngC2AKYAnADiAHgAdACwAJQABgEKAcgAogCaABYBvgD0APgAagDeACIBvADKAGQAGAFyABoB8gAeAcIA3ADOAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADUAJQAtAD0AIQAZAB0AOQApADEAIAAgAC0AJQApABkAOQA1AD0AIQAdADEAIAAgACAAIYAGgGcAKYA3AByAPoAbgC2AKoAggDUAOYA0ADAAMgAngCWACQBdADyAPwAoADCAGYAFAHWAB4BuACKAKQAfgDeABIBeADaAOgAzACOAAABIAEQAXAADAGEAGoA9AAGAcoA/gC0AO4ArgDkAOIAxgCwAHwABAGIAAoBFgG8AAIBaAAcAewAqAAIAfYAbADYAKIAugDSACYBzgCaAIwA4AAYAfgAsgAOAWQAKgF2AHoAkgDEAPAAvgAoASIBrACQAJgA6gCUAIAAgACAAIQA9ADEAGQApADUALQAlADkAHQAgADUAIQAtADkAHQAlADEAKQA9ABkAIAAgACAAPQA1ACkAGQA5ADEAIQAlAB0ALQAgACAAIAAgAAEAaAA7gDQAJwArADUAGYA9AB+AA4BHgGiALYAbACOAJgAuAAKAcYApgC6APwAeAASAQwBKAFwAJYAngCqAIoA9gCEAHIA4ADmAJQA3ADKAHwAdADqAIgAvACMANYAsADiABYBsgAaAWgA6ABqANgA0gD6AKgAAAHIAOwAKgECASABvgDCAPAAkAAmARABmgAiAfIAJAEcAZIA+ADEAMwAdgCuAOQA3gAUAXoA/gDOAKQABgEYAdoACAGGAIIAbgDAALQAZACAAIAAgACAAIAAgAB0APQAhACkAGQA1AC0AMQAlADkAIAAgAD0ALQApADkAGQA1ACUAHQAhADEAIAAgACAAIAA1AB0AJQAZADkAIQA9AC0AKQAxACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADUAOQAxAD0AKQAlAC0AGQAdACEAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAggDAAGwA4AB4AHwA0ACiALoAJAFmALIADAFwAKgAGgG8AMwAzgCYALAAwgCgAIQA2gD2AKYAxADeAJAA/gB2ACgBbgDyAIwAHAH0AAIBegDmAGQAJgEQASABagCuABgBuAAAAQQBIgH4AOgA7gAUAfoAngDYAMYADgGOAPAAlgDUAAYBiABoAH4AHgEIAeQAvgAKAbYA1gCKAIYAEgGcAKoAmgDcABYByADSAKwAtADKAJIAcgDsACoBdAD8AOIAlADqAKQAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAADgFuAJgAxADeAJAAxgCIAMoA7gCkACIBzADSACQBtgAGAeYA6ADyACABcACeAMgArgBkAMAAvgAMASoBFgH2AMIABAEeAaAAGAGsAAABpgCMAPwAHAF+AOQAeAD0AJIA+gCEAOAAdAAUAbQAGgGUAHIA2ADaALIA6gD+AHwAKAGiAIIAaAC4AI4AnAASAagA3AB6APAAdgC6AGoAsAAKAQIBEAGaACYBqgDUAM4AhgCWAIoA1gDiAOwAbAD4ALwACAHQAGYAgACAAIAAgACAAIAAgACAAIAAgACAAIAArAAaAR4BfADUAGgAEAGCAIgAIgHOAG4A7AD0ABQBtAAoAZYAkgAcASoBoACuAHQAqgDyAKIAhgCyALgA8ABqAPgA0ACOAIQA+gDeAAYBZACaAMIAfgB4AHAA4gAYAXoAcgD+AMQAlAC2AKQA9gDYAJAAJgG+ALoAngCwAMAA6gASAYoA1gAkAQAB2gCcALwAbADgAA4BZgAWAQQBzACmAOYADAF2ACABxgAIAfwAjACYAKgA5ADSAMgAAgEKAdwA6ADKAO4AgAC0ANQAhACkAOQAlAB0AGQA9ADEAIAAgACAAIAAgACAAIAAgACAAMQAugAIAfQAhgDIAP4AAAH2ACIBoABqACYB+ADOAOIA1gCoABoBlAAWAeoAtAC8AIgAeAC+ABIBxgAcAfoAbACsAO4AmAAQAbAAggCeAHwArgAMAegAcADSAKoA2AAkAeQAjABmAI4AlgDwAPIAmgDsAJAAzAB2AMAACgFkAMIAkgDUAHIAnADmAAYB3gC2AH4A0AC4ACoBHgH8AGgApABuAKIApgAYAXQAIAEEAdwAegAOAQIB4ADKALIAKAEUAdoAhACKAIAAgACAAIAAgACAAIAAgACEANQApADEAOQAlAC0AHQA9ABkAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACEAJQAdAC0AKQA9ABkAMQA5ADUAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAegCIAHIA5gAMAfYABgFkAIIAkACuAAIBtgBwAOQAygDSAAQBGgHWACQBlgAiAd4ApgDuAMIAzACEAGYAfAB2ANwA4gD0AKIAAAGeAPoAmACKAJQArADoAMQAdAC4AJwAKgH8AI4AGAGkACYBCgHUAMgAqgC6ALIA6gAQAcAAeACSANAAhgDaAGoAsACaAM4AjAASAW4AvADyAA4B4AAIAWwAIAHwAL4AKAHGANgAqAC0ABYB7AB+AGgAoAD4AB4BHAEUAf4AgACAAIAAgAA=" }, "z": { "dtype": "f8", "bdata": "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" }, "type": "scatter3d" } ], "layout": { "template": { "data": { "histogram2dcontour": [ { "type": "histogram2dcontour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "choropleth": [ { "type": "choropleth", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "histogram2d": [ { "type": "histogram2d", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "heatmap": [ { "type": "heatmap", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "contourcarpet": [ { "type": "contourcarpet", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "contour": [ { "type": "contour", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "surface": [ { "type": "surface", "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] } ], "mesh3d": [ { "type": "mesh3d", "colorbar": { "outlinewidth": 0, "ticks": "" } } ], "scatter": [ { "marker": { "line": { "color": "#283442" } }, "type": "scatter" } ], "parcoords": [ { "type": "parcoords", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolargl": [ { "type": "scatterpolargl", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "bar": [ { "error_x": { "color": "#f2f5fa" }, "error_y": { "color": "#f2f5fa" }, "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "scattergeo": [ { "type": "scattergeo", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterpolar": [ { "type": "scatterpolar", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "scattergl": [ { "marker": { "line": { "color": "#283442" } }, "type": "scattergl" } ], "scatter3d": [ { "type": "scatter3d", "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermap": [ { "type": "scattermap", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattermapbox": [ { "type": "scattermapbox", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scatterternary": [ { "type": "scatterternary", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "scattercarpet": [ { "type": "scattercarpet", "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } } } ], "carpet": [ { "aaxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "baxis": { "endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6" }, "type": "carpet" } ], "table": [ { "cells": { "fill": { "color": "#506784" }, "line": { "color": "rgb(17,17,17)" } }, "header": { "fill": { "color": "#2a3f5f" }, "line": { "color": "rgb(17,17,17)" } }, "type": "table" } ], "barpolar": [ { "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "pie": [ { "automargin": true, "type": "pie" } ] }, "layout": { "autotypenumbers": "strict", "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#f2f5fa" }, "hovermode": "closest", "hoverlabel": { "align": "left" }, "paper_bgcolor": "rgb(17,17,17)", "plot_bgcolor": "rgb(17,17,17)", "polar": { "bgcolor": "rgb(17,17,17)", "angularaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "radialaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "ternary": { "bgcolor": "rgb(17,17,17)", "aaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "baxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "caxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ] }, "xaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "yaxis": { "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "automargin": true, "zerolinewidth": 2 }, "scene": { "xaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "yaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 }, "zaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2 } }, "shapedefaults": { "line": { "color": "#f2f5fa" } }, "annotationdefaults": { "arrowcolor": "#f2f5fa", "arrowhead": 0, "arrowwidth": 1 }, "geo": { "bgcolor": "rgb(17,17,17)", "landcolor": "rgb(17,17,17)", "subunitcolor": "#506784", "showland": true, "showlakes": true, "lakecolor": "rgb(17,17,17)" }, "title": { "x": 0.05 }, "updatemenudefaults": { "bgcolor": "#506784", "borderwidth": 0 }, "sliderdefaults": { "bgcolor": "#C8D4E3", "borderwidth": 1, "bordercolor": "rgb(17,17,17)", "tickwidth": 0 }, "mapbox": { "style": "dark" } } }, "scene": { "domain": { "x": [ 0.0, 1.0 ], "y": [ 0.0, 1.0 ] }, "xaxis": { "title": { "text": "Channels" } }, "yaxis": { "title": { "text": "Filters" } }, "zaxis": { "title": { "text": "LatencyMS" } } }, "legend": { "title": { "text": "Kernel" }, "tracegroupgap": 0 }, "margin": { "t": 0, "l": 0, "r": 0, "b": 0 }, "width": 2000, "height": 1000 }, "config": { "plotlyServerURL": "https://plot.ly" } } }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 32 }, { "cell_type": "code", "id": "9af37da0-3655-4b4f-9cd3-98cae5120fcf", "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:50:27.178360Z", "start_time": "2025-11-21T14:50:26.408338Z" } }, "source": [ "\n", "# df = pd.DataFrame(data=df, columns=[\"Channels\", \"Filters\", \"Kernel\",\"LatencyMS\", \"Op-Cost\", \"LatencyLog\"])\n", "import plotly.io as pio\n", "pio.renderers.default = \"browser\"\n", "channel_step_size = 32\n", "channel_rect_size = 8\n", "\n", "filter_step_size = 128\n", "filter_rect_size = 1\n", "\n", "kernel_prediction = (3, 3)\n", "\n", "filter_start = 128\n", "filter_end = 1028\n", "fc_dims = [filter_start, filter_end]\n", "# print(channels)\n", "upper_sampled_channels = [97, 1025]\n", "lower_sampled_channels = [96, 1024]\n", "predictions = []\n", "for fc_dim in fc_dims:\n", " print(fc_dim)\n", " # print(df[(df[\"Kernel\"] == (3, 3)) & (df[\"Filters\"] == fc_dim)& (df[\"Channels\"] == 97)])\n", "\n", " upper_sampled_channel_meas = [df[(df[\"Kernel\"] == (3, 3)) & (df[\"Filters\"] == fc_dim) & (df[\"Channels\"] == c)].iloc[0][\"LatencyMS\"] for c in upper_sampled_channels]\n", " lower_sampled_channel_meas = [df[(df[\"Kernel\"] == (3, 3)) & (df[\"Filters\"] == fc_dim) & (df[\"Channels\"] == c)].iloc[0][\"LatencyMS\"] for c in lower_sampled_channels]\n", " print(upper_sampled_channel_meas)\n", " print(lower_sampled_channel_meas)\n", " # lower_sampled_channel_meas = [channel_meas[channels.index(c)] for c in lower_sampled_channels]\n", "\n", " upper_m, upper_b = lin_interpol( upper_sampled_channels[0], upper_sampled_channels[1], upper_sampled_channel_meas[0], upper_sampled_channel_meas[1])\n", " lower_m, lower_b = lin_interpol(lower_sampled_channels[0], lower_sampled_channels[1], lower_sampled_channel_meas[0], lower_sampled_channel_meas[1])\n", " for c in range (upper_sampled_channels[1] + 1):\n", " # def calc_rect(c:int , m_u: float, b_u: float, m_l: float, b_l: float, step_period: float, rect_period: float) -> float:\n", " r_v_rect = calc_rect(c, upper_m, upper_b, lower_m, lower_b, channel_step_size, channel_rect_size)\n", " predictions.append([c, fc_dim, r_v_rect])\n", "\n", "for c in range (1, upper_sampled_channels[1] + 1, 3):\n", " filter_preds = [pred for pred in predictions if pred[0] == c]\n", " # print(filter_preds)\n", " f128_pred_lat = [pred[2] for pred in filter_preds if pred[1] == 128][0]\n", " f1028_pred_lat = [pred[2] for pred in filter_preds if pred[1] == 1028][0]\n", "\n", " upper_m, upper_b = lin_interpol( 128, 1028, f128_pred_lat, f1028_pred_lat)\n", " # lower_m, lower_b = lin_interpol(lower_sampled_filters[0], lower_sampled_filters[1], lower_sampled_filters_meas[0], lower_sampled_filters_meas[1])\n", " for f in range (0,1100,3):\n", " # def calc_rect(c:int , m_u: float, b_u: float, m_l: float, b_l: float, step_period: float, rect_period: float) -> float:\n", " r_v_rect = calc_rect(f, upper_m, upper_b, upper_m, upper_b, filter_step_size, filter_rect_size)\n", " predictions.append([c, f, r_v_rect])\n", "print(\"hi\")\n", "\n", "\n", "\n", "cf_dims = [96, 1024]\n", "upper_sampled_filters = [128, 1028]\n", "lower_sampled_filters = [128, 1028]\n", "for cf_dim in cf_dims:\n", " # print(df[(df[\"Kernel\"] == (3, 3)) & (df[\"Filters\"] == fc_dim)& (df[\"Channels\"] == 97)])\n", " print(df[(df[\"Kernel\"] == (3, 3)) & (df[\"Filters\"] == 1024)& (df[\"Channels\"] == cf_dim)])\n", " upper_sampled_filters_meas = [df[(df[\"Kernel\"] == (3, 3)) & (df[\"Filters\"] == f) & (df[\"Channels\"] == cf_dim)].iloc[0][\"LatencyMS\"] for f in upper_sampled_filters]\n", " lower_sampled_filters_meas = [df[(df[\"Kernel\"] == (3, 3)) & (df[\"Filters\"] == f) & (df[\"Channels\"] == cf_dim)].iloc[0][\"LatencyMS\"] for f in lower_sampled_filters]\n", " print(upper_sampled_filters_meas)\n", " print(lower_sampled_filters_meas)\n", " # lower_sampled_channel_meas = [channel_meas[channels.index(c)] for c in lower_sampled_channels]\n", "\n", " upper_m, upper_b = lin_interpol( upper_sampled_filters[0], upper_sampled_filters[1], upper_sampled_filters_meas[0], upper_sampled_filters_meas[1])\n", " lower_m, lower_b = lin_interpol(lower_sampled_filters[0], lower_sampled_filters[1], lower_sampled_filters_meas[0], lower_sampled_filters_meas[1])\n", " for f in range (1100):\n", " # def calc_rect(c:int , m_u: float, b_u: float, m_l: float, b_l: float, step_period: float, rect_period: float) -> float:\n", " r_v_rect = calc_rect(f, upper_m, upper_b, lower_m, lower_b, filter_step_size, filter_rect_size)\n", " predictions.append([cf_dim, f, r_v_rect])\n", "\n", "\n", "sub_df = df[(df[\"Kernel\"] == (3, 3))]\n", "pdf = pd.DataFrame(data=predictions, columns=[\"Channels\", \"Filters\", \"LatencyMS\"])\n", "fig = go.Figure()\n", "\n", "fig =fig.add_trace(go.Scatter3d(x=sub_df['Channels'], y=sub_df['Filters'], z=sub_df['LatencyMS'], marker=dict(size=2), mode='markers'))\n", "\n", "fig.add_trace(go.Scatter3d(\n", " x=pdf['Channels'],\n", " y=pdf['Filters'],\n", " z=pdf['LatencyMS'],\n", " mode='markers',\n", " marker=dict(size=2),\n", " # name=f\"channel {category}\",\n", " # mode='markers+lines',\n", " line=dict(\n", " dash='dash',\n", " width=.1\n", " )\n", " ))\n", "fig.update_layout(width=2000, height=1000, margin=dict(l=0, r=0, b=0, t=0),\n", " scene=dict(\n", " xaxis_title='channels',\n", " yaxis_title='filters',\n", " zaxis_title='ms'\n", " ),\n", "\n", " template='plotly_white',\n", ")\n", "fig.show()\n", "#\n", "#\n", "# channel_lower_approx =\n", "\n" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "128\n", "[np.float64(4.9109807968139645), np.float64(37.22674671808878)]\n", "[np.float64(3.5613492742369446), np.float64(32.39117988380226)]\n", "1028\n", "[np.float64(44.43491191864014), np.float64(331.73373631068637)]\n", "[np.float64(32.60566730499268), np.float64(290.88586764865454)]\n", "hi\n", " Channels Filters Kernel LatencyMS Op-Cost LatencyLog\n", "1096 96 1024 (3, 3) 29.010786 1.967531e+09 4.858517\n", "[np.float64(3.5613492742369446), np.float64(32.60566730499268)]\n", "[np.float64(3.5613492742369446), np.float64(32.60566730499268)]\n", " Channels Filters Kernel LatencyMS Op-Cost LatencyLog\n", "1869 1024 1024 (3, 3) 260.395382 2.338173e+09 8.02456\n", "[np.float64(32.39117988380226), np.float64(290.88586764865454)]\n", "[np.float64(32.39117988380226), np.float64(290.88586764865454)]\n" ] } ], "execution_count": 38 }, { "metadata": { "ExecuteTime": { "end_time": "2025-11-21T14:47:51.358209Z", "start_time": "2025-11-21T14:47:51.354108Z" } }, "cell_type": "code", "source": "calculate_complexity((256, 256, 1024), (3, 3), (1, 1),1024, \"same\")", "id": "e97d1684e488064a", "outputs": [ { "data": { "text/plain": [ "np.float64(618475290624.0)" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 34 } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.13.6" } }, "nbformat": 4, "nbformat_minor": 5 }