{ "cells": [ { "cell_type": "markdown", "id": "68feb89b", "metadata": {}, "source": [ "# Customize EncoderMap: Logging Custom Scalars\n", "\n", "**Welcome**\n", "\n", "Welcome to the customization part of the EncoderMap tutorials. EncoderMap was redesigned from the ground up using the great customizability of the TensorFlow library. In the new version of EncoderMap all objects can be changed, adjusted by the user or even reused in other TensorFlow projects. The notebooks in this section help you in customizing EnocderMap and adding custom functionality.\n", "\n", "This notebook specifically helps you in logging custom scalars to TensorBoard to visualize additional data during the training of EncoderMap's networks on your data and help you investigate the problems at hand.\n", "\n", "Run this notebook on Google Colab:\n", "\n", "[](https://colab.research.google.com/github/AG-Peter/encodermap/blob/main/tutorials/notebooks_customization/01_custom_scalar_to_tensorboard.ipynb)\n", "\n", "Find the documentation of EncoderMap:\n", "\n", "https://ag-peter.github.io/encodermap\n", "\n", "**Goals**\n", "\n", "In this tutorial you will learn:\n", "\n", "* [How to subclass EncoderMap's `EncoderMapBaseMetric` to add additonal logging capability to TensorBoard](#subclass)\n", "* [Use the `y_true` and `y_pred` parmeters in the `update()` function](#y_pred)" ] }, { "cell_type": "markdown", "id": "beb952f1-c86f-47db-9d1a-40dbc22be56f", "metadata": {}, "source": [ "### For Google colab only:\n", "\n", "If you're on Google colab, please uncomment these lines and install EncoderMap." ] }, { "cell_type": "code", "execution_count": 1, "id": "81f28dfe", "metadata": { "execution": { "iopub.execute_input": "2024-12-29T12:13:40.756718Z", "iopub.status.busy": "2024-12-29T12:13:40.756572Z", "iopub.status.idle": "2024-12-29T12:13:40.760380Z", "shell.execute_reply": "2024-12-29T12:13:40.759764Z" } }, "outputs": [], "source": [ "# !wget https://gist.githubusercontent.com/kevinsawade/deda578a3c6f26640ae905a3557e4ed1/raw/b7403a37710cb881839186da96d4d117e50abf36/install_encodermap_google_colab.sh\n", "# !sudo bash install_encodermap_google_colab.sh" ] }, { "cell_type": "markdown", "id": "a2f8181d-0763-492a-a2dd-25f2aac4e26d", "metadata": {}, "source": [ "If you're on Google Colab, you also want to download the data we will use:" ] }, { "cell_type": "code", "execution_count": 2, "id": "24c5066a-9785-4228-bb06-4fabf9ff375d", "metadata": { "execution": { "iopub.execute_input": "2024-12-29T12:13:40.762430Z", "iopub.status.busy": "2024-12-29T12:13:40.762306Z", "iopub.status.idle": "2024-12-29T12:13:40.765145Z", "shell.execute_reply": "2024-12-29T12:13:40.764281Z" } }, "outputs": [], "source": [ "# !wget https://raw.githubusercontent.com/AG-Peter/encodermap/main/tutorials/notebooks_starter/asp7.csv" ] }, { "cell_type": "markdown", "id": "fb1e4269", "metadata": {}, "source": [ "## Import libraries\n", "\n", "before we can start exploring how to add custom data to TensorBoard, we need to import some libraries." ] }, { "cell_type": "code", "execution_count": 3, "id": "3913fd7c", "metadata": { "execution": { "iopub.execute_input": "2024-12-29T12:13:40.768295Z", "iopub.status.busy": "2024-12-29T12:13:40.768041Z", "iopub.status.idle": "2024-12-29T12:13:45.101503Z", "shell.execute_reply": "2024-12-29T12:13:45.100416Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/kevin/git/encoder_map_private/encodermap/__init__.py:194: GPUsAreDisabledWarning: EncoderMap disables the GPU per default because most tensorflow code runs with a higher compatibility when the GPU is disabled. If you want to enable GPUs manually, set the environment variable 'ENCODERMAP_ENABLE_GPU' to 'True' before importing EncoderMap. To do this in python you can run:\n", "\n", "import os; os.environ['ENCODERMAP_ENABLE_GPU'] = 'True'\n", "\n", "before importing encodermap.\n", " _warnings.warn(\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0fff61821e4e4f5588a2547d601a0fdf", "version_major": 2, "version_minor": 0 }, "text/plain": [] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import encodermap as em\n", "import tensorflow as tf\n", "import numpy as np\n", "import pandas as pd\n", "import plotly.graph_objects as go\n", "\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "id": "b35f8b21-3992-415f-993c-f45094297ffd", "metadata": {}, "source": [ "\n", "\n", "## Adding custom scalars to TensorBoard by subclassing `EncoderMapBaseMetric`\n", "\n", "EncoderMap has implemented a `EncoderMapBaseMetric` class, that can be used to implement such features. It can be found in the `callbacks` submodule in EncoderMap" ] }, { "cell_type": "code", "execution_count": 4, "id": "35a44fdf-ed65-4b26-934a-026d2222d818", "metadata": { "execution": { "iopub.execute_input": "2024-12-29T12:13:45.104339Z", "iopub.status.busy": "2024-12-29T12:13:45.103951Z", "iopub.status.idle": "2024-12-29T12:13:45.154806Z", "shell.execute_reply": "2024-12-29T12:13:45.153726Z" } }, "outputs": [], "source": [ "?em.callbacks.EncoderMapBaseMetric" ] }, { "cell_type": "markdown", "id": "5836407e-99dd-4745-8416-14dcf31a0351", "metadata": {}, "source": [ "We will subclass `EncoderMapBaseMetric` to add additional logging capabilities to our training. As a first example, we will just log a random-normal value. For that we create our own `Metric` class. We only need to implement a single method, called `update`. Normally this method gets the input of the network as the `y_true` argument and the output as the `y_pred` argument (remember. EncoderMap is a regression task and so the `y_true` values do not stem from training data, but are the input data, that the network tries to regress against). However, in our case we won't need these values, as we just take samples from a random normal distribution. Here, it is best to use the builtin tensorflow function `tf.random.normal()`, with the NumPy function `np.random.normal`, the random state will not be updated and the output will be constant (rather than random).\n", "\n", "To log the random value, we also need to use `tf.summary.scalar()`" ] }, { "cell_type": "code", "execution_count": 5, "id": "d2e983ae-7033-4279-b1e0-c73dbec8b1ea", "metadata": { "execution": { "iopub.execute_input": "2024-12-29T12:13:45.157493Z", "iopub.status.busy": "2024-12-29T12:13:45.157307Z", "iopub.status.idle": "2024-12-29T12:13:45.183888Z", "shell.execute_reply": "2024-12-29T12:13:45.182963Z" } }, "outputs": [], "source": [ "class RandomNormalMetric(em.callbacks.EncoderMapBaseMetric):\n", " def update(self, y_true, y_pred):\n", " r = tf.random.normal(shape=(1, ))[0]\n", " tf.summary.scalar(\"my random metric\", r)\n", " return r" ] }, { "cell_type": "markdown", "id": "e6d21495-6b35-47d8-82b2-24c7fcad5806", "metadata": {}, "source": [ "This metric can easily be added to a `EncoderMap` instance via the `add_metric()` method." ] }, { "cell_type": "code", "execution_count": 6, "id": "856f71fa-9b8b-4524-b601-eef4964cf42c", "metadata": { "execution": { "iopub.execute_input": "2024-12-29T12:13:45.186867Z", "iopub.status.busy": "2024-12-29T12:13:45.186679Z", "iopub.status.idle": "2024-12-29T12:13:56.926872Z", "shell.execute_reply": "2024-12-29T12:13:56.926312Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Output files are saved to /home/kevin/git/encoder_map_private/docs/source/notebooks/customization_nb as defined in 'main_path' in the parameters.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Saved a text-summary of the model and an image in /home/kevin/git/encoder_map_private/docs/source/notebooks/customization_nb, as specified in 'main_path' in the parameters.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0/1000 [00:00, ?it/s]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0/1000 [00:00, ?it/s, Loss after step ?=?]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 1/1000 [00:03<1:02:05, 3.73s/it, Loss after step ?=?]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 1%|▏ | 9/1000 [00:03<1:01:35, 3.73s/it, Loss after step 10=1.65]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 1%|▎ | 13/1000 [00:03<03:30, 4.69it/s, Loss after step 10=1.65]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 2%|▍ | 19/1000 [00:03<03:29, 4.69it/s, Loss after step 20=1.21]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 3%|▋ | 26/1000 [00:03<01:29, 10.93it/s, Loss after step 20=1.21]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 3%|▋ | 29/1000 [00:03<01:28, 10.93it/s, Loss after step 30=0.981]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 4%|▉ | 39/1000 [00:04<00:51, 18.80it/s, Loss after step 30=0.981]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 4%|▉ | 39/1000 [00:04<00:51, 18.80it/s, Loss after step 40=0.947]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 5%|█▏ | 49/1000 [00:04<00:50, 18.80it/s, Loss after step 50=0.926]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 5%|█▎ | 52/1000 [00:04<00:33, 28.22it/s, Loss after step 50=0.926]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 6%|█▌ | 59/1000 [00:04<00:33, 28.22it/s, Loss after step 60=0.9]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 6%|█▊ | 65/1000 [00:04<00:23, 39.16it/s, Loss after step 60=0.9]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 7%|█▋ | 69/1000 [00:04<00:23, 39.16it/s, Loss after step 70=0.872]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 8%|█▉ | 78/1000 [00:04<00:18, 51.03it/s, Loss after step 70=0.872]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 8%|█▉ | 79/1000 [00:04<00:18, 51.03it/s, Loss after step 80=0.851]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 9%|██▏ | 89/1000 [00:04<00:17, 51.03it/s, Loss after step 90=0.843]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 9%|██▎ | 91/1000 [00:04<00:14, 63.53it/s, Loss after step 90=0.843]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 10%|██▍ | 99/1000 [00:04<00:14, 63.53it/s, Loss after step 100=0.81]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 10%|██▍ | 104/1000 [00:04<00:11, 74.85it/s, Loss after step 100=0.81]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 11%|██▌ | 109/1000 [00:04<00:11, 74.85it/s, Loss after step 110=0.783]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 12%|██▋ | 117/1000 [00:04<00:10, 86.06it/s, Loss after step 110=0.783]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 12%|██▋ | 119/1000 [00:04<00:10, 86.06it/s, Loss after step 120=0.769]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 13%|██▉ | 129/1000 [00:04<00:10, 86.06it/s, Loss after step 130=0.767]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 13%|██▉ | 130/1000 [00:04<00:09, 95.62it/s, Loss after step 130=0.767]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 14%|███▏ | 139/1000 [00:04<00:09, 95.62it/s, Loss after step 140=0.756]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 14%|███▏ | 144/1000 [00:04<00:08, 104.69it/s, Loss after step 140=0.756]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 15%|███▎ | 149/1000 [00:04<00:08, 104.69it/s, Loss after step 150=0.741]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 16%|███▍ | 157/1000 [00:04<00:07, 108.67it/s, Loss after step 150=0.741]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 16%|███▍ | 159/1000 [00:05<00:07, 108.67it/s, Loss after step 160=0.743]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 17%|███▋ | 169/1000 [00:05<00:07, 108.67it/s, Loss after step 170=0.775]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 17%|███▊ | 171/1000 [00:05<00:07, 114.10it/s, Loss after step 170=0.775]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 18%|███▉ | 179/1000 [00:05<00:07, 114.10it/s, Loss after step 180=0.735]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 18%|████ | 184/1000 [00:05<00:06, 117.25it/s, Loss after step 180=0.735]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 19%|████▏ | 189/1000 [00:05<00:06, 117.25it/s, Loss after step 190=0.817]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 20%|████▎ | 198/1000 [00:05<00:06, 120.39it/s, Loss after step 190=0.817]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 20%|████▍ | 199/1000 [00:05<00:06, 120.39it/s, Loss after step 200=0.755]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 21%|████▌ | 209/1000 [00:05<00:06, 120.39it/s, Loss after step 210=0.738]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 21%|████▋ | 211/1000 [00:05<00:06, 121.69it/s, Loss after step 210=0.738]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 22%|████▊ | 219/1000 [00:05<00:06, 121.69it/s, Loss after step 220=0.732]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 22%|████▉ | 225/1000 [00:05<00:06, 125.64it/s, Loss after step 220=0.732]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 23%|█████ | 229/1000 [00:05<00:06, 125.64it/s, Loss after step 230=0.725]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 24%|█████▏ | 238/1000 [00:05<00:06, 125.97it/s, Loss after step 230=0.725]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 24%|█████▎ | 239/1000 [00:05<00:06, 125.97it/s, Loss after step 240=0.715]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 25%|█████▍ | 249/1000 [00:05<00:05, 125.97it/s, Loss after step 250=0.714]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 25%|█████▌ | 252/1000 [00:05<00:05, 129.87it/s, Loss after step 250=0.714]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 26%|█████▋ | 259/1000 [00:05<00:05, 129.87it/s, Loss after step 260=0.747]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 27%|█████▊ | 266/1000 [00:05<00:05, 131.87it/s, Loss after step 260=0.747]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 27%|██████▏ | 269/1000 [00:05<00:05, 131.87it/s, Loss after step 270=0.69]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 28%|██████▏ | 279/1000 [00:05<00:05, 131.87it/s, Loss after step 280=0.713]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 28%|██████▏ | 280/1000 [00:05<00:05, 131.30it/s, Loss after step 280=0.713]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 29%|██████▎ | 289/1000 [00:06<00:05, 131.30it/s, Loss after step 290=0.733]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 29%|██████▍ | 294/1000 [00:06<00:05, 132.50it/s, Loss after step 290=0.733]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 30%|██████▌ | 299/1000 [00:06<00:05, 132.50it/s, Loss after step 300=0.679]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 31%|██████▊ | 308/1000 [00:06<00:05, 134.30it/s, Loss after step 300=0.679]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 31%|██████▊ | 309/1000 [00:06<00:05, 134.30it/s, Loss after step 310=0.691]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 32%|███████ | 319/1000 [00:06<00:05, 134.30it/s, Loss after step 320=0.684]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 32%|███████ | 322/1000 [00:06<00:05, 135.16it/s, Loss after step 320=0.684]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 33%|███████▏ | 329/1000 [00:06<00:04, 135.16it/s, Loss after step 330=0.687]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 34%|███████▍ | 336/1000 [00:06<00:04, 135.01it/s, Loss after step 330=0.687]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 34%|███████▍ | 339/1000 [00:06<00:04, 135.01it/s, Loss after step 340=0.671]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 35%|███████▋ | 349/1000 [00:06<00:04, 135.01it/s, Loss after step 350=0.664]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 35%|███████▋ | 350/1000 [00:06<00:04, 135.39it/s, Loss after step 350=0.664]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 36%|███████▉ | 359/1000 [00:06<00:04, 135.39it/s, Loss after step 360=0.675]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 36%|████████ | 364/1000 [00:06<00:04, 134.17it/s, Loss after step 360=0.675]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 37%|████████ | 369/1000 [00:06<00:04, 134.17it/s, Loss after step 370=0.673]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 38%|████████▎ | 379/1000 [00:06<00:04, 136.03it/s, Loss after step 370=0.673]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 38%|████████▋ | 379/1000 [00:06<00:04, 136.03it/s, Loss after step 380=0.65]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 39%|████████▌ | 389/1000 [00:06<00:04, 136.03it/s, Loss after step 390=0.646]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 39%|████████▋ | 393/1000 [00:06<00:04, 135.15it/s, Loss after step 390=0.646]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 40%|████████▊ | 399/1000 [00:06<00:04, 135.15it/s, Loss after step 400=0.642]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 41%|████████▉ | 407/1000 [00:06<00:04, 132.83it/s, Loss after step 400=0.642]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 41%|████████▉ | 409/1000 [00:06<00:04, 132.83it/s, Loss after step 410=0.708]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 42%|█████████▏ | 419/1000 [00:06<00:04, 132.83it/s, Loss after step 420=0.668]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 42%|█████████▎ | 421/1000 [00:06<00:04, 134.02it/s, Loss after step 420=0.668]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 43%|█████████▍ | 429/1000 [00:07<00:04, 134.02it/s, Loss after step 430=0.645]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 44%|█████████▌ | 435/1000 [00:07<00:04, 132.20it/s, Loss after step 430=0.645]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 44%|█████████▋ | 439/1000 [00:07<00:04, 132.20it/s, Loss after step 440=0.666]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 45%|█████████▉ | 449/1000 [00:07<00:04, 132.52it/s, Loss after step 440=0.666]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 45%|█████████▉ | 449/1000 [00:07<00:04, 132.52it/s, Loss after step 450=0.685]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 46%|██████████ | 459/1000 [00:07<00:04, 132.52it/s, Loss after step 460=0.679]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 46%|██████████▏ | 463/1000 [00:07<00:04, 132.56it/s, Loss after step 460=0.679]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 47%|██████████▎ | 469/1000 [00:07<00:04, 132.56it/s, Loss after step 470=0.639]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 48%|██████████▍ | 477/1000 [00:07<00:03, 131.95it/s, Loss after step 470=0.639]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 48%|██████████▌ | 479/1000 [00:07<00:03, 131.95it/s, Loss after step 480=0.629]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 49%|██████████▊ | 489/1000 [00:07<00:03, 131.95it/s, Loss after step 490=0.626]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 49%|██████████▊ | 491/1000 [00:07<00:03, 131.50it/s, Loss after step 490=0.626]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 50%|██████████▉ | 499/1000 [00:07<00:03, 131.50it/s, Loss after step 500=0.653]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 50%|███████████ | 505/1000 [00:07<00:03, 131.34it/s, Loss after step 500=0.653]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 51%|███████████▋ | 509/1000 [00:07<00:03, 131.34it/s, Loss after step 510=0.67]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 52%|███████████▉ | 519/1000 [00:07<00:03, 130.62it/s, Loss after step 510=0.67]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 52%|███████████▍ | 519/1000 [00:07<00:03, 130.62it/s, Loss after step 520=0.648]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 53%|███████████▋ | 529/1000 [00:07<00:03, 130.62it/s, Loss after step 530=0.644]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 53%|███████████▋ | 533/1000 [00:07<00:03, 129.34it/s, Loss after step 530=0.644]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 54%|███████████▊ | 539/1000 [00:07<00:03, 129.34it/s, Loss after step 540=0.625]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 55%|████████████ | 547/1000 [00:07<00:03, 131.24it/s, Loss after step 540=0.625]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 55%|████████████ | 549/1000 [00:07<00:03, 131.24it/s, Loss after step 550=0.636]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 56%|████████████▎ | 559/1000 [00:08<00:03, 131.24it/s, Loss after step 560=0.617]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 56%|████████████▎ | 561/1000 [00:08<00:03, 132.73it/s, Loss after step 560=0.617]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 57%|████████████▌ | 569/1000 [00:08<00:03, 132.73it/s, Loss after step 570=0.615]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 57%|████████████▋ | 575/1000 [00:08<00:03, 132.64it/s, Loss after step 570=0.615]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 58%|████████████▋ | 579/1000 [00:08<00:03, 132.64it/s, Loss after step 580=0.685]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 59%|████████████▉ | 589/1000 [00:08<00:03, 132.64it/s, Loss after step 590=0.604]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 59%|████████████▉ | 590/1000 [00:08<00:03, 135.04it/s, Loss after step 590=0.604]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 60%|█████████████▏ | 599/1000 [00:08<00:02, 135.04it/s, Loss after step 600=0.608]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 60%|█████████████▎ | 604/1000 [00:08<00:02, 135.56it/s, Loss after step 600=0.608]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 61%|█████████████▍ | 609/1000 [00:08<00:02, 135.56it/s, Loss after step 610=0.616]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 62%|█████████████▌ | 618/1000 [00:08<00:02, 135.19it/s, Loss after step 610=0.616]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 62%|█████████████▌ | 619/1000 [00:08<00:02, 135.19it/s, Loss after step 620=0.711]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 63%|█████████████▊ | 629/1000 [00:08<00:02, 135.19it/s, Loss after step 630=0.688]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 63%|█████████████▉ | 632/1000 [00:08<00:02, 135.99it/s, Loss after step 630=0.688]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 64%|██████████████ | 639/1000 [00:08<00:02, 135.99it/s, Loss after step 640=0.606]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 65%|██████████████▏ | 646/1000 [00:08<00:02, 136.10it/s, Loss after step 640=0.606]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 65%|██████████████▎ | 649/1000 [00:08<00:02, 136.10it/s, Loss after step 650=0.627]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 66%|██████████████▍ | 659/1000 [00:08<00:02, 136.10it/s, Loss after step 660=0.619]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 66%|██████████████▌ | 660/1000 [00:08<00:02, 135.48it/s, Loss after step 660=0.619]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 67%|██████████████▋ | 669/1000 [00:08<00:02, 135.48it/s, Loss after step 670=0.582]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 67%|██████████████▊ | 674/1000 [00:08<00:02, 135.76it/s, Loss after step 670=0.582]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 68%|██████████████▉ | 679/1000 [00:08<00:02, 135.76it/s, Loss after step 680=0.604]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 69%|███████████████▏ | 688/1000 [00:08<00:02, 135.80it/s, Loss after step 680=0.604]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 69%|███████████████▏ | 689/1000 [00:08<00:02, 135.80it/s, Loss after step 690=0.632]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 70%|███████████████▍ | 699/1000 [00:09<00:02, 135.80it/s, Loss after step 700=0.649]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 70%|███████████████▍ | 702/1000 [00:09<00:02, 136.16it/s, Loss after step 700=0.649]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 71%|███████████████▌ | 709/1000 [00:09<00:02, 136.16it/s, Loss after step 710=0.632]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 72%|███████████████▊ | 716/1000 [00:09<00:02, 135.43it/s, Loss after step 710=0.632]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 72%|███████████████▊ | 719/1000 [00:09<00:02, 135.43it/s, Loss after step 720=0.635]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 73%|████████████████ | 729/1000 [00:09<00:02, 135.43it/s, Loss after step 730=0.611]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 73%|████████████████ | 730/1000 [00:09<00:02, 133.32it/s, Loss after step 730=0.611]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 74%|████████████████▎ | 739/1000 [00:09<00:01, 133.32it/s, Loss after step 740=0.603]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 74%|████████████████▎ | 744/1000 [00:09<00:01, 131.89it/s, Loss after step 740=0.603]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 75%|████████████████▍ | 749/1000 [00:09<00:01, 131.89it/s, Loss after step 750=0.627]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 76%|████████████████▋ | 758/1000 [00:09<00:01, 129.77it/s, Loss after step 750=0.627]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 76%|█████████████████▍ | 759/1000 [00:09<00:01, 129.77it/s, Loss after step 760=0.62]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 77%|████████████████▉ | 769/1000 [00:09<00:01, 129.77it/s, Loss after step 770=0.591]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 77%|████████████████▉ | 772/1000 [00:09<00:01, 129.88it/s, Loss after step 770=0.591]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 78%|█████████████████▏ | 779/1000 [00:09<00:01, 129.88it/s, Loss after step 780=0.602]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 79%|█████████████████▎ | 786/1000 [00:09<00:01, 131.68it/s, Loss after step 780=0.602]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 79%|█████████████████▎ | 789/1000 [00:09<00:01, 131.68it/s, Loss after step 790=0.589]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 80%|█████████████████▌ | 799/1000 [00:09<00:01, 131.68it/s, Loss after step 800=0.586]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 80%|█████████████████▌ | 800/1000 [00:09<00:01, 131.27it/s, Loss after step 800=0.586]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 81%|█████████████████▊ | 809/1000 [00:09<00:01, 131.27it/s, Loss after step 810=0.573]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 81%|█████████████████▉ | 814/1000 [00:09<00:01, 133.63it/s, Loss after step 810=0.573]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 82%|██████████████████ | 819/1000 [00:09<00:01, 133.63it/s, Loss after step 820=0.585]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 83%|██████████████████▏ | 829/1000 [00:10<00:01, 136.23it/s, Loss after step 820=0.585]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 83%|██████████████████▏ | 829/1000 [00:10<00:01, 136.23it/s, Loss after step 830=0.651]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 84%|██████████████████▍ | 839/1000 [00:10<00:01, 136.23it/s, Loss after step 840=0.614]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 84%|██████████████████▌ | 843/1000 [00:10<00:01, 135.94it/s, Loss after step 840=0.614]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 85%|████████████████████▍ | 849/1000 [00:10<00:01, 135.94it/s, Loss after step 850=0.6]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 86%|████████████████████▌ | 857/1000 [00:10<00:01, 135.20it/s, Loss after step 850=0.6]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 86%|██████████████████▉ | 859/1000 [00:10<00:01, 135.20it/s, Loss after step 860=0.595]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 87%|███████████████████▉ | 869/1000 [00:10<00:00, 135.20it/s, Loss after step 870=0.61]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 87%|████████████████████ | 871/1000 [00:10<00:00, 135.21it/s, Loss after step 870=0.61]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 88%|███████████████████▎ | 879/1000 [00:10<00:00, 135.21it/s, Loss after step 880=0.598]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 88%|███████████████████▍ | 885/1000 [00:10<00:00, 134.17it/s, Loss after step 880=0.598]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 89%|███████████████████▌ | 889/1000 [00:10<00:00, 134.17it/s, Loss after step 890=0.643]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 90%|███████████████████▊ | 899/1000 [00:10<00:00, 135.78it/s, Loss after step 890=0.643]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 90%|███████████████████▊ | 899/1000 [00:10<00:00, 135.78it/s, Loss after step 900=0.618]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 91%|███████████████████▉ | 909/1000 [00:10<00:00, 135.78it/s, Loss after step 910=0.603]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 91%|████████████████████ | 913/1000 [00:10<00:00, 135.29it/s, Loss after step 910=0.603]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 92%|████████████████████▏ | 919/1000 [00:10<00:00, 135.29it/s, Loss after step 920=0.562]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 93%|████████████████████▍ | 927/1000 [00:10<00:00, 136.51it/s, Loss after step 920=0.562]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 93%|████████████████████▍ | 929/1000 [00:10<00:00, 136.51it/s, Loss after step 930=0.607]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 94%|████████████████████▋ | 939/1000 [00:10<00:00, 136.51it/s, Loss after step 940=0.628]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 94%|████████████████████▋ | 941/1000 [00:10<00:00, 136.22it/s, Loss after step 940=0.628]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 95%|████████████████████▉ | 949/1000 [00:10<00:00, 136.22it/s, Loss after step 950=0.603]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 96%|█████████████████████ | 955/1000 [00:10<00:00, 135.34it/s, Loss after step 950=0.603]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 96%|█████████████████████ | 959/1000 [00:11<00:00, 135.34it/s, Loss after step 960=0.599]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 97%|█████████████████████▎| 969/1000 [00:11<00:00, 134.62it/s, Loss after step 960=0.599]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 97%|█████████████████████▎| 969/1000 [00:11<00:00, 134.62it/s, Loss after step 970=0.578]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 98%|█████████████████████▌| 979/1000 [00:11<00:00, 134.62it/s, Loss after step 980=0.604]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 98%|█████████████████████▋| 983/1000 [00:11<00:00, 131.31it/s, Loss after step 980=0.604]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 99%|██████████████████████▋| 989/1000 [00:11<00:00, 131.31it/s, Loss after step 990=0.55]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", "100%|██████████████████████▉| 997/1000 [00:11<00:00, 127.46it/s, Loss after step 990=0.55]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", "100%|████████████████████▉| 999/1000 [00:11<00:00, 127.46it/s, Loss after step 1000=0.598]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", "100%|█████████████████████| 1000/1000 [00:11<00:00, 88.24it/s, Loss after step 1000=0.598]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Saving the model to /home/kevin/git/encoder_map_private/docs/source/notebooks/customization_nb/saved_model_2024-12-29T13:13:56+01:00.keras. Use `em.EncoderMap.from_checkpoint('/home/kevin/git/encoder_map_private/docs/source/notebooks/customization_nb')` to load the most recent model, or `em.EncoderMap.from_checkpoint('/home/kevin/git/encoder_map_private/docs/source/notebooks/customization_nb/saved_model_2024-12-29T13:13:56+01:00.keras')` to load the model with specific weights..\n", "This model has a subclassed encoder, which can be loaded independently. Use `tf.keras.load_model('/home/kevin/git/encoder_map_private/docs/source/notebooks/customization_nb/saved_model_2024-12-29T13:13:56+01:00_encoder.keras')` to load only this model.\n", "This model has a subclassed decoder, which can be loaded independently. Use `tf.keras.load_model('/home/kevin/git/encoder_map_private/docs/source/notebooks/customization_nb/saved_model_2024-12-29T13:13:56+01:00_decoder.keras')` to load only this model.\n" ] } ], "source": [ "p = em.Parameters(n_steps=1_000, tensorboard=True)\n", "emap = em.EncoderMap(parameters=p)\n", "emap.add_metric(RandomNormalMetric)\n", "history = emap.train()" ] }, { "cell_type": "markdown", "id": "bfd3792b-aaca-4bf4-bea0-a9910b47d8d3", "metadata": {}, "source": [ "Our custom metric will be available in the `'RandomNormalMetric Metric'` key of the history." ] }, { "cell_type": "code", "execution_count": 7, "id": "fd89d082-b1e6-49a9-b5cb-c7b668879702", "metadata": { "execution": { "iopub.execute_input": "2024-12-29T12:13:56.929386Z", "iopub.status.busy": "2024-12-29T12:13:56.929191Z", "iopub.status.idle": "2024-12-29T12:13:57.048252Z", "shell.execute_reply": "2024-12-29T12:13:57.047830Z" } }, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "nbinsx": 20, "type": "histogram", "x": [ 0.47696518898010254, -0.06158110126852989, -1.2444813251495361, -0.6383908987045288, -1.3619869947433472, 1.0296096801757812, 1.3166100978851318, 0.8764461874961853, -2.555989980697632, -0.8386778831481934, 0.8136284351348877, 0.4972527325153351, 0.23243655264377594, -1.3441932201385498, -0.8871597051620483, -1.0201376676559448, 1.394589900970459, -2.0314221382141113, -1.116113543510437, -0.6743600964546204, -0.4575250446796417, -0.6522442698478699, -0.06880097091197968, 0.3178909122943878, -0.7099047899246216, 0.8198134899139404, -0.5907567143440247, 0.9662337899208069, 0.5056790113449097, -0.2548884451389313, 0.8321620225906372, 0.6643403172492981, -0.821778416633606, -0.2230009138584137, -0.9921374320983887, 1.4485585689544678, -1.5167264938354492, -1.049468994140625, -1.6474000215530396, 0.3645617365837097, -0.8596283197402954, 1.9816374778747559, -1.898055911064148, -1.145131230354309, 0.4776620864868164, -0.404935359954834, -0.6321229934692383, 0.7754060626029968, -1.7239131927490234, -1.0894063711166382, 2.1110665798187256, -0.068315289914608, 0.49757784605026245, 1.3408595323562622, 0.24044738709926605, -1.0045875310897827, 0.30265453457832336, -0.5785080194473267, 1.3803051710128784, 0.49658116698265076, 0.4715842604637146, 0.9370601177215576, -0.36081185936927795, -0.11838889867067337, -0.48319125175476074, -0.2775557339191437, 0.8824039101600647, 1.4340473413467407, 0.41032639145851135, -1.1001836061477661, 0.12922726571559906, 0.36611971259117126, -0.4580635130405426, -0.3597438633441925, -0.4563232362270355, -0.03399621322751045, -0.9200723171234131, -1.0763254165649414, 0.6584675908088684, 1.0531461238861084, -1.0632880926132202, -0.5707004070281982, 0.33620724081993103, -1.1124303340911865, 1.2476623058319092, -0.27886396646499634, -1.9271736145019531, -0.9081290364265442, -0.39281779527664185, 0.6126015186309814, -0.8931016325950623, -0.32035407423973083, 1.132495403289795, -0.12756100296974182, 0.14989076554775238, 2.0004613399505615, 1.276086449623108, -0.7886176705360413, -1.0177717208862305, -0.6723803877830505, 0.9678592085838318, 0.040764663368463516, 0.1432524025440216, 0.6713912487030029, 0.2016892284154892, 1.8158727884292603, -0.5213954448699951, 1.9289660453796387, 0.3668283224105835, 0.7641935348510742, -0.7157699465751648, 0.7701576352119446, -2.28090500831604, -1.1993540525436401, 0.7834302186965942, -0.4450719654560089, 0.999661922454834, 1.1018905639648438, 0.3643159866333008, 1.0872490406036377, -0.008194368332624435, -0.6502875685691833, 0.195437952876091, 0.974701464176178, -0.7689970135688782, 0.5690909028053284, -2.1471920013427734, -2.467175006866455, -0.9853025078773499, 1.1271306276321411, -1.108473539352417, -1.2750446796417236, 0.9417282342910767, 1.1434369087219238, -1.5694048404693604, -0.5403200387954712, -0.17202873528003693, 0.6128938794136047, -1.7390007972717285, -1.8412238359451294, -0.15265895426273346, 0.32044318318367004, -0.9480085372924805, -0.8001783490180969, 1.0085428953170776, 1.10489821434021, 0.006724102888256311, -1.32547128200531, -1.0295499563217163, 1.9654126167297363, -0.9393655061721802, 1.0034502744674683, -1.1606851816177368, 1.0474117994308472, -1.1560992002487183, 0.21395650506019592, 1.4367878437042236, -0.8434984683990479, 0.06774424016475677, -1.512356162071228, 0.34986138343811035, -0.5213795304298401, -1.2451139688491821, 0.23524974286556244, 1.7863506078720093, 1.3112555742263794, 0.23716950416564941, 0.8668655753135681, 0.5205578207969666, 0.05497708171606064, -1.164290189743042, -1.5719995498657227, -0.1871262639760971, -0.5885357856750488, 0.5917076468467712, -0.6862971782684326, 2.0610594749450684, 1.3729838132858276, 0.10788057744503021, 0.2282591611146927, 0.23834387958049774, 1.8190380334854126, 0.7735633850097656, -2.0735530853271484, 0.1034148558974266, -0.9040432572364807, 0.8425198793411255, -2.3618884086608887, 0.5900929570198059, 1.8872355222702026, -0.7129787802696228, -1.1817606687545776, -0.04959680885076523, -0.1693015992641449, 1.5354422330856323, -1.3910844326019287, 0.5667030811309814, 0.5593000650405884, -0.11155080050230026, 0.24524617195129395, -1.0792688131332397, -0.7238616943359375, -0.10877014696598053, 0.6223753690719604, -0.8097671866416931, -1.043190360069275, 1.8584585189819336, -0.014311025850474834, 0.08566267043352127, -1.306518793106079, -1.161838412284851, -2.053467273712158, 1.6398733854293823, -0.0199425145983696, 0.18191279470920563, -0.03434623032808304, -0.10911662131547928, 0.4697551429271698, 0.11882641166448593, -1.8527565002441406, 1.699958086013794, 1.0055699348449707, -0.8279477953910828, 1.222092866897583, -0.42844095826148987, 0.5935675501823425, -0.8638037443161011, 0.5558180809020996, 0.6084546446800232, 1.360489845275879, -0.2921167016029358, 0.9248166680335999, 0.8092982769012451, -1.2947591543197632, 0.9286894798278809, -0.019781138747930527, 2.671175241470337, 0.9654455780982971, -1.0581573247909546, 1.4682881832122803, 0.7975786924362183, 0.3166082203388214, 1.3612308502197266, 1.4243710041046143, 0.035510607063770294, 0.3386867344379425, 0.4947039484977722, -1.1687315702438354, 1.5854871273040771, -1.2640974521636963, 0.36227911710739136, -0.6914771199226379, -0.47773346304893494, 0.07580002397298813, 0.19449807703495026, 1.833622932434082, 0.901663601398468, 0.20007838308811188, 0.4096415638923645, -0.5155858397483826, 0.8748893737792969, -1.0017646551132202, -1.443572998046875, 0.5458584427833557, 1.5378919839859009, 1.143609642982483, -1.2645636796951294, 0.5230628848075867, -1.5965534448623657, -0.9345225095748901, 2.0989012718200684, 0.49653083086013794, 0.6626538634300232, -0.43554073572158813, 1.1941722631454468, 1.8985234498977661, 0.39367055892944336, -1.5347740650177002, 0.488604336977005, -0.9813022613525391, 0.0659480094909668, -0.011743402108550072, -0.0822412297129631, 0.47708138823509216, 0.47435009479522705, 0.31761670112609863, 0.8837339878082275, 1.6625418663024902, 0.3967275321483612, 1.413764476776123, 0.850655734539032, 2.0987637042999268, -0.3923501670360565, 0.09733834117650986, -0.44448724389076233, -0.9645364880561829, 0.8794143199920654, 0.15656082332134247, 0.8684794306755066, -0.7894951105117798, 0.8130258321762085, 0.6333866715431213, -2.1615591049194336, -2.500983476638794, 0.38867056369781494, 1.1560767889022827, -0.8661914467811584, 1.0959445238113403, -0.9265990853309631, 0.5394864678382874, 0.4802117943763733, 0.6619187593460083, 2.1522161960601807, -0.7335728406906128, -1.0477030277252197, -1.6386080980300903, -0.0933443084359169, 0.9522315859794617, -1.0171833038330078, 0.2009781152009964, 0.6738090515136719, -0.47483518719673157, -0.22704745829105377, -0.8376056551933289, -0.7574480772018433, -0.08243458718061447, -1.1598302125930786, -0.5829238295555115, -0.5311666131019592, 0.18465520441532135, -0.21135281026363373, -1.746716022491455, -0.9669747948646545, -0.9971289038658142, -2.0741071701049805, 0.15604503452777863, 0.8266711235046387, 0.7025002241134644, 0.10316289961338043, -0.4964997172355652, -0.3610434830188751, -0.3168533742427826, 1.7808001041412354, -0.26272687315940857, 0.2382211536169052, -0.44480767846107483, -0.7255686521530151, -0.2914679944515228, 0.534344494342804, -0.30119675397872925, 0.005572788417339325, 0.8083666563034058, -0.7151069045066833, -0.4597252607345581, 1.3917981386184692, -0.8940038681030273, -2.326385974884033, 1.7170398235321045, -0.25234562158584595, -0.10793192684650421, 1.5055022239685059, -0.7360447645187378, -0.6299742460250854, 2.08270001411438, -0.5760830640792847, 0.580184280872345, 0.905707836151123, -0.6847959756851196, 1.0936423540115356, 0.15019077062606812, 1.6600233316421509, 1.6036442518234253, 1.5217812061309814, -0.14702759683132172, -0.20645670592784882, -1.1442848443984985, 0.11355479061603546, -1.4993916749954224, 1.0384001731872559, 0.34186428785324097, 0.7106234431266785, -0.6670214533805847, -0.855924665927887, -1.720723032951355, -0.0636189803481102, -0.1961745172739029, 1.7535295486450195, -0.9917377233505249, -1.6611887216567993, 0.012145989574491978, 1.433039903640747, -2.5713083744049072, 1.8213504552841187, -0.16456055641174316, -0.23287878930568695, -1.672717809677124, -2.647132396697998, 0.3869774341583252, -0.3406503200531006, -0.5984191298484802, -0.5469220280647278, -1.189133644104004, 1.1827174425125122, -1.8269991874694824, -1.0306957960128784, 0.8091496825218201, -0.9640629291534424, 0.8767408132553101, 1.0922648906707764, 0.988959789276123, 0.04618440940976143, 1.6414754390716553, 2.1046671867370605, -0.9600703716278076, -1.3293917179107666, 0.3930663466453552, -0.20852768421173096, 1.684393286705017, -0.67255038022995, 0.5171894431114197, 0.5486169457435608, -1.8645634651184082, -0.04684130847454071, -1.070230484008789, 1.1042871475219727, 0.2370448261499405, 0.05683910846710205, -0.8130078911781311, -0.004922016058117151, 1.2097859382629395, -0.34671685099601746, -0.5196506977081299, 0.2573103606700897, -0.6231764554977417, 0.8650491833686829, 0.3634040355682373, 1.1919314861297607, -0.7848222255706787, 2.1896917819976807, 1.6186600923538208, -1.146274447441101, -0.21642278134822845, 0.013949884101748466, 1.7051104307174683, 0.8323519825935364, 0.7396300435066223, 0.3569086194038391, -0.205824077129364, 2.0216689109802246, -0.7786952257156372, -0.20626939833164215, 1.1310536861419678, 1.7099406719207764, 0.7709786295890808, -1.5821818113327026, 1.238656997680664, -1.658563256263733, 0.2795490622520447, 0.449312299489975, 1.0026845932006836, 0.3353519141674042, 0.25268667936325073, 0.7444408535957336, -1.4986660480499268, -0.35889333486557007, -0.6085811257362366, 0.5780216455459595, 1.388779878616333, 0.07553661614656448, 1.260845422744751, 0.06920812278985977, -0.4689215421676636, 1.1436443328857422, -0.8942798972129822, 0.1088830977678299, 0.7379369735717773, -0.9281590580940247, -0.1424831598997116, -0.9508676528930664, 0.1464424580335617, 1.342145562171936, -2.2895734310150146, 2.3491227626800537, -1.0636820793151855, 0.9366102814674377, 0.23639041185379028, -1.4307529926300049, 0.5152168869972229, -0.6838669180870056, 0.5221918225288391, -1.9173747301101685, -1.3726141452789307, 2.0586516857147217, -1.1473571062088013, -0.31577068567276, -0.8253768682479858, -1.0574276447296143, -1.5082885026931763, 0.6167411804199219, -0.9793063402175903, 0.9665679335594177, -1.03638756275177, -0.4217565357685089, -0.8587576150894165, -2.7679712772369385, -0.03074498288333416, 0.32669228315353394, 0.07217559963464737, 0.5960161089897156, 0.2182595133781433, 2.220616102218628, 0.3102019727230072, 0.6174495220184326, -1.2160298824310303, -1.0406532287597656, 1.0153610706329346, -0.9459150433540344, 0.8728651404380798, 1.7926840782165527, -0.30320829153060913, 1.0180591344833374, -1.1469887495040894, 0.9052762985229492, -1.5576015710830688, -0.1993066817522049, 0.4508448541164398, 2.0346310138702393, -2.01435923576355, -2.6163148880004883, -0.4450869858264923, -0.7251801490783691, 0.5290966033935547, -1.2595690488815308, -1.4145069122314453, 0.666511058807373, -1.2550241947174072, 0.9656315445899963, 0.22386501729488373, 0.8519122004508972, -0.462162584066391, 1.5609283447265625, 0.0597747303545475, 1.298313021659851, -0.891338586807251, 1.0839813947677612, 0.0018403365975245833, -0.803196370601654, 1.6182525157928467, 0.2840282917022705, -1.7055093050003052, 0.05634823441505432, 0.3153678774833679, -0.3765670359134674, -0.33089783787727356, -2.659485101699829, 2.9181747436523438, 0.353929340839386, -0.6185852885246277, -0.1516391783952713, -0.8175007700920105, 2.161820411682129, -0.4543171525001526, -0.3059599995613098, 0.08602609485387802, -0.16660209000110626, -1.6318567991256714, -0.5763921737670898, -0.18797118961811066, 0.6284757256507874, 0.13475221395492554, 0.6472275257110596, -0.8684125542640686, 0.11348755657672882, -1.4253071546554565, -0.8081803917884827, 0.8981486558914185, 1.5381008386611938, 0.42705345153808594, -0.5051094889640808, -0.5708882212638855, -0.32218804955482483, 2.0562331676483154, -0.8820402026176453, 0.06150989979505539, 0.18553610146045685, 0.34937381744384766, 3.2087481021881104, 0.7375370860099792, -0.6243971586227417, 1.7522810697555542, 0.7665547132492065, -0.5559149980545044, -1.0942614078521729, 1.6777667999267578, 0.4325798451900482, 0.2812284529209137, 0.053674403578042984, -0.6119025945663452, 1.278619647026062, -0.9516031742095947, 0.124305360019207, 0.16897691786289215, -0.6271352767944336, -2.0621895790100098, -1.397312045097351, -1.7178308963775635, 0.954767107963562, 0.07457634806632996, -1.2580336332321167, 1.2480978965759277, -1.3558216094970703, 1.821764349937439, -0.057126399129629135, 0.4422733187675476, -2.143340826034546, 0.4624302089214325, 0.752162754535675, -0.5881472229957581, 0.5810497999191284, -0.5650233626365662, -2.0774292945861816, -0.7291419506072998, 0.5323978662490845, -0.8803777098655701, -2.146145820617676, -1.056747317314148, 0.2965361177921295, -0.2553614675998688, 0.5605087876319885, -0.08183398842811584, 0.05324462056159973, 1.1689850091934204, -0.40181294083595276, 0.6971421241760254, -0.4108939468860626, -0.36760157346725464, -1.4310153722763062, -0.1490597426891327, -0.01966538466513157, 0.26635509729385376, 0.10344193130731583, 1.05459463596344, -0.32322362065315247, -0.7923369407653809, -1.9797143936157227, 1.1101782321929932, 3.04353666305542, -1.385427474975586, -1.3135228157043457, 0.03635149076581001, 0.25423574447631836, -0.14135898649692535, 1.857652187347412, -0.08658485114574432, 0.1591876745223999, 0.8985172510147095, 1.2844324111938477, 0.5929045081138611, 1.8224420547485352, 0.8993457555770874, 1.262180209159851, -0.5813214182853699, -0.03556876257061958, 0.41901230812072754, 1.0563015937805176, -0.2565647065639496, -1.6499115228652954, 0.16677124798297882, 2.3296728134155273, 0.3801999092102051, 0.20079900324344635, 0.6526461839675903, 0.4097708463668823, 0.46362489461898804, 1.040335774421692, 0.7664452791213989, 0.7513837814331055, 1.0715301036834717, 1.0559649467468262, 0.11416540294885635, 1.5058622360229492, 1.3810111284255981, -0.6663476228713989, -0.061775363981723785, 0.550917387008667, 0.9420648813247681, 1.1655118465423584, 0.7300769686698914, -1.5719231367111206, 1.9902445077896118, 1.7456088066101074, -1.9291681051254272, -0.9678418636322021, 0.8965063095092773, 0.33153995871543884, -0.17894437909126282, -0.25925517082214355, 2.012232780456543, 0.22030287981033325, 0.3344897925853729, -0.06665663421154022, -0.9181603789329529, -0.609544038772583, 0.3693462908267975, -0.06365567445755005, -0.8080865740776062, 0.681832492351532, -2.2821900844573975, -0.5253640413284302, 0.40308877825737, -0.17153847217559814, 0.20957191288471222, 0.6214549541473389, 0.4353879690170288, -0.7490849494934082, -1.4109268188476562, -1.0875262022018433, -0.7920700311660767, -0.24657945334911346, 0.7265740633010864, -0.9031838774681091, 1.0010286569595337, 1.469516396522522, -1.224576473236084, 0.5708562135696411, 0.18999847769737244, -0.834321916103363, 1.232110857963562, -0.771153450012207, -1.4236077070236206, 0.41406288743019104, 1.1608730554580688, 0.5360214710235596, 0.3286893665790558, -0.8205245137214661, 1.7165157794952393, -0.05442707613110542, 0.2084861546754837, -1.1877738237380981, -0.269782692193985, 1.023201584815979, 1.1228288412094116, 1.4212965965270996, 1.4346832036972046, 1.520171880722046, 0.5699544548988342, 0.36999544501304626, 1.6357426643371582, -0.7909392714500427, -0.45184212923049927, -0.5067768096923828, -0.07872138172388077, -1.4496660232543945, 1.1438319683074951, -1.2796266078948975, -1.5999116897583008, -0.11289539933204651, 0.8698132038116455, -0.3200831115245819, 2.893357038497925, -0.19932442903518677, 1.5171245336532593, 1.0329455137252808, 0.18296505510807037, -0.7352863550186157, -1.7431087493896484, -1.198135495185852, -0.7210139632225037, -0.34026187658309937, -0.4768986403942108, -1.5599262714385986, -0.8411157131195068, -0.09451394528150558, 0.15141811966896057, 0.21312542259693146, -0.433065265417099, -0.8749918937683105, -0.651347815990448, -0.27940234541893005, -1.1739068031311035, 1.6574664115905762, 1.1705423593521118, -0.20381079614162445, -0.8620293736457825, 0.17849944531917572, -0.1309962421655655, -0.06635499745607376, 0.5584856271743774, 0.3518405556678772, 0.16574594378471375, 0.5415661931037903, -0.6561356782913208, 0.2260778397321701, -0.07345189899206161, 1.2277889251708984, 0.24856992065906525, -1.3412994146347046, -0.9503903985023499, 1.1827834844589233, -0.46260493993759155, 0.1369011551141739, -0.9077197313308716, 0.4978584945201874, 0.5847278237342834, -1.632481575012207, -0.6598922610282898, -1.6740829944610596, -0.6150687336921692, 0.6557024121284485, -0.07936911284923553, -0.552908718585968, -0.9892106652259827, 0.9812273979187012, 0.07639563828706741, -0.8010403513908386, 0.27347153425216675, -0.15009059011936188, -1.4523080587387085, -0.07486839592456818, -0.28565824031829834, 1.8366315364837646, -0.22224673628807068, -1.6516867876052856, -0.6136110424995422, -1.7526131868362427, 1.0296541452407837, -2.6191084384918213, 1.4943137168884277, -0.6717782020568848, -0.6741796135902405, 0.23397719860076904, 1.568781852722168, 0.3830257058143616, 0.851130485534668, 0.9453455805778503, 0.2696048617362976, -0.9413750767707825, -0.7271217107772827, 0.06483932584524155, -0.26592525839805603, 0.3213723301887512, 1.1274080276489258, 1.9930366277694702, 0.9520010948181152, 0.16344241797924042, 0.26821139454841614, 0.17636346817016602, -2.4344234466552734, 0.438475638628006, 0.46122100949287415, -0.2464216649532318, -0.03368902951478958, -0.09524711966514587, -0.6845258474349976, -1.8008488416671753, 0.027363626286387444, -0.05142863094806671, -0.31460216641426086, 1.7414032220840454, 0.4834807515144348, -1.5926607847213745, 0.2446189671754837, 1.03074049949646, -0.2795572578907013, 1.6281101703643799, 0.5359598398208618, 0.2089720517396927, -0.23324744403362274, 1.1658010482788086, -1.0999927520751953, 0.7238820195198059, 1.0717506408691406, 0.9038791656494141, -0.3326427638530731, 0.4456542134284973, 1.3680264949798584, -0.5733883380889893, 0.33668598532676697, 0.4970921277999878, 0.1756891906261444, 0.4070575535297394, 0.6915193200111389, 0.6669098734855652, 0.07806559652090073, 0.8075679540634155, -1.849433422088623, 0.6685050129890442, -0.7180123925209045, -0.34695327281951904, -0.128091961145401, -0.015219738706946373, -0.49534928798675537, 1.2606303691864014, -0.03249938413500786, 1.6293002367019653, 1.0060580968856812, 1.3539652824401855, -0.40068480372428894, 1.3386495113372803, 1.7990199327468872, -0.802833080291748, -1.1658308506011963, -0.7820560336112976, -2.3089613914489746, -0.5077939033508301, 0.2004242092370987, 0.17067937552928925, 0.6115558743476868, -1.0393928289413452, -0.38798874616622925, -0.16108348965644836, 0.7898923754692078, -0.962670087814331, -0.1862412691116333, -1.0549288988113403, 0.5995920896530151, -0.938517153263092, 0.5259462594985962, 0.3807844817638397, 2.651855230331421, 0.09960519522428513, 1.3503247499465942, -0.19240659475326538, -0.75394606590271, 0.285812109708786, -0.11540208011865616, 0.43207594752311707, -0.13837949931621552, -1.536606788635254, 0.6673706769943237, -0.59361732006073, -1.4771851301193237, 0.8205781579017639, 0.2336505651473999, -1.1148755550384521, 0.4742351174354553, 1.1457669734954834, 2.490429639816284, -0.3753603994846344, 0.13551126420497894, 0.1398126184940338, 1.1118279695510864, 0.11619178205728531, 1.8458610773086548, -0.23935121297836304, -0.6072287559509277, -0.07109078019857407, 0.22534780204296112, -0.05811356008052826, 0.5973913669586182, -0.4311007261276245, 0.022301940247416496, 0.6676008105278015, -1.6821478605270386, -0.7665646076202393, 1.6910650730133057, 0.37747061252593994, 1.0989786386489868, -0.583259642124176, 1.0724403858184814, 1.175041913986206, 0.6864207983016968, -0.5441349148750305, 0.6932852864265442, -0.2784120440483093, 0.9199330806732178, -0.4061901867389679, -0.8101710081100464, 0.29896318912506104, -0.043411292135715485, -0.395477294921875, -0.8095257878303528, -0.2069314569234848, -0.22658586502075195, 0.09924570471048355, -0.7709025740623474, 0.8609511256217957, 2.9371178150177, 0.16259081661701202, 0.2234223186969757, -0.7606998085975647, -0.20105332136154175, 0.33312729001045227, 0.8715591430664062, 0.15149787068367004, 0.6961390376091003, -0.9113983511924744, 2.0002708435058594, -3.5687646865844727, 0.23725998401641846, 0.48188135027885437, 0.5173558592796326, 1.7237406969070435, 1.1538219451904297, 1.5232182741165161, -0.9349535703659058, -0.1820768117904663, 0.0670090839266777, -1.4387613534927368, -0.5242705941200256 ] } ], "layout": { "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "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" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "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" } ], "heatmapgl": [ { "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": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "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" } ], "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" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "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" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "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": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } } } }, "text/html": [ "