diff --git a/CatchmentAttributes_nhdplus.ipynb b/CatchmentAttributes_nhdplus.ipynb index b2475b7..705f27f 100644 --- a/CatchmentAttributes_nhdplus.ipynb +++ b/CatchmentAttributes_nhdplus.ipynb @@ -154,7 +154,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/whitelightning450/mambaforge/envs/hyriver/lib/python3.10/site-packages/dataretrieval/nwis.py:692: UserWarning: WARNING: Starting in March 2024, the NWIS qw data endpoint is retiring and no longer receives updates. For more information, refer to https://waterdata.usgs.gov.nwis/qwdata and https://doi-usgs.github.io/dataRetrieval/articles/Status.html or email CompTools@usgs.gov.\n", + "/uufs/chpc.utah.edu/common/home/u0972368/conda-envs/hyriver/lib/python3.10/site-packages/dataretrieval/nwis.py:692: UserWarning: WARNING: Starting in March 2024, the NWIS qw data endpoint is retiring and no longer receives updates. For more information, refer to https://waterdata.usgs.gov.nwis/qwdata and https://doi-usgs.github.io/dataRetrieval/articles/Status.html or email CompTools@usgs.gov.\n", " warnings.warn(\n" ] } @@ -440,7 +440,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_304225/3686794627.py:4: UserWarning: 1 of 365 requests failed.. IDs of the failed requests are ['17077353']\n", + "/scratch/local/u0972368/981718/ipykernel_3936694/3686794627.py:4: UserWarning: 1 of 365 requests failed.. IDs of the failed requests are ['17077353']\n", " catchments = wd_cat.byid(\"featureid\", comids) # Get the catchments for the comids of the flowlines of the tributaries of the station\n" ] } diff --git a/EE_Exercise.ipynb b/EE_Exercise.ipynb new file mode 100644 index 0000000..51e3f25 --- /dev/null +++ b/EE_Exercise.ipynb @@ -0,0 +1,685 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ed65cc92", + "metadata": {}, + "source": [ + "Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "6c7e2e87", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/uufs/chpc.utah.edu/common/home/u0972368/conda-envs/hyriver/lib/python3.10/site-packages/google/api_core/_python_version_support.py:275: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date.\n", + " warnings.warn(message, FutureWarning)\n" + ] + } + ], + "source": [ + "import os\n", + "import time\n", + "import requests\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import ee\n", + "\n", + "from pynhd import NLDI\n", + "from supporting_scripts import getData, dataprocessing, SNOTEL_Analyzer, mapping" + ] + }, + { + "cell_type": "markdown", + "id": "c6412ef6", + "metadata": {}, + "source": [ + "Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "79617e36", + "metadata": {}, + "outputs": [], + "source": [ + "nldi = NLDI()\n", + "\n", + "usgs_gage_id = \"09330000\" # Fremont River near Bicknell, UT\n", + "WY = 2019\n", + "\n", + "StartDate = f\"{WY-1}-10-01\"\n", + "EndDate = f\"{WY}-09-30\"\n", + "\n", + "OutputFolder = \"files/SNOTEL\"\n", + "os.makedirs(OutputFolder, exist_ok=True)\n", + "os.makedirs(\"Figures\", exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "id": "a73c3a6c", + "metadata": {}, + "source": [ + "EE Login" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "eef05df6", + "metadata": {}, + "outputs": [], + "source": [ + "ee.Authenticate()\n", + "ee.Initialize()" + ] + }, + { + "cell_type": "markdown", + "id": "6726f3fe", + "metadata": {}, + "source": [ + "Streamflow data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "6e1308ab", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/uufs/chpc.utah.edu/common/home/u0972368/conda-envs/hyriver/lib/python3.10/site-packages/geopandas/geoseries.py:772: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " val = getattr(super(), mtd)(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Authenticating with Earth Engine...\n", + "Initializing Earth Engine...\n", + "Earth Engine initialized successfully.\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
convective_fractionlongwave_radiationpotential_energypotential_evaporationpressureshortwave_radiationspecific_humiditytemperaturetotal_precipitationwind_uwind_v
Date
2018-10-010.107919265.92866612.2751030.21277873997.583419196.2684340.00572511.9223400.0893650.9136424.007560
2018-10-020.029557304.15415213.9612160.10462573957.94104889.0032820.0075649.8325660.144091-1.7518903.449391
2018-10-030.230969277.87153751.6120600.12294273882.076787167.3231420.0075279.1504520.112957-0.8445052.330025
2018-10-040.316795279.62246567.6082030.17707573805.375300187.0677440.0060308.9905220.2362661.0655233.564316
2018-10-050.006660260.68125925.4437090.14144473801.376099176.0364760.0052805.8403260.0058172.2373810.429708
\n", + "
" + ], + "text/plain": [ + " convective_fraction longwave_radiation potential_energy \\\n", + "Date \n", + "2018-10-01 0.107919 265.928666 12.275103 \n", + "2018-10-02 0.029557 304.154152 13.961216 \n", + "2018-10-03 0.230969 277.871537 51.612060 \n", + "2018-10-04 0.316795 279.622465 67.608203 \n", + "2018-10-05 0.006660 260.681259 25.443709 \n", + "\n", + " potential_evaporation pressure shortwave_radiation \\\n", + "Date \n", + "2018-10-01 0.212778 73997.583419 196.268434 \n", + "2018-10-02 0.104625 73957.941048 89.003282 \n", + "2018-10-03 0.122942 73882.076787 167.323142 \n", + "2018-10-04 0.177075 73805.375300 187.067744 \n", + "2018-10-05 0.141444 73801.376099 176.036476 \n", + "\n", + " specific_humidity temperature total_precipitation wind_u \\\n", + "Date \n", + "2018-10-01 0.005725 11.922340 0.089365 0.913642 \n", + "2018-10-02 0.007564 9.832566 0.144091 -1.751890 \n", + "2018-10-03 0.007527 9.150452 0.112957 -0.844505 \n", + "2018-10-04 0.006030 8.990522 0.236266 1.065523 \n", + "2018-10-05 0.005280 5.840326 0.005817 2.237381 \n", + "\n", + " wind_v \n", + "Date \n", + "2018-10-01 4.007560 \n", + "2018-10-02 3.449391 \n", + "2018-10-03 2.330025 \n", + "2018-10-04 3.564316 \n", + "2018-10-05 0.429708 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Get basin polygon from USGS gage\n", + "basin = NLDI().get_basins(usgs_gage_id)\n", + "geometry = basin.to_crs(\"EPSG:4326\").geometry[0]\n", + "basin_polygon_coords = list(geometry.exterior.coords)\n", + "\n", + "daily_NLDAS_df = getData.get_NLDAS_daily(\n", + " basin_polygon_coords,\n", + " begin_date=StartDate,\n", + " end_date=EndDate\n", + ")\n", + "\n", + "daily_NLDAS_df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "5ec20463", + "metadata": {}, + "source": [ + "SNOTEL download helper" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5e1e3675", + "metadata": {}, + "outputs": [], + "source": [ + "def download_snotel_csv(SiteName, SiteID, StateAbb, StartDate, EndDate, OutputFolder, tries=5):\n", + " out_csv = f\"./{OutputFolder}/df_{SiteID}_{StateAbb}_SNTL.csv\"\n", + "\n", + " if os.path.exists(out_csv):\n", + " df = pd.read_csv(out_csv)\n", + " df[\"Date\"] = pd.to_datetime(df[\"Date\"])\n", + " return df.set_index(\"Date\")\n", + "\n", + " url = (\n", + " \"https://wcc.sc.egov.usda.gov/reportGenerator/view_csv/\"\n", + " f\"customSingleStationReport/daily/start_of_period/{SiteID}:{StateAbb}:SNTL\"\n", + " f\"%7Cid=%22%22%7Cname/{StartDate},{EndDate}/WTEQ::value\"\n", + " \"?fitToScreen=false\"\n", + " )\n", + "\n", + " for attempt in range(tries):\n", + " try:\n", + " r = requests.get(url, timeout=60)\n", + " r.raise_for_status()\n", + "\n", + " with open(out_csv, \"w\", encoding=\"utf-8\") as f:\n", + " f.write(r.text)\n", + "\n", + " df = pd.read_csv(out_csv)\n", + " df[\"Date\"] = pd.to_datetime(df[\"Date\"])\n", + " return df.set_index(\"Date\")\n", + "\n", + " except Exception as e:\n", + " if attempt == tries - 1:\n", + " raise\n", + " wait = 2 ** attempt\n", + " print(f\"SNOTEL download failed: {e}\")\n", + " print(f\"Retrying in {wait} seconds...\")\n", + " time.sleep(wait)" + ] + }, + { + "cell_type": "markdown", + "id": "25e42b8b", + "metadata": {}, + "source": [ + "Snowtel Data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "43a4d936", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SNOTEL download failed: HTTPSConnectionPool(host='wcc.sc.egov.usda.gov', port=443): Read timed out. (read timeout=300)\n", + "Retrying in 1 seconds...\n", + "SNOTEL download failed: HTTPSConnectionPool(host='wcc.sc.egov.usda.gov', port=443): Read timed out. (read timeout=300)\n", + "Retrying in 2 seconds...\n", + "SNOTEL download failed: HTTPSConnectionPool(host='wcc.sc.egov.usda.gov', port=443): Read timed out. (read timeout=300)\n", + "Retrying in 4 seconds...\n", + "SNOTEL download failed: HTTPSConnectionPool(host='wcc.sc.egov.usda.gov', port=443): Read timed out. (read timeout=300)\n", + "Retrying in 8 seconds...\n" + ] + }, + { + "ename": "ReadTimeout", + "evalue": "HTTPSConnectionPool(host='wcc.sc.egov.usda.gov', port=443): Read timed out. (read timeout=300)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTimeoutError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/connectionpool.py:464\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[1;32m 463\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 464\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_conn\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconn\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 465\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (SocketTimeout, BaseSSLError) \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/connectionpool.py:1093\u001b[0m, in \u001b[0;36mHTTPSConnectionPool._validate_conn\u001b[0;34m(self, conn)\u001b[0m\n\u001b[1;32m 1092\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m conn\u001b[38;5;241m.\u001b[39mis_closed:\n\u001b[0;32m-> 1093\u001b[0m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1095\u001b[0m \u001b[38;5;66;03m# TODO revise this, see https://github.com/urllib3/urllib3/issues/2791\u001b[39;00m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/connection.py:796\u001b[0m, in \u001b[0;36mHTTPSConnection.connect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 794\u001b[0m server_hostname_rm_dot \u001b[38;5;241m=\u001b[39m server_hostname\u001b[38;5;241m.\u001b[39mrstrip(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 796\u001b[0m sock_and_verified \u001b[38;5;241m=\u001b[39m \u001b[43m_ssl_wrap_socket_and_match_hostname\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 797\u001b[0m \u001b[43m \u001b[49m\u001b[43msock\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msock\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 798\u001b[0m \u001b[43m \u001b[49m\u001b[43mcert_reqs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcert_reqs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 799\u001b[0m \u001b[43m \u001b[49m\u001b[43mssl_version\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mssl_version\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 800\u001b[0m \u001b[43m \u001b[49m\u001b[43mssl_minimum_version\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mssl_minimum_version\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 801\u001b[0m \u001b[43m \u001b[49m\u001b[43mssl_maximum_version\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mssl_maximum_version\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 802\u001b[0m \u001b[43m \u001b[49m\u001b[43mca_certs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mca_certs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 803\u001b[0m \u001b[43m \u001b[49m\u001b[43mca_cert_dir\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mca_cert_dir\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 804\u001b[0m \u001b[43m \u001b[49m\u001b[43mca_cert_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mca_cert_data\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 805\u001b[0m \u001b[43m \u001b[49m\u001b[43mcert_file\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcert_file\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 806\u001b[0m \u001b[43m \u001b[49m\u001b[43mkey_file\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkey_file\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 807\u001b[0m \u001b[43m \u001b[49m\u001b[43mkey_password\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkey_password\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 808\u001b[0m \u001b[43m \u001b[49m\u001b[43mserver_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mserver_hostname_rm_dot\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 809\u001b[0m \u001b[43m \u001b[49m\u001b[43mssl_context\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mssl_context\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 810\u001b[0m \u001b[43m \u001b[49m\u001b[43mtls_in_tls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtls_in_tls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 811\u001b[0m \u001b[43m \u001b[49m\u001b[43massert_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43massert_hostname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 812\u001b[0m \u001b[43m \u001b[49m\u001b[43massert_fingerprint\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43massert_fingerprint\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 813\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 814\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msock \u001b[38;5;241m=\u001b[39m sock_and_verified\u001b[38;5;241m.\u001b[39msocket\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/connection.py:975\u001b[0m, in \u001b[0;36m_ssl_wrap_socket_and_match_hostname\u001b[0;34m(sock, cert_reqs, ssl_version, ssl_minimum_version, ssl_maximum_version, cert_file, key_file, key_password, ca_certs, ca_cert_dir, ca_cert_data, assert_hostname, assert_fingerprint, server_hostname, ssl_context, tls_in_tls)\u001b[0m\n\u001b[1;32m 973\u001b[0m server_hostname \u001b[38;5;241m=\u001b[39m normalized\n\u001b[0;32m--> 975\u001b[0m ssl_sock \u001b[38;5;241m=\u001b[39m \u001b[43mssl_wrap_socket\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43msock\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msock\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mkeyfile\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkey_file\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[43mcertfile\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcert_file\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mkey_password\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkey_password\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mca_certs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mca_certs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[43mca_cert_dir\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mca_cert_dir\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43mca_cert_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mca_cert_data\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 983\u001b[0m \u001b[43m \u001b[49m\u001b[43mserver_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mserver_hostname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 984\u001b[0m \u001b[43m \u001b[49m\u001b[43mssl_context\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcontext\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 985\u001b[0m \u001b[43m \u001b[49m\u001b[43mtls_in_tls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtls_in_tls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 986\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 988\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/util/ssl_.py:483\u001b[0m, in \u001b[0;36mssl_wrap_socket\u001b[0;34m(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir, key_password, ca_cert_data, tls_in_tls)\u001b[0m\n\u001b[1;32m 481\u001b[0m context\u001b[38;5;241m.\u001b[39mset_alpn_protocols(ALPN_PROTOCOLS)\n\u001b[0;32m--> 483\u001b[0m ssl_sock \u001b[38;5;241m=\u001b[39m \u001b[43m_ssl_wrap_socket_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[43msock\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtls_in_tls\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mserver_hostname\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 484\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ssl_sock\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/util/ssl_.py:527\u001b[0m, in \u001b[0;36m_ssl_wrap_socket_impl\u001b[0;34m(sock, ssl_context, tls_in_tls, server_hostname)\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SSLTransport(sock, ssl_context, server_hostname)\n\u001b[0;32m--> 527\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mssl_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwrap_socket\u001b[49m\u001b[43m(\u001b[49m\u001b[43msock\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mserver_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mserver_hostname\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/ssl.py:513\u001b[0m, in \u001b[0;36mSSLContext.wrap_socket\u001b[0;34m(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session)\u001b[0m\n\u001b[1;32m 507\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mwrap_socket\u001b[39m(\u001b[38;5;28mself\u001b[39m, sock, server_side\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 508\u001b[0m do_handshake_on_connect\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 509\u001b[0m suppress_ragged_eofs\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 510\u001b[0m server_hostname\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, session\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 511\u001b[0m \u001b[38;5;66;03m# SSLSocket class handles server_hostname encoding before it calls\u001b[39;00m\n\u001b[1;32m 512\u001b[0m \u001b[38;5;66;03m# ctx._wrap_socket()\u001b[39;00m\n\u001b[0;32m--> 513\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msslsocket_class\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_create\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 514\u001b[0m \u001b[43m \u001b[49m\u001b[43msock\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msock\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 515\u001b[0m \u001b[43m \u001b[49m\u001b[43mserver_side\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mserver_side\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 516\u001b[0m \u001b[43m \u001b[49m\u001b[43mdo_handshake_on_connect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdo_handshake_on_connect\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 517\u001b[0m \u001b[43m \u001b[49m\u001b[43msuppress_ragged_eofs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msuppress_ragged_eofs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 518\u001b[0m \u001b[43m \u001b[49m\u001b[43mserver_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mserver_hostname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 519\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 520\u001b[0m \u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msession\u001b[49m\n\u001b[1;32m 521\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/ssl.py:1104\u001b[0m, in \u001b[0;36mSSLSocket._create\u001b[0;34m(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session)\u001b[0m\n\u001b[1;32m 1103\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdo_handshake_on_connect should not be specified for non-blocking sockets\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m-> 1104\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_handshake\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1105\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mOSError\u001b[39;00m, \u001b[38;5;167;01mValueError\u001b[39;00m):\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/ssl.py:1375\u001b[0m, in \u001b[0;36mSSLSocket.do_handshake\u001b[0;34m(self, block)\u001b[0m\n\u001b[1;32m 1374\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msettimeout(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m-> 1375\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sslobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_handshake\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1376\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", + "\u001b[0;31mTimeoutError\u001b[0m: _ssl.c:1000: The handshake operation timed out", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mReadTimeoutError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/requests/adapters.py:644\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 643\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 644\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 645\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 646\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 647\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 648\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 649\u001b[0m \u001b[43m \u001b[49m\u001b[43mredirect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 650\u001b[0m \u001b[43m \u001b[49m\u001b[43massert_same_host\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 651\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 652\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 653\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmax_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 654\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 655\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 656\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 658\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (ProtocolError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m err:\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/connectionpool.py:841\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[1;32m 839\u001b[0m new_e \u001b[38;5;241m=\u001b[39m ProtocolError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mConnection aborted.\u001b[39m\u001b[38;5;124m\"\u001b[39m, new_e)\n\u001b[0;32m--> 841\u001b[0m retries \u001b[38;5;241m=\u001b[39m \u001b[43mretries\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mincrement\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 842\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merror\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnew_e\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_stacktrace\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msys\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexc_info\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 843\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 844\u001b[0m retries\u001b[38;5;241m.\u001b[39msleep()\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/util/retry.py:490\u001b[0m, in \u001b[0;36mRetry.increment\u001b[0;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[1;32m 489\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m read \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_method_retryable(method):\n\u001b[0;32m--> 490\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[43mreraise\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mtype\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43merror\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merror\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_stacktrace\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 491\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m read \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/util/util.py:39\u001b[0m, in \u001b[0;36mreraise\u001b[0;34m(tp, value, tb)\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\u001b[38;5;241m.\u001b[39mwith_traceback(tb)\n\u001b[0;32m---> 39\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\n\u001b[1;32m 40\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/connectionpool.py:787\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[1;32m 786\u001b[0m \u001b[38;5;66;03m# Make the request on the HTTPConnection object\u001b[39;00m\n\u001b[0;32m--> 787\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 788\u001b[0m \u001b[43m \u001b[49m\u001b[43mconn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 789\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 790\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 791\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout_obj\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 792\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 793\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 794\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 795\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 796\u001b[0m \u001b[43m \u001b[49m\u001b[43mresponse_conn\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresponse_conn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 797\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpreload_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 798\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdecode_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 799\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mresponse_kw\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 800\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 802\u001b[0m \u001b[38;5;66;03m# Everything went great!\u001b[39;00m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/connectionpool.py:488\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[1;32m 487\u001b[0m new_e \u001b[38;5;241m=\u001b[39m _wrap_proxy_error(new_e, conn\u001b[38;5;241m.\u001b[39mproxy\u001b[38;5;241m.\u001b[39mscheme)\n\u001b[0;32m--> 488\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m new_e\n\u001b[1;32m 490\u001b[0m \u001b[38;5;66;03m# conn.request() calls http.client.*.request, not the method in\u001b[39;00m\n\u001b[1;32m 491\u001b[0m \u001b[38;5;66;03m# urllib3.request. It also calls makefile (recv) on the socket.\u001b[39;00m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/connectionpool.py:466\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[1;32m 465\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (SocketTimeout, BaseSSLError) \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 466\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_raise_timeout\u001b[49m\u001b[43m(\u001b[49m\u001b[43merr\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43me\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 467\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/urllib3/connectionpool.py:367\u001b[0m, in \u001b[0;36mHTTPConnectionPool._raise_timeout\u001b[0;34m(self, err, url, timeout_value)\u001b[0m\n\u001b[1;32m 366\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(err, SocketTimeout):\n\u001b[0;32m--> 367\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ReadTimeoutError(\n\u001b[1;32m 368\u001b[0m \u001b[38;5;28mself\u001b[39m, url, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRead timed out. (read timeout=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtimeout_value\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 369\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01merr\u001b[39;00m\n\u001b[1;32m 371\u001b[0m \u001b[38;5;66;03m# See the above comment about EAGAIN in Python 3.\u001b[39;00m\n", + "\u001b[0;31mReadTimeoutError\u001b[0m: HTTPSConnectionPool(host='wcc.sc.egov.usda.gov', port=443): Read timed out. (read timeout=300)", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mReadTimeout\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[6], line 41\u001b[0m\n\u001b[1;32m 38\u001b[0m SiteID \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m09330000\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 39\u001b[0m StateAbb \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUT\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m---> 41\u001b[0m snotel_df \u001b[38;5;241m=\u001b[39m \u001b[43mdownload_snotel_csv\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 42\u001b[0m \u001b[43m \u001b[49m\u001b[43mSiteName\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mSiteName\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 43\u001b[0m \u001b[43m \u001b[49m\u001b[43mSiteID\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mSiteID\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 44\u001b[0m \u001b[43m \u001b[49m\u001b[43mStateAbb\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mStateAbb\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 45\u001b[0m \u001b[43m \u001b[49m\u001b[43mStartDate\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mStartDate\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 46\u001b[0m \u001b[43m \u001b[49m\u001b[43mEndDate\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mEndDate\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 47\u001b[0m \u001b[43m \u001b[49m\u001b[43mOutputFolder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mOutputFolder\u001b[49m\n\u001b[1;32m 48\u001b[0m \u001b[43m)\u001b[49m\n\u001b[1;32m 50\u001b[0m snotel_df\u001b[38;5;241m.\u001b[39mhead()\n", + "Cell \u001b[0;32mIn[6], line 19\u001b[0m, in \u001b[0;36mdownload_snotel_csv\u001b[0;34m(SiteName, SiteID, StateAbb, StartDate, EndDate, OutputFolder, tries)\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m attempt \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(tries):\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 19\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43mrequests\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m300\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 20\u001b[0m r\u001b[38;5;241m.\u001b[39mraise_for_status()\n\u001b[1;32m 22\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(out_csv, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mw\u001b[39m\u001b[38;5;124m\"\u001b[39m, encoding\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m f:\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/requests/api.py:73\u001b[0m, in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget\u001b[39m(url, params\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 63\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Sends a GET request.\u001b[39;00m\n\u001b[1;32m 64\u001b[0m \n\u001b[1;32m 65\u001b[0m \u001b[38;5;124;03m :param url: URL for the new :class:`Request` object.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;124;03m :rtype: requests.Response\u001b[39;00m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mget\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/requests/api.py:59\u001b[0m, in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;66;03m# By using the 'with' statement we are sure the session is closed, thus we\u001b[39;00m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;66;03m# avoid leaving sockets open which can trigger a ResourceWarning in some\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;66;03m# cases, and look like a memory leak in others.\u001b[39;00m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m sessions\u001b[38;5;241m.\u001b[39mSession() \u001b[38;5;28;01mas\u001b[39;00m session:\n\u001b[0;32m---> 59\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/requests/sessions.py:589\u001b[0m, in \u001b[0;36mSession.request\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 584\u001b[0m send_kwargs \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 585\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimeout\u001b[39m\u001b[38;5;124m\"\u001b[39m: timeout,\n\u001b[1;32m 586\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mallow_redirects\u001b[39m\u001b[38;5;124m\"\u001b[39m: allow_redirects,\n\u001b[1;32m 587\u001b[0m }\n\u001b[1;32m 588\u001b[0m send_kwargs\u001b[38;5;241m.\u001b[39mupdate(settings)\n\u001b[0;32m--> 589\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43msend_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 591\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/requests/sessions.py:703\u001b[0m, in \u001b[0;36mSession.send\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 700\u001b[0m start \u001b[38;5;241m=\u001b[39m preferred_clock()\n\u001b[1;32m 702\u001b[0m \u001b[38;5;66;03m# Send the request\u001b[39;00m\n\u001b[0;32m--> 703\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43madapter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;66;03m# Total elapsed time of the request (approximately)\u001b[39;00m\n\u001b[1;32m 706\u001b[0m elapsed \u001b[38;5;241m=\u001b[39m preferred_clock() \u001b[38;5;241m-\u001b[39m start\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/requests/adapters.py:690\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 688\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m SSLError(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[1;32m 689\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e, ReadTimeoutError):\n\u001b[0;32m--> 690\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ReadTimeout(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[1;32m 691\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e, _InvalidHeader):\n\u001b[1;32m 692\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InvalidHeader(e, request\u001b[38;5;241m=\u001b[39mrequest)\n", + "\u001b[0;31mReadTimeout\u001b[0m: HTTPSConnectionPool(host='wcc.sc.egov.usda.gov', port=443): Read timed out. (read timeout=300)" + ] + } + ], + "source": [ + "def download_snotel_csv(SiteName, SiteID, StateAbb, StartDate, EndDate, OutputFolder, tries=5):\n", + " os.makedirs(OutputFolder, exist_ok=True)\n", + " out_csv = f\"./{OutputFolder}/df_{SiteID}_{StateAbb}_SNTL.csv\"\n", + "\n", + " if os.path.exists(out_csv):\n", + " df = pd.read_csv(out_csv)\n", + " df[\"Date\"] = pd.to_datetime(df[\"Date\"])\n", + " return df.set_index(\"Date\")\n", + "\n", + " url = (\n", + " \"https://wcc.sc.egov.usda.gov/reportGenerator/view_csv/\"\n", + " f\"customSingleStationReport/daily/start_of_period/{SiteID}:{StateAbb}:SNTL\"\n", + " f\"%7Cid=%22%22%7Cname/{StartDate},{EndDate}/WTEQ::value\"\n", + " \"?fitToScreen=false\"\n", + " )\n", + "\n", + " for attempt in range(tries):\n", + " try:\n", + " r = requests.get(url, timeout=300)\n", + " r.raise_for_status()\n", + "\n", + " with open(out_csv, \"w\", encoding=\"utf-8\") as f:\n", + " f.write(r.text)\n", + "\n", + " df = pd.read_csv(out_csv)\n", + " df[\"Date\"] = pd.to_datetime(df[\"Date\"])\n", + " return df.set_index(\"Date\")\n", + "\n", + " except Exception as e:\n", + " if attempt == tries - 1:\n", + " raise\n", + " wait = 2 ** attempt\n", + " print(f\"SNOTEL download failed: {e}\")\n", + " print(f\"Retrying in {wait} seconds...\")\n", + " time.sleep(wait)\n", + "\n", + "SiteName = \"FREMONT RIVER NEAR BICKNELL\"\n", + "SiteID = \"09330000\"\n", + "StateAbb = \"UT\"\n", + "\n", + "snotel_df = download_snotel_csv(\n", + " SiteName=SiteName,\n", + " SiteID=SiteID,\n", + " StateAbb=StateAbb,\n", + " StartDate=StartDate,\n", + " EndDate=EndDate,\n", + " OutputFolder=OutputFolder\n", + ")\n", + "\n", + "snotel_df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "8b80b636", + "metadata": {}, + "source": [ + "Landsat helper" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b205118", + "metadata": {}, + "outputs": [], + "source": [ + "def get_landsat_ndsi_timeseries(basin_polygon_coords, begin_date, end_date):\n", + " basin = ee.Geometry.Polygon(basin_polygon_coords)\n", + "\n", + " col = (\n", + " ee.ImageCollection(\"LANDSAT/LC08/C02/T2_L2\")\n", + " .filterBounds(basin)\n", + " .filterDate(begin_date, end_date)\n", + " .sort(\"CLOUD_COVER\")\n", + " )\n", + "\n", + " n = col.size().getInfo()\n", + " img_list = col.toList(n)\n", + " records = []\n", + "\n", + " for i in range(n):\n", + " img = ee.Image(img_list.get(i))\n", + "\n", + " qa = img.select(\"QA_PIXEL\")\n", + " cloud_mask = (\n", + " qa.bitwiseAnd(1 << 1).eq(0)\n", + " .And(qa.bitwiseAnd(1 << 2).eq(0))\n", + " .And(qa.bitwiseAnd(1 << 3).eq(0))\n", + " .And(qa.bitwiseAnd(1 << 4).eq(0))\n", + " )\n", + "\n", + " green = img.select(\"SR_B3\").multiply(2.75e-05).add(-0.2)\n", + " swir1 = img.select(\"SR_B6\").multiply(2.75e-05).add(-0.2)\n", + "\n", + " ndsi = green.subtract(swir1).divide(green.add(swir1)).rename(\"NDSI\")\n", + " ndsi = ndsi.updateMask(cloud_mask)\n", + "\n", + " stat = ndsi.reduceRegion(\n", + " reducer=ee.Reducer.mean(),\n", + " geometry=basin,\n", + " scale=30,\n", + " maxPixels=1e9,\n", + " ).getInfo()\n", + "\n", + " if stat and stat.get(\"NDSI\") is not None:\n", + " records.append({\n", + " \"Date\": pd.to_datetime(img.date().format(\"YYYY-MM-dd\").getInfo()),\n", + " \"NDSI\": stat[\"NDSI\"],\n", + " })\n", + "\n", + " df = pd.DataFrame(records)\n", + " if not df.empty:\n", + " df = df.sort_values(\"Date\").set_index(\"Date\")\n", + " return df" + ] + }, + { + "cell_type": "markdown", + "id": "aac57f42", + "metadata": {}, + "source": [ + "Landsat" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25abdb74", + "metadata": {}, + "outputs": [], + "source": [ + "landsat_df = get_landsat_ndsi_timeseries(\n", + " basin_polygon_coords=basin_polygon_coords,\n", + " begin_date=StartDate,\n", + " end_date=EndDate\n", + ")\n", + "\n", + "landsat_df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "0f5502c9", + "metadata": {}, + "source": [ + "Clean and Allign" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "795c4f2e", + "metadata": {}, + "outputs": [], + "source": [ + "stream = stream_df.copy()\n", + "snotel = snotel_df.copy()\n", + "landsat = landsat_df.copy()\n", + "\n", + "if \"Date\" in stream.columns:\n", + " stream[\"Date\"] = pd.to_datetime(stream[\"Date\"])\n", + " stream = stream.set_index(\"Date\")\n", + "else:\n", + " stream.index = pd.to_datetime(stream.index)\n", + "\n", + "if \"Date\" in snotel.columns:\n", + " snotel[\"Date\"] = pd.to_datetime(snotel[\"Date\"])\n", + " snotel = snotel.set_index(\"Date\")\n", + "else:\n", + " snotel.index = pd.to_datetime(snotel.index)\n", + "\n", + "landsat.index = pd.to_datetime(landsat.index)\n", + "\n", + "merged = pd.DataFrame(index=pd.date_range(StartDate, EndDate, freq=\"D\"))\n", + "\n", + "# streamflow\n", + "if \"flow_cfs\" in stream.columns:\n", + " merged[\"streamflow_cfs\"] = stream[\"flow_cfs\"]\n", + "else:\n", + " merged[\"streamflow_cfs\"] = stream.iloc[:, 0]\n", + "\n", + "# SNOTEL SWE\n", + "swe_col = \"Snow Water Equivalent (m) Start of Day Values\"\n", + "if swe_col in snotel.columns:\n", + " merged[\"snotel_swe_m\"] = snotel[swe_col]\n", + "else:\n", + " merged[\"snotel_swe_m\"] = snotel.iloc[:, 0]\n", + "\n", + "# Landsat NDSI\n", + "merged[\"landsat_ndsi\"] = landsat[\"NDSI\"]\n", + "\n", + "merged.head()" + ] + }, + { + "cell_type": "markdown", + "id": "667bd93a", + "metadata": {}, + "source": [ + "Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e7c34a86", + "metadata": {}, + "outputs": [], + "source": [ + "fig, axes = plt.subplots(3, 1, figsize=(13, 10), sharex=True)\n", + "\n", + "axes[0].plot(merged.index, merged[\"streamflow_cfs\"])\n", + "axes[0].set_ylabel(\"cfs\")\n", + "axes[0].set_title(\"USGS Streamflow\")\n", + "\n", + "axes[1].plot(merged.index, merged[\"snotel_swe_m\"])\n", + "axes[1].set_ylabel(\"m\")\n", + "axes[1].set_title(\"SNOTEL SWE\")\n", + "\n", + "axes[2].scatter(merged.index, merged[\"landsat_ndsi\"], s=18)\n", + "axes[2].set_ylabel(\"NDSI\")\n", + "axes[2].set_title(\"Landsat 8 NDSI\")\n", + "\n", + "axes[2].set_xlabel(\"Date\")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "c4542d65", + "metadata": {}, + "source": [ + "Save" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61cf2db6", + "metadata": {}, + "outputs": [], + "source": [ + "merged.to_csv(\"Figures/watershed_stream_snotel_landsat.csv\")\n", + "fig.savefig(\"Figures/watershed_stream_snotel_landsat.png\", dpi=300, bbox_inches=\"tight\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "hyriver", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.20" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/HydroDF_Analysis.ipynb b/HydroDF_Analysis.ipynb index 3c2bef7..69322c9 100644 --- a/HydroDF_Analysis.ipynb +++ b/HydroDF_Analysis.ipynb @@ -74,10 +74,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "TUM: 15288 start date: 1980-01-10 00:00:00 end date: 2021-11-17 00:00:00\n", - "DAN: 14936 start date: 1980-10-26 00:00:00 end date: 2021-09-16 00:00:00\n", - "SLI: 14273 start date: 1982-10-21 00:00:00 end date: 2021-11-17 00:00:00\n", - "TES: 629 start date: 2005-03-01 00:00:00 end date: 2006-11-19 00:00:00\n" + "386: 16068 start date: 1978-10-01 00:00:00 end date: 2022-09-27 00:00:00\n", + "387: 12940 start date: 1990-10-01 00:00:00 end date: 2026-03-05 00:00:00\n", + "629: 17323 start date: 1978-10-01 00:00:00 end date: 2026-03-05 00:00:00\n", + "632: 14456 start date: 1986-08-07 00:00:00 end date: 2026-03-05 00:00:00\n", + "713: 16592 start date: 1980-10-01 00:00:00 end date: 2026-03-05 00:00:00\n", + "780: 14429 start date: 1986-09-03 00:00:00 end date: 2026-03-05 00:00:00\n", + "DAN: 6195 start date: 2004-10-01 00:00:00 end date: 2021-09-16 00:00:00\n", + "SLI: 5892 start date: 2005-10-01 00:00:00 end date: 2021-11-17 00:00:00\n", + "TES: 629 start date: 2005-03-01 00:00:00 end date: 2006-11-19 00:00:00\n", + "TUM: 6257 start date: 2004-10-01 00:00:00 end date: 2021-11-17 00:00:00\n" ] } ], @@ -132,60 +138,110 @@ " \n", " \n", " \n", - " TUM_SWE_cm\n", + " 386_SWE_cm\n", + " 387_SWE_cm\n", + " 629_SWE_cm\n", + " 632_SWE_cm\n", + " 713_SWE_cm\n", + " 780_SWE_cm\n", " DAN_SWE_cm\n", " SLI_SWE_cm\n", + " TUM_SWE_cm\n", " \n", " \n", " Date\n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " 1982-10-21\n", - " 0.000\n", - " NaN\n", - " 0.000\n", + " 2005-10-01\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", " \n", " \n", - " 1982-10-22\n", - " 0.508\n", - " NaN\n", - " 2.286\n", + " 2005-10-02\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", " \n", " \n", - " 1982-10-23\n", - " 1.270\n", - " NaN\n", - " 2.286\n", + " 2005-10-03\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", " \n", " \n", - " 1982-10-24\n", - " 1.778\n", - " NaN\n", - " 2.286\n", + " 2005-10-04\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", " \n", " \n", - " 1982-10-25\n", - " 2.032\n", - " NaN\n", - " 2.540\n", + " 2005-10-05\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", " \n", " \n", "\n", "" ], "text/plain": [ - " TUM_SWE_cm DAN_SWE_cm SLI_SWE_cm\n", - "Date \n", - "1982-10-21 0.000 NaN 0.000\n", - "1982-10-22 0.508 NaN 2.286\n", - "1982-10-23 1.270 NaN 2.286\n", - "1982-10-24 1.778 NaN 2.286\n", - "1982-10-25 2.032 NaN 2.540" + " 386_SWE_cm 387_SWE_cm 629_SWE_cm 632_SWE_cm 713_SWE_cm \\\n", + "Date \n", + "2005-10-01 0.0 0.0 0.0 0.0 0.0 \n", + "2005-10-02 0.0 0.0 0.0 0.0 0.0 \n", + "2005-10-03 0.0 0.0 0.0 0.0 0.0 \n", + "2005-10-04 0.0 0.0 0.0 0.0 0.0 \n", + "2005-10-05 0.0 0.0 0.0 0.0 0.0 \n", + "\n", + " 780_SWE_cm DAN_SWE_cm SLI_SWE_cm TUM_SWE_cm \n", + "Date \n", + "2005-10-01 0.0 0.0 0.0 0.0 \n", + "2005-10-02 0.0 0.0 0.0 0.0 \n", + "2005-10-03 0.0 0.0 0.0 0.0 \n", + "2005-10-04 0.0 0.0 0.0 0.0 \n", + "2005-10-05 0.0 0.0 0.0 0.0 " ] }, "execution_count": 4, @@ -226,128 +282,20 @@ "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
dayl_sprcp_mm_daysrad_W_m2swe_cmtmax_Ctmin_Cvp_Patmean
Date
1980-01-0133914.080.0356.432.9436.07-12.54232.94-3.235
1980-01-0233952.030.0363.522.9437.82-11.91239.32-2.045
1980-01-0333993.090.0364.492.9437.14-12.50229.62-2.680
1980-01-0434037.220.0340.582.9435.89-10.41276.75-2.260
1980-01-0534084.410.0318.392.9436.51-7.77340.48-0.630
\n", - "
" - ], - "text/plain": [ - " dayl_s prcp_mm_day srad_W_m2 swe_cm tmax_C tmin_C vp_Pa \\\n", - "Date \n", - "1980-01-01 33914.08 0.0 356.43 2.943 6.07 -12.54 232.94 \n", - "1980-01-02 33952.03 0.0 363.52 2.943 7.82 -11.91 239.32 \n", - "1980-01-03 33993.09 0.0 364.49 2.943 7.14 -12.50 229.62 \n", - "1980-01-04 34037.22 0.0 340.58 2.943 5.89 -10.41 276.75 \n", - "1980-01-05 34084.41 0.0 318.39 2.943 6.51 -7.77 340.48 \n", - "\n", - " tmean \n", - "Date \n", - "1980-01-01 -3.235 \n", - "1980-01-02 -2.045 \n", - "1980-01-03 -2.680 \n", - "1980-01-04 -2.260 \n", - "1980-01-05 -0.630 " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'files/PyDayMet/PyDayMet_11274790.csv'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m#Read the data from PyDayMet \u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m PyDayMet_df \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfiles/PyDayMet/PyDayMet_\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mstation_id\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m.csv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m#set the date column to be a datetime object and set it to the index\u001b[39;00m\n\u001b[1;32m 4\u001b[0m PyDayMet_df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mDate\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mto_datetime(PyDayMet_df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mDate\u001b[39m\u001b[38;5;124m'\u001b[39m])\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/pandas/io/parsers/readers.py:1026\u001b[0m, in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[1;32m 1013\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[1;32m 1014\u001b[0m dialect,\n\u001b[1;32m 1015\u001b[0m delimiter,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1022\u001b[0m dtype_backend\u001b[38;5;241m=\u001b[39mdtype_backend,\n\u001b[1;32m 1023\u001b[0m )\n\u001b[1;32m 1024\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[0;32m-> 1026\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/pandas/io/parsers/readers.py:620\u001b[0m, in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 617\u001b[0m _validate_names(kwds\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnames\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[1;32m 619\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[0;32m--> 620\u001b[0m parser \u001b[38;5;241m=\u001b[39m \u001b[43mTextFileReader\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 622\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[1;32m 623\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parser\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/pandas/io/parsers/readers.py:1620\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 1617\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m kwds[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 1619\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles: IOHandles \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m-> 1620\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_engine\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mengine\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/pandas/io/parsers/readers.py:1880\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[0;34m(self, f, engine)\u001b[0m\n\u001b[1;32m 1878\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode:\n\u001b[1;32m 1879\u001b[0m mode \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m-> 1880\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;241m=\u001b[39m \u001b[43mget_handle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1881\u001b[0m \u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1882\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1883\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1884\u001b[0m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcompression\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1885\u001b[0m \u001b[43m \u001b[49m\u001b[43mmemory_map\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmemory_map\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1886\u001b[0m \u001b[43m \u001b[49m\u001b[43mis_text\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_text\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1887\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding_errors\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstrict\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1888\u001b[0m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstorage_options\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1889\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1890\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 1891\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles\u001b[38;5;241m.\u001b[39mhandle\n", + "File \u001b[0;32m~/conda-envs/hyriver/lib/python3.10/site-packages/pandas/io/common.py:873\u001b[0m, in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m 868\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(handle, \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m 869\u001b[0m \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[1;32m 870\u001b[0m \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[1;32m 871\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mencoding \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mmode:\n\u001b[1;32m 872\u001b[0m \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[0;32m--> 873\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m 874\u001b[0m \u001b[43m \u001b[49m\u001b[43mhandle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 875\u001b[0m \u001b[43m \u001b[49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 876\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 877\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 878\u001b[0m \u001b[43m \u001b[49m\u001b[43mnewline\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 879\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 880\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 881\u001b[0m \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[1;32m 882\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(handle, ioargs\u001b[38;5;241m.\u001b[39mmode)\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'files/PyDayMet/PyDayMet_11274790.csv'" + ] } ], "source": [ @@ -361,171 +309,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
convective_fractionlongwave_radiationpotential_energypotential_evaporationpressureshortwave_radiationspecific_humiditytemperaturetotal_precipitationwind_uwind_v
Date
2006-01-010.005192199.8338361.5080870.04499071408.17016095.2341920.002439-7.5613170.5637032.8078825.710911
2006-01-020.051767264.13248233.0550340.01366370799.28572493.9327710.004772-0.9444784.5321284.4676748.864378
2006-01-030.016707214.2928279.2099500.03009371724.799553101.1671700.002966-6.3718420.5753874.2472623.778855
2006-01-040.000000226.5812430.0000000.01627272808.304958101.3686100.003240-3.4628350.0023581.4853891.450410
2006-01-050.000000214.9101430.0000000.03397473429.441947112.5465830.0028491.3203370.000000-0.7798093.417216
\n", - "
" - ], - "text/plain": [ - " convective_fraction longwave_radiation potential_energy \\\n", - "Date \n", - "2006-01-01 0.005192 199.833836 1.508087 \n", - "2006-01-02 0.051767 264.132482 33.055034 \n", - "2006-01-03 0.016707 214.292827 9.209950 \n", - "2006-01-04 0.000000 226.581243 0.000000 \n", - "2006-01-05 0.000000 214.910143 0.000000 \n", - "\n", - " potential_evaporation pressure shortwave_radiation \\\n", - "Date \n", - "2006-01-01 0.044990 71408.170160 95.234192 \n", - "2006-01-02 0.013663 70799.285724 93.932771 \n", - "2006-01-03 0.030093 71724.799553 101.167170 \n", - "2006-01-04 0.016272 72808.304958 101.368610 \n", - "2006-01-05 0.033974 73429.441947 112.546583 \n", - "\n", - " specific_humidity temperature total_precipitation wind_u \\\n", - "Date \n", - "2006-01-01 0.002439 -7.561317 0.563703 2.807882 \n", - "2006-01-02 0.004772 -0.944478 4.532128 4.467674 \n", - "2006-01-03 0.002966 -6.371842 0.575387 4.247262 \n", - "2006-01-04 0.003240 -3.462835 0.002358 1.485389 \n", - "2006-01-05 0.002849 1.320337 0.000000 -0.779809 \n", - "\n", - " wind_v \n", - "Date \n", - "2006-01-01 5.710911 \n", - "2006-01-02 8.864378 \n", - "2006-01-03 3.778855 \n", - "2006-01-04 1.450410 \n", - "2006-01-05 3.417216 " - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "#Read the data from NLDAS \n", "NLDAS_df = pd.read_csv(f\"files/NLDAS/NLDAS_{station_id}.csv\")\n", @@ -544,84 +330,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
site_noflow_cms
Date
2006-10-13112747900.611643
2006-10-14112747900.563504
2006-10-15112747900.538019
2006-10-16112747900.504039
2006-10-17112747900.481386
\n", - "
" - ], - "text/plain": [ - " site_no flow_cms\n", - "Date \n", - "2006-10-13 11274790 0.611643\n", - "2006-10-14 11274790 0.563504\n", - "2006-10-15 11274790 0.538019\n", - "2006-10-16 11274790 0.504039\n", - "2006-10-17 11274790 0.481386" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "streamflow_df = pd.read_csv(f\"files/NWIS/streamflow_{station_id}.csv\")\n", "#set the date column to be a datetime object and set it to the index\n", @@ -640,113 +351,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Unnamed: 0station_idAverage_Elevation_mMinimum_Elevation_mMaximum_Elevation_mAverage_SlopeArea_km2Open_WaterPerennial_Ice_SnowDeveloped,_Open_Space...Developed,_Medium_IntensityDeveloped,_High_IntensityBarren_Land_Rock_Sand_ClayDeciduous_ForestEvergreen_ForestMixed_ForestShrub_ScrubGrassland_HerbaceousWoody_WetlandsEmergent_Herbaceous_Wetlands
0TuolumneRiverBasin112747902847.09381165.12383972.56960.3924791249.4648140.7451680.3745080.071823...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
\n", - "

1 rows × 21 columns

\n", - "
" - ], - "text/plain": [ - " Unnamed: 0 station_id Average_Elevation_m Minimum_Elevation_m \\\n", - "0 TuolumneRiverBasin 11274790 2847.0938 1165.1238 \n", - "\n", - " Maximum_Elevation_m Average_Slope Area_km2 Open_Water \\\n", - "0 3972.5696 0.392479 1249.464814 0.745168 \n", - "\n", - " Perennial_Ice_Snow Developed,_Open_Space ... \\\n", - "0 0.374508 0.071823 ... \n", - "\n", - " Developed,_Medium_Intensity Developed,_High_Intensity \\\n", - "0 0.008978 0.006413 \n", - "\n", - " Barren_Land_Rock_Sand_Clay Deciduous_Forest Evergreen_Forest \\\n", - "0 8.326386 0.01026 37.994588 \n", - "\n", - " Mixed_Forest Shrub_Scrub Grassland_Herbaceous Woody_Wetlands \\\n", - "0 0.002565 45.493722 5.055856 0.638715 \n", - "\n", - " Emergent_Herbaceous_Wetlands \n", - "0 1.233824 \n", - "\n", - "[1 rows x 21 columns]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "basin_info = pd.read_csv(f\"files/basin_info/basin_info_{station_id}.csv\")\n", "basin_info.head()" @@ -761,7 +368,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -778,252 +385,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
site_noflow_cmsTUM_SWE_cmDAN_SWE_cmSLI_SWE_cmdayl_sprcp_mm_daysrad_W_m2swe_cmtmax_C...longwave_radiationpotential_energypotential_evaporationpressureshortwave_radiationspecific_humiditytemperaturetotal_precipitationwind_uwind_v
Date
2006-10-13112747900.6116430.00.00.039849.510.0335.150.012.52...223.4576440.0384010.13983972107.765879174.1911320.0036374.2959800.025121-2.0334860.793636
2006-10-14112747900.5635040.00.00.039705.430.0368.370.012.76...219.1734610.0277930.14306771877.921092190.4548430.0042753.6693910.014288-0.926827-2.149881
2006-10-15112747900.5380190.00.00.039562.000.0402.910.015.72...221.0132300.0000000.15659172003.823920180.3533730.0034375.0691120.0040311.443303-2.045946
2006-10-16112747900.5040390.00.00.039419.270.0342.840.09.39...212.4368700.6243200.15934071788.350428190.7530020.0038523.6430040.0011244.436657-0.672672
2006-10-17112747900.4813860.00.00.039277.270.0327.940.05.66...187.4580544.5423290.11699571563.357945188.9022330.002838-2.5031300.0043091.149626-2.636144
\n", - "

5 rows × 24 columns

\n", - "
" - ], - "text/plain": [ - " site_no flow_cms TUM_SWE_cm DAN_SWE_cm SLI_SWE_cm dayl_s \\\n", - "Date \n", - "2006-10-13 11274790 0.611643 0.0 0.0 0.0 39849.51 \n", - "2006-10-14 11274790 0.563504 0.0 0.0 0.0 39705.43 \n", - "2006-10-15 11274790 0.538019 0.0 0.0 0.0 39562.00 \n", - "2006-10-16 11274790 0.504039 0.0 0.0 0.0 39419.27 \n", - "2006-10-17 11274790 0.481386 0.0 0.0 0.0 39277.27 \n", - "\n", - " prcp_mm_day srad_W_m2 swe_cm tmax_C ... longwave_radiation \\\n", - "Date ... \n", - "2006-10-13 0.0 335.15 0.0 12.52 ... 223.457644 \n", - "2006-10-14 0.0 368.37 0.0 12.76 ... 219.173461 \n", - "2006-10-15 0.0 402.91 0.0 15.72 ... 221.013230 \n", - "2006-10-16 0.0 342.84 0.0 9.39 ... 212.436870 \n", - "2006-10-17 0.0 327.94 0.0 5.66 ... 187.458054 \n", - "\n", - " potential_energy potential_evaporation pressure \\\n", - "Date \n", - "2006-10-13 0.038401 0.139839 72107.765879 \n", - "2006-10-14 0.027793 0.143067 71877.921092 \n", - "2006-10-15 0.000000 0.156591 72003.823920 \n", - "2006-10-16 0.624320 0.159340 71788.350428 \n", - "2006-10-17 4.542329 0.116995 71563.357945 \n", - "\n", - " shortwave_radiation specific_humidity temperature \\\n", - "Date \n", - "2006-10-13 174.191132 0.003637 4.295980 \n", - "2006-10-14 190.454843 0.004275 3.669391 \n", - "2006-10-15 180.353373 0.003437 5.069112 \n", - "2006-10-16 190.753002 0.003852 3.643004 \n", - "2006-10-17 188.902233 0.002838 -2.503130 \n", - "\n", - " total_precipitation wind_u wind_v \n", - "Date \n", - "2006-10-13 0.025121 -2.033486 0.793636 \n", - "2006-10-14 0.014288 -0.926827 -2.149881 \n", - "2006-10-15 0.004031 1.443303 -2.045946 \n", - "2006-10-16 0.001124 4.436657 -0.672672 \n", - "2006-10-17 0.004309 1.149626 -2.636144 \n", - "\n", - "[5 rows x 24 columns]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "#merge the SNOTEL_df, met_df, and streamflow dataframes\n", "Hydro_df = pd.concat([SNOTEL_df, PyDayMet_df, NLDAS_df,streamflow_df], axis=1)\n", @@ -1036,252 +400,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
site_noflow_cmsTUM_SWE_cmDAN_SWE_cmSLI_SWE_cmdayl_sprcp_mm_daysrad_W_m2swe_cmtmax_C...longwave_radiationpotential_energypotential_evaporationpressureshortwave_radiationspecific_humiditytemperaturetotal_precipitationwind_uwind_v
Date
2006-10-13112747900.6116430.00.00.039849.510.0335.150.012.52...223.4576440.0384010.13983972107.765879174.1911320.0036374.2959800.025121-2.0334860.793636
2006-10-14112747900.5635040.00.00.039705.430.0368.370.012.76...219.1734610.0277930.14306771877.921092190.4548430.0042753.6693910.014288-0.926827-2.149881
2006-10-15112747900.5380190.00.00.039562.000.0402.910.015.72...221.0132300.0000000.15659172003.823920180.3533730.0034375.0691120.0040311.443303-2.045946
2006-10-16112747900.5040390.00.00.039419.270.0342.840.09.39...212.4368700.6243200.15934071788.350428190.7530020.0038523.6430040.0011244.436657-0.672672
2006-10-17112747900.4813860.00.00.039277.270.0327.940.05.66...187.4580544.5423290.11699571563.357945188.9022330.002838-2.5031300.0043091.149626-2.636144
\n", - "

5 rows × 24 columns

\n", - "
" - ], - "text/plain": [ - " site_no flow_cms TUM_SWE_cm DAN_SWE_cm SLI_SWE_cm dayl_s \\\n", - "Date \n", - "2006-10-13 11274790 0.611643 0.0 0.0 0.0 39849.51 \n", - "2006-10-14 11274790 0.563504 0.0 0.0 0.0 39705.43 \n", - "2006-10-15 11274790 0.538019 0.0 0.0 0.0 39562.00 \n", - "2006-10-16 11274790 0.504039 0.0 0.0 0.0 39419.27 \n", - "2006-10-17 11274790 0.481386 0.0 0.0 0.0 39277.27 \n", - "\n", - " prcp_mm_day srad_W_m2 swe_cm tmax_C ... longwave_radiation \\\n", - "Date ... \n", - "2006-10-13 0.0 335.15 0.0 12.52 ... 223.457644 \n", - "2006-10-14 0.0 368.37 0.0 12.76 ... 219.173461 \n", - "2006-10-15 0.0 402.91 0.0 15.72 ... 221.013230 \n", - "2006-10-16 0.0 342.84 0.0 9.39 ... 212.436870 \n", - "2006-10-17 0.0 327.94 0.0 5.66 ... 187.458054 \n", - "\n", - " potential_energy potential_evaporation pressure \\\n", - "Date \n", - "2006-10-13 0.038401 0.139839 72107.765879 \n", - "2006-10-14 0.027793 0.143067 71877.921092 \n", - "2006-10-15 0.000000 0.156591 72003.823920 \n", - "2006-10-16 0.624320 0.159340 71788.350428 \n", - "2006-10-17 4.542329 0.116995 71563.357945 \n", - "\n", - " shortwave_radiation specific_humidity temperature \\\n", - "Date \n", - "2006-10-13 174.191132 0.003637 4.295980 \n", - "2006-10-14 190.454843 0.004275 3.669391 \n", - "2006-10-15 180.353373 0.003437 5.069112 \n", - "2006-10-16 190.753002 0.003852 3.643004 \n", - "2006-10-17 188.902233 0.002838 -2.503130 \n", - "\n", - " total_precipitation wind_u wind_v \n", - "Date \n", - "2006-10-13 0.025121 -2.033486 0.793636 \n", - "2006-10-14 0.014288 -0.926827 -2.149881 \n", - "2006-10-15 0.004031 1.443303 -2.045946 \n", - "2006-10-16 0.001124 4.436657 -0.672672 \n", - "2006-10-17 0.004309 1.149626 -2.636144 \n", - "\n", - "[5 rows x 24 columns]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "#all of the NaN values here should be 0, fill them\n", "Hydro_df = Hydro_df.fillna(0)\n", @@ -1290,260 +411,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
site_noflow_cmsTUM_SWE_cmDAN_SWE_cmSLI_SWE_cmdayl_sprcp_mm_daysrad_W_m2swe_cmtmax_C...Developed,_Medium_IntensityDeveloped,_High_IntensityBarren_Land_Rock_Sand_ClayDeciduous_ForestEvergreen_ForestMixed_ForestShrub_ScrubGrassland_HerbaceousWoody_WetlandsEmergent_Herbaceous_Wetlands
Date
2006-10-13112747900.6116430.00.00.039849.510.0335.150.012.52...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2006-10-14112747900.5635040.00.00.039705.430.0368.370.012.76...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2006-10-15112747900.5380190.00.00.039562.000.0402.910.015.72...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2006-10-16112747900.5040390.00.00.039419.270.0342.840.09.39...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2006-10-17112747900.4813860.00.00.039277.270.0327.940.05.66...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
\n", - "

5 rows × 45 columns

\n", - "
" - ], - "text/plain": [ - " site_no flow_cms TUM_SWE_cm DAN_SWE_cm SLI_SWE_cm dayl_s \\\n", - "Date \n", - "2006-10-13 11274790 0.611643 0.0 0.0 0.0 39849.51 \n", - "2006-10-14 11274790 0.563504 0.0 0.0 0.0 39705.43 \n", - "2006-10-15 11274790 0.538019 0.0 0.0 0.0 39562.00 \n", - "2006-10-16 11274790 0.504039 0.0 0.0 0.0 39419.27 \n", - "2006-10-17 11274790 0.481386 0.0 0.0 0.0 39277.27 \n", - "\n", - " prcp_mm_day srad_W_m2 swe_cm tmax_C ... \\\n", - "Date ... \n", - "2006-10-13 0.0 335.15 0.0 12.52 ... \n", - "2006-10-14 0.0 368.37 0.0 12.76 ... \n", - "2006-10-15 0.0 402.91 0.0 15.72 ... \n", - "2006-10-16 0.0 342.84 0.0 9.39 ... \n", - "2006-10-17 0.0 327.94 0.0 5.66 ... \n", - "\n", - " Developed,_Medium_Intensity Developed,_High_Intensity \\\n", - "Date \n", - "2006-10-13 0.008978 0.006413 \n", - "2006-10-14 0.008978 0.006413 \n", - "2006-10-15 0.008978 0.006413 \n", - "2006-10-16 0.008978 0.006413 \n", - "2006-10-17 0.008978 0.006413 \n", - "\n", - " Barren_Land_Rock_Sand_Clay Deciduous_Forest Evergreen_Forest \\\n", - "Date \n", - "2006-10-13 8.326386 0.01026 37.994588 \n", - "2006-10-14 8.326386 0.01026 37.994588 \n", - "2006-10-15 8.326386 0.01026 37.994588 \n", - "2006-10-16 8.326386 0.01026 37.994588 \n", - "2006-10-17 8.326386 0.01026 37.994588 \n", - "\n", - " Mixed_Forest Shrub_Scrub Grassland_Herbaceous Woody_Wetlands \\\n", - "Date \n", - "2006-10-13 0.002565 45.493722 5.055856 0.638715 \n", - "2006-10-14 0.002565 45.493722 5.055856 0.638715 \n", - "2006-10-15 0.002565 45.493722 5.055856 0.638715 \n", - "2006-10-16 0.002565 45.493722 5.055856 0.638715 \n", - "2006-10-17 0.002565 45.493722 5.055856 0.638715 \n", - "\n", - " Emergent_Herbaceous_Wetlands \n", - "Date \n", - "2006-10-13 1.233824 \n", - "2006-10-14 1.233824 \n", - "2006-10-15 1.233824 \n", - "2006-10-16 1.233824 \n", - "2006-10-17 1.233824 \n", - "\n", - "[5 rows x 45 columns]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "#add in the basin info as columns in the dataframe, repeat the values for each row\n", "for col in basin_info.columns:\n", @@ -1554,1070 +424,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
site_noflow_cmsTUM_SWE_cmDAN_SWE_cmSLI_SWE_cmdayl_sprcp_mm_daysrad_W_m2swe_cmtmax_C...Developed,_Medium_IntensityDeveloped,_High_IntensityBarren_Land_Rock_Sand_ClayDeciduous_ForestEvergreen_ForestMixed_ForestShrub_ScrubGrassland_HerbaceousWoody_WetlandsEmergent_Herbaceous_Wetlands
Date
2019-03-01112747906.90929974.42282.296122.93640066.1714.08280.1540.5053.27...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-021127479011.07186975.18483.058124.46040211.7628.55185.5940.3711.44...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-031127479010.61880078.48686.868128.52440357.900.00477.8140.3203.90...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-04112747909.85424678.23286.868128.77840504.550.00584.5340.3205.98...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-051127479010.44889978.23286.614129.03240651.6923.06278.8140.2791.48...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-061127479012.82751080.77289.408132.33440799.2819.66202.1440.2100.18...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-071127479010.90196883.31292.456135.89040947.307.76429.4540.9861.75...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-08112747908.91979283.56692.710136.65241095.720.00516.4940.986-3.42...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-09112747907.56058683.31292.710136.90641244.503.88460.7241.375-1.31...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-10112747906.90929983.82092.710137.66841393.630.00674.8441.375-1.06...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-11112747906.28633083.56692.456137.92241543.060.00670.5041.3751.31...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-12112747906.14474683.82092.710138.17641692.782.81517.1541.6555.47...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-13112747905.91821183.82092.456138.68441842.760.00699.6141.6550.52...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-14112747905.66336083.56692.456138.68441992.970.00733.0341.6555.77...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-15112747905.80494483.82092.202138.68442143.380.00702.7241.6557.50...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-16112747906.22969683.56691.948138.68442293.980.00686.9841.6559.69...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-17112747907.07920081.78891.694139.19242444.720.00653.9941.59210.09...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-18112747907.81543782.80491.440139.19242595.590.00585.9641.4489.36...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-19112747908.52335783.31291.440139.44642746.567.29399.0941.3416.99...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-20112747909.48612884.07492.456140.46242897.616.42328.5141.3042.80...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-21112747908.32513983.82092.456140.97043048.712.33358.2441.2952.70...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-22112747907.58890284.07492.710141.47843199.834.19486.6741.7144.11...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-23112747907.84375484.07492.710141.98643350.964.22343.9942.1361.51...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-24112747906.99425084.58292.964143.51043502.060.00755.2342.1367.89...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-25112747906.79603285.09092.964143.76443653.110.00583.9342.0496.76...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-26112747907.07920084.83693.218143.76443804.080.00408.2041.8286.05...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-27112747909.45781185.59892.710143.76443954.9525.39246.4041.7201.84...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-28112747909.51444586.61495.758148.33644105.700.00471.7841.7201.50...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-29112747907.95702186.86896.012148.59044256.290.00713.8641.7203.95...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-30112747907.67385386.86896.012148.59044406.700.00740.8441.7206.55...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-03-31112747908.26850686.86895.758148.59044556.910.00714.9441.71010.11...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2019-04-01112747909.79761384.83695.504148.59044706.898.13443.9641.5808.73...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
\n", - "

32 rows × 45 columns

\n", - "
" - ], - "text/plain": [ - " site_no flow_cms TUM_SWE_cm DAN_SWE_cm SLI_SWE_cm dayl_s \\\n", - "Date \n", - "2019-03-01 11274790 6.909299 74.422 82.296 122.936 40066.17 \n", - "2019-03-02 11274790 11.071869 75.184 83.058 124.460 40211.76 \n", - "2019-03-03 11274790 10.618800 78.486 86.868 128.524 40357.90 \n", - "2019-03-04 11274790 9.854246 78.232 86.868 128.778 40504.55 \n", - "2019-03-05 11274790 10.448899 78.232 86.614 129.032 40651.69 \n", - "2019-03-06 11274790 12.827510 80.772 89.408 132.334 40799.28 \n", - "2019-03-07 11274790 10.901968 83.312 92.456 135.890 40947.30 \n", - "2019-03-08 11274790 8.919792 83.566 92.710 136.652 41095.72 \n", - "2019-03-09 11274790 7.560586 83.312 92.710 136.906 41244.50 \n", - "2019-03-10 11274790 6.909299 83.820 92.710 137.668 41393.63 \n", - "2019-03-11 11274790 6.286330 83.566 92.456 137.922 41543.06 \n", - "2019-03-12 11274790 6.144746 83.820 92.710 138.176 41692.78 \n", - "2019-03-13 11274790 5.918211 83.820 92.456 138.684 41842.76 \n", - "2019-03-14 11274790 5.663360 83.566 92.456 138.684 41992.97 \n", - "2019-03-15 11274790 5.804944 83.820 92.202 138.684 42143.38 \n", - "2019-03-16 11274790 6.229696 83.566 91.948 138.684 42293.98 \n", - "2019-03-17 11274790 7.079200 81.788 91.694 139.192 42444.72 \n", - "2019-03-18 11274790 7.815437 82.804 91.440 139.192 42595.59 \n", - "2019-03-19 11274790 8.523357 83.312 91.440 139.446 42746.56 \n", - "2019-03-20 11274790 9.486128 84.074 92.456 140.462 42897.61 \n", - "2019-03-21 11274790 8.325139 83.820 92.456 140.970 43048.71 \n", - "2019-03-22 11274790 7.588902 84.074 92.710 141.478 43199.83 \n", - "2019-03-23 11274790 7.843754 84.074 92.710 141.986 43350.96 \n", - "2019-03-24 11274790 6.994250 84.582 92.964 143.510 43502.06 \n", - "2019-03-25 11274790 6.796032 85.090 92.964 143.764 43653.11 \n", - "2019-03-26 11274790 7.079200 84.836 93.218 143.764 43804.08 \n", - "2019-03-27 11274790 9.457811 85.598 92.710 143.764 43954.95 \n", - "2019-03-28 11274790 9.514445 86.614 95.758 148.336 44105.70 \n", - "2019-03-29 11274790 7.957021 86.868 96.012 148.590 44256.29 \n", - "2019-03-30 11274790 7.673853 86.868 96.012 148.590 44406.70 \n", - "2019-03-31 11274790 8.268506 86.868 95.758 148.590 44556.91 \n", - "2019-04-01 11274790 9.797613 84.836 95.504 148.590 44706.89 \n", - "\n", - " prcp_mm_day srad_W_m2 swe_cm tmax_C ... \\\n", - "Date ... \n", - "2019-03-01 14.08 280.15 40.505 3.27 ... \n", - "2019-03-02 28.55 185.59 40.371 1.44 ... \n", - "2019-03-03 0.00 477.81 40.320 3.90 ... \n", - "2019-03-04 0.00 584.53 40.320 5.98 ... \n", - "2019-03-05 23.06 278.81 40.279 1.48 ... \n", - "2019-03-06 19.66 202.14 40.210 0.18 ... \n", - "2019-03-07 7.76 429.45 40.986 1.75 ... \n", - "2019-03-08 0.00 516.49 40.986 -3.42 ... \n", - "2019-03-09 3.88 460.72 41.375 -1.31 ... \n", - "2019-03-10 0.00 674.84 41.375 -1.06 ... \n", - "2019-03-11 0.00 670.50 41.375 1.31 ... \n", - "2019-03-12 2.81 517.15 41.655 5.47 ... \n", - "2019-03-13 0.00 699.61 41.655 0.52 ... \n", - "2019-03-14 0.00 733.03 41.655 5.77 ... \n", - "2019-03-15 0.00 702.72 41.655 7.50 ... \n", - "2019-03-16 0.00 686.98 41.655 9.69 ... \n", - "2019-03-17 0.00 653.99 41.592 10.09 ... \n", - "2019-03-18 0.00 585.96 41.448 9.36 ... \n", - "2019-03-19 7.29 399.09 41.341 6.99 ... \n", - "2019-03-20 6.42 328.51 41.304 2.80 ... \n", - "2019-03-21 2.33 358.24 41.295 2.70 ... \n", - "2019-03-22 4.19 486.67 41.714 4.11 ... \n", - "2019-03-23 4.22 343.99 42.136 1.51 ... \n", - "2019-03-24 0.00 755.23 42.136 7.89 ... \n", - "2019-03-25 0.00 583.93 42.049 6.76 ... \n", - "2019-03-26 0.00 408.20 41.828 6.05 ... \n", - "2019-03-27 25.39 246.40 41.720 1.84 ... \n", - "2019-03-28 0.00 471.78 41.720 1.50 ... \n", - "2019-03-29 0.00 713.86 41.720 3.95 ... \n", - "2019-03-30 0.00 740.84 41.720 6.55 ... \n", - "2019-03-31 0.00 714.94 41.710 10.11 ... \n", - "2019-04-01 8.13 443.96 41.580 8.73 ... \n", - "\n", - " Developed,_Medium_Intensity Developed,_High_Intensity \\\n", - "Date \n", - "2019-03-01 0.008978 0.006413 \n", - "2019-03-02 0.008978 0.006413 \n", - "2019-03-03 0.008978 0.006413 \n", - "2019-03-04 0.008978 0.006413 \n", - "2019-03-05 0.008978 0.006413 \n", - "2019-03-06 0.008978 0.006413 \n", - "2019-03-07 0.008978 0.006413 \n", - "2019-03-08 0.008978 0.006413 \n", - "2019-03-09 0.008978 0.006413 \n", - "2019-03-10 0.008978 0.006413 \n", - "2019-03-11 0.008978 0.006413 \n", - "2019-03-12 0.008978 0.006413 \n", - "2019-03-13 0.008978 0.006413 \n", - "2019-03-14 0.008978 0.006413 \n", - "2019-03-15 0.008978 0.006413 \n", - "2019-03-16 0.008978 0.006413 \n", - "2019-03-17 0.008978 0.006413 \n", - "2019-03-18 0.008978 0.006413 \n", - "2019-03-19 0.008978 0.006413 \n", - "2019-03-20 0.008978 0.006413 \n", - "2019-03-21 0.008978 0.006413 \n", - "2019-03-22 0.008978 0.006413 \n", - "2019-03-23 0.008978 0.006413 \n", - "2019-03-24 0.008978 0.006413 \n", - "2019-03-25 0.008978 0.006413 \n", - "2019-03-26 0.008978 0.006413 \n", - "2019-03-27 0.008978 0.006413 \n", - "2019-03-28 0.008978 0.006413 \n", - "2019-03-29 0.008978 0.006413 \n", - "2019-03-30 0.008978 0.006413 \n", - "2019-03-31 0.008978 0.006413 \n", - "2019-04-01 0.008978 0.006413 \n", - "\n", - " Barren_Land_Rock_Sand_Clay Deciduous_Forest Evergreen_Forest \\\n", - "Date \n", - "2019-03-01 8.326386 0.01026 37.994588 \n", - "2019-03-02 8.326386 0.01026 37.994588 \n", - "2019-03-03 8.326386 0.01026 37.994588 \n", - "2019-03-04 8.326386 0.01026 37.994588 \n", - "2019-03-05 8.326386 0.01026 37.994588 \n", - "2019-03-06 8.326386 0.01026 37.994588 \n", - "2019-03-07 8.326386 0.01026 37.994588 \n", - "2019-03-08 8.326386 0.01026 37.994588 \n", - "2019-03-09 8.326386 0.01026 37.994588 \n", - "2019-03-10 8.326386 0.01026 37.994588 \n", - "2019-03-11 8.326386 0.01026 37.994588 \n", - "2019-03-12 8.326386 0.01026 37.994588 \n", - "2019-03-13 8.326386 0.01026 37.994588 \n", - "2019-03-14 8.326386 0.01026 37.994588 \n", - "2019-03-15 8.326386 0.01026 37.994588 \n", - "2019-03-16 8.326386 0.01026 37.994588 \n", - "2019-03-17 8.326386 0.01026 37.994588 \n", - "2019-03-18 8.326386 0.01026 37.994588 \n", - "2019-03-19 8.326386 0.01026 37.994588 \n", - "2019-03-20 8.326386 0.01026 37.994588 \n", - "2019-03-21 8.326386 0.01026 37.994588 \n", - "2019-03-22 8.326386 0.01026 37.994588 \n", - "2019-03-23 8.326386 0.01026 37.994588 \n", - "2019-03-24 8.326386 0.01026 37.994588 \n", - "2019-03-25 8.326386 0.01026 37.994588 \n", - "2019-03-26 8.326386 0.01026 37.994588 \n", - "2019-03-27 8.326386 0.01026 37.994588 \n", - "2019-03-28 8.326386 0.01026 37.994588 \n", - "2019-03-29 8.326386 0.01026 37.994588 \n", - "2019-03-30 8.326386 0.01026 37.994588 \n", - "2019-03-31 8.326386 0.01026 37.994588 \n", - "2019-04-01 8.326386 0.01026 37.994588 \n", - "\n", - " Mixed_Forest Shrub_Scrub Grassland_Herbaceous Woody_Wetlands \\\n", - "Date \n", - "2019-03-01 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-02 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-03 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-04 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-05 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-06 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-07 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-08 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-09 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-10 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-11 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-12 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-13 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-14 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-15 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-16 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-17 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-18 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-19 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-20 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-21 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-22 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-23 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-24 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-25 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-26 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-27 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-28 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-29 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-30 0.002565 45.493722 5.055856 0.638715 \n", - "2019-03-31 0.002565 45.493722 5.055856 0.638715 \n", - "2019-04-01 0.002565 45.493722 5.055856 0.638715 \n", - "\n", - " Emergent_Herbaceous_Wetlands \n", - "Date \n", - "2019-03-01 1.233824 \n", - "2019-03-02 1.233824 \n", - "2019-03-03 1.233824 \n", - "2019-03-04 1.233824 \n", - "2019-03-05 1.233824 \n", - "2019-03-06 1.233824 \n", - "2019-03-07 1.233824 \n", - "2019-03-08 1.233824 \n", - "2019-03-09 1.233824 \n", - "2019-03-10 1.233824 \n", - "2019-03-11 1.233824 \n", - "2019-03-12 1.233824 \n", - "2019-03-13 1.233824 \n", - "2019-03-14 1.233824 \n", - "2019-03-15 1.233824 \n", - "2019-03-16 1.233824 \n", - "2019-03-17 1.233824 \n", - "2019-03-18 1.233824 \n", - "2019-03-19 1.233824 \n", - "2019-03-20 1.233824 \n", - "2019-03-21 1.233824 \n", - "2019-03-22 1.233824 \n", - "2019-03-23 1.233824 \n", - "2019-03-24 1.233824 \n", - "2019-03-25 1.233824 \n", - "2019-03-26 1.233824 \n", - "2019-03-27 1.233824 \n", - "2019-03-28 1.233824 \n", - "2019-03-29 1.233824 \n", - "2019-03-30 1.233824 \n", - "2019-03-31 1.233824 \n", - "2019-04-01 1.233824 \n", - "\n", - "[32 rows x 45 columns]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "#take a look around peak SWE to make sure we have snotel values, early season can be tricky to assess\n", "Hydro_df.loc['2019-03-01':'2019-04-01']" @@ -2625,260 +434,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
site_noflow_cmsTUM_SWE_cmDAN_SWE_cmSLI_SWE_cmdayl_sprcp_mm_daysrad_W_m2swe_cmtmax_C...Developed,_Medium_IntensityDeveloped,_High_IntensityBarren_Land_Rock_Sand_ClayDeciduous_ForestEvergreen_ForestMixed_ForestShrub_ScrubGrassland_HerbaceousWoody_WetlandsEmergent_Herbaceous_Wetlands
Date
2021-09-12112747900.2367280.00.00.044482.490.0455.380.022.28...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2021-09-13112747900.3029900.00.00.044332.180.0486.880.022.73...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2021-09-14112747900.2752390.00.00.044181.670.0447.480.022.50...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2021-09-15112747900.2511700.00.00.044031.000.0424.990.021.18...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
2021-09-16112747900.2239860.00.00.043880.190.0420.080.019.71...0.0089780.0064138.3263860.0102637.9945880.00256545.4937225.0558560.6387151.233824
\n", - "

5 rows × 45 columns

\n", - "
" - ], - "text/plain": [ - " site_no flow_cms TUM_SWE_cm DAN_SWE_cm SLI_SWE_cm dayl_s \\\n", - "Date \n", - "2021-09-12 11274790 0.236728 0.0 0.0 0.0 44482.49 \n", - "2021-09-13 11274790 0.302990 0.0 0.0 0.0 44332.18 \n", - "2021-09-14 11274790 0.275239 0.0 0.0 0.0 44181.67 \n", - "2021-09-15 11274790 0.251170 0.0 0.0 0.0 44031.00 \n", - "2021-09-16 11274790 0.223986 0.0 0.0 0.0 43880.19 \n", - "\n", - " prcp_mm_day srad_W_m2 swe_cm tmax_C ... \\\n", - "Date ... \n", - "2021-09-12 0.0 455.38 0.0 22.28 ... \n", - "2021-09-13 0.0 486.88 0.0 22.73 ... \n", - "2021-09-14 0.0 447.48 0.0 22.50 ... \n", - "2021-09-15 0.0 424.99 0.0 21.18 ... \n", - "2021-09-16 0.0 420.08 0.0 19.71 ... \n", - "\n", - " Developed,_Medium_Intensity Developed,_High_Intensity \\\n", - "Date \n", - "2021-09-12 0.008978 0.006413 \n", - "2021-09-13 0.008978 0.006413 \n", - "2021-09-14 0.008978 0.006413 \n", - "2021-09-15 0.008978 0.006413 \n", - "2021-09-16 0.008978 0.006413 \n", - "\n", - " Barren_Land_Rock_Sand_Clay Deciduous_Forest Evergreen_Forest \\\n", - "Date \n", - "2021-09-12 8.326386 0.01026 37.994588 \n", - "2021-09-13 8.326386 0.01026 37.994588 \n", - "2021-09-14 8.326386 0.01026 37.994588 \n", - "2021-09-15 8.326386 0.01026 37.994588 \n", - "2021-09-16 8.326386 0.01026 37.994588 \n", - "\n", - " Mixed_Forest Shrub_Scrub Grassland_Herbaceous Woody_Wetlands \\\n", - "Date \n", - "2021-09-12 0.002565 45.493722 5.055856 0.638715 \n", - "2021-09-13 0.002565 45.493722 5.055856 0.638715 \n", - "2021-09-14 0.002565 45.493722 5.055856 0.638715 \n", - "2021-09-15 0.002565 45.493722 5.055856 0.638715 \n", - "2021-09-16 0.002565 45.493722 5.055856 0.638715 \n", - "\n", - " Emergent_Herbaceous_Wetlands \n", - "Date \n", - "2021-09-12 1.233824 \n", - "2021-09-13 1.233824 \n", - "2021-09-14 1.233824 \n", - "2021-09-15 1.233824 \n", - "2021-09-16 1.233824 \n", - "\n", - "[5 rows x 45 columns]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "Hydro_df.tail()" ] @@ -2887,7 +445,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Data Exploration Exercise #1\n", + "## Data Exploration Exercise\n", "\n", "Use the combined data frame you created for a **USGS NWIS site other than the example** to explore different data and relationships. Select a single water year (October - September) to explore the following relationships:\n", "* Streamflow and SWE (e.g., Daymet and SWE from Snotel)\n", @@ -2898,20 +456,6 @@ "In markdown below each figure, write a few sentences describing the relationships and anything that is unexpected. This exercise prepares you for HW#2.\n" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Data Exploration Exercise #2\n", - "\n", - "Develop a Python script (.py) that you can run in the terminal that collects, processes, and saves your dataframes and a few select figures of interest." - ] - }, { "cell_type": "markdown", "metadata": {}, diff --git a/cache/aiohttp_cache.sqlite b/cache/aiohttp_cache.sqlite index 0323d3e..6917d56 100644 Binary files a/cache/aiohttp_cache.sqlite and b/cache/aiohttp_cache.sqlite differ diff --git a/supporting_scripts/getData.py b/supporting_scripts/getData.py index a456764..6956986 100644 --- a/supporting_scripts/getData.py +++ b/supporting_scripts/getData.py @@ -1,5 +1,6 @@ import os import sys +from urllib import response import pytz import urllib3 import datetime @@ -22,9 +23,14 @@ def getSNOTELData(SiteName, SiteID, StateAbb, StartDate, EndDate, OutputFolder): url = url1+url2+url3+url4 print(f'Start retrieving data for {SiteName}, {SiteID} \n {url}') - http = urllib3.PoolManager() - response = http.request('GET', url) - data = response.data.decode('utf-8') + # http = urllib3.PoolManager() + # response = http.request('GET', url) + # data = response.data.decode('utf-8') + + response = requests.get(url, timeout=60) + response.raise_for_status() + data = response.text + i=0 for line in data.split("\n"): if line.startswith("#"): @@ -109,6 +115,64 @@ def getCaliSNOTELData(SiteName, SiteID, StartDate, EndDate, OutputFolder): df.to_csv(f'./{OutputFolder}/df_{SiteID}_{StateAbb}_SNTL.csv', index=False) + +def get_Landsat_NDSI(basin_polygon_coords, StartDate, EndDate): + import ee + import pandas as pd + + ee.Authenticate() + ee.Initialize() + + basin = ee.Geometry.Polygon(basin_polygon_coords) + + col = ( + ee.ImageCollection("LANDSAT/LC08/C02/T2_L2") + .filterBounds(basin) + .filterDate(StartDate, EndDate) + .sort("CLOUD_COVER") + ) + + n = col.size().getInfo() + img_list = col.toList(n) + + records = [] + + for i in range(n): + img = ee.Image(img_list.get(i)) + + qa = img.select("QA_PIXEL") + cloud_mask = ( + qa.bitwiseAnd(1 << 1).eq(0) + .And(qa.bitwiseAnd(1 << 2).eq(0)) + .And(qa.bitwiseAnd(1 << 3).eq(0)) + .And(qa.bitwiseAnd(1 << 4).eq(0)) + ) + + green = img.select("SR_B3").multiply(2.75e-05).add(-0.2) + swir1 = img.select("SR_B6").multiply(2.75e-05).add(-0.2) + + ndsi = green.subtract(swir1).divide(green.add(swir1)).rename("NDSI") + ndsi = ndsi.updateMask(cloud_mask) + + stat = ndsi.reduceRegion( + reducer=ee.Reducer.mean(), + geometry=basin, + scale=30, + maxPixels=1e9, + ).getInfo() + + if stat and stat.get("NDSI") is not None: + records.append({ + "Date": pd.to_datetime(img.date().format("YYYY-MM-dd").getInfo()), + "NDSI": stat["NDSI"], + }) + + df = pd.DataFrame(records) + if not df.empty: + df = df.sort_values("Date").set_index("Date") + return df + + def convert_latlon_to_yx(lat, lon, input_crs, ds, output_crs): """ This function takes latitude and longitude values along with