{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Prepare Power Flow Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook presents the process of data preparation for building power flow cases. The process is separated into stages (see, [DVC config](../dvc.yaml)):\n", " - \"parse\" --- extract necessary parameters from the raw data\n", " - \"transform\" --- combine and convert data to use in further steps\n", " - \"prepare\" --- compose the final dataset\n", " - \"build\" --- create power flow cases.\n", "\n", "The presented pipeline processes mainly a dataset described [in the paper \"An Extended IEEE 118-Bus Test System With High Renewable Penetration\"](https://ieeexplore.ieee.org/document/7904729) (aka \"NREL-118\") which was downloaded and saved [here](../data/raw/nrel118). Since the NREL-118 dataset is mostly intended for DC OPF tasks, it skips a lot of information that is not necessary to solve these kind of tasks. Thus, to append the data with missing info, the information about the IEEE-118 test system prepared by Illinois Institute of Technology (version of 2004) is also used as the primary source of NREL-118 (see the JEAS-118 dataset files [here](../data/raw/jeas118) which were downloaded from [the IIT index](http://motor.ece.iit.edu/data/)).\n", "\n", "The following sections describe all the stages of data processing and all the decisions made when preparing the final dataset." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "from definitions import S_BASE_MVA, F_HZ\n", "from src.data import parse_jeas118_buses\n", "from src.data import parse_jeas118_lines\n", "from src.data import parse_jeas118_loads\n", "from src.data import parse_jeas118_trafos\n", "from src.data import parse_nrel118_buses\n", "from src.data import parse_nrel118_escalators_ts\n", "from src.data import parse_nrel118_gens\n", "from src.data import parse_nrel118_hydros_nondisp_ts\n", "from src.data import parse_nrel118_hydros_ts\n", "from src.data import parse_nrel118_lines\n", "from src.data import parse_nrel118_loads_ts\n", "from src.data import parse_nrel118_outages_ts\n", "from src.data import parse_nrel118_solars_ts\n", "from src.data import parse_nrel118_winds_ts\n", "from src.data import prepare_branches\n", "from src.data import prepare_buses\n", "from src.data import prepare_gens\n", "from src.data import prepare_gens_ts\n", "from src.data import prepare_loads\n", "from src.data import prepare_loads_ts\n", "from src.data import transform_gens_escalated_ts\n", "from src.data import transform_loads\n", "from src.data import transform_outages_ts\n", "from src.data import transform_gens\n", "from src.data import transform_gens_ts\n", "from src.power_flow.builders import PandaPowerFlowBuilder\n", "import pandapower.plotting.plotly as pplotly\n", "\n", "\n", "PATH_NREL118 = os.path.join(\"..\", \"data\", \"raw\", \"nrel118\")\n", "PATH_JEAS118 = os.path.join(\"..\", \"data\", \"raw\", \"jeas118\")\n", "PATH_MANUAL = os.path.join(\"..\", \"data\", \"raw\", \"manual\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parsing, transforming, and preparing raw data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Buses" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To build a power flow case, the following information about buses will be used:\n", "- name\n", "- region\n", "- rated voltage level\n", "- if the bus is in service or out of service\n", "- if the bus is a slack bus\n", "- bus coordinates for plots\n", "- min and max limits of the bus voltage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's load and parse bus data of the NREL-118 power system:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": " bus_name region load_participation_factor\n0 bus_001 r1 0.047169\n1 bus_002 r1 0.018496", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
bus_nameregionload_participation_factor
0bus_001r10.047169
1bus_002r10.018496
\n
" }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path_nrel118_buses = os.path.join(PATH_NREL118, \"additional-files-mti-118\", \"Buses.csv\")\n", "nrel118_buses = parse_nrel118_buses(raw_data=path_nrel118_buses)\n", "nrel118_buses.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The NREL-118 dataset contains only names and regions of buses (`load_participation_factor` is for load modelling, see [Section \"Loads\"](#loads)). To add missing values, it is assumed the following:\n", "- all buses are in service\n", "- bus \"bus_069\" is considered to be a slack bus\n", "- rated voltage level of buses 8, 9, 10, 26, 30, 38, 63, 64, 65, 68, 81, 116 equals to 345 kV, the rest of buses has the voltage level of 138 kV. This corresponds to the transformer data from the JEAS-118 dataset.\n", "\n", "Coordinates of buses were [added manually](../data/raw/manual/bus_coordinates.csv) after designing [the power system plot](../resources/plot/plot.jpg).\n", "\n", "Bus voltage limits are taken from the JEAS-118 data:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": " bus_name max_v_pu min_v_pu\n0 bus_001 1.05 0.94\n1 bus_002 1.06 0.95", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
bus_namemax_v_pumin_v_pu
0bus_0011.050.94
1bus_0021.060.95
\n
" }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path_jeas_118_buses = os.path.join(PATH_JEAS118, \"JEAS_IEEE118.docx\")\n", "jeas118_buses = parse_jeas118_buses(path_jeas_118_buses)\n", "jeas118_buses.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a temporary assumption, bus voltage limits are set to 0.8 and 1.2 for `min_v_pu` and `max_v_pu` correspondingly (see, [this script](../src/data/prepare/buses.py) for details) to achieve the convergence of the OPF estimation. Thus, the final bus data look as follows:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": " bus_name region in_service v_rated_kv is_slack min_v_pu max_v_pu \\\n0 bus_001 r1 True 138 False 0.8 1.2 \n1 bus_002 r1 True 138 False 0.8 1.2 \n\n x_coordinate y_coordinate \n0 626.0 -324.0 \n1 678.0 -324.0 ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
bus_nameregionin_servicev_rated_kvis_slackmin_v_pumax_v_pux_coordinatey_coordinate
0bus_001r1True138False0.81.2626.0-324.0
1bus_002r1True138False0.81.2678.0-324.0
\n
" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path_bus_coordinates = os.path.join(PATH_MANUAL, \"bus_coordinates.csv\")\n", "buses = prepare_buses(\n", " parsed_nrel118_buses=nrel118_buses,\n", " parsed_jeas118_buses=jeas118_buses,\n", " bus_coordinates=path_bus_coordinates,\n", ")\n", "buses.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Branches" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Branches is a common term both for lines and transformers. The following parameters about branches will be used to build power flow cases:\n", "- name\n", "- start and end buses of the branch\n", "- number of parallel branch systems\n", "- resistance\n", "- reactance\n", "- active conductance\n", "- in service or out of service\n", "- maximum thermal current\n", "- transformation ratio if the branch is a transformer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's load and parse line data of the NREL-118 power system:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": " branch_number from_bus to_bus max_p_mw x_pu r_pu\n0 1 bus_001 bus_002 600.0 0.0999 0.0303\n1 2 bus_001 bus_003 600.0 0.0424 0.0129", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
branch_numberfrom_busto_busmax_p_mwx_pur_pu
01bus_001bus_002600.00.09990.0303
12bus_001bus_003600.00.04240.0129
\n
" }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path_nrel118_lines = os.path.join(PATH_NREL118, \"additional-files-mti-118\", \"Lines.csv\")\n", "nrel118_lines = parse_nrel118_lines(raw_data=path_nrel118_lines)\n", "nrel118_lines.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the information about active conductance is skipped in the NREL-118 dataset, let's load it from the JEAS-118 dataset:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": " from_bus to_bus parallel b_pu\n0 bus_001 bus_002 1 0.02540\n1 bus_001 bus_003 1 0.01082", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
from_busto_busparallelb_pu
0bus_001bus_00210.02540
1bus_001bus_00310.01082
\n
" }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path_jeas118_lines = os.path.join(PATH_JEAS118, \"JEAS_IEEE118.docx\")\n", "jeas118_lines = parse_jeas118_lines(raw_data=path_jeas118_lines)\n", "jeas118_lines.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the NREL-118 dataset, transformers are presented as lines without values of transformation ratio. Therefore, these values will be loaded from JEAS-118 dataset:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": " from_bus to_bus parallel trafo_ratio_rel\n0 bus_008 bus_005 1 0.985\n1 bus_026 bus_025 1 0.960", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
from_busto_busparalleltrafo_ratio_rel
0bus_008bus_00510.985
1bus_026bus_02510.960
\n
" }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path_jeas118_trafos = os.path.join(PATH_JEAS118, \"JEAS_IEEE118.docx\")\n", "jeas118_trafos = parse_jeas118_trafos(raw_data=path_jeas118_trafos)\n", "jeas118_trafos.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus, the final branch data look as follows:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": " branch_name from_bus to_bus parallel in_service r_ohm \\\n0 branch_001_002_1 bus_001 bus_002 1 True 5.770332 \n1 branch_001_003_1 bus_001 bus_003 1 True 2.456676 \n\n x_ohm b_µs trafo_ratio_rel max_i_ka \n0 19.024956 133.375341 NaN 2.510219 \n1 8.074656 56.815795 NaN 2.510219 ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
branch_namefrom_busto_busparallelin_servicer_ohmx_ohmb_µstrafo_ratio_relmax_i_ka
0branch_001_002_1bus_001bus_0021True5.77033219.024956133.375341NaN2.510219
1branch_001_003_1bus_001bus_0031True2.4566768.07465656.815795NaN2.510219
\n
" }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "branches = prepare_branches(\n", " parsed_nrel118_lines=nrel118_lines,\n", " parsed_jeas118_lines=jeas118_lines,\n", " parsed_jeas118_trafos=jeas118_trafos,\n", " prepared_buses=buses,\n", ")\n", "branches.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is assumed that branches are always in service." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loads" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the list of used load variables:\n", "\n", "- name\n", "- bus where the load is located\n", "- active and reactive power of the load\n", "- if the load is in service" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The information about a part of the regional active load located in each bus is stored in variable `load_participation_factor` in the bus data of the NREL-118 dataset:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": " bus_name region load_participation_factor\n0 bus_001 r1 0.047169\n1 bus_002 r1 0.018496", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
bus_nameregionload_participation_factor
0bus_001r10.047169
1bus_002r10.018496
\n
" }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nrel118_buses.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Active load value of regions is stored in the time-series NREL-118 data:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": " datetime region_name region_load\n0 2024-01-01 00:00:00 r1 5698.083154\n1 2024-01-01 00:00:00 r2 1967.417090", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimeregion_nameregion_load
02024-01-01 00:00:00r15698.083154
12024-01-01 00:00:00r21967.417090
\n
" }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path_nrel118_loads_ts = os.path.join(PATH_NREL118, \"Input files\", \"RT\", \"Load\")\n", "nrel118_loads_ts = parse_nrel118_loads_ts(raw_data=path_nrel118_loads_ts)\n", "nrel118_loads_ts.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To calculate reactive power of loads, let's get the JEAS-118 data:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": " bus_name p_mw q_mvar\n0 bus_001 54.14 8.66\n1 bus_002 21.23 9.55", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
bus_namep_mwq_mvar
0bus_00154.148.66
1bus_00221.239.55
\n
" }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path_jeas118_loads = os.path.join(PATH_JEAS118, \"JEAS_IEEE118.docx\")\n", "jeas118_loads = parse_jeas118_loads(raw_data=path_jeas118_loads)\n", "jeas118_loads.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The JEAS-118 load data will help to estimate the power factor of each load and define its reactive power at each moment of time using time-series data of active demand:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": " load_name bus_name region load_participation_factor load_power_factor\n0 load_001 bus_001 r1 0.047169 0.987447\n1 load_002 bus_002 r1 0.018496 0.911978", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
load_namebus_nameregionload_participation_factorload_power_factor
0load_001bus_001r10.0471690.987447
1load_002bus_002r10.0184960.911978
\n
" }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transformed_loads = transform_loads(\n", " parsed_nrel118_buses=nrel118_buses, parsed_jeas118_loads=jeas118_loads\n", ")\n", "transformed_loads.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus, it is necessary to prepare two files with the load data. The first file will contain the load power variation over time, the other will contain basic load information (location, etc.). The final load dataset is built with the following assumptions:\n", "1. Loads are always in service.\n", "2. Demand of region R1 was reduced by 35% to achieve the convergence of the OPF estimations." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": " load_name bus_name\n0 load_001 bus_001\n1 load_002 bus_002", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
load_namebus_name
0load_001bus_001
1load_002bus_002
\n
" }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "loads = prepare_loads(transformed_loads=transformed_loads)\n", "loads.head(2)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": " datetime load_name in_service p_mw q_mvar\n0 2024-01-01 load_001 True 174.701149 27.944439\n1 2024-01-01 load_002 True 68.505820 30.816325", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimeload_namein_servicep_mwq_mvar
02024-01-01load_001True174.70114927.944439
12024-01-01load_002True68.50582030.816325
\n
" }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "loads_ts = prepare_loads_ts(\n", " transformed_loads=transformed_loads, parsed_nrel118_loads_ts=nrel118_loads_ts\n", ")\n", "loads_ts.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Generators\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To build power flow cases, the following information about generators is used:\n", "- name\n", "- bus where the generator is located\n", "- active power of the generator\n", "- if the generator is in service\n", "- whether the output of this generator is optimized at the OPF stage\n", "- max and min limits of reactive power output\n", "- max and min limit of active power output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start from parsing generator data from the NREL-118 dataset:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": " gen_name bus_name opt_category max_p_mw min_p_mw\n0 biomass_001 bus_012 day_ahead 3.0 0.9\n1 biomass_002 bus_012 day_ahead 3.0 0.9", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
gen_namebus_nameopt_categorymax_p_mwmin_p_mw
0biomass_001bus_012day_ahead3.00.9
1biomass_002bus_012day_ahead3.00.9
\n
" }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path_nrel118_gens = os.path.join(\n", " PATH_NREL118, \"additional-files-mti-118\", \"Generators.csv\"\n", ")\n", "nrel118_gens = parse_nrel118_gens(raw_data=path_nrel118_gens)\n", "nrel118_gens.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, time-series data from the NREL-118 dataset are parsed:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": " datetime gen_name p_mw\n0 2024-01-01 00:00:00 hydro_016 0.17696\n1 2024-01-01 00:00:00 hydro_017 0.29862", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimegen_namep_mw
02024-01-01 00:00:00hydro_0160.17696
12024-01-01 00:00:00hydro_0170.29862
\n
" }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Hydro gens\n", "path_nrel118_hydros_ts = os.path.join(PATH_NREL118, \"Input files\", \"Hydro\")\n", "nrel118_hydros_ts = parse_nrel118_hydros_ts(raw_data=path_nrel118_hydros_ts)\n", "nrel118_hydros_ts.head(2)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": " datetime gen_name p_mw\n0 2024-01-01 00:00:00 solar_001 0.0\n1 2024-01-01 00:00:00 solar_002 0.0", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimegen_namep_mw
02024-01-01 00:00:00solar_0010.0
12024-01-01 00:00:00solar_0020.0
\n
" }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solar gens\n", "path_nrel118_solars_ts = os.path.join(PATH_NREL118, \"Input files\", \"RT\", \"Solar\")\n", "nrel118_solars_ts = parse_nrel118_solars_ts(raw_data=path_nrel118_solars_ts)\n", "nrel118_solars_ts.head(2)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": " datetime gen_name p_mw\n0 2024-01-01 00:00:00 wind_001 0.458135\n1 2024-01-01 00:00:00 wind_002 3.724274", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimegen_namep_mw
02024-01-01 00:00:00wind_0010.458135
12024-01-01 00:00:00wind_0023.724274
\n
" }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Wind gens\n", "path_nrel118_winds_ts = os.path.join(PATH_NREL118, \"Input files\", \"RT\", \"Wind\")\n", "nrel118_winds_ts = parse_nrel118_winds_ts(raw_data=path_nrel118_winds_ts)\n", "nrel118_winds_ts.head(2)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": " datetime gen_name p_mw\n0 2024-01-01 00:00:00 hydro_036 0.51\n1 2024-01-01 00:00:00 hydro_037 2.23", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimegen_namep_mw
02024-01-01 00:00:00hydro_0360.51
12024-01-01 00:00:00hydro_0372.23
\n
" }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Non-dispatchable hydro gens\n", "path_nrel118_hydros_nondisp_ts = os.path.join(\n", " PATH_NREL118,\n", " \"additional-files-mti-118\",\n", " \"Hydro_nondipatchable.csv\",\n", ")\n", "nrel118_hydros_nondisp_ts = parse_nrel118_hydros_nondisp_ts(\n", " raw_data=path_nrel118_hydros_nondisp_ts\n", ")\n", "nrel118_hydros_nondisp_ts.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Escalators used to adjust generation profile to seasons or other time for all the generators, except wind, solar, and hydro:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": " datetime gen_name escalator_ratio\n0 2024-01-01 00:00:00 biomass_001 0.35\n1 2024-01-01 00:00:00 biomass_002 0.35", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimegen_nameescalator_ratio
02024-01-01 00:00:00biomass_0010.35
12024-01-01 00:00:00biomass_0020.35
\n
" }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Escalators data\n", "path_nrel118_escalators_ts = os.path.join(\n", " PATH_NREL118, \"additional-files-mti-118\", \"Escalators.csv\"\n", ")\n", "nrel118_escalators_ts = parse_nrel118_escalators_ts(raw_data=path_nrel118_escalators_ts)\n", "nrel118_escalators_ts.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": " datetime gen_name in_outage\n0 2024-01-01 00:00:00 PSH_001 False\n1 2024-01-01 00:00:00 PSH_002 False", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimegen_namein_outage
02024-01-01 00:00:00PSH_001False
12024-01-01 00:00:00PSH_002False
\n
" }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Outages\n", "path_nrel118_outages_ts = os.path.join(\n", " PATH_NREL118, \"Input files\", \"Others\", \"GenOut.csv\"\n", ")\n", "nrel118_outages_ts = parse_nrel118_outages_ts(raw_data=path_nrel118_outages_ts)\n", "nrel118_outages_ts.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, some intermediate calculations are performed with the following assumptions:\n", "1. Range of reactive generator output set from -0.3 to 0.7 of the max active output (see [this script](../src/data/prepare/gens_ts.py) for details).\n", "2. Min limit of active output of optimized gens is set to zero (see [this script](../src/data/prepare/gens_ts.py) for details) to achieve the convergence of the OPF estimation.\n", "3. Information about outages of some generators is missed. Therefore, such generators are considered to be always in service (see [this script](../src/data/transform/outages_ts.py) for details).\n", "4. Unknown generators in the outage data are dropped (see [this script](../src/data/transform/outages_ts.py) for details).\n", "5. Duplicated generator outages are considered to be typos, as a result of which the state of generator \"internal_combustion_gas_001\" was attributed to other generators (see [this script](../src/data/transform/outages_ts.py) for details)." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "transformed_gens = transform_gens(\n", " parsed_nrel118_gens=nrel118_gens,\n", " prepared_buses=buses,\n", ")\n", "transformed_outages_ts = transform_outages_ts(\n", " parsed_nrel118_outages_ts=nrel118_outages_ts\n", ")\n", "transformed_gens_escalated_ts = transform_gens_escalated_ts(\n", " transformed_gens=transformed_gens,\n", " parsed_nrel118_escalators_ts=nrel118_escalators_ts,\n", ")\n", "transformed_gens_ts = transform_gens_ts(\n", " transformed_gens=transformed_gens,\n", " parsed_nrel118_winds_ts=nrel118_winds_ts,\n", " parsed_nrel118_solars_ts=nrel118_solars_ts,\n", " parsed_nrel118_hydros_ts=nrel118_hydros_ts,\n", " parsed_nrel118_hydros_nondisp_ts=nrel118_hydros_nondisp_ts,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, let's concat all datasets to build two files with generation data --- general generation info (location, etc.), time-series data (active output, whether the gen is in service, etc.):" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": " datetime gen_name in_service p_mw max_q_mvar min_q_mvar max_p_mw \\\n0 2024-01-01 biomass_001 True NaN 0.735 -0.315 1.05 \n1 2024-01-01 biomass_002 True NaN 0.735 -0.315 1.05 \n\n min_p_mw \n0 0.0 \n1 0.0 ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimegen_namein_servicep_mwmax_q_mvarmin_q_mvarmax_p_mwmin_p_mw
02024-01-01biomass_001TrueNaN0.735-0.3151.050.0
12024-01-01biomass_002TrueNaN0.735-0.3151.050.0
\n
" }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gens_ts = prepare_gens_ts(\n", " transformed_gens=transformed_gens,\n", " transformed_gens_ts=transformed_gens_ts,\n", " transformed_outages_ts=transformed_outages_ts,\n", " transformed_gens_escalated_ts=transformed_gens_escalated_ts,\n", ")\n", "gens_ts.head(2)" ] }, { "cell_type": "code", "execution_count": 24, "outputs": [ { "data": { "text/plain": " gen_name bus_name opt_category max_p_mw min_p_mw\n0 biomass_001 bus_012 day_ahead 1.1199 0.0\n1 biomass_002 bus_012 day_ahead 1.1199 0.0", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
gen_namebus_nameopt_categorymax_p_mwmin_p_mw
0biomass_001bus_012day_ahead1.11990.0
1biomass_002bus_012day_ahead1.11990.0
\n
" }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gens = prepare_gens(transformed_gens=transformed_gens, prepared_gens_ts=gens_ts)\n", "gens.head(2)" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Building power flow cases" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After data preparation stages, there are still several parameters that are not defined but are needed to perform the power flow calculation:\n", "- set voltage of generators\n", "- set voltage of the slack bus\n", "\n", "To calculate these parameters, the task of optimal power flow (OPF) is solved using [the PandaPower engine](https://www.pandapower.org/). Since electricity prices are not used here for simplicity, the goal of the optimization is to minimize the total power generation.\n", "\n", "Thus, the solver tries to tune active / reactive outputs of optimized generators (`p_mw` and `q_mvar`) and active / reactive injection of the slack bus (`p_mw` and `q_mvar`) with the following constraints:\n", "- active output of generators must be in possible limits: `min_p_mw` <= `p_mw` <= `max_p_mw`\n", "- reactive output of generators must be in possible limits: `min_q_mvar` <= `q_mvar` <= `max_q_mvar`\n", "- bus voltages must be in acceptable ranges: `min_v_pu` <= `v_pu` <= `max_v_pu` (`v_pu` --- actual bus voltage in per units)\n", "- loading of lines and transformers must not exceed 100% (calculated according to `max_i_ka` of each branch)\n", "- slack bus injections are considered unlimited.\n", "\n", "Optimized generators can be set in PandaPower with the property `controllable`. A controllable generator can change active and reactive outputs along with its voltage, while a non-controllable generator can only tune its reactive output in order to keep the set voltage level (see, [the docs](https://pandapower.readthedocs.io/en/v2.10.1/elements/gen.html)). More details about the OPF solver used can be found [in the PandaPower documentation](https://pandapower.readthedocs.io/en/v2.10.1/opf/formulation.html#).\n", "\n", "Since generation voltage levels are unknown after the data preparation described above, all generators are considered controllable with the following assumptions:\n", "- generators that should be optimized have active power limits (used in the OPF) equal to their rated limits (`min_p_mw` and `max_p_mw`)\n", "- generators that should not be optimized have active power limits (used in the OPF) equal to their actual output (`p_mw` and `p_mw`).\n", "In such a way, during the OPF, all generators can adjust their voltages and reactive power, but the active outputs are only adjusted in those generators that are intended for optimization.\n", "\n", "After the OPF, found values of generator outputs and voltages are used to estimate power flows just to ensure the power system is stable." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "# Create the builder\n", "builder = PandaPowerFlowBuilder(f_hz=F_HZ, s_base_mva=S_BASE_MVA)\n", "\n", "# Load data\n", "builder.load_data(\n", " buses=buses,\n", " branches=branches,\n", " loads=loads,\n", " loads_ts=loads_ts,\n", " gens=gens,\n", " gens_ts=gens_ts,\n", ")\n", "\n", "# Build power flow case for the first timestamp\n", "timestamp = builder.timestamps[0]\n", "sample = builder.run(timestamp)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": "This pandapower network includes the following parameter tables:\n - bus (118 elements)\n - load (91 elements)\n - gen (321 elements)\n - ext_grid (1 element)\n - line (177 elements)\n - trafo (9 elements)\n - bus_geodata (118 elements)\n and the following results tables:\n - res_bus (118 elements)\n - res_line (177 elements)\n - res_trafo (9 elements)\n - res_ext_grid (1 element)\n - res_load (91 elements)\n - res_gen (321 elements)" }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Show the sample structure\n", "sample" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If the power flow calculation is successful, the sample contains tables \"res_*\" with the results of the calculation. The description of result tables is written in the documentation of each element (for example, [description of \"res_bus\"](https://pandapower.readthedocs.io/en/v2.10.0/elements/bus.html#result-parameters))." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": " vm_pu va_degree p_mw q_mvar\n0 1.114680 -9.605718 174.701149 27.944439\n1 1.148707 -5.777126 68.505820 30.816325\n2 1.131708 -8.039705 133.591197 34.269047\n3 1.197012 -2.646202 -23.409049 -35.890231\n4 1.196556 -2.539347 0.000000 0.000000", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
vm_puva_degreep_mwq_mvar
01.114680-9.605718174.70114927.944439
11.148707-5.77712668.50582030.816325
21.131708-8.039705133.59119734.269047
31.197012-2.646202-23.409049-35.890231
41.196556-2.5393470.0000000.000000
\n
" }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Show res_bus table\n", "sample.res_bus.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below is a power system plot that displays bus voltage levels and branch loadings. Plots can be customized to display other parameters or some additional annotations." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": " \n " }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "hoverinfo": "text", "marker": { "cmax": 1.1, "cmin": 0.9, "color": [ 1.1146797540554176, 1.1487070066950764, 1.1317083314691416, 1.1970121837420615, 1.1965561900900135, 1.1948593162099916, 1.1943142663273925, 1.1911460751008143, 1.1999962662876607, 1.1654649874210017, 1.1742883318920676, 1.1999996028102446, 1.1276343213082618, 1.1827682272161522, 1.1653435900969986, 1.171746601304341, 1.193596305077268, 1.1882362621645337, 1.171177388998311, 1.1264839633951957, 1.1104058633437812, 1.1232415318256823, 1.1794906788256618, 1.1999968731719528, 1.199999574457736, 1.198098180115353, 1.144938715276102, 1.1195947158400366, 1.1213089808050793, 1.1764555577472846, 1.1333567540005023, 1.166253376038846, 1.1728200196117489, 1.1930275944444406, 1.1894445465294687, 1.1887720767296408, 1.1999994672453334, 1.157810180941566, 1.1868366840663434, 1.18832735040275, 1.18361959031548, 1.193050078859405, 1.1789126645131502, 1.1691698588307518, 1.1713540493784371, 1.1999999390737723, 1.1983594435365377, 1.1939028337892799, 1.1985949475787223, 1.194277246712376, 1.1853210406660803, 1.1820515237225229, 1.1837791012328094, 1.1976786479575343, 1.1977030447470025, 1.1977537787582435, 1.194535620827262, 1.1888807085499895, 1.196557014433531, 1.1925041963137268, 1.1934444802675028, 1.194284575236625, 1.1630656479221235, 1.1689621161011494, 1.1605801416326076, 1.1981482042005933, 1.1917286686601718, 1.1557578016850445, 1.1999975119126634, 1.1978274738202705, 1.1995462006570883, 1.1999890217141078, 1.1998670507454885, 1.1634375475360041, 1.169792433872119, 1.1999926460023684, 1.1999994357224044, 1.192244106885773, 1.1877586259117203, 1.1996052359328668, 1.1475028980718733, 1.1672599193128936, 1.1552168844362936, 1.152210885959096, 1.1717087015027734, 1.15524261826324, 1.1999937870412656, 1.164752323879363, 1.1999988587609296, 1.1749648284286967, 1.199447552817939, 1.1999973417309735, 1.158920286689642, 1.1447834813256286, 1.1121672451343083, 1.141294389956339, 1.1650652275837043, 1.1932685999608827, 1.1999204516885758, 1.1999991551805669, 1.1597475539080788, 1.1831757985268174, 1.1920385610524333, 1.1800220493101514, 1.1825013533131687, 1.1623825822730554, 1.199989332777151, 1.177840023062336, 1.1768824844402381, 1.1856666380025036, 1.1999917722829425, 1.1940964489921682, 1.1999995817401974, 1.141535041021453, 1.1387802013330162, 1.1568683883359423, 1.1473681671403733, 1.178137594299918 ], "colorbar": { "thickness": 10, "title": { "side": "right", "text": "Bus voltage, pu" }, "x": 1.0 }, "colorscale": [ [ 0.0, "rgb(5,48,97)" ], [ 0.1, "rgb(33,102,172)" ], [ 0.2, "rgb(67,147,195)" ], [ 0.3, "rgb(146,197,222)" ], [ 0.4, "rgb(209,229,240)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(253,219,199)" ], [ 0.7, "rgb(244,165,130)" ], [ 0.8, "rgb(214,96,77)" ], [ 0.9, "rgb(178,24,43)" ], [ 1.0, "rgb(103,0,31)" ] ], "size": 10, "symbol": "circle" }, "mode": "markers", "name": "buses", "text": [ "bus_001", "bus_002", "bus_003", "bus_004", "bus_005", "bus_006", "bus_007", "bus_008", "bus_009", "bus_010", "bus_011", "bus_012", "bus_013", "bus_014", "bus_015", "bus_016", "bus_017", "bus_018", "bus_019", "bus_020", "bus_021", "bus_022", "bus_023", "bus_024", "bus_025", "bus_026", "bus_027", "bus_028", "bus_029", "bus_030", "bus_031", "bus_032", "bus_033", "bus_034", "bus_035", "bus_036", "bus_037", "bus_038", "bus_039", "bus_040", "bus_041", "bus_042", "bus_043", "bus_044", "bus_045", "bus_046", "bus_047", "bus_048", "bus_049", "bus_050", "bus_051", "bus_052", "bus_053", "bus_054", "bus_055", "bus_056", "bus_057", "bus_058", "bus_059", "bus_060", "bus_061", "bus_062", "bus_063", "bus_064", "bus_065", "bus_066", "bus_067", "bus_068", "bus_069", "bus_070", "bus_071", "bus_072", "bus_073", "bus_074", "bus_075", "bus_076", "bus_077", "bus_078", "bus_079", "bus_080", "bus_081", "bus_082", "bus_083", "bus_084", "bus_085", "bus_086", "bus_087", "bus_088", "bus_089", "bus_090", "bus_091", "bus_092", "bus_093", "bus_094", "bus_095", "bus_096", "bus_097", "bus_098", "bus_099", "bus_100", "bus_101", "bus_102", "bus_103", "bus_104", "bus_105", "bus_106", "bus_107", "bus_108", "bus_109", "bus_110", "bus_111", "bus_112", "bus_113", "bus_114", "bus_115", "bus_116", "bus_117", "bus_118" ], "x": [ 626.0, 678.0, 574.0, 522.0, 418.0, 626.0, 678.0, 350.0, 298.0, 246.0, 574.0, 730.0, 678.0, 782.0, 902.0, 782.0, 834.0, 902.0, 986.0, 778.0, 726.0, 674.0, 570.0, 622.0, 258.0, 190.0, 310.0, 362.0, 414.0, 902.0, 466.0, 518.0, 1198.0, 1198.0, 1302.0, 1250.0, 1354.0, 1286.0, 1406.0, 1458.0, 1510.0, 1562.0, 1458.0, 1510.0, 1562.0, 1614.0, 1666.0, 1666.0, 1718.0, 1842.0, 1790.0, 1842.0, 1894.0, 1946.0, 2118.0, 1946.0, 1894.0, 1894.0, 2140.0, 2066.0, 2066.0, 1946.0, 1998.0, 1946.0, 1774.0, 1842.0, 1894.0, 1674.0, 1606.0, 874.0, 726.0, 674.0, 778.0, 974.0, 1026.0, 1388.0, 1500.0, 1580.0, 1580.0, 1620.0, 1724.0, 1420.0, 1388.0, 1372.0, 1326.0, 1274.0, 1222.0, 1426.0, 1478.0, 1578.0, 1630.0, 1604.0, 1564.0, 1556.0, 1564.0, 1540.0, 1548.0, 1676.0, 1740.0, 1724.0, 1644.0, 1644.0, 1812.0, 1828.0, 1900.0, 1834.0, 1998.0, 1948.0, 1948.0, 1916.0, 1884.0, 1948.0, 622.0, 414.0, 362.0, 1842.0, 782.0, 1356.0 ], "y": [ -324.0, -324.0, -308.0, -212.0, -244.0, -244.0, -260.0, -340.0, -324.0, -324.0, -180.0, -260.0, -164.0, -260.0, -244.0, -324.0, -324.0, -388.0, -364.0, -548.0, -548.0, -548.0, -556.0, -596.0, -540.0, -526.0, -484.0, -452.0, -452.0, -484.0, -436.0, -500.0, -388.0, -276.0, -324.0, -324.0, -364.0, -452.0, -324.0, -356.0, -324.0, -356.0, -228.0, -228.0, -212.0, -260.0, -308.0, -228.0, -308.0, -356.0, -284.0, -260.0, -260.0, -212.0, -244.0, -372.0, -356.0, -308.0, -450.0, -516.0, -612.0, -548.0, -692.0, -668.0, -644.0, -564.0, -516.0, -692.0, -636.0, -628.0, -628.0, -628.0, -612.0, -660.0, -644.0, -794.0, -742.0, -794.0, -846.0, -898.0, -830.0, -1160.0, -1316.0, -1420.0, -1494.0, -1478.0, -1478.0, -1510.0, -1558.0, -1606.0, -1590.0, -1420.0, -1316.0, -1264.0, -1212.0, -1160.0, -950.0, -950.0, -950.0, -1264.0, -1316.0, -1368.0, -1572.0, -1480.0, -1420.0, -1354.0, -1354.0, -1480.0, -1572.0, -1632.0, -1704.0, -1704.0, -468.0, -516.0, -516.0, -708.0, -196.0, -742.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(78.08355,2.27001,161.59197)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": true, "text": "branch_001_002_1", "x": [ 626.0, 652.0, 678.0 ], "y": [ -324.0, -324.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(78.08355,2.27001,161.59197)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_001_003_1", "x": [ 626.0, 600.0, 574.0 ], "y": [ -324.0, -316.0, -308.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(121.72272,1.7799,168.18499500000001)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_002_012_1", "x": [ 678.0, 704.0, 730.0 ], "y": [ -324.0, -292.0, -260.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(103.403265,0.17289,167.529135)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_003_005_1", "x": [ 574.0, 496.0, 418.0 ], "y": [ -308.0, -276.0, -244.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(81.30828,1.93188,162.5982)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_003_012_1", "x": [ 574.0, 652.0, 730.0 ], "y": [ -308.0, -284.0, -260.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(24.576645000000003,6.417075,139.511265)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_004_005_1", "x": [ 522.0, 470.0, 418.0 ], "y": [ -212.0, -228.0, -244.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(58.135664999999996,4.081785,154.241085)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_004_011_1", "x": [ 522.0, 548.0, 574.0 ], "y": [ -212.0, -196.0, -180.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(33.757155,5.67579,143.62875)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_005_006_1", "x": [ 418.0, 522.0, 626.0 ], "y": [ -244.0, -244.0, -244.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(59.852325,3.95301,154.93596)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_005_011_1", "x": [ 418.0, 496.0, 574.0 ], "y": [ -244.0, -212.0, -180.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_006_007_1", "x": [ 626.0, 652.0, 678.0 ], "y": [ -244.0, -252.0, -260.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(64.929885,3.53991,156.931845)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_007_012_1", "x": [ 678.0, 704.0, 730.0 ], "y": [ -260.0, -260.0, -260.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(68.26426500000001,3.24258,158.18822999999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_008_009_1", "x": [ 350.0, 324.0, 298.0 ], "y": [ -340.0, -332.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(87.700875,1.272705,164.40105)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_008_030_1", "x": [ 350.0, 626.0, 902.0 ], "y": [ -340.0, -412.0, -484.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_009_010_1", "x": [ 298.0, 272.0, 246.0 ], "y": [ -324.0, -324.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(172.00311,37.591845,147.56544)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_011_012_1", "x": [ 574.0, 652.0, 730.0 ], "y": [ -180.0, -220.0, -260.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(103.403265,0.17289,167.529135)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_011_013_1", "x": [ 574.0, 626.0, 678.0 ], "y": [ -180.0, -172.0, -164.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(84.51363,1.596555,163.53558)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_012_014_1", "x": [ 730.0, 756.0, 782.0 ], "y": [ -260.0, -260.0, -260.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(79.698465,2.100945,162.1035)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_012_016_1", "x": [ 730.0, 756.0, 782.0 ], "y": [ -260.0, -292.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(68.26426500000001,3.24258,158.18822999999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_012_117_1", "x": [ 730.0, 756.0, 782.0 ], "y": [ -260.0, -228.0, -196.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(37.894785,5.39427,145.49331)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_013_015_1", "x": [ 678.0, 790.0, 902.0 ], "y": [ -164.0, -204.0, -244.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(56.405235000000005,4.206735,153.53116500000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_014_015_1", "x": [ 782.0, 842.0, 902.0 ], "y": [ -260.0, -252.0, -244.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(66.601665,3.3935400000000002,157.567305)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_015_017_1", "x": [ 902.0, 868.0, 834.0 ], "y": [ -244.0, -284.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(29.35662,6.00678,141.64434)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_015_019_1", "x": [ 902.0, 944.0, 986.0 ], "y": [ -244.0, -304.0, -364.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(45.63225,4.90926,148.93376999999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_015_033_1", "x": [ 902.0, 1050.0, 1198.0 ], "y": [ -244.0, -316.0, -388.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(31.595265,5.833889999999999,142.652865)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_016_017_1", "x": [ 782.0, 808.0, 834.0 ], "y": [ -324.0, -324.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(69.918705,3.087795,158.79411)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_017_018_1", "x": [ 834.0, 868.0, 902.0 ], "y": [ -324.0, -356.0, -388.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(126.193635,3.0574500000000002,167.75557500000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_017_031_1", "x": [ 834.0, 650.0, 466.0 ], "y": [ -324.0, -380.0, -436.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(149.019705,17.487645,161.36706)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_017_113_1", "x": [ 834.0, 728.0, 622.0 ], "y": [ -324.0, -396.0, -468.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(89.28825,1.1174099999999998,164.80599)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_018_019_1", "x": [ 902.0, 944.0, 986.0 ], "y": [ -388.0, -376.0, -364.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(66.601665,3.3935400000000002,157.567305)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_019_020_1", "x": [ 986.0, 882.0, 778.0 ], "y": [ -364.0, -456.0, -548.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(56.405235000000005,4.206735,153.53116500000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_019_034_1", "x": [ 986.0, 1092.0, 1198.0 ], "y": [ -364.0, -320.0, -276.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(33.757155,5.67579,143.62875)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_020_021_1", "x": [ 778.0, 752.0, 726.0 ], "y": [ -548.0, -548.0, -548.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_021_022_1", "x": [ 726.0, 700.0, 674.0 ], "y": [ -548.0, -548.0, -548.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(76.463025,2.438055,161.06412)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_022_023_1", "x": [ 674.0, 622.0, 570.0 ], "y": [ -548.0, -552.0, -556.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(98.731665,0.36567,166.815135)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_023_024_1", "x": [ 570.0, 596.0, 622.0 ], "y": [ -556.0, -576.0, -596.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(64.929885,3.53991,156.931845)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_023_025_1", "x": [ 570.0, 414.0, 258.0 ], "y": [ -556.0, -548.0, -540.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(146.27616,15.307139999999999,162.523995)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_023_032_1", "x": [ 570.0, 544.0, 518.0 ], "y": [ -556.0, -528.0, -500.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(24.576645000000003,6.417075,139.511265)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_024_070_1", "x": [ 622.0, 748.0, 874.0 ], "y": [ -596.0, -612.0, -628.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(37.894785,5.39427,145.49331)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_024_072_1", "x": [ 622.0, 648.0, 674.0 ], "y": [ -596.0, -612.0, -628.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(76.463025,2.438055,161.06412)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_025_027_1", "x": [ 258.0, 284.0, 310.0 ], "y": [ -540.0, -512.0, -484.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(68.26426500000001,3.24258,158.18822999999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_026_030_1", "x": [ 190.0, 546.0, 902.0 ], "y": [ -526.0, -505.0, -484.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(64.929885,3.53991,156.931845)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_027_028_1", "x": [ 310.0, 336.0, 362.0 ], "y": [ -484.0, -468.0, -452.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(41.837849999999996,5.143605,147.25689)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_027_032_1", "x": [ 310.0, 414.0, 518.0 ], "y": [ -484.0, -492.0, -500.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(45.63225,4.90926,148.93376999999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_027_115_1", "x": [ 310.0, 336.0, 362.0 ], "y": [ -484.0, -500.0, -516.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_028_029_1", "x": [ 362.0, 388.0, 414.0 ], "y": [ -452.0, -452.0, -452.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(71.56524,2.92944,159.38469)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_029_031_1", "x": [ 414.0, 440.0, 466.0 ], "y": [ -452.0, -444.0, -436.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(64.929885,3.53991,156.931845)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_030_038_1", "x": [ 902.0, 1094.0, 1286.0 ], "y": [ -484.0, -468.0, -452.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(58.135664999999996,4.081785,154.241085)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_031_032_1", "x": [ 466.0, 492.0, 518.0 ], "y": [ -436.0, -468.0, -500.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_032_113_1", "x": [ 518.0, 570.0, 622.0 ], "y": [ -500.0, -484.0, -468.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(68.26426500000001,3.24258,158.18822999999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_032_114_1", "x": [ 518.0, 466.0, 414.0 ], "y": [ -500.0, -508.0, -516.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(61.55598,3.819645,155.61604499999999)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_033_037_1", "x": [ 1198.0, 1276.0, 1354.0 ], "y": [ -388.0, -376.0, -364.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(56.405235000000005,4.206735,153.53116500000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_034_036_1", "x": [ 1198.0, 1224.0, 1250.0 ], "y": [ -276.0, -300.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(39.887355,5.266005,146.38657500000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_034_037_1", "x": [ 1198.0, 1276.0, 1354.0 ], "y": [ -276.0, -320.0, -364.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_034_043_1", "x": [ 1198.0, 1328.0, 1458.0 ], "y": [ -276.0, -252.0, -228.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(51.113475,4.56501,151.30782)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_035_036_1", "x": [ 1302.0, 1276.0, 1250.0 ], "y": [ -324.0, -324.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(37.894785,5.39427,145.49331)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_035_037_1", "x": [ 1302.0, 1328.0, 1354.0 ], "y": [ -324.0, -344.0, -364.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_037_039_1", "x": [ 1354.0, 1380.0, 1406.0 ], "y": [ -364.0, -344.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(24.576645000000003,6.417075,139.511265)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_037_040_1", "x": [ 1354.0, 1406.0, 1458.0 ], "y": [ -364.0, -360.0, -356.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(47.484314999999995,4.794765,149.74313999999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_038_065_1", "x": [ 1286.0, 1530.0, 1774.0 ], "y": [ -452.0, -548.0, -644.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(33.757155,5.67579,143.62875)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_039_040_1", "x": [ 1406.0, 1432.0, 1458.0 ], "y": [ -324.0, -340.0, -356.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_040_041_1", "x": [ 1458.0, 1484.0, 1510.0 ], "y": [ -356.0, -340.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(29.35662,6.00678,141.64434)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_040_042_1", "x": [ 1458.0, 1510.0, 1562.0 ], "y": [ -356.0, -356.0, -356.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(35.853765,5.530185,144.574545)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_041_042_1", "x": [ 1510.0, 1536.0, 1562.0 ], "y": [ -324.0, -340.0, -356.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(29.35662,6.00678,141.64434)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_042_049_1", "x": [ 1562.0, 1640.0, 1718.0 ], "y": [ -356.0, -332.0, -308.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(29.35662,6.00678,141.64434)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_042_049_2", "x": [ 1562.0, 1640.0, 1718.0 ], "y": [ -356.0, -332.0, -308.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_043_044_1", "x": [ 1458.0, 1484.0, 1510.0 ], "y": [ -228.0, -228.0, -228.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(35.853765,5.530185,144.574545)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_044_045_1", "x": [ 1510.0, 1536.0, 1562.0 ], "y": [ -228.0, -220.0, -212.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_045_046_1", "x": [ 1562.0, 1588.0, 1614.0 ], "y": [ -212.0, -236.0, -260.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(41.837849999999996,5.143605,147.25689)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_045_049_1", "x": [ 1562.0, 1640.0, 1718.0 ], "y": [ -212.0, -260.0, -308.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(24.576645000000003,6.417075,139.511265)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_046_047_1", "x": [ 1614.0, 1640.0, 1666.0 ], "y": [ -260.0, -284.0, -308.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_046_048_1", "x": [ 1614.0, 1640.0, 1666.0 ], "y": [ -260.0, -244.0, -228.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(31.595265,5.833889999999999,142.652865)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_047_049_1", "x": [ 1666.0, 1692.0, 1718.0 ], "y": [ -308.0, -308.0, -308.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_047_069_1", "x": [ 1666.0, 1636.0, 1606.0 ], "y": [ -308.0, -472.0, -636.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(29.35662,6.00678,141.64434)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_048_049_1", "x": [ 1666.0, 1692.0, 1718.0 ], "y": [ -228.0, -268.0, -308.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_049_050_1", "x": [ 1718.0, 1780.0, 1842.0 ], "y": [ -308.0, -332.0, -356.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(31.595265,5.833889999999999,142.652865)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_049_051_1", "x": [ 1718.0, 1754.0, 1790.0 ], "y": [ -308.0, -296.0, -284.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_049_054_1", "x": [ 1718.0, 1832.0, 1946.0 ], "y": [ -308.0, -260.0, -212.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_049_054_2", "x": [ 1718.0, 1832.0, 1946.0 ], "y": [ -308.0, -260.0, -212.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_049_066_1", "x": [ 1718.0, 1780.0, 1842.0 ], "y": [ -308.0, -436.0, -564.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_049_066_2", "x": [ 1718.0, 1780.0, 1842.0 ], "y": [ -308.0, -436.0, -564.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_049_069_1", "x": [ 1718.0, 1662.0, 1606.0 ], "y": [ -308.0, -472.0, -636.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_050_057_1", "x": [ 1842.0, 1868.0, 1894.0 ], "y": [ -356.0, -356.0, -356.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_051_052_1", "x": [ 1790.0, 1816.0, 1842.0 ], "y": [ -284.0, -272.0, -260.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(24.576645000000003,6.417075,139.511265)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_051_058_1", "x": [ 1790.0, 1842.0, 1894.0 ], "y": [ -284.0, -296.0, -308.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_052_053_1", "x": [ 1842.0, 1868.0, 1894.0 ], "y": [ -260.0, -260.0, -260.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(37.894785,5.39427,145.49331)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_053_054_1", "x": [ 1894.0, 1920.0, 1946.0 ], "y": [ -260.0, -236.0, -212.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(12.847665,7.599765,134.633625)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_054_055_1", "x": [ 1946.0, 2032.0, 2118.0 ], "y": [ -212.0, -228.0, -244.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(21.98661,6.661874999999999,138.37779)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_054_056_1", "x": [ 1946.0, 1946.0, 1946.0 ], "y": [ -212.0, -292.0, -372.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_054_059_1", "x": [ 1946.0, 2043.0, 2140.0 ], "y": [ -212.0, -331.0, -450.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(12.847665,7.599765,134.633625)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_055_056_1", "x": [ 2118.0, 2032.0, 1946.0 ], "y": [ -244.0, -308.0, -372.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_055_059_1", "x": [ 2118.0, 2129.0, 2140.0 ], "y": [ -244.0, -347.0, -450.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_056_057_1", "x": [ 1946.0, 1920.0, 1894.0 ], "y": [ -372.0, -364.0, -356.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(35.853765,5.530185,144.574545)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_056_058_1", "x": [ 1946.0, 1920.0, 1894.0 ], "y": [ -372.0, -340.0, -308.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_056_059_1", "x": [ 1946.0, 2043.0, 2140.0 ], "y": [ -372.0, -411.0, -450.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_056_059_2", "x": [ 1946.0, 2043.0, 2140.0 ], "y": [ -372.0, -411.0, -450.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_059_060_1", "x": [ 2140.0, 2103.0, 2066.0 ], "y": [ -450.0, -483.0, -516.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_059_061_1", "x": [ 2140.0, 2103.0, 2066.0 ], "y": [ -450.0, -531.0, -612.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(33.757155,5.67579,143.62875)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_060_061_1", "x": [ 2066.0, 2066.0, 2066.0 ], "y": [ -516.0, -564.0, -612.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(24.576645000000003,6.417075,139.511265)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_060_062_1", "x": [ 2066.0, 2006.0, 1946.0 ], "y": [ -516.0, -532.0, -548.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_061_062_1", "x": [ 2066.0, 2006.0, 1946.0 ], "y": [ -612.0, -580.0, -548.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_062_066_1", "x": [ 1946.0, 1894.0, 1842.0 ], "y": [ -548.0, -556.0, -564.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_062_067_1", "x": [ 1946.0, 1920.0, 1894.0 ], "y": [ -548.0, -532.0, -516.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(29.35662,6.00678,141.64434)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_063_064_1", "x": [ 1998.0, 1972.0, 1946.0 ], "y": [ -692.0, -680.0, -668.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(37.894785,5.39427,145.49331)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_064_065_1", "x": [ 1946.0, 1860.0, 1774.0 ], "y": [ -668.0, -656.0, -644.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_065_068_1", "x": [ 1774.0, 1724.0, 1674.0 ], "y": [ -644.0, -668.0, -692.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_066_067_1", "x": [ 1842.0, 1868.0, 1894.0 ], "y": [ -564.0, -540.0, -516.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(49.31037,4.680269999999999,150.53415)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_068_081_1", "x": [ 1674.0, 1699.0, 1724.0 ], "y": [ -692.0, -761.0, -830.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_068_116_1", "x": [ 1674.0, 1758.0, 1842.0 ], "y": [ -692.0, -700.0, -708.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_069_070_1", "x": [ 1606.0, 1240.0, 874.0 ], "y": [ -636.0, -632.0, -628.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(33.757155,5.67579,143.62875)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_069_075_1", "x": [ 1606.0, 1316.0, 1026.0 ], "y": [ -636.0, -640.0, -644.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(24.576645000000003,6.417075,139.511265)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_069_077_1", "x": [ 1606.0, 1553.0, 1500.0 ], "y": [ -636.0, -689.0, -742.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_070_071_1", "x": [ 874.0, 800.0, 726.0 ], "y": [ -628.0, -628.0, -628.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(61.55598,3.819645,155.61604499999999)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_070_074_1", "x": [ 874.0, 924.0, 974.0 ], "y": [ -628.0, -644.0, -660.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(49.31037,4.680269999999999,150.53415)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_070_075_1", "x": [ 874.0, 950.0, 1026.0 ], "y": [ -628.0, -636.0, -644.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_071_072_1", "x": [ 726.0, 700.0, 674.0 ], "y": [ -628.0, -628.0, -628.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(12.847665,7.599765,134.633625)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_071_073_1", "x": [ 726.0, 752.0, 778.0 ], "y": [ -628.0, -620.0, -612.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(54.65925,4.3281149999999995,152.80594499999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_074_075_1", "x": [ 974.0, 1000.0, 1026.0 ], "y": [ -660.0, -652.0, -644.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(43.75137,5.02503,148.10553000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_075_077_1", "x": [ 1026.0, 1263.0, 1500.0 ], "y": [ -644.0, -693.0, -742.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(56.405235000000005,4.206735,153.53116500000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_075_118_1", "x": [ 1026.0, 1191.0, 1356.0 ], "y": [ -644.0, -693.0, -742.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_076_077_1", "x": [ 1388.0, 1444.0, 1500.0 ], "y": [ -794.0, -768.0, -742.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(79.698465,2.100945,162.1035)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_076_118_1", "x": [ 1388.0, 1372.0, 1356.0 ], "y": [ -794.0, -768.0, -742.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(92.451015,0.826965,165.55747499999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_077_078_1", "x": [ 1500.0, 1540.0, 1580.0 ], "y": [ -742.0, -768.0, -794.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(24.576645000000003,6.417075,139.511265)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_077_080_1", "x": [ 1500.0, 1560.0, 1620.0 ], "y": [ -742.0, -820.0, -898.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(19.215015,6.937530000000001,137.191785)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_077_080_2", "x": [ 1500.0, 1560.0, 1620.0 ], "y": [ -742.0, -820.0, -898.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(106.49871,0.14382,167.88945)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_077_082_1", "x": [ 1500.0, 1460.0, 1420.0 ], "y": [ -742.0, -951.0, -1160.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(43.75137,5.02503,148.10553000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_078_079_1", "x": [ 1580.0, 1580.0, 1580.0 ], "y": [ -794.0, -820.0, -846.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(31.595265,5.833889999999999,142.652865)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_079_080_1", "x": [ 1580.0, 1600.0, 1620.0 ], "y": [ -846.0, -872.0, -898.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(64.929885,3.53991,156.931845)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_080_096_1", "x": [ 1620.0, 1580.0, 1540.0 ], "y": [ -898.0, -1029.0, -1160.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(69.918705,3.087795,158.79411)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_080_097_1", "x": [ 1620.0, 1584.0, 1548.0 ], "y": [ -898.0, -924.0, -950.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(29.35662,6.00678,141.64434)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_080_098_1", "x": [ 1620.0, 1648.0, 1676.0 ], "y": [ -898.0, -924.0, -950.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(21.98661,6.661874999999999,138.37779)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_080_099_1", "x": [ 1620.0, 1680.0, 1740.0 ], "y": [ -898.0, -924.0, -950.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_082_083_1", "x": [ 1420.0, 1404.0, 1388.0 ], "y": [ -1160.0, -1238.0, -1316.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(63.24816,3.6819450000000002,156.28134)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_082_096_1", "x": [ 1420.0, 1480.0, 1540.0 ], "y": [ -1160.0, -1160.0, -1160.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_083_084_1", "x": [ 1388.0, 1380.0, 1372.0 ], "y": [ -1316.0, -1368.0, -1420.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(41.837849999999996,5.143605,147.25689)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_083_085_1", "x": [ 1388.0, 1357.0, 1326.0 ], "y": [ -1316.0, -1405.0, -1494.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_084_085_1", "x": [ 1372.0, 1349.0, 1326.0 ], "y": [ -1420.0, -1457.0, -1494.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_085_086_1", "x": [ 1326.0, 1300.0, 1274.0 ], "y": [ -1494.0, -1486.0, -1478.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_085_088_1", "x": [ 1326.0, 1376.0, 1426.0 ], "y": [ -1494.0, -1502.0, -1510.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(61.55598,3.819645,155.61604499999999)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_085_089_1", "x": [ 1326.0, 1402.0, 1478.0 ], "y": [ -1494.0, -1526.0, -1558.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(24.576645000000003,6.417075,139.511265)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_086_087_1", "x": [ 1274.0, 1248.0, 1222.0 ], "y": [ -1478.0, -1478.0, -1478.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(56.405235000000005,4.206735,153.53116500000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_088_089_1", "x": [ 1426.0, 1452.0, 1478.0 ], "y": [ -1510.0, -1534.0, -1558.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(21.98661,6.661874999999999,138.37779)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_089_090_1", "x": [ 1478.0, 1528.0, 1578.0 ], "y": [ -1558.0, -1582.0, -1606.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(31.595265,5.833889999999999,142.652865)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_089_090_2", "x": [ 1478.0, 1528.0, 1578.0 ], "y": [ -1558.0, -1582.0, -1606.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_089_092_1", "x": [ 1478.0, 1541.0, 1604.0 ], "y": [ -1558.0, -1489.0, -1420.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(12.847665,7.599765,134.633625)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_089_092_2", "x": [ 1478.0, 1541.0, 1604.0 ], "y": [ -1558.0, -1489.0, -1420.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(54.65925,4.3281149999999995,152.80594499999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_090_091_1", "x": [ 1578.0, 1604.0, 1630.0 ], "y": [ -1606.0, -1598.0, -1590.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(12.847665,7.599765,134.633625)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_091_092_1", "x": [ 1630.0, 1617.0, 1604.0 ], "y": [ -1590.0, -1505.0, -1420.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(74.83689000000001,2.604315,160.51995)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_092_093_1", "x": [ 1604.0, 1584.0, 1564.0 ], "y": [ -1420.0, -1368.0, -1316.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(61.55598,3.819645,155.61604499999999)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_092_094_1", "x": [ 1604.0, 1580.0, 1556.0 ], "y": [ -1420.0, -1342.0, -1264.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_092_100_1", "x": [ 1604.0, 1664.0, 1724.0 ], "y": [ -1420.0, -1342.0, -1264.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_092_102_1", "x": [ 1604.0, 1624.0, 1644.0 ], "y": [ -1420.0, -1394.0, -1368.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(47.484314999999995,4.794765,149.74313999999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_093_094_1", "x": [ 1564.0, 1560.0, 1556.0 ], "y": [ -1316.0, -1290.0, -1264.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(100.29252,0.28407,167.07574499999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_094_095_1", "x": [ 1556.0, 1560.0, 1564.0 ], "y": [ -1264.0, -1238.0, -1212.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(49.31037,4.680269999999999,150.53415)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_094_096_1", "x": [ 1556.0, 1548.0, 1540.0 ], "y": [ -1264.0, -1212.0, -1160.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(123.21855,2.1573,168.069225)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_094_100_1", "x": [ 1556.0, 1640.0, 1724.0 ], "y": [ -1264.0, -1264.0, -1264.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(59.852325,3.95301,154.93596)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_095_096_1", "x": [ 1564.0, 1552.0, 1540.0 ], "y": [ -1212.0, -1186.0, -1160.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(59.852325,3.95301,154.93596)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_096_097_1", "x": [ 1540.0, 1544.0, 1548.0 ], "y": [ -1160.0, -1055.0, -950.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(29.35662,6.00678,141.64434)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_098_100_1", "x": [ 1676.0, 1700.0, 1724.0 ], "y": [ -950.0, -1107.0, -1264.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_099_100_1", "x": [ 1740.0, 1732.0, 1724.0 ], "y": [ -950.0, -1107.0, -1264.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_100_101_1", "x": [ 1724.0, 1684.0, 1644.0 ], "y": [ -1264.0, -1290.0, -1316.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(37.894785,5.39427,145.49331)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_100_103_1", "x": [ 1724.0, 1768.0, 1812.0 ], "y": [ -1264.0, -1418.0, -1572.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_100_104_1", "x": [ 1724.0, 1776.0, 1828.0 ], "y": [ -1264.0, -1372.0, -1480.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(51.113475,4.56501,151.30782)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_100_106_1", "x": [ 1724.0, 1779.0, 1834.0 ], "y": [ -1264.0, -1309.0, -1354.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(41.837849999999996,5.143605,147.25689)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_101_102_1", "x": [ 1644.0, 1644.0, 1644.0 ], "y": [ -1316.0, -1342.0, -1368.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(43.75137,5.02503,148.10553000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_103_104_1", "x": [ 1812.0, 1820.0, 1828.0 ], "y": [ -1572.0, -1526.0, -1480.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(37.894785,5.39427,145.49331)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_103_105_1", "x": [ 1812.0, 1856.0, 1900.0 ], "y": [ -1572.0, -1496.0, -1420.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(31.595265,5.833889999999999,142.652865)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_103_110_1", "x": [ 1812.0, 1864.0, 1916.0 ], "y": [ -1572.0, -1602.0, -1632.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(41.837849999999996,5.143605,147.25689)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_104_105_1", "x": [ 1828.0, 1864.0, 1900.0 ], "y": [ -1480.0, -1450.0, -1420.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(52.895925000000005,4.44771,152.064915)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_105_106_1", "x": [ 1900.0, 1867.0, 1834.0 ], "y": [ -1420.0, -1387.0, -1354.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(49.31037,4.680269999999999,150.53415)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_105_107_1", "x": [ 1900.0, 1949.0, 1998.0 ], "y": [ -1420.0, -1387.0, -1354.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(21.98661,6.661874999999999,138.37779)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_105_108_1", "x": [ 1900.0, 1924.0, 1948.0 ], "y": [ -1420.0, -1450.0, -1480.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(56.405235000000005,4.206735,153.53116500000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_106_107_1", "x": [ 1834.0, 1916.0, 1998.0 ], "y": [ -1354.0, -1354.0, -1354.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(16.20168,7.24863,135.94662000000002)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_108_109_1", "x": [ 1948.0, 1948.0, 1948.0 ], "y": [ -1480.0, -1526.0, -1572.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(33.757155,5.67579,143.62875)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_109_110_1", "x": [ 1948.0, 1932.0, 1916.0 ], "y": [ -1572.0, -1602.0, -1632.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(76.463025,2.438055,161.06412)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_110_111_1", "x": [ 1916.0, 1900.0, 1884.0 ], "y": [ -1632.0, -1668.0, -1704.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(45.63225,4.90926,148.93376999999998)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_110_112_1", "x": [ 1916.0, 1932.0, 1948.0 ], "y": [ -1632.0, -1668.0, -1704.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "line": { "color": "rgb(49.31037,4.680269999999999,150.53415)", "width": 2.0 }, "mode": "lines", "name": "lines", "showlegend": false, "text": "branch_114_115_1", "x": [ 414.0, 388.0, 362.0 ], "y": [ -516.0, -516.0, -516.0 ], "type": "scatter" }, { "marker": { "cmax": 100, "cmin": 0, "color": "rgb(255,255,255)", "colorbar": { "thickness": 10, "title": { "side": "right", "text": "Line loading, %" }, "x": 1.1 }, "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" ] ], "opacity": 0, "size": 0 }, "mode": "markers", "x": [ 626.0 ], "y": [ -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "lines", "marker": { "color": "rgb(128, 128, 128)", "size": 1, "symbol": "circle" }, "mode": "markers", "name": "edge_center", "showlegend": false, "x": [ 652.0 ], "y": [ -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "line": { "color": "rgb(74.83689000000001,2.604315,160.51995)", "width": 6.0 }, "mode": "lines", "name": "2W transformers", "showlegend": true, "text": "branch_008_005_1", "x": [ 350.0, 384.0, 418.0 ], "y": [ -340.0, -292.0, -244.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "line": { "color": "rgb(90.871545,0.9684900000000001,165.19155)", "width": 6.0 }, "mode": "lines", "name": "2W transformers", "showlegend": false, "text": "branch_026_025_1", "x": [ 190.0, 224.0, 258.0 ], "y": [ -526.0, -533.0, -540.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "line": { "color": "rgb(86.109165,1.43259,163.977495)", "width": 6.0 }, "mode": "lines", "name": "2W transformers", "showlegend": false, "text": "branch_030_017_1", "x": [ 902.0, 868.0, 834.0 ], "y": [ -484.0, -404.0, -324.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "line": { "color": "rgb(59.852325,3.95301,154.93596)", "width": 6.0 }, "mode": "lines", "name": "2W transformers", "showlegend": false, "text": "branch_038_037_1", "x": [ 1286.0, 1320.0, 1354.0 ], "y": [ -452.0, -408.0, -364.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "line": { "color": "rgb(29.35662,6.00678,141.64434)", "width": 6.0 }, "mode": "lines", "name": "2W transformers", "showlegend": false, "text": "branch_063_059_1", "x": [ 1998.0, 2069.0, 2140.0 ], "y": [ -692.0, -571.0, -450.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "line": { "color": "rgb(27.024900000000002,6.1987950000000005,140.59884)", "width": 6.0 }, "mode": "lines", "name": "2W transformers", "showlegend": false, "text": "branch_064_061_1", "x": [ 1946.0, 2006.0, 2066.0 ], "y": [ -668.0, -640.0, -612.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "line": { "color": "rgb(58.135664999999996,4.081785,154.241085)", "width": 6.0 }, "mode": "lines", "name": "2W transformers", "showlegend": false, "text": "branch_065_066_1", "x": [ 1774.0, 1808.0, 1842.0 ], "y": [ -644.0, -604.0, -564.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "line": { "color": "rgb(51.113475,4.56501,151.30782)", "width": 6.0 }, "mode": "lines", "name": "2W transformers", "showlegend": false, "text": "branch_068_069_1", "x": [ 1674.0, 1640.0, 1606.0 ], "y": [ -692.0, -664.0, -636.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "line": { "color": "rgb(49.31037,4.680269999999999,150.53415)", "width": 6.0 }, "mode": "lines", "name": "2W transformers", "showlegend": false, "text": "branch_081_080_1", "x": [ 1724.0, 1672.0, 1620.0 ], "y": [ -830.0, -864.0, -898.0 ], "type": "scatter" }, { "hoverinfo": "text", "legendgroup": "2W transformers", "marker": { "color": "rgb(49.31037,4.680269999999999,150.53415)", "size": 1, "symbol": "circle" }, "mode": "markers", "name": "edge_center", "showlegend": false, "x": [ 384.0 ], "y": [ -292.0 ], "type": "scatter" } ], "layout": { "autosize": true, "height": 663.3846153846154, "hovermode": "closest", "margin": { "b": 5, "l": 5, "r": 5, "t": 5 }, "showlegend": false, "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "rgb(17,17,17)", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "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" } ], "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" } ], "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" } ], "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" } ], "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": { "line": { "color": "#283442" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "marker": { "line": { "color": "#283442" } }, "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": "#506784" }, "line": { "color": "rgb(17,17,17)" } }, "header": { "fill": { "color": "#2a3f5f" }, "line": { "color": "rgb(17,17,17)" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#f2f5fa", "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": "#f2f5fa" }, "geo": { "bgcolor": "rgb(17,17,17)", "lakecolor": "rgb(17,17,17)", "landcolor": "rgb(17,17,17)", "showlakes": true, "showland": true, "subunitcolor": "#506784" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "dark" }, "paper_bgcolor": "rgb(17,17,17)", "plot_bgcolor": "rgb(17,17,17)", "polar": { "angularaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "bgcolor": "rgb(17,17,17)", "radialaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "gridwidth": 2, "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3" }, "yaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "gridwidth": 2, "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3" }, "zaxis": { "backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "gridwidth": 2, "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3" } }, "shapedefaults": { "line": { "color": "#f2f5fa" } }, "sliderdefaults": { "bgcolor": "#C8D4E3", "bordercolor": "rgb(17,17,17)", "borderwidth": 1, "tickwidth": 0 }, "ternary": { "aaxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "baxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" }, "bgcolor": "rgb(17,17,17)", "caxis": { "gridcolor": "#506784", "linecolor": "#506784", "ticks": "" } }, "title": { "x": 0.05 }, "updatemenudefaults": { "bgcolor": "#506784", "borderwidth": 0 }, "xaxis": { "automargin": true, "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#283442", "zerolinewidth": 2 } } }, "title": { "font": { "size": 16 } }, "width": 840.0, "xaxis": { "showgrid": false, "showticklabels": false, "zeroline": false }, "yaxis": { "showgrid": false, "showticklabels": false, "zeroline": false } }, "config": { "showLink": false, "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lines_trace = pplotly.create_line_trace(\n", " sample,\n", " cmap=\"plasma\",\n", " cmin=0,\n", " cmax=100,\n", " cpos=1.1,\n", " width=2.0,\n", " cbar_title=\"Line loading, %\",\n", ")\n", "trafos_trace = pplotly.create_trafo_trace(\n", " sample,\n", " cmap=\"plasma\",\n", " cmin=0,\n", " cmax=100,\n", " width=6.0,\n", ")\n", "buses_trace = pplotly.create_bus_trace(\n", " sample,\n", " cmap=\"RdBu_r\",\n", " cmin=0.9,\n", " cmax=1.1,\n", " size=10,\n", " cbar_title=\"Bus voltage, pu\",\n", ")\n", "traces = buses_trace + lines_trace + trafos_trace\n", "pplotly.draw_traces(traces, showlegend=False, figsize=1.2);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the same way, the process of building power flow cases is performed for each timestamp presented in the prepared data. The range and frequency of timestamps can be customized via `DATE_RANGE` [from the definitions](../definitions.py).\n" ] } ], "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.10.4" } }, "nbformat": 4, "nbformat_minor": 1 }