diff --git a/OnSSET_SDK_Aug_2026.ipynb b/OnSSET_SDK_Aug_2026.ipynb new file mode 100644 index 0000000..aa2954a --- /dev/null +++ b/OnSSET_SDK_Aug_2026.ipynb @@ -0,0 +1,13064 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "NzHlKcYVfQfc" + }, + "source": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "# \ud83d\udc4b Welcome to the Starter Data Kit for `OnSSET`!\n", + "This notebook will help you download the starter datasets needed to run a basic `OnSSET` analysis. It will allow you to download the geospatial data required as well as the socio- and techno-economic data of your country of interest. There are different data sources available and more will be added in future versions of the tool.\n", + "\n", + "Please follow the steps below, settup the analysis and choose the country and datasets to download." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "executionInfo": { + "elapsed": 50072, + "status": "ok", + "timestamp": 1781517129446, + "user": { + "displayName": "Nicky Middleton", + "userId": "13859980946191540424" + }, + "user_tz": -60 + }, + "id": "ybz0U1fqgOP9", + "outputId": "4288fa71-5447-4bd3-badc-3dd534ef4f68" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: whitebox in /opt/anaconda3/envs/spatial_processing/lib/python3.12/site-packages (from whiteboxgui->leafmap) (2.3.6)\n" + ] + }, + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'google'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 25\u001b[39m\n\u001b[32m 22\u001b[39m run_quiet_shell(\u001b[33m\"\u001b[39m\u001b[33mpip install git+https://github.com/ClimateCompatibleGrowth/Starter-Data-Kits.git --upgrade\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 23\u001b[39m run_quiet_shell(\u001b[33m\"\u001b[39m\u001b[33mpip install ipyleaflet leafmap localtileserver --upgrade\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m---> \u001b[39m\u001b[32m25\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mgoogle\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mcolab\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m userdata\n\u001b[32m 26\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mos\u001b[39;00m\n\u001b[32m 27\u001b[39m \u001b[38;5;66;03m# import awswrangler as wr\u001b[39;00m\n", + "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'google'" + ] + } + ], + "source": [ + "#%%capture\n", + "# @title # \ud83d\udce6 Import required packages {\"vertical-output\":true,\"display-mode\":\"form\"}\n", + "# @markdown Run this cell to install all required packages and setup the session by clicking on the run button (\u25b6\ufe0f) on the upper left corner of the cell.\n", + "# @markdown > \u26a0\ufe0f This may take several minutes.\n", + "\n", + "import subprocess\n", + "from IPython.display import clear_output\n", + "\n", + "def run_quiet_shell(command):\n", + " # Start the process\n", + " process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)\n", + "\n", + " # Read output line by line as it happens\n", + " for line in process.stdout:\n", + " clear_output(wait=True)\n", + " print(line.strip())\n", + "\n", + " process.wait()\n", + "\n", + "# Usage:\n", + "run_quiet_shell(\"pip install --ignore-installed blinker tqdm --upgrade\")\n", + "run_quiet_shell(\"pip install git+https://github.com/ClimateCompatibleGrowth/Starter-Data-Kits.git --upgrade\")\n", + "run_quiet_shell(\"pip install ipyleaflet leafmap localtileserver --upgrade\")\n", + "\n", + "from google.colab import userdata\n", + "import os\n", + "# import awswrangler as wr\n", + "import ipywidgets as widgets\n", + "from ipywidgets import Dropdown, Layout, SelectMultiple, Button, HBox, VBox\n", + "from IPython.display import display\n", + "from google.colab.output import eval_js\n", + "from IPython.display import HTML\n", + "import starterkits as sdk\n", + "import geopandas as gpd\n", + "from tqdm.notebook import tqdm\n", + "import glob\n", + "from google.colab import output\n", + "import time\n", + "\n", + "print('Setup complete')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "executionInfo": { + "elapsed": 33, + "status": "ok", + "timestamp": 1781518441295, + "user": { + "displayName": "Nicky Middleton", + "userId": "13859980946191540424" + }, + "user_tz": -60 + }, + "id": "jRWH4XhCnyKZ", + "outputId": "5ec487b6-5d70-40d3-f244-ef6b824ce90a" + }, + "outputs": [], + "source": [ + "# @title Open-access overrides for MV lines and Roads {\"display-mode\":\"form\"}\n", + "# @markdown Run this cell ONCE after the Setup cell, BEFORE clicking Get Data.\n", + "# @markdown MV lines - Gridfinder global dataset, Zenodo (CC-BY 4.0)\n", + "# @markdown Roads - Geofabrik (OpenStreetMap extract, ODbL)\n", + "\n", + "import os, requests, zipfile, io, time\n", + "import geopandas as gpd\n", + "import pygadm\n", + "\n", + "GRIDFINDER_URL = \"https://zenodo.org/records/3628142/files/grid.gpkg?download=1\"\n", + "GRIDFINDER_LOCAL = \"/tmp/gridfinder_global.gpkg\"\n", + "\n", + "# NOTE: values can be either a single slug (str) or a list of slug candidates\n", + "# to try in order (list[str]). A list is used where Geofabrik's naming does\n", + "# not match the ISO/common English name (e.g. Comoros -> \"comores\").\n", + "GEOFABRIK_REGION_MAP = {\n", + " # Africa\n", + " 'AGO': ('africa', 'angola'),\n", + " 'BDI': ('africa', 'burundi'),\n", + " 'BEN': ('africa', 'benin'),\n", + " 'BFA': ('africa', 'burkina-faso'),\n", + " 'BWA': ('africa', 'botswana'),\n", + " 'CAF': ('africa', 'central-african-republic'),\n", + " 'CIV': ('africa', 'ivory-coast'),\n", + " 'CMR': ('africa', 'cameroon'),\n", + " 'COD': ('africa', 'congo-democratic-republic'),\n", + " 'COG': ('africa', 'congo-republic'),\n", + " 'DJI': ('africa', 'djibouti'),\n", + " 'DZA': ('africa', 'algeria'),\n", + " 'EGY': ('africa', 'egypt'),\n", + " 'ERI': ('africa', 'eritrea'),\n", + " 'ETH': ('africa', 'ethiopia'),\n", + " 'GAB': ('africa', 'gabon'),\n", + " 'GHA': ('africa', 'ghana'),\n", + " 'GIN': ('africa', 'guinea'),\n", + " 'GMB': ('africa', 'senegal'),\n", + " 'GNB': ('africa', 'guinea-bissau'),\n", + " 'GNQ': ('africa', 'equatorial-guinea'),\n", + " 'KEN': ('africa', 'kenya'),\n", + " 'LBR': ('africa', 'liberia'),\n", + " 'LBY': ('africa', 'libya'),\n", + " 'LSO': ('africa', 'lesotho'),\n", + " 'MAR': ('africa', 'morocco'),\n", + " 'MDG': ('africa', 'madagascar'),\n", + " 'MLI': ('africa', 'mali'),\n", + " 'MOZ': ('africa', 'mozambique'),\n", + " 'MRT': ('africa', 'mauritania'),\n", + " 'MWI': ('africa', 'malawi'),\n", + " 'NAM': ('africa', 'namibia'),\n", + " 'NER': ('africa', 'niger'),\n", + " 'NGA': ('africa', 'nigeria'),\n", + " 'RWA': ('africa', 'rwanda'),\n", + " 'SDN': ('africa', 'sudan'),\n", + " 'SEN': ('africa', 'senegal'),\n", + " 'SLE': ('africa', 'sierra-leone'),\n", + " 'SOM': ('africa', 'somalia'),\n", + " 'SSD': ('africa', 'south-sudan'),\n", + " 'SWZ': ('africa', 'swaziland'),\n", + " 'TCD': ('africa', 'chad'),\n", + " 'TGO': ('africa', 'togo'),\n", + " 'TUN': ('africa', 'tunisia'),\n", + " 'TZA': ('africa', 'tanzania'),\n", + " 'UGA': ('africa', 'uganda'),\n", + " 'ZAF': ('africa', 'south-africa'),\n", + " 'ZMB': ('africa', 'zambia'),\n", + " 'ZWE': ('africa', 'zimbabwe'),\n", + " 'COM': ('africa', ['comoros', 'comores']), # Geofabrik uses the French spelling \"comores\"\n", + " 'CPV': ('africa', 'cape-verde'),\n", + " 'MUS': ('africa', 'mauritius'),\n", + " 'STP': ('africa', 'sao-tome-and-principe'),\n", + " # Asia\n", + " 'BRN': ('asia', 'malaysia-singapore-brunei'),\n", + " 'IDN': ('asia', 'indonesia'),\n", + " 'KHM': ('asia', 'cambodia'),\n", + " 'LAO': ('asia', 'laos'),\n", + " 'MMR': ('asia', 'myanmar'),\n", + " 'MYS': ('asia', 'malaysia-singapore-brunei'),\n", + " 'PHL': ('asia', 'philippines'),\n", + " 'SGP': ('asia', 'malaysia-singapore-brunei'),\n", + " 'THA': ('asia', 'thailand'),\n", + " 'TLS': ('asia', 'east-timor'),\n", + " 'VNM': ('asia', 'vietnam'),\n", + "}\n", + "\n", + "OSM_ROAD_TYPES = [\n", + " \"motorway\", \"motorway_link\", \"trunk\", \"trunk_link\",\n", + " \"primary\", \"primary_link\", \"secondary\", \"secondary_link\",\n", + " \"tertiary\", \"tertiary_link\", \"unclassified\",\n", + "]\n", + "\n", + "# \u2500\u2500 MV lines (unchanged from previous working version) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", + "\n", + "def ensure_gridfinder():\n", + " \"\"\"Download the Gridfinder global file once per session if not already present.\"\"\"\n", + " if os.path.exists(GRIDFINDER_LOCAL):\n", + " size = os.path.getsize(GRIDFINDER_LOCAL)\n", + " if size > 100 * 1024 * 1024:\n", + " print(\"[MV lines] Gridfinder global file already downloaded for this session.\")\n", + " return\n", + " else:\n", + " print(\"[MV lines] Incomplete file found, re-downloading...\")\n", + " os.remove(GRIDFINDER_LOCAL)\n", + " print(\"[MV lines] Downloading Gridfinder global file (~724 MB) - this happens once per session...\")\n", + " r = requests.get(GRIDFINDER_URL, stream=True)\n", + " r.raise_for_status()\n", + " total = int(r.headers.get('content-length', 0))\n", + " downloaded = 0\n", + " with open(GRIDFINDER_LOCAL, 'wb') as f:\n", + " for chunk in r.iter_content(chunk_size=8 * 1024 * 1024):\n", + " f.write(chunk)\n", + " downloaded += len(chunk)\n", + " if total:\n", + " pct = downloaded / total * 100\n", + " print(f\"\\r[MV lines] {pct:.1f}% ({downloaded // 1024 // 1024} MB / {total // 1024 // 1024} MB)\", end=\"\", flush=True)\n", + " print(f\"\\n[MV lines] Download complete: {GRIDFINDER_LOCAL}\")\n", + "\n", + "def get_power_lines(country):\n", + " os.makedirs(f'Data/{country}/MV lines', exist_ok=True)\n", + " out_path = f'Data/{country}/MV lines/{country}_mv_lines.gpkg'\n", + " print(f\"[MV lines] Fetching boundary for {country}...\")\n", + " boundary = pygadm.Items(admin=country, content_level=0)\n", + " boundary = boundary.set_crs(4326, allow_override=True)\n", + " ensure_gridfinder()\n", + " bbox = tuple(boundary.total_bounds)\n", + " print(f\"[MV lines] Clipping Gridfinder data to {country} bbox {tuple(round(v,2) for v in bbox)}...\")\n", + " gdf = gpd.read_file(GRIDFINDER_LOCAL, bbox=bbox)\n", + " if gdf.empty:\n", + " print(f\"[MV lines] No features found for {country} in Gridfinder - saving empty file.\")\n", + " gdf.to_file(out_path, driver=\"GPKG\")\n", + " return\n", + " gdf = gdf.set_crs(4326, allow_override=True)\n", + " gdf_clipped = gpd.clip(gdf, boundary.to_crs(gdf.crs))\n", + " gdf_clipped.to_file(out_path, driver=\"GPKG\")\n", + " print(f\"[MV lines] Saved {len(gdf_clipped)} features to {out_path}\")\n", + "\n", + "# \u2500\u2500 Roads (Geofabrik) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", + "\n", + "def _download_and_validate_roads_zip(url, tmp_zip):\n", + " \"\"\"\n", + " Download a Geofabrik shp.zip to tmp_zip and validate that it is a real,\n", + " complete zip archive containing the expected roads shapefile.\n", + " Returns True on success, False on any failure (so the caller can try\n", + " the next slug candidate, if any). Never leaves a corrupt file behind.\n", + " \"\"\"\n", + " try:\n", + " r = requests.get(url, stream=True, timeout=300,\n", + " headers={\"User-Agent\": \"OnSSET-StarterKit/1.0\"})\n", + " except requests.exceptions.RequestException as e:\n", + " print(f\"\\n[Roads] Request failed for {url}: {e}\")\n", + " return False\n", + "\n", + " if r.status_code != 200:\n", + " print(f\"\\n[Roads] Server returned HTTP {r.status_code} for {url} - skipping.\")\n", + " return False\n", + "\n", + " total = int(r.headers.get('content-length', 0))\n", + " downloaded = 0\n", + " with open(tmp_zip, 'wb') as f:\n", + " for chunk in r.iter_content(chunk_size=8 * 1024 * 1024):\n", + " f.write(chunk)\n", + " downloaded += len(chunk)\n", + " if total:\n", + " print(f\"\\r[Roads] {downloaded/total*100:.1f}% ({downloaded//1024//1024} MB / {total//1024//1024} MB)\",\n", + " end=\"\", flush=True)\n", + " print()\n", + "\n", + " # Reject anything suspiciously small (e.g. an HTML error page saved as .zip)\n", + " # or that isn't actually a valid zip archive, or doesn't contain the layer\n", + " # we need. This is what previously failed silently as \"326.7% (0MB/0MB)\".\n", + " if downloaded < 1024:\n", + " print(f\"[Roads] Downloaded file is only {downloaded} bytes - not a valid archive. Skipping.\")\n", + " os.remove(tmp_zip)\n", + " return False\n", + "\n", + " if not zipfile.is_zipfile(tmp_zip):\n", + " print(f\"[Roads] Downloaded file is not a valid zip archive. Skipping.\")\n", + " os.remove(tmp_zip)\n", + " return False\n", + "\n", + " with zipfile.ZipFile(tmp_zip) as zf:\n", + " names = zf.namelist()\n", + " if not any(n.endswith('gis_osm_roads_free_1.shp') for n in names):\n", + " print(f\"[Roads] Zip archive does not contain gis_osm_roads_free_1.shp. Skipping.\")\n", + " os.remove(tmp_zip)\n", + " return False\n", + "\n", + " print(f\"[Roads] Download complete and validated: {tmp_zip}\")\n", + " return True\n", + "\n", + "\n", + "def get_roads(country):\n", + " os.makedirs(f'Data/{country}/Roads', exist_ok=True)\n", + " out_path = f'Data/{country}/Roads/{country}_roads.gpkg'\n", + "\n", + " if country not in GEOFABRIK_REGION_MAP:\n", + " raise ValueError(f\"[Roads] Country code '{country}' not found in Geofabrik region map.\")\n", + "\n", + " region, slug_entry = GEOFABRIK_REGION_MAP[country]\n", + " slug_candidates = slug_entry if isinstance(slug_entry, list) else [slug_entry]\n", + "\n", + " tmp_zip = f\"/tmp/{country}_geofabrik.shp.zip\"\n", + " success = False\n", + " for slug in slug_candidates:\n", + " url = f\"https://download.geofabrik.de/{region}/{slug}-latest-free.shp.zip\"\n", + " print(f\"[Roads] Downloading from: {url}\")\n", + " if _download_and_validate_roads_zip(url, tmp_zip):\n", + " success = True\n", + " break\n", + " print(f\"[Roads] Slug '{slug}' did not work, trying next candidate (if any)...\")\n", + "\n", + " if not success:\n", + " raise RuntimeError(\n", + " f\"[Roads] Could not download a valid roads archive for '{country}' \"\n", + " f\"after trying: {slug_candidates}. Check Geofabrik's naming for this \"\n", + " f\"country at https://download.geofabrik.de/{region}.html\"\n", + " )\n", + "\n", + " print(f\"[Roads] Reading roads layer from zip...\")\n", + " gdf = gpd.read_file(f\"zip://{tmp_zip}!gis_osm_roads_free_1.shp\")\n", + "\n", + " gdf = gdf[gdf['fclass'].isin(OSM_ROAD_TYPES)]\n", + " print(f\"[Roads] {len(gdf)} features after road-type filter.\")\n", + "\n", + " boundary = pygadm.Items(admin=country, content_level=0).set_crs(4326, allow_override=True)\n", + " gdf = gdf.set_crs(4326, allow_override=True)\n", + " gdf_clipped = gpd.clip(gdf, boundary)\n", + "\n", + " gdf_clipped.to_file(out_path, driver=\"GPKG\")\n", + " print(f\"[Roads] Saved {len(gdf_clipped)} features to {out_path}\")\n", + "\n", + " os.remove(tmp_zip)\n", + " print(f\"[Roads] Temporary zip file removed.\")\n", + "\n", + "# \u2500\u2500 Apply overrides \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", + "\n", + "import starterkits.apis as _sdk_apis\n", + "_sdk_apis.get_power_lines = get_power_lines\n", + "_sdk_apis.get_roads = get_roads\n", + "print(\"\u2705 Overrides active: MV lines (Gridfinder) and Roads (Geofabrik).\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "ninja_profile_override" + }, + "outputs": [], + "source": [ + "# @title Open-access overrides for Wind & Solar Hourly Profiles (Renewables.ninja) {\"display-mode\":\"form\"}\n", + "# @markdown Run this cell ONCE after the Setup cell, BEFORE clicking Get Data.\n", + "# @markdown\n", + "# @markdown **Solar profile** \u2014 tries the country bulk file (land-area-weighted, MERRA-2) first;\n", + "# @markdown automatically falls back to the point API at the country centroid if the bulk\n", + "# @markdown file is unavailable (e.g. Tunisia). No token needed for the fast bulk path.\n", + "# @markdown Saved as `{cc2}-2-pv.csv`.\n", + "# @markdown\n", + "# @markdown **Wind profile** \u2014 point API at country geographic centroid (MERRA-2, 2019,\n", + "# @markdown 50 m hub height, Vestas V42 600 turbine) \u2014 same method as original OnSSET GEP files.\n", + "# @markdown Requires a **free** Renewables.ninja token: https://www.renewables.ninja/profile\n", + "# @markdown Saved as `{cc2}-2-wind.csv`.\n", + "# @markdown\n", + "# @markdown > Both the solar fallback and wind profile require the Ninja token below.\n", + "\n", + "import os, time\n", + "import requests\n", + "\n", + "Ninja_token = \"\" # @param {type:\"string\", placeholder:\"Paste your Renewables.ninja API token here\"}\n", + "\n", + "# \u2500\u2500 ISO-3 -> ISO-2 mapping \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", + "\n", + "ISO3_TO_ISO2 = {\n", + " 'AGO': 'AO', 'BDI': 'BI', 'BEN': 'BJ', 'BFA': 'BF', 'BRN': 'BN',\n", + " 'BWA': 'BW', 'CAF': 'CF', 'CIV': 'CI', 'CMR': 'CM', 'COD': 'CD',\n", + " 'COG': 'CG', 'COM': 'KM', 'CPV': 'CV', 'DJI': 'DJ', 'DZA': 'DZ',\n", + " 'EGY': 'EG', 'ERI': 'ER', 'ETH': 'ET', 'GAB': 'GA', 'GHA': 'GH',\n", + " 'GIN': 'GN', 'GMB': 'GM', 'GNB': 'GW', 'GNQ': 'GQ', 'IDN': 'ID',\n", + " 'KEN': 'KE', 'KHM': 'KH', 'LAO': 'LA', 'LBR': 'LR', 'LBY': 'LY',\n", + " 'LSO': 'LS', 'MAR': 'MA', 'MDG': 'MG', 'MLI': 'ML', 'MMR': 'MM',\n", + " 'MOZ': 'MZ', 'MRT': 'MR', 'MUS': 'MU', 'MWI': 'MW', 'MYS': 'MY',\n", + " 'NAM': 'NA', 'NER': 'NE', 'NGA': 'NG', 'PHL': 'PH', 'RWA': 'RW',\n", + " 'SDN': 'SD', 'SEN': 'SN', 'SGP': 'SG', 'SLE': 'SL', 'SOM': 'SO',\n", + " 'SSD': 'SS', 'STP': 'ST', 'SWZ': 'SZ', 'TCD': 'TD', 'TGO': 'TG',\n", + " 'THA': 'TH', 'TLS': 'TL', 'TUN': 'TN', 'TZA': 'TZ', 'UGA': 'UG',\n", + " 'VNM': 'VN', 'ZAF': 'ZA', 'ZMB': 'ZM', 'ZWE': 'ZW',\n", + "}\n", + "\n", + "# Fallback centroids if pygadm is unavailable (lat, lon)\n", + "FALLBACK_CENTROIDS = {\n", + " 'AGO': (-11.20, 17.87), 'BDI': (-3.37, 29.92), 'BEN': (9.31, 2.32),\n", + " 'BFA': (12.36, -1.56), 'BRN': (4.53, 114.73), 'BWA': (-22.33, 24.68),\n", + " 'CAF': (6.61, 20.94), 'CIV': (7.54, -5.55), 'CMR': (3.87, 11.52),\n", + " 'COD': (-4.04, 21.76), 'COG': (-0.23, 15.83), 'COM': (-11.70, 43.37),\n", + " 'CPV': (16.00, -24.01), 'DJI': (11.83, 42.59), 'DZA': (28.03, 1.66),\n", + " 'EGY': (26.82, 30.80), 'ERI': (15.18, 39.78), 'ETH': (9.15, 40.49),\n", + " 'GAB': (-0.80, 11.61), 'GHA': (7.96, -1.02), 'GIN': (10.74, -10.95),\n", + " 'GMB': (13.44, -15.31), 'GNB': (11.80, -15.18), 'GNQ': (1.65, 10.27),\n", + " 'IDN': (-0.79, 113.92), 'KEN': (0.02, 37.91), 'KHM': (12.57, 104.99),\n", + " 'LAO': (17.97, 102.64), 'LBR': (6.43, -9.43), 'LBY': (26.34, 17.23),\n", + " 'LSO': (-29.61, 28.23), 'MAR': (31.79, -7.09), 'MDG': (-18.77, 46.87),\n", + " 'MLI': (17.57, -3.99), 'MMR': (17.10, 96.96), 'MOZ': (-18.67, 35.53),\n", + " 'MRT': (20.25, -10.94), 'MUS': (-20.35, 57.55), 'MWI': (-13.25, 34.30),\n", + " 'MYS': (4.21, 108.96), 'NAM': (-22.96, 18.49), 'NER': (17.61, 8.08),\n", + " 'NGA': (9.08, 8.68), 'PHL': (12.88, 121.77), 'RWA': (-1.94, 29.87),\n", + " 'SDN': (15.56, 32.53), 'SEN': (14.50, -14.45), 'SGP': (1.35, 103.82),\n", + " 'SLE': (8.46, -11.78), 'SOM': (5.15, 46.20), 'SSD': (6.88, 31.31),\n", + " 'STP': (0.19, 6.61), 'SWZ': (-26.52, 31.47), 'TCD': (15.45, 18.73),\n", + " 'TGO': (8.62, 0.82), 'THA': (15.87, 100.99), 'TLS': (-8.87, 125.73),\n", + " 'TUN': (33.89, 9.54), 'TZA': (-6.37, 34.89), 'UGA': (1.37, 32.29),\n", + " 'VNM': (14.06, 108.28), 'ZAF': (-28.47, 24.68), 'ZMB': (-13.13, 27.85),\n", + " 'ZWE': (-19.02, 29.15),\n", + "}\n", + "\n", + "NINJA_BASE = \"https://www.renewables.ninja/country_downloads\"\n", + "\n", + "\n", + "def _get_centroid(country):\n", + " \"\"\"Get country centroid via pygadm, falling back to hardcoded table.\"\"\"\n", + " try:\n", + " import pygadm\n", + " boundary = pygadm.Items(admin=country, content_level=0)\n", + " c = boundary.geometry.centroid.iloc[0]\n", + " lat, lon = round(c.y, 4), round(c.x, 4)\n", + " print(f\"[Centroid] {country}: lat={lat}, lon={lon} (from GADM)\")\n", + " return lat, lon\n", + " except Exception:\n", + " lat, lon = FALLBACK_CENTROIDS[country]\n", + " print(f\"[Centroid] {country}: lat={lat}, lon={lon} (from fallback table)\")\n", + " return lat, lon\n", + "\n", + "\n", + "def _solar_point_api(country, cc2, out_path):\n", + " \"\"\"\n", + " Inner helper: download solar PV hourly profile via Renewables.ninja point API\n", + " at the country centroid. Used as fallback when the bulk country file is missing.\n", + " Parameters match original OnSSET GEP method: MERRA-2, 2019, fixed tilt 35 deg,\n", + " azimuth 180 deg, 10% system loss.\n", + " \"\"\"\n", + " if not Ninja_token.strip():\n", + " raise ValueError(\n", + " \"[Solar profile] Bulk file unavailable and no Ninja token set.\\n\"\n", + " \" Please add your token in the Ninja_token field above and re-run this cell.\\n\"\n", + " \" Register free at: https://www.renewables.ninja/profile\"\n", + " )\n", + " lat, lon = _get_centroid(country)\n", + " url = \"https://www.renewables.ninja/api/data/pv\"\n", + " params = {\n", + " 'lat': lat,\n", + " 'lon': lon,\n", + " 'date_from': '2019-01-01',\n", + " 'date_to': '2019-12-31',\n", + " 'dataset': 'merra2',\n", + " 'capacity': 1,\n", + " 'system_loss': 0.1,\n", + " 'tracking': 0,\n", + " 'tilt': 35,\n", + " 'azim': 180,\n", + " 'raw': 'true',\n", + " 'local_time': 'true',\n", + " 'header': 'true',\n", + " 'format': 'csv',\n", + " }\n", + " headers = {'Authorization': f'Token {Ninja_token.strip()}'}\n", + " print(f\"[Solar profile] Point API fallback (lat={lat}, lon={lon}, 2019)...\")\n", + " r = requests.get(url, params=params, headers=headers, timeout=120)\n", + " if r.status_code == 429:\n", + " print(\"[Solar profile] Rate limited -- waiting 60 s and retrying...\")\n", + " time.sleep(60)\n", + " r = requests.get(url, params=params, headers=headers, timeout=120)\n", + " r.raise_for_status()\n", + " with open(out_path, 'w') as f:\n", + " f.write(r.text)\n", + " lines = r.text.strip().splitlines()\n", + " print(f\"[Solar profile] Saved {len(lines) - 3} hourly rows to {out_path} (point API fallback)\")\n", + "\n", + "\n", + "def get_solar_profile(country):\n", + " \"\"\"\n", + " Download country-level solar hourly profile from Renewables.ninja.\n", + "\n", + " Strategy:\n", + " 1. Try bulk country file (land_area_weighted, no token needed) -- fast path.\n", + " Works for the majority of countries in Africa and Asia.\n", + " 2. On any non-200 response (e.g. 404 for Tunisia which lacks a bulk file),\n", + " automatically fall back to the point API at the country centroid.\n", + " This requires Ninja_token.\n", + "\n", + " Output filename is identical either way so OnSSET sees no difference downstream.\n", + " \"\"\"\n", + " if country not in ISO3_TO_ISO2:\n", + " raise ValueError(f\"[Solar profile] Unknown country code: {country}\")\n", + " cc2 = ISO3_TO_ISO2[country]\n", + " out_dir = f\"Data/{country}/Solar profile\"\n", + " os.makedirs(out_dir, exist_ok=True)\n", + " out_path = f\"{out_dir}/{cc2.lower()}-2-pv.csv\"\n", + "\n", + " # -- Attempt 1: bulk country file (no token needed) -----------------------\n", + " fname = f\"ninja_weather_country_{cc2}_merra-2_land_area_weighted.csv\"\n", + " url = f\"{NINJA_BASE}/{cc2}/{fname}\"\n", + " print(f\"[Solar profile] Trying bulk file: {url}\")\n", + " try:\n", + " r = requests.get(url, stream=True, timeout=120,\n", + " headers={\"User-Agent\": \"OnSSET-StarterKit/1.0\"})\n", + " except requests.exceptions.RequestException as e:\n", + " print(f\"[Solar profile] Network error on bulk request ({e}) -- falling back to point API.\")\n", + " _solar_point_api(country, cc2, out_path)\n", + " return\n", + "\n", + " if r.status_code == 200:\n", + " total = int(r.headers.get('content-length', 0))\n", + " downloaded = 0\n", + " with open(out_path, 'wb') as f:\n", + " for chunk in r.iter_content(chunk_size=1024 * 1024):\n", + " f.write(chunk)\n", + " downloaded += len(chunk)\n", + " if total:\n", + " print(f\"\\r[Solar profile] {downloaded / total * 100:.1f}%\",\n", + " end=\"\", flush=True)\n", + " print(f\"\\n[Solar profile] Saved {downloaded // 1024 // 1024} MB to {out_path}\")\n", + " return\n", + "\n", + " # -- Attempt 2: point API fallback ----------------------------------------\n", + " print(f\"[Solar profile] Bulk file not available (HTTP {r.status_code}) \"\n", + " f\"-- falling back to point API.\")\n", + " _solar_point_api(country, cc2, out_path)\n", + "\n", + "\n", + "def get_wind_profile(country):\n", + " \"\"\"\n", + " Download wind profile via Renewables.ninja point API at country centroid.\n", + " Matches original GEP method: 2019, 50 m hub height, Vestas V42 600, raw wind_speed output.\n", + " Requires Ninja_token to be set above.\n", + " \"\"\"\n", + " if not Ninja_token.strip():\n", + " raise ValueError(\n", + " \"[Wind profile] No Renewables.ninja token found.\\n\"\n", + " \" Please register at https://www.renewables.ninja/profile and paste \"\n", + " \"your token into the Ninja_token field above, then re-run this cell.\"\n", + " )\n", + " if country not in ISO3_TO_ISO2:\n", + " raise ValueError(f\"[Wind profile] Unknown country code: {country}\")\n", + "\n", + " cc2 = ISO3_TO_ISO2[country]\n", + " lat, lon = _get_centroid(country)\n", + "\n", + " url = \"https://www.renewables.ninja/api/data/wind\"\n", + " params = {\n", + " 'lat': lat,\n", + " 'lon': lon,\n", + " 'date_from': '2019-01-01',\n", + " 'date_to': '2019-12-31',\n", + " 'capacity': 1,\n", + " 'height': 50,\n", + " 'turbine': 'Vestas V42 600',\n", + " 'dataset': 'merra2',\n", + " 'raw': 'true',\n", + " 'local_time': 'true',\n", + " 'header': 'true',\n", + " 'format': 'csv',\n", + " }\n", + " headers = {'Authorization': f'Token {Ninja_token.strip()}'}\n", + "\n", + " print(f\"[Wind profile] Querying Renewables.ninja API (lat={lat}, lon={lon}, 2019)...\")\n", + " r = requests.get(url, params=params, headers=headers, timeout=120)\n", + "\n", + " if r.status_code == 429:\n", + " print(\"[Wind profile] Rate limited -- waiting 60 s and retrying...\")\n", + " time.sleep(60)\n", + " r = requests.get(url, params=params, headers=headers, timeout=120)\n", + "\n", + " r.raise_for_status()\n", + "\n", + " out_dir = f\"Data/{country}/Wind profile\"\n", + " os.makedirs(out_dir, exist_ok=True)\n", + " out_path = f\"{out_dir}/{cc2.lower()}-2-wind.csv\"\n", + "\n", + " with open(out_path, 'w') as f:\n", + " f.write(r.text)\n", + "\n", + " lines = r.text.strip().splitlines()\n", + " print(f\"[Wind profile] Saved {len(lines) - 3} hourly rows to {out_path}\")\n", + "\n", + "\n", + "# \u2500\u2500 Apply overrides \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", + "\n", + "import starterkits.apis as _sdk_apis\n", + "_sdk_apis.get_solar_profile = get_solar_profile\n", + "_sdk_apis.get_wind_profile = get_wind_profile\n", + "print(\"Overrides active: Solar profile (bulk file + point API fallback) \"\n", + " \"and Wind profile (point API).\")\n", + "if not Ninja_token.strip():\n", + " print(\" WARNING: Wind profile and solar fallback require a Ninja token.\")\n", + " print(\" Register free at: https://www.renewables.ninja/profile\")\n", + "else:\n", + " print(f\" Ninja token detected ({Ninja_token.strip()[:6]}...).\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 3000, + "referenced_widgets": [ + "8478679914584395944fe8184adc6c81", + "4f7236058bcf46c1ac3d62a8ebb27f60", + "83381ce583d149e68ea5c7350a14a421", + "2871ff6790104e229ed6014bcb4892a2", + "818bdddb27394457a441d821c8c20cdc", + "dba67b56b0fd48cea25ed2a1e03b6e6b", + "1e70e63da1b34928a531f9997fb2bd5d", + "1a6b481e67da403f855db5d3bf600b91", + "0dcca2c5fe77427f9049c73ab0bd9fb1", + "7593e59876d14c55ad2f43defde4b210", + "0c89e8afe32340118001f081a80c788f", + "f21487fc02564e7283876352fc87386a", + "111a3a0115be46338e359420c04c6821", + "142629170e28476ca7ed83c739b1a68f", + "6035c38f60b649e1b445786f02f370b7", + "2dd6ebae49f14fd5825a6fa08aa10e76", + "9d2828a87436484ea331f3e26e72717d", + "77947946903245dcae82605967edb023", + "4dea281f97dc4623ae2f9ab3bd0978a5", + "db505ae4bce8459098700762e2d9752b", + "a4948c6bd85f42539faf76f110388c43", + "f32f5e5fa52945788fc106795a30dc9f", + "036c3e7ed8ae4bdf85d292b8ea92126f", + "11acf62b308b45a1b43362793d7de56f", + "7d56b0635749481094a1903ac9c855e1", + "2db2058914944900b2273e26ff81778a", + "412ef437f67542dd8c3d2e88b5c5c7d5", + "579df1ed33b941ad8f58ca79eca777d1", + "f4d30d70af7d4cc4848482fc4dd4cc95", + "9290dbfd9f7b46d9a74bb43d512713d8", + "047eb506d3884985b44aa8f8af8a4dd7", + "d05077c938ed453799e8cdde5b0bfa05", + "3864c0af56fa4f50837f94a69c41b59b", + "ea48e54aa2b24d598734493986d3ca73", + "293dd4751729414cb77ccb4818a4ef89", + "4bacbf8e65f44386948efe98603d90ea", + "af8c5cd1012241f5a8df8095ab126a74", + "c4e2ef7b671d4ec4b9da8d31cbab2251", + "93239cd42b6e4679a08d7a78d0a90576", + "817bc9a4fbf949cda2ce5476b686d6af", + "be932fb56a074095a7b5286c74c6f575", + "b49d2f59b27d485d81c72aa3b8e31726", + "3ecc8a342d4940038a96afedfc5a9862", + "8a9a1296910f4cd2890fcac26b0425a1", + "8d2ac70fe34e4a2bbef553ae5d9fbb3b", + "bec722ad8a4b4b0bb7ac5da72393fe0a", + "df693f93cb294d06a82019126349c4bd", + "1bafd667ce124f5690f59a0a8d817899", + "b56133c5702f466cb0674ae126ff6cb1", + "f34d1b91112f4cdd80844f7776368b63", + "93b1ee28fb364a3dbe941e6120b61454", + "fdbad72a99b141588ee99b0e627e3114", + "d53f5c8e91a144cfb5094281791edbfd", + "8481bc879692436aa4a98bd5f4db7868", + "bdcd321292fb455090d5d812cf4ede0b", + "b959807f9c3c44ebaf6c7934d6b0438d", + "f9f0f094e388484a99d44187c5d542fe", + "5569a4c4ffa04622bcac517224ebc8cb", + "48b6df95e4204b4b8741cb9737cd746d", + "ae889a5a812b4676a9e2621b7c48926f", + "cd707c3525cd49428e58273683a44826", + "f91ce64c094047628ca006b9c4c071c9", + "4f2b37882583479fba177f3facfd7472", + "5539a26b5796429c94023fa9ad4712ed", + "c5cf0292457d4d2f9418bfd2ac74324b", + "e549abbeb2424fab842cca44727b83b5", + "21deba4cea4d4912adaee3e7ff9ac4f0", + "360a1d4b3e1d4624b614b95ae246384e", + "20abd220447f4742890dfabc8a49bd51", + "2d1ed4ea0ffb46e691285780c2ec8d9c", + "3c5a32f6f529409682bfca0d344cd102", + "fa6f980f9b9849e399205c2fa96908d7", + "f104f4b337ff46f3ba52f0d71f647d15", + "94eaf372a46c48d3a919776a0b3df27c", + "c7036aba9a8b475496d174568d79da5a", + "2130cc2b1ff8459284b9d3fb1857ec2d", + "2f6eae55534f4d528270cedeed16c6a5", + "4e0d8145a23e4e1c8437604923f59d08", + "abe6f9095a9f4a5680ce2da3e1e425af", + "6aa50758e2734f6187e300ba41233573", + "94b216678f3f42a49250bbd47cc263c4", + "541ecf91f8ba4ffbb03b92a13acb1c55", + "074d4e77a4ef47ef9699cb5e74faf84c", + "8ace0e0f042a402da58b311ff5672a20", + "84b2f1c9a3fe499798122098d33062d7", + "451a82af05ff4e8fb330f472db0bb8af", + "aef7d67b7ff045c9ae715b4b847cf5a1", + "38557cb13eef4561b1a169fc7d522120", + "bd8905e1e92f45ea8ea13bb09e24753b", + "6b47d429651f4f02865eda6b18ffaa00", + "0fab953ce6a84643a0c860814e7e26d9", + "22fa664449564b2ea376f56472b6f7b9", + "a006bac1bc154ebc92f7f9673f46ad9a", + "48b90f06a23c4578abfb0233d3ae94a3", + "12ef575700624f39913f89bed5ccaa92", + "46bbf35380d9449fbbed80e27e3e4890", + "5321c4ffac474ecb94c026d6fab1bdef", + "d7fd25ac98fb4a27bd4d0098a3a14eeb", + "5d9deae4fd9d45f19ab1a2d2626798bd", + "9a10f3b92ece49aabdc4be996b227dee", + "614e826c9cfc404495eb416d91799784", + "c3b524fa954d4fd7929fa7b60d6f2a0a", + "c17797596c604b6ab1acb457e61358b6", + "17603e6d02ae4ce4a311fe5d3c0f5efc", + "6539cadbba8546b6944f89c164305067", + "1649b257e5b34364a1d83a4e64c7e3d9", + "94ffc66b8b0c48069fbe73a0ad8a90ea", + "cb59a86d369848adbb6d0b22e6d84bdb", + "cee091c7717e428f85aa0d5afed45f5d", + "474bbb019d82448da4d144583591269e", + "216597d71b8c4de6ae59daf7bf4ea986", + "d4f73ebb09fb4a219e6a0df79c9c2e62", + "bebf92e34e584fc097c9d396e1103202", + "f8efe7d49718498cb5ab2218060b2e47", + "94b68e6ae5944ec497a1925e3a4a4e24", + "1ae823bbbdf94f3f93d92b8b90a2888e", + "b9b50c1bc5544036a53e8c45d95064fb", + "72b575cdd5ad48f8a4917ec7e618fbb5", + "62238ca6c1eb4929bd23aacf258863b3", + "da759e82ebfc47138093f9ba21e83d3a", + "6b90bd4664c74d6aab256e9040d7f938", + "8c8b7d00ab0a42a0b27f591de3983cae", + "d3d08e33f2fa478ca345b71a92544195", + "5103cf05c53d461db27fbfc7fca8c824", + "284f00acd6ca4f60a981bf49f4ed2c32", + "9eea07db2b334f22ab297649c383c9cd", + "0dbc1dc2c3c94b94b860e985b85375a8", + "06dfb7c58af14c32bbfa6fe3c4268d67", + "33351dda3e5548abbdf5274a748c74ef", + "65faf64037814a57a592456ea6346a3c", + "a97b5107c16049e6bf2ba29b802d07c7", + "efbcccce66634c81a98a7eea97d7050d", + "9d1759902e2e434e8e03d9dbac2aba61", + "07bb7e5c0c7e47c89c5bdf367d374fd4", + "38e007c33b8f47d8add75b6ca4fc6b35", + "dfbd0d9abe3e42358e5d3d80a728679c", + "15c1ac54ded04d8d8bc2e4a9674623b1", + "41debd8518784954995bafd7bcd1c27c", + "fd19b2ce2811470da0a6b3b541e0dd54", + "57e227bf35d04176bd0177e250ad22f0", + "058794f5a95e4f8585176fe0eb5e410f", + "d4d804a7ef9e48f7b57b942b7a1a9e91", + "a4eda996db4c4da581a916b5244706d7", + "06264e7159cf446586984dba53cb27a6", + "36e689638e774af6a35ead528de1b22d", + "011ea8b1346f4999818c791770d327c0", + "c880587c3c4944cb99bfcc5fe8b59f43", + "5aa95d5379d94696a7298212f7b17b14", + "0632d33deb8f465897b8266f9a899b52", + "f8d7d4220c814029bc4388254c297204", + "dc3ff446730243d5a05aa88fcb371cdb", + "87cfefa4fd314952bb69403823c49c8f", + "07355dd4e4454ca2a7fde919bb7bd442", + "4c4140722559412ab0c2ca81da8ceb71", + "d113af4076b84ca286300ab548eb1b44", + "9576c3a585174fa28d889d902de7e17e", + "9a90eb86b925404dbdf2425d2a3866ed", + "41e649c10f904c79b1232d79c629476a", + "4a00f666228c46bba25420681f8525fa", + "59a5439daf2642c79977a7441643fc04", + "9c7866643e784e109084d34af22be54d", + "54b1a7960aaa444894442d3417786224", + "4e5dad5e1298496e9440bf4485d2037d", + "c546de6b3fec49f085337ccf903d2c62", + "ec1d02b9980245f3bedc6d175254bb25", + "c337f66f025448a7b3a40eabd528284c", + "e20080ec7b284a73bc66dc896b03c60d", + "74b1fe3271c840a48b301d38e16ddf84", + "f43df421076a48ebb6dee6f662f81622", + "20e4401f273f4fdfa8ec476068322ec1", + "ceab0cf0dabb4193bdb33b7e4f351d97", + "f1d90d2893464d17b479a98053ccb6ea", + "c794b00a761a4e4b9249c701311d1bad", + "d91b5b1fccae43c2a8f00dedf097f967", + "8e61e7621a9c423899c9447909026bbd", + "ca9a9127581b4e1593149ab86d645726", + "22633dc0c6724dd0bb2250d74336de72", + "304a467fb49b458a9a614dff40fbf448", + "3162f606a5444894af729d47fcc5f3ca", + "ff306e677ae1476f968dca49cb2d6247", + "d5c64df44f5745468a7e15385ac3d4b7", + "ffa4f23d47d8453e868fc09f3fddffb3", + "0d288a0468f3488a94b7ee56662674b8", + "188d515008654d03b4895dc1d7d847a5", + "43913d05581c4977883f70b742ac7eb6", + "d6c512e6d8d54ad98f263530fb708b1c", + "2a1f71137b6641b0a20a07ee2ac2c084", + "cb4231cf4d22435a8a798bed0b688aa9", + "436cc661fd0642a88b46b4e5fda35fcc", + "490a00a4e58d42cfbfa3aff58805c546", + "3354c6a532cf4bba843e20576d53acaf", + "21920623a4134edd85a8ec88845710f8", + "fe6f25b8673a43b6a467416ccd7f9756", + "3e50d864eaff474f9cbd41cc4eb4c315", + "c5028e9277fe4f17bc1c2cffecefd2ae", + "e5b86a306ef542668fc094d36e6a9afa", + "61286b2dc61442f281f462a9e7019911", + "f9ac26b018a7417e973cb65d82b137d2", + "071105023b184cc7b45a7c61ced1744e", + "c49f604ec40347fda99d11bd1b349d83", + "0968aea4d28d4569983b79aa61563665", + "bc7ec197ff034395acee46e33842b127", + "ea5b54503a854e919d77b62e12c87163", + "14b22a6823d240f099199da65e509af6", + "e504c7431649443a9b746ca9b448f877", + "690304465bed412fb5ab0d268eaf77d7", + "51a8cd10f4874b9294f0017570280c97", + "ab781f2867b14be6aa6ed27192ffd89e", + "12d7058d65c04b17be36f094aa64f3d7", + "e3d9c4cf381246a89c848c9a2cf77de9", + "6c1e556884ab426186c8c04e5a964961", + "d95c2373f51c40b4bf02acf78ad895b3", + "f7bb5a2fb9504e8bb4841876dbd7d4dc", + "919b582baf2d4e77bd2b8b361807a1bf", + "61336a1746f442ffbeaf2bec54f2cfef", + "0d87053a356d4707950c7b7aa9f9add1", + "5b4bb9ba287d4446a20e1a1f3b9a1f45", + "ec5d06c87f124d7eb352fca7155d86b5", + "bfc0f59cf57a4e31b37a6521982c496b", + "44e71e6fe2cd47b7afc59f10db222808", + "cd72c0db0ead4721b1f1313614c33bd6", + "975e61f2b39e4602bc47dd9effe22c94", + "bf7f39979a3e4708a0a8a4f38176e719", + "81c626dc795841ee9fda11fc52251e20", + "b90134444dcc4808ba753a0e0fc4781b", + "ce89733b23924cf2bf3ca4eae3d7bd68", + "43af109219f34083b46056cc08054aca", + "7491989c2fb042f884601f978dae1b71", + "3858f0b7aace45c1a3bbf6a0bc051a68", + "68f281395d304430887f8782240bedf8", + "14eedbbe350341aa96bed4e104917375", + "7fb52ca38bd74babae24364dbd08dc9b", + "a107ce7380064819875348c83e84a4e6", + "ca244250af15474ba47d07081f5233ec", + "177bff40bbda4e8b971fee1d1bceb81a", + "583821ba98e541918a55ef713e36d9e5", + "d801092196004fdc990418033d0907fe", + "44f14ea7dfae44c082555d8742fc6e9c", + "340f9e1041d84d8d907e8aeee83e9ca0", + "2eb627ebe8f1412da47c1d891757e1d4", + "34f99fd7402e4ee9be1e296125a89d29", + "f0b8da453d6849ddacb60427c9b02e92", + "566f16155a2047c483fab03ac6a57418", + "7e4c050b6f0641999d0c218d5f671986", + "5e523afffe7f400a952116e440c58f5d", + "b137a1573962430ab8286670189d0e2f", + "063a13080b784b35b4abfc1f4fafb9a3", + "2362a4811442458da19f908c667c3e2b", + "4829daf4ccc54fe1a868aae4b6e9b8c4", + "cdcac13ea2f34715997aa314be0dc36c", + "bc51aee6758e4fd288f7923a54b9e9e4", + "71127be67da4484ba2c40c117f563f7d", + "99cfbc3542f24512b46dfff08c54f88b", + "ffbf95a4a60f42b4836923e171eeabe5", + "2b2a745574524bee88dd7a8b12127777", + "855406407ab6456ea6c27b4df71cdfcd", + "e917842489b84a70999c067759e8ec5e", + "4fabb377dfcc442dbb95d14277659d36", + "e1d940796b3f45f7ba3a7ab004dac969", + "a7987eb166c34b4dab89939fa7548862", + "348d8a399cbb4f94b87283251711ec04", + "7b166b70c5c448cb9a67a247b31ee764", + "da2b9160994a452c998c8246e959f454", + "108ae22646e94370a090943c58a63c0a", + "d0e8f61b4d15447f95e473da447d6a07", + "ab656dcaca2b49bb85ca4204d3e0f282", + "6117d482f8d845439ae2db245e8617a5", + "7ab95bf1105942a9bbeede725866e0e8", + "76ba55672f4347f9aeee8bfb9f3beddf", + "c12a9828581342dba2ac7e13c51f5ea8", + "afcd628b031948e8a44dd7e54891a63b", + "80b808c87cf0428cad56d25849a09c94", + "24a6197fe2e843d486dfe1788261dfa6", + "ae0b4b622150413fbcf32b6b6b2bd0fb", + "d2725010156f407da5debad5e7cd26be", + "9448c5dde7fb4939aef56fc64e54d9a2", + "e72cf7774230443988484c066054a09a", + "355fde5458e54a68ab60e63579bc3b52", + "71520ca817ce4f01979da90bfa077feb", + "a1fe9c4d14cc4e1da2513d9c1d5e05a8", + "095867f426ca4808a15f3a9c9cc22343", + "cdd5883b30214a2db99a503a9858fa8c", + "43211746ab0c4e069ca0f30b2c9b7b88", + "6f21b1ae84ff4c13ac4455999769197b", + "8d658848166b426cb0a14249596fe248", + "65d3a6bba3c44e489ffd85a231fc987f", + "9a7517f027f54213bddaf5c747f0ef3f", + "96ceb7d5d0034baaa00b3fc14353d63f" + ] + }, + "executionInfo": { + "elapsed": 1118, + "status": "ok", + "timestamp": 1780391387564, + "user": { + "displayName": "Nicky Middleton", + "userId": "13859980946191540424" + }, + "user_tz": -60 + }, + "id": "Agp1bDaX6Z7X", + "outputId": "be0d710a-b8a3-4505-b63e-50fedc607d23" + }, + "outputs": [ + { + "data": { + "text/html": [ + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8478679914584395944fe8184adc6c81", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HTML(value='\\n\n", + "\"\"\")\n", + "\n", + "def create_dataset_card(label, description_text, dropdown_options=None,\n", + " dropdown_value=None, radio_label=None,\n", + " radio_options=None, tag=\"Optional\"):\n", + " \"\"\"\n", + " Creates a fully styled dataset card.\n", + " Returns: (card_widget, checkbox_widget)\n", + " \"\"\"\n", + " # 1. Create the checkbox\n", + " checkbox = widgets.Checkbox(description=label, value=False, indent=False)\n", + "\n", + " # 2. Status Badge (Tag)\n", + " tag_color = \"#1a73e8\" if tag == \"Required\" else \"#5f6368\"\n", + " tag_html = f\"{tag}\"\n", + "\n", + " # 3. Description with Tag\n", + " desc_content = f\"{tag_html}
\u2139\ufe0f {description_text}
\"\n", + " desc_widget = widgets.HTML(value=desc_content, layout=Layout(margin='5px 0 10px 0'))\n", + "\n", + " # 4. Assemble Card\n", + " card_items = [checkbox, desc_widget]\n", + " if dropdown_options:\n", + " controls = []\n", + " if dropdown_value is None:\n", + " dropdown_value = dropdown_options[0]\n", + " dropdown = widgets.Dropdown(\n", + " description='Source',\n", + " options=dropdown_options,\n", + " disabled=True,\n", + " value=dropdown_value\n", + " )\n", + " controls.append(dropdown)\n", + " if radio_options:\n", + " radio = widgets.RadioButtons(\n", + " options=radio_options,\n", + " description=radio_label,\n", + " disabled=True\n", + " )\n", + " controls.append(radio)\n", + " else:\n", + " radio = None\n", + " ctrl_box = HBox(controls, layout=Layout(grid_gap='20px', padding='0 0 0 20px'))\n", + " card_items.append(ctrl_box)\n", + " else:\n", + " dropdown = None\n", + " radio = None\n", + "\n", + " card = VBox(card_items, layout=Layout(width='100%', padding='15px', overflow='visible'))\n", + " card.add_class('dataset-card')\n", + "\n", + " return card, checkbox, dropdown, radio\n", + "\n", + "# Create the widgets\n", + "log_output = widgets.Output(\n", + " layout=Layout(\n", + " width='99%',\n", + " height='200px', # Fixed height keeps the dashboard stable\n", + " border='1px solid #e0e0e0',\n", + " overflow_y='scroll', # Adds a scrollbar if logs get long\n", + " margin='10px 0'\n", + " )\n", + ")\n", + "\n", + "title = widgets.HTML('

\ud83d\udcc2 Choose the datasets to download in the options below

')\n", + "\n", + "all_checkbox = widgets.Checkbox(\n", + " description='Select all', # Label\n", + " value=False, # Default value\n", + " disabled=False, # Whether to disable user changes\n", + " indent=False # Align with other controls with a description\n", + ")\n", + "\n", + "# --- Socio-Demographics ---\n", + "\n", + "pop_card, pop_checkbox, pop_dropdown, pop_radio = create_dataset_card(\n", + " '\ud83d\udc65 Population count',\n", + " 'Population count data provides the spatial distribution of ' +\n", + " 'inhabitants. This is critical for estimating electricity demand ' +\n", + " 'and identifying clusters for potential microgrid or grid ' +\n", + " 'extension projects.',\n", + " dropdown_options=['Worldpop'],\n", + " radio_options=['100m', '1km'],\n", + " radio_label='Resolution:',\n", + " tag=\"Required\"\n", + ")\n", + "\n", + "# --- Environmental ---\n", + "dem_card, dem_checkbox, dem_dropdown, _ = create_dataset_card(\n", + " '\ud83c\udfd4\ufe0f Elevation model',\n", + " 'Digital Elevation Model data (DEM), is used ' +\n", + " 'to determine terrain slope, and both terrain ' +\n", + " 'slope and elevation are used to specify grid extension suitability. ' +\n", + " 'There are several sources available, but a `SRTMGL3` with ' +\n", + " 'a resolution of ~90m is often enough, preventing ' +\n", + " 'large computation times.',\n", + " dropdown_options=sdk.apis.elevation_datasets['NASA'].keys(),\n", + " dropdown_value='SRTMGL3'\n", + ")\n", + "\n", + "solar_card, solar_checkbox, solar_dropdown, _ = create_dataset_card(\n", + " '\u2600\ufe0f Solar irradiation',\n", + " 'Solar irradiation (GHI) data measures the energy received ' +\n", + " 'from the sun. This is the primary input for determining ' +\n", + " 'the feasibility and sizing of solar photovoltaic (PV) ' +\n", + " 'installations.',\n", + " dropdown_options=['Global Solar Atlas'],\n", + " tag=\"Required\"\n", + ")\n", + "\n", + "solar_profile_card, solar_profile_checkbox, solar_profile_dropdown, _ = create_dataset_card(\n", + " '\u2600\ufe0f\ud83d\udd52 Solar hourly profile',\n", + " 'Solar hourly profile of the country of interest ' +\n", + " 'fetched from the RenewableNinja API. This data is used to ' +\n", + " 'size the PV based minigrids.',\n", + " dropdown_options=['RenewableNinja'],\n", + " tag=\"Required\"\n", + ")\n", + "\n", + "wind_card, wind_checkbox, wind_dropdown, wind_radio = create_dataset_card(\n", + " '\ud83c\udf2c\ufe0f Wind speed',\n", + " 'Wind speed data at various heights (hub heights) is used to ' +\n", + " 'assess the technical potential for wind energy generation. ' +\n", + " 'Higher resolution data helps pinpoint areas where turbines ' +\n", + " 'will be most productive.',\n", + " dropdown_options=['Global Wind Atlas'],\n", + " radio_options=['50', '100', '150', '200'],\n", + " radio_label='Height (m):',\n", + " tag=\"Required\"\n", + ")\n", + "\n", + "wind_profile_card, wind_profile_checkbox, wind_profile_dropdown, _ = create_dataset_card(\n", + " '\ud83c\udf2c\ufe0f\ud83d\udd52 Wind hourly profile',\n", + " 'Wind hourly profile of the country of interest ' +\n", + " 'fetched from the RenewableNinja API. This data is used to ' +\n", + " 'size the wind based minigrids.',\n", + " dropdown_options=['RenewableNinja'],\n", + " tag=\"Required\"\n", + ")\n", + "\n", + "land_card, land_checkbox, land_dropdown, _ = create_dataset_card(\n", + " '\ud83c\udf33 Land cover',\n", + " 'Landcover data classifies land into 17 ' +\n", + " 'specific categories. Different categories ' +\n", + " 'imply different penalties on the grid extension.',\n", + " dropdown_options = ['MODIS (MCD12Q1)']\n", + ")\n", + "\n", + "# --- Infrastructure ---\n", + "mv_card, mv_checkbox, mv_dropdown, _ = create_dataset_card(\n", + " '\u26a1 Medium voltage lines',\n", + " 'Medium voltage (MV) infrastructure data represents the existing ' +\n", + " 'power grid. Knowing the location of current lines allows the model ' +\n", + " 'to calculate the shortest and most cost-effective connection ' +\n", + " 'points for unelectrified areas.',\n", + " dropdown_options=['GridFinder'],\n", + " tag=\"Required\"\n", + ")\n", + "\n", + "ntl_card, ntl_checkbox, ntl_dropdown, _ = create_dataset_card(\n", + " '\ud83c\udf03 Nighttime lights',\n", + " 'Nighttime light (NTL) intensity is used as a proxy for ' +\n", + " 'existing electrification and economic activity. It helps ' +\n", + " 'validate population data and identifies areas that are ' +\n", + " 'likely already connected to the grid.',\n", + " dropdown_options=['WorldPop covariates derived from VNL 2.1/2.2'],\n", + " tag=\"Required\"\n", + ")\n", + "\n", + "roads_card, roads_checkbox, roads_dropdown, _ = create_dataset_card(\n", + " '\ud83d\udee3\ufe0f Roads',\n", + " 'Road network data is a key proxy for accessibility. ' +\n", + " 'Proximity to roads significantly reduces the logistical ' +\n", + " 'costs of transporting equipment and maintaining power ' +\n", + " 'infrastructure.',\n", + " dropdown_options=['OSM road network'],\n", + ")\n", + "\n", + "travel_card, travel_checkbox, travel_dropdown, _ = create_dataset_card(\n", + " '\ud83d\ude9a Traveltime',\n", + " 'Travel time data estimates the duration required to reach any given ' +\n", + " 'location from the nearest urban center or port. It accounts for road ' +\n", + " 'quality, terrain slope, and land cover, providing a metric for ' +\n", + " 'estimating transport costs of diesel for off-grid generators.',\n", + " dropdown_options=['Malarian Atlas'],\n", + ")\n", + "\n", + "settlements_card, settlements_checkbox, settlements_dropdown, _ = create_dataset_card(\n", + " '\ud83c\udfd8\ufe0f Settlements',\n", + " 'The settlements layer, clusters population from the GHSL dataset for ' +\n", + " 'Somalia, Sudan and South Sudan and HRSL for the rest of the countries. ' +\n", + " 'The population in these clusters are calibrated to 2016 population values.',\n", + " dropdown_options=['Khavari et.al.'],\n", + ")\n", + "\n", + "specs_card, specs_checkbox, _, _ = create_dataset_card(\n", + " '\ud83d\udccb Non-GIS Specs Template',\n", + " 'Generates an OnSSET_Specs_.xlsx file in Data//Specs/. '\n", + " 'The template has blank country-value cells and suggested open-data sources '\n", + " 'for every parameter OnSSET needs (electrification rates, population, '\n", + " 'technology costs, demand tiers). Fill it in before running the model.',\n", + " tag='Optional'\n", + ")\n", + "\n", + "download = Button(description='Get data',\n", + " icon= 'cloud-download',\n", + " layout=Layout(width='200px', height='40px'),\n", + " button_style='primary')\n", + "\n", + "def on_all_checkbox_changed(i):\n", + " if all_checkbox.value:\n", + " pop_checkbox.value = True\n", + " mv_checkbox.value = True\n", + " wind_checkbox.value = True\n", + " solar_checkbox.value = True\n", + " wind_profile_checkbox.value = True\n", + " solar_profile_checkbox.value = True\n", + " dem_checkbox.value = True\n", + " land_checkbox.value = True\n", + " ntl_checkbox.value = True\n", + " roads_checkbox.value = True\n", + " travel_checkbox.value = True\n", + " settlements_checkbox.value = True\n", + " specs_checkbox.value = True\n", + " else:\n", + " pop_checkbox.value = False\n", + " mv_checkbox.value = False\n", + " wind_checkbox.value = False\n", + " solar_checkbox.value = False\n", + " wind_profile_checkbox.value = False\n", + " solar_profile_checkbox.value = False\n", + " dem_checkbox.value = False\n", + " land_checkbox.value = False\n", + " ntl_checkbox.value = False\n", + " roads_checkbox.value = False\n", + " travel_checkbox.value = False\n", + " settlements_checkbox.value = False\n", + " specs_checkbox.value = False\n", + "\n", + "def on_pop_checkbox_changed(i):\n", + " if pop_checkbox.value:\n", + " pop_dropdown.disabled = False\n", + " pop_radio.disabled = False\n", + " else:\n", + " pop_dropdown.disabled = True\n", + " pop_radio.disabled = True\n", + "\n", + "def on_mv_checkbox_changed(i):\n", + " if mv_checkbox.value:\n", + " mv_dropdown.disabled = False\n", + " else:\n", + " mv_dropdown.disabled = True\n", + "\n", + "def on_wind_checkbox_changed(i):\n", + " if wind_checkbox.value:\n", + " wind_dropdown.disabled = False\n", + " wind_radio.disabled = False\n", + " else:\n", + " wind_dropdown.disabled = True\n", + " wind_radio.disabled = True\n", + "\n", + "def on_solar_checkbox_changed(i):\n", + " if solar_checkbox.value:\n", + " solar_dropdown.disabled = False\n", + " else:\n", + " solar_dropdown.disabled = True\n", + "\n", + "def on_solar_profile_checkbox_changed(i):\n", + " if solar_profile_checkbox.value:\n", + " solar_profile_dropdown.disabled = False\n", + " else:\n", + " solar_profile_dropdown.disabled = True\n", + "\n", + "def on_wind_profile_checkbox_changed(i):\n", + " if wind_profile_checkbox.value:\n", + " wind_profile_dropdown.disabled = False\n", + " else:\n", + " wind_profile_dropdown.disabled = True\n", + "\n", + "def on_dem_checkbox_changed(i):\n", + " if dem_checkbox.value:\n", + " dem_dropdown.disabled = False\n", + " else:\n", + " dem_dropdown.disabled = True\n", + "\n", + "def on_land_checkbox_changed(i):\n", + " if land_checkbox.value:\n", + " land_dropdown.disabled = False\n", + " else:\n", + " land_dropdown.disabled = True\n", + "\n", + "def on_ntl_checkbox_changed(i):\n", + " if ntl_checkbox.value:\n", + " ntl_dropdown.disabled = False\n", + " else:\n", + " ntl_dropdown.disabled = True\n", + "\n", + "def on_roads_checkbox_changed(i):\n", + " if roads_checkbox.value:\n", + " roads_dropdown.disabled = False\n", + " else:\n", + " roads_dropdown.disabled = True\n", + "\n", + "def on_travel_checkbox_changed(i):\n", + " if travel_checkbox.value:\n", + " travel_dropdown.disabled = False\n", + " else:\n", + " travel_dropdown.disabled = True\n", + "\n", + "def on_settlements_checkbox_changed(i):\n", + " if settlements_checkbox.value:\n", + " settlements_dropdown.disabled = False\n", + " else:\n", + " settlements_dropdown.disabled = True\n", + "\n", + "def on_download_clicked(i):\n", + " if Country == 'Select country':\n", + " # Even warning messages can go to the log\n", + " with log_output:\n", + " print('\u26a0\ufe0f Please select a country first.')\n", + " return\n", + "\n", + " # Clear previous logs for a fresh start\n", + " log_output.clear_output()\n", + "\n", + " download.disabled = True # Prevent double-clicks\n", + " download.description = ' Fetching...' # Change text\n", + " download.icon = 'spinner' # Set to spinner icon\n", + " download.button_style = 'warning' # Change color to yellow/orange\n", + "\n", + " # Trap the tqdm and print statements inside the output widget\n", + " with log_output:\n", + " total_downloads = 1 # for boundaries\n", + "\n", + " if pop_checkbox.value:\n", + " total_downloads += 1\n", + " if mv_checkbox.value:\n", + " total_downloads += 1\n", + " if wind_checkbox.value:\n", + " total_downloads += 1\n", + " if solar_checkbox.value:\n", + " total_downloads += 1\n", + " if wind_profile_checkbox.value:\n", + " total_downloads += 1\n", + " if solar_profile_checkbox.value:\n", + " total_downloads += 1\n", + " if dem_checkbox.value:\n", + " total_downloads += 1\n", + " if land_checkbox.value:\n", + " total_downloads += 1\n", + " if ntl_checkbox.value:\n", + " total_downloads += 1\n", + " if roads_checkbox.value:\n", + " total_downloads += 1\n", + " if travel_checkbox.value:\n", + " total_downloads += 1\n", + " if settlements_checkbox.value:\n", + " total_downloads += 1\n", + " if specs_checkbox.value:\n", + " total_downloads += 1\n", + "\n", + " with tqdm(total=total_downloads, desc=\"\ud83d\udd04 Downloading datasets\") as pbar:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading boundaries\")\n", + " sdk.apis.get_boundaries(Country)\n", + " pbar.update(1)\n", + "\n", + "\n", + " if pop_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading population data\")\n", + " sdk.apis.get_population_data(Country, pop_radio.value)\n", + " pbar.update(1)\n", + " if mv_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading medium voltage lines\")\n", + " sdk.apis.get_power_lines(Country)\n", + " pbar.update(1)\n", + " if wind_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading wind speed data\")\n", + " sdk.apis.get_wind_data(Country, wind_radio.value)\n", + " pbar.update(1)\n", + " if solar_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading solar irradiation data\")\n", + " sdk.apis.get_solar_data(Country)\n", + " pbar.update(1)\n", + " if wind_profile_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading wind speed data\")\n", + " sdk.apis.get_wind_profile(Country)\n", + " pbar.update(1)\n", + " if solar_profile_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading solar irradiation data\")\n", + " sdk.apis.get_solar_profile(Country)\n", + " pbar.update(1)\n", + " if dem_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading elevation model data\")\n", + " sdk.apis.get_dem_data(country=Country, database='Nasa Earth',\n", + " nasa_username=NASA_username, nasa_password=NASA_password,\n", + " dem_type=dem_dropdown.value)\n", + " pbar.update(1)\n", + " if land_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading land cover data\")\n", + " sdk.apis.get_landcover_data(country=Country,\n", + " username=NASA_username, password=NASA_password)\n", + " pbar.update(1)\n", + " if ntl_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading nighttime lights data\")\n", + " sdk.apis.get_ntl_data(Country)\n", + " pbar.update(1)\n", + " if roads_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading roads data\")\n", + " sdk.apis.get_roads(Country) # , roads_types.value)\n", + " pbar.update(1)\n", + " if travel_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading traveltime data\")\n", + " sdk.apis.get_traveltime_data(Country) # , roads_types.value)\n", + " pbar.update(1)\n", + " if settlements_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udd04 Downloading traveltime data\")\n", + " sdk.apis.get_settlements(Country) # , roads_types.value)\n", + " pbar.update(1)\n", + " if specs_checkbox.value:\n", + " pbar.set_description(\"\ud83d\udccb Generating non-GIS specs template\")\n", + " generate_specs_template(Country)\n", + " pbar.update(1)\n", + " print('\\n\\033[1m\u2705 Data downloaded succesfully to session \ud83c\udf89\\033[0m')\n", + "\n", + " download.icon = 'check' # Change to checkmark\n", + " download.description = ' Data Ready'\n", + " download.button_style = 'success' # Change color to green\n", + "\n", + " time.sleep(3)\n", + "\n", + " download.description = 'Get Data'\n", + " download.icon = 'cloud-download'\n", + " download.button_style = 'primary'\n", + " download.disabled = False # Re-enable if you want them to download again\n", + "\n", + "hr = widgets.HTML(value=\"
\")\n", + "space = widgets.HTML(value=\"
\")\n", + "\n", + "selection_summary = widgets.Label(value=\"0 datasets selected\")\n", + "\n", + "def update_summary(change):\n", + " count = sum([pop_checkbox.value, mv_checkbox.value,\n", + " wind_checkbox.value, solar_checkbox.value, dem_checkbox.value,\n", + " land_checkbox.value, ntl_checkbox.value, roads_checkbox.value,\n", + " travel_checkbox.value, settlements_checkbox.value,\n", + " solar_profile_checkbox.value, wind_profile_checkbox.value,\n", + " specs_checkbox.value])\n", + " selection_summary.value = f\"\ud83d\udcca Total datasets to fetch: {count}\"\n", + "\n", + "# Link all checkboxes to this function\n", + "for cb in [pop_checkbox, mv_checkbox, wind_checkbox,\n", + " solar_checkbox, dem_checkbox, land_checkbox, ntl_checkbox, roads_checkbox,\n", + " travel_checkbox, settlements_checkbox, wind_profile_checkbox,\n", + " solar_profile_checkbox, specs_checkbox]:\n", + " cb.observe(update_summary, names='value')\n", + "\n", + "# 3. Build UI Structure\n", + "master_toggle_card = VBox([all_checkbox], layout=Layout(width='100%', padding='10px')).add_class('select-all-container')\n", + "\n", + "socio_acc = widgets.Accordion(children=[VBox([pop_card, settlements_card, specs_card])])\n", + "socio_acc.set_title(0, '\ud83d\udc64 Socio-Demographics')\n", + "socio_acc.add_class('borderless-accordion')\n", + "\n", + "env_acc = widgets.Accordion(children=[VBox([dem_card, solar_card, solar_profile_card, wind_card, wind_profile_card, land_card])])\n", + "env_acc.set_title(0, '\ud83c\udf0d Physical & Environment')\n", + "env_acc.add_class('borderless-accordion')\n", + "\n", + "infra_acc = widgets.Accordion(children=[VBox([mv_card, ntl_card, roads_card, travel_card])])\n", + "infra_acc.set_title(0, '\ud83c\udfd7\ufe0f Infrastructure')\n", + "infra_acc.add_class('borderless-accordion')\n", + "\n", + "# 4. Observers (Reuse your existing on_change functions here)\n", + "# Example:\n", + "all_checkbox.observe(on_all_checkbox_changed, names='value')\n", + "pop_checkbox.observe(on_pop_checkbox_changed, names='value')\n", + "mv_checkbox.observe(on_mv_checkbox_changed, names='value')\n", + "wind_checkbox.observe(on_wind_checkbox_changed, names='value')\n", + "solar_checkbox.observe(on_solar_checkbox_changed, names='value')\n", + "wind_profile_checkbox.observe(on_wind_profile_checkbox_changed, names='value')\n", + "solar_profile_checkbox.observe(on_solar_profile_checkbox_changed, names='value')\n", + "dem_checkbox.observe(on_dem_checkbox_changed, names='value')\n", + "land_checkbox.observe(on_land_checkbox_changed, names='value')\n", + "ntl_checkbox.observe(on_ntl_checkbox_changed, names='value')\n", + "roads_checkbox.observe(on_roads_checkbox_changed, names='value')\n", + "travel_checkbox.observe(on_travel_checkbox_changed, names='value')\n", + "settlements_checkbox.observe(on_travel_checkbox_changed, names='value')\n", + "download.on_click(on_download_clicked)\n", + "\n", + "# 5. Final Display\n", + "app_interface = VBox([\n", + " title,\n", + " space,\n", + " master_toggle_card,\n", + " socio_acc,\n", + " env_acc,\n", + " infra_acc,\n", + " selection_summary,\n", + " widgets.HTML(\"\ud83d\udef0\ufe0f Console output\"),\n", + " log_output,\n", + " HBox([download], layout=Layout(justify_content='center', padding='20px'))\n", + "], layout=Layout(max_width='1050px', margin='0 auto'))\n", + "\n", + "display(fa_loader, font_style, app_interface)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 56, + "referenced_widgets": [ + "cda544ef18c2437ab574aa1f37964cdd", + "6300ed94739941d2a7caa68be393e267", + "50d9367604994f6bbc49854a46cca7ae", + "0014e629542f4cf48a20badb7b08ba38", + "d3da55e269774b5585dd70b8424f2846", + "4f47e78a5fc04eac907954401a34c097", + "e3dcb3ee00fb4dbabced5c61666edf78", + "9353b0f700a34a219cfd7d7fc9a87b4c" + ] + }, + "executionInfo": { + "elapsed": 45, + "status": "ok", + "timestamp": 1780392426572, + "user": { + "displayName": "Nicky Middleton", + "userId": "13859980946191540424" + }, + "user_tz": -60 + }, + "id": "ZO2LczzvnZeF", + "outputId": "78bf272e-fbee-466c-d637-9c33031435b9" + }, + "outputs": [ + { + "data": { + "text/html": [ + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "cda544ef18c2437ab574aa1f37964cdd", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Dropdown(description='Country', options=('TCD',), value='TCD'), Button(button_style='danger', d\u2026" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# @title # \ud83d\uddd1\ufe0f Delete country data\n", + "# @markdown Run this cell to select a country to delete from the session.\n", + "# @markdown > \u26a0\ufe0f If you downloaded data for a new country with the form above, you need to\n", + "# @markdown rerun this cell for it to appear in the dropdown.\n", + "# # delete data for a country\n", + "display(HTML(''' '''))\n", + "\n", + "def on_delete(b):\n", + " try:\n", + " !rm -rf /content/Data/{country_dropdown.value}\n", + " except:\n", + " pass\n", + " if country_dropdown.value is not None:\n", + " print(f'{country_dropdown.value} data deleted!')\n", + " country_dropdown.options = get_countries()\n", + "\n", + "def get_countries():\n", + " countries = set()\n", + " try:\n", + " countries.update([files.split('/')[1] for files in glob.glob(f'Data/*')])\n", + " except:\n", + " pass\n", + " return countries\n", + "\n", + "\n", + "country_dropdown = widgets.Dropdown(\n", + " description='Country',\n", + " options=get_countries(),\n", + " disabled=False\n", + ")\n", + "delete = Button(description='Delete data',\n", + " icon='trash',\n", + " layout=Layout(width='200px', height='35px'),\n", + " button_style='danger')\n", + "\n", + "delete.on_click(on_delete)\n", + "\n", + "display(HBox([country_dropdown, delete]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "executionInfo": { + "elapsed": 56471, + "status": "ok", + "timestamp": 1780392486507, + "user": { + "displayName": "Nicky Middleton", + "userId": "13859980946191540424" + }, + "user_tz": -60 + }, + "id": "0clJ3kWOgi5m", + "outputId": "ed863890-8eec-4966-b766-f40f7c4b0791" + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + " async function download(id, filename, size) {\n", + " if (!google.colab.kernel.accessAllowed) {\n", + " return;\n", + " }\n", + " const div = document.createElement('div');\n", + " const label = document.createElement('label');\n", + " label.textContent = `Downloading \"${filename}\": `;\n", + " div.appendChild(label);\n", + " const progress = document.createElement('progress');\n", + " progress.max = size;\n", + " div.appendChild(progress);\n", + " document.body.appendChild(div);\n", + "\n", + " const buffers = [];\n", + " let downloaded = 0;\n", + "\n", + " const channel = await google.colab.kernel.comms.open(id);\n", + " // Send a message to notify the kernel that we're ready.\n", + " channel.send({})\n", + "\n", + " for await (const message of channel.messages) {\n", + " // Send a message to notify the kernel that we're ready.\n", + " channel.send({})\n", + " if (message.buffers) {\n", + " for (const buffer of message.buffers) {\n", + " buffers.push(buffer);\n", + " downloaded += buffer.byteLength;\n", + " progress.value = downloaded;\n", + " }\n", + " }\n", + " }\n", + " const blob = new Blob(buffers, {type: 'application/binary'});\n", + " const a = document.createElement('a');\n", + " a.href = window.URL.createObjectURL(blob);\n", + " a.download = filename;\n", + " div.appendChild(a);\n", + " a.click();\n", + " div.remove();\n", + " }\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "download(\"download_c4ef8de0-c881-4cb2-b836-ffefcea57fe4\", \"data.zip\", 571887815)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# @title # \ud83d\udce5 Download data\n", + "# @markdown Run this cell to download all files in the session to your computer.\n", + "import os\n", + "import zipfile\n", + "import glob\n", + "from google.colab import files as cfiles\n", + "from IPython.display import display\n", + "import ipywidgets as widgets\n", + "\n", + "def zip_and_download(folder_names, zip_filename):\n", + " \"\"\"Zips specified folders and downloads the zip file.\"\"\"\n", + " with zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED) as zipf:\n", + " for folder_name in folder_names:\n", + " for root, _, files in os.walk(folder_name):\n", + " for file in files:\n", + " file_path = os.path.join(root, file)\n", + " arcname = os.path.relpath(file_path, '/content/')\n", + " zipf.write(file_path, arcname=arcname)\n", + " cfiles.download(zip_filename)\n", + "\n", + "# Detect country folders in Data/\n", + "folders_to_zip = glob.glob('Data/*')\n", + "country_codes = sorted([os.path.basename(f) for f in folders_to_zip if os.path.isdir(f)])\n", + "zip_filename = '_'.join(country_codes) + '.zip' if country_codes else 'data.zip'\n", + "\n", + "def do_download():\n", + " print(f\"\ud83d\udce6 Zipping and downloading: {zip_filename}\")\n", + " zip_and_download(folders_to_zip, zip_filename)\n", + "\n", + "if len(country_codes) > 1:\n", + " # Show warning with Yes/No buttons\n", + " warning_label = widgets.HTML(\n", + " value=f'''
\n", + " \u26a0\ufe0f Warning: There is more than one country's data loaded in this session\n", + " ({\", \".join(country_codes)}).

\n", + " Are you sure you would like to continue and download {zip_filename}?\n", + "
'''\n", + " )\n", + " yes_btn = widgets.Button(description=\"\u2705 Yes, download\", button_style=\"success\", layout=widgets.Layout(width=\"160px\"))\n", + " no_btn = widgets.Button(description=\"\u274c No, cancel\", button_style=\"danger\", layout=widgets.Layout(width=\"160px\"))\n", + " out = widgets.Output()\n", + "\n", + " def on_yes(b):\n", + " yes_btn.disabled = True\n", + " no_btn.disabled = True\n", + " with out:\n", + " do_download()\n", + "\n", + " def on_no(b):\n", + " yes_btn.disabled = True\n", + " no_btn.disabled = True\n", + " with out:\n", + " print(\"\u274c Download cancelled.\")\n", + "\n", + " yes_btn.on_click(on_yes)\n", + " no_btn.on_click(on_no)\n", + " display(warning_label, widgets.HBox([yes_btn, no_btn]), out)\n", + "\n", + "else:\n", + " do_download()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "zkuYJF2B1hmc" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "cell_execution_strategy": "setup", + "provenance": [] + }, + "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.12.11" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "0014e629542f4cf48a20badb7b08ba38": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "011ea8b1346f4999818c791770d327c0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "036c3e7ed8ae4bdf85d292b8ea92126f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "047eb506d3884985b44aa8f8af8a4dd7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "058794f5a95e4f8585176fe0eb5e410f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "06264e7159cf446586984dba53cb27a6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "Global Wind Atlas" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_c5028e9277fe4f17bc1c2cffecefd2ae", + "style": "IPY_MODEL_e5b86a306ef542668fc094d36e6a9afa" + } + }, + "0632d33deb8f465897b8266f9a899b52": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "063a13080b784b35b4abfc1f4fafb9a3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_71127be67da4484ba2c40c117f563f7d", + "max": 204, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_99cfbc3542f24512b46dfff08c54f88b", + "value": 204 + } + }, + "06dfb7c58af14c32bbfa6fe3c4268d67": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "071105023b184cc7b45a7c61ced1744e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "07355dd4e4454ca2a7fde919bb7bd442": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "074d4e77a4ef47ef9699cb5e74faf84c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_dc3ff446730243d5a05aa88fcb371cdb" + ], + "layout": "IPY_MODEL_87cfefa4fd314952bb69403823c49c8f" + } + }, + "07bb7e5c0c7e47c89c5bdf367d374fd4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "095867f426ca4808a15f3a9c9cc22343": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9a7517f027f54213bddaf5c747f0ef3f", + "placeholder": "\u200b", + "style": "IPY_MODEL_96ceb7d5d0034baaa00b3fc14353d63f", + "value": "\u20076/6\u2007[00:00<00:00,\u2007355.20it/s]" + } + }, + "0968aea4d28d4569983b79aa61563665": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0c89e8afe32340118001f081a80c788f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "LabelModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "LabelModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "LabelView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_579df1ed33b941ad8f58ca79eca777d1", + "placeholder": "\u200b", + "style": "IPY_MODEL_f4d30d70af7d4cc4848482fc4dd4cc95", + "value": "\ud83d\udcca Total datasets to fetch: 13" + } + }, + "0d288a0468f3488a94b7ee56662674b8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0d87053a356d4707950c7b7aa9f9add1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0dbc1dc2c3c94b94b860e985b85375a8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0dcca2c5fe77427f9049c73ab0bd9fb1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "AccordionModel", + "state": { + "_dom_classes": [ + "borderless-accordion" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "AccordionModel", + "_titles": { + "0": "\ud83c\udf0d Physical & Environment" + }, + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "AccordionView", + "box_style": "", + "children": [ + "IPY_MODEL_11acf62b308b45a1b43362793d7de56f" + ], + "layout": "IPY_MODEL_7d56b0635749481094a1903ac9c855e1", + "selected_index": 0 + } + }, + "0fab953ce6a84643a0c860814e7e26d9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4e5dad5e1298496e9440bf4485d2037d" + ], + "layout": "IPY_MODEL_c546de6b3fec49f085337ccf903d2c62" + } + }, + "108ae22646e94370a090943c58a63c0a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "111a3a0115be46338e359420c04c6821": { + "model_module": "@jupyter-widgets/output", + "model_module_version": "1.0.0", + "model_name": "OutputModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_6c1e556884ab426186c8c04e5a964961", + "msg_id": "", + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d95c2373f51c40b4bf02acf78ad895b3", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": "\ud83d\udd04 Downloading datasets: 0%| | 0/14 [00:00Required
\u2139\ufe0f Solar irradiation (GHI) data measures the energy received from the sun. This is the primary input for determining the feasibility and sizing of solar photovoltaic (PV) installations.
" + } + }, + "2db2058914944900b2273e26ff81778a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_df693f93cb294d06a82019126349c4bd", + "IPY_MODEL_1bafd667ce124f5690f59a0a8d817899", + "IPY_MODEL_b56133c5702f466cb0674ae126ff6cb1", + "IPY_MODEL_f34d1b91112f4cdd80844f7776368b63" + ], + "layout": "IPY_MODEL_93b1ee28fb364a3dbe941e6120b61454" + } + }, + "2dd6ebae49f14fd5825a6fa08aa10e76": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2eb627ebe8f1412da47c1d891757e1d4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2f6eae55534f4d528270cedeed16c6a5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83c\udf2c\ufe0f Wind speed", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_57e227bf35d04176bd0177e250ad22f0", + "style": "IPY_MODEL_058794f5a95e4f8585176fe0eb5e410f", + "value": true + } + }, + "304a467fb49b458a9a614dff40fbf448": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3162f606a5444894af729d47fcc5f3ca": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "33351dda3e5548abbdf5274a748c74ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3354c6a532cf4bba843e20576d53acaf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "340f9e1041d84d8d907e8aeee83e9ca0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "348d8a399cbb4f94b87283251711ec04": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "34f99fd7402e4ee9be1e296125a89d29": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "355fde5458e54a68ab60e63579bc3b52": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_71520ca817ce4f01979da90bfa077feb", + "IPY_MODEL_a1fe9c4d14cc4e1da2513d9c1d5e05a8", + "IPY_MODEL_095867f426ca4808a15f3a9c9cc22343" + ], + "layout": "IPY_MODEL_cdd5883b30214a2db99a503a9858fa8c" + } + }, + "360a1d4b3e1d4624b614b95ae246384e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "36e689638e774af6a35ead528de1b22d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "RadioButtonsModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "RadioButtonsModel", + "_options_labels": [ + "100", + "150", + "200" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "RadioButtonsView", + "description": "Height (m):", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_61286b2dc61442f281f462a9e7019911", + "style": "IPY_MODEL_f9ac26b018a7417e973cb65d82b137d2" + } + }, + "38557cb13eef4561b1a169fc7d522120": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "3858f0b7aace45c1a3bbf6a0bc051a68": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3864c0af56fa4f50837f94a69c41b59b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": "center", + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "38e007c33b8f47d8add75b6ca4fc6b35": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3c5a32f6f529409682bfca0d344cd102": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_efbcccce66634c81a98a7eea97d7050d" + ], + "layout": "IPY_MODEL_9d1759902e2e434e8e03d9dbac2aba61" + } + }, + "3e50d864eaff474f9cbd41cc4eb4c315": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3ecc8a342d4940038a96afedfc5a9862": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2f6eae55534f4d528270cedeed16c6a5", + "IPY_MODEL_4e0d8145a23e4e1c8437604923f59d08", + "IPY_MODEL_abe6f9095a9f4a5680ce2da3e1e425af" + ], + "layout": "IPY_MODEL_6aa50758e2734f6187e300ba41233573" + } + }, + "412ef437f67542dd8c3d2e88b5c5c7d5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "41debd8518784954995bafd7bcd1c27c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "RenewableNinja" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_fe6f25b8673a43b6a467416ccd7f9756", + "style": "IPY_MODEL_3e50d864eaff474f9cbd41cc4eb4c315" + } + }, + "41e649c10f904c79b1232d79c629476a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "43211746ab0c4e069ca0f30b2c9b7b88": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "436cc661fd0642a88b46b4e5fda35fcc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "43913d05581c4977883f70b742ac7eb6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "43af109219f34083b46056cc08054aca": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "44e71e6fe2cd47b7afc59f10db222808": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "44f14ea7dfae44c082555d8742fc6e9c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "451a82af05ff4e8fb330f472db0bb8af": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d113af4076b84ca286300ab548eb1b44", + "placeholder": "\u200b", + "style": "IPY_MODEL_9576c3a585174fa28d889d902de7e17e", + "value": "Optional
\u2139\ufe0f Landcover data classifies land into 17 specific categories. Different categories imply different penalties on the grid extension.
" + } + }, + "46bbf35380d9449fbbed80e27e3e4890": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "474bbb019d82448da4d144583591269e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4829daf4ccc54fe1a868aae4b6e9b8c4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "48b6df95e4204b4b8741cb9737cd746d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_bebf92e34e584fc097c9d396e1103202", + "IPY_MODEL_f8efe7d49718498cb5ab2218060b2e47" + ], + "layout": "IPY_MODEL_94b68e6ae5944ec497a1925e3a4a4e24" + } + }, + "48b90f06a23c4578abfb0233d3ae94a3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e20080ec7b284a73bc66dc896b03c60d", + "placeholder": "\u200b", + "style": "IPY_MODEL_74b1fe3271c840a48b301d38e16ddf84", + "value": "Required
\u2139\ufe0f Nighttime light (NTL) intensity is used as a proxy for existing electrification and economic activity. It helps validate population data and identifies areas that are likely already connected to the grid.
" + } + }, + "490a00a4e58d42cfbfa3aff58805c546": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4a00f666228c46bba25420681f8525fa": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4bacbf8e65f44386948efe98603d90ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8481bc879692436aa4a98bd5f4db7868", + "IPY_MODEL_bdcd321292fb455090d5d812cf4ede0b" + ], + "layout": "IPY_MODEL_b959807f9c3c44ebaf6c7934d6b0438d" + } + }, + "4c4140722559412ab0c2ca81da8ceb71": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4dea281f97dc4623ae2f9ab3bd0978a5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4e0d8145a23e4e1c8437604923f59d08": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d4d804a7ef9e48f7b57b942b7a1a9e91", + "placeholder": "\u200b", + "style": "IPY_MODEL_a4eda996db4c4da581a916b5244706d7", + "value": "Required
\u2139\ufe0f Wind speed data at various heights (hub heights) is used to assess the technical potential for wind energy generation. Higher resolution data helps pinpoint areas where turbines will be most productive.
" + } + }, + "4e5dad5e1298496e9440bf4485d2037d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "GridFinder" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_ea5b54503a854e919d77b62e12c87163", + "style": "IPY_MODEL_14b22a6823d240f099199da65e509af6" + } + }, + "4f2b37882583479fba177f3facfd7472": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_da759e82ebfc47138093f9ba21e83d3a" + ], + "layout": "IPY_MODEL_6b90bd4664c74d6aab256e9040d7f938" + } + }, + "4f47e78a5fc04eac907954401a34c097": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4f7236058bcf46c1ac3d62a8ebb27f60": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4fabb377dfcc442dbb95d14277659d36": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_da2b9160994a452c998c8246e959f454", + "max": 6, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_108ae22646e94370a090943c58a63c0a", + "value": 6 + } + }, + "50d9367604994f6bbc49854a46cca7ae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "danger", + "description": "Delete data", + "disabled": false, + "icon": "trash", + "layout": "IPY_MODEL_e3dcb3ee00fb4dbabced5c61666edf78", + "style": "IPY_MODEL_9353b0f700a34a219cfd7d7fc9a87b4c", + "tooltip": "" + } + }, + "5103cf05c53d461db27fbfc7fca8c824": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "51a8cd10f4874b9294f0017570280c97": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5321c4ffac474ecb94c026d6fab1bdef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83d\udee3\ufe0f Roads", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_ceab0cf0dabb4193bdb33b7e4f351d97", + "style": "IPY_MODEL_f1d90d2893464d17b479a98053ccb6ea", + "value": true + } + }, + "541ecf91f8ba4ffbb03b92a13acb1c55": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0632d33deb8f465897b8266f9a899b52", + "placeholder": "\u200b", + "style": "IPY_MODEL_f8d7d4220c814029bc4388254c297204", + "value": "Required
\u2139\ufe0f Wind hourly profile of the country of interest fetched from the RenewableNinja API. This data is used to size the wind based minigrids.
" + } + }, + "54b1a7960aaa444894442d3417786224": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5539a26b5796429c94023fa9ad4712ed": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "5569a4c4ffa04622bcac517224ebc8cb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_216597d71b8c4de6ae59daf7bf4ea986", + "placeholder": "\u200b", + "style": "IPY_MODEL_d4f73ebb09fb4a219e6a0df79c9c2e62", + "value": "Required
\u2139\ufe0f Population count data provides the spatial distribution of inhabitants. This is critical for estimating electricity demand and identifying clusters for potential microgrid or grid extension projects.
" + } + }, + "566f16155a2047c483fab03ac6a57418": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "579df1ed33b941ad8f58ca79eca777d1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "57e227bf35d04176bd0177e250ad22f0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "583821ba98e541918a55ef713e36d9e5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_34f99fd7402e4ee9be1e296125a89d29", + "max": 204, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f0b8da453d6849ddacb60427c9b02e92", + "value": 204 + } + }, + "59a5439daf2642c79977a7441643fc04": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5aa95d5379d94696a7298212f7b17b14": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5b4bb9ba287d4446a20e1a1f3b9a1f45": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5d9deae4fd9d45f19ab1a2d2626798bd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8e61e7621a9c423899c9447909026bbd" + ], + "layout": "IPY_MODEL_ca9a9127581b4e1593149ab86d645726" + } + }, + "5e523afffe7f400a952116e440c58f5d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b137a1573962430ab8286670189d0e2f", + "IPY_MODEL_063a13080b784b35b4abfc1f4fafb9a3", + "IPY_MODEL_2362a4811442458da19f908c667c3e2b" + ], + "layout": "IPY_MODEL_4829daf4ccc54fe1a868aae4b6e9b8c4" + } + }, + "6035c38f60b649e1b445786f02f370b7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "0 auto", + "max_height": null, + "max_width": "1050px", + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6117d482f8d845439ae2db245e8617a5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7ab95bf1105942a9bbeede725866e0e8", + "IPY_MODEL_76ba55672f4347f9aeee8bfb9f3beddf", + "IPY_MODEL_c12a9828581342dba2ac7e13c51f5ea8" + ], + "layout": "IPY_MODEL_afcd628b031948e8a44dd7e54891a63b" + } + }, + "61286b2dc61442f281f462a9e7019911": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "61336a1746f442ffbeaf2bec54f2cfef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cd72c0db0ead4721b1f1313614c33bd6", + "placeholder": "\u200b", + "style": "IPY_MODEL_975e61f2b39e4602bc47dd9effe22c94", + "value": "\u200714/14\u2007[11:11<00:00,\u200742.88s/it]" + } + }, + "614e826c9cfc404495eb416d91799784": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83d\ude9a Traveltime", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_22633dc0c6724dd0bb2250d74336de72", + "style": "IPY_MODEL_304a467fb49b458a9a614dff40fbf448", + "value": true + } + }, + "62238ca6c1eb4929bd23aacf258863b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6300ed94739941d2a7caa68be393e267": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "TCD" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Country", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_d3da55e269774b5585dd70b8424f2846", + "style": "IPY_MODEL_4f47e78a5fc04eac907954401a34c097" + } + }, + "6539cadbba8546b6944f89c164305067": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "65d3a6bba3c44e489ffd85a231fc987f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "65faf64037814a57a592456ea6346a3c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "68f281395d304430887f8782240bedf8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "690304465bed412fb5ab0d268eaf77d7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6aa50758e2734f6187e300ba41233573": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "6b47d429651f4f02865eda6b18ffaa00": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9c7866643e784e109084d34af22be54d", + "placeholder": "\u200b", + "style": "IPY_MODEL_54b1a7960aaa444894442d3417786224", + "value": "Required
\u2139\ufe0f Medium voltage (MV) infrastructure data represents the existing power grid. Knowing the location of current lines allows the model to calculate the shortest and most cost-effective connection points for unelectrified areas.
" + } + }, + "6b90bd4664c74d6aab256e9040d7f938": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6c1e556884ab426186c8c04e5a964961": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": "1px solid #e0e0e0", + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": "200px", + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": "scroll", + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "99%" + } + }, + "6f21b1ae84ff4c13ac4455999769197b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "71127be67da4484ba2c40c117f563f7d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "71520ca817ce4f01979da90bfa077feb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_43211746ab0c4e069ca0f30b2c9b7b88", + "placeholder": "\u200b", + "style": "IPY_MODEL_6f21b1ae84ff4c13ac4455999769197b", + "value": "COLLECTING\u2007RESULTS\u2007|\u2007:\u2007100%" + } + }, + "72b575cdd5ad48f8a4917ec7e618fbb5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7491989c2fb042f884601f978dae1b71": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "74b1fe3271c840a48b301d38e16ddf84": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7593e59876d14c55ad2f43defde4b210": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "AccordionModel", + "state": { + "_dom_classes": [ + "borderless-accordion" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "AccordionModel", + "_titles": { + "0": "\ud83c\udfd7\ufe0f Infrastructure" + }, + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "AccordionView", + "box_style": "", + "children": [ + "IPY_MODEL_2db2058914944900b2273e26ff81778a" + ], + "layout": "IPY_MODEL_412ef437f67542dd8c3d2e88b5c5c7d5", + "selected_index": 0 + } + }, + "76ba55672f4347f9aeee8bfb9f3beddf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ae0b4b622150413fbcf32b6b6b2bd0fb", + "max": 6, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d2725010156f407da5debad5e7cd26be", + "value": 6 + } + }, + "77947946903245dcae82605967edb023": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7ab95bf1105942a9bbeede725866e0e8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_80b808c87cf0428cad56d25849a09c94", + "placeholder": "\u200b", + "style": "IPY_MODEL_24a6197fe2e843d486dfe1788261dfa6", + "value": "PROCESSING\u2007TASKS\u2007|\u2007:\u2007100%" + } + }, + "7b166b70c5c448cb9a67a247b31ee764": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7d56b0635749481094a1903ac9c855e1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7e4c050b6f0641999d0c218d5f671986": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7fb52ca38bd74babae24364dbd08dc9b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "80b808c87cf0428cad56d25849a09c94": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "817bc9a4fbf949cda2ce5476b686d6af": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c5cf0292457d4d2f9418bfd2ac74324b", + "IPY_MODEL_e549abbeb2424fab842cca44727b83b5", + "IPY_MODEL_21deba4cea4d4912adaee3e7ff9ac4f0" + ], + "layout": "IPY_MODEL_360a1d4b3e1d4624b614b95ae246384e" + } + }, + "818bdddb27394457a441d821c8c20cdc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2dd6ebae49f14fd5825a6fa08aa10e76", + "placeholder": "\u200b", + "style": "IPY_MODEL_9d2828a87436484ea331f3e26e72717d", + "value": "

\ud83d\udcc2 Choose the datasets to download in the options below

" + } + }, + "81c626dc795841ee9fda11fc52251e20": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7491989c2fb042f884601f978dae1b71", + "placeholder": "\u200b", + "style": "IPY_MODEL_3858f0b7aace45c1a3bbf6a0bc051a68", + "value": "QUEUEING\u2007TASKS\u2007|\u2007:\u2007100%" + } + }, + "83381ce583d149e68ea5c7350a14a421": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8478679914584395944fe8184adc6c81": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4f7236058bcf46c1ac3d62a8ebb27f60", + "placeholder": "\u200b", + "style": "IPY_MODEL_83381ce583d149e68ea5c7350a14a421", + "value": "\n\n" + } + }, + "8481bc879692436aa4a98bd5f4db7868": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83d\udcb0 Socio-economic specifications", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_6539cadbba8546b6944f89c164305067", + "style": "IPY_MODEL_1649b257e5b34364a1d83a4e64c7e3d9", + "value": true + } + }, + "84b2f1c9a3fe499798122098d33062d7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83c\udf33 Land cover", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_07355dd4e4454ca2a7fde919bb7bd442", + "style": "IPY_MODEL_4c4140722559412ab0c2ca81da8ceb71", + "value": true + } + }, + "855406407ab6456ea6c27b4df71cdfcd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e917842489b84a70999c067759e8ec5e", + "IPY_MODEL_4fabb377dfcc442dbb95d14277659d36", + "IPY_MODEL_e1d940796b3f45f7ba3a7ab004dac969" + ], + "layout": "IPY_MODEL_a7987eb166c34b4dab89939fa7548862" + } + }, + "87cfefa4fd314952bb69403823c49c8f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8a9a1296910f4cd2890fcac26b0425a1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_94b216678f3f42a49250bbd47cc263c4", + "IPY_MODEL_541ecf91f8ba4ffbb03b92a13acb1c55", + "IPY_MODEL_074d4e77a4ef47ef9699cb5e74faf84c" + ], + "layout": "IPY_MODEL_8ace0e0f042a402da58b311ff5672a20" + } + }, + "8ace0e0f042a402da58b311ff5672a20": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "8c8b7d00ab0a42a0b27f591de3983cae": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8d2ac70fe34e4a2bbef553ae5d9fbb3b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_84b2f1c9a3fe499798122098d33062d7", + "IPY_MODEL_451a82af05ff4e8fb330f472db0bb8af", + "IPY_MODEL_aef7d67b7ff045c9ae715b4b847cf5a1" + ], + "layout": "IPY_MODEL_38557cb13eef4561b1a169fc7d522120" + } + }, + "8d658848166b426cb0a14249596fe248": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8e61e7621a9c423899c9447909026bbd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "OSM road network" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_51a8cd10f4874b9294f0017570280c97", + "style": "IPY_MODEL_ab781f2867b14be6aa6ed27192ffd89e" + } + }, + "919b582baf2d4e77bd2b8b361807a1bf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bfc0f59cf57a4e31b37a6521982c496b", + "max": 14, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_44e71e6fe2cd47b7afc59f10db222808", + "value": 14 + } + }, + "9290dbfd9f7b46d9a74bb43d512713d8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "93239cd42b6e4679a08d7a78d0a90576": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9353b0f700a34a219cfd7d7fc9a87b4c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "93b1ee28fb364a3dbe941e6120b61454": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9448c5dde7fb4939aef56fc64e54d9a2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "94b216678f3f42a49250bbd47cc263c4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83c\udf2c\ufe0f\ud83d\udd52 Wind hourly profile", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_c880587c3c4944cb99bfcc5fe8b59f43", + "style": "IPY_MODEL_5aa95d5379d94696a7298212f7b17b14", + "value": true + } + }, + "94b68e6ae5944ec497a1925e3a4a4e24": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "94eaf372a46c48d3a919776a0b3df27c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dfbd0d9abe3e42358e5d3d80a728679c", + "placeholder": "\u200b", + "style": "IPY_MODEL_15c1ac54ded04d8d8bc2e4a9674623b1", + "value": "Required
\u2139\ufe0f Solar hourly profile of the country of interest fetched from the RenewableNinja API. This data is used to size the PV based minigrids.
" + } + }, + "94ffc66b8b0c48069fbe73a0ad8a90ea": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9576c3a585174fa28d889d902de7e17e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "96ceb7d5d0034baaa00b3fc14353d63f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "975e61f2b39e4602bc47dd9effe22c94": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "99cfbc3542f24512b46dfff08c54f88b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9a10f3b92ece49aabdc4be996b227dee": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "9a7517f027f54213bddaf5c747f0ef3f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9a90eb86b925404dbdf2425d2a3866ed": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "MODIS (MCD12Q1)" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_0968aea4d28d4569983b79aa61563665", + "style": "IPY_MODEL_bc7ec197ff034395acee46e33842b127" + } + }, + "9c7866643e784e109084d34af22be54d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9d1759902e2e434e8e03d9dbac2aba61": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9d2828a87436484ea331f3e26e72717d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9eea07db2b334f22ab297649c383c9cd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "NASADEM_HGT", + "COP_DEM_GLO_30", + "SRTMGL1", + "ASTGTM", + "COP_DEM_GLO_90", + "SRTMGL3", + "gmted2010", + "ATL08" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 5, + "layout": "IPY_MODEL_436cc661fd0642a88b46b4e5fda35fcc", + "style": "IPY_MODEL_490a00a4e58d42cfbfa3aff58805c546" + } + }, + "a006bac1bc154ebc92f7f9673f46ad9a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83c\udf03 Nighttime lights", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_ec1d02b9980245f3bedc6d175254bb25", + "style": "IPY_MODEL_c337f66f025448a7b3a40eabd528284c", + "value": true + } + }, + "a107ce7380064819875348c83e84a4e6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a1fe9c4d14cc4e1da2513d9c1d5e05a8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8d658848166b426cb0a14249596fe248", + "max": 6, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_65d3a6bba3c44e489ffd85a231fc987f", + "value": 6 + } + }, + "a4948c6bd85f42539faf76f110388c43": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "10px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "a4eda996db4c4da581a916b5244706d7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a7987eb166c34b4dab89939fa7548862": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a97b5107c16049e6bf2ba29b802d07c7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ab656dcaca2b49bb85ca4204d3e0f282": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ab781f2867b14be6aa6ed27192ffd89e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "abe6f9095a9f4a5680ce2da3e1e425af": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_06264e7159cf446586984dba53cb27a6", + "IPY_MODEL_36e689638e774af6a35ead528de1b22d" + ], + "layout": "IPY_MODEL_011ea8b1346f4999818c791770d327c0" + } + }, + "ae0b4b622150413fbcf32b6b6b2bd0fb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ae889a5a812b4676a9e2621b7c48926f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "aef7d67b7ff045c9ae715b4b847cf5a1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9a90eb86b925404dbdf2425d2a3866ed" + ], + "layout": "IPY_MODEL_41e649c10f904c79b1232d79c629476a" + } + }, + "af8c5cd1012241f5a8df8095ab126a74": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f9f0f094e388484a99d44187c5d542fe", + "IPY_MODEL_5569a4c4ffa04622bcac517224ebc8cb", + "IPY_MODEL_48b6df95e4204b4b8741cb9737cd746d" + ], + "layout": "IPY_MODEL_ae889a5a812b4676a9e2621b7c48926f" + } + }, + "afcd628b031948e8a44dd7e54891a63b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b137a1573962430ab8286670189d0e2f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cdcac13ea2f34715997aa314be0dc36c", + "placeholder": "\u200b", + "style": "IPY_MODEL_bc51aee6758e4fd288f7923a54b9e9e4", + "value": "COLLECTING\u2007RESULTS\u2007|\u2007:\u2007100%" + } + }, + "b49d2f59b27d485d81c72aa3b8e31726": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f104f4b337ff46f3ba52f0d71f647d15", + "IPY_MODEL_94eaf372a46c48d3a919776a0b3df27c", + "IPY_MODEL_c7036aba9a8b475496d174568d79da5a" + ], + "layout": "IPY_MODEL_2130cc2b1ff8459284b9d3fb1857ec2d" + } + }, + "b56133c5702f466cb0674ae126ff6cb1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5321c4ffac474ecb94c026d6fab1bdef", + "IPY_MODEL_d7fd25ac98fb4a27bd4d0098a3a14eeb", + "IPY_MODEL_5d9deae4fd9d45f19ab1a2d2626798bd" + ], + "layout": "IPY_MODEL_9a10f3b92ece49aabdc4be996b227dee" + } + }, + "b90134444dcc4808ba753a0e0fc4781b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_68f281395d304430887f8782240bedf8", + "max": 204, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_14eedbbe350341aa96bed4e104917375", + "value": 204 + } + }, + "b959807f9c3c44ebaf6c7934d6b0438d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "b9b50c1bc5544036a53e8c45d95064fb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bc51aee6758e4fd288f7923a54b9e9e4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bc7ec197ff034395acee46e33842b127": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bd8905e1e92f45ea8ea13bb09e24753b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\u26a1 Medium voltage lines", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_4a00f666228c46bba25420681f8525fa", + "style": "IPY_MODEL_59a5439daf2642c79977a7441643fc04", + "value": true + } + }, + "bdcd321292fb455090d5d812cf4ede0b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_94ffc66b8b0c48069fbe73a0ad8a90ea", + "placeholder": "\u200b", + "style": "IPY_MODEL_cb59a86d369848adbb6d0b22e6d84bdb", + "value": "Required
\u2139\ufe0f Socio-economic specifications define the financial and behavioral parameters of the target population. This includes estimated household energy consumption tiers, affordability (willingness to pay), and projected GDP growth. These values are used to calculate the long-term economic viability and expected revenue for grid investments.
" + } + }, + "be932fb56a074095a7b5286c74c6f575": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_20abd220447f4742890dfabc8a49bd51", + "IPY_MODEL_2d1ed4ea0ffb46e691285780c2ec8d9c", + "IPY_MODEL_3c5a32f6f529409682bfca0d344cd102" + ], + "layout": "IPY_MODEL_fa6f980f9b9849e399205c2fa96908d7" + } + }, + "bebf92e34e584fc097c9d396e1103202": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "Worldpop" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_0d288a0468f3488a94b7ee56662674b8", + "style": "IPY_MODEL_188d515008654d03b4895dc1d7d847a5" + } + }, + "bec722ad8a4b4b0bb7ac5da72393fe0a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bf7f39979a3e4708a0a8a4f38176e719": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_81c626dc795841ee9fda11fc52251e20", + "IPY_MODEL_b90134444dcc4808ba753a0e0fc4781b", + "IPY_MODEL_ce89733b23924cf2bf3ca4eae3d7bd68" + ], + "layout": "IPY_MODEL_43af109219f34083b46056cc08054aca" + } + }, + "bfc0f59cf57a4e31b37a6521982c496b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c12a9828581342dba2ac7e13c51f5ea8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9448c5dde7fb4939aef56fc64e54d9a2", + "placeholder": "\u200b", + "style": "IPY_MODEL_e72cf7774230443988484c066054a09a", + "value": "\u20076/6\u2007[00:03<00:00,\u2007\u20072.28it/s]" + } + }, + "c17797596c604b6ab1acb457e61358b6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d5c64df44f5745468a7e15385ac3d4b7" + ], + "layout": "IPY_MODEL_ffa4f23d47d8453e868fc09f3fddffb3" + } + }, + "c337f66f025448a7b3a40eabd528284c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c3b524fa954d4fd7929fa7b60d6f2a0a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3162f606a5444894af729d47fcc5f3ca", + "placeholder": "\u200b", + "style": "IPY_MODEL_ff306e677ae1476f968dca49cb2d6247", + "value": "Optional
\u2139\ufe0f Travel time data estimates the duration required to reach any given location from the nearest urban center or port. It accounts for road quality, terrain slope, and land cover, providing a metric for estimating transport costs of diesel for off-grid generators.
" + } + }, + "c49f604ec40347fda99d11bd1b349d83": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c4e2ef7b671d4ec4b9da8d31cbab2251": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cd707c3525cd49428e58273683a44826", + "IPY_MODEL_f91ce64c094047628ca006b9c4c071c9", + "IPY_MODEL_4f2b37882583479fba177f3facfd7472" + ], + "layout": "IPY_MODEL_5539a26b5796429c94023fa9ad4712ed" + } + }, + "c5028e9277fe4f17bc1c2cffecefd2ae": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c546de6b3fec49f085337ccf903d2c62": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c5cf0292457d4d2f9418bfd2ac74324b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83c\udfd4\ufe0f Elevation model", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_8c8b7d00ab0a42a0b27f591de3983cae", + "style": "IPY_MODEL_d3d08e33f2fa478ca345b71a92544195", + "value": true + } + }, + "c7036aba9a8b475496d174568d79da5a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_41debd8518784954995bafd7bcd1c27c" + ], + "layout": "IPY_MODEL_fd19b2ce2811470da0a6b3b541e0dd54" + } + }, + "c794b00a761a4e4b9249c701311d1bad": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c880587c3c4944cb99bfcc5fe8b59f43": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ca244250af15474ba47d07081f5233ec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_177bff40bbda4e8b971fee1d1bceb81a", + "IPY_MODEL_583821ba98e541918a55ef713e36d9e5", + "IPY_MODEL_d801092196004fdc990418033d0907fe" + ], + "layout": "IPY_MODEL_44f14ea7dfae44c082555d8742fc6e9c" + } + }, + "ca9a9127581b4e1593149ab86d645726": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cb4231cf4d22435a8a798bed0b688aa9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "cb59a86d369848adbb6d0b22e6d84bdb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "cd707c3525cd49428e58273683a44826": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83c\udfd8\ufe0f Settlements", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_1ae823bbbdf94f3f93d92b8b90a2888e", + "style": "IPY_MODEL_b9b50c1bc5544036a53e8c45d95064fb", + "value": true + } + }, + "cd72c0db0ead4721b1f1313614c33bd6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cda544ef18c2437ab574aa1f37964cdd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_6300ed94739941d2a7caa68be393e267", + "IPY_MODEL_50d9367604994f6bbc49854a46cca7ae" + ], + "layout": "IPY_MODEL_0014e629542f4cf48a20badb7b08ba38" + } + }, + "cdcac13ea2f34715997aa314be0dc36c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cdd5883b30214a2db99a503a9858fa8c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ce89733b23924cf2bf3ca4eae3d7bd68": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7fb52ca38bd74babae24364dbd08dc9b", + "placeholder": "\u200b", + "style": "IPY_MODEL_a107ce7380064819875348c83e84a4e6", + "value": "\u2007204/204\u2007[00:00<00:00,\u20074898.35it/s]" + } + }, + "ceab0cf0dabb4193bdb33b7e4f351d97": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cee091c7717e428f85aa0d5afed45f5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d05077c938ed453799e8cdde5b0bfa05": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "primary", + "description": "Get Data", + "disabled": false, + "icon": "cloud-download", + "layout": "IPY_MODEL_fdbad72a99b141588ee99b0e627e3114", + "style": "IPY_MODEL_d53f5c8e91a144cfb5094281791edbfd", + "tooltip": "" + } + }, + "d0e8f61b4d15447f95e473da447d6a07": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d113af4076b84ca286300ab548eb1b44": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d2725010156f407da5debad5e7cd26be": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d3d08e33f2fa478ca345b71a92544195": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d3da55e269774b5585dd70b8424f2846": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d4d804a7ef9e48f7b57b942b7a1a9e91": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d4f73ebb09fb4a219e6a0df79c9c2e62": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d53f5c8e91a144cfb5094281791edbfd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "d5c64df44f5745468a7e15385ac3d4b7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "Malarian Atlas" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_12d7058d65c04b17be36f094aa64f3d7", + "style": "IPY_MODEL_e3d9c4cf381246a89c848c9a2cf77de9" + } + }, + "d6c512e6d8d54ad98f263530fb708b1c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d7fd25ac98fb4a27bd4d0098a3a14eeb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c794b00a761a4e4b9249c701311d1bad", + "placeholder": "\u200b", + "style": "IPY_MODEL_d91b5b1fccae43c2a8f00dedf097f967", + "value": "Optional
\u2139\ufe0f Road network data is a key proxy for accessibility. Proximity to roads significantly reduces the logistical costs of transporting equipment and maintaining power infrastructure.
" + } + }, + "d801092196004fdc990418033d0907fe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_566f16155a2047c483fab03ac6a57418", + "placeholder": "\u200b", + "style": "IPY_MODEL_7e4c050b6f0641999d0c218d5f671986", + "value": "\u2007204/204\u2007[00:32<00:00,\u2007\u20075.55it/s]" + } + }, + "d91b5b1fccae43c2a8f00dedf097f967": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d95c2373f51c40b4bf02acf78ad895b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f7bb5a2fb9504e8bb4841876dbd7d4dc", + "IPY_MODEL_919b582baf2d4e77bd2b8b361807a1bf", + "IPY_MODEL_61336a1746f442ffbeaf2bec54f2cfef" + ], + "layout": "IPY_MODEL_0d87053a356d4707950c7b7aa9f9add1" + } + }, + "da2b9160994a452c998c8246e959f454": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "da759e82ebfc47138093f9ba21e83d3a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "Khavari et.al." + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": true, + "index": 0, + "layout": "IPY_MODEL_2a1f71137b6641b0a20a07ee2ac2c084", + "style": "IPY_MODEL_cb4231cf4d22435a8a798bed0b688aa9" + } + }, + "db505ae4bce8459098700762e2d9752b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Select all", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_ea48e54aa2b24d598734493986d3ca73", + "style": "IPY_MODEL_293dd4751729414cb77ccb4818a4ef89", + "value": true + } + }, + "dba67b56b0fd48cea25ed2a1e03b6e6b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_77947946903245dcae82605967edb023", + "placeholder": "\u200b", + "style": "IPY_MODEL_4dea281f97dc4623ae2f9ab3bd0978a5", + "value": "
" + } + }, + "dc3ff446730243d5a05aa88fcb371cdb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "RenewableNinja" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_071105023b184cc7b45a7c61ced1744e", + "style": "IPY_MODEL_c49f604ec40347fda99d11bd1b349d83" + } + }, + "df693f93cb294d06a82019126349c4bd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_bd8905e1e92f45ea8ea13bb09e24753b", + "IPY_MODEL_6b47d429651f4f02865eda6b18ffaa00", + "IPY_MODEL_0fab953ce6a84643a0c860814e7e26d9" + ], + "layout": "IPY_MODEL_22fa664449564b2ea376f56472b6f7b9" + } + }, + "dfbd0d9abe3e42358e5d3d80a728679c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e1d940796b3f45f7ba3a7ab004dac969": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d0e8f61b4d15447f95e473da447d6a07", + "placeholder": "\u200b", + "style": "IPY_MODEL_ab656dcaca2b49bb85ca4204d3e0f282", + "value": "\u20076/6\u2007[00:00<00:00,\u2007124.65it/s]" + } + }, + "e20080ec7b284a73bc66dc896b03c60d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "5px 0 10px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e3d9c4cf381246a89c848c9a2cf77de9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e3dcb3ee00fb4dbabced5c61666edf78": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": "35px", + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "200px" + } + }, + "e504c7431649443a9b746ca9b448f877": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e549abbeb2424fab842cca44727b83b5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5103cf05c53d461db27fbfc7fca8c824", + "placeholder": "\u200b", + "style": "IPY_MODEL_284f00acd6ca4f60a981bf49f4ed2c32", + "value": "Optional
\u2139\ufe0f Digital Elevation Model data (DEM), is used to determine terrain slope, and both terrain slope and elevation are used to specify grid extension suitability. There are several sources available, but a `SRTMGL3` with a resolution of ~90m is often enough, preventing large computation times.
" + } + }, + "e5b86a306ef542668fc094d36e6a9afa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e72cf7774230443988484c066054a09a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e917842489b84a70999c067759e8ec5e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_348d8a399cbb4f94b87283251711ec04", + "placeholder": "\u200b", + "style": "IPY_MODEL_7b166b70c5c448cb9a67a247b31ee764", + "value": "QUEUEING\u2007TASKS\u2007|\u2007:\u2007100%" + } + }, + "ea48e54aa2b24d598734493986d3ca73": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ea5b54503a854e919d77b62e12c87163": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ec1d02b9980245f3bedc6d175254bb25": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ec5d06c87f124d7eb352fca7155d86b5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "efbcccce66634c81a98a7eea97d7050d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "Global Solar Atlas" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_3354c6a532cf4bba843e20576d53acaf", + "style": "IPY_MODEL_21920623a4134edd85a8ec88845710f8" + } + }, + "f0b8da453d6849ddacb60427c9b02e92": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f104f4b337ff46f3ba52f0d71f647d15": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\u2600\ufe0f\ud83d\udd52 Solar hourly profile", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_07bb7e5c0c7e47c89c5bdf367d374fd4", + "style": "IPY_MODEL_38e007c33b8f47d8add75b6ca4fc6b35", + "value": true + } + }, + "f1d90d2893464d17b479a98053ccb6ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f21487fc02564e7283876352fc87386a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9290dbfd9f7b46d9a74bb43d512713d8", + "placeholder": "\u200b", + "style": "IPY_MODEL_047eb506d3884985b44aa8f8af8a4dd7", + "value": "\ud83d\udef0\ufe0f Console output" + } + }, + "f32f5e5fa52945788fc106795a30dc9f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4bacbf8e65f44386948efe98603d90ea", + "IPY_MODEL_af8c5cd1012241f5a8df8095ab126a74", + "IPY_MODEL_c4e2ef7b671d4ec4b9da8d31cbab2251" + ], + "layout": "IPY_MODEL_93239cd42b6e4679a08d7a78d0a90576" + } + }, + "f34d1b91112f4cdd80844f7776368b63": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "dataset-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_614e826c9cfc404495eb416d91799784", + "IPY_MODEL_c3b524fa954d4fd7929fa7b60d6f2a0a", + "IPY_MODEL_c17797596c604b6ab1acb457e61358b6" + ], + "layout": "IPY_MODEL_17603e6d02ae4ce4a311fe5d3c0f5efc" + } + }, + "f43df421076a48ebb6dee6f662f81622": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DropdownModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "WorldPop covariates derived from VNL 2.1/2.2" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Source", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_e504c7431649443a9b746ca9b448f877", + "style": "IPY_MODEL_690304465bed412fb5ab0d268eaf77d7" + } + }, + "f4d30d70af7d4cc4848482fc4dd4cc95": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f7bb5a2fb9504e8bb4841876dbd7d4dc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5b4bb9ba287d4446a20e1a1f3b9a1f45", + "placeholder": "\u200b", + "style": "IPY_MODEL_ec5d06c87f124d7eb352fca7155d86b5", + "value": "\ud83d\udd04\u2007Downloading\u2007traveltime\u2007data:\u2007100%" + } + }, + "f8d7d4220c814029bc4388254c297204": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f8efe7d49718498cb5ab2218060b2e47": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "RadioButtonsModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "RadioButtonsModel", + "_options_labels": [ + "100m", + "1km" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "RadioButtonsView", + "description": "Resolution:", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_43913d05581c4977883f70b742ac7eb6", + "style": "IPY_MODEL_d6c512e6d8d54ad98f263530fb708b1c" + } + }, + "f91ce64c094047628ca006b9c4c071c9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_72b575cdd5ad48f8a4917ec7e618fbb5", + "placeholder": "\u200b", + "style": "IPY_MODEL_62238ca6c1eb4929bd23aacf258863b3", + "value": "Optional
\u2139\ufe0f The settlements layer, clusters population from the GHSL dataset for Somalia, Sudan and South Sudan and HRSL for the rest of the countries. The population in these clusters are calibrated to 2016 population values.
" + } + }, + "f9ac26b018a7417e973cb65d82b137d2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f9f0f094e388484a99d44187c5d542fe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "\ud83d\udc65 Population count", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_cee091c7717e428f85aa0d5afed45f5d", + "style": "IPY_MODEL_474bbb019d82448da4d144583591269e", + "value": true + } + }, + "fa6f980f9b9849e399205c2fa96908d7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": "visible", + "overflow_x": null, + "overflow_y": null, + "padding": "15px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "fd19b2ce2811470da0a6b3b541e0dd54": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fdbad72a99b141588ee99b0e627e3114": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": "40px", + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "200px" + } + }, + "fe6f25b8673a43b6a467416ccd7f9756": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ff306e677ae1476f968dca49cb2d6247": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ffa4f23d47d8453e868fc09f3fddffb3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": "20px", + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "0 0 0 20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ffbf95a4a60f42b4836923e171eeabe5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/OnSTOVE_SDK_August_2026.ipynb b/OnSTOVE_SDK_August_2026.ipynb new file mode 100644 index 0000000..d7c0de2 --- /dev/null +++ b/OnSTOVE_SDK_August_2026.ipynb @@ -0,0 +1,8853 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c5590843", + "metadata": { + "id": "c5590843" + }, + "source": [ + "\n", + "  \n", + "\n", + "  \n", + "\n", + "\n", + "# Welcome to the Starter Data Kit for `OnSTOVE`!\n", + "\n", + "This notebook downloads every geospatial and tabular dataset needed to run an **OnSTOVE** analysis\n", + "and packages them into a single **`_SDK.zip`** file ready to use.\n", + "\n", + "### Datasets collected automatically\n", + "| Layer | Source | Format |\n", + "|---|---|---|\n", + "| Administrative boundary | GADM via pygadm | Vector (GPKG) |\n", + "| Population 1 km (2020) | WorldPop | Raster (GeoTIFF) |\n", + "| Urban-Rural status | GHS-SMOD 2020 (JRC) | Raster (GeoTIFF) |\n", + "| Medium-voltage lines | Gridfinder (Zenodo CC-BY) | Vector (GPKG) |\n", + "| HV lines (high-voltage power lines only) | OpenStreetMap via Overpass API | Vector (GPKG) |\n", + "| Nighttime lights | VIIRS VNL v2.1 2020 (EOG Mines) | Raster (GeoTIFF) |\n", + "| Walking friction | MalariaAtlas 2019 | Raster (GeoTIFF) |\n", + "| Motorized friction | MalariaAtlas 2019 | Raster (GeoTIFF) |\n", + "| Travel time to nearest large town | MalariaAtlas method (own least-cost-path calc on Motorized Friction + GHS-SMOD) | Raster (GeoTIFF) |\n", + "| Forest cover | Hansen/GLAD GFC 2020 (GFW tiles) | Raster (GeoTIFF) |\n", + "| Forest cover (radar, optional) | JAXA ALOS PALSAR-2 FNF4 2021 via Earth Engine | Raster (GeoTIFF) |\n", + "| Livestock density | FAO GLW3 (Zenodo) | Raster (GeoTIFF) |\n", + "| Temperature (full GIS package) | Global Solar Atlas v2 GEOTIFF folder | Raster (GeoTIFF, multi-file) |\n", + "| Relative Wealth Index | Meta / HDX | CSV |\n", + "| Blank socio-economic CSV | Generated from OnSTOVE parameter list | CSV |\n", + "| Blank techno-economic CSV | Generated from OnSTOVE parameter list | CSV |\n", + "| Specification templates (Technoeconomic + Prep file) | Blank, generic workbooks with Read Me and Parameter Legend tabs - not country data, apply to any country | Excel (XLSX) |\n", + "\n", + "### Layers requiring manual download (no public API)\n", + "| Layer | Source |\n", + "|---|---|\n", + "| Electricity transformers | Country-specific - use [EnergyData.info](https://energydata.info/) or your own national data |\n", + "\n", + "> The Temperature layer is now fetched automatically as the **entire** Global Solar Atlas\n", + "> `_GISdata_LTAy_YearlyMonthlyTotals_GlobalSolarAtlas-v2_GEOTIFF` folder (all layers - GHI, DNI,\n", + "> DIF, GTI, PVOUT, TEMP, ELE, OPTA - plus metadata), not just the `TEMP.tif` file. If the automatic\n", + "> download fails for a given country, fall back to [Global Solar Atlas](https://globalsolaratlas.info/download)\n", + "> manually.\n", + "\n", + "### Country coverage\n", + "Africa and South/South-East Asia (~60 countries)\n", + "\n", + "---\n", + "> **Runtime note:** Gridfinder MV lines (~724 MB) and FAO Livestock are large downloads.\n", + "> NTL is fetched from WorldPop Southampton (~30 MB, no auth required).\n", + "> Total run time is typically **10–20 minutes** depending on connection speed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "1a915d0d", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1a915d0d", + "outputId": "bf0860ac-73cd-46dd-d7c8-b9947878761d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Processing triggers for man-db (2.10.2-1) ...\n", + "Setup complete\n" + ] + } + ], + "source": [ + "#%%capture\n", + "# @title Step 1: Install packages {\"vertical-output\": true, \"display-mode\": \"form\"}\n", + "# @markdown Run this cell first. Wait for **Setup complete** before continuing.\n", + "# @markdown This may take 2-4 minutes.\n", + "\n", + "import subprocess\n", + "from IPython.display import clear_output\n", + "\n", + "def run_quiet(cmd):\n", + " p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,\n", + " stderr=subprocess.STDOUT, text=True)\n", + " for line in p.stdout:\n", + " clear_output(wait=True)\n", + " print(line.strip())\n", + " p.wait()\n", + "\n", + "run_quiet(\"pip install --quiet --upgrade pip\")\n", + "run_quiet(\"pip install --quiet requests tqdm geopandas pygadm rasterio shapely pyproj pycountry scikit-image\")\n", + "run_quiet(\"pip install --quiet ipyleaflet ipywidgets\")\n", + "# earthengine-api is only needed for the OPTIONAL PALSAR FNF forest-cover layer\n", + "# (Step 3). Installed here so it is ready if that box is ticked; authentication\n", + "# itself only happens later, and only if that layer is actually requested.\n", + "run_quiet(\"pip install --quiet earthengine-api\")\n", + "\n", + "# gdal-bin provides command-line GDAL utilities (e.g. gdalbuildvrt) used\n", + "# later for streaming forest cover tiles\n", + "run_quiet(\"apt-get install -y gdal-bin\")\n", + "\n", + "import os, requests, zipfile, shutil, subprocess, glob, json, csv\n", + "import geopandas as gpd\n", + "import pygadm\n", + "from tqdm.notebook import tqdm\n", + "import ipywidgets as widgets\n", + "from ipywidgets import Layout, HBox, VBox, Button\n", + "from IPython.display import display, HTML, clear_output\n", + "from google.colab import files as cfiles\n", + "\n", + "print(\"Setup complete\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "91a00e76", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "91a00e76", + "outputId": "a2e36366-aeda-4407-8d8d-e88aaaa9fac0" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Downloader functions loaded\n" + ] + } + ], + "source": [ + "#%%capture\n", + "# @title Step 2: Load downloader functions {\"display-mode\": \"form\"}\n", + "# @markdown Run this cell to load all dataset downloader functions.\n", + "\n", + "import os, requests, zipfile, shutil, subprocess, gc\n", + "import geopandas as gpd\n", + "import pygadm\n", + "\n", + "GEOFABRIK_MAP = {\n", + " 'AGO':('africa','angola'),'BDI':('africa','burundi'),'BEN':('africa','benin'),\n", + " 'BFA':('africa','burkina-faso'),'BWA':('africa','botswana'),\n", + " 'CAF':('africa','central-african-republic'),'CIV':('africa','ivory-coast'),\n", + " 'CMR':('africa','cameroon'),'COD':('africa','congo-democratic-republic'),\n", + " 'COG':('africa','congo-republic'),'DJI':('africa','djibouti'),\n", + " 'DZA':('africa','algeria'),'EGY':('africa','egypt'),'ERI':('africa','eritrea'),\n", + " 'ETH':('africa','ethiopia'),'GAB':('africa','gabon'),'GHA':('africa','ghana'),\n", + " 'GIN':('africa','guinea'),'GMB':('africa','senegal'),'GNB':('africa','guinea-bissau'),\n", + " 'GNQ':('africa','equatorial-guinea'),'KEN':('africa','kenya'),\n", + " 'LBR':('africa','liberia'),'LBY':('africa','libya'),'LSO':('africa','lesotho'),\n", + " 'MAR':('africa','morocco'),'MDG':('africa','madagascar'),'MLI':('africa','mali'),\n", + " 'MOZ':('africa','mozambique'),'MRT':('africa','mauritania'),'MWI':('africa','malawi'),\n", + " 'NAM':('africa','namibia'),'NER':('africa','niger'),'NGA':('africa','nigeria'),\n", + " 'RWA':('africa','rwanda'),'SDN':('africa','sudan'),'SEN':('africa','senegal'),\n", + " 'SLE':('africa','sierra-leone'),'SOM':('africa','somalia'),'SSD':('africa','south-sudan'),\n", + " 'SWZ':('africa','swaziland'),'TCD':('africa','chad'),'TGO':('africa','togo'),\n", + " 'TUN':('africa','tunisia'),'TZA':('africa','tanzania'),'UGA':('africa','uganda'),\n", + " 'ZAF':('africa','south-africa'),'ZMB':('africa','zambia'),'ZWE':('africa','zimbabwe'),\n", + " 'BRN':('asia','malaysia-singapore-brunei'),'IDN':('asia','indonesia'),\n", + " 'KHM':('asia','cambodia'),'LAO':('asia','laos'),'MMR':('asia','myanmar'),\n", + " 'MYS':('asia','malaysia-singapore-brunei'),'PHL':('asia','philippines'),\n", + " 'SGP':('asia','malaysia-singapore-brunei'),'THA':('asia','thailand'),\n", + " 'TLS':('asia','east-timor'),'VNM':('asia','vietnam'),\n", + "}\n", + "\n", + "GRIDFINDER_URL = 'https://zenodo.org/records/3628142/files/grid.gpkg?download=1'\n", + "GRIDFINDER_LOCAL = '/tmp/gridfinder_global.gpkg'\n", + "\n", + "def _stream(url, dest, label='', timeout=600):\n", + " h = {'User-Agent': 'OnSTOVE-SDK/1.0'}\n", + " r = requests.get(url, stream=True, timeout=timeout, headers=h)\n", + " r.raise_for_status()\n", + " total = int(r.headers.get('content-length', 0))\n", + " done = 0\n", + " with open(dest, 'wb') as f:\n", + " for chunk in r.iter_content(chunk_size=8*1024*1024):\n", + " f.write(chunk); done += len(chunk)\n", + " if total:\n", + " print(f'\\r {label} {done/total*100:.1f}% ({done//1048576}/{total//1048576} MB)',\n", + " end='', flush=True)\n", + " print()\n", + "\n", + "# Session-level cache: {country: GeoDataFrame}. Populated either by a\n", + "# successful GADM fetch or by a manually uploaded boundary file (see\n", + "# set_manual_boundary / the upload widget in Step 3). Every downloader that\n", + "# needs the country outline (clipping, bounding boxes, etc.) calls _boundary(),\n", + "# so without this cache each one would re-hit GADM independently - this is\n", + "# why errors could persist even after the retry/backoff was added.\n", + "_BOUNDARY_CACHE = {}\n", + "\n", + "def set_manual_boundary(country, gdf):\n", + " \"\"\"Register a manually supplied boundary GeoDataFrame for a country so\n", + " _boundary()/get_boundaries() use it instead of fetching from GADM.\"\"\"\n", + " if gdf.crs is None:\n", + " gdf = gdf.set_crs(4326)\n", + " else:\n", + " gdf = gdf.to_crs(4326)\n", + " _BOUNDARY_CACHE[country] = gdf\n", + " return gdf\n", + "\n", + "def _boundary(country, _retries=3, _base_wait=5):\n", + " \"\"\"Return the country boundary, using the session cache (auto-fetched or\n", + " manually uploaded) if available, otherwise fetching from GADM with\n", + " retry/backoff since the GADM server (geodata.ucdavis.edu) frequently\n", + " stalls or times out under load, especially from cloud IP ranges like\n", + " Colab's. This is the single most-called helper in the notebook (used by\n", + " nearly every downloader via clipping/bounding-box), so caching + retrying\n", + " here fixes GADM flakiness everywhere at once.\"\"\"\n", + " if country in _BOUNDARY_CACHE:\n", + " return _BOUNDARY_CACHE[country]\n", + " import time\n", + " import requests as _requests\n", + " last_err = None\n", + " for attempt in range(1, _retries + 1):\n", + " try:\n", + " b = pygadm.Items(admin=country, content_level=0)\n", + " b = b.set_crs(4326, allow_override=True)\n", + " _BOUNDARY_CACHE[country] = b\n", + " return b\n", + " except (_requests.exceptions.ConnectTimeout,\n", + " _requests.exceptions.ConnectionError,\n", + " _requests.exceptions.ReadTimeout,\n", + " _requests.exceptions.Timeout) as e:\n", + " last_err = e\n", + " if attempt < _retries:\n", + " wait = _base_wait * attempt # increasing backoff: 5s, 10s, 15s ...\n", + " print(f'[Boundaries] GADM server timed out (attempt {attempt}/{_retries}). '\n", + " f'Retrying in {wait}s ...')\n", + " time.sleep(wait)\n", + " else:\n", + " print(f'[Boundaries] GADM server still unreachable after {_retries} attempts.')\n", + " except Exception as e:\n", + " # Non-network errors (bad country code etc.) - fail fast, no point retrying.\n", + " raise\n", + " raise Exception(\n", + " f'Could not reach the GADM server for {country} after {_retries} attempts '\n", + " f'(last error: {last_err}). This is usually a transient GADM outage/rate-limit - '\n", + " f'try again in a few minutes, Runtime > Restart runtime and re-run, or use the '\n", + " f'\"Upload boundary manually\" option in Step 3 to supply the file yourself.'\n", + " )\n", + "\n", + "def _mkdir(p):\n", + " os.makedirs(p, exist_ok=True); return p\n", + "\n", + "def _clip_rasterio(src_path, country, dest_path):\n", + " import rasterio\n", + " from rasterio.mask import mask as rio_mask\n", + " b = _boundary(country)\n", + " with rasterio.open(src_path) as src:\n", + " b2 = b.to_crs(src.crs)\n", + " out_img, out_tf = rio_mask(src, b2.geometry, crop=True)\n", + " meta = src.meta.copy()\n", + " meta.update({'driver':'GTiff','height':out_img.shape[1],\n", + " 'width':out_img.shape[2],'transform':out_tf})\n", + " with rasterio.open(dest_path, 'w', **meta) as dst:\n", + " dst.write(out_img)\n", + "\n", + "def _clip(src_path, country, dest_path, nodata=-9999):\n", + " b = _boundary(country)\n", + " tmp = f'/tmp/{country}_bnd.gpkg'\n", + " b.to_file(tmp, driver='GPKG')\n", + " cmd = (f'gdalwarp -cutline {tmp} -crop_to_cutline -dstnodata {nodata} '\n", + " f'-t_srs EPSG:4326 -of GTiff {src_path} {dest_path}')\n", + " r = subprocess.run(cmd, shell=True, capture_output=True, text=True)\n", + " if r.returncode != 0 or not os.path.exists(dest_path):\n", + " _clip_rasterio(src_path, country, dest_path)\n", + "\n", + "# --- 1. Boundary ---\n", + "def get_boundaries(country):\n", + " out = _mkdir(f'Data/{country}/Boundaries')\n", + " p = f'{out}/{country}_boundary.gpkg'\n", + " if country in _BOUNDARY_CACHE:\n", + " print(f'[Boundaries] Using manually uploaded boundary for {country} ...')\n", + " else:\n", + " print(f'[Boundaries] Fetching GADM boundary for {country} ...')\n", + " _boundary(country).to_file(p, driver='GPKG')\n", + " print(f'[Boundaries] Saved -> {p}')\n", + "\n", + "# --- 2. Population ---\n", + "def get_population(country):\n", + " out = _mkdir(f'Data/{country}/Population')\n", + " dest = f'{out}/{country}_population_2020.tif'\n", + " url = (f'https://data.worldpop.org/GIS/Population/Global_2000_2020_1km/'\n", + " f'2020/{country}/{country.lower()}_ppp_2020_1km_Aggregated.tif')\n", + " print(f'[Population] Downloading WorldPop 2020 for {country} ...')\n", + " try:\n", + " _stream(url, dest, label='[Pop]')\n", + " except Exception:\n", + " url2 = (f'https://data.worldpop.org/GIS/Population/Global_2000_2020/'\n", + " f'2020/{country}/{country.lower()}_ppp_2020.tif')\n", + " print('[Population] Trying 100m fallback ...')\n", + " _stream(url2, dest, label='[Pop fallback]')\n", + " print(f'[Population] Saved -> {dest}')\n", + "\n", + "# --- 3. GHS-SMOD Urban-Rural ---\n", + "def get_urban_rural(country):\n", + " out = _mkdir(f'Data/{country}/UrbanRural')\n", + " dest = f'{out}/{country}_ghs_smod_2020.tif'\n", + " global_tif = '/tmp/ghsl_smod_global.tif'\n", + " if not os.path.exists(global_tif):\n", + " url = ('https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/GHSL/'\n", + " 'GHS_SMOD_GLOBE_R2023A/GHS_SMOD_E2020_GLOBE_R2023A_54009_1000/'\n", + " 'V1-0/GHS_SMOD_E2020_GLOBE_R2023A_54009_1000_V1_0.zip')\n", + " tmp_zip = '/tmp/ghsl_smod.zip'\n", + " print('[Urban-Rural] Downloading GHS-SMOD global (~160 MB) ...')\n", + " _stream(url, tmp_zip, label='[SMOD]')\n", + " with zipfile.ZipFile(tmp_zip, 'r') as z:\n", + " tifs = [n for n in z.namelist() if n.endswith('.tif')]\n", + " z.extract(tifs[0], '/tmp/ghsl_extract/')\n", + " shutil.move(f'/tmp/ghsl_extract/{tifs[0]}', global_tif)\n", + " _clip(global_tif, country, dest, nodata=0)\n", + " print(f'[Urban-Rural] Saved -> {dest}')\n", + "\n", + "# --- 4. MV lines (Gridfinder) ---\n", + "def _is_valid_gpkg(path):\n", + " \"\"\"A GeoPackage is a SQLite database - check the SQLite magic header AND\n", + " that SQLite can actually open it, rather than trusting file size alone.\n", + " A partially-written or corrupted cached download will pass a size check\n", + " but fail here, which is exactly what caused 'database disk image is\n", + " malformed' errors downstream when GeoPandas/Fiona tried to read it.\"\"\"\n", + " import sqlite3\n", + " try:\n", + " with open(path, 'rb') as f:\n", + " if f.read(16) != b'SQLite format 3\\x00':\n", + " return False\n", + " con = sqlite3.connect(f'file:{path}?mode=ro', uri=True)\n", + " con.execute('PRAGMA quick_check;').fetchone()\n", + " con.close()\n", + " return True\n", + " except Exception:\n", + " return False\n", + "\n", + "def get_mv_lines(country):\n", + " out = _mkdir(f'Data/{country}/MV_lines')\n", + " dest = f'{out}/{country}_mv_lines.gpkg'\n", + " need_download = not (os.path.exists(GRIDFINDER_LOCAL) and\n", + " os.path.getsize(GRIDFINDER_LOCAL) > 100*1024*1024)\n", + " if not need_download and not _is_valid_gpkg(GRIDFINDER_LOCAL):\n", + " print('[MV lines] Cached Gridfinder file is corrupted/incomplete - re-downloading ...')\n", + " os.remove(GRIDFINDER_LOCAL)\n", + " need_download = True\n", + " if need_download:\n", + " print('[MV lines] Downloading Gridfinder global (~724 MB) - once per session ...')\n", + " _stream(GRIDFINDER_URL, GRIDFINDER_LOCAL, label='[Gridfinder]')\n", + " if not _is_valid_gpkg(GRIDFINDER_LOCAL):\n", + " os.remove(GRIDFINDER_LOCAL)\n", + " raise Exception('Downloaded Gridfinder file failed validation (corrupted or incomplete '\n", + " 'download) and was removed. Please retry.')\n", + " b = _boundary(country)\n", + " bbox = tuple(b.total_bounds)\n", + " print(f'[MV lines] Clipping to {country} ...')\n", + " try:\n", + " gdf = gpd.read_file(GRIDFINDER_LOCAL, bbox=bbox).set_crs(4326, allow_override=True)\n", + " except Exception as e:\n", + " # Belt-and-braces: if the cached file somehow still fails to read\n", + " # (e.g. corrupted after the check above, mid-session disk issue),\n", + " # remove it so the NEXT retry re-downloads cleanly instead of\n", + " # repeatedly hitting the same broken file.\n", + " if os.path.exists(GRIDFINDER_LOCAL):\n", + " os.remove(GRIDFINDER_LOCAL)\n", + " raise Exception(f'Gridfinder file could not be read ({e}) - cached copy removed, please retry.')\n", + " gdf = gpd.clip(gdf, b.to_crs(gdf.crs))\n", + " gdf.to_file(dest, driver='GPKG')\n", + " print(f'[MV lines] Saved {len(gdf)} features -> {dest}')\n", + "\n", + "# --- 5. HV lines - HIGH-VOLTAGE POWER LINES ONLY, via OSM Overpass ---\n", + "# NOTE ON THIS LAYER - READ BEFORE CHANGING:\n", + "# This function fetches ONLY high-voltage (HV) electricity TRANSMISSION\n", + "# lines (OSM tag power=line). It does NOT fetch roads, railways, medium/\n", + "# minor voltage lines, substations, towers, or any other infrastructure -\n", + "# HV lines is the ONLY thing this layer represents, matching its label.\n", + "#\n", + "# This is a distance-to-grid proxy used by OnSTOVE/OnSSET, and is unrelated\n", + "# to the road network. Geofabrik's free .shp.zip extracts only cover a fixed\n", + "# set of themes (roads, buildings, landuse, railways, waterways, natural,\n", + "# places, pois, transport) - power infrastructure is NOT one of them\n", + "# (Geofabrik only sells a custom \"power export\" on request). An earlier\n", + "# version of this function filtered the ROADS shapefile by\n", + "# motorway/trunk/primary class and saved the result as \"HV lines\" - that was\n", + "# not a memory problem but a genuine labelling/data bug, silently saving a\n", + "# subset of the ROAD network under this layer's name. That has been fixed:\n", + "# the function below queries OSM's actual power=line tag via the Overpass\n", + "# API, and only power=line (major/high-voltage transmission) - power=minor_line\n", + "# (local/lower-voltage distribution) is deliberately excluded, so this stays\n", + "# strictly a HIGH-voltage layer. Querying the power tag directly also means\n", + "# only the power features themselves are ever downloaded, not a whole\n", + "# national roads layer, which fixes the RAM issue for this layer too.\n", + "# Where available, https://energydata.info hosts better-curated, country-\n", + "# specific transmission network shapefiles (voltage-graded, validated against\n", + "# utility data) - there's no consistent URL pattern to fetch these\n", + "# automatically per-country, so that's listed as a manual-fallback source in\n", + "# the Instructions file, the same way Electricity Transformers already is.\n", + "_OVERPASS_ENDPOINTS = [\n", + " 'https://overpass-api.de/api/interpreter',\n", + " 'https://overpass.kumi.systems/api/interpreter',\n", + " 'https://overpass.private.coffee/api/interpreter',\n", + " 'https://overpass.nchc.org.tw/api/interpreter',\n", + " 'https://overpass.osm.ch/api/interpreter',\n", + "]\n", + "\n", + "def get_hv_lines(country):\n", + " import shapely.geometry as sgeom, time\n", + " out = _mkdir(f'Data/{country}/HV_lines')\n", + " dest = f'{out}/{country}_hv_lines.gpkg'\n", + " b = _boundary(country)\n", + " bb = b.total_bounds # (minx, miny, maxx, maxy) = (west, south, east, north)\n", + " bbox_ov = f'{bb[1]:.5f},{bb[0]:.5f},{bb[3]:.5f},{bb[2]:.5f}' # Overpass wants south,west,north,east\n", + "\n", + " # power=line is OSM's tag for major (high-voltage transmission) lines;\n", + " # power=minor_line is lower-voltage local distribution and is deliberately\n", + " # excluded here to keep this layer to HIGH-voltage lines only.\n", + " query = (\n", + " f'[out:json][timeout:180][bbox:{bbox_ov}];'\n", + " '(way[\"power\"=\"line\"];);'\n", + " 'out geom;'\n", + " )\n", + " # Overpass mirrors sometimes rate-limit anonymous/default requests library\n", + " # User-Agents more aggressively - identify ourselves properly.\n", + " headers = {'User-Agent': 'OnSTOVE-SDK/1.0 (research use; contact: your-email@example.com)'}\n", + "\n", + " data, last_err = None, None\n", + " for ep in _OVERPASS_ENDPOINTS:\n", + " # One retry per endpoint on 429, honouring the server's Retry-After\n", + " # header, before moving on to the next mirror. Colab runtimes share\n", + " # IP ranges with many other users, so 429s are frequently about the\n", + " # shared IP being throttled rather than this query specifically.\n", + " for attempt in range(2):\n", + " try:\n", + " print(f\"[HV lines] Querying OSM power lines via Overpass ({ep.split('/')[2]}) attempt {attempt + 1} ...\")\n", + " r = requests.post(ep, data={'data': query}, headers=headers, timeout=180)\n", + " if r.status_code == 429:\n", + " wait = int(r.headers.get('Retry-After', 30))\n", + " print(f'[HV lines] 429 (rate limited) from {ep}, waiting {wait}s before retry ...')\n", + " time.sleep(wait)\n", + " last_err = f'429 Too Many Requests (waited {wait}s, still failed)'\n", + " continue\n", + " r.raise_for_status()\n", + " data = r.json()\n", + " break\n", + " except Exception as e:\n", + " last_err = e\n", + " print(f'[HV lines] {ep} failed ({e}), trying next endpoint ...')\n", + " if data is not None:\n", + " break\n", + " if data is None:\n", + " raise Exception(f'All Overpass endpoints failed - last error: {last_err}')\n", + "\n", + " rows = []\n", + " for el in data.get('elements', []):\n", + " if el.get('type') != 'way' or 'geometry' not in el or len(el['geometry']) < 2:\n", + " continue\n", + " coords = [(pt['lon'], pt['lat']) for pt in el['geometry']]\n", + " tags = el.get('tags', {})\n", + " rows.append({\n", + " 'osm_id': el.get('id'),\n", + " 'power': tags.get('power'),\n", + " 'voltage': tags.get('voltage'),\n", + " 'geometry': sgeom.LineString(coords),\n", + " })\n", + " if not rows:\n", + " # No high-voltage lines mapped in OSM for this country - write an\n", + " # empty (but validly-structured) GeoPackage rather than skipping, so\n", + " # downstream OnSTOVE steps that expect this file to exist don't break.\n", + " print(f'[HV lines] No OSM high-voltage power lines found for {country} - saving empty file.')\n", + " gpd.GeoDataFrame(columns=['osm_id', 'power', 'voltage', 'geometry'],\n", + " geometry='geometry', crs=4326).to_file(dest, driver='GPKG')\n", + " print(f'[HV lines] Saved (empty) -> {dest}')\n", + " return\n", + "\n", + " gdf = gpd.GeoDataFrame(rows, geometry='geometry', crs=4326)\n", + " gpd.clip(gdf, b).to_file(dest, driver='GPKG')\n", + " print(f'[HV lines] Saved {len(gdf)} features -> {dest}')\n", + " del gdf\n", + " gc.collect()\n", + "\n", + "# --- 6. Nighttime Lights (WorldPop Global2 series — data.worldpop.org) ---\n", + "# URL confirmed from WorldPop manifest (worldpoppy package, product: ntl_viirs_g2).\n", + "# Pattern: https://data.worldpop.org/GIS/Covariates/Global_2015_2030/\n", + "# {ISO3}/VIIRS/v1/nvf/{iso3}_viirs_nvf_{year}_100m_v1.tif\n", + "# - Country-clipped TIF, ~30 MB, 100m resolution, no auth required\n", + "# - NVF = No Vegetation Filtering (correct for electrification proxy)\n", + "# - Available 2015–2023\n", + "_NTL_YEAR = 2020 # change to any year 2015–2023 if needed\n", + "_NTL_BASE = 'https://data.worldpop.org/GIS/Covariates/Global_2015_2030'\n", + "\n", + "def get_nighttime_lights(country):\n", + " out = _mkdir(f'Data/{country}/NighttimeLights')\n", + " dest = f'{out}/{country}_ntl_viirs_{_NTL_YEAR}.tif'\n", + " iso3 = country.upper()\n", + " iso3l = country.lower()\n", + " url = (f'{_NTL_BASE}/{iso3}/VIIRS/v1/nvf/'\n", + " f'{iso3l}_viirs_nvf_{_NTL_YEAR}_100m_v1.tif')\n", + " print(f'[NTL] Downloading WorldPop VIIRS NTL {_NTL_YEAR} for {iso3} (~30 MB) ...')\n", + " _stream(url, dest, label='[NTL]')\n", + " print(f'[NTL] Saved -> {dest}')\n", + "\n", + "# --- 7 & 8. Walking + Motorized friction (data.malariaatlas.org WCS) ---\n", + "# The old malariaatlas.org/geoserver/ows endpoint was decommissioned (404).\n", + "# MalariaAtlas migrated to a new server: data.malariaatlas.org/geoserver\n", + "# with updated January 2020 friction surfaces (coverageId prefix: 202001).\n", + "# These are fetched as bbox-clipped GeoTIFFs — no global download needed.\n", + "_MAP_WCS_BASE = 'https://data.malariaatlas.org/geoserver/Accessibility/wcs'\n", + "\n", + "def _friction_wcs_url(coverage_id, bb):\n", + " \"\"\"Build a WCS 2.0.1 GetCoverage URL clipped to a country bounding box.\"\"\"\n", + " return (\n", + " f'{_MAP_WCS_BASE}?service=WCS&version=2.0.1&request=GetCoverage'\n", + " f'&coverageId={coverage_id}'\n", + " f'&format=image/tiff'\n", + " f'&subset=Long({bb[0]:.4f},{bb[2]:.4f})'\n", + " f'&subset=Lat({bb[1]:.4f},{bb[3]:.4f})'\n", + " )\n", + "\n", + "def get_walking_friction(country):\n", + " out = _mkdir(f'Data/{country}/WalkingFriction')\n", + " dest = f'{out}/{country}_walking_friction.tif'\n", + " b = _boundary(country); bb = b.total_bounds\n", + " url = _friction_wcs_url('202001_Global_Walking_Only_Friction_Surface', bb)\n", + " print('[Walking Friction] Downloading from data.malariaatlas.org ...')\n", + " _stream(url, dest, label='[Walk]')\n", + " print(f'[Walking Friction] Saved -> {dest}')\n", + "\n", + "# --- 8. Motorized friction (data.malariaatlas.org WCS) ---\n", + "def get_motorized_friction(country):\n", + " out = _mkdir(f'Data/{country}/MotorizedFriction')\n", + " dest = f'{out}/{country}_motorized_friction.tif'\n", + " b = _boundary(country); bb = b.total_bounds\n", + " url = _friction_wcs_url('202001_Global_Motorized_Friction_Surface', bb)\n", + " print('[Motorized Friction] Downloading from data.malariaatlas.org ...')\n", + " _stream(url, dest, label='[Moto]')\n", + " print(f'[Motorized Friction] Saved -> {dest}')\n", + "\n", + "# --- 8b. Travel time to nearest large town (MalariaAtlas method) ---\n", + "# Replicates the method behind the Malaria Atlas Project's \"Accessibility to\n", + "# Cities\" surface (Weiss et al. 2018, Nature, doi:10.1038/nature25181):\n", + "# 1. \"Large towns\" are MAP's own definition - contiguous built-up areas with\n", + "# >=1500 people/km2 (or majority built-up land cover) and a total cluster\n", + "# population >=50,000. This is exactly the JRC GHS-SMOD \"Urban Centre\"\n", + "# (class 30) definition, so the Urban-Rural layer already fetched above\n", + "# supplies the town locations - no extra dataset needed.\n", + "# 2. The Motorized Friction surface (minutes to travel 1 metre) is converted\n", + "# into a per-pixel cost (minutes to cross that cell) using each cell's\n", + "# real-world size in metres.\n", + "# 3. A multi-source Dijkstra least-cost accumulation - the same family of\n", + "# cost-distance algorithm MAP used on their friction surface - is run\n", + "# from every Urban Centre cell at once, giving the cumulative travel\n", + "# time from every pixel to its NEAREST large town.\n", + "# In OnSTOVE this is used as a proxy for travel time to LPG supply points,\n", + "# since LPG resupply infrastructure tends to sit in or near larger towns.\n", + "def get_travel_time_to_towns(country):\n", + " import numpy as np\n", + " import rasterio\n", + " from rasterio.warp import reproject, Resampling\n", + " from pyproj import Geod\n", + "\n", + " out = _mkdir(f'Data/{country}/TravelTimeToTowns')\n", + " dest = f'{out}/{country}_travel_time_to_towns.tif'\n", + "\n", + " friction_path = f'Data/{country}/MotorizedFriction/{country}_motorized_friction.tif'\n", + " smod_path = f'Data/{country}/UrbanRural/{country}_ghs_smod_2020.tif'\n", + " if not os.path.exists(friction_path):\n", + " print('[Travel Time] Motorized friction not found - fetching it first ...')\n", + " get_motorized_friction(country)\n", + " if not os.path.exists(smod_path):\n", + " print('[Travel Time] Urban-Rural (GHS-SMOD) not found - fetching it first ...')\n", + " get_urban_rural(country)\n", + "\n", + " print('[Travel Time] Computing least-cost travel time to nearest large town (MalariaAtlas method) ...')\n", + "\n", + " with rasterio.open(friction_path) as fsrc:\n", + " # float32 instead of float64 - halves the memory of every full-country\n", + " # array built below (friction, cost, valid, smod_on_friction, travel_time)\n", + " # with no meaningful loss of precision for minutes-per-cell values.\n", + " friction = fsrc.read(1).astype('float32')\n", + " f_transform = fsrc.transform\n", + " f_crs = fsrc.crs\n", + " f_shape = fsrc.shape\n", + " f_nodata = fsrc.nodata\n", + "\n", + " # Resample GHS-SMOD onto the friction grid (nearest-neighbour - it's categorical)\n", + " with rasterio.open(smod_path) as ssrc:\n", + " smod_on_friction = np.zeros(f_shape, dtype='float32')\n", + " reproject(\n", + " source=rasterio.band(ssrc, 1),\n", + " destination=smod_on_friction,\n", + " src_transform=ssrc.transform, src_crs=ssrc.crs,\n", + " dst_transform=f_transform, dst_crs=f_crs,\n", + " resampling=Resampling.nearest\n", + " )\n", + "\n", + " # GHS-SMOD class 30 = 'Urban Centre' -> MAP's large-town definition (>=50k, >=1500/km2)\n", + " town_mask = (smod_on_friction == 30)\n", + " if not town_mask.any():\n", + " print('[Travel Time] No GHS Urban Centre (50k+) found - falling back to Dense Urban Cluster.')\n", + " town_mask = (smod_on_friction == 23) # class 23 = Dense Urban Cluster\n", + " if not town_mask.any():\n", + " print(f'[Travel Time] No urban settlements found for {country} - skipping.')\n", + " return\n", + "\n", + " # Convert friction (minutes / metre) into a per-pixel cost (minutes to cross the\n", + " # cell) using each row's true cell size in metres (accounts for latitude).\n", + " geod = Geod(ellps='WGS84')\n", + " height, width = f_shape\n", + " cell_size_m = np.zeros(height)\n", + " for row in range(height):\n", + " lon0, lat0 = f_transform * (0, row)\n", + " lon1, _ = f_transform * (1, row)\n", + " lon2, lat2 = f_transform * (0, row + 1)\n", + " _, _, dx = geod.inv(lon0, lat0, lon1, lat0)\n", + " _, _, dy = geod.inv(lon0, lat0, lon2, lat2)\n", + " cell_size_m[row] = (abs(dx) + abs(dy)) / 2\n", + " cell_size_m = np.repeat(cell_size_m[:, None], width, axis=1)\n", + "\n", + " cost = friction * cell_size_m\n", + " valid = np.isfinite(friction) & (friction > 0)\n", + " if f_nodata is not None:\n", + " valid &= (friction != f_nodata)\n", + " cost[~valid] = np.inf\n", + " cost[town_mask] = 0 # towns are zero-cost sources\n", + "\n", + " # Multi-source Dijkstra least-cost accumulation (cost-distance), the same\n", + " # class of algorithm MAP used to build the Accessibility to Cities surface.\n", + " try:\n", + " from skimage.graph import MCP_Geometric\n", + " except ImportError:\n", + " run_quiet('pip install --quiet scikit-image')\n", + " from skimage.graph import MCP_Geometric\n", + "\n", + " mcp = MCP_Geometric(cost, fully_connected=True)\n", + " starts = list(zip(*np.where(town_mask)))\n", + " travel_time, _ = mcp.find_costs(starts)\n", + " travel_time[~valid] = np.nan\n", + "\n", + " out_arr = np.where(np.isfinite(travel_time), travel_time, -9999).astype('float32')\n", + " meta = dict(driver='GTiff', height=height, width=width, count=1,\n", + " dtype='float32', crs=f_crs, transform=f_transform, nodata=-9999)\n", + " with rasterio.open(dest, 'w', **meta) as dst:\n", + " dst.write(out_arr, 1)\n", + " n_towns = int(town_mask.sum())\n", + " del friction, smod_on_friction, cost, valid, cell_size_m, town_mask, travel_time, out_arr, mcp\n", + " gc.collect()\n", + " print(f'[Travel Time] Saved -> {dest} (minutes to nearest large town, {n_towns} town cells used)')\n", + "\n", + "# --- 9. Forest cover (Hansen GFC 2020 tiles) ---\n", + "# Tile naming confirmed from Hansen download.html:\n", + "# Format is {num}{N/S}_{num}{E/W}, e.g. 10N_000E (NOT N10_E000).\n", + "# Tiles are 10-degree squares named by their TOP-LEFT corner.\n", + "def get_forest_cover(country):\n", + " out = _mkdir(f'Data/{country}/ForestCover')\n", + " dest = f'{out}/{country}_forest_cover_2020.tif'\n", + " b = _boundary(country); bb = b.total_bounds\n", + " tile_lats = range(int((bb[1]//10)*10), int((bb[3]//10)*10)+10, 10)\n", + " tile_lons = range(int((bb[0]//10)*10), int((bb[2]//10)*10)+10, 10)\n", + " tile_files = []\n", + " for tlat in tile_lats:\n", + " for tlon in tile_lons:\n", + " lat_top = tlat + 10\n", + " lat_s = str(abs(lat_top)).zfill(2) + ('N' if lat_top >= 0 else 'S')\n", + " lon_s = str(abs(tlon)).zfill(3) + ('E' if tlon >= 0 else 'W')\n", + " tname = f'Hansen_GFC-2020-v1.8_treecover2000_{lat_s}_{lon_s}.tif'\n", + " url = f'https://storage.googleapis.com/earthenginepartners-hansen/GFC-2020-v1.8/{tname}'\n", + " tmp = f'/tmp/{tname}'\n", + " if not os.path.exists(tmp):\n", + " try:\n", + " print(f'[Forest] Downloading tile {lat_s}_{lon_s} ...')\n", + " _stream(url, tmp, label='[Forest]')\n", + " tile_files.append(tmp)\n", + " except Exception as e:\n", + " print(f'[Forest] Tile {lat_s}_{lon_s} not available: {e}')\n", + " else:\n", + " print(f'[Forest] Using cached tile {lat_s}_{lon_s}.')\n", + " tile_files.append(tmp)\n", + " if not tile_files:\n", + " print('[Forest] No tiles found for this country.'); return\n", + " if len(tile_files) == 1:\n", + " _clip(tile_files[0], country, dest)\n", + " else:\n", + " # Each Hansen tile is a 10-degree, 30 m-resolution GeoTIFF (~1.5-1.6 GB\n", + " # as a raw array). The old code opened every tile with rasterio.merge,\n", + " # which reads them ALL fully into memory and concatenates them into one\n", + " # giant numpy mosaic before clipping - for any country spanning two or\n", + " # more tiles (most of them) that alone was enough to exhaust Colab's\n", + " # RAM. A GDAL VRT is just a small XML index of the tiles on disk;\n", + " # gdalbuildvrt never reads pixel data, and gdalwarp then streams the\n", + " # clip block-by-block straight off disk, so the full mosaic is never\n", + " # held in memory at once.\n", + " vrt_path = '/tmp/forest_mosaic.vrt'\n", + " r = subprocess.run(['gdalbuildvrt', '-q', vrt_path] + tile_files,\n", + " capture_output=True, text=True)\n", + " if r.returncode != 0 or not os.path.exists(vrt_path):\n", + " raise Exception(f'gdalbuildvrt failed: {r.stderr}')\n", + " _clip(vrt_path, country, dest)\n", + " if os.path.exists(vrt_path): os.remove(vrt_path)\n", + " print(f'[Forest] Saved -> {dest}')\n", + " gc.collect()\n", + "\n", + "# --- 9b. Forest cover (JAXA ALOS PALSAR-2 FNF4, radar - OPTIONAL, via Earth Engine) ---\n", + "# Alternative to the Hansen/GLAD layer above. PALSAR is L-band SAR (radar),\n", + "# not optical, so it sees through cloud/haze - useful for persistently cloudy\n", + "# tropical regions (e.g. the Congo Basin) where Landsat-derived products like\n", + "# Hansen can have data gaps. Output here is categorical (Dense Forest /\n", + "# Non-dense Forest / Non-Forest / Water), 25 m resolution, most recent\n", + "# available year (2021) of the JAXA/ALOS/PALSAR/YEARLY/FNF4 collection.\n", + "# Requires a one-time Earth Engine login (opens a browser tab/URL) and a\n", + "# Google Cloud project registered for Earth Engine access - this is the only\n", + "# layer in the kit that needs authentication, which is why it's optional.\n", + "# JAXA prohibits commercial use of PALSAR/FNF data without their consent -\n", + "# fine for research/planning use, but flag this if the output goes anywhere\n", + "# commercial. See https://developers.google.com/earth-engine/datasets/catalog/JAXA_ALOS_PALSAR_YEARLY_FNF4\n", + "_EE_INITIALIZED = False\n", + "\n", + "def _ee_init(project_id=None):\n", + " global _EE_INITIALIZED\n", + " if _EE_INITIALIZED:\n", + " return\n", + " import ee\n", + " try:\n", + " ee.Initialize(project=project_id) if project_id else ee.Initialize()\n", + " except Exception:\n", + " print('[Earth Engine] Not authenticated yet - opening the login flow '\n", + " '(follow the prompt/link, then paste the code back here) ...')\n", + " ee.Authenticate()\n", + " ee.Initialize(project=project_id) if project_id else ee.Initialize()\n", + " _EE_INITIALIZED = True\n", + "\n", + "def get_forest_cover_palsar_fnf(country, ee_project=None):\n", + " import ee\n", + " _ee_init(ee_project)\n", + "\n", + " out = _mkdir(f'Data/{country}/ForestCover')\n", + " dest = f'{out}/{country}_forest_cover_palsar_fnf_2021.tif'\n", + " b = _boundary(country); bb = b.total_bounds # (west, south, east, north)\n", + "\n", + " fnf = (ee.ImageCollection('JAXA/ALOS/PALSAR/YEARLY/FNF4')\n", + " .filterDate('2021-01-01', '2021-12-31')\n", + " .select('fnf').mosaic())\n", + "\n", + " # Request in a grid of ~1-degree tiles rather than one call for the whole\n", + " # country - Earth Engine's synchronous getDownloadURL caps out well below\n", + " # what a large country needs at 25 m resolution, and tiling (same pattern\n", + " # as the Hansen fix above) keeps every individual download small so this\n", + " # never has to hold a country-sized array in memory either.\n", + " import math\n", + " lon0, lat0 = math.floor(bb[0]), math.floor(bb[1])\n", + " lon1, lat1 = math.ceil(bb[2]), math.ceil(bb[3])\n", + "\n", + " tile_files = []\n", + " for tlon in range(lon0, lon1):\n", + " for tlat in range(lat0, lat1):\n", + " region = ee.Geometry.Rectangle([tlon, tlat, tlon + 1, tlat + 1])\n", + " tmp = f'/tmp/{country}_fnf_{tlon}_{tlat}.tif'\n", + " try:\n", + " url = fnf.getDownloadURL({\n", + " 'region': region, 'scale': 25, 'crs': 'EPSG:4326',\n", + " 'format': 'GEO_TIFF',\n", + " })\n", + " r = requests.get(url, timeout=120)\n", + " r.raise_for_status()\n", + " if len(r.content) > 0:\n", + " with open(tmp, 'wb') as f:\n", + " f.write(r.content)\n", + " tile_files.append(tmp)\n", + " except Exception as e:\n", + " # Tiles with no data (open ocean, outside the FNF mask, etc.)\n", + " # routinely fail/come back empty - that's expected, not an error.\n", + " print(f'[Forest PALSAR] Tile {tlon},{tlat} skipped ({e})')\n", + "\n", + " if not tile_files:\n", + " print(f'[Forest PALSAR] No tiles retrieved for {country} - skipping.')\n", + " return\n", + "\n", + " if len(tile_files) == 1:\n", + " _clip(tile_files[0], country, dest, nodata=0)\n", + " else:\n", + " vrt_path = f'/tmp/{country}_fnf_mosaic.vrt'\n", + " r = subprocess.run(['gdalbuildvrt', '-q', vrt_path] + tile_files,\n", + " capture_output=True, text=True)\n", + " if r.returncode != 0 or not os.path.exists(vrt_path):\n", + " raise Exception(f'gdalbuildvrt failed: {r.stderr}')\n", + " _clip(vrt_path, country, dest, nodata=0)\n", + " if os.path.exists(vrt_path): os.remove(vrt_path)\n", + "\n", + " for t in tile_files:\n", + " if os.path.exists(t):\n", + " try: os.remove(t)\n", + " except OSError: pass\n", + " print(f'[Forest PALSAR] Saved -> {dest} (1=Dense Forest, 2=Non-dense Forest, 3=Non-Forest, 4=Water)')\n", + " gc.collect()\n", + "\n", + "# --- 10. Livestock (FAO GLW4 2020 — GCS direct URLs) ---\n", + "# GLW4 2020 global TIFs from FAO GIS manager Google Cloud Storage bucket.\n", + "# FAO catalog URLs (data.apps.fao.org) redirect through a CKAN auth layer\n", + "# returning HTML instead of TIF. GCS URLs are direct, no auth required.\n", + "# Species codes: BFL confirmed (AmeriGEOSS); CTL/GTS/SHP confirmed on GCS.\n", + "_GLW4_GCS = 'https://storage.googleapis.com/fao-gismgr-glw4-2020-data/DATA/GLW4-2020/MAPSET/D-DA'\n", + "\n", + "_GLW4_LAYERS = {\n", + " 'cattle': f'{_GLW4_GCS}/GLW4-2020.D-DA.CTL.tif',\n", + " 'goats': f'{_GLW4_GCS}/GLW4-2020.D-DA.GTS.tif',\n", + " 'sheep': f'{_GLW4_GCS}/GLW4-2020.D-DA.SHP.tif',\n", + "}\n", + "\n", + "def get_livestock(country):\n", + " out = _mkdir(f'Data/{country}/Livestock')\n", + " for animal, url in _GLW4_LAYERS.items():\n", + " dest = f'{out}/{country}_livestock_{animal}.tif'\n", + " tmp_tif = f'/tmp/glw4_{animal}_global.tif'\n", + " if not (os.path.exists(tmp_tif) and os.path.getsize(tmp_tif) > 5_000_000):\n", + " print(f'[Livestock] Downloading GLW4 2020 {animal} from FAO GCS ...')\n", + " r = requests.get(url, stream=True, headers={'User-Agent': 'OnSTOVE-SDK/1.0'}, timeout=60)\n", + " r.raise_for_status()\n", + " ct = r.headers.get('Content-Type', '')\n", + " if 'html' in ct.lower():\n", + " raise ValueError(f'[Livestock] Got HTML for {animal} — species code may need updating.')\n", + " with open(tmp_tif, 'wb') as f:\n", + " for chunk in r.iter_content(chunk_size=8192):\n", + " if chunk: f.write(chunk)\n", + " else:\n", + " print(f'[Livestock] Using cached GLW4 {animal}.')\n", + " print(f'[Livestock] Clipping {animal} to {country} ...')\n", + " _clip(tmp_tif, country, dest)\n", + " print(f'[Livestock] Saved {animal} -> {dest}')\n", + "\n", + "# --- 11. Wealth Index (Meta RWI via HDX CKAN API + WorldPop fallback) ---\n", + "# HDX returns HTTP 202 for the direct per-country download URL — this is their\n", + "# consent/interest survey gate which blocks programmatic access.\n", + "# Fix: use the HDX CKAN resource_show API to fetch the actual S3 storage URL\n", + "# for the full 93-country zip, bypassing the gate entirely.\n", + "# HDX dataset UUID: 76f2a2ea-ba50-40f5-b79c-db95d668b843\n", + "# Full zip resource UUID: de2f953e-940c-43bb-b1f8-4d02d28124b5\n", + "_HDX_PACKAGE_API = 'https://data.humdata.org/api/3/action/package_show'\n", + "_HDX_DATASET_ID = '76f2a2ea-ba50-40f5-b79c-db95d668b843' # relative-wealth-index dataset\n", + "_RWI_ZIP_UUID = 'de2f953e-940c-43bb-b1f8-4d02d28124b5'\n", + "_RWI_ZIP_TMP = '/tmp/rwi_93countries.zip'\n", + "_RWI_ZIP_EXT = '/tmp/rwi_93countries/'\n", + "\n", + "def _is_zip(path):\n", + " \"\"\"Check the zip magic bytes (PK\\x03\\x04 or PK\\x05\\x06) rather than trusting the extension.\"\"\"\n", + " try:\n", + " with open(path, 'rb') as f:\n", + " sig = f.read(4)\n", + " return sig[:2] == b'PK'\n", + " except Exception:\n", + " return False\n", + "\n", + "def get_wealth_index(country):\n", + " import pycountry, zipfile as zf\n", + " out = _mkdir(f'Data/{country}/WealthIndex')\n", + " try:\n", + " c_info = pycountry.countries.get(alpha_3=country)\n", + " iso2 = c_info.alpha_2.lower()\n", + " cname = c_info.name.split(',')[0] # e.g. \"Burundi\", \"Congo\" (drop \", Dem. Rep.\" style suffixes)\n", + " except Exception:\n", + " iso2, cname = country[:2].lower(), country\n", + "\n", + " dest_rwi = f'{out}/{country}_relative_wealth_index.csv'\n", + "\n", + " # Attempt 1: look for this country's OWN resource on the HDX dataset (many countries\n", + " # were added individually after the original 93-country package, as e.g.\n", + " # \"Burundi_relative_wealth_index.csv\" - this is smaller, faster, and sidesteps any\n", + " # issue with the big zip entirely).\n", + " print(f'[Wealth Index] Checking HDX for a per-country RWI resource for {cname} ...')\n", + " try:\n", + " pkg_r = requests.get(\n", + " _HDX_PACKAGE_API,\n", + " params={'id': _HDX_DATASET_ID},\n", + " headers={'User-Agent': 'OnSTOVE-SDK/1.0'},\n", + " timeout=30\n", + " )\n", + " pkg_r.raise_for_status()\n", + " resources = pkg_r.json()['result']['resources']\n", + " match = next(\n", + " (r for r in resources\n", + " if r.get('name', '').lower().startswith(cname.lower() + '_relative_wealth_index')),\n", + " None\n", + " )\n", + " if match:\n", + " print(f'[Wealth Index] Found per-country resource: {match[\"name\"]}')\n", + " _stream(match['url'], dest_rwi, label='[RWI]')\n", + " print(f'[Wealth Index] Meta RWI saved -> {dest_rwi}')\n", + " return\n", + " else:\n", + " print(f'[Wealth Index] No per-country resource named for {cname}; trying the 93-country package ...')\n", + " except Exception as e:\n", + " print(f'[Wealth Index] Per-country lookup failed: {e}')\n", + "\n", + " # Attempt 2: Meta RWI 93-country zip via HDX CKAN API (bypasses the 202 consent gate)\n", + " try:\n", + " res_r = requests.get(\n", + " 'https://data.humdata.org/api/3/action/resource_show',\n", + " params={'id': _RWI_ZIP_UUID},\n", + " headers={'User-Agent': 'OnSTOVE-SDK/1.0'},\n", + " timeout=30\n", + " )\n", + " res_r.raise_for_status()\n", + " s3_url = res_r.json()['result']['url']\n", + " print(f'[Wealth Index] Got direct URL: {s3_url[:80]}...')\n", + " if not (os.path.exists(_RWI_ZIP_TMP) and _is_zip(_RWI_ZIP_TMP)):\n", + " print('[Wealth Index] Downloading 93-country RWI zip (~35 MB) ...')\n", + " _stream(s3_url, _RWI_ZIP_TMP, label='[RWI]')\n", + " if not _is_zip(_RWI_ZIP_TMP):\n", + " with open(_RWI_ZIP_TMP, 'rb') as f:\n", + " head = f.read(200)\n", + " raise Exception(f'Downloaded file is not a zip - server likely returned an error/HTML page '\n", + " f'instead of the file (first bytes: {head[:120]!r})')\n", + " if not os.path.exists(_RWI_ZIP_EXT):\n", + " with zf.ZipFile(_RWI_ZIP_TMP, 'r') as z: z.extractall(_RWI_ZIP_EXT)\n", + " # Find the CSV for this country's iso2\n", + " matches = [f for f in os.listdir(_RWI_ZIP_EXT)\n", + " if f.lower().endswith('.csv') and iso2 in f.lower()]\n", + " if matches:\n", + " import shutil\n", + " shutil.copy(f'{_RWI_ZIP_EXT}{matches[0]}', dest_rwi)\n", + " print(f'[Wealth Index] Meta RWI saved -> {dest_rwi}')\n", + " return\n", + " else:\n", + " print(f'[Wealth Index] {country} ({iso2}) not in RWI 93-country package.')\n", + " except Exception as e:\n", + " print(f'[Wealth Index] HDX CKAN approach failed: {e}')\n", + "\n", + " # Attempt 3: WorldPop poverty index (TIF, ~100m) - try a few common years since\n", + " # coverage/year varies by country.\n", + " dest_wp = f'{out}/{country}_worldpop_poverty_index.tif'\n", + " iso3l = country.lower()\n", + " print(f'[Wealth Index] Trying WorldPop poverty index for {country} ...')\n", + " for year in ('2010', '2015', '2020'):\n", + " url_wp = (f'https://data.worldpop.org/GIS/Covariates/Global_2000_2020/'\n", + " f'{country}/POOR/{iso3l}_poor_{year}.tif')\n", + " try:\n", + " _stream(url_wp, dest_wp, label='[Poverty]')\n", + " print(f'[Wealth Index] WorldPop poverty index ({year}) saved -> {dest_wp}')\n", + " return\n", + " except Exception as e:\n", + " print(f'[Wealth Index] WorldPop poverty ({year}) not available: {e}')\n", + "\n", + " print(f'[Wealth Index] No automated source found for {country}. Upload manually.')\n", + " print(' Meta RWI (93 countries + per-country additions): https://data.humdata.org/dataset/relative-wealth-index')\n", + " print(' WorldPop poverty: https://hub.worldpop.org/project/categories?id=9')\n", + "\n", + "# --- 12b. Temperature (Global Solar Atlas v2 - FULL GEOTIFF package) ---\n", + "# Global Solar Atlas has no public REST/API listing, but each country's data\n", + "# package is served as a static zip at a predictable URL once the country's\n", + "# display name is known:\n", + "# https://api.globalsolaratlas.info/download//_GISdata_LTAy_YearlyMonthlyTotals_GlobalSolarAtlas-v2_GEOTIFF.zip\n", + "# (confirmed against the equivalent World-level resource links on energydata.info,\n", + "# which are served from the same api.globalsolaratlas.info host).\n", + "# Rather than unzip and keep only TEMP.tif, this downloads and keeps the WHOLE\n", + "# unzipped folder (GHI, DNI, DIF, GTI, PVOUT, TEMP, ELE, OPTA rasters + metadata),\n", + "# matching the folder you'd get from a manual download.\n", + "GSA_NAME_OVERRIDES = {\n", + " 'COD': 'Democratic-Republic-of-the-Congo',\n", + " 'COG': 'Republic-of-Congo',\n", + " 'CIV': 'Ivory-Coast',\n", + " 'TZA': 'Tanzania',\n", + " 'LAO': 'Laos',\n", + " 'BRN': 'Brunei',\n", + " 'MYS': 'Malaysia',\n", + " 'SGP': 'Singapore',\n", + " 'TLS': 'Timor-Leste',\n", + " 'SWZ': 'Eswatini',\n", + " 'GMB': 'Gambia',\n", + " 'MMR': 'Myanmar',\n", + "}\n", + "\n", + "def _gsa_candidates(country):\n", + " \"\"\"Build a list of candidate Global Solar Atlas country-name spellings to try.\"\"\"\n", + " names = set()\n", + " try:\n", + " import pycountry\n", + " c = pycountry.countries.get(alpha_3=country)\n", + " if c:\n", + " for attr in ('name', 'common_name', 'official_name'):\n", + " n = getattr(c, attr, None)\n", + " if n:\n", + " names.add(n)\n", + " except Exception:\n", + " pass\n", + " if country in GSA_NAME_OVERRIDES:\n", + " names.add(GSA_NAME_OVERRIDES[country])\n", + " candidates = []\n", + " for n in names:\n", + " base = n.split(',')[0].strip()\n", + " for variant in {base, n}:\n", + " v_hyphen = variant.replace(' ', '-').replace(\"'\", '').replace('.', '')\n", + " v_nospace = variant.replace(' ', '').replace(\"'\", '').replace('.', '')\n", + " candidates.extend([v_hyphen, v_nospace])\n", + " seen = []\n", + " for c in candidates:\n", + " if c and c not in seen:\n", + " seen.append(c)\n", + " return seen\n", + "\n", + "def get_temperature_solaratlas(country):\n", + " out = _mkdir(f'Data/{country}/Temperature')\n", + " candidates = _gsa_candidates(country) or [country]\n", + " last_status = None\n", + " for name in candidates:\n", + " url = (f'https://api.globalsolaratlas.info/download/{name}/'\n", + " f'{name}_GISdata_LTAy_YearlyMonthlyTotals_GlobalSolarAtlas-v2_GEOTIFF.zip')\n", + " tmp_zip = f'/tmp/{country}_gsa.zip'\n", + " try:\n", + " print(f'[Solar Atlas] Trying Global Solar Atlas package for \\'{name}\\' ...')\n", + " _stream(url, tmp_zip, label='[GSA]')\n", + " folder_name = f'{name}_GISdata_LTAy_YearlyMonthlyTotals_GlobalSolarAtlas-v2_GEOTIFF'\n", + " dest_folder = f'{out}/{folder_name}'\n", + " with zipfile.ZipFile(tmp_zip, 'r') as z:\n", + " z.extractall(dest_folder)\n", + " os.remove(tmp_zip)\n", + " print(f'[Solar Atlas] Saved full GSA GEOTIFF folder -> {dest_folder}')\n", + " print('[Solar Atlas] (contains GHI, DNI, DIF, GTI, PVOUT, TEMP, ELE, OPTA rasters + metadata,')\n", + " print('[Solar Atlas] not just TEMP.tif - use whichever layers you need from the folder.)')\n", + " return\n", + " except requests.exceptions.HTTPError as e:\n", + " last_status = e.response.status_code if e.response is not None else None\n", + " print(f'[Solar Atlas] \\'{name}\\' failed (HTTP {last_status})')\n", + " continue\n", + " except Exception as e:\n", + " print(f'[Solar Atlas] \\'{name}\\' failed ({e})')\n", + " continue\n", + " print(f'[Solar Atlas] Could not automatically download the GSA package for {country}.')\n", + " print(f' Tried spellings: {candidates}')\n", + " if last_status == 404:\n", + " print(' All attempts returned 404 - Global Solar Atlas likely uses a different spelling')\n", + " print(' of the country name in its URL than any of the above (there is no public API to')\n", + " print(' look this up directly). Manual fallback:')\n", + " else:\n", + " print(' Manual fallback:')\n", + " print(' https://globalsolaratlas.info/download -> select country -> download the')\n", + " print(' GIS_LTAym_YearlyMonthlyTotals GEOTIFF zip, then place the whole unzipped folder in:')\n", + " print(f' {out}/')\n", + "\n", + "# --- 13. Blank CSV templates ---\n", + "SOCIO_PARAMS = [\n", + " ('Country_name','','string','–'),('Country_code','','string','–'),\n", + " ('Start_year','','int','–'),('End_year','','int','–'),\n", + " ('Population_start_year','','float','People'),\n", + " ('Population_end_year','','float','People'),\n", + " ('Urban_start','','float','Ratio'),('Urban_end','','float','Ratio'),\n", + " ('Elec_rate','','float','Ratio'),('rural_elec_rate','','float','Ratio'),\n", + " ('urban_elec_rate','','float','Ratio'),\n", + " ('Mort_COPD','','float','Deaths per 100k/yr'),\n", + " ('Mort_IHD','','float','Deaths per 100k/yr'),\n", + " ('Mort_LC','','float','Deaths per 100k/yr'),\n", + " ('Mort_ALRI','','float','Deaths per 100k/yr'),\n", + " ('Mort_STROKE','','float','Deaths per 100k/yr'),\n", + " ('Morb_COPD','','float','Cases per 100k/yr'),\n", + " ('Morb_IHD','','float','Cases per 100k/yr'),\n", + " ('Morb_LC','','float','Cases per 100k/yr'),\n", + " ('Morb_ALRI','','float','Cases per 100k/yr'),\n", + " ('Morb_STROKE','','float','Cases per 100k/yr'),\n", + " ('Rural_HHsize','','float','People/HH'),\n", + " ('Urban_HHsize','','float','People/HH'),\n", + " ('Meals_per_day','','float','Meals/person/day'),\n", + " ('infra_weight','','float','–'),('NTL_weight','','float','–'),\n", + " ('pop_weight','','float','–'),\n", + " ('Minimum_wage','','float','USD/month'),\n", + " ('COI_ALRI','','float','USD/case'),('COI_COPD','','float','USD/case'),\n", + " ('COI_IHD','','float','USD/case'),('COI_LC','','float','USD/case'),\n", + " ('COI_STROKE','','float','USD/case'),\n", + " ('VSL','','float','USD/life'),\n", + " ('Discount_rate','','float','Ratio 0-1'),\n", + " ('Cost of carbon emissions','','float','USD/tonne CO2'),\n", + " ('w_health','','float','–'),('w_environment','','float','–'),\n", + " ('w_time','','float','–'),('w_costs','','float','–'),\n", + " ('w_spillovers','','float','–'),\n", + " ('Health_spillovers_parameter','','float','–'),\n", + " ('fnrb','','float','Ratio 0-1'),\n", + "]\n", + "\n", + "TECH_STOVES = [\n", + " 'Collected_Traditional_Biomass','Collected_Improved_Biomass',\n", + " 'Biomass_Forced_Draft','Traditional_Charcoal','Charcoal_ICS',\n", + " 'Pellets_Forced_Draft','Kerosene','LPG','Biogas','Electricity',\n", + "]\n", + "TECH_BASE = [\n", + " ('name','','string','–'),('inv_cost','','float','USD'),\n", + " ('tech_life','','int','Years'),('fuel_cost','','float','USD/kg'),\n", + " ('energy_content','','float','MJ/kg'),('pm25','','float','24-h ug/m3'),\n", + " ('efficiency','','float','Ratio 0-1'),\n", + " ('time_of_collection','','float','Hours/day'),\n", + " ('time_of_cooking','','float','Hours/day'),\n", + " ('om_cost','','float','USD/year'),\n", + " ('co2_intensity','','float','kg/GJ'),('ch4_intensity','','float','kg/GJ'),\n", + " ('n2o_intensity','','float','kg/GJ'),('bc_intensity','','float','kg/GJ'),\n", + " ('oc_intensity','','float','kg/GJ'),('epsilon','','float','–'),\n", + "]\n", + "GRID_TECHS = ['oil','natural_gas','biofuels_and_waste','Nuclear',\n", + " 'hydro','coal','wind','solar','geothermal']\n", + "\n", + "def get_blank_csvs(country):\n", + " import csv\n", + " out = _mkdir(f'Data/{country}/Specifications')\n", + " se = f'{out}/{country}_socioeconomic.csv'\n", + " with open(se,'w',newline='') as f:\n", + " w = csv.writer(f)\n", + " w.writerow(['Param','Value','data_type','Unit'])\n", + " for row in SOCIO_PARAMS: w.writerow(row)\n", + " print(f'[Specs] Socio-economic CSV -> {se}')\n", + " te = f'{out}/{country}_technoeconomic.csv'\n", + " rows = []\n", + " for stove in TECH_STOVES:\n", + " for p in TECH_BASE: rows.append([stove]+list(p))\n", + " rows.append([stove,'current_share_urban','','float','Ratio 0-1'])\n", + " rows.append([stove,'current_share_rural','','float','Ratio 0-1'])\n", + " if stove in ['Collected_Traditional_Biomass','Kerosene']:\n", + " rows.append([stove,'is_base','FALSE','bool','–'])\n", + " if 'Biomass' in stove or 'Pellets' in stove:\n", + " rows.append([stove,'draft_type','','string','Natural or Forced'])\n", + " rows.append([stove,'collected_fuel','','bool','True/False'])\n", + " if stove == 'LPG':\n", + " rows.append([stove,'diesel_cost','','float','USD/litre'])\n", + " if stove == 'Electricity':\n", + " for t in GRID_TECHS:\n", + " rows.append([stove,f'capacity_{t}','','float','GW'])\n", + " rows.append([stove,f'generation_{t}','','float','PJ'])\n", + " with open(te,'w',newline='') as f:\n", + " w = csv.writer(f)\n", + " w.writerow(['Fuel','Param','Value','data_type','Unit'])\n", + " for row in rows: w.writerow(row)\n", + " print(f'[Specs] Techno-economic CSV -> {te}')\n", + "\n", + "# --- 14. Specification templates (blank, generic - Technoeconomic & Prep file) ---\n", + "# These are NOT downloaded from anywhere or generated from live data - they are fixed, blank\n", + "# workbook templates (Read Me + blank table + Parameter Legend tabs) that apply to any country.\n", + "# Embedded as base64 so they save with no internet dependency.\n", + "_TECHNOECON_TEMPLATE_B64 = \"UEsDBBQAAAAIAAl1+1xGx01IlQAAAM0AAAAQAAAAZG9jUHJvcHMvYXBwLnhtbE3PTQvCMAwG4L9SdreZih6kDkQ9ip68zy51hbYpbYT67+0EP255ecgboi6JIia2mEXxLuRtMzLHDUDWI/o+y8qhiqHke64x3YGMsRoPpB8eA8OibdeAhTEMOMzit7Dp1C5GZ3XPlkJ3sjpRJsPiWDQ6sScfq9wcChDneiU+ixNLOZcrBf+LU8sVU57mym/8ZAW/B7oXUEsDBBQAAAAIAAl1+1wk+zMd7wAAACsCAAARAAAAZG9jUHJvcHMvY29yZS54bWzNksFqwzAMhl9l+J4oSUs7TOrLxk4tDFbY2M3IamsWJ8bWSPr2c7I2ZWwPsKOl358+gWr0ErtAz6HzFNhSvBtc00aJfiNOzF4CRDyR0zFPiTY1D11wmtMzHMFr/NBHgqooVuCItdGsYQRmfiYKVRuUGEhzFy54gzPef4ZmghkEashRyxHKvAShxon+PDQ13AAjjCm4+F0gMxOn6p/YqQPikhyinVN93+f9YsqlHUp4221fpnUz20bWLVL6Fa3ks6eNuE5+XTw87p+EqopqlRXrrFrvy6VcFrK8fx9df/jdhF1n7MH+Y+OroKrh112oL1BLAwQUAAAACAAJdftcmVycIxAGAACcJwAAEwAAAHhsL3RoZW1lL3RoZW1lMS54bWztWltz2jgUfu+v0Hhn9m0LxjaBtrQTc2l227SZhO1OH4URWI1seWSRhH+/RzYQy5YN7ZJNups8BCzp+85FR+foOHnz7i5i6IaIlPJ4YNkv29a7ty/e4FcyJBFBMBmnr/DACqVMXrVaaQDDOH3JExLD3IKLCEt4FMvWXOBbGi8j1uq0291WhGlsoRhHZGB9XixoQNBUUVpvXyC05R8z+BXLVI1lowETV0EmuYi08vlsxfza3j5lz+k6HTKBbjAbWCB/zm+n5E5aiOFUwsTAamc/VmvH0dJIgILJfZQFukn2o9MVCDINOzqdWM52fPbE7Z+Mytp0NG0a4OPxeDi2y9KLcBwE4FG7nsKd9Gy/pEEJtKNp0GTY9tqukaaqjVNP0/d93+ubaJwKjVtP02t33dOOicat0HgNvvFPh8Ouicar0HTraSYn/a5rpOkWaEJG4+t6EhW15UDTIABYcHbWzNIDll4p+nWUGtkdu91BXPBY7jmJEf7GxQTWadIZljRGcp2QBQ4AN8TRTFB8r0G2iuDCktJckNbPKbVQGgiayIH1R4Ihxdyv/fWXu8mkM3qdfTrOa5R/aasBp+27m8+T/HPo5J+nk9dNQs5wvCwJ8fsjW2GHJ247E3I6HGdCfM/29pGlJTLP7/kK6048Zx9WlrBdz8/knoxyI7vd9lh99k9HbiPXqcCzIteURiRFn8gtuuQROLVJDTITPwidhphqUBwCpAkxlqGG+LTGrBHgE323vgjI342I96tvmj1XoVhJ2oT4EEYa4pxz5nPRbPsHpUbR9lW83KOXWBUBlxjfNKo1LMXWeJXA8a2cPB0TEs2UCwZBhpckJhKpOX5NSBP+K6Xa/pzTQPCULyT6SpGPabMjp3QmzegzGsFGrxt1h2jSPHr+BfmcNQockRsdAmcbs0YhhGm78B6vJI6arcIRK0I+Yhk2GnK1FoG2camEYFoSxtF4TtK0EfxZrDWTPmDI7M2Rdc7WkQ4Rkl43Qj5izouQEb8ehjhKmu2icVgE/Z5ew0nB6ILLZv24fobVM2wsjvdH1BdK5A8mpz/pMjQHo5pZCb2EVmqfqoc0PqgeMgoF8bkePuV6eAo3lsa8UK6CewH/0do3wqv4gsA5fy59z6XvufQ9odK3NyN9Z8HTi1veRm5bxPuuMdrXNC4oY1dyzcjHVK+TKdg5n8Ds/Wg+nvHt+tkkhK+aWS0jFpBLgbNBJLj8i8rwKsQJ6GRbJQnLVNNlN4oSnkIbbulT9UqV1+WvuSi4PFvk6a+hdD4sz/k8X+e0zQszQ7dyS+q2lL61JjhK9LHMcE4eyww7ZzySHbZ3oB01+/ZdduQjpTBTl0O4GkK+A226ndw6OJ6YkbkK01KQb8P56cV4GuI52QS5fZhXbefY0dH758FRsKPvPJYdx4jyoiHuoYaYz8NDh3l7X5hnlcZQNBRtbKwkLEa3YLjX8SwU4GRgLaAHg69RAvJSVWAxW8YDK5CifEyMRehw55dcX+PRkuPbpmW1bq8pdxltIlI5wmmYE2eryt5lscFVHc9VW/Kwvmo9tBVOz/5ZrcifDBFOFgsSSGOUF6ZKovMZU77nK0nEVTi/RTO2EpcYvOPmx3FOU7gSdrYPAjK5uzmpemUxZ6by3y0MCSxbiFkS4k1d7dXnm5yueiJ2+pd3wWDy/XDJRw/lO+df9F1Drn723eP6bpM7SEycecURAXRFAiOVHAYWFzLkUO6SkAYTAc2UyUTwAoJkphyAmPoLvfIMuSkVzq0+OX9FLIOGTl7SJRIUirAMBSEXcuPv75Nqd4zX+iyBbYRUMmTVF8pDicE9M3JD2FQl867aJguF2+JUzbsaviZgS8N6bp0tJ//bXtQ9tBc9RvOjmeAes4dzm3q4wkWs/1jWHvky3zlw2zreA17mEyxDpH7BfYqKgBGrYr66r0/5JZw7tHvxgSCb/NbbpPbd4Ax81KtapWQrET9LB3wfkgZjjFv0NF+PFGKtprGtxtoxDHmAWPMMoWY434dFmhoz1YusOY0Kb0HVQOU/29QNaPYNNByRBV4xmbY2o+ROCjzc/u8NsMLEjuHti78BUEsDBBQAAAAIAAl1+1zoPR9tYwQAABAMAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1snVfbTiM5EP2VUh5gV8o93AZCpFmGmUFiBzRc9jFyuitpC7fda7sT8vdz7E4CCOggHpJ02+W6nDpV5QwXxj64jNnTY660O21k3hfHnY5LMs6Fa5uCNXamxubC49XOOq6wLNJ4KFedfrd70MmF1I3RMK5d29HQlF5JzdeWXJnnwi7/YWUWp41eY73wW84yHxY6o2EhZnzD/q64tnjrbLSkMmftpNFkeXra+No7/trbDweixL3khXv2TC4zix9WppewjEC6DQrBTYx5CNsXaViCPCtOfFAq8DPnM1Yq6IZn/6/MNDZehIPPn9f2vkc4EN5EOD4z6j+Z+uy0cdSglKeiVP63WfzkVYjR5cQoF79pUcn2enAwKZ03+eo0XMilrn7F4wqbTnUwWv0mvBgNrVmQjVJR+9Fay8YegkyCRIwpCmJV6pCQG2+xK6HQj85Mqb1d0i0nmTbKzJa0I/LihL6XrOim4EROZSICVI5aEMsLJTwPOx5eBRWdBB94s3Gpv92lfnSpH10KjHmlY1DpGOy9r2PwTMfrsC50UXpKARWBtOQzpit9c3t1f04JqCD1rMWaLaLNTcrqGKvON6lgGzmuE24S59IF3rkmCZ3CEWtZeyodiBq18pyB3Eof+ScEg/g04PfXRBrUDzQkmbCJEapJD2yNg/EmXV7/gBWfCRxrEkRnApKRmVYm0i//btfgvLcd571tOO9vx3m/FufbjB2Te0kTYRmoRF611lvgzlyokh1yITzqX3oyeiOHelCKtFntABGkzLbpDtpD8nKkB6WKHIB8TSqLljctpJerHIu5kEpMFG+yvdY74ZCbmGTFaR2eB9vxPNiG5+F2HYdRx+AdPH9CjzfgWAhbuk3vqvH7aLvNo7ochpZ/7AqR8GkDPd2xnXNjRNRr0/eQFKkjoPche4BVlblG5mi36hicGG1ymYzXnWEXqfTZ6/yHPNXB/2V7GF8+E0a/ItHutbAiZ892fMkz1ukuCTAV1biMnFkEVrJIMoqClLMIhS+9qxjmlwVXfaDU0tcFEjr61p7c/UwogzadPxbG+hrwEdSO8icXN1eDnZk/GfsXgu3EzWO4gWBI7Kon1obzkRHT21YYvQ9MhV6/tjR+Gc+uztHBB0zUTo33cG/RN6N3QY8UrSnUQmDEODCCAOUd+LCqC1cL5N72Ztvb+5x/lyzmDDZXRTpRQj+gRtWS5JSCz7bEc2rYhTBEUajlSaSBoFkYg7FvvxhgExdG3dSaPAY8w4UK15JHTCeNEqIu4QwadGjmmhSshy4LS9F0LQofGDm92pnzPgq4j1EisIPROQ5V8BRRqAXqPIv2rX246FDeKeI6fxrCTXpDFK05TC8zPaZsmVrTJGeUsE00P502YSfOrzzM+2rqG4kvLTwGmBrHOf+rTACcjYM/XBbcGN1lvBDO85sAdp7d/sJd+V9hZxLTVvEUMHXbh0DNVlBWL94U8d43MR4wV3dFXNnZBgHsTw0qavUS7pibPwGjP1BLAwQUAAAACAAJdftcUf+wwF0VAACv5wAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQyLnhtbK2dUXPbyLlE/wpLqbpvCTkgCZJ7bVfFsr3ZZJNyrbPJowomIQllitAFoVWcX39BWdRMNvj6zGLwkrVsdUM6oaVWG4N+9Vg3X463ZdlO/nW3PxxfX9y27f130+lxe1veFcc/1PflofuT67q5K9ruzeZmerxvymL3JLrbT7PZLJ/eFdXh4s2rp9/72Lx5VT+0++pQfmwmx4e7u6L5+rbc14+vL9zF+Td+qm5u29NvTN+8ui9uyk9l+/P9x6Z7a/risqvuysOxqg+Tprx+ffFH9937bJadFE/v8o+qfDwGv56cPpfPdf3l9MYPu9cXs4uT96GcfP10v6+erjZp6/sfy+v2stzvO8fsYlJs2+qX8mP3bq8vPtdtW9+d/rz7ONui7X7ruqn/XR6erlnuy+59u4/m/r/e+ZvJs+npk/y/54/44uUTOn1Q4a/PH/mHJ7Idqc/Fsbys9/+sdu3t64v1xWRXXhcP+/an+vFP5TOt5clvW++PT/87efz2vll+Mdk+HLuP5lncfQR31eHbf4t/PVMOBZkhyJ4F2a8EbmEI5s+C+a8FM0OweBYsfi2wPofls+DpU59++9yfwL0r2uLNq6Z+nDSn9+7cTr94ov90mY5XdTi9Cj+1TfenVadr33x4KPevpm3ndHp7un1WvdWqj0VT3PXILrXsH8X+oeyRvdOyXfeJXbVf7/uk77X050PV/qdq2gF6oZS9UMqebJaGTfcyPL3Wy93V35tiV51e9MX+6m1Vd18Rjn34vtnlht2huOv7XC6/qVZPqtOXDw9I+x3bpjrc9NHRuv/53Tpz7n8FoPkLoLl0+s2AtF11+OVqWx/bPkhzE5L2vN7XRZ/hey37+dM7wWfxwmcxLh9t15bb26t9dd37KlqYgLRpdejFo0Vfy6I5CkDLF0DLcQFpu+vuy5r5ClqagMDUegVpWfcKmn65EYzyF0b5uIy0XXkom5uvHaVDW/b+X3+Zm6C0swlKy/76Z81p9cJpNS4nbXd/ly376KxMOtrPpKNl2eL3t5OHm+ndXCBavyBaj4tI25XX19W2Kg/br32g1iYo7WqC0rKfiu7Tmcx+7wSnzQunzbictF3bBfir+rr7O7d/zs59vDYmL+1u8tKy2/qhOU53xVfBy818npyNSwz8PLL6S3/IuXx26AMG5iYx0EUhCyK4GxmZ9qvvzG99z8peVNrURqV1p+9+p5CgSPkY7nRg/e2ktN+2zq6q07e/Y9X2fulydiQHa5uX1n25mX7/ZwXLR3I3ciYHv+3tAmDZ0RysbVhah7B8PncjB3TwO2Q1wLJjOljbsLQOYfms7kYO6+D3eQus7MQOzjYrrUNWPrO7kUM7+NXEyg7t4Gyz0jpk5XO7Gzm4g195f6z2/RnL2ekdTG1MWsdli/Pp3Y0c38GvOl6d2tZeUHZ6B9PPdd1XLb4H2d9/+vn99MMff/z0XqHyAd6NnODBb/vQNN2Py1fH26Iprx6az0X/68sO8XAB+/WldTE/9mQ+xmcjx3jw+09szUNT9L02LjM7ysMFTGygi8Lmo3zmIoviH+7um/qX7heKmY7OZk1sh3hwFEWxFvIXryzo0mNDfBQjbaaa4kz06QPDO+h0WZz56J7FRvcoRNpMlsWZndnB1qiLQUV9ceYTexab2KMYQaZWfXFmR3WyNV9HWoeVceazehab1aMwaTOujDM7qoO3zUrrqDXOfFTPYqN6FCptZrXGmZ3PwdEGpHVRxXHmQ3oWG9KjKEFCl8VxZod08LVZaV1UGvAxPYuN6VGotFlcd5zZcR38bWRaF9OFZj6uZ7FxPQpZbN1udseZndPB3OaVXrfPfU6fx+b0GF5gJorjuR3MwdT+d3etiyiO5z6Xz2Mr9ihM2gxb47kd0MHahqV11MHMfTqfj5nOwQwr47kd0cHaJpXWr8+DW17GDOlghn3xXNz3MvTGl7Ryfe6j+nzMqA5mVBbP7bQOzjaotGJ97sP6fMywDmbUFM/tqA7ONqi0Vn3uo/o8lz3LM5XJh7rZlrvJu6a47vuA3s51NLYalrkd0sHRblhAGHEvno/oc51io+loG3kXnh3NwdV+8Wid7lbmPpTPdV6NhgNxXLUqczuFg63RqoCKWpW5z99znU6j6UA4Vn3K3M7cZGu+drQO+5SFD9wLHUtjAYENNykLO3GDt0kJdNSkLHzcXug4Gg1J21gdysLO1+Boo9G6qA5l4UP2QofQaD7aRrcnCztbg69NSeti2pOFz9cLnT+jIUH9HdWbLOx4Df42LK2L6QEWwf3lOoNGw4Iby7kxWYj7ywfma9BFkfIZe6FDaDQpSNd2V7KwgzWY2oT4FnPoShY+Wy90Eo0GpG2wJVnYIRusbUxaRz9/LHzCXoyTsMEG+5GFHbPB2makdcjIB+3FOEEbbLAZWdhhG6xtRlqHjHzcXowTt8GGOpGFnbjB2UakdYRo6QP3cpzADTbUhiztuA3O9rEgrUNEPm4vx4nbYLM76ayDlpdLO3SDr92JgPBvRXu6UWhSN8+fmqLlw/dynPANNtuXru66/wzt5dIO4OBt3ToHsqhb55Y+gC/nsmT7WHafYRsBCqpto2Rb2pEbHMULSgu5ZFv6xL3UqTSaDp26tEu2pR21wdX+moQ3nig4wWlOHUij4WgbWbItxTlObWuUbKDCo64+YS91Do2mAzFYHnK10zXZmq8drcOSbenj9VKH0GhAcHcJlmxLO1+Dt01J66hkW/p8vdQpNBqStrFKtqUdq8HRRqN1USXb0mfrpY6g0Xy0jS7ZlnayBl+bUvp93rlP17kOobGQwCauZMvtjA3+9ony9IOauc/Zuc6j0bC0TUTJltthG8xtUloXRcpn7Fwn0WhS2kaUbLkdrsHUJoQ3d1PJlvtsneskGg0IzmRSyZbbIRusbUxpt43kPmHn4yRssMGSLbdjNljbjNLuGMl90M7HCdpggyVbbodtsLYZpd0skgePTRknboMNlWy5nbjB2UaU1mfnPnDn4wRusKGSLbfjNjjbiNLq7NzH7XycuA02umTL7dANvnYnAsLfUrLlPnzn44RvsOGSLbcDOHhbJRvIokq2lQ/gq5ks2cLjlZe3RbOte09Gvl3poGuVbCs7coOj/YICIZdsK5+4VzqVRtPRNqpkW9lRG1ztBznhI1EUHB+yV1D3xsLRNrJkW9kxG2yNkg1UVLKtfMJe6RwaTQdisCrZVna6JlvztYOPI4SHpPl4vdIhNBqQtuGSbWXna/C2KWkdPknO5+uVTqHRkLSN+Qw5O1aDo41G66JKtpXP1isdQaP5aBtdsq3sZA2+NiWtiynZVsHzCHUIjYakbeJKtpV4LuHQBxNqXUx1tPI5ewXP/4iFFXtc0izZVnbYBnObVPpZyZXP2CtIorGktI0o2VZ2uAZTmxDfqQ0l29pn67VOorGAwAZLtrUdssHafsRl2r0ja5+w1+MkbLDBkm1tx2ywthmlnYlc+6C9Hidogw2WbGs7bIO1zSjtNOTax+31OHEbbKhkW9uJG5xtRGl99toH7vU4gRtsqGRb23EbnG1EaXX22sft9ThxG2zEg9/WduIGU5uO1nEfsvZxez1O3AabyIeYre3cDRewWaXn7rXP3etxcjfYRD67bG0Hb7iATSv9aSXr4JHga9lEnglNfrj81EsJ7tM2Gsi1ePz30EobhBF/43zIXsMDSYiKlqvmcW2na3C1XzCYrgWUjQ/WG3jqCEABuWwcN3aYBlujcQQVNY4bH6U38JARogI5VzWNGzs+k635VHh+cLcs0TY+P2/gmSIEBo45YsO4sYMzeNt0tI4axo0Pzht4jAjB0XKrWdzYQRkcbSRaF9Usbnxa3sBDQ4gL1NKyUdzYGRl8bTpaF7VK4XPyBh4UQnDgvuq4HQo7KoO/DUnrYvqxjQ/LGx0mEZKWRzSIGzsgg7lNSOuiCPmAvIFn+REhuN3Dbg43dhgGU5sMPh+EmsONz8IbeHIfgdFybAw3digGaxtP2pnFTTCJk5aIQY5N4Ubs3wwdwEk7rOhm4fxNWjQmPQ9HzNTczeC9m7S+2c2CtZtZWkwmPa5FzMTIDXgLQGlls5tlAaC0uEx6nIiYiVUb8BaAEndtZsGwzUwfTPxL2dTH7qeCfjjDTiOedf1Qhp5HJGXEKMQs2LCZ6YypuQw/h3jW9rMZulYDQt1VuFmwVjPTqVJjSTiBeBb3cxl0BpFk1Fa4WbBMM9NZUnOB/KrKirO4n8vAYExC7CvcLBiimekwqdGknjo8O/TzGRiPSUiNhZsF8zMzHSY1nmHnDc+6figDQzEJozoLNwvWZmY6SmoyKScNz+p+PkM3ZUAY01q4cBwShhMlnhGWINUU5OAtyFHGIMM1SB0lNaOE6Ue1/Th4/DF9/TGcf4RxRI0mdetRjT0OXntMnXsM9x5hDVHTSR13VOuOg+cdU/cdw4FHmD/UdFLXHNWc4+A9x9RBx3DREQYPNZ3E+Ua13zh4wDF1wTGccISFQw1Ha/GHcTXYOHixMXWyMdxshF1DDQeishhoVAuNgyca0zcaw5FGWDLUZKBBjpwZVPOMcAlBKX1g3YULjbBcqDn9ljlG894cp/YYBw8yjrDI6IJJRpfpo4I/fvy+FxEsHJqNlxhbJE/ReIEy4q9YMLfoYJfQRDL8PKAT84rkK0a/U44EumBc0cEEoUkk4RCgE0uKZGz1XCDDnisYU3SwOWgiSTj558RwIhrbr5LEw38umE90sDFoUkk97ufEXiK5CzRpJ/5csJjoYFHQJDPsjJ8Tm4jkKXiMcMzPBduIDlYETShaBp2WWEMkZ4FGC+O+LQcBGDYDTTJjnOZzYgORriAIpR/oc8EMooOJQJNQ8hE+J/YOyV7gST/F54LJQweLgCaewef2nJg1JFuBJfnonguGDR3s/1lUQMY1n5gyJHObDQjxB+5gytDB1p8JJvGEnhOzhWQuwCTeNxEsFzqY9jPBJB7Lc2KlkMwFmMRiOBgqdLDkZ4JJO4vnxCYheQsuiZVwMEvoYLjP5JJ2AM+JCULyFlwSy+BghdDBTp/JRct2VXlUPzKJwUGyFlh4GWVftU0p0QQxGGb6TDRaFlvnieFBuoRANEIeDsYHHQz1mYhGOWXnxPIgXUIgSj9o54IJQjfXR+3et7fFoffpY28dTP2ZbZ7YHCRP0eaBMqLNC7YHHcz0SSzDz9k5MThIvuIlk3LUzgWDgw5m+RQVkOpWTywMkrHV6oEMW71gYtDBJJ/EknDSzol1QTQ2Xy0g5GYvGBd0MMMnyaQetXNiVpDcBZ6003YuWBV0sLsn6Qw7a+fEeiB5CiYjHLdzwYKgg5k9CSblsJ0Tk4HkLPCkn7dzwWqgg4k9SWeM03ZOzAbSFQSl9AN3LpgOdLCwJylpaUzbJyYDyV4g0sI4REE8hoE9iWjweTsnlgLJVqBJPnLngr1AB7N6kkzigTsnVgLJXPBJO3PngqFAB4N6Ek7iiTsn9gHJXMBJPHQXTAQ6mNJTcEDK7Z9YBiRzG07iNqALxgEdrOhJOIlH7cQoIHkLNomVcTAF6GAxT7JJPGUn5v/IW7BJbI2D9T8HY3mSjZZSEyim/8haoOGbJ7AJDOb/HEzlSTywSBLZBor9P7qEwDRCbg6GAB2s5klMWhrbCIohQLqEwKSFcZiC4Pw8nmc1gm+r+qY49lPS+dQsBMUCIHmKQhCUEYVgMAPoYCxPUdFK2QeK1T/yFS8YzMoSShCTYSZPQYEbKmQdKAb/yNiqA0GGdWAw9udgFk9RgQQr20Ax8IfG9muF76TQfVcw8OdgAk+AAWVEGSgW/cjdpgNCLAODQT8Hq3cKjlaaXaCY7iNPgUQL47rAPMjFOW5km1ygQdZVYC5CMTgLOloY9b06mO5zsHCn4GhlZBMoRvvoCgKSFkbVXMF2n4OJOwVJK2OKQDHZR/aCkBbGEQqSMQzcKUJaqXpAMdRHtoIM32RBPWAw1+dg1k6B0UquAcVIH5kLPFqIP5QHO30O9uwUG7i/AltAsc5H5oKNFjKbIBjDkp1iAzdVYAkohvnIXLBJrI+DOT4Hq3WKDczkUc8lFvjIW6BJLI+DAT4He3UCDSixAhTre+RtowEhowni8fNSnXmf0imlNF2e6/383joYujOrCbG5R56imgBlRDURbO85GKpDNHQsTvQTYnSPfMXLBtetJZkgHsNEHZKBjCxLCrG4R8ZWSQEyLCmCxT0Hu3SIBqKrbCrEzB4a268afEgb/DAeTO05mKZDOjD6wXWFmNsjd4FIC7GuCMb2HMzSISEtNzsLMbBHnoKLFsZ1FsHInoMZOoQDz6LQxYWY1SNngWiE246DZT0H83NIKPY8nmwvxKweXUGQGuFIXrCs52CGDklpeUyFIbb1yF5g0sIoTMG+noMZOsIEctVjiE09srXxgDCmxwiW9RwM0CEdOLAX+a/EYlmPLiFIaWHUV6ZgYM/BDh2igme7Rf5LsRjYo0sIVCO0z8HOnoM9OkQFD3qrq8O22nXf58qr62Lb1k0/KZGzhw7tkTDiB7RgbM/BKB1y0vKbpto9fXWSlETkHrq1R8IYSkHmhnE6pAS3aBT3xUl7dft119T9jETmHrq4R8Lv/ynxBIEb9ugQD/TRZzzHev/rbytnPCJ6Dx3ZIyHgCSI3DNAhHqikz3geq8Oun45I3UNH9UgIdIK4DTN0SAfuaT7TuSnr9rZs7qxvaiJvwyUEIy0ERkHQhkU6ZAS3Np8ZGdOOl06M7JG5oKOFmk4ws+dgm47ogPyFTl31wxFbe+RtwwEhwAniNQzUIRyI12c4h6I9Bcar/n8EuHRieo+uISBpIUAKgjXs1CEkCNZnSH972O7/6yejMyCRqofO75EQAAVxGlbrEBDE6TOgz1V9qmePV8Vhd/VYHNv+/lrM8tGlBCstBFZBpIYNO2QFkfrU0J5+GjqIuCiW+chfANLCj/Lfy4JVPgf7dQhIywNAdmAUq3zkLwBpIQAK8jTM1yEgLQ8AmZFRbPKRveCjhcAnCNQwYod8tDzgA6FR7PPRRQQlLQRKQbCGLTukpOUBJTM2ioE+shd8tBD4BKEa9uyQj5YHfMzgKFL10JE+Eko8WTDRl8GYHeAheYAHomMmpvroKiYmEgImF2BKytckDzCJ8JiJsT66gkCkhYAoCxAlpWuSB4ji4mMmlvvoYoKWFvbTmh5vy7J9V7TFm1fFQ1t/qPZt2Uya8vr0Beq7J9fpm1f3xU3516K5qQ7Hyb687i4w+8PpH8yb6ub25Y22vu++wF1MPtdtW989/fK2LHZlc3qH7s+v67o9v9F5Th/r5svT5d/8P1BLAwQUAAAACAAJdftcUt6roxkJAADmJgAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQzLnhtbLVa71PbOhb9VzTZmS7MAMbmZ1tgpgXa9960lCnt68eMYsuxFllyJRnI/vV7r+zYoXVu+jzbL5A4PrJ0dHXuPZLPHo29d4UQnj2VSrvzSeF99SqKXFqIkrs9UwkNv+TGltzDVzuPXGUFzwKoVFGyv38clVzqycVZuHZrL85M7ZXU4tYyV5clt4u3QpnH80k8WV74LOeFxwvRxVnF5+JO+K/VrYVvUddKJkuhnTSaWZGfT97Er66SEwSEO/6W4tGtfGY4lJkx9/jlz+x8sj/BprVgi7tKyfAw5k31QeT+UigFDSYTxlMvH8Qt3HY+mRnvTYm/Qzc993Apt+a/QodnCiXgXuhM9dPNTSNtozjG722HJ914sFOrn5c9fxeIBaJm3IlLo77JzBfnk9MJy0TOa+U/m8c/REvWEbaXGuXCX/bY3JscTlhaO+hNC4YelFI3//lTS/IKIN5fA0haQPIj4HgN4KAFHPz0hHWPOGwRh4GaZiyBiCvu+cWZNY/M4t3QHH4IbAYUjF9qDKo7b+FXCTh/ccstL88iD03hhShtYW9pWAbPmvpFJQaglzT0q5Z+AHVFo66ES62sMHyegyMYcDfqpBt1Elo7WtPaLJ1K7XFp+MXQ4Bv08Rp0rgwfGsIlDbufR+//Ghp5AztdA3ureHrPUm5nsHJEKV1YzzmsGGNZJSybyzn/j6mVYCZneS0UE1rY+YKlRoNWiGyPYOygY+yAZCzlFU+BrekL5V97kRbaKDNfvJj710MEHowjkIa9/zbE3gHJ3p8adEgpkbE5ssKD/iwHg4T9PB62VSwya3aYM4rbHViROtsBuPGFAKlRO0As/jUS/mjua8vVdM7dDrupUyUQMpMGJ8JNuc6mj9x5sc2kZtAAAqALHCYJ1dDK0I+5lRms7idqpg67mTqkZ6o4pIP7cNzc0LC1wX1ITs9H4QtMMP/3uD7q2Dqi2TIJzdbROLZo2Fq2jki2LhsRyKR5ktlvIO24I+14A2lSp9ADnYpp8+wh5o7HMUfDXvzrNInjIc25Oia5e9dwxNPU1NpLPWdQkbHC1E4URmVAHr9/tiYzqN50xrTxrB0vgh6lL5rlGgDNTa8ZtJLhCm8byGXaKo1xAOcqrVW44Cj6Tzr6TzbQr/AxIpviBA9Rf0JyCCXeEOqSRn35/PU6evfmw931EPknJPnfCoHiGQQwBKV0bM7xEtA2W4Tr/VRs4aO2meUthkPFWNu04EjyVujCNsXjacfjKc1jba3QfuoKbsXUoo4PkXk6Lo5p2GcMB7a/Gw+ReUqrQNNtFrqNyzz0vOfPQTRiqPoCWIYC8kFEgXPukGcJOmElGggITnMfbuzSH8Xqy47Vl/+A1drOuB5i9eU4VmkYyerLf8Zq6PlvZzXe7wv1fZLXTApwUFNUlMF6fX8coRtwX++uIrB+dqjQv2qxaylF8QMmm56H9BSa2mnk0hsmnAfSvAgC4C3XrjLWR5lQ4AYDl00LgfRA95bYm++xD7fvd9g1KoNR29iQq6tKLVgFQu1JjY1XjFFM82157td5nLcteB1tDpKAng/yTQNvmnqSQW4CY5uKbJD3mOT9DURj6D3D3oc8BwVpyZ0LwRmCF6rVx0KmBeN5DrkEfylnYDcxaYkc8peE7L5gmAGXZQbNa2+9Ytp79a0P8jrSem3AkcIQ0wbsS1P2r9ISQlI0MvAKozmvu0KrDV4I8Ew+QJHUJbi+EPMoNMv67FcKs7i3aTHt05qHTNuHDDI80pttwH38K7ofCvirmDZoNyIUSCYUTbC8Q/+32QNXtVjyHHhC+biXoKeWlyRXvVGKaackKgftDWaneKRJ2oAjqteYNkrXT5VxtRW7VoBGaifApQqufLHNKtzCET6oqw6ph4e9MGwiUPdvx24/JntH/UpGyezrLY7ZC2rKuln97ZP22CcNkmrF91piNAcZaZuNQKsz2RrZ4HTJGenNWEy7MWxqfYYbacU24DDDrYlc2o19Fp5LhXk/JSKVXWucmv3AX6AKK1rPsMroCvl1tW5IdjnQ/2hMRta8ce/dYtq89fsgv7iXE480chtwt4MGOKZd3But6x/3Tvp9ndyacmhD58etl+V2S1+IZMKCaIe7wo8/WGuS+d62xbRvw5ZDdBOmOaZN2HqyaRwlPLR1+1grLyslITp5hf8DX0gUikHL1sp0hJIN7rAix6ss2G272HWVSIPEew5Sn2OB4+qZk1nIiI2Y0CrS27qY9nVSP6wXkZFubgMORGSQW9rJfa0gYjXmv0p6iMut5dKPYAhQG5eQwrdXiuC24ggC08k3yVlv2mLatUk3xfkcpIz2XOt2EzbA6O2EmDZrH7m9d1DALncVwB30Sx43F8BlcNTVxp316XCrdacRnk7Vbvd7bbY7x2bC8cJSLUoDldweu8HjJQWJEDvMDKZEVPLLbg/mS58Kp2+bMnuHhYGxLUyZiuv77YCBZljYRCbjPOkdYUI7Qp2YDccYIz3hBtz6gwzaD96A+YOoZb9p9zLprV1CWzsN9dIgX2NN3QYgob4JbeVuoKfLtb8S4eIJOINIhPCWuGUBlGUoz4LbZfh+0ndfPv193YQxM7WvatoZJyuHZ7SDM5tOz8Yen409P6P92yc75xoSz+86Qkt6c5bQ5syUa/NSMtKVbcBhcbuAqBikjTZmballqmV1hXsB+JoCzDzXqfg5L5Ek9a4soV1ZVSZHgwyNtGQbcMnhbsHqeVQeDHJEu7I/Og/13GAtYwtVv6NnYNtL6sxgYnhmwJDnxtsxWVbQEL1se3OV0OYK9WOqZD4sfbRJkoN7CZcbUBh5bpBW2lmB2W1sURt8kJux30CaeF4IzQQwLFADtRCZg6KzUjyF+0nGequU0FYJHzg1+bT1aT+9e9BSN9IfbcCBqFsXZXxIYq+SDTbpAXibQ8pAxlDgoBnGVyw/VOM6c0sD2u1ro/Q9d6y9GW28azj/0ob1lLBZbTOhScZ7i5TQFqlnPJRkg3SPdEgbcDTdtEf6Vbqbt5xUf0YQ2OxPFAY5jFZe7uG1N++kwun54YUufAMMquK51I4pkUM39/dOgGXbvPjUfPGmCu8RNW9ehY8gNOB98Qb4PTfGL7/gy0Xdq20X/wNQSwMEFAAAAAgACXX7XBA+UsMsAwAAIxEAAA0AAAB4bC9zdHlsZXMueG1s3VjtbpswFH0VxAOMBFoaphCpRYs0aZsqrT/21wkmsWQwM6ZL9vTztQmQxrdL1q2qBoqwfX3uOb6+/lDmjdpz+nVLqfJ2Ja+a1N8qVb8Pgma9pSVp3omaVtpSCFkSpatyEzS1pCRvAFTyIJxM4qAkrPIX86otl6VqvLVoK5X6Ez9YzAtRDS03vm3QXUlJvUfCUz8jnK0kM31JyfjeNofQsBZcSE9pKTT1p9DS/LTmqa2Bys5PySohoTGwDE95biUjHOyrzsNAIDcrrXYyXV59uJkdscTnODzW9Dfpwxc5XJrncoV978ml9E6k+TTaA+O8z4Qr3zYs5jVRispqqSsGYxpPTF5XftjXOhU2kuyn4bV/NqARnOVAucncIQ9G0Bc61TEPswx1aj46HCshcyr7gIT+oWkx57RQGi7ZZgtfJWqIs1BKlLqQM7IRFTHROiDGSM8s6tRXW7Moj1Libgmv0QZdO44zEaavkXMmQPc86D4TYTuPBtYVdLzWlPOv4ORb0Qdtql3tCs/uOx9z2HI8yLZDUUe6K1o3tgJEY2/W98ht8kduvZo9CnXX6hFUpv69FYreS1qwnanvip4f8z7FvZO65vtbzjZVSe3YzyZczMkB5z1SqdgaFqmeHd/7IUn9QHeqW8DBrsDFhW9ZXPSWxV0N4sKxuOk/ELfWVSp/KylG4nUB/zN5fP1a3qNX1f56mRR0W9Jo3zva9fpWD47k1P8CFzQ+0HmrlnHFqq62ZXlOq5PNT7tXZKVvgEf+df+cFqTl6qE3pv5Q/kxz1pZJ3+seQtD1Gsqf4LSwFyiz22suVuV0R/Osq+rt/+jgtA8AnlqGm8ypBcNYm9sCNowHU4BhLArj+Z/GM0PHY22YtpnTMkMxMxRjUS5LZl6Mx41J9OMeaZJEURxjEbWXuxMFGRa3OIaf2xumDRAYDzBdFmt8tvEMeT4PsDl9LkOwkeKZiI0UjzVY3HEDRJK4ZxvjAQQ2C1juAL+bB3LKjYkimFVMG7aCcUuSYBbIRXeOxjESnRhe9/xgqySKksRtAZtbQRRhFliNuAVTABowSxSZc/DJeRQczqlg+Ftk8QtQSwMEFAAAAAgACXX7XJeKuxzAAAAAEwIAAAsAAABfcmVscy8ucmVsc52SuW7DMAxAf8XQnjAH0CGIM2XxFgT5AVaiD9gSBYpFnb+v2qVxkAsZeT08EtweaUDtOKS2i6kY/RBSaVrVuAFItiWPac6RQq7ULB41h9JARNtjQ7BaLD5ALhlmt71kFqdzpFeIXNedpT3bL09Bb4CvOkxxQmlISzMO8M3SfzL38ww1ReVKI5VbGnjT5f524EnRoSJYFppFydOiHaV/Hcf2kNPpr2MitHpb6PlxaFQKjtxjJYxxYrT+NYLJD+x+AFBLAwQUAAAACAAJdftcj1kCQK4BAABPBAAADwAAAHhsL3dvcmtib29rLnhtbLVTXWvbMBT9K54w9K123K1jIQ6MZR+Fbg1t6GuQpev4UknXSErT9dfv2p43p2NlDPok3Q/OOfdcaXEgf1cR3SUP1rhQiibGdp5lQTVgZTilFhxXavJWRg79LgutB6lDAxCtyYo8P8+sRCeWixFr7bNpQBFURHKc7BK3CIfwu96FyT0GrNBg/F6K/m5AJBYdWnwEXYpcJKGhwxfy+EguSnOjPBlTitlQuAUfUf2RvulEbmQV+kyU1bVkIaU4zxmwRh9i39HjS9Z4D9w8RPtIn9BE8CsZ4bOnfYtu18HwFNlkjN6H8RxMnPt/sZHqGhWsSO0tuDj46MF0Al1osA0icdJCKa7Z7eQrdBMxxYUepossa+KVnyMX/IXuBb6cmA2oxhEocmRRbTdgW+6aiiueEVe8rLi19HzyzraXsAOnJ6rOnlF11u90XKSGGh3ob4x0HP0k2T4YZ0+3vx6HrGRgNEPd85tsqEGtwXXX5clfXDt5lb5PZ/P0Y1rkxSKbcP03cXFM/NSRkXGVFm+fEGbHgzOoWvukO/qBitdvZu/40+yN+cC5K3dJUo//YfzLyx9QSwMEFAAAAAgACXX7XLts6uy6AAAAGgMAABoAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc8WTOQ6DMBBFr4J8AIYlSREBVRraiAtYMCxiseWZKHD7ECjAUoo0iMr6Y/n9V4yjJ3aSGzVQ3Whyxr4bKBY1s74DUF5jL8lVGof5plSmlzxHU4GWeSsrhMDzbmD2DJFEe6aTTRr/IaqybHJ8qPzV48A/wPBWpqUakYWTSVMhxwLGbhsTLIfvzmThpEUsTFr4As4WCiyh4Hyh0BIKDxQinjqkzWbNVv3lwHqe3+LWvsR1aC/J9esA1ldIPlBLAwQUAAAACAAJdftcpvxKWyMBAADfBAAAEwAAAFtDb250ZW50X1R5cGVzXS54bWzNlM9OwzAMxl+l6nVqMobEAa27AFfYgRcIjbtGzT/F3ujeHrfdJoFGxTQkuDRqbH8/x5+S5es+Amadsx7LvCGK91Ji1YBTKEIEz5E6JKeIf9NGRlW1agNyMZ/fySp4Ak8F9Rr5avkItdpayp463kYTfJknsJhnD2NizypzFaM1lSKOy53XXyjFgSC4csjBxkSccUIuzxL6yPeAQ93LDlIyGrK1SvSsHGfJzkqkvQUU0xJnegx1bSrQodo6LhEYEyiNDQA5K0bR2TSZeMIwfm+u5g8yU0DOXKcQkR1LcDnuaElfXUQWgkRm+ognIktffT7o3dagf8jm8b6H1A5+oByW62f82eOT/oV9LP5JH7d/2MdbCO1vX7l+FU4Zf+TL4V1bfQBQSwECFAMUAAAACAAJdftcRsdNSJUAAADNAAAAEAAAAAAAAAAAAAAAgAEAAAAAZG9jUHJvcHMvYXBwLnhtbFBLAQIUAxQAAAAIAAl1+1wk+zMd7wAAACsCAAARAAAAAAAAAAAAAACAAcMAAABkb2NQcm9wcy9jb3JlLnhtbFBLAQIUAxQAAAAIAAl1+1yZXJwjEAYAAJwnAAATAAAAAAAAAAAAAACAAeEBAAB4bC90aGVtZS90aGVtZTEueG1sUEsBAhQDFAAAAAgACXX7XOg9H21jBAAAEAwAABgAAAAAAAAAAAAAAICBIggAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbFBLAQIUAxQAAAAIAAl1+1xR/7DAXRUAAK/nAAAYAAAAAAAAAAAAAACAgbsMAAB4bC93b3Jrc2hlZXRzL3NoZWV0Mi54bWxQSwECFAMUAAAACAAJdftcUt6roxkJAADmJgAAGAAAAAAAAAAAAAAAgIFOIgAAeGwvd29ya3NoZWV0cy9zaGVldDMueG1sUEsBAhQDFAAAAAgACXX7XBA+UsMsAwAAIxEAAA0AAAAAAAAAAAAAAIABnSsAAHhsL3N0eWxlcy54bWxQSwECFAMUAAAACAAJdftcl4q7HMAAAAATAgAACwAAAAAAAAAAAAAAgAH0LgAAX3JlbHMvLnJlbHNQSwECFAMUAAAACAAJdftcj1kCQK4BAABPBAAADwAAAAAAAAAAAAAAgAHdLwAAeGwvd29ya2Jvb2sueG1sUEsBAhQDFAAAAAgACXX7XLts6uy6AAAAGgMAABoAAAAAAAAAAAAAAIABuDEAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzUEsBAhQDFAAAAAgACXX7XKb8SlsjAQAA3wQAABMAAAAAAAAAAAAAAIABqjIAAFtDb250ZW50X1R5cGVzXS54bWxQSwUGAAAAAAsACwDKAgAA/jMAAAAA\"\n", + "_PREP_TEMPLATE_B64 = \"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\"\n", + "\n", + "def get_specification_templates(country):\n", + " import base64\n", + " out = _mkdir(f'Data/{country}/Specifications')\n", + " files = {\n", + " f'{out}/{country}_technoeconomic_TEMPLATE.xlsx': _TECHNOECON_TEMPLATE_B64,\n", + " f'{out}/{country}_prep_file_TEMPLATE.xlsx': _PREP_TEMPLATE_B64,\n", + " }\n", + " for path, b64 in files.items():\n", + " with open(path, 'wb') as f:\n", + " f.write(base64.b64decode(b64))\n", + " print(f'[Templates] Saved -> {path}')\n", + " print('[Templates] These are BLANK TEMPLATES (Read Me + Parameter Legend tabs included) -')\n", + " print(' fill in the Value column with data for this country before use in OnSTOVE.')\n", + "\n", + "print('Downloader functions loaded')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5cf090c9", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 3000, + "referenced_widgets": [ + "5efbf8df2f3f4cc88282c07601f20f96", + "99053272179342eeabb8ab7ac4316427", + "b0d5ee17741b469bb32db71cee14449e", + "5cf30574a1c44654b0948c801f12f1c4", + "f7edc44d8dbd408789c1a7e10d3a63d8", + "1dee8954a7894189a4da007a4d5acb6d", + "4f40fe7aace44273a0f68979f0768a46", + "d9122f64e4c9437196640ec4b4866f80", + "2cbd71e350b7446682422ea30b969dd7", + "7aff5c5687564c0aa49c3a5754ac26a3", + "1bcd6bd494c14d2a903f58353a954b3a", + "98a02e78fd8a46bb862818b47124c383", + "e375269aac1c436db69ecca3a45cfea8", + "d055ae4c28fe4dc8ab55e943598b9e6f", + "82c00d98394140078d2cd536b11c5264", + "85799c7850794d91a7172efc6e868bb9", + "14a117468494419faf77a49510a2921a", + "1935e2f3aaaf42709e20c6d0df5071c2", + "e855f1e63cb1486c9a7871f3465826a8", + "8c39a037c2f64d29abec87d0f28633a5", + "6f03cf2027a542809d61039bb553033b", + "29bf8d5642404df1af7ed19d1ed81445", + "8c4b29c6cef54b5691a14f6dce7de08d", + "1ecde93b6d0b409fba467372ee4a9fa3", + "c301752b1a9849bda50cea576259c379", + "fa7f1aee10ce4344a3d54eed32326995", + "232bc6d7774b425aa33705e5e3486259", + "4ab9fd85398a46718240a51917193b56", + "df43120a1e044845a478edff5dd0d9a6", + "426de97571be46c5a2178ca09542f261", + "cc7b2fc4d3c640338c02c66b145634f5", + "d9f14ab90d104c4a99d473d915967ca0", + "99dbc304ff094ef89f2b73e32039e907", + "d05a8fd26f8746f3a2a761c02df0c613", + "d4b321fca2f3494aa090d33e6aaf9887", + "9b91a07455974eb0bfa446159c7d3f14", + "59d973bb8acf42509823a6083f1cec9c", + "e35b6a0b964049ef9db4ad638ca62c7b", + "f6e09ab88eb14add94f051a7157afccf", + "330451ae6efc4e6e9d2b6fad0207375d", + "cb4025ba09cd4c1d8df1c4da284a5086", + "5b198b414ad64072b7cfbb3aaeb4e530", + "bc77d363fb3d442fb833ecf7cea341e7", + "507934eba04b4ddf9895872c8ac6a63b", + "2f89520b174b4e1fa679eca1a7c3e98a", + "5a016b9a330646a18ed038dd5c11e9fc", + "02fb273335c24a0288ee95fee842c17a", + "fcb81ddd8030408e9d9611f61c2e6cd0", + "be57fb709c934552af3eb3ee1be5ce3c", + "5c943a9fb5184d2c90da0be95f84d8a5", + "379221fdfeda41e3adb2bf8a96961edc", + "6421aadf203a44bb838dc66bac4a915f", + "634c134dd28945848bf2ac17819f73a4", + "44bdccf51431435f86373daa9be99b16", + "378cc57d5abe423ba716025bbdb9c025", + "b3c0ef27dd33449b897a54add6c4e895", + "32e04e3f29dd406e8086f48a47ce40e0", + "fc59dcd72361434489bd105480e57b1a", + "38d75488b9b940dcb1129436d5593c0c", + "52f3687869344ec8947e41c718c2c357", + "4e778ccd9c024f93894a2e0e197f317c", + "99ad697461a14b20b4af05a4c902e3e2", + "94bb6a75bfdb4ba4a25d752f87f8a89b", + "8b7b363b1c834a3ca7d0e27f168a5a1c", + "faa18edc078747f2a0f743fc68620d9c", + "7a2176442628410d8969c9a8d7ebba7b", + "c6b99f37ff0d4db3ac863c221542321d", + "ed5a5109bce64b4bb25b464df7ae77da", + "2250512d3bf54b8faf56ad0bc302bdfc", + "f55a99c1c05749d5985f214dbfc858b9", + "4018ed91fefe4e81940b6eeb6b8ae386", + "a6f3836285a245da87af8cf0a188a5e8", + "4bb8014c36244268858d85a955167f7b", + "74ebc043e73643b49919bd8da461f371", + "c54f72b03edb4a69bd95ce0072fc5f09", + "7a9a6573ed2743cc8d6ef9efa39934f8", + "b2f9b2a7097b418da7f53d3a417c7bb6", + "7c74af9d8d444ce9a41da4755cdb6046", + "b7cdd267a348479ba6a19b96bc9c14c1", + "b95aecf48bcf44999cfe128cd80b0e6f", + "6fc50088f589404f8ca104b203303550", + "56b09731438b468396ec13fd9bd7705c", + "4d645c6644a6416aafa72f1824de4b9b", + "6f4f6c41786b4f63a01cdee257085b5d", + "73b8017d18c546f3bc4299c7e4d81884", + "cbe946b7d35a4b7c8550ce326e38a69d", + "22daac6712464bdd9f935de3a55b5bf6", + "8a403f9387d0492fbbfcd518d74a4492", + "97a7967637a643b1aecc2dad46ec6de3", + "2bdf97b935c84f33a63837da4fb8f435", + "56ba8480a1dc4e08960cbee52178ae09", + "fe6b7cd09574439a94659d400ed4f2e3", + "60293d5bd80e4033a8da9bd8e89a5a3d", + "8dd73629f77e4e8db50d5b8e1bfb2775", + "1f2b5e41560d4d7287a2fcbd75ca0725", + "d0b2853148d84891a63ab134b6b9f7fc", + "022dcc2bca424d989ebe4d569a50fdac", + "bb24bc0d2ccd4fbab66ab476fb7e15b2", + "49348966ce0a4a1687db5eafb9e0f99a", + "5b654a04fbf04409b8e0ea12c8f59284", + "6b0f8cd355b24f8fa823dbeba0a7546c", + "f02d7b5da52643139d6bf228be3451b5", + "7cd8e636b56a48e1bb977a72ff22245a", + "e87300e3ea2049e4b1269389b40c5189", + "523f4a25a34541cfa2b91cc31b640970", + "51dcf4edd4f84b438dcc310d412ae176", + "83caaacdaaf44966b8b1db9cdbe340fe", + "9c549b67d39c4cfebaeef51c846f0db5", + "baf5ddb6192e40fba0c848cd8ea2f958", + "021ee5d264db426f91b7ad5030dd9fae", + "e663c855a95b4df5985a142a43dd40c8", + "61b7549e67e34b569da9b6d7b072b9c9", + "1edf711204da4c19b5efa186a22caad2", + "478ffc97c79946769bf1012f9c82a8fb", + "b07447f6d69d4d0788c343facd303f70", + "7e06958343c84a828c3d4af5c79c5173", + "dc808882b12648209b7bff03608a9597", + "92f0cdea275d4e919b29792832df8e77", + "822f311ab7a94661848e7b7513ea14ba", + "6a5f959598d24352a1cc9f212e67c89e", + "9167b685821e444f93def22a80d27b4b", + "3a81d8dd3ad0492c938519c52e82501d", + "9ec0a85493f64da38f93d3cf0e9077b9", + "663f7c32ac8f47daa251e876875cc69c", + "3ac6b0ec74d34a08b0771a2cb1fd2a97", + "f500a7bd5159412a8b9858ed1ad8721d", + "7d4ebd5e049d4c139e7cbe1038705822", + "a0c31680ca1b465aa9b83249795dfb6d", + "bf51a52ab0c54bada09c7cd4c794c744", + "f3849266261c4fa1b0ce1c2b039b2f57", + "b4c625b963234928a3673f7a542fdaca", + "5700fa5d57a247f69944e59da9bd3d32", + "bd7609d4a73e4e7294309835927cfcc1", + "9f3adaff8ccb4a33b5805ccfdba2db8b", + "37f623e273ae4e388c5463adde49ac41", + "2727abda92e44deda74181e23e614cd7", + "6f5a58dba91d489898b6c90153543c46", + "5f3b5405b72347e5ad49f234f21dd9cb", + "3445ded9b0f94030a8e546270c95fc3a", + "af11b84566444755b70e85fba648002c", + "54e5ddc96cf140ea80abc7db76c81f4b", + "c9cc58e3ce8241908dd9307686ae1cf0", + "ac773a32cc6641d593b90f865d8070d8", + "0aec3121ba4d446697b02898bdf52cd9", + "f785f22400f94e68b028d66dbec68b2e", + "276008cf3bd94045b1045043305bddf5", + "f3329a073a7649ee8886abf6b126b6fc", + "e28bcc062e75432f88d46c5dbadf16ac", + "c93ae82d11d84d14b6dcc2ae88886c73", + "e8d148b5a8df49f6a1ae86448b4fa70d", + "65da7ff4d11548d3aac2d5efa6056d67", + "37c4ad5d5bf148e5a267d5e61c558435", + "d8708d68d1b641f6b285ff05d00a1040", + "c09d3732c865448b9c40e59bd338ca69", + "529976e5070346fbb8437b3187dfe7f7", + "9d77fb046f3440e3b9d3474f3be64355", + "d5bb694de92a49de8b15055dd405fb94", + "f4d87f25511f4eecbd32853cf32c6927", + "784c42ffb1b94f10a6e113ff80b56638", + "bbd909d171df47859bc877d09f954c50", + "538aa42dcf1d4fa5a942883c35bad0cd", + "23085d63a1844cd1a87d5038de494be8", + "9732b921d104427085a4e4905a18895c", + "a1372d0808d746a0b7bf670890f47f19", + "177f8f63c9a14a2d9a1a8c224f567ea4", + "cbcb55796d6d4610b18ddbb695c1676c", + "185cc8ce2dea4af5b19a0b7cc44968a8", + "becc5840af78457092163d467f4fc4d6", + "492ef95114f0447d8450c8175f0a4d61", + "326d726360d14fcd92edb5e4ea2e743d", + "70d91dad832e487a878fc8c60756ca5f", + "15ea98088b7248ee9f2c01440ff4735c", + "a0518c7234a94761a4c3114ec584ed15", + "577b511e54294c278b08b6fd25780083", + "beab6deb88914f3fae591ac1134433b1", + "db2e72e07b754a0aac24e2899f9cfe0e", + "04f4ea07f57043c1b69cbef4dbe7ac02", + "81b60b6319f9417e826b9749b926424d", + "ad36ac254ea04ffeab0c5ce9b0953381", + "4332405cb2784d27965adead33f155d0", + "dc646a271b66495a8e80d4425207d84e", + "10b469c846aa486e8d0447577889f1e6", + "0d6b57f0fc4342b9b3b3b639013d9b40", + "c63760935e7c4c658b166fc14369c968", + "12df70cd85a2490cb3eb26cfaace8a27", + "72647df1c483415495fcc779c704fdde", + "42ae02a296d242ef840386d2ff1d91df", + "03e652cf0e524ebcab4cadae577fcc23", + "892de3f1f57842a4a9740e32eae3aea1", + "3a150c252aec4b808b309734725cd792", + "131b6761528b4b69901c4a5db18af1f4", + "43343d28add64983a29f681eb2f5ea42", + "7aa729675af24fd1b704ec6852174889", + "a8eff064aed346608002368a7d6a468a", + "938839f78fe542dabd12f6bc3afc3c4e", + "2f35041b021148f7aa3d921db2170927", + "7c475ee4dfdf44a190c196d2b9189ffb", + "334c0b2965874fdab49dd71327018036", + "e6c8e70956754778bcc069a7971e6fa1" + ] + }, + "id": "5cf090c9", + "outputId": "134c8ff5-1fd5-456f-e04f-92bf587771ef" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "VBox(children=(HTML(value='

OnSTOVE Starter Data Kit…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "5efbf8df2f3f4cc88282c07601f20f96" + } + }, + "metadata": {} + } + ], + "source": [ + "# @title Step 3: Select country and datasets {\"vertical-output\": true, \"display-mode\": \"form\"}\n", + "# @markdown Select a country and tick the datasets to download, then click **Get Data**.\n", + "\n", + "from google.colab.output import eval_js\n", + "eval_js('google.colab.output.setIframeHeight(0, true, {maxHeight: 3000})')\n", + "\n", + "display(HTML(''))\n", + "\n", + "# Inline CSS injected via HTML widget - avoids Python parse issues with CSS colons\n", + "CSS_PARTS = [\n", + " '',\n", + "]\n", + "display(HTML(''.join(CSS_PARTS)))\n", + "\n", + "COUNTRIES = [\n", + " 'Select country',\n", + " 'AGO','BDI','BEN','BFA','BWA','CAF','CIV','CMR','COD','COG',\n", + " 'DJI','DZA','EGY','ERI','ETH','GAB','GHA','GIN','GMB','GNB',\n", + " 'GNQ','KEN','LBR','LBY','LSO','MAR','MDG','MLI','MOZ','MRT',\n", + " 'MWI','NAM','NER','NGA','RWA','SDN','SEN','SLE','SOM','SSD',\n", + " 'SWZ','TCD','TGO','TUN','TZA','UGA','ZAF','ZMB','ZWE',\n", + " 'BRN','IDN','KHM','LAO','MMR','MYS','PHL','SGP','THA','TLS','VNM',\n", + "]\n", + "\n", + "country_w = widgets.Dropdown(\n", + " options=COUNTRIES, value='Select country',\n", + " description='Country:', layout=Layout(width='300px'),\n", + " style={'description_width': '80px'}\n", + ")\n", + "\n", + "upload_btn = Button(description=' Upload boundary manually', icon='upload',\n", + " button_style='', layout=Layout(width='230px'))\n", + "upload_status = widgets.HTML(value=(\n", + " ''\n", + " 'Only needed if the automatic GADM fetch keeps failing. Accepts a GADM '\n", + " 'level-0 (whole-country) boundary as .gpkg, .geojson/'\n", + " '.json, or a zipped shapefile (.zip). '\n", + " 'Get one manually from '\n", + " 'gadm.org/download_country.html (choose your country, then GeoPackage/Shapefile/GeoJSON, '\n", + " '\"country\" / level-0 layer only) if geodata.ucdavis.edu is unreachable from here too.'\n", + " ''\n", + "))\n", + "\n", + "def _read_boundary_upload(fname, content_bytes):\n", + " \"\"\"Parse an uploaded boundary file (gpkg/geojson/json/zip-shapefile) into a GeoDataFrame.\"\"\"\n", + " import tempfile\n", + " suffix = os.path.splitext(fname)[1].lower()\n", + " with tempfile.TemporaryDirectory() as tdir:\n", + " raw_path = os.path.join(tdir, fname)\n", + " with open(raw_path, 'wb') as f:\n", + " f.write(content_bytes)\n", + " if suffix == '.zip':\n", + " extract_dir = os.path.join(tdir, 'extracted')\n", + " with zipfile.ZipFile(raw_path, 'r') as z:\n", + " z.extractall(extract_dir)\n", + " shp_files = glob.glob(os.path.join(extract_dir, '**', '*.shp'), recursive=True)\n", + " if not shp_files:\n", + " raise Exception('No .shp file found inside the uploaded zip.')\n", + " gdf = gpd.read_file(shp_files[0])\n", + " elif suffix in ('.gpkg', '.geojson', '.json'):\n", + " gdf = gpd.read_file(raw_path)\n", + " else:\n", + " raise Exception(f'Unsupported file type \"{suffix}\". Use .gpkg, .geojson/.json, or a zipped .shp.')\n", + " if gdf.empty:\n", + " raise Exception('The uploaded file has no features.')\n", + " # Collapse to a single country-outline geometry in case the file has multiple rows/parts\n", + " gdf = gdf.dissolve().reset_index(drop=True)\n", + " return gdf\n", + "\n", + "def on_upload_click(_):\n", + " country = country_w.value\n", + " if country == 'Select country':\n", + " upload_status.value = ('Select a country from the dropdown '\n", + " 'above first, so the upload can be matched to it.')\n", + " return\n", + " with log:\n", + " print(f'--- Manual boundary upload for {country} ---')\n", + " try:\n", + " uploaded = cfiles.upload()\n", + " except Exception as e:\n", + " print(f'Upload cancelled or failed: {e}')\n", + " return\n", + " if not uploaded:\n", + " print('No file was uploaded.')\n", + " return\n", + " fname, content_bytes = next(iter(uploaded.items()))\n", + " try:\n", + " gdf = _read_boundary_upload(fname, content_bytes)\n", + " set_manual_boundary(country, gdf)\n", + " out = _mkdir(f'Data/{country}/Boundaries')\n", + " p = f'{out}/{country}_boundary.gpkg'\n", + " gdf.to_file(p, driver='GPKG')\n", + " print(f'[Boundaries] Manual boundary registered for {country} and saved -> {p}')\n", + " print('This will now be used automatically instead of fetching from GADM for this session.')\n", + " upload_status.value = (f'Manual boundary for {country} '\n", + " f'loaded from \"{fname}\" and will be used for this session.')\n", + " except Exception as e:\n", + " print(f'Could not read uploaded boundary: {e}')\n", + " upload_status.value = f'Upload failed: {e}'\n", + "\n", + "upload_btn.on_click(on_upload_click)\n", + "\n", + "temp_upload_btn = Button(description=' Upload Temperature raster manually', icon='upload',\n", + " button_style='', layout=Layout(width='260px'))\n", + "temp_upload_status = widgets.HTML(value=(\n", + " ''\n", + " 'Only needed if the automatic Global Solar Atlas download keeps failing. Accepts a single '\n", + " '.tif/.tiff raster (e.g. just TEMP.tif), or a .zip '\n", + " 'containing the whole GSA GEOTIFF folder. Get one manually from '\n", + " 'globalsolaratlas.info/download '\n", + " '(select country, download the GIS_LTAym_YearlyMonthlyTotals GEOTIFF package).'\n", + " ''\n", + "))\n", + "\n", + "def _record_manual_success(country, label):\n", + " \"\"\"Update RUN_STATUS so a manual upload clears any earlier failure for this\n", + " dataset and shows up correctly in the Instructions.txt file at packaging time.\"\"\"\n", + " if 'RUN_STATUS' not in globals():\n", + " return\n", + " status = RUN_STATUS.setdefault(country, {'requested': [], 'succeeded': [], 'failed': []})\n", + " status['failed'] = [(lbl, err) for lbl, err in status['failed'] if lbl != label]\n", + " manual_label = f'{label} (manual upload)'\n", + " if manual_label not in status['succeeded']:\n", + " status['succeeded'].append(manual_label)\n", + "\n", + "def on_temp_upload_click(_):\n", + " country = country_w.value\n", + " if country == 'Select country':\n", + " temp_upload_status.value = ('Select a country from the dropdown '\n", + " 'above first, so the upload can be matched to it.')\n", + " return\n", + " with log:\n", + " print(f'--- Manual Temperature raster upload for {country} ---')\n", + " try:\n", + " uploaded = cfiles.upload()\n", + " except Exception as e:\n", + " print(f'Upload cancelled or failed: {e}')\n", + " return\n", + " if not uploaded:\n", + " print('No file was uploaded.')\n", + " return\n", + " fname, content_bytes = next(iter(uploaded.items()))\n", + " suffix = os.path.splitext(fname)[1].lower()\n", + " out = _mkdir(f'Data/{country}/Temperature')\n", + " try:\n", + " if suffix in ('.tif', '.tiff'):\n", + " dest = f'{out}/{fname}'\n", + " with open(dest, 'wb') as f:\n", + " f.write(content_bytes)\n", + " print(f'[Temperature] Manual raster saved -> {dest}')\n", + " elif suffix == '.zip':\n", + " raw_path = f'/tmp/{country}_temp_manual.zip'\n", + " with open(raw_path, 'wb') as f:\n", + " f.write(content_bytes)\n", + " folder_name = os.path.splitext(fname)[0]\n", + " dest_folder = f'{out}/{folder_name}'\n", + " with zipfile.ZipFile(raw_path, 'r') as z:\n", + " z.extractall(dest_folder)\n", + " os.remove(raw_path)\n", + " print(f'[Temperature] Manual GSA folder extracted -> {dest_folder}')\n", + " else:\n", + " raise Exception(f'Unsupported file type \"{suffix}\". Use .tif/.tiff, or a .zip of the GSA folder.')\n", + " _record_manual_success(country, 'Temperature (Solar Atlas)')\n", + " temp_upload_status.value = (f'Manual Temperature raster for '\n", + " f'{country} loaded from \"{fname}\".')\n", + " except Exception as e:\n", + " print(f'Could not save uploaded Temperature file: {e}')\n", + " temp_upload_status.value = f'Upload failed: {e}'\n", + "\n", + "temp_upload_btn.on_click(on_temp_upload_click)\n", + "\n", + "def make_card(label, desc, tag='Optional'):\n", + " tc = '#1a73e8' if tag == 'Required' else '#5f6368'\n", + " tag_html = (f''\n", + " f'{tag}')\n", + " dw = widgets.HTML(\n", + " value=tag_html + f'
{desc}
',\n", + " layout=Layout(margin='4px 0 8px 0')\n", + " )\n", + " cb = widgets.Checkbox(description=label, value=False, indent=False)\n", + " box = VBox([cb, dw], layout=Layout(width='100%', padding='14px'))\n", + " box.add_class('sdk-card')\n", + " return box, cb\n", + "\n", + "all_cb = widgets.Checkbox(description='Select / deselect all datasets', value=False, indent=False)\n", + "\n", + "pop_box, pop_cb = make_card('Population (WorldPop 1 km)',\n", + " 'Gridded population counts for 2020 at 1 km resolution. The base grid layer for all OnSTOVE analysis.',\n", + " tag='Required')\n", + "urb_box, urb_cb = make_card('Urban-Rural status (GHS-SMOD 2020)',\n", + " 'Settlement classification used to calibrate stove shares and electrification rates for urban vs rural areas.',\n", + " tag='Required')\n", + "mv_box, mv_cb = make_card('Medium-voltage lines (Gridfinder ~724 MB)',\n", + " 'Predicted global MV grid network (Zenodo CC-BY 4.0). Used with NTL and population to calibrate electrified settlements.',\n", + " tag='Required')\n", + "hv_box, hv_cb = make_card('HV lines (OpenStreetMap via Overpass, power=line)',\n", + " 'Existing high-voltage electricity TRANSMISSION lines only - no roads, no lower-voltage/minor '\n", + " 'lines, no other infrastructure. Used as a distance-to-grid proxy. Coverage depends on how well '\n", + " 'the country\\'s grid is mapped in OSM; see Instructions.txt for a manual alternative.')\n", + "ntl_box, ntl_cb = make_card('Nighttime lights (WorldPop Global2 VIIRS NVF 2020)',\n", + " 'Annual average radiance composite. Combined with population density and grid infrastructure in the MCA electrification calibration.',\n", + " tag='Required')\n", + "walk_box, walk_cb = make_card('Walking friction (MalariaAtlas 202001)',\n", + " 'Time to walk 1 metre per sq-km. Drives least-cost path estimates for firewood and manure collection times.')\n", + "moto_box, moto_cb = make_card('Motorized friction (MalariaAtlas 202001)',\n", + " 'Time to travel 1 metre by vehicle per sq-km. Used to estimate LPG delivery cost and transport emissions.')\n", + "travel_box, travel_cb = make_card('Travel time to nearest large town (MalariaAtlas method)',\n", + " 'Least-cost travel time (minutes) to the nearest large town, computed the same way as the MalariaAtlas Accessibility to Cities surface. Used as a proxy for travel time to LPG supply points.')\n", + "forest_box, forest_cb = make_card('Forest cover (Hansen/GLAD GFC 2020, optical)',\n", + " 'Tree canopy cover tiles from the Global Forest Change dataset. Used to locate biomass supply and estimate collection time.')\n", + "forest_ee_box, forest_ee_cb = make_card('Forest cover (PALSAR FNF 2021, radar - optional)',\n", + " 'JAXA ALOS PALSAR-2 forest/non-forest classification via Google Earth Engine. Radar-based, so it '\n", + " 'sees through cloud/haze where optical layers like the one above can have gaps (e.g. Congo Basin). '\n", + " 'Requires a one-time Earth Engine login the first time it runs this session. Research/non-commercial '\n", + " 'use only per JAXA\\'s data terms.',\n", + " tag='Optional - needs login')\n", + "live_box, live_cb = make_card('Livestock density (FAO GLW4 2020 - cattle goats sheep)',\n", + " 'Gridded animal density from FAO. Used to estimate manure availability per grid cell for household biogas production.')\n", + "temp_box, temp_cb = make_card('Temperature - full GIS package (Global Solar Atlas v2)',\n", + " 'Downloads the entire Global Solar Atlas country GEOTIFF folder (GHI, DNI, DIF, GTI, PVOUT, TEMP, ELE, OPTA + metadata) rather than just TEMP.tif. Air temperature drives LPG/biogas suitability and cooking demand calibration.')\n", + "rwi_box, rwi_cb = make_card('Relative Wealth Index (Meta / HDX)',\n", + " 'Sub-national wealth index at ~2.4 km. Used to distribute minimum wage spatially to monetise time savings from clean cooking.')\n", + "specs_box, specs_cb = make_card('Blank specification CSVs',\n", + " 'Generates blank socio-economic and techno-economic CSV templates with all OnSTOVE parameters pre-labelled.',\n", + " tag='Required')\n", + "tmpl_box, tmpl_cb = make_card('Specification templates (Technoeconomic + Prep file, XLSX)',\n", + " 'Blank, generic Technoeconomic and Prep file workbooks - not country data. Each includes a Read Me and a Parameter Legend tab, and applies to any country.')\n", + "\n", + "ALL_CBS = [pop_cb, urb_cb, mv_cb, hv_cb, ntl_cb, walk_cb,\n", + " moto_cb, travel_cb, forest_cb, forest_ee_cb, live_cb, temp_cb, rwi_cb, specs_cb, tmpl_cb]\n", + "\n", + "def on_all(change):\n", + " for cb in ALL_CBS: cb.value = all_cb.value\n", + "all_cb.observe(on_all, names='value')\n", + "\n", + "summary = widgets.Label(value='Total datasets to fetch: 0')\n", + "def upd(_):\n", + " summary.value = f'Total datasets to fetch: {sum(c.value for c in ALL_CBS)}'\n", + "for cb in ALL_CBS: cb.observe(upd, names='value')\n", + "\n", + "btn = Button(description=' Get Data', icon='cloud-download',\n", + " button_style='primary', layout=Layout(width='180px', height='42px'))\n", + "log = widgets.Output()\n", + "\n", + "TASK_MAP = [\n", + " (pop_cb, 'Population', lambda c: get_population(c)),\n", + " (urb_cb, 'Urban-Rural', lambda c: get_urban_rural(c)),\n", + " (mv_cb, 'MV lines', lambda c: get_mv_lines(c)),\n", + " (hv_cb, 'HV lines', lambda c: get_hv_lines(c)),\n", + " (ntl_cb, 'Nighttime Lights', lambda c: get_nighttime_lights(c)),\n", + " (walk_cb, 'Walking Friction', lambda c: get_walking_friction(c)),\n", + " (moto_cb, 'Motorized Friction', lambda c: get_motorized_friction(c)),\n", + " (travel_cb, 'Travel Time to Towns', lambda c: get_travel_time_to_towns(c)),\n", + " (forest_cb, 'Forest Cover', lambda c: get_forest_cover(c)),\n", + " (forest_ee_cb, 'Forest Cover (PALSAR FNF)', lambda c: get_forest_cover_palsar_fnf(c, ee_project_w.value.strip() or None)),\n", + " (live_cb, 'Livestock', lambda c: get_livestock(c)),\n", + " (temp_cb, 'Temperature (Solar Atlas)', lambda c: get_temperature_solaratlas(c)),\n", + " (rwi_cb, 'Wealth Index', lambda c: get_wealth_index(c)),\n", + " (specs_cb, 'Blank CSVs', lambda c: get_blank_csvs(c)),\n", + " (tmpl_cb, 'Spec Templates (XLSX)', lambda c: get_specification_templates(c)),\n", + "]\n", + "\n", + "# Tracks what happened on the most recent run per country, so Step 4 can write\n", + "# an Instructions file summarising it (requested datasets, which failed and why).\n", + "RUN_STATUS = {}\n", + "\n", + "# Manual-fallback pointers for datasets that have no reliable public API, used\n", + "# when writing the Instructions file - both for datasets that failed this run\n", + "# and for the ones that are always manual (Electricity Transformers).\n", + "MANUAL_FALLBACK = {\n", + " 'Boundary': ('GADM boundary (required by most other layers).',\n", + " 'https://gadm.org/download_country.html -> select country -> GeoPackage/Shapefile/GeoJSON '\n", + " '(level-0/whole-country only), OR use the \"Upload boundary manually\" button in Step 3.'),\n", + " 'Temperature (Solar Atlas)': ('Global Solar Atlas full GIS package.',\n", + " 'https://globalsolaratlas.info/download -> select country -> download the '\n", + " 'GIS_LTAym_YearlyMonthlyTotals GEOTIFF zip -> place the WHOLE unzipped folder in '\n", + " 'Data//Temperature/'),\n", + " 'Wealth Index': ('Relative Wealth Index or WorldPop poverty layer.',\n", + " 'https://data.humdata.org/dataset/relative-wealth-index (per-country CSV or 93-country zip) '\n", + " 'or https://hub.worldpop.org/project/categories?id=9 (WorldPop poverty index)'),\n", + " 'HV lines': ('OSM power=line (high-voltage transmission lines ONLY - no roads, no lower-voltage '\n", + " 'lines) via Overpass is used automatically, but coverage is only as complete as OSM '\n", + " 'mapping in-country. Where available, a curated national transmission network shapefile '\n", + " 'is a better source.',\n", + " 'https://energydata.info -> search \" transmission lines / grid network\", '\n", + " 'OR https://www.geofabrik.de/data/energy-networks.html for a paid custom OSM power export.'),\n", + "}\n", + "ALWAYS_MANUAL = {\n", + " 'Electricity Transformers': ('Country-specific infrastructure data - no public API.',\n", + " 'https://energydata.info or your own national utility/regulator data.'),\n", + "}\n", + "\n", + "def on_click(_):\n", + " country = country_w.value\n", + " if country == 'Select country':\n", + " with log: print('Please select a country first.')\n", + " return\n", + " btn.disabled = True; btn.description = ' Fetching...'\n", + " btn.icon = 'spinner'; btn.button_style = 'warning'\n", + " tasks = [(lbl, fn) for (cb, lbl, fn) in TASK_MAP if cb.value]\n", + " log.clear_output()\n", + " with log:\n", + " print(f'--- Starting download for {country} ---')\n", + " try:\n", + " get_boundaries(country)\n", + " except Exception as e:\n", + " print(f'\\nERROR: Could not fetch the country boundary, so the run has been stopped: {e}')\n", + " print('The boundary is a required first step (most other layers are clipped to it).')\n", + " print('This is usually a transient GADM server issue - wait a few minutes and click Get Data again,')\n", + " print('or Runtime > Restart runtime if it keeps happening.')\n", + " RUN_STATUS[country] = {\n", + " 'requested': [lbl for lbl, fn in tasks],\n", + " 'succeeded': [],\n", + " 'failed': [('Boundary', str(e))],\n", + " }\n", + " import time\n", + " btn.icon = 'exclamation-triangle'; btn.description = ' Failed'; btn.button_style = 'danger'\n", + " time.sleep(3)\n", + " btn.description = ' Get Data'; btn.icon = 'cloud-download'\n", + " btn.button_style = 'primary'; btn.disabled = False\n", + " return\n", + " failed = []\n", + " succeeded = []\n", + " for lbl, fn in tqdm(tasks, desc='Downloading datasets'):\n", + " try:\n", + " fn(country)\n", + " succeeded.append(lbl)\n", + " except Exception as e:\n", + " print(f'\\nWARNING [{lbl}]: {e}')\n", + " failed.append((lbl, str(e)))\n", + " finally:\n", + " gc.collect()\n", + " RUN_STATUS[country] = {\n", + " 'requested': [lbl for lbl, fn in tasks],\n", + " 'succeeded': succeeded,\n", + " 'failed': failed,\n", + " }\n", + " if failed:\n", + " print(f'\\nDatasets with errors: {\", \".join(lbl for lbl, _ in failed)}')\n", + " print('You can retry or upload these manually.')\n", + " print(f'\\nDownloads complete for {country}!')\n", + " print(f'Files saved in: Data/{country}/')\n", + " print('Proceed to Step 4 to package your zip (an Instructions file summarising this run')\n", + " print('and any missing datasets will be included automatically).')\n", + " import time\n", + " btn.icon = 'check'; btn.description = ' Data Ready'; btn.button_style = 'success'\n", + " time.sleep(3)\n", + " btn.description = ' Get Data'; btn.icon = 'cloud-download'\n", + " btn.button_style = 'primary'; btn.disabled = False\n", + "\n", + "btn.on_click(on_click)\n", + "\n", + "manual_note = widgets.HTML(value=(\n", + " '
'\n", + " 'Layers requiring manual download (no public API)

'\n", + " 'Electricity transformers → country-specific - use EnergyData.info or your own national data

'\n", + " 'Note: Temperature is now fetched automatically as the full Global Solar Atlas GEOTIFF folder '\n", + " '(GHI, DNI, DIF, GTI, PVOUT, TEMP, ELE, OPTA + metadata) - not just TEMP.tif. '\n", + " 'If the automatic download fails for your country, fall back to '\n", + " 'Global Solar Atlas manually.

'\n", + " 'Note: PALSAR FNF forest cover is the only layer needing a login - a one-time Earth Engine '\n", + " 'authentication prompt will appear if that box is ticked.'\n", + " '
'\n", + "))\n", + "\n", + "req_acc = widgets.Accordion(children=[VBox([pop_box, urb_box, ntl_box, mv_box, specs_box, tmpl_box])])\n", + "req_acc.set_title(0, 'Required Layers'); req_acc.add_class('borderless')\n", + "\n", + "ee_project_w = widgets.Text(\n", + " value='', placeholder='e.g. my-earth-engine-project',\n", + " description='EE project:', layout=Layout(width='320px'),\n", + " style={'description_width': '80px'}\n", + ")\n", + "ee_project_note = widgets.HTML(value=(\n", + " ''\n", + " 'Only needed for the PALSAR FNF (radar) forest cover box above. Must be a Google Cloud project '\n", + " 'with the Earth Engine API enabled - register one free at '\n", + " 'code.earthengine.google.com '\n", + " 'if you don\\'t have one. Leave blank to use Earth Engine\\'s default project detection.'\n", + " ''\n", + "))\n", + "\n", + "geo_acc = widgets.Accordion(children=[VBox([forest_box, forest_ee_box, HBox([ee_project_w]), ee_project_note,\n", + " live_box, temp_box, walk_box, moto_box, travel_box])])\n", + "geo_acc.set_title(0, 'Physical and Environmental Layers'); geo_acc.add_class('borderless')\n", + "\n", + "infra_acc = widgets.Accordion(children=[VBox([hv_box, rwi_box])])\n", + "infra_acc.set_title(0, 'Infrastructure and Socioeconomic Layers'); infra_acc.add_class('borderless')\n", + "\n", + "app = VBox([\n", + " widgets.HTML('

OnSTOVE Starter Data Kit

'),\n", + " widgets.HTML('
'),\n", + " HBox([country_w]),\n", + " widgets.HTML('
'),\n", + " VBox([all_cb], layout=Layout(padding='10px')).add_class('sdk-all-box'),\n", + " req_acc, geo_acc, infra_acc,\n", + " manual_note, summary,\n", + " widgets.HTML('
Boundary fetch failing?'),\n", + " HBox([upload_btn]), upload_status,\n", + " widgets.HTML('
Temperature raster fetch failing?'),\n", + " HBox([temp_upload_btn]), temp_upload_status,\n", + " widgets.HTML('Console output'),\n", + " log,\n", + " HBox([btn], layout=Layout(justify_content='center', padding='20px'))\n", + "], layout=Layout(max_width='1050px', margin='0 auto'))\n", + "\n", + "display(app)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2e6ca8ac" + }, + "source": [ + "# @title Forest Cover Fetch {\"display-mode\": \"form\"}\n", + "# @markdown For some countries, forest cover is such a large dataset that this step\n", + "# @markdown can crash the Colab runtime. We recommend running this cell **after** all\n", + "# @markdown other datasets have been collected in Step 3, so that a crash here doesn't\n", + "# @markdown take the rest of your downloads with it. If it crashes, just restart the\n", + "# @markdown runtime and re-run this cell on its own.\n", + "\n", + "country = country_w.value # Get the selected country from the dropdown\n", + "with log:\n", + " print(f'--- Re-running Forest Cover download for {country} ---')\n", + " try:\n", + " get_forest_cover(country)\n", + " # Update RUN_STATUS: remove from failed, add to succeeded\n", + " if country in RUN_STATUS:\n", + " RUN_STATUS[country]['failed'] = [(lbl, err) for lbl, err in RUN_STATUS[country]['failed'] if lbl != 'Forest Cover']\n", + " if 'Forest Cover' not in RUN_STATUS[country]['succeeded']:\n", + " RUN_STATUS[country]['succeeded'].append('Forest Cover')\n", + " print(f'\\nForest Cover download successful for {country}!')\n", + " except Exception as e:\n", + " print(f'\\nWARNING [Forest Cover]: {e}')\n", + " # Update RUN_STATUS: add to failed if not already there\n", + " if country in RUN_STATUS:\n", + " if 'Forest Cover' not in [lbl for lbl, _ in RUN_STATUS[country]['failed']]:\n", + " RUN_STATUS[country]['failed'].append(('Forest Cover', str(e)))\n", + " print(f'Forest Cover download failed for {country}. Please check the error message above.')\n", + " finally:\n", + " gc.collect()" + ], + "id": "2e6ca8ac", + "execution_count": 4, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "66e22788", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 139 + }, + "id": "66e22788", + "outputId": "ec3d1f21-5723-45de-d049-41c8fe2ad52d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[Instructions] Written -> Data/Select country/Instructions.txt\n", + "Packaging Select country -> Select country_SDK.zip ...\n", + " Select country_SDK.zip (0.0 MB)\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "application/javascript": [ + "\n", + " async function download(id, filename, size) {\n", + " if (!google.colab.kernel.accessAllowed) {\n", + " return;\n", + " }\n", + " const div = document.createElement('div');\n", + " const label = document.createElement('label');\n", + " label.textContent = `Downloading \"${filename}\": `;\n", + " div.appendChild(label);\n", + " const progress = document.createElement('progress');\n", + " progress.max = size;\n", + " div.appendChild(progress);\n", + " document.body.appendChild(div);\n", + "\n", + " const buffers = [];\n", + " let downloaded = 0;\n", + "\n", + " const channel = await google.colab.kernel.comms.open(id);\n", + " // Send a message to notify the kernel that we're ready.\n", + " channel.send({})\n", + "\n", + " for await (const message of channel.messages) {\n", + " // Send a message to notify the kernel that we're ready.\n", + " channel.send({})\n", + " if (message.buffers) {\n", + " for (const buffer of message.buffers) {\n", + " buffers.push(buffer);\n", + " downloaded += buffer.byteLength;\n", + " progress.value = downloaded;\n", + " }\n", + " }\n", + " }\n", + " const blob = new Blob(buffers, {type: 'application/binary'});\n", + " const a = document.createElement('a');\n", + " a.href = window.URL.createObjectURL(blob);\n", + " a.download = filename;\n", + " div.appendChild(a);\n", + " a.click();\n", + " div.remove();\n", + " }\n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "application/javascript": [ + "download(\"download_574f31c5-a072-46de-b020-e756c396bd6b\", \"Select country_SDK.zip\", 627)" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + " Download started for Select country_SDK.zip\n", + "\n", + "All done! Your OnSTOVE starter data kit is ready.\n", + "See Instructions.txt inside each zip for next steps and any datasets you need to add manually.\n" + ] + } + ], + "source": [ + "# @title Step 4: Package and download {\"display-mode\": \"form\"}\n", + "# @markdown Zips all downloaded data and saves it as **_SDK.zip**.\n", + "# @markdown An **Instructions.txt** file is generated and included automatically,\n", + "# @markdown listing next steps and any datasets that were missing or failed to\n", + "# @markdown download for that country.\n", + "# @markdown Make sure Step 3 has completed first.\n", + "\n", + "import os, zipfile, glob, datetime\n", + "from google.colab import files as cfiles\n", + "\n", + "countries = [d.split('/')[-1] for d in glob.glob('Data/*') if os.path.isdir(d)]\n", + "\n", + "def _build_instructions(country):\n", + " status = RUN_STATUS.get(country) if 'RUN_STATUS' in globals() else None\n", + " lines = []\n", + " lines.append(f'OnSTOVE Starter Data Kit - Instructions for {country}')\n", + " lines.append(f'Generated: {datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M\")}')\n", + " lines.append('=' * 60)\n", + " lines.append('')\n", + " lines.append('NEXT STEPS')\n", + " lines.append('-' * 60)\n", + " lines.append('1. Fill in the blank socio-economic and techno-economic CSVs/templates')\n", + " lines.append(' in Specifications/ with country-specific values.')\n", + " lines.append('2. Manually add Electricity Transformers:')\n", + " manual_desc, manual_url = ALWAYS_MANUAL['Electricity Transformers']\n", + " lines.append(f' {manual_desc}')\n", + " lines.append(f' {manual_url}')\n", + " lines.append('3. See https://onstove-documentation.readthedocs.io to run the model.')\n", + " lines.append('')\n", + "\n", + " if status is None:\n", + " lines.append('NOTE: No record of this run was found (e.g. this country was downloaded in a')\n", + " lines.append('previous session). Re-run Step 3 for this country to get a full dataset summary here.')\n", + " else:\n", + " succeeded = status.get('succeeded', [])\n", + " failed = status.get('failed', [])\n", + " lines.append('DATASETS DOWNLOADED SUCCESSFULLY')\n", + " lines.append('-' * 60)\n", + " if succeeded:\n", + " for lbl in succeeded:\n", + " lines.append(f' [OK] {lbl}')\n", + " else:\n", + " lines.append(' (none recorded)')\n", + " lines.append('')\n", + "\n", + " if failed:\n", + " lines.append('DATASETS THAT FAILED OR ARE MISSING - ACTION NEEDED')\n", + " lines.append('-' * 60)\n", + " for lbl, err in failed:\n", + " lines.append(f' [MISSING] {lbl}')\n", + " lines.append(f' Error: {err}')\n", + " if lbl in MANUAL_FALLBACK:\n", + " desc, url = MANUAL_FALLBACK[lbl]\n", + " lines.append(f' Manual fallback: {desc}')\n", + " lines.append(f' {url}')\n", + " else:\n", + " lines.append(' Try re-running Step 3 for this country - this may be a transient')\n", + " lines.append(' server issue.')\n", + " lines.append('')\n", + " else:\n", + " lines.append('DATASETS THAT FAILED OR ARE MISSING')\n", + " lines.append('-' * 60)\n", + " lines.append(' None - everything requested downloaded successfully.')\n", + " lines.append('')\n", + "\n", + " lines.append('ALWAYS MANUAL (no public API - not attempted automatically)')\n", + " lines.append('-' * 60)\n", + " for lbl, (desc, url) in ALWAYS_MANUAL.items():\n", + " lines.append(f' {lbl}: {desc}')\n", + " lines.append(f' {url}')\n", + " lines.append('')\n", + "\n", + " return '\\n'.join(lines)\n", + "\n", + "if not countries:\n", + " print('No data found in Data/ - please complete Step 3 first.')\n", + "else:\n", + " for country in countries:\n", + " instr_path = f'Data/{country}/Instructions.txt'\n", + " with open(instr_path, 'w') as f:\n", + " f.write(_build_instructions(country))\n", + " print(f'[Instructions] Written -> {instr_path}')\n", + "\n", + " zname = f'{country}_SDK.zip'\n", + " print(f'Packaging {country} -> {zname} ...')\n", + " with zipfile.ZipFile(zname, 'w', zipfile.ZIP_DEFLATED) as zf:\n", + " for root, _, files in os.walk(f'Data/{country}'):\n", + " for fname in files:\n", + " fpath = os.path.join(root, fname)\n", + " zf.write(fpath, os.path.relpath(fpath, '/content/'))\n", + " mb = os.path.getsize(zname) / 1048576\n", + " print(f' {zname} ({mb:.1f} MB)')\n", + " cfiles.download(zname)\n", + " print(f' Download started for {zname}')\n", + " print('\\nAll done! Your OnSTOVE starter data kit is ready.')\n", + " print('See Instructions.txt inside each zip for next steps and any datasets you need to add manually.')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "68a77c57", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 73, + "referenced_widgets": [ + "af1f8f0d9c584d2dbb805c1f13ed3f38", + "1f47aeaa0c91456f85fb647d40e18ff6", + "04dbb55cc4174ec08ea868202073e142", + "904cdbb84523426c868d8a8fd2117f6d", + "1de4e1b449754b7e90c7794acfe88e4b", + "c23e6cf3fcac4280b9c09c655d39704e", + "73c78a92549141068432cec8f1ad8183", + "4886e2c97013412e8dc49ebd386b9196" + ] + }, + "id": "68a77c57", + "outputId": "e914f2a8-7150-46bf-b802-c7812f7ca7c2" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "HBox(children=(Dropdown(description='Country:', layout=Layout(width='240px'), options=('Select country',), sty…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "af1f8f0d9c584d2dbb805c1f13ed3f38" + } + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Data for Select country deleted.\n" + ] + } + ], + "source": [ + "# @title Optional: Delete session data {\"display-mode\": \"form\"}\n", + "# @markdown Removes downloaded data from the Colab session to free disk space.\n", + "\n", + "import glob, os, shutil\n", + "import ipywidgets as widgets\n", + "from ipywidgets import HBox, Layout, Button\n", + "from IPython.display import display\n", + "\n", + "def loaded():\n", + " return [d.split('/')[-1] for d in glob.glob('Data/*') if os.path.isdir(d)] or ['(none)']\n", + "\n", + "dd = widgets.Dropdown(description='Country:', options=loaded(),\n", + " layout=Layout(width='240px'), style={'description_width':'80px'})\n", + "del_btn = Button(description='Delete data', icon='trash',\n", + " layout=Layout(width='160px', height='35px'), button_style='danger')\n", + "\n", + "def on_del(_):\n", + " c = dd.value\n", + " if c == '(none)': print('Nothing to delete.'); return\n", + " shutil.rmtree(f'Data/{c}', ignore_errors=True)\n", + " print(f'Data for {c} deleted.')\n", + " dd.options = loaded()\n", + "\n", + "del_btn.on_click(on_del)\n", + "display(HBox([dd, del_btn]))" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "version_major": 2, + "version_minor": 0, + "state": { + "5efbf8df2f3f4cc88282c07601f20f96": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_99053272179342eeabb8ab7ac4316427", + "IPY_MODEL_b0d5ee17741b469bb32db71cee14449e", + "IPY_MODEL_5cf30574a1c44654b0948c801f12f1c4", + "IPY_MODEL_f7edc44d8dbd408789c1a7e10d3a63d8", + "IPY_MODEL_1dee8954a7894189a4da007a4d5acb6d", + "IPY_MODEL_4f40fe7aace44273a0f68979f0768a46", + "IPY_MODEL_d9122f64e4c9437196640ec4b4866f80", + "IPY_MODEL_2cbd71e350b7446682422ea30b969dd7", + "IPY_MODEL_7aff5c5687564c0aa49c3a5754ac26a3", + "IPY_MODEL_1bcd6bd494c14d2a903f58353a954b3a", + "IPY_MODEL_98a02e78fd8a46bb862818b47124c383", + "IPY_MODEL_e375269aac1c436db69ecca3a45cfea8", + "IPY_MODEL_d055ae4c28fe4dc8ab55e943598b9e6f", + "IPY_MODEL_82c00d98394140078d2cd536b11c5264", + "IPY_MODEL_85799c7850794d91a7172efc6e868bb9", + "IPY_MODEL_14a117468494419faf77a49510a2921a", + "IPY_MODEL_1935e2f3aaaf42709e20c6d0df5071c2", + "IPY_MODEL_e855f1e63cb1486c9a7871f3465826a8", + "IPY_MODEL_8c39a037c2f64d29abec87d0f28633a5" + ], + "layout": "IPY_MODEL_6f03cf2027a542809d61039bb553033b" + } + }, + "99053272179342eeabb8ab7ac4316427": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_29bf8d5642404df1af7ed19d1ed81445", + "placeholder": "​", + "style": "IPY_MODEL_8c4b29c6cef54b5691a14f6dce7de08d", + "value": "

OnSTOVE Starter Data Kit

" + } + }, + "b0d5ee17741b469bb32db71cee14449e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1ecde93b6d0b409fba467372ee4a9fa3", + "placeholder": "​", + "style": "IPY_MODEL_c301752b1a9849bda50cea576259c379", + "value": "
" + } + }, + "5cf30574a1c44654b0948c801f12f1c4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_fa7f1aee10ce4344a3d54eed32326995" + ], + "layout": "IPY_MODEL_232bc6d7774b425aa33705e5e3486259" + } + }, + "f7edc44d8dbd408789c1a7e10d3a63d8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4ab9fd85398a46718240a51917193b56", + "placeholder": "​", + "style": "IPY_MODEL_df43120a1e044845a478edff5dd0d9a6", + "value": "
" + } + }, + "1dee8954a7894189a4da007a4d5acb6d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-all-box" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_426de97571be46c5a2178ca09542f261" + ], + "layout": "IPY_MODEL_cc7b2fc4d3c640338c02c66b145634f5" + } + }, + "4f40fe7aace44273a0f68979f0768a46": { + "model_module": "@jupyter-widgets/controls", + "model_name": "AccordionModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "borderless" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "AccordionModel", + "_titles": { + "0": "Required Layers" + }, + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "AccordionView", + "box_style": "", + "children": [ + "IPY_MODEL_d9f14ab90d104c4a99d473d915967ca0" + ], + "layout": "IPY_MODEL_99dbc304ff094ef89f2b73e32039e907", + "selected_index": 0 + } + }, + "d9122f64e4c9437196640ec4b4866f80": { + "model_module": "@jupyter-widgets/controls", + "model_name": "AccordionModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "borderless" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "AccordionModel", + "_titles": { + "0": "Physical and Environmental Layers" + }, + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "AccordionView", + "box_style": "", + "children": [ + "IPY_MODEL_d05a8fd26f8746f3a2a761c02df0c613" + ], + "layout": "IPY_MODEL_d4b321fca2f3494aa090d33e6aaf9887", + "selected_index": 0 + } + }, + "2cbd71e350b7446682422ea30b969dd7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "AccordionModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "borderless" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "AccordionModel", + "_titles": { + "0": "Infrastructure and Socioeconomic Layers" + }, + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "AccordionView", + "box_style": "", + "children": [ + "IPY_MODEL_9b91a07455974eb0bfa446159c7d3f14" + ], + "layout": "IPY_MODEL_59d973bb8acf42509823a6083f1cec9c", + "selected_index": 0 + } + }, + "7aff5c5687564c0aa49c3a5754ac26a3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e35b6a0b964049ef9db4ad638ca62c7b", + "placeholder": "​", + "style": "IPY_MODEL_f6e09ab88eb14add94f051a7157afccf", + "value": "
Layers requiring manual download (no public API)

Electricity transformers → country-specific - use EnergyData.info or your own national data

Note: Temperature is now fetched automatically as the full Global Solar Atlas GEOTIFF folder (GHI, DNI, DIF, GTI, PVOUT, TEMP, ELE, OPTA + metadata) - not just TEMP.tif. If the automatic download fails for your country, fall back to Global Solar Atlas manually.

Note: PALSAR FNF forest cover is the only layer needing a login - a one-time Earth Engine authentication prompt will appear if that box is ticked.
" + } + }, + "1bcd6bd494c14d2a903f58353a954b3a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "LabelModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "LabelModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "LabelView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_330451ae6efc4e6e9d2b6fad0207375d", + "placeholder": "​", + "style": "IPY_MODEL_cb4025ba09cd4c1d8df1c4da284a5086", + "value": "Total datasets to fetch: 0" + } + }, + "98a02e78fd8a46bb862818b47124c383": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5b198b414ad64072b7cfbb3aaeb4e530", + "placeholder": "​", + "style": "IPY_MODEL_bc77d363fb3d442fb833ecf7cea341e7", + "value": "
Boundary fetch failing?" + } + }, + "e375269aac1c436db69ecca3a45cfea8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_507934eba04b4ddf9895872c8ac6a63b" + ], + "layout": "IPY_MODEL_2f89520b174b4e1fa679eca1a7c3e98a" + } + }, + "d055ae4c28fe4dc8ab55e943598b9e6f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5a016b9a330646a18ed038dd5c11e9fc", + "placeholder": "​", + "style": "IPY_MODEL_02fb273335c24a0288ee95fee842c17a", + "value": "Only needed if the automatic GADM fetch keeps failing. Accepts a GADM level-0 (whole-country) boundary as .gpkg, .geojson/.json, or a zipped shapefile (.zip). Get one manually from gadm.org/download_country.html (choose your country, then GeoPackage/Shapefile/GeoJSON, \"country\" / level-0 layer only) if geodata.ucdavis.edu is unreachable from here too." + } + }, + "82c00d98394140078d2cd536b11c5264": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fcb81ddd8030408e9d9611f61c2e6cd0", + "placeholder": "​", + "style": "IPY_MODEL_be57fb709c934552af3eb3ee1be5ce3c", + "value": "
Temperature raster fetch failing?" + } + }, + "85799c7850794d91a7172efc6e868bb9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5c943a9fb5184d2c90da0be95f84d8a5" + ], + "layout": "IPY_MODEL_379221fdfeda41e3adb2bf8a96961edc" + } + }, + "14a117468494419faf77a49510a2921a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6421aadf203a44bb838dc66bac4a915f", + "placeholder": "​", + "style": "IPY_MODEL_634c134dd28945848bf2ac17819f73a4", + "value": "Only needed if the automatic Global Solar Atlas download keeps failing. Accepts a single .tif/.tiff raster (e.g. just TEMP.tif), or a .zip containing the whole GSA GEOTIFF folder. Get one manually from globalsolaratlas.info/download (select country, download the GIS_LTAym_YearlyMonthlyTotals GEOTIFF package)." + } + }, + "1935e2f3aaaf42709e20c6d0df5071c2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_44bdccf51431435f86373daa9be99b16", + "placeholder": "​", + "style": "IPY_MODEL_378cc57d5abe423ba716025bbdb9c025", + "value": "Console output" + } + }, + "e855f1e63cb1486c9a7871f3465826a8": { + "model_module": "@jupyter-widgets/output", + "model_name": "OutputModel", + "model_module_version": "1.0.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_e6c8e70956754778bcc069a7971e6fa1", + "msg_id": "", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "--- Re-running Forest Cover download for Select country ---\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "WARNING [Forest Cover]: The requested \"Select country\" is not part of GADM. The closest matches are: .\n", + "Forest Cover download failed for Select country. Please check the error message above.\n" + ] + } + ] + } + }, + "8c39a037c2f64d29abec87d0f28633a5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b3c0ef27dd33449b897a54add6c4e895" + ], + "layout": "IPY_MODEL_32e04e3f29dd406e8086f48a47ce40e0" + } + }, + "6f03cf2027a542809d61039bb553033b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "0 auto", + "max_height": null, + "max_width": "1050px", + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "29bf8d5642404df1af7ed19d1ed81445": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8c4b29c6cef54b5691a14f6dce7de08d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1ecde93b6d0b409fba467372ee4a9fa3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c301752b1a9849bda50cea576259c379": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "fa7f1aee10ce4344a3d54eed32326995": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DropdownModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "Select country", + "AGO", + "BDI", + "BEN", + "BFA", + "BWA", + "CAF", + "CIV", + "CMR", + "COD", + "COG", + "DJI", + "DZA", + "EGY", + "ERI", + "ETH", + "GAB", + "GHA", + "GIN", + "GMB", + "GNB", + "GNQ", + "KEN", + "LBR", + "LBY", + "LSO", + "MAR", + "MDG", + "MLI", + "MOZ", + "MRT", + "MWI", + "NAM", + "NER", + "NGA", + "RWA", + "SDN", + "SEN", + "SLE", + "SOM", + "SSD", + "SWZ", + "TCD", + "TGO", + "TUN", + "TZA", + "UGA", + "ZAF", + "ZMB", + "ZWE", + "BRN", + "IDN", + "KHM", + "LAO", + "MMR", + "MYS", + "PHL", + "SGP", + "THA", + "TLS", + "VNM" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Country:", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_fc59dcd72361434489bd105480e57b1a", + "style": "IPY_MODEL_38d75488b9b940dcb1129436d5593c0c" + } + }, + "232bc6d7774b425aa33705e5e3486259": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4ab9fd85398a46718240a51917193b56": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "df43120a1e044845a478edff5dd0d9a6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "426de97571be46c5a2178ca09542f261": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Select / deselect all datasets", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_52f3687869344ec8947e41c718c2c357", + "style": "IPY_MODEL_4e778ccd9c024f93894a2e0e197f317c", + "value": false + } + }, + "cc7b2fc4d3c640338c02c66b145634f5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "10px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d9f14ab90d104c4a99d473d915967ca0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_99ad697461a14b20b4af05a4c902e3e2", + "IPY_MODEL_94bb6a75bfdb4ba4a25d752f87f8a89b", + "IPY_MODEL_8b7b363b1c834a3ca7d0e27f168a5a1c", + "IPY_MODEL_faa18edc078747f2a0f743fc68620d9c", + "IPY_MODEL_7a2176442628410d8969c9a8d7ebba7b", + "IPY_MODEL_c6b99f37ff0d4db3ac863c221542321d" + ], + "layout": "IPY_MODEL_ed5a5109bce64b4bb25b464df7ae77da" + } + }, + "99dbc304ff094ef89f2b73e32039e907": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d05a8fd26f8746f3a2a761c02df0c613": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2250512d3bf54b8faf56ad0bc302bdfc", + "IPY_MODEL_f55a99c1c05749d5985f214dbfc858b9", + "IPY_MODEL_4018ed91fefe4e81940b6eeb6b8ae386", + "IPY_MODEL_a6f3836285a245da87af8cf0a188a5e8", + "IPY_MODEL_4bb8014c36244268858d85a955167f7b", + "IPY_MODEL_74ebc043e73643b49919bd8da461f371", + "IPY_MODEL_c54f72b03edb4a69bd95ce0072fc5f09", + "IPY_MODEL_7a9a6573ed2743cc8d6ef9efa39934f8", + "IPY_MODEL_b2f9b2a7097b418da7f53d3a417c7bb6" + ], + "layout": "IPY_MODEL_7c74af9d8d444ce9a41da4755cdb6046" + } + }, + "d4b321fca2f3494aa090d33e6aaf9887": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9b91a07455974eb0bfa446159c7d3f14": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b7cdd267a348479ba6a19b96bc9c14c1", + "IPY_MODEL_b95aecf48bcf44999cfe128cd80b0e6f" + ], + "layout": "IPY_MODEL_6fc50088f589404f8ca104b203303550" + } + }, + "59d973bb8acf42509823a6083f1cec9c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e35b6a0b964049ef9db4ad638ca62c7b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f6e09ab88eb14add94f051a7157afccf": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "330451ae6efc4e6e9d2b6fad0207375d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cb4025ba09cd4c1d8df1c4da284a5086": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5b198b414ad64072b7cfbb3aaeb4e530": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bc77d363fb3d442fb833ecf7cea341e7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "507934eba04b4ddf9895872c8ac6a63b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": " Upload boundary manually", + "disabled": false, + "icon": "upload", + "layout": "IPY_MODEL_56b09731438b468396ec13fd9bd7705c", + "style": "IPY_MODEL_4d645c6644a6416aafa72f1824de4b9b", + "tooltip": "" + } + }, + "2f89520b174b4e1fa679eca1a7c3e98a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5a016b9a330646a18ed038dd5c11e9fc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "02fb273335c24a0288ee95fee842c17a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "fcb81ddd8030408e9d9611f61c2e6cd0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "be57fb709c934552af3eb3ee1be5ce3c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5c943a9fb5184d2c90da0be95f84d8a5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": " Upload Temperature raster manually", + "disabled": false, + "icon": "upload", + "layout": "IPY_MODEL_6f4f6c41786b4f63a01cdee257085b5d", + "style": "IPY_MODEL_73b8017d18c546f3bc4299c7e4d81884", + "tooltip": "" + } + }, + "379221fdfeda41e3adb2bf8a96961edc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6421aadf203a44bb838dc66bac4a915f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "634c134dd28945848bf2ac17819f73a4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "44bdccf51431435f86373daa9be99b16": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "378cc57d5abe423ba716025bbdb9c025": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b3c0ef27dd33449b897a54add6c4e895": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "primary", + "description": " Get Data", + "disabled": false, + "icon": "cloud-download", + "layout": "IPY_MODEL_cbe946b7d35a4b7c8550ce326e38a69d", + "style": "IPY_MODEL_22daac6712464bdd9f935de3a55b5bf6", + "tooltip": "" + } + }, + "32e04e3f29dd406e8086f48a47ce40e0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": "center", + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "20px", + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fc59dcd72361434489bd105480e57b1a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "300px" + } + }, + "38d75488b9b940dcb1129436d5593c0c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "80px" + } + }, + "52f3687869344ec8947e41c718c2c357": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4e778ccd9c024f93894a2e0e197f317c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "99ad697461a14b20b4af05a4c902e3e2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8a403f9387d0492fbbfcd518d74a4492", + "IPY_MODEL_97a7967637a643b1aecc2dad46ec6de3" + ], + "layout": "IPY_MODEL_2bdf97b935c84f33a63837da4fb8f435" + } + }, + "94bb6a75bfdb4ba4a25d752f87f8a89b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_56ba8480a1dc4e08960cbee52178ae09", + "IPY_MODEL_fe6b7cd09574439a94659d400ed4f2e3" + ], + "layout": "IPY_MODEL_60293d5bd80e4033a8da9bd8e89a5a3d" + } + }, + "8b7b363b1c834a3ca7d0e27f168a5a1c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8dd73629f77e4e8db50d5b8e1bfb2775", + "IPY_MODEL_1f2b5e41560d4d7287a2fcbd75ca0725" + ], + "layout": "IPY_MODEL_d0b2853148d84891a63ab134b6b9f7fc" + } + }, + "faa18edc078747f2a0f743fc68620d9c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_022dcc2bca424d989ebe4d569a50fdac", + "IPY_MODEL_bb24bc0d2ccd4fbab66ab476fb7e15b2" + ], + "layout": "IPY_MODEL_49348966ce0a4a1687db5eafb9e0f99a" + } + }, + "7a2176442628410d8969c9a8d7ebba7b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5b654a04fbf04409b8e0ea12c8f59284", + "IPY_MODEL_6b0f8cd355b24f8fa823dbeba0a7546c" + ], + "layout": "IPY_MODEL_f02d7b5da52643139d6bf228be3451b5" + } + }, + "c6b99f37ff0d4db3ac863c221542321d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7cd8e636b56a48e1bb977a72ff22245a", + "IPY_MODEL_e87300e3ea2049e4b1269389b40c5189" + ], + "layout": "IPY_MODEL_523f4a25a34541cfa2b91cc31b640970" + } + }, + "ed5a5109bce64b4bb25b464df7ae77da": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2250512d3bf54b8faf56ad0bc302bdfc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_51dcf4edd4f84b438dcc310d412ae176", + "IPY_MODEL_83caaacdaaf44966b8b1db9cdbe340fe" + ], + "layout": "IPY_MODEL_9c549b67d39c4cfebaeef51c846f0db5" + } + }, + "f55a99c1c05749d5985f214dbfc858b9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_baf5ddb6192e40fba0c848cd8ea2f958", + "IPY_MODEL_021ee5d264db426f91b7ad5030dd9fae" + ], + "layout": "IPY_MODEL_e663c855a95b4df5985a142a43dd40c8" + } + }, + "4018ed91fefe4e81940b6eeb6b8ae386": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_61b7549e67e34b569da9b6d7b072b9c9" + ], + "layout": "IPY_MODEL_1edf711204da4c19b5efa186a22caad2" + } + }, + "a6f3836285a245da87af8cf0a188a5e8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_478ffc97c79946769bf1012f9c82a8fb", + "placeholder": "​", + "style": "IPY_MODEL_b07447f6d69d4d0788c343facd303f70", + "value": "Only needed for the PALSAR FNF (radar) forest cover box above. Must be a Google Cloud project with the Earth Engine API enabled - register one free at code.earthengine.google.com if you don't have one. Leave blank to use Earth Engine's default project detection." + } + }, + "4bb8014c36244268858d85a955167f7b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7e06958343c84a828c3d4af5c79c5173", + "IPY_MODEL_dc808882b12648209b7bff03608a9597" + ], + "layout": "IPY_MODEL_92f0cdea275d4e919b29792832df8e77" + } + }, + "74ebc043e73643b49919bd8da461f371": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_822f311ab7a94661848e7b7513ea14ba", + "IPY_MODEL_6a5f959598d24352a1cc9f212e67c89e" + ], + "layout": "IPY_MODEL_9167b685821e444f93def22a80d27b4b" + } + }, + "c54f72b03edb4a69bd95ce0072fc5f09": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3a81d8dd3ad0492c938519c52e82501d", + "IPY_MODEL_9ec0a85493f64da38f93d3cf0e9077b9" + ], + "layout": "IPY_MODEL_663f7c32ac8f47daa251e876875cc69c" + } + }, + "7a9a6573ed2743cc8d6ef9efa39934f8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3ac6b0ec74d34a08b0771a2cb1fd2a97", + "IPY_MODEL_f500a7bd5159412a8b9858ed1ad8721d" + ], + "layout": "IPY_MODEL_7d4ebd5e049d4c139e7cbe1038705822" + } + }, + "b2f9b2a7097b418da7f53d3a417c7bb6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a0c31680ca1b465aa9b83249795dfb6d", + "IPY_MODEL_bf51a52ab0c54bada09c7cd4c794c744" + ], + "layout": "IPY_MODEL_f3849266261c4fa1b0ce1c2b039b2f57" + } + }, + "7c74af9d8d444ce9a41da4755cdb6046": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b7cdd267a348479ba6a19b96bc9c14c1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b4c625b963234928a3673f7a542fdaca", + "IPY_MODEL_5700fa5d57a247f69944e59da9bd3d32" + ], + "layout": "IPY_MODEL_bd7609d4a73e4e7294309835927cfcc1" + } + }, + "b95aecf48bcf44999cfe128cd80b0e6f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [ + "sdk-card" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9f3adaff8ccb4a33b5805ccfdba2db8b", + "IPY_MODEL_37f623e273ae4e388c5463adde49ac41" + ], + "layout": "IPY_MODEL_2727abda92e44deda74181e23e614cd7" + } + }, + "6fc50088f589404f8ca104b203303550": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "56b09731438b468396ec13fd9bd7705c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "230px" + } + }, + "4d645c6644a6416aafa72f1824de4b9b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "6f4f6c41786b4f63a01cdee257085b5d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "260px" + } + }, + "73b8017d18c546f3bc4299c7e4d81884": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "cbe946b7d35a4b7c8550ce326e38a69d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": "42px", + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "180px" + } + }, + "22daac6712464bdd9f935de3a55b5bf6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "8a403f9387d0492fbbfcd518d74a4492": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Population (WorldPop 1 km)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_6f5a58dba91d489898b6c90153543c46", + "style": "IPY_MODEL_5f3b5405b72347e5ad49f234f21dd9cb", + "value": false + } + }, + "97a7967637a643b1aecc2dad46ec6de3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3445ded9b0f94030a8e546270c95fc3a", + "placeholder": "​", + "style": "IPY_MODEL_af11b84566444755b70e85fba648002c", + "value": "Required
Gridded population counts for 2020 at 1 km resolution. The base grid layer for all OnSTOVE analysis.
" + } + }, + "2bdf97b935c84f33a63837da4fb8f435": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "56ba8480a1dc4e08960cbee52178ae09": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Urban-Rural status (GHS-SMOD 2020)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_54e5ddc96cf140ea80abc7db76c81f4b", + "style": "IPY_MODEL_c9cc58e3ce8241908dd9307686ae1cf0", + "value": false + } + }, + "fe6b7cd09574439a94659d400ed4f2e3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ac773a32cc6641d593b90f865d8070d8", + "placeholder": "​", + "style": "IPY_MODEL_0aec3121ba4d446697b02898bdf52cd9", + "value": "Required
Settlement classification used to calibrate stove shares and electrification rates for urban vs rural areas.
" + } + }, + "60293d5bd80e4033a8da9bd8e89a5a3d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "8dd73629f77e4e8db50d5b8e1bfb2775": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Nighttime lights (WorldPop Global2 VIIRS NVF 2020)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_f785f22400f94e68b028d66dbec68b2e", + "style": "IPY_MODEL_276008cf3bd94045b1045043305bddf5", + "value": false + } + }, + "1f2b5e41560d4d7287a2fcbd75ca0725": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f3329a073a7649ee8886abf6b126b6fc", + "placeholder": "​", + "style": "IPY_MODEL_e28bcc062e75432f88d46c5dbadf16ac", + "value": "Required
Annual average radiance composite. Combined with population density and grid infrastructure in the MCA electrification calibration.
" + } + }, + "d0b2853148d84891a63ab134b6b9f7fc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "022dcc2bca424d989ebe4d569a50fdac": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Medium-voltage lines (Gridfinder ~724 MB)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_c93ae82d11d84d14b6dcc2ae88886c73", + "style": "IPY_MODEL_e8d148b5a8df49f6a1ae86448b4fa70d", + "value": false + } + }, + "bb24bc0d2ccd4fbab66ab476fb7e15b2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_65da7ff4d11548d3aac2d5efa6056d67", + "placeholder": "​", + "style": "IPY_MODEL_37c4ad5d5bf148e5a267d5e61c558435", + "value": "Required
Predicted global MV grid network (Zenodo CC-BY 4.0). Used with NTL and population to calibrate electrified settlements.
" + } + }, + "49348966ce0a4a1687db5eafb9e0f99a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "5b654a04fbf04409b8e0ea12c8f59284": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Blank specification CSVs", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_d8708d68d1b641f6b285ff05d00a1040", + "style": "IPY_MODEL_c09d3732c865448b9c40e59bd338ca69", + "value": false + } + }, + "6b0f8cd355b24f8fa823dbeba0a7546c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_529976e5070346fbb8437b3187dfe7f7", + "placeholder": "​", + "style": "IPY_MODEL_9d77fb046f3440e3b9d3474f3be64355", + "value": "Required
Generates blank socio-economic and techno-economic CSV templates with all OnSTOVE parameters pre-labelled.
" + } + }, + "f02d7b5da52643139d6bf228be3451b5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "7cd8e636b56a48e1bb977a72ff22245a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Specification templates (Technoeconomic + Prep file, XLSX)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_d5bb694de92a49de8b15055dd405fb94", + "style": "IPY_MODEL_f4d87f25511f4eecbd32853cf32c6927", + "value": false + } + }, + "e87300e3ea2049e4b1269389b40c5189": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_784c42ffb1b94f10a6e113ff80b56638", + "placeholder": "​", + "style": "IPY_MODEL_bbd909d171df47859bc877d09f954c50", + "value": "Optional
Blank, generic Technoeconomic and Prep file workbooks - not country data. Each includes a Read Me and a Parameter Legend tab, and applies to any country.
" + } + }, + "523f4a25a34541cfa2b91cc31b640970": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "51dcf4edd4f84b438dcc310d412ae176": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Forest cover (Hansen/GLAD GFC 2020, optical)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_538aa42dcf1d4fa5a942883c35bad0cd", + "style": "IPY_MODEL_23085d63a1844cd1a87d5038de494be8", + "value": false + } + }, + "83caaacdaaf44966b8b1db9cdbe340fe": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9732b921d104427085a4e4905a18895c", + "placeholder": "​", + "style": "IPY_MODEL_a1372d0808d746a0b7bf670890f47f19", + "value": "Optional
Tree canopy cover tiles from the Global Forest Change dataset. Used to locate biomass supply and estimate collection time.
" + } + }, + "9c549b67d39c4cfebaeef51c846f0db5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "baf5ddb6192e40fba0c848cd8ea2f958": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Forest cover (PALSAR FNF 2021, radar - optional)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_177f8f63c9a14a2d9a1a8c224f567ea4", + "style": "IPY_MODEL_cbcb55796d6d4610b18ddbb695c1676c", + "value": false + } + }, + "021ee5d264db426f91b7ad5030dd9fae": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_185cc8ce2dea4af5b19a0b7cc44968a8", + "placeholder": "​", + "style": "IPY_MODEL_becc5840af78457092163d467f4fc4d6", + "value": "Optional - needs login
JAXA ALOS PALSAR-2 forest/non-forest classification via Google Earth Engine. Radar-based, so it sees through cloud/haze where optical layers like the one above can have gaps (e.g. Congo Basin). Requires a one-time Earth Engine login the first time it runs this session. Research/non-commercial use only per JAXA's data terms.
" + } + }, + "e663c855a95b4df5985a142a43dd40c8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "61b7549e67e34b569da9b6d7b072b9c9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "TextModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "TextModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "TextView", + "continuous_update": true, + "description": "EE project:", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_492ef95114f0447d8450c8175f0a4d61", + "placeholder": "e.g. my-earth-engine-project", + "style": "IPY_MODEL_326d726360d14fcd92edb5e4ea2e743d", + "value": "" + } + }, + "1edf711204da4c19b5efa186a22caad2": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "478ffc97c79946769bf1012f9c82a8fb": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b07447f6d69d4d0788c343facd303f70": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7e06958343c84a828c3d4af5c79c5173": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Livestock density (FAO GLW4 2020 - cattle goats sheep)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_70d91dad832e487a878fc8c60756ca5f", + "style": "IPY_MODEL_15ea98088b7248ee9f2c01440ff4735c", + "value": false + } + }, + "dc808882b12648209b7bff03608a9597": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a0518c7234a94761a4c3114ec584ed15", + "placeholder": "​", + "style": "IPY_MODEL_577b511e54294c278b08b6fd25780083", + "value": "Optional
Gridded animal density from FAO. Used to estimate manure availability per grid cell for household biogas production.
" + } + }, + "92f0cdea275d4e919b29792832df8e77": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "822f311ab7a94661848e7b7513ea14ba": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Temperature - full GIS package (Global Solar Atlas v2)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_beab6deb88914f3fae591ac1134433b1", + "style": "IPY_MODEL_db2e72e07b754a0aac24e2899f9cfe0e", + "value": false + } + }, + "6a5f959598d24352a1cc9f212e67c89e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_04f4ea07f57043c1b69cbef4dbe7ac02", + "placeholder": "​", + "style": "IPY_MODEL_81b60b6319f9417e826b9749b926424d", + "value": "Optional
Downloads the entire Global Solar Atlas country GEOTIFF folder (GHI, DNI, DIF, GTI, PVOUT, TEMP, ELE, OPTA + metadata) rather than just TEMP.tif. Air temperature drives LPG/biogas suitability and cooking demand calibration.
" + } + }, + "9167b685821e444f93def22a80d27b4b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "3a81d8dd3ad0492c938519c52e82501d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Walking friction (MalariaAtlas 202001)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_ad36ac254ea04ffeab0c5ce9b0953381", + "style": "IPY_MODEL_4332405cb2784d27965adead33f155d0", + "value": false + } + }, + "9ec0a85493f64da38f93d3cf0e9077b9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dc646a271b66495a8e80d4425207d84e", + "placeholder": "​", + "style": "IPY_MODEL_10b469c846aa486e8d0447577889f1e6", + "value": "Optional
Time to walk 1 metre per sq-km. Drives least-cost path estimates for firewood and manure collection times.
" + } + }, + "663f7c32ac8f47daa251e876875cc69c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "3ac6b0ec74d34a08b0771a2cb1fd2a97": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Motorized friction (MalariaAtlas 202001)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_0d6b57f0fc4342b9b3b3b639013d9b40", + "style": "IPY_MODEL_c63760935e7c4c658b166fc14369c968", + "value": false + } + }, + "f500a7bd5159412a8b9858ed1ad8721d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_12df70cd85a2490cb3eb26cfaace8a27", + "placeholder": "​", + "style": "IPY_MODEL_72647df1c483415495fcc779c704fdde", + "value": "Optional
Time to travel 1 metre by vehicle per sq-km. Used to estimate LPG delivery cost and transport emissions.
" + } + }, + "7d4ebd5e049d4c139e7cbe1038705822": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "a0c31680ca1b465aa9b83249795dfb6d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Travel time to nearest large town (MalariaAtlas method)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_42ae02a296d242ef840386d2ff1d91df", + "style": "IPY_MODEL_03e652cf0e524ebcab4cadae577fcc23", + "value": false + } + }, + "bf51a52ab0c54bada09c7cd4c794c744": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_892de3f1f57842a4a9740e32eae3aea1", + "placeholder": "​", + "style": "IPY_MODEL_3a150c252aec4b808b309734725cd792", + "value": "Optional
Least-cost travel time (minutes) to the nearest large town, computed the same way as the MalariaAtlas Accessibility to Cities surface. Used as a proxy for travel time to LPG supply points.
" + } + }, + "f3849266261c4fa1b0ce1c2b039b2f57": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "b4c625b963234928a3673f7a542fdaca": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "HV lines (OpenStreetMap via Overpass, power=line)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_131b6761528b4b69901c4a5db18af1f4", + "style": "IPY_MODEL_43343d28add64983a29f681eb2f5ea42", + "value": false + } + }, + "5700fa5d57a247f69944e59da9bd3d32": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7aa729675af24fd1b704ec6852174889", + "placeholder": "​", + "style": "IPY_MODEL_a8eff064aed346608002368a7d6a468a", + "value": "Optional
Existing high-voltage electricity TRANSMISSION lines only - no roads, no lower-voltage/minor lines, no other infrastructure. Used as a distance-to-grid proxy. Coverage depends on how well the country's grid is mapped in OSM; see Instructions.txt for a manual alternative.
" + } + }, + "bd7609d4a73e4e7294309835927cfcc1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "9f3adaff8ccb4a33b5805ccfdba2db8b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Relative Wealth Index (Meta / HDX)", + "description_tooltip": null, + "disabled": false, + "indent": false, + "layout": "IPY_MODEL_938839f78fe542dabd12f6bc3afc3c4e", + "style": "IPY_MODEL_2f35041b021148f7aa3d921db2170927", + "value": false + } + }, + "37f623e273ae4e388c5463adde49ac41": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7c475ee4dfdf44a190c196d2b9189ffb", + "placeholder": "​", + "style": "IPY_MODEL_334c0b2965874fdab49dd71327018036", + "value": "Optional
Sub-national wealth index at ~2.4 km. Used to distribute minimum wage spatially to monetise time savings from clean cooking.
" + } + }, + "2727abda92e44deda74181e23e614cd7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": "14px", + "right": null, + "top": null, + "visibility": null, + "width": "100%" + } + }, + "6f5a58dba91d489898b6c90153543c46": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5f3b5405b72347e5ad49f234f21dd9cb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3445ded9b0f94030a8e546270c95fc3a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "af11b84566444755b70e85fba648002c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "54e5ddc96cf140ea80abc7db76c81f4b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9cc58e3ce8241908dd9307686ae1cf0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ac773a32cc6641d593b90f865d8070d8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0aec3121ba4d446697b02898bdf52cd9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f785f22400f94e68b028d66dbec68b2e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "276008cf3bd94045b1045043305bddf5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f3329a073a7649ee8886abf6b126b6fc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e28bcc062e75432f88d46c5dbadf16ac": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c93ae82d11d84d14b6dcc2ae88886c73": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e8d148b5a8df49f6a1ae86448b4fa70d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "65da7ff4d11548d3aac2d5efa6056d67": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "37c4ad5d5bf148e5a267d5e61c558435": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d8708d68d1b641f6b285ff05d00a1040": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c09d3732c865448b9c40e59bd338ca69": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "529976e5070346fbb8437b3187dfe7f7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9d77fb046f3440e3b9d3474f3be64355": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d5bb694de92a49de8b15055dd405fb94": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f4d87f25511f4eecbd32853cf32c6927": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "784c42ffb1b94f10a6e113ff80b56638": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bbd909d171df47859bc877d09f954c50": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "538aa42dcf1d4fa5a942883c35bad0cd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "23085d63a1844cd1a87d5038de494be8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9732b921d104427085a4e4905a18895c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a1372d0808d746a0b7bf670890f47f19": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "177f8f63c9a14a2d9a1a8c224f567ea4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cbcb55796d6d4610b18ddbb695c1676c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "185cc8ce2dea4af5b19a0b7cc44968a8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "becc5840af78457092163d467f4fc4d6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "492ef95114f0447d8450c8175f0a4d61": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "320px" + } + }, + "326d726360d14fcd92edb5e4ea2e743d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "80px" + } + }, + "70d91dad832e487a878fc8c60756ca5f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "15ea98088b7248ee9f2c01440ff4735c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a0518c7234a94761a4c3114ec584ed15": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "577b511e54294c278b08b6fd25780083": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "beab6deb88914f3fae591ac1134433b1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "db2e72e07b754a0aac24e2899f9cfe0e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "04f4ea07f57043c1b69cbef4dbe7ac02": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "81b60b6319f9417e826b9749b926424d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ad36ac254ea04ffeab0c5ce9b0953381": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4332405cb2784d27965adead33f155d0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "dc646a271b66495a8e80d4425207d84e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "10b469c846aa486e8d0447577889f1e6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0d6b57f0fc4342b9b3b3b639013d9b40": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c63760935e7c4c658b166fc14369c968": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "12df70cd85a2490cb3eb26cfaace8a27": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "72647df1c483415495fcc779c704fdde": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "42ae02a296d242ef840386d2ff1d91df": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "03e652cf0e524ebcab4cadae577fcc23": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "892de3f1f57842a4a9740e32eae3aea1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3a150c252aec4b808b309734725cd792": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "131b6761528b4b69901c4a5db18af1f4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "43343d28add64983a29f681eb2f5ea42": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7aa729675af24fd1b704ec6852174889": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a8eff064aed346608002368a7d6a468a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "938839f78fe542dabd12f6bc3afc3c4e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2f35041b021148f7aa3d921db2170927": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7c475ee4dfdf44a190c196d2b9189ffb": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": "4px 0 8px 0", + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "334c0b2965874fdab49dd71327018036": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e6c8e70956754778bcc069a7971e6fa1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "af1f8f0d9c584d2dbb805c1f13ed3f38": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1f47aeaa0c91456f85fb647d40e18ff6", + "IPY_MODEL_04dbb55cc4174ec08ea868202073e142" + ], + "layout": "IPY_MODEL_904cdbb84523426c868d8a8fd2117f6d" + } + }, + "1f47aeaa0c91456f85fb647d40e18ff6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DropdownModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DropdownModel", + "_options_labels": [ + "(none)" + ], + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "DropdownView", + "description": "Country:", + "description_tooltip": null, + "disabled": false, + "index": 0, + "layout": "IPY_MODEL_1de4e1b449754b7e90c7794acfe88e4b", + "style": "IPY_MODEL_c23e6cf3fcac4280b9c09c655d39704e" + } + }, + "04dbb55cc4174ec08ea868202073e142": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "danger", + "description": "Delete data", + "disabled": false, + "icon": "trash", + "layout": "IPY_MODEL_73c78a92549141068432cec8f1ad8183", + "style": "IPY_MODEL_4886e2c97013412e8dc49ebd386b9196", + "tooltip": "" + } + }, + "904cdbb84523426c868d8a8fd2117f6d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1de4e1b449754b7e90c7794acfe88e4b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "240px" + } + }, + "c23e6cf3fcac4280b9c09c655d39704e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "80px" + } + }, + "73c78a92549141068432cec8f1ad8183": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": "35px", + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "160px" + } + }, + "4886e2c97013412e8dc49ebd386b9196": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file