{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Varunayan Demo\n", "\n", "Varunayan = Varun + ayan\n", "\n", "Varun in the vedic mythology was the god of sky, order, truth, water and magic. \n", "\n", "Ayan in sanskrit means path.\n", "\n", "Varunayan is a structured package for fetching climatic variables for any part of the globe, though not magically. Varunayan heavily relies on the [ERA5](https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5) resource which uses advanced modeling using historical data to generate global estimates of large number of atmospheric, land and oceanic climate variables." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2025-07-15T17:53:53.259523Z", "iopub.status.busy": "2025-07-15T17:53:53.259329Z", "iopub.status.idle": "2025-07-15T17:53:54.047360Z", "shell.execute_reply": "2025-07-15T17:53:54.047034Z", "shell.execute_reply.started": "2025-07-15T17:53:53.259503Z" } }, "outputs": [], "source": [ "import varunayan" ] }, { "cell_type": "raw", "metadata": { "vscode": { "languageId": "raw" } }, "source": [ "# varunayan.era5ify_geojson(request_id, variables, start_date, end_date, json_file, dataset_type, pressure_levels, frequency, resolution, verbosity)\n", "# request_id : str, unique identifier for the request\n", "# variables : list, list of variables to download\n", "# start_date : string, start date of the data ('YYYY-M-D' or 'YYYY-MM-DD')\n", "# end_date : string, end date of the data ('YYYY-M-D' or 'YYYY-MM-DD')\n", "# json_file : str, path to the geojson file containing the area of interest\n", "# dataset_type : str, type of dataset (single or pressure, for single level or pressure level datasets), optional (single by default)\n", "# pressure_levels : list, list of strings of pressure levels to download (e.g., [\"1000\", \"925\", \"850\"]), optional (empty by default)\n", "# frequency : str, frequency of the data (hourly, daily, weekly, monthly, yearly), optional (hourly by default)\n", "# resolution : float, resolution of the data in degrees (0.1, 0.25, etc.), optional (0.25 by default)\n", "# verbosity : int, verbosity level (0 for no output, 1 for info output, 2 for debug/complete output), optional (0 by default)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download daily weather data for a given geojson\n", "\n", "We will use varunayan to first download temperature, precipitation, surface pressure and dewpoint from [ERA5](https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5).\n", "\n", "The location is specified using path to a local geojson file, though this is not the only way to download data for a desired geography (See next section)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2025-07-15T17:53:54.047823Z", "iopub.status.busy": "2025-07-15T17:53:54.047687Z", "iopub.status.idle": "2025-07-15T17:55:39.787757Z", "shell.execute_reply": "2025-07-15T17:55:39.787229Z", "shell.execute_reply.started": "2025-07-15T17:53:54.047814Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0m\n", "============================================================\u001b[0m\n", "\u001b[0m\u001b[0;34mSTARTING ERA5 SINGLE LEVEL PROCESSING\u001b[0m\u001b[0m\n", "\u001b[0m============================================================\u001b[0m\n", "\u001b[0mRequest ID: india_weather_daily_2023_Jan\u001b[0m\n", "\u001b[0mVariables: ['2m_temperature', 'total_precipitation', 'surface_pressure', '2m_dewpoint_temperature']\u001b[0m\n", "\u001b[0mDate Range: 2023-01-01 to 2023-01-31\u001b[0m\n", "\u001b[0mFrequency: daily\u001b[0m\n", "\u001b[0mResolution: 0.25°\u001b[0m\n", "\u001b[0mGeoJSON File: C:\\Users\\ATHARV~1\\AppData\\Local\\Temp\\india_weather_daily_2023_Jan_temp_geojson.json\u001b[0m\n", "\n", "\n", "--- GeoJSON Mini Map ---\n", "\n", "\u001b[0;34mMINI MAP (68.18°W to 97.40°E, 7.97°S to 35.49°N):\u001b[0m\n", "┌─────────────────────────────────────────┐\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;32m■\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "│\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m\u001b[0;31m·\u001b[0m│\n", "└─────────────────────────────────────────┘\n", " \u001b[0;32m■\u001b[0m = Inside the shape\n", " \u001b[0;31m·\u001b[0m = Outside the shape\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9e485465d247408e89fe323d013b872a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "1f74444b124b24fdf82a57babe9f09c4.zip: 0%| | 0.00/23.4M [00:00